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

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

/*
 * Copyright 2011-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.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;

/**
 * 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;

    /**
     * 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 limit of items to return from this query.
     */
    public Integer getLimit() {
        return limit;
    }

    /**
     * Sets the limit of items to return from this query.
     */
    public void setLimit(Integer limit) {
        this.limit = limit;
    }

    /**
     * Sets the limit of items to return from this query and returns a pointer to this
     * object for method-chaining.
     */
    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.   
     */
    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
     * 			NOTE: The current DynamoDB service only allows up to one range key condition per query.
     * 			Providing more than one range key conditions  will result in an
     * 			AmazonClientException
     */
    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
     * 			NOTE: The current DynamoDB service only allows up to one range key condition per query.
     * 			Providing more than one range key conditions  will result in an
     * 			AmazonClientException
     */
    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 could 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 used by this query. */ public String getIndexName() { return indexName; } /** * Sets the name of the index to be used by this query. All index names must be specified by using * {@link DynamoDBIndexRangeKey} annotation on the getter method of the corresponding index range key * before executing the query. */ public void setIndexName(String indexName) { this.indexName = indexName; } /** * Sets the name of the index to be used by this query. All index names must be specified by using * {@link DynamoDBIndexRangeKey} annotation on the getter method of the corresponding index range key * before executing the query. *

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; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy