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