public ReturnResult remove()

in src/main/java/com/awsblog/queueing/sdk/QueueSdkClient.java [709:767]


	public ReturnResult remove(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 #sys.peek_utc_timestamp, queued, #DLQ "
                		+ "SET #sys.queued = :zero, #sys.queue_selected = :false, "
                		+ "#sys.last_updated_timestamp = :lut, "
                		+ "last_updated_timestamp = :lut, "
                		+ "#sys.queue_remove_timestamp = :lut")
                .withNameMap(new NameMap().with("#v", "version")
                		.with("#DLQ", "DLQ")
                		.with("#sys", "system_info"))
                .withValueMap(
                        new ValueMap()
                        	.withInt(":one", 1)
                        	.withInt(":zero", 0)
                        	.withBoolean(":false", false)
                        	.withInt(":v", shipment.getSystemInfo().getVersion())
                        	.withString(":lut", odt.toString()))
                .withConditionExpression("#sys.#v = :v") 
                .withReturnValues(ReturnValue.ALL_NEW);

            outcome = table.updateItem(updateItemSpec);
            
        } catch (Exception e) {
            System.err.println("remove() - 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;
	}