Example usage for com.amazonaws.services.dynamodbv2.datamodeling DynamoDBMapper query

List of usage examples for com.amazonaws.services.dynamodbv2.datamodeling DynamoDBMapper query

Introduction

In this page you can find the example usage for com.amazonaws.services.dynamodbv2.datamodeling DynamoDBMapper query.

Prototype

@Override
    public <T> PaginatedQueryList<T> query(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression) 

Source Link

Usage

From source file:com.kirana.dao.OrderDaoImpl.java

@Override
public List<Order> getOrderByShopId(long shopId) throws Exception {
    DynamoDBMapper mapper = new DynamoDBMapper(dbClient);

    Date startTime = new Date(0L);
    SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    dateFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
    String startTimeStr = dateFormatter.format(startTime);

    Condition rangeKeyCondition = new Condition().withComparisonOperator(ComparisonOperator.GT.toString())
            .withAttributeValueList(new AttributeValue().withS(startTimeStr));

    DynamoDBQueryExpression<Order> queryExpression = new DynamoDBQueryExpression<Order>()
            .withHashKeyValues(new Order(shopId)).withRangeKeyCondition("created_at", rangeKeyCondition);
    queryExpression.setConsistentRead(false);

    return mapper.query(Order.class, queryExpression);

}

From source file:com.kirana.dao.OrderDaoImpl.java

@Override
public List<Order> getOrderBetween(long id, String FromDate, String ToDate) throws Exception {

    DynamoDBMapper mapper = new DynamoDBMapper(dbClient);
    Condition rangeKeyCondition = new Condition().withComparisonOperator(ComparisonOperator.BETWEEN.toString())
            .withAttributeValueList(new AttributeValue().withS(FromDate), new AttributeValue().withS(ToDate));
    DynamoDBQueryExpression<Order> queryExpression = new DynamoDBQueryExpression<Order>()
            .withHashKeyValues(new Order(id)).withRangeKeyCondition("created_at", rangeKeyCondition);
    queryExpression.setConsistentRead(false);
    List<Order> latestReplies = mapper.query(Order.class, queryExpression);
    return latestReplies;
}

From source file:com.kirana.dao.OrderDaoImpl.java

@Override
public Order getOrderByCreatedAt(long id, String createdAt) throws Exception {
    DynamoDBMapper mapper = new DynamoDBMapper(dbClient);
    log.info("id : " + id + "  createdat:" + createdAt);

    Condition rangeKeyCondition = new Condition().withComparisonOperator(ComparisonOperator.EQ.toString())
            .withAttributeValueList(new AttributeValue().withS(createdAt));

    DynamoDBQueryExpression<Order> queryExpression = new DynamoDBQueryExpression<Order>()
            .withHashKeyValues(new Order(id)).withRangeKeyCondition("created_at", rangeKeyCondition);
    queryExpression.setConsistentRead(false);

    PaginatedQueryList list = mapper.query(Order.class, queryExpression);
    if (list != null && !list.isEmpty())
        return (Order) list.get(0);
    else/*from w  w  w . jav a  2 s.c  o m*/
        return null;
    //        return mapper.query(Order.class, queryExpression).get(1);

    //        return mapper.load(Order.class,id,createdAt);
}

From source file:org.openhab.persistence.dynamodb.internal.DynamoDBPersistenceService.java

License:Open Source License

/**
 * {@inheritDoc}//  ww  w .  j  ava2 s.c  o  m
 */
@Override
public Iterable<HistoricItem> query(FilterCriteria filter) {
    logger.debug("got a query");
    if (!isProperlyConfigured) {
        logger.warn("Configuration for dynamodb not yet loaded or broken. Not storing item.");
        return Collections.emptyList();
    }
    if (!maybeConnectAndCheckConnection()) {
        logger.warn("DynamoDB not connected. Not storing item.");
        return Collections.emptyList();
    }

    String itemName = filter.getItemName();
    Item item = getItemFromRegistry(itemName);
    if (item == null) {
        logger.warn("Could not get item {} from registry!", itemName);
        return Collections.emptyList();
    }

    Class<? extends DynamoDBItem<?>> dtoClass = AbstractDynamoDBItem.getDynamoItemClass(item.getClass());
    String tableName = tableNameResolver.fromClass(dtoClass);
    DynamoDBMapper mapper = getDBMapper(tableName);
    logger.debug("item {} (class {}) will be tried to query using dto class {} from table {}", itemName,
            item.getClass(), dtoClass, tableName);

    List<HistoricItem> historicItems = new ArrayList<HistoricItem>();

    DynamoDBQueryExpression<DynamoDBItem<?>> queryExpression = createQueryExpression(filter);
    @SuppressWarnings("rawtypes")
    final PaginatedQueryList<? extends DynamoDBItem> paginatedList;
    try {
        paginatedList = mapper.query(dtoClass, queryExpression);
    } catch (AmazonServiceException e) {
        logger.error(
                "DynamoDB query raised unexpected exception: {}. Returning empty collection. "
                        + "Status code 400 (resource not found) might occur if table was just created.",
                e.getMessage());
        return Collections.emptyList();
    }
    for (int itemIndexOnPage = 0; itemIndexOnPage < filter.getPageSize(); itemIndexOnPage++) {
        int itemIndex = filter.getPageNumber() * filter.getPageSize() + itemIndexOnPage;
        DynamoDBItem<?> dynamoItem;
        try {
            dynamoItem = paginatedList.get(itemIndex);
        } catch (IndexOutOfBoundsException e) {
            logger.debug("Index {} is out-of-bounds", itemIndex);
            break;
        }
        if (dynamoItem != null) {
            HistoricItem historicItem = dynamoItem.asHistoricItem(item);
            logger.trace("Dynamo item {} converted to historic item: {}", item, historicItem);
            historicItems.add(historicItem);
        }

    }
    return historicItems;
}