in prototype/dispatch/order-dispatcher/src/main/java/com/aws/proto/dispatching/data/ddb/DdbAssignmentService.java [95:158]
public DispatcherResult getAssignment(UUID problemId) {
// return Uni.createFrom().completionStage(() -> dbClient.query(this.getQueryRequest("ID", problemId)))
// .onItem().transform(res -> {
//
// if(!res.hasItems()) {
// return null;
// }
// Map<String, AttributeValue> dbItem = res.items().get(0);
//
// ObjectMapper mapper = new ObjectMapper();
// List<AssignedOrders> assigned = dbItem.get("assigned").l().stream().map(av -> {
// JsonNode node = JsonAttributeValueUtil.fromAttributeValue(av);
// try {
// return mapper.treeToValue(node, AssignedOrders.class);
// } catch (JsonProcessingException e) {
// e.printStackTrace();
// }
// return null;
// }).collect(Collectors.toList());
//
// List<String> unassigned = dbItem.get("unassigned").l().stream().map(AttributeValue::s).collect(Collectors.toList());
// Long createdAt = Long.parseLong(dbItem.get("createdAt").n());
// String executionId = dbItem.get("executionId").s();
// String state = dbItem.get("state").s();
// String score = dbItem.get("score").s();
//
// return new DispatcherResult(problemId, executionId, createdAt, assigned, unassigned, state, score);
// });
List<Map<String, AttributeValue>> dbItems = dbClient.query(this.getQueryRequest("ID", problemId)).items();
if (dbItems.size() == 0) {
return null;
}
Map<String, AttributeValue> dbItem = dbItems.get(0);
ObjectMapper mapper = new ObjectMapper();
List<AssignedOrders> assigned = dbItem.get("assigned").l().stream().map(av -> {
JsonNode node = JsonAttributeValueUtil.fromAttributeValue(av);
try {
return mapper.treeToValue(node, AssignedOrders.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}).collect(Collectors.toList());
List<String> unassigned = dbItem.get("unassigned").l().stream().map(AttributeValue::s).collect(Collectors.toList());
Long createdAt = Long.parseLong(dbItem.get("createdAt").n());
String executionId = dbItem.get("executionId").s();
String state = dbItem.get("state").s();
String score = dbItem.get("score").s();
DispatcherResult result = new DispatcherResult(problemId, executionId, createdAt, assigned, unassigned, state, score);
result.executionId = dbItem.get("executionId").s();
result.solverDurationInMs = Long.parseLong(dbItem.get("solverDurationInMs").n());
try {
result.distanceMatrixMetrics = mapper.treeToValue(JsonAttributeValueUtil.fromAttributeValue(dbItem.get("distanceMatrixMetrics")), DispatcherResult.DistanceMatrixMetrics.class);
} catch(JsonProcessingException e) {
logger.error("Error parsing ddbItem :: distanceMatrixMetrics", e);
}
return result;
}