Browse Source

fix hardcode

pull/1589/head
ShvaykaD 8 years ago
parent
commit
cd076089c3
  1. 17
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNode.java
  2. 8
      rule-engine/rule-engine-components/src/main/resources/public/static/rulenode/rulenode-core-config.js

17
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNode.java

@ -73,7 +73,7 @@ import static org.thingsboard.rule.engine.api.util.DonAsynchron.withCallback;
"<b>Note:</b> rule node can be used only for Cassandra DB.", "<b>Note:</b> rule node can be used only for Cassandra DB.",
nodeDetails = "Administrator should set the custom table name without prefix: <b>cs_tb_</b>. <br>" + nodeDetails = "Administrator should set the custom table name without prefix: <b>cs_tb_</b>. <br>" +
"Administrator can configure the mapping between the Message field names and Table columns name.<br>" + "Administrator can configure the mapping between the Message field names and Table columns name.<br>" +
"<b>Note:</b> the first table column would be always <b>entity_id</b>, that is identified by the Message Originator.<br><br>" + "<b>Note:</b>If the mapping key is <b>$entity_id</b>, that is identified by the Message Originator, then to the appropriate column name(mapping value) will be write the message originator id.<br><br>" +
"If specified message field does not exist or is not a JSON Primitive, the outbound message will be routed via <b>failure</b> chain," + "If specified message field does not exist or is not a JSON Primitive, the outbound message will be routed via <b>failure</b> chain," +
" otherwise, the message will be routed via <b>success</b> chain.", " otherwise, the message will be routed via <b>success</b> chain.",
uiResources = {"static/rulenode/rulenode-core-config.js"}, uiResources = {"static/rulenode/rulenode-core-config.js"},
@ -83,6 +83,7 @@ public class TbSaveToCustomCassandraTableNode implements TbNode {
private static final String TABLE_PREFIX = "cs_tb_"; private static final String TABLE_PREFIX = "cs_tb_";
private static final JsonParser parser = new JsonParser(); private static final JsonParser parser = new JsonParser();
private static final String ENTITY_ID = "$entityId";
private TbSaveToCustomCassandraTableNodeConfiguration config; private TbSaveToCustomCassandraTableNodeConfiguration config;
private Session session; private Session session;
@ -170,13 +171,12 @@ public class TbSaveToCustomCassandraTableNode implements TbNode {
} }
private String createQuery(List<String> fieldsList) { private String createQuery(List<String> fieldsList) {
int size = fieldsList.size();
StringBuilder query = new StringBuilder(); StringBuilder query = new StringBuilder();
query.append("INSERT INTO ") query.append("INSERT INTO ")
.append(TABLE_PREFIX) .append(TABLE_PREFIX)
.append(config.getTableName()) .append(config.getTableName())
.append("(").append(ModelConstants.ENTITY_ID_COLUMN) .append("(");
.append(",");
int size = fieldsList.size();
for (String field : fieldsList) { for (String field : fieldsList) {
query.append(field); query.append(field);
if (fieldsList.get(size - 1).equals(field)) { if (fieldsList.get(size - 1).equals(field)) {
@ -186,8 +186,8 @@ public class TbSaveToCustomCassandraTableNode implements TbNode {
} }
} }
query.append(" VALUES("); query.append(" VALUES(");
for (int i = 0; i <= size; i++) { for (int i = 0; i < size; i++) {
if (i == size) { if (i == size - 1) {
query.append("?)"); query.append("?)");
} else { } else {
query.append("?, "); query.append("?, ");
@ -204,9 +204,7 @@ public class TbSaveToCustomCassandraTableNode implements TbNode {
JsonObject dataAsObject = data.getAsJsonObject(); JsonObject dataAsObject = data.getAsJsonObject();
BoundStatement stmt = saveStmt.bind(); BoundStatement stmt = saveStmt.bind();
AtomicInteger i = new AtomicInteger(0); AtomicInteger i = new AtomicInteger(0);
stmt.setUUID(i.get(), msg.getOriginator().getId());
fieldsMap.forEach((key, value) -> { fieldsMap.forEach((key, value) -> {
i.getAndIncrement();
if (dataAsObject.has(key)) { if (dataAsObject.has(key)) {
if (dataAsObject.get(key).isJsonPrimitive()) { if (dataAsObject.get(key).isJsonPrimitive()) {
JsonPrimitive primitive = dataAsObject.get(key).getAsJsonPrimitive(); JsonPrimitive primitive = dataAsObject.get(key).getAsJsonPrimitive();
@ -222,9 +220,12 @@ public class TbSaveToCustomCassandraTableNode implements TbNode {
} else { } else {
throw new IllegalStateException("Message data key: '" + key + "' with value: '" + value + "' is not a JSON Primitive!"); throw new IllegalStateException("Message data key: '" + key + "' with value: '" + value + "' is not a JSON Primitive!");
} }
} else if (key.equals(ENTITY_ID)) {
stmt.setUUID(i.get(), msg.getOriginator().getId());
} else { } else {
throw new RuntimeException("Message data doesn't contain key: " + "'" + key + "'!"); throw new RuntimeException("Message data doesn't contain key: " + "'" + key + "'!");
} }
i.getAndIncrement();
}); });
return getFuture(executeAsyncWrite(ctx, stmt), rs -> null); return getFuture(executeAsyncWrite(ctx, stmt), rs -> null);
} }

8
rule-engine/rule-engine-components/src/main/resources/public/static/rulenode/rulenode-core-config.js

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save