Added: SQL builder toString function
This commit is contained in:
committed by
Michael Vorburger ⛑️
parent
1b1e80b6b1
commit
93d1716630
+34
-2
@@ -43,6 +43,8 @@ public class SQLBuilder {
|
|||||||
// This holds the arguments, in the order of the '?' placeholders in sb
|
// This holds the arguments, in the order of the '?' placeholders in sb
|
||||||
private final List<Object> args = new ArrayList<>();
|
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.
|
* Adds a criteria for a SQL WHERE clause.
|
||||||
* All criteria are appended by AND (support for OR, or nesting, can be added when needed).
|
* 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(trimmedCriteria);
|
||||||
sb.append(" ?");
|
sb.append(" ?");
|
||||||
|
crts.add(trimmedCriteria);
|
||||||
args.add(argument);
|
args.add(argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,9 +121,38 @@ public class SQLBuilder {
|
|||||||
/*
|
/*
|
||||||
* Returns a String representation suitable for debugging and log output.
|
* 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.
|
* This is ONLY intended for debugging in logs, and NEVER for passing to a JDBC database.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
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();
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -36,7 +36,7 @@ public class SQLBuilderTest {
|
|||||||
SQLBuilder sqlBuilder = new SQLBuilder();
|
SQLBuilder sqlBuilder = new SQLBuilder();
|
||||||
assertEquals("", sqlBuilder.getSQLTemplate());
|
assertEquals("", sqlBuilder.getSQLTemplate());
|
||||||
assertArrayEquals(new Object[] {}, sqlBuilder.getArguments());
|
assertArrayEquals(new Object[] {}, sqlBuilder.getArguments());
|
||||||
// TODO assertEquals("SQLBuilder{}", sqlBuilder.toString());
|
assertEquals("SQLBuilder{}", sqlBuilder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -47,7 +47,7 @@ public class SQLBuilderTest {
|
|||||||
sqlBuilder.addCriteria("age < ", 123);
|
sqlBuilder.addCriteria("age < ", 123);
|
||||||
assertEquals(" WHERE name = ? AND hobby LIKE ? AND age < ?", sqlBuilder.getSQLTemplate());
|
assertEquals(" WHERE name = ? AND hobby LIKE ? AND age < ?", sqlBuilder.getSQLTemplate());
|
||||||
assertArrayEquals(new Object[] { "Michael", "Mifos/Apache Fineract", 123}, sqlBuilder.getArguments());
|
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
|
@Test
|
||||||
@@ -56,7 +56,7 @@ public class SQLBuilderTest {
|
|||||||
sqlBuilder.addCriteria("ref =", null);
|
sqlBuilder.addCriteria("ref =", null);
|
||||||
assertEquals(" WHERE ref = ?", sqlBuilder.getSQLTemplate());
|
assertEquals(" WHERE ref = ?", sqlBuilder.getSQLTemplate());
|
||||||
assertArrayEquals(new Object[] { null }, sqlBuilder.getArguments());
|
assertArrayEquals(new Object[] { null }, sqlBuilder.getArguments());
|
||||||
// TODO assertEquals("SQLBuilder{ WHERE ref = [null] }", sqlBuilder.toString());
|
assertEquals("SQLBuilder{WHERE ref = [null]}", sqlBuilder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user