diff options
Diffstat (limited to 'src/com/p4square/grow/backend')
-rw-r--r-- | src/com/p4square/grow/backend/DynamoGrowData.java | 18 | ||||
-rw-r--r-- | src/com/p4square/grow/backend/dynamo/DbTool.java | 20 | ||||
-rw-r--r-- | src/com/p4square/grow/backend/dynamo/DynamoDatabase.java | 61 |
3 files changed, 50 insertions, 49 deletions
diff --git a/src/com/p4square/grow/backend/DynamoGrowData.java b/src/com/p4square/grow/backend/DynamoGrowData.java index 4123999..3b38eac 100644 --- a/src/com/p4square/grow/backend/DynamoGrowData.java +++ b/src/com/p4square/grow/backend/DynamoGrowData.java @@ -55,23 +55,7 @@ class DynamoGrowData implements GrowData { public DynamoGrowData(final Config config) { mConfig = config; - AWSCredentials creds = new AWSCredentials() { - @Override - public String getAWSAccessKeyId() { - return config.getString("awsAccessKey"); - } - @Override - public String getAWSSecretKey() { - return config.getString("awsSecretKey"); - } - }; - - String endpoint = config.getString("dynamoEndpoint"); - if (endpoint != null) { - mDatabase = new DynamoDatabase(creds, endpoint); - } else { - mDatabase = new DynamoDatabase(creds); - } + mDatabase = new DynamoDatabase(config); mUserRecordProvider = new DelegateProvider<String, DynamoKey, UserRecord>( new DynamoProviderImpl<UserRecord>(mDatabase, UserRecord.class)) { diff --git a/src/com/p4square/grow/backend/dynamo/DbTool.java b/src/com/p4square/grow/backend/dynamo/DbTool.java index c904844..4bccd8b 100644 --- a/src/com/p4square/grow/backend/dynamo/DbTool.java +++ b/src/com/p4square/grow/backend/dynamo/DbTool.java @@ -62,6 +62,8 @@ public class DbTool { mConfig = new Config(); try { + mConfig.updateConfig(DbTool.class.getResourceAsStream("/grow.properties")); + int offset = 0; while (offset < args.length) { if ("--domain".equals(args[offset])) { @@ -126,23 +128,7 @@ public class DbTool { private static DynamoDatabase getDatabase() { if (mDatabase == null) { - AWSCredentials creds = new AWSCredentials() { - @Override - public String getAWSAccessKeyId() { - return mConfig.getString("awsAccessKey"); - } - @Override - public String getAWSSecretKey() { - return mConfig.getString("awsSecretKey"); - } - }; - - String endpoint = mConfig.getString("dynamoEndpoint"); - if (endpoint != null) { - mDatabase = new DynamoDatabase(creds, endpoint); - } else { - mDatabase = new DynamoDatabase(creds); - } + mDatabase = new DynamoDatabase(mConfig); } return mDatabase; diff --git a/src/com/p4square/grow/backend/dynamo/DynamoDatabase.java b/src/com/p4square/grow/backend/dynamo/DynamoDatabase.java index 076844f..0c77c49 100644 --- a/src/com/p4square/grow/backend/dynamo/DynamoDatabase.java +++ b/src/com/p4square/grow/backend/dynamo/DynamoDatabase.java @@ -10,6 +10,9 @@ import java.util.LinkedHashMap; import java.util.Map; import com.amazonaws.auth.AWSCredentials; +import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; +import com.amazonaws.regions.Region; +import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.dynamodbv2.model.AttributeAction; import com.amazonaws.services.dynamodbv2.model.AttributeDefinition; @@ -33,19 +36,47 @@ import com.amazonaws.services.dynamodbv2.model.UpdateItemResult; import com.amazonaws.services.dynamodbv2.model.UpdateTableRequest; import com.amazonaws.services.dynamodbv2.model.UpdateTableResult; +import com.p4square.grow.config.Config; + /** * A wrapper around the Dynamo API. */ public class DynamoDatabase { private final AmazonDynamoDBClient mClient; + private final String mTablePrefix; - public DynamoDatabase(AWSCredentials awsCreds) { - mClient = new AmazonDynamoDBClient(awsCreds); - } + public DynamoDatabase(final Config config) { + AWSCredentials creds; + + String awsAccessKey = config.getString("awsAccessKey"); + if (awsAccessKey != null) { + creds = new AWSCredentials() { + @Override + public String getAWSAccessKeyId() { + return config.getString("awsAccessKey"); + } + @Override + public String getAWSSecretKey() { + return config.getString("awsSecretKey"); + } + }; + } else { + creds = new DefaultAWSCredentialsProviderChain().getCredentials(); + } + + mClient = new AmazonDynamoDBClient(creds); + + String endpoint = config.getString("dynamoEndpoint"); + if (endpoint != null) { + mClient.setEndpoint(endpoint); + } + + String region = config.getString("awsRegion"); + if (region != null) { + mClient.setRegion(Region.getRegion(Regions.fromName(region))); + } - public DynamoDatabase(AWSCredentials awsCreds, String endpoint) { - this(awsCreds); - mClient.setEndpoint(endpoint); + mTablePrefix = config.getString("dynamoTablePrefix", ""); } public void createTable(String name, long reads, long writes) { @@ -62,7 +93,7 @@ public class DynamoDatabase { .withWriteCapacityUnits(writes); CreateTableRequest request = new CreateTableRequest() - .withTableName(name) + .withTableName(mTablePrefix + name) .withAttributeDefinitions(attributeDefinitions) .withKeySchema(ks) .withProvisionedThroughput(provisionedThroughput); @@ -76,7 +107,7 @@ public class DynamoDatabase { .withWriteCapacityUnits(writes); UpdateTableRequest request = new UpdateTableRequest() - .withTableName(name) + .withTableName(mTablePrefix + name) .withProvisionedThroughput(provisionedThroughput); UpdateTableResult result = mClient.updateTable(request); @@ -84,14 +115,14 @@ public class DynamoDatabase { public void deleteTable(String name) { DeleteTableRequest deleteTableRequest = new DeleteTableRequest() - .withTableName(name); + .withTableName(mTablePrefix + name); DeleteTableResult result = mClient.deleteTable(deleteTableRequest); } public Map<String, String> getKey(final DynamoKey key) { GetItemRequest getItemRequest = new GetItemRequest() - .withTableName(key.getTable()) + .withTableName(mTablePrefix + key.getTable()) .withKey(generateKey(key)); GetItemResult getItemResult = mClient.getItem(getItemRequest); @@ -113,7 +144,7 @@ public class DynamoDatabase { checkAttributeKey(key); GetItemRequest getItemRequest = new GetItemRequest() - .withTableName(key.getTable()) + .withTableName(mTablePrefix + key.getTable()) .withKey(generateKey(key)) .withAttributesToGet(key.getAttribute()); @@ -149,7 +180,7 @@ public class DynamoDatabase { item.putAll(generateKey(key)); PutItemRequest putItemRequest = new PutItemRequest() - .withTableName(key.getTable()) + .withTableName(mTablePrefix + key.getTable()) .withItem(item); PutItemResult result = mClient.putItem(putItemRequest); @@ -171,7 +202,7 @@ public class DynamoDatabase { .withValue(new AttributeValue().withS(value))); UpdateItemRequest updateItemRequest = new UpdateItemRequest() - .withTableName(key.getTable()) + .withTableName(mTablePrefix + key.getTable()) .withKey(generateKey(key)) .withAttributeUpdates(updateItem); // TODO: Check conditions. @@ -186,7 +217,7 @@ public class DynamoDatabase { */ public void deleteKey(final DynamoKey key) { DeleteItemRequest deleteItemRequest = new DeleteItemRequest() - .withTableName(key.getTable()) + .withTableName(mTablePrefix + key.getTable()) .withKey(generateKey(key)); DeleteItemResult result = mClient.deleteItem(deleteItemRequest); @@ -205,7 +236,7 @@ public class DynamoDatabase { new AttributeValueUpdate().withAction(AttributeAction.DELETE)); UpdateItemRequest updateItemRequest = new UpdateItemRequest() - .withTableName(key.getTable()) + .withTableName(mTablePrefix + key.getTable()) .withKey(generateKey(key)) .withAttributeUpdates(updateItem); |