Example usage for com.amazonaws.services.dynamodbv2.model QueryResult getItems

List of usage examples for com.amazonaws.services.dynamodbv2.model QueryResult getItems

Introduction

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

Prototype


public java.util.List<java.util.Map<String, AttributeValue>> getItems() 

Source Link

Document

An array of item attributes that match the query criteria.

Usage

From source file:awslabs.lab22.Lab22.java

License:Open Source License

/**
 * Controls the flow of the lab code execution.
 *//*from   w  w  w.j a va 2 s  . co  m*/
public static void main(String[] args) {
    try {
        // Create DynamoDB client and set the region to US East (Virginia)
        AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(
                new ClasspathPropertiesFileCredentialsProvider());
        ddbClient.setRegion(region);

        List<Account> accounts = new ArrayList<Account>();
        accounts.add(new Account().withCompany("Amazon.com").withEmail("johndoe@amazon.com").withFirst("John")
                .withLast("Doe").withAge("33"));
        accounts.add(new Account().withCompany("Asperatus Tech").withEmail("janedoe@amazon.com")
                .withFirst("Jane").withLast("Doe").withAge("24"));
        accounts.add(new Account().withCompany("Amazon.com").withEmail("jimjohnson@amazon.com").withFirst("Jim")
                .withLast("Johnson"));

        // Verify that the table schema is as we expect, and correct any
        // problems we find.
        if (!confirmTableSchema(ddbClient, tableName)) {
            System.out.print("Deleting. ");
            optionalLabCode.deleteTable(ddbClient, tableName);
            System.out.print("Rebuilding. ");
            optionalLabCode.buildTable(ddbClient, tableName);
            System.out.println("Done.");
        }

        System.out.println("Adding items to table.");
        // Create the accounts
        for (Account account : accounts) {
            labCode.createAccountItem(ddbClient, tableName, account);
            System.out.println("Added item: " + account.getCompany() + "/" + account.getEmail());
        }

        System.out.println("Requesting matches for Company == Amazon.com");
        QueryResult queryResult = labCode.lookupByHashKey(ddbClient, tableName, "Amazon.com");
        if (queryResult != null && queryResult.getCount() > 0) {
            // Record was found
            for (Map<String, AttributeValue> item : queryResult.getItems()) {
                System.out.println("Item Found-");

                for (Entry<String, AttributeValue> attribute : item.entrySet()) {
                    System.out.print("    " + attribute.getKey() + ":");
                    if (attribute.getKey().equals("Age")) {
                        System.out.println(attribute.getValue().getN());
                    } else {
                        System.out.println(attribute.getValue().getS());
                    }
                }
            }
        } else {
            System.out.println("No matches found.");
        }

        // Conditionally update a record
        System.out.print("Attempting update. ");
        labCode.updateIfMatch(ddbClient, tableName, "jimjohnson@amazon.com", "Amazon.com", "James", "Jim");
        System.out.println("Done.");
    } catch (Exception ex) {
        LabUtility.dumpError(ex);
    }
}

From source file:ch.qos.logback.more.appenders.DynamoDBLogbackAppender.java

License:Apache License

private static long getLastId(String tableName, String instanceName, AmazonDynamoDBClient dynamoClient) {
    QueryRequest queryRequest = new QueryRequest().withTableName(tableName)
            .withKeyConditionExpression("instance = :pk")
            .addExpressionAttributeValuesEntry(":pk", new AttributeValue().withS(instanceName))
            .withScanIndexForward(false).withLimit(1);
    QueryResult result = dynamoClient.query(queryRequest);
    List<Map<String, AttributeValue>> items = result.getItems();
    if (items == null || items.size() == 0) {
        return 0L;
    } else {// www .  ja v a 2 s .  c o  m
        return Long.valueOf(items.get(0).get("id").getN());
    }
}

From source file:com.amazon.janusgraph.diskstorage.dynamodb.DynamoDbStore.java

License:Open Source License

@Override
public Map<StaticBuffer, EntryList> getSlice(final List<StaticBuffer> keys, final SliceQuery query,
        final StoreTransaction txh) throws BackendException {
    log.debug("Entering getSliceMultiSliceQuery table:{} keys:{} query:{} txh:{}", getTableName(),
            encodeForLog(keys), encodeForLog(query), txh);

    final Map<StaticBuffer, EntryList> resultMap = Maps.newHashMapWithExpectedSize(keys.size());

    final List<QueryWorker> queryWorkers = Lists.newLinkedList();
    for (StaticBuffer hashKey : keys) {
        final QueryWorker queryWorker = buildQueryWorker(hashKey, query);
        queryWorkers.add(queryWorker);//from w  w  w .  j av  a2 s  .co m

        resultMap.put(hashKey, EntryList.EMPTY_LIST);
    }

    final List<QueryResultWrapper> results = client.getDelegate().parallelQuery(queryWorkers);
    for (QueryResultWrapper resultWrapper : results) {
        final StaticBuffer titanKey = resultWrapper.getTitanKey();

        final QueryResult dynamoDBResult = resultWrapper.getDynamoDBResult();
        final EntryList entryList = createEntryListFromItems(dynamoDBResult.getItems(), query);
        resultMap.put(titanKey, entryList);
    }

    log.debug("Exiting getSliceMultiSliceQuery table:{} keys:{} query:{} txh:{} returning:{}", getTableName(),
            encodeForLog(keys), encodeForLog(query), txh, resultMap.size());
    return resultMap;
}

From source file:com.amazon.janusgraph.diskstorage.dynamodb.iterator.MultiRecordIterator.java

License:Open Source License

private StaticRecordIterator buildRecordIteratorFromQueryResult(final QueryResult queryResult) {
    final List<Entry> entries = Lists.newLinkedList();
    for (Map<String, AttributeValue> item : queryResult.getItems()) {
        // DynamoDB's between includes the end of the range, but Titan's slice queries expect the end key to be exclusive
        final Entry entry = new EntryBuilder(item)
                .slice(rangeKeySliceQuery.getSliceStart(), rangeKeySliceQuery.getSliceEnd()).build();
        if (entry != null) {
            entries.add(entry);/*from   www  .ja  va  2 s.c om*/
        }
    }
    return new StaticRecordIterator(entries);
}

From source file:com.amazon.janusgraph.diskstorage.dynamodb.QueryWorker.java

License:Open Source License

@Override
public QueryResultWrapper next() throws BackendException {
    final Query backoff = new ExponentialBackoff.Query(request, delegate, permitsToConsume);
    final QueryResult result = backoff.runWithBackoff();
    final ConsumedCapacity consumedCapacity = result.getConsumedCapacity();
    if (null != consumedCapacity) {
        permitsToConsume = Math.max((int) (consumedCapacity.getCapacityUnits() - 1.0), 1);
        totalCapacityUnits += consumedCapacity.getCapacityUnits();
    }//from  ww w.ja va  2 s .  c  o m

    if (result.getLastEvaluatedKey() != null && !result.getLastEvaluatedKey().isEmpty()) {
        request.setExclusiveStartKey(result.getLastEvaluatedKey());
    } else {
        markComplete();
    }
    // a update returned count
    returnedCount += result.getCount();

    // b update scanned count
    scannedCount += result.getScannedCount();
    // c add scanned finalItemList
    finalItemList.addAll(result.getItems());
    return new QueryResultWrapper(titanKey, result);
}

From source file:com.clicktravel.infrastructure.persistence.aws.dynamodb.DynamoDbTemplate.java

License:Apache License

private <T extends Item> Collection<T> executeQuery(final AttributeQuery query, final Class<T> itemClass) {
    final ItemConfiguration itemConfiguration = getItemConfiguration(itemClass);
    final com.amazonaws.services.dynamodbv2.model.Condition condition = new com.amazonaws.services.dynamodbv2.model.Condition();

    if (query.getCondition().getComparisonOperator() == Operators.NULL) {
        condition.setComparisonOperator(ComparisonOperator.NULL);
    } else if (query.getCondition().getComparisonOperator() == Operators.NOT_NULL) {
        condition.setComparisonOperator(ComparisonOperator.NOT_NULL);
    } else {//  ww w. java 2  s.com
        if (query.getCondition().getComparisonOperator() == Operators.EQUALS) {
            condition.setComparisonOperator(ComparisonOperator.EQ);
        } else if (query.getCondition().getComparisonOperator() == Operators.LESS_THAN_OR_EQUALS) {
            condition.setComparisonOperator(ComparisonOperator.LE);
        } else if (query.getCondition().getComparisonOperator() == Operators.GREATER_THAN_OR_EQUALS) {
            condition.setComparisonOperator(ComparisonOperator.GE);
        }

        final Collection<AttributeValue> attributeValueList = new ArrayList<>();

        for (final String value : query.getCondition().getValues()) {
            if (value != null && !value.isEmpty()) {
                attributeValueList.add(new AttributeValue(value));
            }
        }

        if (attributeValueList.size() == 0) {
            return new ArrayList<>();
        }

        condition.setAttributeValueList(attributeValueList);
    }

    final Map<String, com.amazonaws.services.dynamodbv2.model.Condition> conditions = new HashMap<>();
    conditions.put(query.getAttributeName(), condition);
    final List<T> totalItems = new ArrayList<>();
    Map<String, AttributeValue> lastEvaluatedKey = null;
    final String tableName = databaseSchemaHolder.schemaName() + "." + itemConfiguration.tableName();
    if (itemConfiguration.hasIndexOn(query.getAttributeName())) {
        do {
            final String queryAttributeName = query.getAttributeName();
            final PrimaryKeyDefinition primaryKeyDefinition = itemConfiguration.primaryKeyDefinition();
            final String primaryKeyPropertyName = primaryKeyDefinition.propertyName();
            final boolean isPrimaryKeyQuery = queryAttributeName.equals(primaryKeyPropertyName);
            final QueryRequest queryRequest = new QueryRequest().withTableName(tableName)
                    .withKeyConditions(conditions).withExclusiveStartKey(lastEvaluatedKey);
            if (!isPrimaryKeyQuery) {
                queryRequest.withIndexName(queryAttributeName + "_idx");
            }

            final QueryResult queryResult;
            try {
                queryResult = amazonDynamoDbClient.query(queryRequest);
            } catch (final AmazonServiceException e) {
                throw new PersistenceResourceFailureException("Failure while attempting DynamoDb Query", e);
            }
            totalItems.addAll(marshallIntoObjects(itemClass, queryResult.getItems()));
            lastEvaluatedKey = queryResult.getLastEvaluatedKey();
        } while (lastEvaluatedKey != null);

    } else {
        logger.debug("Performing table scan with query: " + query);
        do {
            final ScanRequest scanRequest = new ScanRequest().withTableName(tableName)
                    .withScanFilter(conditions).withExclusiveStartKey(lastEvaluatedKey);
            final ScanResult scanResult;
            try {
                scanResult = amazonDynamoDbClient.scan(scanRequest);
            } catch (final AmazonServiceException e) {
                throw new PersistenceResourceFailureException("Failure while attempting DynamoDb Scan", e);
            }
            totalItems.addAll(marshallIntoObjects(itemClass, scanResult.getItems()));
            lastEvaluatedKey = scanResult.getLastEvaluatedKey();
        } while (lastEvaluatedKey != null);
    }

    return totalItems;
}

From source file:com.dell.doradus.db.s3.DynamoDBService2.java

License:Apache License

@Override
public List<DColumn> getColumns(String storeName, String rowKey, String startColumn, String endColumn,
        int count) {
    Timer t = new Timer();
    String key = storeName + "_" + rowKey;
    HashMap<String, Condition> keyConditions = new HashMap<String, Condition>();
    keyConditions.put("key", new Condition().withComparisonOperator(ComparisonOperator.EQ)
            .withAttributeValueList(new AttributeValue().withS(key)));
    if (startColumn != null && endColumn != null) {
        keyConditions.put("column",
                new Condition().withComparisonOperator(ComparisonOperator.BETWEEN).withAttributeValueList(
                        new AttributeValue().withS(startColumn), new AttributeValue(endColumn)));
    } else if (startColumn != null) {
        keyConditions.put("column", new Condition().withComparisonOperator(ComparisonOperator.GE)
                .withAttributeValueList(new AttributeValue().withS(startColumn)));
    } else if (endColumn != null) {
        keyConditions.put("column", new Condition().withComparisonOperator(ComparisonOperator.LT)
                .withAttributeValueList(new AttributeValue().withS(endColumn)));
    }//  www.  j a  v  a  2 s  . co  m

    QueryRequest request = new QueryRequest().withTableName(getTenant().getName())
            .withLimit(Math.min(100, count)).withKeyConditions(keyConditions);
    QueryResult result = m_client.query(request);
    List<DColumn> list = fromItems(result.getItems());
    m_logger.debug("get columns range for {} in {}", getTenant().getName(), t);
    return list;
}

From source file:com.facebook.presto.dynamodb.DynamodbClient.java

License:Apache License

public Iterator<List<Map<String, AttributeValue>>> getTableData(String name,
        Optional<Entry<String, AttributeValue>> hashKeyCondition,
        Optional<Entry<String, Condition>> rangeKeyCondition) {
    AtomicReference<Map<String, AttributeValue>> lastKeyEvaluated = new AtomicReference<>();
    AtomicBoolean firstRun = new AtomicBoolean(true);

    return new Iterator<List<Map<String, AttributeValue>>>() {
        @Override/*from   w  w w .  j a v  a 2 s.  co  m*/
        public boolean hasNext() {
            return firstRun.get() && lastKeyEvaluated.get() != null;
        }

        @Override
        public List<Map<String, AttributeValue>> next() {
            firstRun.set(false);
            if (hashKeyCondition.isPresent()) {
                ImmutableMap.Builder<String, Condition> builder = ImmutableMap.builder();
                builder.put(hashKeyCondition.get().getKey(), new Condition()
                        .withAttributeValueList(hashKeyCondition.get().getValue()).withComparisonOperator(EQ));

                if (rangeKeyCondition.isPresent()) {
                    Entry<String, Condition> rangeEntry = rangeKeyCondition.get();
                    if (rangeEntry.getValue().getComparisonOperator() == EQ.name()
                            && rangeEntry.getValue().getAttributeValueList().size() == 1) {
                        GetItemResult item = dynamoDBClient.getItem(name,
                                ImmutableMap.of(hashKeyCondition.get().getKey(),
                                        hashKeyCondition.get().getValue(), rangeEntry.getKey(),
                                        rangeEntry.getValue().getAttributeValueList().get(0)));
                        return ImmutableList.of(item.getItem());
                    } else {
                        builder.put(rangeKeyCondition.get().getKey(), rangeKeyCondition.get().getValue());
                    }
                }

                QueryResult query = dynamoDBClient.query(
                        new QueryRequest().withTableName(name).withExclusiveStartKey(lastKeyEvaluated.get())
                                .withKeyConditions(builder.build()).withLimit(100000));

                lastKeyEvaluated.set(query.getLastEvaluatedKey());

                return query.getItems();
            } else {
                ScanResult scan = dynamoDBClient.scan(new ScanRequest()
                        .withExclusiveStartKey(lastKeyEvaluated.get()).withLimit(100000).withTableName(name));

                lastKeyEvaluated.set(scan.getLastEvaluatedKey());
                return scan.getItems();
            }
        }
    };
}

From source file:com.makariev.dynamodb.preferences.UserPreferenceLowLevelAPIService.java

License:Open Source License

@Override
public List<UserPreference> queryByFirstName(String firstName, String lastName) {
    QueryRequest queryRequest = new QueryRequest().withTableName(UserPreference.TABLE_NAME)
            .withIndexName(UserPreference.NAME_INDEX).withSelect("ALL_ATTRIBUTES").withScanIndexForward(true);

    final HashMap<String, Condition> keyConditions = new HashMap<>();

    //ComparisonOperator.CONTAINS) cannot be used with indexes ( no query, only scan ) 
    keyConditions.put("firstName", new Condition().withComparisonOperator(ComparisonOperator.EQ)
            .withAttributeValueList(new AttributeValue().withS(firstName)));

    keyConditions.put("lastName", new Condition().withComparisonOperator(ComparisonOperator.EQ)
            .withAttributeValueList(new AttributeValue().withS(lastName)));

    queryRequest.setKeyConditions(keyConditions);

    QueryResult result = dynamoDb.query(queryRequest);
    List<Map<String, AttributeValue>> items = result.getItems();

    return toUserPreferenceList(items);
}

From source file:com.makariev.dynamodb.preferences.UserPreferenceObjectMapperService.java

License:Open Source License

private List<UserPreference> queryByFirstAndLastNameMixedLevel(String firstName, String lastName) {

    QueryRequest queryRequest = new QueryRequest().withTableName(UserPreference.TABLE_NAME)
            .withIndexName(UserPreference.NAME_INDEX).withSelect("ALL_ATTRIBUTES").withScanIndexForward(true);

    final HashMap<String, Condition> keyConditions = new HashMap<>();

    //ComparisonOperator.CONTAINS) cannot be used with indexes ( no query, only scan ) 
    keyConditions.put("firstName", new Condition().withComparisonOperator(ComparisonOperator.EQ)
            .withAttributeValueList(new AttributeValue().withS(firstName)));

    keyConditions.put("lastName", new Condition().withComparisonOperator(ComparisonOperator.EQ)
            .withAttributeValueList(new AttributeValue().withS(lastName)));

    queryRequest.setKeyConditions(keyConditions);

    final QueryResult result = dynamoDb.query(queryRequest);
    final List<Map<String, AttributeValue>> items = result.getItems();

    final List<UserPreference> list = mapper.marshallIntoObjects(UserPreference.class, items);

    return list;/*from  www  .  j  av  a 2  s .  co  m*/
}