com.github.sdmcraft.slingdynamo.demo.App Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of SlingDynamo Show documentation
Show all versions of SlingDynamo Show documentation
com.github.sdmcraft.slingdynamo - SlingDynamo
The newest version!
/*
* Copyright (c) 2002, Marco Hunsicker. All rights reserved.
*
* The contents of this file are subject to the Common Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://jalopy.sf.net/license-cpl.html
*
* Copyright (c) 2001-2002 Marco Hunsicker
*/
package com.github.sdmcraft.slingdynamo.demo;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
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.ComparisonOperator;
import com.amazonaws.services.dynamodbv2.model.Condition;
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
import com.amazonaws.services.dynamodbv2.model.DescribeTableRequest;
import com.amazonaws.services.dynamodbv2.model.GetItemRequest;
import com.amazonaws.services.dynamodbv2.model.GetItemResult;
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.ScalarAttributeType;
import com.amazonaws.services.dynamodbv2.model.ScanRequest;
import com.amazonaws.services.dynamodbv2.model.ScanResult;
import com.amazonaws.services.dynamodbv2.model.TableDescription;
import com.amazonaws.services.dynamodbv2.model.TableStatus;
// TODO: Auto-generated Javadoc
/**
* The Class App.
*/
public class App {
/** The dynamo db. */
static AmazonDynamoDBClient dynamoDB;
/** The access key. */
static String accessKey;
/** The secret access key. */
static String secretAccessKey;
/**
* Inits the.
*/
public static void init() {
Scanner reader = new Scanner(System.in);
System.out.println("Enter access key:");
accessKey = reader.next();
System.out.println("Enter secret access key:");
secretAccessKey = reader.next();
System.out.println("Access Key:" + accessKey);
System.out.println("Secret access Key:" + secretAccessKey);
reader.close();
AWSCredentials awsCredentials = new BasicAWSCredentials(accessKey,
secretAccessKey);
dynamoDB = new AmazonDynamoDBClient(awsCredentials);
Region usWest2 = Region.getRegion(Regions.US_WEST_2);
dynamoDB.setRegion(usWest2);
}
/**
* Main1.
*
* @param args the args
* @throws Exception the exception
*/
public static void main1(String[] args) throws Exception {
init();
try {
String tableName = "my-favorite-movies-table";
// Create a table with a primary hash key named 'name', which holds a string
CreateTableRequest createTableRequest = new CreateTableRequest().withTableName(tableName)
.withKeySchema(new KeySchemaElement().withAttributeName(
"name").withKeyType(KeyType.HASH))
.withAttributeDefinitions(new AttributeDefinition().withAttributeName(
"name").withAttributeType(ScalarAttributeType.S))
.withProvisionedThroughput(new ProvisionedThroughput().withReadCapacityUnits(
1L).withWriteCapacityUnits(1L));
TableDescription createdTableDescription = dynamoDB.createTable(createTableRequest)
.getTableDescription();
System.out.println("Created Table: " + createdTableDescription);
// Wait for it to become active
waitForTableToBecomeAvailable(tableName);
// Describe our new table
DescribeTableRequest describeTableRequest = new DescribeTableRequest().withTableName(tableName);
TableDescription tableDescription = dynamoDB.describeTable(describeTableRequest)
.getTable();
System.out.println("Table Description: " + tableDescription);
// Add an item
Map item = newItem("Bill & Ted's Excellent Adventure",
1989, "****", "James", "Sara");
PutItemRequest putItemRequest = new PutItemRequest(tableName, item);
PutItemResult putItemResult = dynamoDB.putItem(putItemRequest);
System.out.println("Result: " + putItemResult);
// Add another item
item = newItem("Airplane", 1980, "*****", "James", "Billy Bob");
putItemRequest = new PutItemRequest(tableName, item);
putItemResult = dynamoDB.putItem(putItemRequest);
System.out.println("Result: " + putItemResult);
// Scan items for movies with a year attribute greater than 1985
HashMap scanFilter = new HashMap();
Condition condition = new Condition().withComparisonOperator(ComparisonOperator.GT.toString())
.withAttributeValueList(new AttributeValue().withN(
"1985"));
scanFilter.put("year", condition);
ScanRequest scanRequest = new ScanRequest(tableName).withScanFilter(scanFilter);
ScanResult scanResult = dynamoDB.scan(scanRequest);
System.out.println("Result: " + scanResult);
} catch (AmazonServiceException ase) {
System.out.println(
"Caught an AmazonServiceException, which means your request made it " +
"to AWS, but was rejected with an error response for some reason.");
System.out.println("Error Message: " + ase.getMessage());
System.out.println("HTTP Status Code: " + ase.getStatusCode());
System.out.println("AWS Error Code: " + ase.getErrorCode());
System.out.println("Error Type: " + ase.getErrorType());
System.out.println("Request ID: " + ase.getRequestId());
} catch (AmazonClientException ace) {
System.out.println(
"Caught an AmazonClientException, which means the client encountered " +
"a serious internal problem while trying to communicate with AWS, " +
"such as not being able to access the network.");
System.out.println("Error Message: " + ace.getMessage());
}
}
/**
* New item.
*
* @param name the name
* @param year the year
* @param rating the rating
* @param fans the fans
* @return the map
*/
private static Map newItem(String name, int year,
String rating, String... fans) {
Map item = new HashMap();
item.put("name", new AttributeValue(name));
item.put("year", new AttributeValue().withN(Integer.toString(year)));
item.put("rating", new AttributeValue(rating));
item.put("fans", new AttributeValue().withSS(fans));
return item;
}
/**
* Wait for table to become available.
*
* @param tableName the table name
*/
private static void waitForTableToBecomeAvailable(String tableName) {
System.out.println("Waiting for " + tableName + " to become ACTIVE...");
long startTime = System.currentTimeMillis();
long endTime = startTime + (10 * 60 * 1000);
while (System.currentTimeMillis() < endTime) {
try {
Thread.sleep(1000 * 20);
} catch (Exception e) {
;
}
try {
DescribeTableRequest request = new DescribeTableRequest().withTableName(tableName);
TableDescription tableDescription = dynamoDB.describeTable(request)
.getTable();
String tableStatus = tableDescription.getTableStatus();
System.out.println(" - current state: " + tableStatus);
if (tableStatus.equals(TableStatus.ACTIVE.toString())) {
return;
}
} catch (AmazonServiceException ase) {
if (ase.getErrorCode()
.equalsIgnoreCase("ResourceNotFoundException") == false) {
throw ase;
}
}
}
throw new RuntimeException("Table " + tableName + " never went active");
}
/**
* Main2.
*
* @param args the args
*/
public static void main2(String[] args) {
init();
Map key = new HashMap();
key.put("name", new AttributeValue().withS("Airplane"));
GetItemRequest getItemRequest = new GetItemRequest().withTableName(
"my-favorite-movies-table").withKey(key)
.withAttributesToGet(Arrays.asList(
"name", "fans", "rating", "year"));
GetItemResult result = dynamoDB.getItem(getItemRequest);
// Check the response.
System.out.println("Printing item after retrieving it....");
printItem(result.getItem());
}
/**
* Prints the item.
*
* @param attributeList the attribute list
*/
private static void printItem(Map attributeList) {
for (Map.Entry item : attributeList.entrySet()) {
String attributeName = item.getKey();
AttributeValue value = item.getValue();
System.out.println(attributeName + " " +
((value.getS() == null) ? "" : ("S=[" + value.getS() + "]")) +
((value.getN() == null) ? "" : ("N=[" + value.getN() + "]")) +
((value.getB() == null) ? "" : ("B=[" + value.getB() + "]")) +
((value.getSS() == null) ? "" : ("SS=[" + value.getSS() + "]")) +
((value.getNS() == null) ? "" : ("NS=[" + value.getNS() + "]")) +
((value.getBS() == null) ? "" : ("BS=[" + value.getBS() +
"] \n")));
}
}
/**
* The main method.
*
* @param args the arguments
*/
public static void main(String[] args) {
String path = "/abc/pqr/123/456";
String root = "/abc/pqr";
String subPath = path.substring(root.length() + 1);
String[] subPathSplits = subPath.split("/");
String table = subPathSplits[0];
String column = null;
String value = null;
if (subPathSplits.length > 1) {
column = subPath.split("/")[1];
}
if (subPathSplits.length > 2) {
value = subPath.split("/")[2];
}
}
}