All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.dynamodbv2.model.BatchWriteItemRequest Maven / Gradle / Ivy

Go to download

The Amazon Web Services SDK for Java provides Java APIs for building software on AWS' cost-effective, scalable, and reliable infrastructure products. The AWS Java SDK allows developers to code against APIs for all of Amazon's infrastructure web services (Amazon S3, Amazon EC2, Amazon SQS, Amazon Relational Database Service, Amazon AutoScaling, etc).

The newest version!
/*
 * Copyright 2010-2014 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.
 */
package com.amazonaws.services.dynamodbv2.model;

import java.io.Serializable;

import com.amazonaws.AmazonWebServiceRequest;

/**
 * Container for the parameters to the {@link com.amazonaws.services.dynamodbv2.AmazonDynamoDB#batchWriteItem(BatchWriteItemRequest) BatchWriteItem operation}.
 * 

* The BatchWriteItem operation puts or deletes multiple items in * one or more tables. A single call to BatchWriteItem can write * up to 1 MB of data, which can comprise as many as 25 put or delete * requests. Individual items to be written can be as large as 64 KB. *

*

* NOTE: BatchWriteItem cannot update items. To update items, use * the UpdateItem API. *

*

* The individual PutItem and DeleteItem operations * specified in BatchWriteItem are atomic; however * BatchWriteItem as a whole is not. If any requested operations * fail because the table's provisioned throughput is exceeded or an * internal processing failure occurs, the failed operations are returned * in the UnprocessedItems response parameter. You can investigate * and optionally resend the requests. Typically, you would call * BatchWriteItem in a loop. Each iteration would check for * unprocessed items and submit a new BatchWriteItem request with * those unprocessed items until all items have been processed. *

*

* To write one item, you can use the PutItem operation; to delete * one item, you can use the DeleteItem operation. *

*

* With BatchWriteItem , you can efficiently write or delete large * amounts of data, such as from Amazon Elastic MapReduce (EMR), or copy * data from another database into DynamoDB. In order to improve * performance with these large-scale operations, BatchWriteItem * does not behave in the same way as individual PutItem and * DeleteItem calls would For example, you cannot specify * conditions on individual put and delete requests, and * BatchWriteItem does not return deleted items in the response. *

*

* If you use a programming language that supports concurrency, such as * Java, you can use threads to write items in parallel. Your application * must include the necessary logic to manage the threads. *

*

* With languages that don't support threading, such as PHP, * BatchWriteItem will write or delete the specified items one at * a time. In both situations, BatchWriteItem provides an * alternative where the API performs the specified put and delete * operations in parallel, giving you the power of the thread pool * approach without having to introduce complexity into your application. *

*

* Parallel processing reduces latency, but each specified put and delete * request consumes the same number of write capacity units whether it is * processed in parallel or not. Delete operations on nonexistent items * consume one write capacity unit. *

*

* If one or more of the following is true, DynamoDB rejects the entire * batch write operation: *

* *
    *
  • * One or more tables specified in the BatchWriteItem request does * not exist. *

    *
  • *
  • * Primary key attributes specified on an item in the request do not * match those in the corresponding table's primary key schema. *

    *
  • *
  • * You try to perform multiple operations on the same item in the same * BatchWriteItem request. For example, you cannot put and delete * the same item in the same BatchWriteItem request. *

    *
  • *
  • * The total request size exceeds 1 MB. *

    *
  • *
  • * Any individual item in a batch exceeds 64 KB. *

    *
  • * *
* * @see com.amazonaws.services.dynamodbv2.AmazonDynamoDB#batchWriteItem(BatchWriteItemRequest) */ public class BatchWriteItemRequest extends AmazonWebServiceRequest implements Serializable { /** * A map of one or more table names and, for each table, a list of * operations to be performed (DeleteRequest or * PutRequest). Each element in the map consists of the following: *
  • DeleteRequest - Perform a DeleteItem * operation on the specified item. The item to be deleted is identified * by a Key subelement:

    • Key - A map of primary * key attribute values that uniquely identify the item. Each entry in * this map consists of an attribute name and an attribute value.

    • *
  • PutRequest - Perform a PutItem * operation on the specified item. The item to be put is identified by * an Item subelement:

    • Item - A map of * attributes and their values. Each entry in this map consists of an * attribute name and an attribute value. Attribute values must not be * null; string and binary type attributes must have lengths greater than * zero; and set type attributes must not be empty. Requests that contain * empty values will be rejected with a ValidationException.

      If * you specify any attributes that are part of an index key, then the * data types for those attributes must match those of the schema in the * table's attribute definition.

*

* Constraints:
* Length: 1 - 25
*/ private java.util.Map> requestItems; /** * If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. *

* Constraints:
* Allowed Values: INDEXES, TOTAL, NONE */ private String returnConsumedCapacity; /** * If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. *

* Constraints:
* Allowed Values: SIZE, NONE */ private String returnItemCollectionMetrics; /** * Default constructor for a new BatchWriteItemRequest object. Callers should use the * setter or fluent setter (with...) methods to initialize this object after creating it. */ public BatchWriteItemRequest() {} /** * Constructs a new BatchWriteItemRequest object. * Callers should use the setter or fluent setter (with...) methods to * initialize any additional object members. * * @param requestItems A map of one or more table names and, for each * table, a list of operations to be performed (DeleteRequest or * PutRequest). Each element in the map consists of the following: *

  • DeleteRequest - Perform a DeleteItem * operation on the specified item. The item to be deleted is identified * by a Key subelement:

    • Key - A map of primary * key attribute values that uniquely identify the item. Each entry in * this map consists of an attribute name and an attribute value.

    • *
  • PutRequest - Perform a PutItem * operation on the specified item. The item to be put is identified by * an Item subelement:

    • Item - A map of * attributes and their values. Each entry in this map consists of an * attribute name and an attribute value. Attribute values must not be * null; string and binary type attributes must have lengths greater than * zero; and set type attributes must not be empty. Requests that contain * empty values will be rejected with a ValidationException.

      If * you specify any attributes that are part of an index key, then the * data types for those attributes must match those of the schema in the * table's attribute definition.

*/ public BatchWriteItemRequest(java.util.Map> requestItems) { setRequestItems(requestItems); } /** * A map of one or more table names and, for each table, a list of * operations to be performed (DeleteRequest or * PutRequest). Each element in the map consists of the following: *
  • DeleteRequest - Perform a DeleteItem * operation on the specified item. The item to be deleted is identified * by a Key subelement:

    • Key - A map of primary * key attribute values that uniquely identify the item. Each entry in * this map consists of an attribute name and an attribute value.

    • *
  • PutRequest - Perform a PutItem * operation on the specified item. The item to be put is identified by * an Item subelement:

    • Item - A map of * attributes and their values. Each entry in this map consists of an * attribute name and an attribute value. Attribute values must not be * null; string and binary type attributes must have lengths greater than * zero; and set type attributes must not be empty. Requests that contain * empty values will be rejected with a ValidationException.

      If * you specify any attributes that are part of an index key, then the * data types for those attributes must match those of the schema in the * table's attribute definition.

*

* Constraints:
* Length: 1 - 25
* * @return A map of one or more table names and, for each table, a list of * operations to be performed (DeleteRequest or * PutRequest). Each element in the map consists of the following: *

  • DeleteRequest - Perform a DeleteItem * operation on the specified item. The item to be deleted is identified * by a Key subelement:

    • Key - A map of primary * key attribute values that uniquely identify the item. Each entry in * this map consists of an attribute name and an attribute value.

    • *
  • PutRequest - Perform a PutItem * operation on the specified item. The item to be put is identified by * an Item subelement:

    • Item - A map of * attributes and their values. Each entry in this map consists of an * attribute name and an attribute value. Attribute values must not be * null; string and binary type attributes must have lengths greater than * zero; and set type attributes must not be empty. Requests that contain * empty values will be rejected with a ValidationException.

      If * you specify any attributes that are part of an index key, then the * data types for those attributes must match those of the schema in the * table's attribute definition.

*/ public java.util.Map> getRequestItems() { return requestItems; } /** * A map of one or more table names and, for each table, a list of * operations to be performed (DeleteRequest or * PutRequest). Each element in the map consists of the following: *
  • DeleteRequest - Perform a DeleteItem * operation on the specified item. The item to be deleted is identified * by a Key subelement:

    • Key - A map of primary * key attribute values that uniquely identify the item. Each entry in * this map consists of an attribute name and an attribute value.

    • *
  • PutRequest - Perform a PutItem * operation on the specified item. The item to be put is identified by * an Item subelement:

    • Item - A map of * attributes and their values. Each entry in this map consists of an * attribute name and an attribute value. Attribute values must not be * null; string and binary type attributes must have lengths greater than * zero; and set type attributes must not be empty. Requests that contain * empty values will be rejected with a ValidationException.

      If * you specify any attributes that are part of an index key, then the * data types for those attributes must match those of the schema in the * table's attribute definition.

*

* Constraints:
* Length: 1 - 25
* * @param requestItems A map of one or more table names and, for each table, a list of * operations to be performed (DeleteRequest or * PutRequest). Each element in the map consists of the following: *

  • DeleteRequest - Perform a DeleteItem * operation on the specified item. The item to be deleted is identified * by a Key subelement:

    • Key - A map of primary * key attribute values that uniquely identify the item. Each entry in * this map consists of an attribute name and an attribute value.

    • *
  • PutRequest - Perform a PutItem * operation on the specified item. The item to be put is identified by * an Item subelement:

    • Item - A map of * attributes and their values. Each entry in this map consists of an * attribute name and an attribute value. Attribute values must not be * null; string and binary type attributes must have lengths greater than * zero; and set type attributes must not be empty. Requests that contain * empty values will be rejected with a ValidationException.

      If * you specify any attributes that are part of an index key, then the * data types for those attributes must match those of the schema in the * table's attribute definition.

*/ public void setRequestItems(java.util.Map> requestItems) { this.requestItems = requestItems; } /** * A map of one or more table names and, for each table, a list of * operations to be performed (DeleteRequest or * PutRequest). Each element in the map consists of the following: *
  • DeleteRequest - Perform a DeleteItem * operation on the specified item. The item to be deleted is identified * by a Key subelement:

    • Key - A map of primary * key attribute values that uniquely identify the item. Each entry in * this map consists of an attribute name and an attribute value.

    • *
  • PutRequest - Perform a PutItem * operation on the specified item. The item to be put is identified by * an Item subelement:

    • Item - A map of * attributes and their values. Each entry in this map consists of an * attribute name and an attribute value. Attribute values must not be * null; string and binary type attributes must have lengths greater than * zero; and set type attributes must not be empty. Requests that contain * empty values will be rejected with a ValidationException.

      If * you specify any attributes that are part of an index key, then the * data types for those attributes must match those of the schema in the * table's attribute definition.

*

* Returns a reference to this object so that method calls can be chained together. *

* Constraints:
* Length: 1 - 25
* * @param requestItems A map of one or more table names and, for each table, a list of * operations to be performed (DeleteRequest or * PutRequest). Each element in the map consists of the following: *

  • DeleteRequest - Perform a DeleteItem * operation on the specified item. The item to be deleted is identified * by a Key subelement:

    • Key - A map of primary * key attribute values that uniquely identify the item. Each entry in * this map consists of an attribute name and an attribute value.

    • *
  • PutRequest - Perform a PutItem * operation on the specified item. The item to be put is identified by * an Item subelement:

    • Item - A map of * attributes and their values. Each entry in this map consists of an * attribute name and an attribute value. Attribute values must not be * null; string and binary type attributes must have lengths greater than * zero; and set type attributes must not be empty. Requests that contain * empty values will be rejected with a ValidationException.

      If * you specify any attributes that are part of an index key, then the * data types for those attributes must match those of the schema in the * table's attribute definition.

* * @return A reference to this updated object so that method calls can be chained * together. */ public BatchWriteItemRequest withRequestItems(java.util.Map> requestItems) { setRequestItems(requestItems); return this; } /** * A map of one or more table names and, for each table, a list of * operations to be performed (DeleteRequest or * PutRequest). Each element in the map consists of the following: *
  • DeleteRequest - Perform a DeleteItem * operation on the specified item. The item to be deleted is identified * by a Key subelement:

    • Key - A map of primary * key attribute values that uniquely identify the item. Each entry in * this map consists of an attribute name and an attribute value.

    • *
  • PutRequest - Perform a PutItem * operation on the specified item. The item to be put is identified by * an Item subelement:

    • Item - A map of * attributes and their values. Each entry in this map consists of an * attribute name and an attribute value. Attribute values must not be * null; string and binary type attributes must have lengths greater than * zero; and set type attributes must not be empty. Requests that contain * empty values will be rejected with a ValidationException.

      If * you specify any attributes that are part of an index key, then the * data types for those attributes must match those of the schema in the * table's attribute definition.

*

* The method adds a new key-value pair into RequestItems parameter, and * returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Length: 1 - 25
* * @param key The key of the entry to be added into RequestItems. * @param value The corresponding value of the entry to be added into RequestItems. */ public BatchWriteItemRequest addRequestItemsEntry(String key, java.util.List value) { if (null == this.requestItems) { this.requestItems = new java.util.HashMap>(); } if (this.requestItems.containsKey(key)) throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided."); this.requestItems.put(key, value); return this; } /** * Removes all the entries added into RequestItems. *

* Returns a reference to this object so that method calls can be chained together. */ public BatchWriteItemRequest clearRequestItemsEntries() { this.requestItems = null; return this; } /** * If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. *

* Constraints:
* Allowed Values: INDEXES, TOTAL, NONE * * @return If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. * * @see ReturnConsumedCapacity */ public String getReturnConsumedCapacity() { return returnConsumedCapacity; } /** * If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. *

* Constraints:
* Allowed Values: INDEXES, TOTAL, NONE * * @param returnConsumedCapacity If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. * * @see ReturnConsumedCapacity */ public void setReturnConsumedCapacity(String returnConsumedCapacity) { this.returnConsumedCapacity = returnConsumedCapacity; } /** * If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. *

* Returns a reference to this object so that method calls can be chained together. *

* Constraints:
* Allowed Values: INDEXES, TOTAL, NONE * * @param returnConsumedCapacity If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. * * @return A reference to this updated object so that method calls can be chained * together. * * @see ReturnConsumedCapacity */ public BatchWriteItemRequest withReturnConsumedCapacity(String returnConsumedCapacity) { this.returnConsumedCapacity = returnConsumedCapacity; return this; } /** * If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. *

* Constraints:
* Allowed Values: INDEXES, TOTAL, NONE * * @param returnConsumedCapacity If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. * * @see ReturnConsumedCapacity */ public void setReturnConsumedCapacity(ReturnConsumedCapacity returnConsumedCapacity) { this.returnConsumedCapacity = returnConsumedCapacity.toString(); } /** * If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. *

* Returns a reference to this object so that method calls can be chained together. *

* Constraints:
* Allowed Values: INDEXES, TOTAL, NONE * * @param returnConsumedCapacity If set to TOTAL, the response includes * ConsumedCapacity data for tables and indexes. If set to * INDEXES, the response includes ConsumedCapacity * for indexes. If set to NONE (the default), * ConsumedCapacity is not included in the response. * * @return A reference to this updated object so that method calls can be chained * together. * * @see ReturnConsumedCapacity */ public BatchWriteItemRequest withReturnConsumedCapacity(ReturnConsumedCapacity returnConsumedCapacity) { this.returnConsumedCapacity = returnConsumedCapacity.toString(); return this; } /** * If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. *

* Constraints:
* Allowed Values: SIZE, NONE * * @return If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. * * @see ReturnItemCollectionMetrics */ public String getReturnItemCollectionMetrics() { return returnItemCollectionMetrics; } /** * If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. *

* Constraints:
* Allowed Values: SIZE, NONE * * @param returnItemCollectionMetrics If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. * * @see ReturnItemCollectionMetrics */ public void setReturnItemCollectionMetrics(String returnItemCollectionMetrics) { this.returnItemCollectionMetrics = returnItemCollectionMetrics; } /** * If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. *

* Returns a reference to this object so that method calls can be chained together. *

* Constraints:
* Allowed Values: SIZE, NONE * * @param returnItemCollectionMetrics If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. * * @return A reference to this updated object so that method calls can be chained * together. * * @see ReturnItemCollectionMetrics */ public BatchWriteItemRequest withReturnItemCollectionMetrics(String returnItemCollectionMetrics) { this.returnItemCollectionMetrics = returnItemCollectionMetrics; return this; } /** * If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. *

* Constraints:
* Allowed Values: SIZE, NONE * * @param returnItemCollectionMetrics If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. * * @see ReturnItemCollectionMetrics */ public void setReturnItemCollectionMetrics(ReturnItemCollectionMetrics returnItemCollectionMetrics) { this.returnItemCollectionMetrics = returnItemCollectionMetrics.toString(); } /** * If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. *

* Returns a reference to this object so that method calls can be chained together. *

* Constraints:
* Allowed Values: SIZE, NONE * * @param returnItemCollectionMetrics If set to SIZE, statistics about item collections, if * any, that were modified during the operation are returned in the * response. If set to NONE (the default), no statistics are * returned. * * @return A reference to this updated object so that method calls can be chained * together. * * @see ReturnItemCollectionMetrics */ public BatchWriteItemRequest withReturnItemCollectionMetrics(ReturnItemCollectionMetrics returnItemCollectionMetrics) { this.returnItemCollectionMetrics = returnItemCollectionMetrics.toString(); return this; } /** * Returns a string representation of this object; useful for testing and * debugging. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getRequestItems() != null) sb.append("RequestItems: " + getRequestItems() + ","); if (getReturnConsumedCapacity() != null) sb.append("ReturnConsumedCapacity: " + getReturnConsumedCapacity() + ","); if (getReturnItemCollectionMetrics() != null) sb.append("ReturnItemCollectionMetrics: " + getReturnItemCollectionMetrics() ); sb.append("}"); return sb.toString(); } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getRequestItems() == null) ? 0 : getRequestItems().hashCode()); hashCode = prime * hashCode + ((getReturnConsumedCapacity() == null) ? 0 : getReturnConsumedCapacity().hashCode()); hashCode = prime * hashCode + ((getReturnItemCollectionMetrics() == null) ? 0 : getReturnItemCollectionMetrics().hashCode()); return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof BatchWriteItemRequest == false) return false; BatchWriteItemRequest other = (BatchWriteItemRequest)obj; if (other.getRequestItems() == null ^ this.getRequestItems() == null) return false; if (other.getRequestItems() != null && other.getRequestItems().equals(this.getRequestItems()) == false) return false; if (other.getReturnConsumedCapacity() == null ^ this.getReturnConsumedCapacity() == null) return false; if (other.getReturnConsumedCapacity() != null && other.getReturnConsumedCapacity().equals(this.getReturnConsumedCapacity()) == false) return false; if (other.getReturnItemCollectionMetrics() == null ^ this.getReturnItemCollectionMetrics() == null) return false; if (other.getReturnItemCollectionMetrics() != null && other.getReturnItemCollectionMetrics().equals(this.getReturnItemCollectionMetrics()) == false) return false; return true; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy