From f4bdeee0c31a3624d4f050a058681634260ae76e Mon Sep 17 00:00:00 2001 From: "Benjamin, Max (mb388a)" Date: Thu, 7 Mar 2019 08:20:13 -0500 Subject: add equals and hashcode support to dslquerybuilder added equals and hashcode support to dsl query builder Change-Id: I8affdd5da489e5aeacb5682ba83320a9d99c211d Issue-ID: SO-1598 Signed-off-by: Benjamin, Max (mb388a) --- .../so/client/graphinventory/entities/DSLNode.java | 7 +++-- .../client/graphinventory/entities/DSLNodeKey.java | 11 ++++---- .../graphinventory/entities/DSLQueryBuilder.java | 32 +++++++++++++++++++--- 3 files changed, 38 insertions(+), 12 deletions(-) (limited to 'common/src/main/java') diff --git a/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLNode.java b/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLNode.java index 7da1408f2d..1e4750d2cf 100644 --- a/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLNode.java +++ b/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLNode.java @@ -64,13 +64,14 @@ public class DSLNode implements QueryStep { @Override public String build() { + StringBuilder result = new StringBuilder(query); if (output) { - query.append("*"); + result.append("*"); } for (DSLNodeKey key : nodeKeys) { - query.append(key.build()); + result.append(key.build()); } - return query.toString(); + return result.toString(); } } diff --git a/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLNodeKey.java b/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLNodeKey.java index 159bfb1c29..c40a3e6f96 100644 --- a/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLNodeKey.java +++ b/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLNodeKey.java @@ -49,11 +49,12 @@ public class DSLNodeKey implements QueryStep { @Override public String build() { - + StringBuilder result = new StringBuilder(query); + if (not) { - query.append(" !"); + result.append(" !"); } - query.append("('").append(keyName).append("', "); + result.append("('").append(keyName).append("', "); List temp = new ArrayList<>(); for (String item : values) { if (item.equals("null")) { @@ -64,8 +65,8 @@ public class DSLNodeKey implements QueryStep { temp.add(String.format("'%s'", item)); } } - query.append(Joiner.on(", ").join(temp)).append(")"); + result.append(Joiner.on(", ").join(temp)).append(")"); - return query.toString(); + return result.toString(); } } diff --git a/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLQueryBuilder.java b/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLQueryBuilder.java index 6554368b6d..3a47c38444 100644 --- a/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLQueryBuilder.java +++ b/common/src/main/java/org/onap/so/client/graphinventory/entities/DSLQueryBuilder.java @@ -34,7 +34,7 @@ import com.google.common.base.Joiner; public class DSLQueryBuilder implements QueryStep { private List steps = new ArrayList<>(); - + private String suffix = ""; public DSLQueryBuilder() { @@ -103,8 +103,9 @@ public class DSLQueryBuilder implements QueryStep { return to(__.node(name, key)); } - public String limit(int limit) { - return compile() + " LIMIT " + limit; + public DSLQueryBuilder limit(int limit) { + suffix = " LIMIT " + limit; + return this; } @Override @@ -112,8 +113,31 @@ public class DSLQueryBuilder implements QueryStep { return compile(); } + @Override + public String toString() { + return build(); + } + + @Override + public boolean equals(Object o) { + if (o != null) { + if (o instanceof QueryStep) { + return ((QueryStep)o).build().equals(this.build()); + } else if (o instanceof String) { + return o.equals(this.build()); + } + } + return false; + } + + @Override + public int hashCode() { + + return build().hashCode(); + } + private String compile() { - return Joiner.on(" ").join(steps.stream().map(item -> item.build()).collect(Collectors.toList())); + return Joiner.on(" ").join(steps.stream().map(item -> item.build()).collect(Collectors.toList())) + suffix; } protected QueryStep getFirst() { -- cgit