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

com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBQueryExpression Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Amazon DynamoDB module holds the client classes that are used for communicating with Amazon DynamoDB Service

There is a newer version: 1.12.753
Show newest version
/*
 * Copyright 2011-2024 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.datamodeling;

import java.util.HashMap;
import java.util.Map;

import com.amazonaws.services.dynamodbv2.model.AttributeValue;
import com.amazonaws.services.dynamodbv2.model.Condition;
import com.amazonaws.services.dynamodbv2.model.ConditionalOperator;
import com.amazonaws.services.dynamodbv2.model.QueryRequest;
import com.amazonaws.services.dynamodbv2.model.ReturnConsumedCapacity;
import com.amazonaws.services.dynamodbv2.model.Select;

/**
 * A query expression.
 */
public class DynamoDBQueryExpression  {

    private boolean consistentRead = true;
    private boolean scanIndexForward = true;
    private T hashKeyValues;
    private Map rangeKeyConditions;
    private Map exclusiveStartKey;
    private Integer limit;
    private String indexName;
    private Map queryFilter;
    private String conditionalOperator;

    /**
     * Evaluates the query results and returns only the desired values.
     * 

* The condition you specify is applied to the items queried; any items that * do not match the expression are not returned. */ private String filterExpression; /** * The condition that specifies the key value(s) for items to be retrieved * by the Query action. */ private String keyConditionExpression; /** * One or more substitution variables for simplifying complex expressions. */ private Map expressionAttributeNames; /** * One or more values that can be substituted in an expression. */ private Map expressionAttributeValues; /** * The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index.

  • ALL_ATTRIBUTES - Returns all of * the item attributes from the specified table or index. If you query a * local secondary index, then for each matching item in the index * DynamoDB will fetch the entire item from the parent table. If the * index is configured to project all item attributes, then all of the * data can be obtained from the local secondary index, and no fetching * is required.

  • ALL_PROJECTED_ATTRIBUTES - * Allowed only when querying an index. Retrieves all attributes that * have been projected into the index. If the index is configured to * project all attributes, this return value is equivalent to specifying * ALL_ATTRIBUTES.

  • COUNT - * Returns the number of matching items, rather than the matching items * themselves.

  • SPECIFIC_ATTRIBUTES - Returns * only the attributes listed in AttributesToGet. This return * value is equivalent to specifying AttributesToGet without * specifying any value for Select.

    If you query a local * secondary index and request only attributes that are projected into * that index, the operation will read only the index and not the table. * If any of the requested attributes are not projected into the local * secondary index, DynamoDB will fetch each of these attributes from the * parent table. This extra fetching incurs additional throughput cost * and latency.

    If you query a global secondary index, you can only * request attributes that are projected into the index. Global secondary * index queries cannot fetch attributes from the parent table.

  • *

If neither Select nor AttributesToGet are * specified, DynamoDB defaults to ALL_ATTRIBUTES when * accessing a table, and ALL_PROJECTED_ATTRIBUTES when * accessing an index. You cannot use both Select and * AttributesToGet together in a single request, unless the value * for Select is SPECIFIC_ATTRIBUTES. (This usage is * equivalent to specifying AttributesToGet without any value for * Select.) *

* Constraints:
* Allowed Values: ALL_ATTRIBUTES, ALL_PROJECTED_ATTRIBUTES, SPECIFIC_ATTRIBUTES, COUNT */ private String select; /** * A string that identifies one or more attributes to retrieve from the * table. These attributes can include scalars, sets, or elements of a * JSON document. The attributes in the expression must be separated by * commas.

If no attribute names are specified, then all attributes * will be returned. If any of the requested attributes are not found, * they will not appear in the result.

For more information, go to Accessing * Item Attributes in the Amazon DynamoDB Developer Guide. */ private String projectionExpression; /** * A value that 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 *

* If enabled, the underlying request to DynamoDB will include the * configured parameter value and the low-level response from DynamoDB will * include the amount of capacity consumed by the query. Currently, the * consumed capacity is only exposed through the DynamoDBMapper when you * call {@code DynamoDBMapper.queryPage}, not {@code DynamoDBMapper.query}. */ private String returnConsumedCapacity; /** * Returns whether this query uses consistent reads. */ public boolean isConsistentRead() { return consistentRead; } /** * Sets whether this query uses consistent reads. */ public void setConsistentRead(boolean consistentRead) { this.consistentRead = consistentRead; } /** * Sets whether this query uses consistent reads and returns a pointer to * this object for method-chaining. */ public DynamoDBQueryExpression withConsistentRead(boolean consistentRead) { this.consistentRead = consistentRead; return this; } /** * Returns whether this query scans forward. */ public boolean isScanIndexForward() { return scanIndexForward; } /** * Sets whether this query scans forward. */ public void setScanIndexForward(boolean scanIndexForward) { this.scanIndexForward = scanIndexForward; } /** * Sets whether this query scans forward and returns a pointer to this * object for method-chaining. */ public DynamoDBQueryExpression withScanIndexForward(boolean scanIndexForward) { this.scanIndexForward = scanIndexForward; return this; } /** * Returns the exclusive start key for this query. */ public Map getExclusiveStartKey() { return exclusiveStartKey; } /** * Sets the exclusive start key for this query. */ public void setExclusiveStartKey(Map exclusiveStartKey) { this.exclusiveStartKey = exclusiveStartKey; } /** * Sets the exclusive start key for this query and returns a pointer to this * object for method-chaining. */ public DynamoDBQueryExpression withExclusiveStartKey(Map exclusiveStartKey) { this.exclusiveStartKey = exclusiveStartKey; return this; } /** * Returns the maximum number of items to retrieve in each service request * to DynamoDB. *

* Note that when calling {@code DynamoDBMapper.query}, multiple requests * are made to DynamoDB if needed to retrieve the entire result set. Setting * this will limit the number of items retrieved by each request, NOT * the total number of results that will be retrieved. Use * {@code DynamoDBMapper.queryPage} to retrieve a single page of items from * DynamoDB. */ public Integer getLimit() { return limit; } /** * Sets the maximum number of items to retrieve in each service request to * DynamoDB. *

* Note that when calling {@code DynamoDBMapper.query}, multiple requests * are made to DynamoDB if needed to retrieve the entire result set. Setting * this will limit the number of items retrieved by each request, NOT * the total number of results that will be retrieved. Use * {@code DynamoDBMapper.queryPage} to retrieve a single page of items from * DynamoDB. */ public void setLimit(Integer limit) { this.limit = limit; } /** * Sets the maximum number of items to retrieve in each service request to * DynamoDB and returns a pointer to this object for method-chaining. *

* Note that when calling {@code DynamoDBMapper.query}, multiple requests * are made to DynamoDB if needed to retrieve the entire result set. Setting * this will limit the number of items retrieved by each request, NOT * the total number of results that will be retrieved. Use * {@code DynamoDBMapper.queryPage} to retrieve a single page of items from * DynamoDB. */ public DynamoDBQueryExpression withLimit(Integer limit) { this.limit = limit; return this; } /** * Gets the hash key value(s) for this query. All hash key attributes for * the table must be specified with this key object. */ public T getHashKeyValues() { return hashKeyValues; } /** * Sets the hash key value(s) for this query. All hash key attributes for * the table must be specified with this key object. * * Note 1: Currently the DynamoDBMapper supports only one value per hash key. * Note 2: Currently the Amazon DynamoDB supports only one hash key per * table/index. */ public void setHashKeyValues(T hashKeyValues) { this.hashKeyValues = hashKeyValues; } /** * Sets the hash key value(s) for this query. All hash key attributes for * the table must be specified with this key object. */ public DynamoDBQueryExpression withHashKeyValues(T hashKObject) { setHashKeyValues(hashKObject); return this; } /** * Gets the range key condition for this query. All range key attributes for * the table must be specified by attribute name in the map. */ public Map getRangeKeyConditions() { return rangeKeyConditions; } /** * Sets the range key condition for this query. All range key attributes for * the table must be specified by attribute name in the map. * * @param rangeKeyConditions a map from key name to condition * NOTE: The current DynamoDB service only allows up to one * range key condition per query. Providing more than one * range key condition will result in a SdkClientException. */ public void setRangeKeyConditions(Map rangeKeyConditions) { this.rangeKeyConditions = rangeKeyConditions; } /** * Sets the range key condition for this query. All range key attributes for * the table must be specified by attribute name in the map. * * @param rangeKeyConditions a map from key name to condition * NOTE: The current DynamoDB service only allows up to one range * key condition per query. Providing more than one range key * condition will result in a SdkClientException. */ public DynamoDBQueryExpression withRangeKeyConditions(Map rangeKeyConditions) { setRangeKeyConditions(rangeKeyConditions); return this; } /** * Sets one range key condition for this query, using the attribute name of * the range key. All range key attributes for the table must be specified * by using {@link DynamoDBRangeKey} or {@link DynamoDBIndexRangeKey} annotations * before executing the query. *

*
If the attribute is the primary range key
*
users should NOT set any index name for this query.
*
If the attribute is an index range key
*
* {@link DynamoDBMapper} will automatically set the index name if the * range key is annotated as only used by one local secondary index, * otherwise users must set the index name manually by either * {@link DynamoDBQueryExpression#setIndexName(String)} or * {@link DynamoDBQueryExpression#withIndexName(String)}. *
*
* * @param rangeKeyAttributeName * This can be either the primary range key of the table or an * index range key. * * @param rangeKeyCondition * Condition specified on the given range key for this query. */ public DynamoDBQueryExpression withRangeKeyCondition(String rangeKeyAttributeName, Condition rangeKeyCondition) { if ( rangeKeyConditions == null ) rangeKeyConditions = new HashMap(); rangeKeyConditions.put(rangeKeyAttributeName, rangeKeyCondition); return this; } /** * Returns the name of the index to be used by this query. */ public String getIndexName() { return indexName; } /** * Sets the name of the index to be used by this query. The hash key * and/or range key of the index must be specified by adding * {@link DynamoDBIndexHashKey} or {@code DynamoDBIndexRangeKey} * annotations to the appropriate getter methods of the mapped * object. */ public void setIndexName(String indexName) { this.indexName = indexName; } /** * Sets the name of the index to be used by this query. The hash key * and/or range key of the index must be specified by adding * {@link DynamoDBIndexHashKey} or {@code DynamoDBIndexRangeKey} * annotations to the appropriate getter methods of the mapped * object. *

* Returns a pointer to this object for method-chaining. */ public DynamoDBQueryExpression withIndexName(String indexName) { setIndexName(indexName); return this; } /** * Returns the query filter applied on this query. */ public Map getQueryFilter() { return queryFilter; } /** * Sets the query filter applied on this query. */ public void setQueryFilter(Map queryFilter) { this.queryFilter = queryFilter; } /** * Sets the query filter applied on this query. *

Returns a pointer to this object for method-chaining. */ public DynamoDBQueryExpression withQueryFilter(Map queryFilter) { setQueryFilter(queryFilter); return this; } /** * Adds a new condition to the the query filter. *

Returns a pointer to this object for method-chaining. * * @param attributeName * The name of the attribute on which the specified condition * operates. * @param condition * The filter condition applied on the attribute. */ public DynamoDBQueryExpression withQueryFilterEntry(String attributeName, Condition condition) { if (queryFilter == null) { queryFilter = new HashMap(); } queryFilter.put(attributeName, condition); return this; } /** * Returns the logical operator on the query filter conditions. */ public String getConditionalOperator() { return conditionalOperator; } /** * Sets the logical operator on the query filter conditions. */ public void setConditionalOperator(String conditionalOperator) { this.conditionalOperator = conditionalOperator; } /** * Sets the logical operator on the query filter conditions. *

Returns a pointer to this object for method-chaining. */ public DynamoDBQueryExpression withConditionalOperator(String conditionalOperator) { setConditionalOperator(conditionalOperator); return this; } /** * Sets the logical operator on the query filter conditions. */ public void setConditionalOperator(ConditionalOperator conditionalOperator) { this.conditionalOperator = conditionalOperator.toString(); } /** * Sets the logical operator on the query filter conditions. *

Returns a pointer to this object for method-chaining. */ public DynamoDBQueryExpression withConditionalOperator(ConditionalOperator conditionalOperator) { setConditionalOperator(conditionalOperator); return this; } /** * Evaluates the query results and returns only the desired values. *

* The condition you specify is applied to the items queried; any items that * do not match the expression are not returned. * * @return Evaluates the query results and returns only the desired values. *

* The condition you specify is applied to the items queried; any * items that do not match the expression are not returned. * @see QueryRequest#getFilterExpression() */ public String getFilterExpression() { return filterExpression; } /** * Evaluates the query results and returns only the desired values. *

* The condition you specify is applied to the items queried; any items that * do not match the expression are not returned. * * @param filterExpression * Evaluates the query results and returns only the desired * values. *

* The condition you specify is applied to the items queried; any * items that do not match the expression are not returned. * @see QueryRequest#setFilterExpression(String) */ public void setFilterExpression(String filterExpression) { this.filterExpression = filterExpression; } /** * Evaluates the query results and returns only the desired values. *

* The condition you specify is applied to the items queried; any items that * do not match the expression are not returned. *

* Returns a reference to this object so that method calls can be chained * together. * * @param filterExpression * Evaluates the query results and returns only the desired * values. *

* The condition you specify is applied to the items queried; any * items that do not match the expression are not returned. * * @return A reference to this updated object so that method calls can be * chained together. * @see QueryRequest#withFilterExpression(String) */ public DynamoDBQueryExpression withFilterExpression( String filterExpression) { this.filterExpression = filterExpression; return this; } /** * Returns the condition that specifies the key value(s) for items to be * retrieved by the Query action. *

* The condition must perform an equality test on a single hash key value. * The condition can also test for one or more range key values. A * Query can use KeyConditionExpression to retrieve a single * item with a given hash and range key value, or several items that have * the same hash key value but different range key values. *

* The hash key equality test is required, and must be specified in the * following format: *

* hashAttributeName = :hashval *

* If you also want to provide a range key condition, it must be combined * using AND with the hash key condition. Following is an example, * using the = comparison operator for the range key: *

* hashAttributeName = :hashval AND * rangeAttributeName = :rangeval *

* Valid comparisons for the range key condition are as follows: *

    *
  • *

    * rangeAttributeName = :rangeval - true if * the range key is equal to :rangeval.

  • *
  • *

    * rangeAttributeName < :rangeval - true if * the range key is less than :rangeval.

  • *
  • *

    * rangeAttributeName <= :rangeval - true * if the range key is less than or equal to :rangeval.

  • *
  • *

    * rangeAttributeName > :rangeval - true if * the range key is greater than :rangeval.

  • *
  • *

    * rangeAttributeName >=:rangeval - true * if the range key is greater than or equal to :rangeval.

  • *
  • *

    * rangeAttributeName BETWEEN :rangeval1 * AND :rangeval2 - true if the range key is greater * than or equal to :rangeval1, and less than or equal to * :rangeval2.

  • *
  • *

    * begins_with (rangeAttributeName, * :rangeval) - true if the range key begins with a * particular operand. Note that the function name begins_with * is case-sensitive.

  • *
*

* Use ExpressionAttributeValues (via {@link #withExpressionAttributeValues(Map)}) to * replace tokens such as :hashval and :rangeval * with actual values at runtime. *

* You can optionally use ExpressionAttributeNames (via * {@link #withExpressionAttributeNames(Map)}) to replace the names of the hash and range * attributes with placeholder tokens. This might be necessary if an * attribute name conflicts with a DynamoDB reserved word. For example, the * following KeyConditionExpression causes an error because * Size is a reserved word: *

    *
  • Size = :myval
  • *
*

* To work around this, define a placeholder (such a #myval) to * represent the attribute name Size. KeyConditionExpression * then is as follows: *

    *
  • #S = * :myval
  • *
*

* For a list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide. *

* For more information on ExpressionAttributeNames and * ExpressionAttributeValues, see Using Placeholders for Attribute Names and Values in the Amazon * DynamoDB Developer Guide. *

* KeyConditionExpression replaces the legacy KeyConditions * parameter. * * @return The condition that specifies the key value(s) for items to be * retrieved by the Query action. *

* The condition must perform an equality test on a single hash key * value. The condition can also test for one or more range key * values. A Query can use KeyConditionExpression to * retrieve a single item with a given hash and range key value, or * several items that have the same hash key value but different * range key values. *

* The hash key equality test is required, and must be specified in * the following format: *

* hashAttributeName = :hashval *

* If you also want to provide a range key condition, it must be * combined using AND with the hash key condition. Following * is an example, using the = comparison operator for the * range key: *

* hashAttributeName = :hashval * AND rangeAttributeName = * :rangeval *

* Valid comparisons for the range key condition are as follows: *

    *
  • *

    * rangeAttributeName = :rangeval - * true if the range key is equal to :rangeval.

  • *
  • *

    * rangeAttributeName < :rangeval - * true if the range key is less than :rangeval.

  • *
  • *

    * rangeAttributeName <= :rangeval * - true if the range key is less than or equal to * :rangeval.

  • *
  • *

    * rangeAttributeName > :rangeval - * true if the range key is greater than :rangeval.

  • *
  • *

    * rangeAttributeName >= :rangeval * - true if the range key is greater than or equal to * :rangeval.

  • *
  • *

    * rangeAttributeName BETWEEN * :rangeval1 AND :rangeval2 - true * if the range key is greater than or equal to * :rangeval1, and less than or equal to * :rangeval2.

  • *
  • *

    * begins_with (rangeAttributeName, * :rangeval) - true if the range key begins * with a particular operand. Note that the function name * begins_with is case-sensitive.

  • *
*

* Use ExpressionAttributeValues (via * {@link #withExpressionAttributeValues(Map)}) to replace tokens such as * :hashval and :rangeval with actual * values at runtime. *

* You can optionally use ExpressionAttributeNames (via * {@link #withExpressionAttributeNames(Map)}) to replace the names of the hash and * range attributes with placeholder tokens. This might be necessary * if an attribute name conflicts with a DynamoDB reserved word. For * example, the following KeyConditionExpression causes an * error because Size is a reserved word: *

    *
  • Size = :myval
  • *
*

* To work around this, define a placeholder (such a * #myval) to represent the attribute name Size. * KeyConditionExpression then is as follows: *

    *
  • #S = * :myval
  • *
*

* For a list of reserved words, see Reserved Words in the Amazon DynamoDB Developer * Guide. *

* For more information on ExpressionAttributeNames and * ExpressionAttributeValues, see Using Placeholders for Attribute Names and Values in the * Amazon DynamoDB Developer Guide. *

* KeyConditionExpression replaces the legacy * KeyConditions parameter. */ public String getKeyConditionExpression() { return keyConditionExpression; } /** * Sets the condition that specifies the key value(s) for items to be * retrieved by the Query action. *

* The condition must perform an equality test on a single hash key value. * The condition can also test for one or more range key values. A * Query can use KeyConditionExpression to retrieve a single * item with a given hash and range key value, or several items that have * the same hash key value but different range key values. *

* The hash key equality test is required, and must be specified in the * following format: *

* hashAttributeName = :hashval *

* If you also want to provide a range key condition, it must be combined * using AND with the hash key condition. Following is an example, * using the = comparison operator for the range key: *

* hashAttributeName = :hashval AND * rangeAttributeName = :rangeval *

* Valid comparisons for the range key condition are as follows: *

    *
  • *

    * rangeAttributeName = :rangeval - true if * the range key is equal to :rangeval.

  • *
  • *

    * rangeAttributeName < :rangeval - true if * the range key is less than :rangeval.

  • *
  • *

    * rangeAttributeName <= :rangeval - true * if the range key is less than or equal to :rangeval.

  • *
  • *

    * rangeAttributeName > :rangeval - true if * the range key is greater than :rangeval.

  • *
  • *

    * rangeAttributeName >= :rangeval - true * if the range key is greater than or equal to :rangeval.

  • *
  • *

    * rangeAttributeName BETWEEN :rangeval1 * AND :rangeval2 - true if the range key is greater * than or equal to :rangeval1, and less than or equal to * :rangeval2.

  • *
  • *

    * begins_with (rangeAttributeName, * :rangeval) - true if the range key begins with a * particular operand. Note that the function name begins_with * is case-sensitive.

  • *
*

* Use ExpressionAttributeValues (via {@link #withExpressionAttributeValues(Map)}) to * replace tokens such as :hashval and :rangeval * with actual values at runtime. *

* You can optionally use ExpressionAttributeNames via * {@link #withExpressionAttributeNames(Map)}) to replace the names of the hash and range * attributes with placeholder tokens. This might be necessary if an * attribute name conflicts with a DynamoDB reserved word. For example, the * following KeyConditionExpression causes an error because * Size is a reserved word: *

    *
  • Size = :myval
  • *
*

* To work around this, define a placeholder (such a #myval) to * represent the attribute name Size. KeyConditionExpression * then is as follows: *

    *
  • #S = * :myval
  • *
*

* For a list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide. *

* For more information on ExpressionAttributeNames and * ExpressionAttributeValues, see Using Placeholders for Attribute Names and Values in the Amazon * DynamoDB Developer Guide. *

* KeyConditionExpression replaces the legacy KeyConditions * parameter. *

* When a key expression is specified, the corresponding name-map and * value-map can optionally be specified via {@link #withExpressionAttributeNames(Map)} and * {@link #withExpressionAttributeValues(Map)}. */ public void setKeyConditionExpression(String keyConditionExpression) { this.keyConditionExpression = keyConditionExpression; } public DynamoDBQueryExpression withKeyConditionExpression( String keyConditionExpression) { this.keyConditionExpression = keyConditionExpression; return this; } /** * One or more substitution variables for simplifying complex expressions. * * @return One or more substitution variables for simplifying complex * expressions. * @see QueryRequest#getExpressionAttributeNames() */ public java.util.Map getExpressionAttributeNames() { return expressionAttributeNames; } /** * One or more substitution variables for simplifying complex expressions. * * @param expressionAttributeNames * One or more substitution variables for simplifying complex * expressions. * @see QueryRequest#setExpressionAttributeNames(Map) */ public void setExpressionAttributeNames( java.util.Map expressionAttributeNames) { this.expressionAttributeNames = expressionAttributeNames; } /** * One or more substitution variables for simplifying complex expressions. * * @param expressionAttributeNames * One or more substitution variables for simplifying complex * expressions. * * @return A reference to this updated object so that method calls can be * chained together. * @see QueryRequest#withExpressionAttributeNames(Map) */ public DynamoDBQueryExpression withExpressionAttributeNames( java.util.Map expressionAttributeNames) { setExpressionAttributeNames(expressionAttributeNames); return this; } /** * One or more substitution variables for simplifying complex expressions. * The method adds a new key-value pair into ExpressionAttributeNames * parameter, and returns a reference to this object so that method calls * can be chained together. * * @param key * The key of the entry to be added into * ExpressionAttributeNames. * @param value * The corresponding value of the entry to be added into * ExpressionAttributeNames. * * @see QueryRequest#addExpressionAttributeNamesEntry(String, String) */ public DynamoDBQueryExpression addExpressionAttributeNamesEntry( String key, String value) { if (null == this.expressionAttributeNames) { this.expressionAttributeNames = new java.util.HashMap(); } if (this.expressionAttributeNames.containsKey(key)) throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided."); this.expressionAttributeNames.put(key, value); return this; } /** * Removes all the entries added into ExpressionAttributeNames. *

* Returns a reference to this object so that method calls can be chained * together. */ public DynamoDBQueryExpression clearExpressionAttributeNamesEntries() { this.expressionAttributeNames = null; return this; } /** * One or more values that can be substituted in an expression. * * @return One or more values that can be substituted in an expression. * * @see QueryRequest#getExpressionAttributeValues() */ public java.util.Map getExpressionAttributeValues() { return expressionAttributeValues; } /** * One or more values that can be substituted in an expression. * * @param expressionAttributeValues * One or more values that can be substituted in an expression. * * @see QueryRequest#setExpressionAttributeValues(Map) */ public void setExpressionAttributeValues( java.util.Map expressionAttributeValues) { this.expressionAttributeValues = expressionAttributeValues; } /** * One or more values that can be substituted in an expression. * * @param expressionAttributeValues * One or more values that can be substituted in an expression. * * @return A reference to this updated object so that method calls can be * chained together. * @see QueryRequest#withExpressionAttributeValues(Map) */ public DynamoDBQueryExpression withExpressionAttributeValues( java.util.Map expressionAttributeValues) { setExpressionAttributeValues(expressionAttributeValues); return this; } /** * One or more values that can be substituted in an expression. The method * adds a new key-value pair into ExpressionAttributeValues parameter, and * returns a reference to this object so that method calls can be chained * together. * * @param key * The key of the entry to be added into * ExpressionAttributeValues. * @param value * The corresponding value of the entry to be added into * ExpressionAttributeValues. * * @see QueryRequest#addExpressionAttributeValuesEntry(String, * AttributeValue) */ public DynamoDBQueryExpression addExpressionAttributeValuesEntry( String key, AttributeValue value) { if (null == this.expressionAttributeValues) { this.expressionAttributeValues = new java.util.HashMap(); } if (this.expressionAttributeValues.containsKey(key)) throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided."); this.expressionAttributeValues.put(key, value); return this; } /** * Removes all the entries added into ExpressionAttributeValues. *

* Returns a reference to this object so that method calls can be chained * together. */ public DynamoDBQueryExpression clearExpressionAttributeValuesEntries() { this.expressionAttributeValues = null; return this; } /** * The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index. *

* Constraints:
* Allowed Values: ALL_ATTRIBUTES, ALL_PROJECTED_ATTRIBUTES, SPECIFIC_ATTRIBUTES, COUNT * * @return The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index. * * @see com.amazonaws.services.dynamodbv2.model.Select */ public String getSelect() { return select; } /** * The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index. *

* Constraints:
* Allowed Values: ALL_ATTRIBUTES, ALL_PROJECTED_ATTRIBUTES, SPECIFIC_ATTRIBUTES, COUNT * * @param select The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index. * * @see com.amazonaws.services.dynamodbv2.model.Select */ public void setSelect(String select) { this.select = select; } /** * The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index. *

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

* Constraints:
* Allowed Values: ALL_ATTRIBUTES, ALL_PROJECTED_ATTRIBUTES, SPECIFIC_ATTRIBUTES, COUNT * * @param select The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index. * * @return A reference to this updated object so that method calls can be chained * together. * * @see com.amazonaws.services.dynamodbv2.model.Select */ public DynamoDBQueryExpression withSelect(String select) { this.select = select; return this; } /** * The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index. *

* Constraints:
* Allowed Values: ALL_ATTRIBUTES, ALL_PROJECTED_ATTRIBUTES, SPECIFIC_ATTRIBUTES, COUNT * * @param select The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index. * * @see com.amazonaws.services.dynamodbv2.model.Select */ public void setSelect(Select select) { this.select = select.toString(); } /** * The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index. *

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

* Constraints:
* Allowed Values: ALL_ATTRIBUTES, ALL_PROJECTED_ATTRIBUTES, SPECIFIC_ATTRIBUTES, COUNT * * @param select The attributes to be returned in the result. You can retrieve all item * attributes, specific item attributes, the count of matching items, or * in the case of an index, some or all of the attributes projected into * the index. * * @return A reference to this updated object so that method calls can be chained * together. * * @see com.amazonaws.services.dynamodbv2.model.Select */ public DynamoDBQueryExpression withSelect(Select select) { this.select = select.toString(); return this; } /** * A string that identifies one or more attributes to retrieve from the * table. These attributes can include scalars, sets, or elements of a * JSON document. The attributes in the expression must be separated by * commas.

If no attribute names are specified, then all attributes * will be returned. If any of the requested attributes are not found, * they will not appear in the result.

For more information, go to Accessing * Item Attributes in the Amazon DynamoDB Developer Guide. * * @return A string that identifies one or more attributes to retrieve from the * table. These attributes can include scalars, sets, or elements of a * JSON document. The attributes in the expression must be separated by * commas.

If no attribute names are specified, then all attributes * will be returned. If any of the requested attributes are not found, * they will not appear in the result.

For more information, go to Accessing * Item Attributes in the Amazon DynamoDB Developer Guide. */ public String getProjectionExpression() { return projectionExpression; } /** * A string that identifies one or more attributes to retrieve from the * table. These attributes can include scalars, sets, or elements of a * JSON document. The attributes in the expression must be separated by * commas.

If no attribute names are specified, then all attributes * will be returned. If any of the requested attributes are not found, * they will not appear in the result.

For more information, go to Accessing * Item Attributes in the Amazon DynamoDB Developer Guide. * * @param projectionExpression A string that identifies one or more attributes to retrieve from the * table. These attributes can include scalars, sets, or elements of a * JSON document. The attributes in the expression must be separated by * commas.

If no attribute names are specified, then all attributes * will be returned. If any of the requested attributes are not found, * they will not appear in the result.

For more information, go to Accessing * Item Attributes in the Amazon DynamoDB Developer Guide. */ public void setProjectionExpression(String projectionExpression) { this.projectionExpression = projectionExpression; } /** * A string that identifies one or more attributes to retrieve from the * table. These attributes can include scalars, sets, or elements of a * JSON document. The attributes in the expression must be separated by * commas.

If no attribute names are specified, then all attributes * will be returned. If any of the requested attributes are not found, * they will not appear in the result.

For more information, go to Accessing * Item Attributes in the Amazon DynamoDB Developer Guide. *

* Returns a reference to this object so that method calls can be chained together. * * @param projectionExpression A string that identifies one or more attributes to retrieve from the * table. These attributes can include scalars, sets, or elements of a * JSON document. The attributes in the expression must be separated by * commas.

If no attribute names are specified, then all attributes * will be returned. If any of the requested attributes are not found, * they will not appear in the result.

For more information, go to Accessing * Item Attributes in the Amazon DynamoDB Developer Guide. * * @return A reference to this updated object so that method calls can be chained * together. */ public DynamoDBQueryExpression withProjectionExpression(String projectionExpression) { this.projectionExpression = projectionExpression; return this; } /** * A value that 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 *

* If enabled, the underlying request to DynamoDB will include the * configured parameter value and the low-level response from DynamoDB will * include the amount of capacity consumed by the query. Currently, the * consumed capacity is only exposed through the DynamoDBMapper when you * call {@code DynamoDBMapper.queryPage}, not {@code DynamoDBMapper.query}. * * @return A value that 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 com.amazonaws.services.dynamodbv2.model.ReturnConsumedCapacity */ public String getReturnConsumedCapacity() { return returnConsumedCapacity; } /** * A value that 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 *

* If enabled, the underlying request to DynamoDB will include the * configured parameter value and the low-level response from DynamoDB will * include the amount of capacity consumed by the query. Currently, the * consumed capacity is only exposed through the DynamoDBMapper when you * call {@code DynamoDBMapper.queryPage}, not {@code DynamoDBMapper.query}. * * @param returnConsumedCapacity A value that 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 com.amazonaws.services.dynamodbv2.model.ReturnConsumedCapacity */ public void setReturnConsumedCapacity(String returnConsumedCapacity) { this.returnConsumedCapacity = returnConsumedCapacity; } /** * A value that 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 *

* If enabled, the underlying request to DynamoDB will include the * configured parameter value and the low-level response from DynamoDB will * include the amount of capacity consumed by the query. Currently, the * consumed capacity is only exposed through the DynamoDBMapper when you * call {@code DynamoDBMapper.queryPage}, not {@code DynamoDBMapper.query}. * * @param returnConsumedCapacity A value that 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 com.amazonaws.services.dynamodbv2.model.ReturnConsumedCapacity */ public DynamoDBQueryExpression withReturnConsumedCapacity(String returnConsumedCapacity) { this.returnConsumedCapacity = returnConsumedCapacity; return this; } /** * A value that 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 *

* If enabled, the underlying request to DynamoDB will include the * configured parameter value and the low-level response from DynamoDB will * include the amount of capacity consumed by the query. Currently, the * consumed capacity is only exposed through the DynamoDBMapper when you * call {@code DynamoDBMapper.queryPage}, not {@code DynamoDBMapper.query}. * * @param returnConsumedCapacity A value that 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 com.amazonaws.services.dynamodbv2.model.ReturnConsumedCapacity */ public void setReturnConsumedCapacity(ReturnConsumedCapacity returnConsumedCapacity) { this.returnConsumedCapacity = returnConsumedCapacity.toString(); } /** * A value that 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 *

* If enabled, the underlying request to DynamoDB will include the * configured parameter value and the low-level response from DynamoDB will * include the amount of capacity consumed by the query. Currently, the * consumed capacity is only exposed through the DynamoDBMapper when you * call {@code DynamoDBMapper.queryPage}, not {@code DynamoDBMapper.query}. * * @param returnConsumedCapacity A value that 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 com.amazonaws.services.dynamodbv2.model.ReturnConsumedCapacity */ public DynamoDBQueryExpression withReturnConsumedCapacity(ReturnConsumedCapacity returnConsumedCapacity) { this.returnConsumedCapacity = returnConsumedCapacity.toString(); return this; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy