Java tutorial
/* * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ import java.io.File; import java.io.FileInputStream; import java.nio.ByteBuffer; import java.sql.Timestamp; import java.util.Calendar; import java.util.HashMap; import java.util.Map; import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.profile.ProfileCredentialsProvider; 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.CreateTableRequest; import com.amazonaws.services.dynamodbv2.model.DescribeTableRequest; 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.TableDescription; import com.amazonaws.services.dynamodbv2.util.Tables; /** * This sample demonstrates how to perform a few simple operations with the * Amazon DynamoDB service. */ public class AmazonDynamoDBSample { /* * Before running the code: * Fill in your AWS access credentials in the provided credentials * file template, and be sure to move the file to the default location * (/home/madhurima/.aws/credentials) where the sample code will load the * credentials from. * https://console.aws.amazon.com/iam/home?#security_credential * * WARNING: * To avoid accidental leakage of your credentials, DO NOT keep * the credentials file in your source directory. */ static AmazonDynamoDBClient dynamoDB; /** * The only information needed to create a client are security credentials * consisting of the AWS Access Key ID and Secret Access Key. All other * configuration, such as the service endpoints, are performed * automatically. Client parameters, such as proxies, can be specified in an * optional ClientConfiguration object when constructing a client. * * @see com.amazonaws.auth.BasicAWSCredentials * @see com.amazonaws.auth.ProfilesConfigFile * @see com.amazonaws.ClientConfiguration */ private static void init() throws Exception { /* * The ProfileCredentialsProvider will return your [default] * credential profile by reading from the credentials file located at * (/home/madhurima/.aws/credentials). */ AWSCredentials credentials = null; try { credentials = new ProfileCredentialsProvider("default").getCredentials(); } catch (Exception e) { throw new AmazonClientException("Cannot load the credentials from the credential profiles file. " + "Please make sure that your credentials file is at the correct " + "location (/home/madhurima/.aws/credentials), and is in valid format.", e); } dynamoDB = new AmazonDynamoDBClient(credentials); Region usWest2 = Region.getRegion(Regions.US_WEST_2); dynamoDB.setRegion(usWest2); } public static void main(String[] args) throws Exception { init(); try { String tableName = "storyTable"; // Create table if it does not exist yet if (Tables.doesTableExist(dynamoDB, tableName)) { System.out.println("Table " + tableName + " is already ACTIVE"); } else { // Create a table with a primary hash key named 'name', which holds a string CreateTableRequest createTableRequest = new CreateTableRequest().withTableName(tableName) .withKeySchema( new KeySchemaElement().withAttributeName("storyID").withKeyType(KeyType.HASH)) .withAttributeDefinitions(new AttributeDefinition().withAttributeName("storyID") .withAttributeType(ScalarAttributeType.N)) .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 System.out.println("Waiting for " + tableName + " to become ACTIVE..."); Tables.awaitTableToBecomeActive(dynamoDB, tableName); } // Describe our new table DescribeTableRequest describeTableRequest = new DescribeTableRequest().withTableName(tableName); TableDescription tableDescription = dynamoDB.describeTable(describeTableRequest).getTable(); System.out.println("Table Description: " + tableDescription); Timestamp currentTimestamp = new Timestamp(Calendar.getInstance().getTime().getTime()); System.out.println(currentTimestamp); ByteBuffer b = createBody(); int id1 = 1; int id2 = 2; double d1 = 0; double d2 = 1; Timestamp inputTimestamp = currentTimestamp; // Add an item Map<String, AttributeValue> item = newItem(id1, "JAM", "This is JAM", b, inputTimestamp, inputTimestamp, d1, d2); System.out.println("here"); PutItemRequest putItemRequest = new PutItemRequest(tableName, item); System.out.println("here2"); System.out.println(item); System.out.println(putItemRequest); PutItemResult putItemResult = dynamoDB.putItem(putItemRequest); System.out.println("here3"); System.out.println("Result: " + putItemResult); // Add another item item = newItem(id2, "JAM2", "This is JAM2", b, inputTimestamp, inputTimestamp, d1, d2); 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<String, Condition> scanFilter = new HashMap<String, Condition>(); // Condition condition = new Condition() // .withComparisonOperator(ComparisonOperator.GT) // .withAttributeValueList(new AttributeValue()); // 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()); } } private static Map<String, AttributeValue> newItem(int id, String name, String desc, ByteBuffer image, Timestamp storyTime, Timestamp currentTime, double lati, double longi) { Map<String, AttributeValue> item = new HashMap<String, AttributeValue>(); item.put("storyID", new AttributeValue().withN(Integer.toString(id))); item.put("name", new AttributeValue(name)); item.put("desc", new AttributeValue(desc)); // ByteBuffer b = createBody(); item.put("image", new AttributeValue().withB(image)); item.put("storyTime", new AttributeValue().withS(String.valueOf(storyTime))); item.put("currentTime", new AttributeValue().withS(String.valueOf(currentTime))); item.put("lati", new AttributeValue().withN(Double.toString(lati))); item.put("longi", new AttributeValue().withN(Double.toString(longi))); return item; } private static ByteBuffer createBody() { byte[] body = createBodyBytes(); ByteBuffer buffer = ByteBuffer.allocate(body.length); buffer.put(body, 0, body.length); buffer.position(0); return buffer; } private static byte[] createBodyBytes() { try { File f = new File("Pictures/1.jpg"); @SuppressWarnings("resource") FileInputStream fis = new FileInputStream(f); byte[] body = new byte[(int) f.length()]; fis.read(body); return body; // URL url = new URL("http://anderexpressions.com/graphics/ander80x80.gif"); // BufferedImage f = ImageIO.read(url); // return f; } catch (Exception e) { throw new RuntimeException(e); } } }