package com.amazonaws.services.dynamodb.loader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.model.AttributeDefinition;
import com.amazonaws.services.dynamodbv2.model.AttributeValue;
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
import com.amazonaws.services.dynamodbv2.model.CreateTableResult;
import com.amazonaws.services.dynamodbv2.model.ExpectedAttributeValue;
import com.amazonaws.services.dynamodbv2.model.KeySchemaElement;
import com.amazonaws.services.dynamodbv2.model.KeyType;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
import com.amazonaws.services.dynamodbv2.model.PutItemRequest;
import com.amazonaws.services.dynamodbv2.model.PutItemResult;
import com.amazonaws.services.dynamodbv2.model.ResourceInUseException;
import com.amazonaws.services.dynamodbv2.model.ReturnValue;
public class Loader {
private AmazonDynamoDBClient client;
private String tableName;
public Loader() {
tableName = System.getProperty("kinesisapp.dynamodbtable");
if (tableName.equals(""))
tableName = null;
if (tableName != null) {
// Assuming a dynamo table already exists
client = new AmazonDynamoDBClient();
/*
try {
client = new AmazonDynamoDBClient();
ProvisionedThroughput provisionedThroughput = new ProvisionedThroughput()
.withReadCapacityUnits(1L)
.withWriteCapacityUnits(1L);
CreateTableRequest request = new CreateTableRequest()
.withTableName(tableName)
.withProvisionedThroughput(provisionedThroughput);
ArrayList<AttributeDefinition> attributeDefinitions= new ArrayList<AttributeDefinition>();
attributeDefinitions.add(new AttributeDefinition().withAttributeName("user").withAttributeType("S"));
request.setAttributeDefinitions(attributeDefinitions);
ArrayList<KeySchemaElement> tableKeySchema = new ArrayList<KeySchemaElement>();
tableKeySchema.add(new KeySchemaElement().withAttributeName("user").withKeyType(KeyType.HASH));
request.setKeySchema(tableKeySchema);
CreateTableResult result = client.createTable(request);
System.out.println("Creating table : " + tableName);
} catch(ResourceInUseException e) {
System.out.println(tableName + " already exists.");
}
*/
}
}
public void put(String user, long timestamp, double x, double y) {
if (tableName != null) {
Map<String, AttributeValue> item = new HashMap<String, AttributeValue>();
item.put("user", new AttributeValue().withS(user));
item.put("timestamp", new AttributeValue().withS(Long.toString(timestamp)));
item.put("latitude", new AttributeValue().withS(Double.toString(x)));
item.put("longitude", new AttributeValue().withS(Double.toString(y)));
PutItemRequest putItemRequest = new PutItemRequest()
.withTableName(tableName)
.withItem(item);
PutItemResult result = client.putItem(putItemRequest);
}
}
}