Search in sources :

Example 1 with DynamoDbWaiter

use of software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter in project aws-doc-sdk-examples by awsdocs.

the class EnhancedScanRecordsWithExpression method createTable.

// Create a table with indexes.
public static void createTable(DynamoDbClient ddb, String tableName) {
    try {
        // Attribute definitions
        ArrayList<AttributeDefinition> attributeDefinitions = new ArrayList<AttributeDefinition>();
        // Define attributes
        attributeDefinitions.add(AttributeDefinition.builder().attributeName("issueId").attributeType("S").build());
        attributeDefinitions.add(AttributeDefinition.builder().attributeName("title").attributeType("S").build());
        attributeDefinitions.add(AttributeDefinition.builder().attributeName("createDate").attributeType("S").build());
        attributeDefinitions.add(AttributeDefinition.builder().attributeName("dueDate").attributeType("S").build());
        ArrayList<KeySchemaElement> tableKey = new ArrayList<KeySchemaElement>();
        KeySchemaElement key = KeySchemaElement.builder().attributeName("issueId").keyType(KeyType.HASH).build();
        KeySchemaElement key2 = KeySchemaElement.builder().attributeName("title").keyType(// Sort
        KeyType.RANGE).build();
        // Add KeySchemaElement objects to the list.
        tableKey.add(key);
        tableKey.add(key2);
        // Create a ProvisionedThroughput object.
        ProvisionedThroughput ptIndex = ProvisionedThroughput.builder().readCapacityUnits(1L).writeCapacityUnits(1L).build();
        KeySchemaElement keyDate = KeySchemaElement.builder().attributeName("createDate").keyType(KeyType.HASH).build();
        KeySchemaElement keyIssues = KeySchemaElement.builder().attributeName("issueId").keyType(KeyType.RANGE).build();
        List<KeySchemaElement> keySchema = new ArrayList<KeySchemaElement>();
        keySchema.add(keyDate);
        keySchema.add(keyIssues);
        Projection projection = Projection.builder().projectionType("INCLUDE").nonKeyAttributes("description", "status").projectionType("INCLUDE").build();
        GlobalSecondaryIndex createDateIndex = GlobalSecondaryIndex.builder().indexName("createDateIndex").provisionedThroughput(ptIndex).keySchema(keySchema).projection(projection).build();
        KeySchemaElement keySchemaTitle = KeySchemaElement.builder().attributeName("title").keyType(KeyType.HASH).build();
        KeySchemaElement keySchemaIssueId = KeySchemaElement.builder().attributeName("issueId").keyType(KeyType.RANGE).build();
        List<KeySchemaElement> keySchemaCol2 = new ArrayList<KeySchemaElement>();
        keySchemaCol2.add(keySchemaTitle);
        keySchemaCol2.add(keySchemaIssueId);
        GlobalSecondaryIndex titleIndex = GlobalSecondaryIndex.builder().indexName("titleIndex").provisionedThroughput(ptIndex).keySchema(keySchemaCol2).projection(Projection.builder().projectionType("KEYS_ONLY").build()).build();
        KeySchemaElement keySchemaDueDate = KeySchemaElement.builder().attributeName("dueDate").keyType(KeyType.HASH).build();
        List<KeySchemaElement> keySchemaCol3 = new ArrayList<KeySchemaElement>();
        keySchemaCol3.add(keySchemaDueDate);
        GlobalSecondaryIndex dueDateIndex = GlobalSecondaryIndex.builder().indexName("dueDateIndex").provisionedThroughput(ptIndex).keySchema(keySchemaCol3).projection(projection).build();
        List<GlobalSecondaryIndex> globalIndex = new ArrayList<>();
        globalIndex.add(createDateIndex);
        globalIndex.add(dueDateIndex);
        globalIndex.add(titleIndex);
        CreateTableRequest request = CreateTableRequest.builder().keySchema(tableKey).provisionedThroughput(ProvisionedThroughput.builder().readCapacityUnits(new Long(10)).writeCapacityUnits(new Long(10)).build()).globalSecondaryIndexes(globalIndex).attributeDefinitions(attributeDefinitions).tableName(tableName).build();
        System.out.println("Creating table " + tableName + "...");
        DynamoDbWaiter dbWaiter = ddb.waiter();
        CreateTableResponse response = ddb.createTable(request);
        // Wait until the table is created.
        WaiterResponse<DescribeTableResponse> waiterResponse = dbWaiter.waitUntilTableExists(r -> r.tableName(tableName));
        waiterResponse.matched().response().ifPresent(System.out::println);
        String newTable = response.tableDescription().tableName();
        System.out.println("Table " + tableName + " is created");
    } catch (DynamoDbException e) {
        System.err.println(e.getMessage());
        System.exit(1);
    }
}
Also used : DynamoDbWaiter(software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter)

Example 2 with DynamoDbWaiter

use of software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter in project aws-doc-sdk-examples by awsdocs.

the class CreateTable method createTable.

// snippet-start:[dynamodb.java2.create_table.main]
public static String createTable(DynamoDbClient ddb, String tableName, String key) {
    DynamoDbWaiter dbWaiter = ddb.waiter();
    CreateTableRequest request = CreateTableRequest.builder().attributeDefinitions(AttributeDefinition.builder().attributeName(key).attributeType(ScalarAttributeType.S).build()).keySchema(KeySchemaElement.builder().attributeName(key).keyType(KeyType.HASH).build()).provisionedThroughput(ProvisionedThroughput.builder().readCapacityUnits(new Long(10)).writeCapacityUnits(new Long(10)).build()).tableName(tableName).build();
    String newTable = "";
    try {
        CreateTableResponse response = ddb.createTable(request);
        DescribeTableRequest tableRequest = DescribeTableRequest.builder().tableName(tableName).build();
        // Wait until the Amazon DynamoDB table is created
        WaiterResponse<DescribeTableResponse> waiterResponse = dbWaiter.waitUntilTableExists(tableRequest);
        waiterResponse.matched().response().ifPresent(System.out::println);
        newTable = response.tableDescription().tableName();
        return newTable;
    } catch (DynamoDbException e) {
        System.err.println(e.getMessage());
        System.exit(1);
    }
    return "";
}
Also used : DynamoDbException(software.amazon.awssdk.services.dynamodb.model.DynamoDbException) CreateTableResponse(software.amazon.awssdk.services.dynamodb.model.CreateTableResponse) DescribeTableResponse(software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse) DescribeTableRequest(software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest) DynamoDbWaiter(software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter) CreateTableRequest(software.amazon.awssdk.services.dynamodb.model.CreateTableRequest)

Example 3 with DynamoDbWaiter

use of software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter in project aws-doc-sdk-examples by awsdocs.

the class Scenario method createTable.

// snippet-start:[dynamodb.java2.scenario.create_table.main]
// Create a table with a Sort key.
public static void createTable(DynamoDbClient ddb, String tableName) {
    DynamoDbWaiter dbWaiter = ddb.waiter();
    ArrayList<AttributeDefinition> attributeDefinitions = new ArrayList<AttributeDefinition>();
    // Define attributes.
    attributeDefinitions.add(AttributeDefinition.builder().attributeName("year").attributeType("N").build());
    attributeDefinitions.add(AttributeDefinition.builder().attributeName("title").attributeType("S").build());
    ArrayList<KeySchemaElement> tableKey = new ArrayList<KeySchemaElement>();
    KeySchemaElement key = KeySchemaElement.builder().attributeName("year").keyType(KeyType.HASH).build();
    KeySchemaElement key2 = KeySchemaElement.builder().attributeName("title").keyType(// Sort
    KeyType.RANGE).build();
    // Add KeySchemaElement objects to the list.
    tableKey.add(key);
    tableKey.add(key2);
    CreateTableRequest request = CreateTableRequest.builder().keySchema(tableKey).provisionedThroughput(ProvisionedThroughput.builder().readCapacityUnits(new Long(10)).writeCapacityUnits(new Long(10)).build()).attributeDefinitions(attributeDefinitions).tableName(tableName).build();
    try {
        CreateTableResponse response = ddb.createTable(request);
        DescribeTableRequest tableRequest = DescribeTableRequest.builder().tableName(tableName).build();
        // Wait until the Amazon DynamoDB table is created.
        WaiterResponse<DescribeTableResponse> waiterResponse = dbWaiter.waitUntilTableExists(tableRequest);
        waiterResponse.matched().response().ifPresent(System.out::println);
        String newTable = response.tableDescription().tableName();
        System.out.println("The " + newTable + " was successfully created.");
    } catch (DynamoDbException e) {
        System.err.println(e.getMessage());
        System.exit(1);
    }
}
Also used : ArrayList(java.util.ArrayList) AttributeDefinition(software.amazon.awssdk.services.dynamodb.model.AttributeDefinition) DescribeTableResponse(software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse) DescribeTableRequest(software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest) DynamoDbException(software.amazon.awssdk.services.dynamodb.model.DynamoDbException) CreateTableResponse(software.amazon.awssdk.services.dynamodb.model.CreateTableResponse) DynamoDbWaiter(software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter) CreateTableRequest(software.amazon.awssdk.services.dynamodb.model.CreateTableRequest) KeySchemaElement(software.amazon.awssdk.services.dynamodb.model.KeySchemaElement)

Aggregations

DynamoDbWaiter (software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter)3 CreateTableRequest (software.amazon.awssdk.services.dynamodb.model.CreateTableRequest)2 CreateTableResponse (software.amazon.awssdk.services.dynamodb.model.CreateTableResponse)2 DescribeTableRequest (software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest)2 DescribeTableResponse (software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse)2 DynamoDbException (software.amazon.awssdk.services.dynamodb.model.DynamoDbException)2 ArrayList (java.util.ArrayList)1 AttributeDefinition (software.amazon.awssdk.services.dynamodb.model.AttributeDefinition)1 KeySchemaElement (software.amazon.awssdk.services.dynamodb.model.KeySchemaElement)1