Search in sources :

Example 16 with Item

use of com.amazonaws.services.dynamodbv2.document.Item in project jcabi-dynamo by jcabi.

the class AwsTable method delete.

@Override
public void delete(final Map<String, AttributeValue> attributes) throws IOException {
    final AmazonDynamoDB aws = this.credentials.aws();
    try {
        final DeleteItemRequest request = new DeleteItemRequest();
        request.setTableName(this.self);
        request.setKey(attributes);
        request.setReturnValues(ReturnValue.NONE);
        request.setReturnConsumedCapacity(ReturnConsumedCapacity.TOTAL);
        final DeleteItemResult result = aws.deleteItem(request);
        final long start = System.currentTimeMillis();
        Logger.info(this, "#delete('%[text]s'): deleted item in '%s', %s, in %[ms]s", attributes, this.self, new PrintableConsumedCapacity(result.getConsumedCapacity()).print(), System.currentTimeMillis() - start);
    } catch (final AmazonClientException ex) {
        throw new IOException(String.format("Failed to delete at \"%s\" by keys %s", this.self, attributes), ex);
    } finally {
        aws.shutdown();
    }
}
Also used : DeleteItemRequest(com.amazonaws.services.dynamodbv2.model.DeleteItemRequest) AmazonClientException(com.amazonaws.AmazonClientException) AmazonDynamoDB(com.amazonaws.services.dynamodbv2.AmazonDynamoDB) DeleteItemResult(com.amazonaws.services.dynamodbv2.model.DeleteItemResult) IOException(java.io.IOException)

Example 17 with Item

use of com.amazonaws.services.dynamodbv2.document.Item in project jcabi-dynamo by jcabi.

the class QueryValve method fetch.

// @checkstyle ParameterNumber (5 lines)
@Override
public Dosage fetch(final Credentials credentials, final String table, final Map<String, Condition> conditions, final Collection<String> keys) throws IOException {
    final AmazonDynamoDB aws = credentials.aws();
    try {
        final Collection<String> attrs = new HashSet<String>(Arrays.asList(this.attributes));
        attrs.addAll(keys);
        QueryRequest request = new QueryRequest().withTableName(table).withReturnConsumedCapacity(ReturnConsumedCapacity.TOTAL).withKeyConditions(conditions).withConsistentRead(this.consistent).withScanIndexForward(this.forward).withSelect(this.select).withLimit(this.limit);
        if (this.select.equals(Select.SPECIFIC_ATTRIBUTES.toString())) {
            request = request.withAttributesToGet(attrs);
        }
        if (!this.index.isEmpty()) {
            request = request.withIndexName(this.index);
        }
        final long start = System.currentTimeMillis();
        final QueryResult result = aws.query(request);
        Logger.info(this, // @checkstyle LineLength (1 line)
        "#items(): loaded %d item(s) from '%s' and stopped at %s, using %s, %s, in %[ms]s", result.getCount(), table, result.getLastEvaluatedKey(), conditions, new PrintableConsumedCapacity(result.getConsumedCapacity()).print(), System.currentTimeMillis() - start);
        return new QueryValve.NextDosage(credentials, request, result);
    } catch (final AmazonClientException ex) {
        throw new IOException(String.format("Failed to fetch from \"%s\" by %s and %s", table, conditions, keys), ex);
    } finally {
        aws.shutdown();
    }
}
Also used : QueryResult(com.amazonaws.services.dynamodbv2.model.QueryResult) QueryRequest(com.amazonaws.services.dynamodbv2.model.QueryRequest) AmazonClientException(com.amazonaws.AmazonClientException) AmazonDynamoDB(com.amazonaws.services.dynamodbv2.AmazonDynamoDB) ToString(lombok.ToString) IOException(java.io.IOException) HashSet(java.util.HashSet)

Example 18 with Item

use of com.amazonaws.services.dynamodbv2.document.Item in project jcabi-dynamo by jcabi.

the class ScanValveTest method fetchesData.

/**
 * ScanValve can fetch data from AWS.
 * @throws Exception If some problem inside
 */
@Test
@SuppressWarnings("unchecked")
public void fetchesData() throws Exception {
    final Valve valve = new ScanValve();
    final Credentials credentials = Mockito.mock(Credentials.class);
    final ImmutableMap<String, AttributeValue> item = new ImmutableMap.Builder<String, AttributeValue>().build();
    final AmazonDynamoDB aws = Mockito.mock(AmazonDynamoDB.class);
    Mockito.doReturn(aws).when(credentials).aws();
    Mockito.doReturn(new ScanResult().withItems(Collections.<Map<String, AttributeValue>>singletonList(item)).withConsumedCapacity(new ConsumedCapacity().withCapacityUnits(1d))).when(aws).scan(Mockito.any(ScanRequest.class));
    final Dosage dosage = valve.fetch(credentials, "table", new Conditions(), new ArrayList<String>(0));
    MatcherAssert.assertThat(dosage.hasNext(), Matchers.is(false));
    MatcherAssert.assertThat(dosage.items(), Matchers.hasItem(item));
}
Also used : AttributeValue(com.amazonaws.services.dynamodbv2.model.AttributeValue) ScanResult(com.amazonaws.services.dynamodbv2.model.ScanResult) AmazonDynamoDB(com.amazonaws.services.dynamodbv2.AmazonDynamoDB) ImmutableMap(com.google.common.collect.ImmutableMap) ConsumedCapacity(com.amazonaws.services.dynamodbv2.model.ConsumedCapacity) ScanRequest(com.amazonaws.services.dynamodbv2.model.ScanRequest) Test(org.junit.Test)

Example 19 with Item

use of com.amazonaws.services.dynamodbv2.document.Item in project jcabi-dynamo by jcabi.

the class MkRegionTest method storesAndReadsAttributes.

/**
 * MkRegion can store and read items.
 * @throws Exception If some problem inside
 */
@Test
public void storesAndReadsAttributes() throws Exception {
    final String name = "users";
    final String key = "id";
    final String attr = "description";
    final String nattr = "thenumber";
    final Region region = new MkRegion(new H2Data().with(name, new String[] { key }, attr, nattr));
    final Table table = region.table(name);
    table.put(new Attributes().with(key, "32443").with(attr, "first value to \n\t€ save").with(nattr, "150"));
    final Item item = table.frame().iterator().next();
    MatcherAssert.assertThat(item.has(attr), Matchers.is(true));
    MatcherAssert.assertThat(item.get(attr).getS(), Matchers.containsString("\n\t\u20ac save"));
    item.put(attr, new AttributeValueUpdate().withValue(new AttributeValue("this is another value")));
    MatcherAssert.assertThat(item.get(attr).getS(), Matchers.containsString("another value"));
    MatcherAssert.assertThat(item.get(nattr).getN(), Matchers.endsWith("50"));
}
Also used : Item(com.jcabi.dynamo.Item) AttributeValue(com.amazonaws.services.dynamodbv2.model.AttributeValue) Table(com.jcabi.dynamo.Table) AttributeValueUpdate(com.amazonaws.services.dynamodbv2.model.AttributeValueUpdate) Attributes(com.jcabi.dynamo.Attributes) Region(com.jcabi.dynamo.Region) Test(org.junit.Test)

Example 20 with Item

use of com.amazonaws.services.dynamodbv2.document.Item in project jcabi-dynamo by jcabi.

the class QueryValveTest method fetchesData.

/**
 * QueryValve can fetch data from AWS.
 * @throws Exception If some problem inside
 */
@Test
@SuppressWarnings("unchecked")
public void fetchesData() throws Exception {
    final Valve valve = new QueryValve();
    final Credentials credentials = Mockito.mock(Credentials.class);
    final ImmutableMap<String, AttributeValue> item = new ImmutableMap.Builder<String, AttributeValue>().build();
    final AmazonDynamoDB aws = Mockito.mock(AmazonDynamoDB.class);
    Mockito.doReturn(aws).when(credentials).aws();
    Mockito.doReturn(new QueryResult().withItems(Collections.<Map<String, AttributeValue>>singletonList(item)).withConsumedCapacity(new ConsumedCapacity().withCapacityUnits(1.0d))).when(aws).query(Mockito.any(QueryRequest.class));
    final Dosage dosage = valve.fetch(credentials, "table", new Conditions(), new ArrayList<String>(0));
    MatcherAssert.assertThat(dosage.hasNext(), Matchers.is(false));
    MatcherAssert.assertThat(dosage.items(), Matchers.hasItem(item));
}
Also used : AttributeValue(com.amazonaws.services.dynamodbv2.model.AttributeValue) QueryRequest(com.amazonaws.services.dynamodbv2.model.QueryRequest) AmazonDynamoDB(com.amazonaws.services.dynamodbv2.AmazonDynamoDB) ImmutableMap(com.google.common.collect.ImmutableMap) ConsumedCapacity(com.amazonaws.services.dynamodbv2.model.ConsumedCapacity) QueryResult(com.amazonaws.services.dynamodbv2.model.QueryResult) Test(org.junit.Test)

Aggregations

AttributeValue (com.amazonaws.services.dynamodbv2.model.AttributeValue)20 AmazonDynamoDB (com.amazonaws.services.dynamodbv2.AmazonDynamoDB)17 AmazonClientException (com.amazonaws.AmazonClientException)13 AmazonServiceException (com.amazonaws.AmazonServiceException)13 HashMap (java.util.HashMap)13 Test (org.junit.Test)12 Item (com.amazonaws.services.dynamodbv2.document.Item)11 IOException (java.io.IOException)7 ArrayList (java.util.ArrayList)6 DynamoDB (com.amazonaws.services.dynamodbv2.document.DynamoDB)5 Expected (com.amazonaws.services.dynamodbv2.document.Expected)5 AttributeValueUpdate (com.amazonaws.services.dynamodbv2.model.AttributeValueUpdate)5 DeleteItemSpec (com.amazonaws.services.dynamodbv2.document.spec.DeleteItemSpec)4 ConsumedCapacity (com.amazonaws.services.dynamodbv2.model.ConsumedCapacity)4 ScanRequest (com.amazonaws.services.dynamodbv2.model.ScanRequest)4 ScanResult (com.amazonaws.services.dynamodbv2.model.ScanResult)4 List (java.util.List)4 ToString (lombok.ToString)4 DynamoDBMapper (com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper)3 BatchGetItemOutcome (com.amazonaws.services.dynamodbv2.document.BatchGetItemOutcome)3