List of usage examples for com.amazonaws.services.dynamodbv2.model QueryResult getItems
public java.util.List<java.util.Map<String, AttributeValue>> getItems()
An array of item attributes that match the query criteria.
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*/ }