This is an automated email from the ASF dual-hosted git repository.
vorburger pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new 93d1716 Added: SQL builder toString function
93d1716 is described below
commit 93d171663078ad883d1e1242a8c35c02b8230741
Author: thesmallstar <[email protected]>
AuthorDate: Tue Mar 10 16:45:25 2020 +0530
Added: SQL builder toString function
---
.../infrastructure/security/utils/SQLBuilder.java | 36 ++++++++++++++++++++--
.../security/utils/SQLBuilderTest.java | 6 ++--
2 files changed, 37 insertions(+), 5 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLBuilder.java
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLBuilder.java
index 63052fb..0a22bd2 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLBuilder.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLBuilder.java
@@ -43,6 +43,8 @@ public class SQLBuilder {
// This holds the arguments, in the order of the '?' placeholders in sb
private final List<Object> args = new ArrayList<>();
+ // This holds the criterias, where nth element corresponds to nth element
in args
+ private final ArrayList<String> crts = new ArrayList<String>();
/**
* Adds a criteria for a SQL WHERE clause.
* All criteria are appended by AND (support for OR, or nesting, can be
added when needed).
@@ -84,6 +86,7 @@ public class SQLBuilder {
}
sb.append(trimmedCriteria);
sb.append(" ?");
+ crts.add(trimmedCriteria);
args.add(argument);
}
@@ -118,9 +121,38 @@ public class SQLBuilder {
/*
* Returns a String representation suitable for debugging and log output.
* This is ONLY intended for debugging in logs, and NEVER for passing to a
JDBC database.
+ */
@Override
public String toString() {
- return "SQLBuilder{..."; // TODO implement this...
+ StringBuilder whereClause = new StringBuilder("SQLBuilder{");
+ for (int i=0;i<args.size();i++)
+ {
+ if (i!=0)
+ {
+ whereClause.append(" AND ");
+ }
+ else
+ {
+ whereClause.append("WHERE ");
+ }
+ Object currentArg = args.get(i);
+ whereClause.append(crts.get(i));
+ whereClause.append(" ");
+ whereClause.append("[");
+ if(currentArg instanceof String)
+ {
+ whereClause.append("'");
+ whereClause.append(currentArg);
+ whereClause.append("'");
+ }else if(currentArg == null)
+ {
+ whereClause.append("null");
+ }else{
+ whereClause.append(String.valueOf(currentArg));
+ }
+ whereClause.append("]");
+ }
+ whereClause.append("}");
+ return whereClause.toString();
}
- */
}
diff --git
a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/security/utils/SQLBuilderTest.java
b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/security/utils/SQLBuilderTest.java
index 34358a6..6ea5f25 100644
---
a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/security/utils/SQLBuilderTest.java
+++
b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/security/utils/SQLBuilderTest.java
@@ -36,7 +36,7 @@ public class SQLBuilderTest {
SQLBuilder sqlBuilder = new SQLBuilder();
assertEquals("", sqlBuilder.getSQLTemplate());
assertArrayEquals(new Object[] {}, sqlBuilder.getArguments());
- // TODO assertEquals("SQLBuilder{}", sqlBuilder.toString());
+ assertEquals("SQLBuilder{}", sqlBuilder.toString());
}
@Test
@@ -47,7 +47,7 @@ public class SQLBuilderTest {
sqlBuilder.addCriteria("age < ", 123);
assertEquals(" WHERE name = ? AND hobby LIKE ? AND age < ?",
sqlBuilder.getSQLTemplate());
assertArrayEquals(new Object[] { "Michael", "Mifos/Apache Fineract",
123}, sqlBuilder.getArguments());
- // TODO assertEquals("SQLBuilder{ WHERE name = ['Michael'] AND
hobby = ['Mifos/Apache Fineract'] AND age < [123]}", sqlBuilder.toString());
+ assertEquals("SQLBuilder{WHERE name = ['Michael'] AND hobby LIKE
['Mifos/Apache Fineract'] AND age < [123]}", sqlBuilder.toString());
}
@Test
@@ -56,7 +56,7 @@ public class SQLBuilderTest {
sqlBuilder.addCriteria("ref =", null);
assertEquals(" WHERE ref = ?", sqlBuilder.getSQLTemplate());
assertArrayEquals(new Object[] { null }, sqlBuilder.getArguments());
- // TODO assertEquals("SQLBuilder{ WHERE ref = [null] }",
sqlBuilder.toString());
+ assertEquals("SQLBuilder{WHERE ref = [null]}", sqlBuilder.toString());
}
@Test