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

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

Introduction

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

Prototype


public ScanRequest withExclusiveStartKey(java.util.Map<String, AttributeValue> exclusiveStartKey) 

Source Link

Document

The primary key of the first item that this operation will evaluate.

Usage

From source file:com.erudika.para.persistence.AWSDynamoDAO.java

License:Apache License

private <P extends ParaObject> String readPageFromTable(String appid, Pager pager, LinkedList<P> results) {
    ScanRequest scanRequest = new ScanRequest().withTableName(getTableNameForAppid(appid))
            .withLimit(pager.getLimit()).withReturnConsumedCapacity(ReturnConsumedCapacity.TOTAL);

    if (!StringUtils.isBlank(pager.getLastKey())) {
        scanRequest = scanRequest.withExclusiveStartKey(
                Collections.singletonMap(Config._KEY, new AttributeValue(pager.getLastKey())));
    }/*from   ww w  .j ava2  s  .  c o  m*/

    ScanResult result = client().scan(scanRequest);
    for (Map<String, AttributeValue> item : result.getItems()) {
        P obj = fromRow(item);
        if (obj != null) {
            results.add(obj);
        }
    }

    if (result.getLastEvaluatedKey() != null) {
        return result.getLastEvaluatedKey().get(Config._KEY).getS();
    } else {
        return null;
    }
}

From source file:com.intuit.tank.persistence.databases.AmazonDynamoDatabaseDocApi.java

License:Open Source License

/**
 * @{inheritDoc//from   w  ww  . j  a v a2 s. c o m
 */
@SuppressWarnings("unchecked")
@Override
public PagedDatabaseResult getPagedItems(String tableName, Object nextToken, String minRange, String maxRange,
        String instanceId, String jobId) {
    List<Item> ret = new ArrayList<Item>();
    Map<String, AttributeValue> lastKeyEvaluated = (Map<String, AttributeValue>) nextToken;
    ScanRequest scanRequest = new ScanRequest().withTableName(tableName);
    Map<String, Condition> conditions = new HashMap<String, Condition>();
    if (jobId != null) {
        Condition jobIdCondition = new Condition();
        jobIdCondition.withComparisonOperator(ComparisonOperator.EQ)
                .withAttributeValueList(new AttributeValue().withS(jobId));

        conditions.put(DatabaseKeys.JOB_ID_KEY.getShortKey(), jobIdCondition);
    }
    if (StringUtils.isNotBlank(instanceId)) {
        // add a filter
        Condition filter = new Condition();
        filter.withComparisonOperator(ComparisonOperator.EQ)
                .withAttributeValueList(new AttributeValue().withS(instanceId));
        scanRequest.addScanFilterEntry(DatabaseKeys.INSTANCE_ID_KEY.getShortKey(), filter);
    }
    Condition rangeKeyCondition = new Condition();
    if (minRange != null && maxRange != null) {
        rangeKeyCondition.withComparisonOperator(ComparisonOperator.BETWEEN.toString())
                .withAttributeValueList(new AttributeValue().withS(minRange))
                .withAttributeValueList(new AttributeValue().withS(maxRange));

    } else if (minRange != null) {
        rangeKeyCondition.withComparisonOperator(ComparisonOperator.GE.toString())
                .withAttributeValueList(new AttributeValue().withS(minRange));
    } else if (maxRange != null) {
        rangeKeyCondition.withComparisonOperator(ComparisonOperator.LT.toString())
                .withAttributeValueList(new AttributeValue().withS(maxRange));
    } else {
        rangeKeyCondition = null;
    }
    if (rangeKeyCondition != null) {
        conditions.put(DatabaseKeys.REQUEST_NAME_KEY.getShortKey(), rangeKeyCondition);
    }
    scanRequest.withScanFilter(conditions);
    scanRequest.withExclusiveStartKey(lastKeyEvaluated);

    ScanResult result = dynamoDb.scan(scanRequest);
    for (Map<String, AttributeValue> item : result.getItems()) {
        ret.add(getItemFromResult(item));
    }
    return new PagedDatabaseResult(ret, result.getLastEvaluatedKey());
}