in src/main/java/com/awsblog/queueing/sdk/QueueSdkClient.java [775:836]
public ReturnResult restore(String id) {
ReturnResult result = new ReturnResult(id);
Shipment shipment = this.get(id);
if (Utils.checkIfNullObject(shipment)) {
result.setReturnValue(ReturnStatusEnum.FAILED_ID_NOT_FOUND);
return result;
}
OffsetDateTime odt = OffsetDateTime.now(ZoneOffset.UTC);
DynamoDB ddb = new DynamoDB(this.dynamoDB);
Table table = ddb.getTable(this.actualTableName);
UpdateItemOutcome outcome = null;
try {
UpdateItemSpec updateItemSpec = new UpdateItemSpec()
.withPrimaryKey("id", id)
.withUpdateExpression("ADD #sys.#v :one "
+ "REMOVE #DLQ "
+ "SET #sys.queued = :one, queued = :one, "
+ "#sys.queue_selected = :false, "
+ "last_updated_timestamp = :lut, "
+ "#sys.last_updated_timestamp = :lut, "
+ "#sys.queue_add_timestamp = :lut, "
+ "#sys.#st = :st")
.withNameMap(new NameMap()
.with("#v", "version")
.with("#DLQ", "DLQ")
.with("#st", "status")
.with("#sys", "system_info"))
.withValueMap(
new ValueMap().withInt(":one", 1)
.withInt(":v", shipment.getSystemInfo().getVersion())
.withBoolean(":false", false)
.withString(":st", StatusEnum.READY_TO_SHIP.toString())
.withString(":lut", odt.toString()))
.withConditionExpression("#sys.#v = :v")
.withReturnValues(ReturnValue.ALL_NEW);
outcome = table.updateItem(updateItemSpec);
}
catch (Exception e) {
System.err.println("restore() - failed to update multiple attributes in " + this.actualTableName);
System.err.println(e.getMessage());
result.setReturnValue(ReturnStatusEnum.FAILED_DYNAMO_ERROR);
return result;
}
Map<String, Object> sysMap = outcome.getItem().getRawMap("system_info");
result.setVersion(((BigDecimal)sysMap.get("version")).intValue());
result.setStatus(StatusEnum.valueOf((String)sysMap.get("status")));
result.setLastUpdatedTimestamp((String)sysMap.get("last_updated_timestamp"));
result.setReturnValue(ReturnStatusEnum.SUCCESS);
return result;
}