Skip to content

Commit 544296c

Browse files
committed
review comment fixes.
1 parent edb567f commit 544296c

File tree

5 files changed

+69
-109
lines changed

5 files changed

+69
-109
lines changed

src/main/java/org/iot/dsa/dslink/dynamodb/DynamoDBDSAClient.java

+12-20
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,24 @@
44
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
55
import com.amazonaws.services.dynamodbv2.model.ListTablesResult;
66

7+
import org.iot.dsa.logging.DSLogger;
78
import org.iot.dsa.node.DSMap;
89

910
import java.util.List;
1011

11-
public class DynamoDBDSAClient {
12+
public class DynamoDBDSAClient extends DSLogger {
1213

13-
private String accessKey = null;
14-
private String secretKey = null;
15-
private String region = null;
16-
private String endpoint = null;
1714
private AmazonDynamoDB client;
15+
private DynamoDB dynamoDBClient;
1816

1917
public DynamoDBDSAClient(String accessKey, String secretKey, String region, String endpoint){
20-
this.accessKey = accessKey;
21-
this.secretKey = secretKey;
22-
this.region = region;
23-
this.endpoint = endpoint;
2418
client = Util.connectDynamoDB(accessKey,secretKey,region,endpoint);
19+
dynamoDBClient = new DynamoDB(client);
2520
}
2621

27-
public void listtable(){
22+
public List<String> listtable(){
2823
ListTablesResult tables = client.listTables();
29-
List tnames = tables.getTableNames();
30-
for(int i = 0 ; i < tnames.size();i++){
31-
System.out.println(tnames.get(i));
32-
}
24+
return tables.getTableNames();
3325
}
3426

3527
public DSMap QueryItem(DSMap parameters){
@@ -46,7 +38,7 @@ public DSMap QueryItem(DSMap parameters){
4638
boolean sonsistentRead = parameters.getBoolean(Constants.CONSISTENTREAD);
4739
String returnConsumedCapacity = parameters.getString(Constants.RETURNCONSUMESCAPACITY);
4840

49-
return Util.queryDynamodb(client,tableName,
41+
return Util.queryDynamodb(dynamoDBClient,tableName,
5042
projectionExpression,keyConditionExpression,
5143
filterExpression,expressionAttributeNames,
5244
expressionAttributeValues,exclusiveStartKey,select,
@@ -69,7 +61,7 @@ public String ScanItem(DSMap parameters){
6961
String ExclusiveStartKey = parameters.getString(Constants.EXCLUSIVESTARTKEY);
7062
String ReturnConsumedCapacity = parameters.getString(Constants.RETURNCONSUMESCAPACITY);
7163

72-
return Util.scanDynamodb(new DynamoDB(client),tableName,ProjectionExpression,
64+
return Util.scanDynamodb(dynamoDBClient,tableName,ProjectionExpression,
7365
Limit,FilterExpression,ExpressionAttributeNames,
7466
ExpressionAttributeValues,Select, ConsistentRead,
7567
Segment,TotalSegments,ExclusiveStartKey, ReturnConsumedCapacity);
@@ -82,7 +74,7 @@ public String putItem(DSMap parameters){
8274
String expressionAttributeNames = parameters.getString(Constants.EXPRESSIONATTRIBUTENAMES);
8375
String expressionAttributeValues = parameters.getString(Constants.EXPRESSIONATTRIBUTEVALUES);
8476

85-
Util.putItem(new DynamoDB(client),
77+
Util.putItem(dynamoDBClient,
8678
tableName,
8779
item,
8880
conditionExpression,
@@ -99,7 +91,7 @@ public String batchPutItem(DSMap parameters){
9991
String tableName = parameters.getString(Constants.TABLENAME);
10092
String items = parameters.getString(Constants.ITEMS);
10193

102-
Util.batchPutItems(new DynamoDB(client),
94+
Util.batchPutItems(dynamoDBClient,
10395
tableName,
10496
items);
10597
return "";
@@ -113,7 +105,7 @@ public String updateItem(DSMap parameters){
113105
String expressionAttributeNames = parameters.getString(Constants.EXPRESSIONATTRIBUTENAMES);
114106
String expressionAttributeValues = parameters.getString(Constants.EXPRESSIONATTRIBUTEVALUES);
115107

116-
return Util.updateItem(new DynamoDB(client),
108+
return Util.updateItem(dynamoDBClient,
117109
tableName,
118110
primaryKey,
119111
updateExpression,
@@ -132,7 +124,7 @@ public String deleteItem(DSMap parameters){
132124
String expressionAttributeNames = parameters.getString(Constants.EXPRESSIONATTRIBUTENAMES);
133125
String expressionAttributeValues = parameters.getString(Constants.EXPRESSIONATTRIBUTEVALUES);
134126

135-
return Util.deleteItem(new DynamoDB(client),
127+
return Util.deleteItem(dynamoDBClient,
136128
tableName,
137129
primaryKey,
138130
conditionExpression,

src/main/java/org/iot/dsa/dslink/dynamodb/DynamoDBNode.java

+20-16
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,8 @@ protected void declareDefaults() {
115115
// Add parameters.
116116
declareDefault(Constants.ACCESSKEY, DSString.valueOf("")).setReadOnly(true);
117117
declareDefault(Constants.SECRETKEY, DSPasswordAes128.NULL).setReadOnly(true).setHidden(true);
118-
declareDefault(Constants.REGION, DSString.valueOf("")).setReadOnly(true);
118+
declareDefault(Constants.REGION, Util.getRegions()).setReadOnly(true);
119119
declareDefault(Constants.ENDPOINT, DSString.valueOf("")).setReadOnly(true);
120-
121-
// Add actions
122-
declareDefault(Constants.QUERYDYNAMODB, makeQueryDynamoDBAction());
123-
declareDefault(Constants.SCANDYNAMODB, makeScanDynamoDBAction());
124-
declareDefault(Constants.PUTITEMDYNAMODB, makePutItemDynamoDBAction());
125-
declareDefault(Constants.BATCHPUTITEMSDYNAMODB, makeBatchPutItemDynamoDBAction());
126-
declareDefault(Constants.UPDATEITEMDYNAMODB, makeUpdateItemDynamoDBAction());
127-
declareDefault(Constants.DELETEITEMDYNAMODB, makeDeleteItemDynamoDBAction());
128120
}
129121

130122
@Override
@@ -138,6 +130,17 @@ protected void onStarted() {
138130
@Override
139131
protected void onStable() {
140132
init();
133+
enableDynamoDBActions();
134+
}
135+
136+
protected void enableDynamoDBActions() {
137+
// Add actions
138+
put(Constants.QUERYDYNAMODB, makeQueryDynamoDBAction());
139+
put(Constants.SCANDYNAMODB, makeScanDynamoDBAction());
140+
put(Constants.PUTITEMDYNAMODB, makePutItemDynamoDBAction());
141+
put(Constants.BATCHPUTITEMSDYNAMODB, makeBatchPutItemDynamoDBAction());
142+
put(Constants.UPDATEITEMDYNAMODB, makeUpdateItemDynamoDBAction());
143+
put(Constants.DELETEITEMDYNAMODB, makeDeleteItemDynamoDBAction());
141144
}
142145

143146
///////////////////////////////////////////////////////////////////////////
@@ -180,7 +183,7 @@ public ActionResult invoke(DSInfo info, ActionInvocation invocation) {
180183
};
181184
act.addParameter(Constants.ACCESSKEY, DSString.valueOf(getAccessKey()), "AWS Access Key");
182185
act.addParameter(Constants.SECRETKEY, DSString.valueOf(getSecretKey()), "AWS Secret Key");
183-
act.addParameter(Constants.REGION, DSString.valueOf(getRegion()), "Region");
186+
act.addParameter(Constants.REGION, Util.getRegions(), "Region");
184187
act.addParameter(Constants.ENDPOINT, DSString.valueOf(getEndpoint()), "End Point");
185188
return act;
186189
}
@@ -193,7 +196,8 @@ public ActionResult invoke(DSInfo info, ActionInvocation invocation) {
193196

194197
}
195198
};
196-
act.addParameter(Constants.TABLENAME, DSValueType.STRING, "Table Name");
199+
200+
act.addParameter(Constants.TABLENAME, Util.getTableNames(client), "Table Name");
197201
act.addParameter(Constants.PROJECTIONEXPRESSION, DSValueType.STRING, "ProjectionExpression");
198202
act.addParameter(Constants.KEYCONDITIONEXPRESSION, DSValueType.STRING, "KeyConditionExpression");
199203
act.addParameter(Constants.FILTEREXPRESSION, DSValueType.STRING, "FilterExpression");
@@ -223,7 +227,7 @@ public ActionResult invoke(DSInfo info, ActionInvocation invocation) {
223227
return ((DynamoDBNode) info.get()).putItem(this,invocation.getParameters());
224228
}
225229
};
226-
act.addParameter(Constants.TABLENAME, DSValueType.STRING, "Table Name");
230+
act.addParameter(Constants.TABLENAME, Util.getTableNames(client), "Table Name");
227231
act.addParameter(Constants.ITEM, DSValueType.STRING, "Item");
228232
act.addParameter(Constants.CONDITIONEXPRESSION, DSValueType.STRING, "ConditionExpression");
229233
act.addParameter(Constants.EXPRESSIONATTRIBUTENAMES, DSValueType.STRING, "Expression Attribute Names");
@@ -240,7 +244,7 @@ public ActionResult invoke(DSInfo info, ActionInvocation invocation) {
240244
return ((DynamoDBNode) info.get()).batchPutItem(this,invocation.getParameters());
241245
}
242246
};
243-
act.addParameter(Constants.TABLENAME, DSValueType.STRING, "Table Name");
247+
act.addParameter(Constants.TABLENAME, Util.getTableNames(client), "Table Name");
244248
act.addParameter(Constants.ITEMS, DSValueType.STRING, "Items");
245249
act.setResultType(ResultType.VALUES);
246250
act.addColumnMetadata(Constants.RESULT, DSValueType.STRING);
@@ -254,7 +258,7 @@ public ActionResult invoke(DSInfo info, ActionInvocation invocation) {
254258
return ((DynamoDBNode) info.get()).scanDynamoDB(this,invocation.getParameters());
255259
}
256260
};
257-
act.addParameter(Constants.TABLENAME, DSValueType.STRING, "Table Name");
261+
act.addParameter(Constants.TABLENAME, Util.getTableNames(client), "Table Name");
258262
act.addParameter(Constants.PROJECTIONEXPRESSION, DSValueType.STRING, "ProjectionExpression");
259263
act.addParameter(Constants.LIMIT, DSInt.valueOf(0), "Limit");
260264
act.addParameter(Constants.FILTEREXPRESSION, DSValueType.STRING, "FilterExpression");
@@ -282,7 +286,7 @@ public ActionResult invoke(DSInfo info, ActionInvocation invocation) {
282286
return ((DynamoDBNode) info.get()).updateItem(this,invocation.getParameters());
283287
}
284288
};
285-
act.addParameter(Constants.TABLENAME, DSValueType.STRING, "Table Name");
289+
act.addParameter(Constants.TABLENAME, Util.getTableNames(client), "Table Name");
286290
act.addParameter(Constants.PRIMARYKEY, DSValueType.STRING, "Primary Key");
287291
act.addParameter(Constants.UPDATEEXPRESSION, DSValueType.STRING, "UpdateExpression");
288292
act.addParameter(Constants.CONDITIONEXPRESSION, DSValueType.STRING, "ConditionExpression");
@@ -301,7 +305,7 @@ public ActionResult invoke(DSInfo info, ActionInvocation invocation) {
301305
}
302306
};
303307
// Add parameters as needed
304-
act.addParameter(Constants.TABLENAME, DSValueType.STRING, "Table Name");
308+
act.addParameter(Constants.TABLENAME, Util.getTableNames(client), "Table Name");
305309
act.addParameter(Constants.PRIMARYKEY, DSValueType.STRING, "Primary Key");
306310
act.addParameter(Constants.CONDITIONEXPRESSION, DSValueType.STRING, "ConditionExpression");
307311
act.addParameter(Constants.EXPRESSIONATTRIBUTENAMES, DSValueType.STRING, "Expression Attribute Names");

src/main/java/org/iot/dsa/dslink/dynamodb/MainNode.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ public ActionResult invoke(DSInfo info, ActionInvocation invocation) {
2424
return null;
2525
}
2626
};
27-
act.addParameter(Constants.CONNECTIONNAME, DSValueType.STRING, "AWS Access Key");
27+
act.addParameter(Constants.CONNECTIONNAME, DSValueType.STRING, "Connection Name");
2828
act.addParameter(Constants.ACCESSKEY, DSValueType.STRING, "AWS Access Key");
2929
act.addParameter(Constants.SECRETKEY, DSValueType.STRING, "AWS Secret Key");
30-
act.addParameter(Constants.REGION, DSValueType.STRING, "Region");
30+
act.addParameter(Constants.REGION, Util.getRegions(), "Region");
3131
act.addParameter(Constants.ENDPOINT, DSValueType.STRING, "End Point");
3232

3333
return act;

src/main/java/org/iot/dsa/dslink/dynamodb/Util.java

+23-26
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.amazonaws.auth.AWSStaticCredentialsProvider;
44
import com.amazonaws.auth.BasicAWSCredentials;
55
import com.amazonaws.client.builder.AwsClientBuilder;
6+
import com.amazonaws.regions.Regions;
67
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
78
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
89
import com.amazonaws.services.dynamodbv2.document.BatchWriteItemOutcome;
@@ -32,11 +33,13 @@
3233

3334
import org.iot.dsa.io.json.JsonReader;
3435
import org.iot.dsa.node.DSElement;
36+
import org.iot.dsa.node.DSFlexEnum;
3537
import org.iot.dsa.node.DSList;
3638
import org.iot.dsa.node.DSMap;
3739
import org.iot.dsa.node.DSValueType;
3840
import org.iot.dsa.util.DSException;
3941

42+
import java.math.BigDecimal;
4043
import java.nio.ByteBuffer;
4144
import java.util.ArrayList;
4245
import java.util.HashMap;
@@ -67,27 +70,6 @@ public static AmazonDynamoDB connectDynamoDB(String accesskey,String secretKey,
6770
// Query Items
6871
///////////////////////////////////////////////////////////////////////////
6972

70-
public static DSMap queryDynamodb(AmazonDynamoDB client,
71-
String tableName,
72-
String ProjectionExpression,
73-
String KeyConditionExpression,
74-
String FilterExpression,
75-
String ExpressionAttributeNames,
76-
String ExpressionAttributeValues,
77-
String ExclusiveStartKey,
78-
String Select,
79-
int maxResultSize,
80-
boolean ScanIndexForward,
81-
boolean ConsistentRead,
82-
String ReturnConsumedCapacity){
83-
return queryDynamodb(new DynamoDB(client),tableName,
84-
ProjectionExpression,KeyConditionExpression,
85-
FilterExpression,ExpressionAttributeNames,
86-
ExpressionAttributeValues,ExclusiveStartKey,Select,
87-
maxResultSize,ScanIndexForward,
88-
ConsistentRead,ReturnConsumedCapacity);
89-
}
90-
9173
public static DSMap queryDynamodb(DynamoDB client,
9274
String tableName,
9375
String ProjectionExpression,
@@ -240,7 +222,6 @@ public static String batchPutItems(DynamoDB client,
240222

241223
DSElement element = parseJSON(itemsStr);
242224
if(!(element instanceof DSList)){
243-
System.out.println("Error PutBatchItems: Not JSON Array " + element);
244225
DSException.throwRuntime(new Throwable("Error PutBatchItems: Not JSON Array " + element));
245226
return null;
246227
}
@@ -570,31 +551,31 @@ private static PrimaryKey getPrimaryKey(DSMap keyMap) {
570551
return primaryKey;
571552
}
572553

573-
public static Set getBibarySet(DSList list){
554+
public static Set<byte[]> getBibarySet(DSList list){
574555
Set setC = new LinkedHashSet();
575556
for (DSElement en : list) {
576557
setC.add(en.toString().getBytes());
577558
}
578559
return setC;
579560
}
580561

581-
public static Set getStringSet(DSList list){
562+
public static Set<String> getStringSet(DSList list){
582563
Set setS = new LinkedHashSet();
583564
for (DSElement en : list) {
584565
setS.add(en.toString());
585566
}
586567
return setS;
587568
}
588569

589-
public static Set getNumberSet(DSList list){
570+
public static Set<BigDecimal> getNumberSet(DSList list){
590571
Set setN = new LinkedHashSet();
591572
for (DSElement en : list) {
592573
setN.add(Double.valueOf(en.toString()));
593574
}
594575
return setN;
595576
}
596577

597-
public static Map parseHashMap(DSMap m){
578+
public static Map<String,String> parseHashMap(DSMap m){
598579
Map<String,String> map = new HashMap<>();
599580
for (DSMap.Entry en : m) {
600581
map.put(en.getKey().trim(), en.getValue().toString().trim());
@@ -616,4 +597,20 @@ private static DSElement parseJSON(String jsonValue){
616597
return m;
617598
}
618599

600+
public static DSFlexEnum getTableNames(DynamoDBDSAClient client) {
601+
List<String> dbTableList = client.listtable();
602+
DSList tableList = new DSList();
603+
for(String dtTableName : dbTableList) {
604+
tableList.add(dtTableName);
605+
}
606+
return DSFlexEnum.valueOf(tableList.get(0).toString(),tableList);
607+
}
608+
609+
public static DSFlexEnum getRegions() {
610+
DSList regionList = new DSList();
611+
for (Regions region : Regions.values()) {
612+
regionList.add(region.getName());
613+
}
614+
return DSFlexEnum.valueOf(regionList.get(0).toString(),regionList);
615+
}
619616
}

0 commit comments

Comments
 (0)