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;
}