private static RiskUpdateRequest loadRiskLimitsFromCSV()

in src/main/java/deltix/ember/sample/RiskUpdateSampleCSV.java [62:108]


    private static RiskUpdateRequest loadRiskLimitsFromCSV(File limitFile) throws IOException {
        CSVXReader csv = new CSVXReader(limitFile, ',');

        csv.readHeaders();
        RiskTableDefinition riskTable = parseHeader(csv.getHeaders());

        MutableRiskUpdateRequest request = new MutableRiskUpdateRequest();
        request.setSourceId(CLIENT_SOURCE_ID);
        request.setTimestamp(System.currentTimeMillis());
        request.setChangedByUserId("riskmanager");
        request.setRequestId(Long.toString(++requestId));
        request.setProjection(riskTable.getProjection().toString());
        ObjectArrayList<RiskTableCommand> commands = new ObjectArrayList<>();
        request.setCommands(commands);
        while (csv.nextLine()) {
            if (csv.getLine().trim().isEmpty())
                continue;
            int cellIndex = 0;
            MutableRiskTableCommand command = new MutableRiskTableCommand();
            commands.add(command);
            command.setCmdType(RiskTableCommandType.UPDATE); // Update actually acts as INSERT-or-UPDATE

            ObjectArrayList<RiskCondition> conditions = new ObjectArrayList<>();
            command.setConditions(conditions);
            for (ProjectionKey projectionKey : riskTable.getProjection().getKeys()) {
                MutableRiskCondition condition = new MutableRiskCondition();
                condition.setProjectionKey(projectionKey);
                condition.setValue(csv.getString(cellIndex++).trim());
                conditions.add(condition);
            }

            ObjectArrayList<RiskLimit> limits = new ObjectArrayList<>();
            command.setLimits(limits);
            for (int i=0; i < riskTable.getLimits().size(); i++) {
                RiskLimitDefinition limitDefinition = riskTable.getLimits().get(i);
                MutableRiskLimit limit = new MutableRiskLimit();
                String value = csv.getString(cellIndex++).trim();

                limit.setName(limitDefinition.getName());
                limit.setValue(value.isEmpty() ? null : value);
                limits.add(limit);
            }
        }

        csv.close();
        return request;
    }