diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index a58cb3f..6353754 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -2,9 +2,9 @@ package de.gnmyt.SQLToolkit.drivers; import de.gnmyt.SQLToolkit.api.SQLConsumer; import de.gnmyt.SQLToolkit.factory.TableFactory; -import de.gnmyt.SQLToolkit.manager.DataBaseSelection; import de.gnmyt.SQLToolkit.manager.InsertManager; import de.gnmyt.SQLToolkit.manager.ResultManager; +import de.gnmyt.SQLToolkit.manager.SelectionManager; import de.gnmyt.SQLToolkit.manager.UpdateManager; import de.gnmyt.SQLToolkit.types.LoginParam; import org.slf4j.Logger; @@ -157,8 +157,8 @@ public class MySQLConnection { * @param tableName The name of the table * @return DatabaseSelection */ - public DataBaseSelection selectFrom(String tableName) { - return new DataBaseSelection(this, tableName); + public SelectionManager selectFrom(String tableName) { + return new SelectionManager(this, tableName); } /** @@ -166,8 +166,8 @@ public class MySQLConnection { * * @return DatabaseSelection */ - public DataBaseSelection select() { - return new DataBaseSelection(this); + public SelectionManager select() { + return new SelectionManager(this); } /** diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java b/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java similarity index 66% rename from src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java rename to src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java index 2414b02..73f5a84 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java @@ -7,9 +7,8 @@ import java.sql.ResultSet; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.concurrent.atomic.AtomicBoolean; -public class DataBaseSelection { +public class SelectionManager { private final Logger LOG = MySQLConnection.LOG; @@ -26,7 +25,7 @@ public class DataBaseSelection { * @param connection The current Connection * @param tableName The table name */ - public DataBaseSelection(MySQLConnection connection, String tableName) { + public SelectionManager(MySQLConnection connection, String tableName) { this.whereList = new HashMap<>(); this.databaseParameters = new ArrayList<>(); this.optionalQuery = new ArrayList<>(); @@ -39,7 +38,7 @@ public class DataBaseSelection { * * @param connection The current Connection */ - public DataBaseSelection(MySQLConnection connection) { + public SelectionManager(MySQLConnection connection) { this.whereList = new HashMap<>(); this.databaseParameters = new ArrayList<>(); this.optionalQuery = new ArrayList<>(); @@ -64,7 +63,7 @@ public class DataBaseSelection { * @param tableName The table name * @return this class */ - public DataBaseSelection from(String tableName) { + public SelectionManager from(String tableName) { this.tableName = tableName; return this; } @@ -76,7 +75,7 @@ public class DataBaseSelection { * @param value Table value name * @return this class */ - public DataBaseSelection where(String column, Object value) { + public SelectionManager where(String column, Object value) { whereList.put(column, value); return this; } @@ -87,7 +86,7 @@ public class DataBaseSelection { * @param limit The new limit * @return this class */ - public DataBaseSelection limit(int limit) { + public SelectionManager limit(int limit) { this.limit = limit; return this; } @@ -98,7 +97,7 @@ public class DataBaseSelection { * @param limit The new limit * @return this class */ - public DataBaseSelection limit(String limit) { + public SelectionManager limit(String limit) { this.limit = Integer.parseInt(limit); return this; } @@ -121,24 +120,6 @@ public class DataBaseSelection { return connection.getResultSet(processStatement(), getTempParams().toArray()); } - /** - * Debug the current Statement - * - * @return this class - */ - public DataBaseSelection printStatement() { - StringBuilder messageBuilder = new StringBuilder(); - messageBuilder.append(processStatement()); - messageBuilder.append(" | paramsĀ» "); - AtomicBoolean added = new AtomicBoolean(false); - getTempParams().forEach(v -> { - messageBuilder.append((added.get()) ? ", " : "").append(v); - added.set(true); - }); - LOG.debug("Statement: " + messageBuilder); - return this; - } - /** * Adding another factors * @@ -146,7 +127,7 @@ public class DataBaseSelection { * @param params Optional parameters for the Query * @return this class */ - public DataBaseSelection add(String query, Object... params) { + public SelectionManager add(String query, Object... params) { optionalQuery.add(query); this.databaseParameters.addAll(Arrays.asList(params)); return this; @@ -158,18 +139,18 @@ public class DataBaseSelection { * @return the current statement query */ private String processStatement() { - StringBuilder sb = new StringBuilder(); - sb.append("SELECT * FROM ").append(tableName).append(" "); - AtomicBoolean used = new AtomicBoolean(false); - whereList.forEach((k, v) -> { - if (!used.get()) sb.append("WHERE "); - else sb.append("AND "); - used.set(true); - sb.append(k).append(" = ? "); - }); - if (limit != 0) sb.append("LIMIT ").append(limit); - optionalQuery.forEach(v -> sb.append(" ").append(v).append(" ")); - return sb.toString(); + StringBuilder query = new StringBuilder().append("SELECT * FROM ").append(tableName).append(" "); + + for (int i = 0; i < whereList.size(); i++) { + if (i > 0) query.append("WHERE "); + else query.append("AND "); + + query.append(whereList.keySet().toArray()[i]).append(" = ? "); + } + + if (limit != 0) query.append("LIMIT ").append(limit); + optionalQuery.forEach(v -> query.append(" ").append(v).append(" ")); + return query.toString(); } } diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index d66982f..7f2e3a3 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -1,8 +1,8 @@ package de.gnmyt.SQLToolkit.storage; import de.gnmyt.SQLToolkit.drivers.MySQLConnection; -import de.gnmyt.SQLToolkit.manager.DataBaseSelection; import de.gnmyt.SQLToolkit.manager.InsertManager; +import de.gnmyt.SQLToolkit.manager.SelectionManager; import de.gnmyt.SQLToolkit.manager.UpdateManager; import de.gnmyt.SQLToolkit.types.SQLType; import de.gnmyt.SQLToolkit.types.TableField; @@ -121,7 +121,7 @@ public abstract class SQLTable { * * @return the database selection */ - public DataBaseSelection select() { + public SelectionManager select() { return connection.selectFrom(tableName()); }