private static RiskUpdateRequest loadRiskLimitsFromCSV()

in src/main/java/deltix/ember/sample/CustomRiskUpdateSampleCSV.java [65:113]


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

        csv.readHeaders();

        String projection = parseProjectionFromHeader(csv.getHeaders());
        ProjectionKey [] projectionKeys = parseProjectionKeysFromHeader(csv.getHeaders());
        String [] limitNames = parseLimitNamesFromHeader(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(projection);
        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 : projectionKeys) {
                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 (String limitName : limitNames) {
                MutableRiskLimit limit = new MutableRiskLimit();
                String value = csv.getString(cellIndex++).trim();

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

        csv.close();
        return request;
    }