Example usage for com.amazonaws.services.dynamodbv2.model ScanRequest setExpressionAttributeNames

List of usage examples for com.amazonaws.services.dynamodbv2.model ScanRequest setExpressionAttributeNames

Introduction

In this page you can find the example usage for com.amazonaws.services.dynamodbv2.model ScanRequest setExpressionAttributeNames.

Prototype


public void setExpressionAttributeNames(java.util.Map<String, String> expressionAttributeNames) 

Source Link

Document

One or more substitution tokens for attribute names in an expression.

Usage

From source file:org.iternine.jeppetto.dao.dynamodb.DynamoDBQueryModelDAO.java

License:Apache License

private Iterable<T> scanItems(QueryModel queryModel, ConditionExpressionBuilder conditionExpressionBuilder) {
    ScanRequest scanRequest = new ScanRequest(tableName);

    if (queryModel.getFirstResult() > 0) {
        logger.warn(/*from w  ww.  j a v  a 2  s .  c o  m*/
                "DynamoDB does not support skipping results.  Call setPosition() on DynamoDBIterable instead.");
    }

    if (queryModel.getMaxResults() > 0) {
        scanRequest.setLimit(queryModel.getMaxResults());
    }

    if (queryModel.getSorts() != null) {
        logger.warn("Not able to sort when performing a 'scan' operation.  Ignoring... ");
    }

    Map<String, String> expressionAttributeNames;

    scanRequest.setProjectionExpression(projectionExpression);

    if (conditionExpressionBuilder.hasExpression()) {
        scanRequest.setFilterExpression(conditionExpressionBuilder.getExpression());

        if (!conditionExpressionBuilder.getExpressionAttributeValues().isEmpty()) {
            scanRequest.setExpressionAttributeValues(conditionExpressionBuilder.getExpressionAttributeValues());
        }

        if (projectionExpressionNames.isEmpty()) {
            expressionAttributeNames = conditionExpressionBuilder.getExpressionAttributeNames();
        } else if (conditionExpressionBuilder.getExpressionAttributeNames().isEmpty()) {
            expressionAttributeNames = projectionExpressionNames;
        } else {
            expressionAttributeNames = new LinkedHashMap<String, String>();
            expressionAttributeNames.putAll(conditionExpressionBuilder.getExpressionAttributeNames());
            expressionAttributeNames.putAll(projectionExpressionNames);
        }
    } else {
        expressionAttributeNames = projectionExpressionNames;
    }

    if (!expressionAttributeNames.isEmpty()) {
        scanRequest.setExpressionAttributeNames(expressionAttributeNames);
    }

    return new ScanIterable<T>(dynamoDB, persistableEnhancer, scanRequest,
            rangeKeyField == null ? Collections.singleton(hashKeyField)
                    : Arrays.asList(hashKeyField, rangeKeyField));
}