From a04c670e02a4949fffb20ee58aa8d7a185906df9 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 11:58:57 +0200 Subject: [PATCH 001/121] Removed author comments --- .../java/de/gnmyt/SQLToolkit/api/SQLConsumer.java | 5 ----- .../de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 12 +++++------- .../de/gnmyt/SQLToolkit/drivers/SqlLogManager.java | 5 ----- .../java/de/gnmyt/SQLToolkit/fields/SQLField.java | 5 ----- .../gnmyt/SQLToolkit/generator/TableGenerator.java | 5 ----- .../gnmyt/SQLToolkit/manager/DataBaseSelection.java | 5 ----- .../de/gnmyt/SQLToolkit/manager/ResultManager.java | 5 ----- .../de/gnmyt/SQLToolkit/manager/UpdateManager.java | 5 ----- .../java/de/gnmyt/SQLToolkit/types/LogLevelType.java | 5 ----- .../java/de/gnmyt/SQLToolkit/types/LoginParam.java | 5 ----- 10 files changed, 5 insertions(+), 52 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/api/SQLConsumer.java b/src/main/java/de/gnmyt/SQLToolkit/api/SQLConsumer.java index c37ee53..fa2999b 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/api/SQLConsumer.java +++ b/src/main/java/de/gnmyt/SQLToolkit/api/SQLConsumer.java @@ -2,11 +2,6 @@ package de.gnmyt.SQLToolkit.api; import java.sql.SQLException; -/******************************** - * @author Mathias Wagner - * Created 25.12.2020 - *******************************/ - @FunctionalInterface public interface SQLConsumer { void accept(T t) throws SQLException; diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 896685f..f6a138e 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -1,19 +1,17 @@ package de.gnmyt.SQLToolkit.drivers; import de.gnmyt.SQLToolkit.api.SQLConsumer; +import de.gnmyt.SQLToolkit.manager.DataBaseSelection; import de.gnmyt.SQLToolkit.manager.InsertManager; import de.gnmyt.SQLToolkit.manager.ResultManager; -import de.gnmyt.SQLToolkit.manager.DataBaseSelection; import de.gnmyt.SQLToolkit.manager.UpdateManager; import de.gnmyt.SQLToolkit.types.LogLevelType; import de.gnmyt.SQLToolkit.types.LoginParam; -import java.sql.*; - -/******************************** - * @author Mathias Wagner - * Created 23.12.2020 - ********************************/ +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; public class MySQLConnection { diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/SqlLogManager.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/SqlLogManager.java index 8cfc8f0..d79f7a9 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/SqlLogManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/SqlLogManager.java @@ -5,11 +5,6 @@ import de.gnmyt.SQLToolkit.types.LogLevelType; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -/******************************** - * @author Mathias Wagner - * Created 23.12.2020 - ********************************/ - public class SqlLogManager { private LogLevelType logLevelType; diff --git a/src/main/java/de/gnmyt/SQLToolkit/fields/SQLField.java b/src/main/java/de/gnmyt/SQLToolkit/fields/SQLField.java index 1fb48c0..c9501ad 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/fields/SQLField.java +++ b/src/main/java/de/gnmyt/SQLToolkit/fields/SQLField.java @@ -2,11 +2,6 @@ package de.gnmyt.SQLToolkit.fields; import de.gnmyt.SQLToolkit.types.SQLType; -/******************************** - * @author Mathias Wagner - * Created 23.12.2020 - ********************************/ - public class SQLField { private String name = ""; diff --git a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java b/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java index 13dd9bb..09d60d5 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java +++ b/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java @@ -7,11 +7,6 @@ import de.gnmyt.SQLToolkit.manager.UpdateManager; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicBoolean; -/******************************** - * @author Mathias Wagner - * Created 23.12.2020 - ********************************/ - public class TableGenerator { private UpdateManager updateManager; diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java b/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java index dd22b42..214a0e1 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java @@ -8,11 +8,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.concurrent.atomic.AtomicBoolean; -/******************************** - * @author Mathias Wagner - * Created 23.12.2020 - ********************************/ - public class DataBaseSelection { private final MySQLConnection connection; diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java index d4d1fb5..ba24602 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java @@ -7,11 +7,6 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashMap; -/******************************** - * @author Mathias Wagner - * Created 23.12.2020 - ********************************/ - public class ResultManager { private ResultSet resultSet; diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java index 27d1d8c..3e8cea9 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java @@ -7,11 +7,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.concurrent.atomic.AtomicBoolean; -/******************************** - * @author Mathias Wagner - * Created 23.12.2020 - ********************************/ - public class UpdateManager { private MySQLConnection connection; diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/LogLevelType.java b/src/main/java/de/gnmyt/SQLToolkit/types/LogLevelType.java index 7ab21d8..1d743ca 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/LogLevelType.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/LogLevelType.java @@ -1,10 +1,5 @@ package de.gnmyt.SQLToolkit.types; -/******************************** - * @author Mathias Wagner - * Created 23.12.2020 - ********************************/ - public enum LogLevelType { NONE("Sends nothing"), diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java b/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java index b67166f..ac539e4 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java @@ -1,10 +1,5 @@ package de.gnmyt.SQLToolkit.types; -/******************************** - * @author Mathias Wagner - * Created 23.12.2020 - ********************************/ - public enum LoginParam { DEFAULT("useSSL=false&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&useTimezone=true&serverTimezone=UTC"), -- 2.47.2 From 21376fbf778d44e6cd0d82beba201e70feb2d181 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 12:03:42 +0200 Subject: [PATCH 002/121] Removed static modifier --- src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index f6a138e..0dabe7d 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -22,7 +22,7 @@ public class MySQLConnection { private String tablePrefix = ""; private String tablePrefixVariable = ""; private String connectString = ""; - public static Connection con; + private Connection con; private final SqlLogManager sqlLogManager; /** -- 2.47.2 From cca349ef60ad5db06c66b77618148188e37fe487 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 12:06:38 +0200 Subject: [PATCH 003/121] Added the slf4j log manager to the dependencies --- pom.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pom.xml b/pom.xml index 8ef4ba1..22d7621 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,20 @@ mysql-connector-java 8.0.25 + + + + org.slf4j + slf4j-api + 1.7.32 + + + + + org.slf4j + slf4j-simple + 1.7.32 + \ No newline at end of file -- 2.47.2 From 2f396093d1b6d6079d52f835503eaeeb8766e555 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 12:08:36 +0200 Subject: [PATCH 004/121] Cleaned up the pom.xml file --- pom.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pom.xml b/pom.xml index 22d7621..38a401f 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,8 @@ + + mysql mysql-connector-java @@ -33,6 +35,7 @@ slf4j-simple 1.7.32 + \ No newline at end of file -- 2.47.2 From ca3e4d180c4d8d5587c1b82531bda158e76ccaa4 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 12:23:58 +0200 Subject: [PATCH 005/121] Removed the old log manager & integrated the new log manager --- .../SQLToolkit/drivers/MySQLConnection.java | 57 +++++------- .../SQLToolkit/drivers/SqlLogManager.java | 87 ------------------- .../SQLToolkit/manager/DataBaseSelection.java | 6 +- .../SQLToolkit/manager/ResultManager.java | 30 +++---- .../SQLToolkit/manager/UpdateManager.java | 9 +- 5 files changed, 46 insertions(+), 143 deletions(-) delete mode 100755 src/main/java/de/gnmyt/SQLToolkit/drivers/SqlLogManager.java diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 0dabe7d..8c0dcd8 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -7,6 +7,8 @@ import de.gnmyt.SQLToolkit.manager.ResultManager; import de.gnmyt.SQLToolkit.manager.UpdateManager; import de.gnmyt.SQLToolkit.types.LogLevelType; import de.gnmyt.SQLToolkit.types.LoginParam; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.sql.Connection; import java.sql.DriverManager; @@ -15,15 +17,17 @@ import java.sql.ResultSet; public class MySQLConnection { + public static final Logger LOG = LoggerFactory.getLogger("MySQL-Logger"); + private final String hostname; private final String username; private final String password; private final String database; + private String tablePrefix = ""; private String tablePrefixVariable = ""; private String connectString = ""; private Connection con; - private final SqlLogManager sqlLogManager; /** * Update the Connection String @@ -85,14 +89,6 @@ public class MySQLConnection { return (con != null); } - /** - * Get the SQL Log Manager and adjust it how you like it - * @return the SQL Log Manager - */ - public SqlLogManager getLogManager() { - return sqlLogManager; - } - /** * Basic constructor for the Connection * @param hostname MySQL server hostname @@ -107,9 +103,7 @@ public class MySQLConnection { this.username = username; this.password = password; this.database = database; - this.sqlLogManager = new SqlLogManager(); updateConnectString(loginParams); - setLogLevelType(logLevel); } /** @@ -125,19 +119,7 @@ public class MySQLConnection { this.username = username; this.password = password; this.database = database; - this.sqlLogManager = new SqlLogManager(); updateConnectString(loginParams); - setLogLevelType(LogLevelType.NONE); - } - - /** - * Set a new logging level - * @param logLevelType New logging level - * @return this class - */ - public MySQLConnection setLogLevelType(LogLevelType logLevelType) { - this.sqlLogManager.setLogLevelType(logLevelType); - return this; } /** @@ -153,7 +135,7 @@ public class MySQLConnection { for (Object current : params) { ps.setObject(start, current);start++; } return ps.executeQuery(); } catch (Exception err) { - sqlLogManager.sendError(err.getMessage()); + LOG.error(err.getMessage()); } return null; } @@ -165,7 +147,7 @@ public class MySQLConnection { * @return ResultManager */ public ResultManager getResult(String query, Object... params) { - return new ResultManager(getResultSet(query, params), sqlLogManager); + return new ResultManager(getResultSet(query, params)); } /** @@ -255,18 +237,19 @@ public class MySQLConnection { */ public MySQLConnection connect() { if (!isConnected()) { try { - sqlLogManager.sendInfo("Connecting to " + hostname + " with user " + username + " to database " + database); + LOG.info("Connecting to " + hostname + " with user " + username + " to database " + database); Class.forName("com.mysql.cj.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://" + hostname + "/" + database + connectString, username, password); - sqlLogManager.sendInfo("Connection established"); + LOG.info("Connection established"); } catch (Exception exception) { if (exception.getMessage().contains("jdbc.Driver")) - sqlLogManager.sendError("MySQL driver not found! Check your dependencies or install the JDBC Mysql Driver from https://dev.mysql.com/downloads/file/?id=498587"); - else if (exception.getMessage().contains("has not received any packets")) sqlLogManager.sendError("No packets received from the server."); - else if (exception.getMessage().contains("denied for user")) sqlLogManager.sendError("Wrong username/password"); - else sqlLogManager.sendError(exception.getMessage()); + LOG.error("MySQL driver not found! Check your dependencies or install the JDBC Mysql Driver from https://dev.mysql.com/downloads/file/?id=498587"); + else if (exception.getMessage().contains("has not received any packets")) + LOG.error("No packets received from the server."); + else if (exception.getMessage().contains("denied for user")) LOG.error("Wrong username/password"); + else LOG.error(exception.getMessage()); } - } else sqlLogManager.sendWarning("Already connected"); + } else LOG.warn("Already connected"); return this; } @@ -275,9 +258,13 @@ public class MySQLConnection { * @return this class */ public MySQLConnection disconnect() { - if (isConnected()) { try { con.close();con = null;sqlLogManager.sendInfo("Connection closed"); - } catch (Exception err) { sqlLogManager.sendError(err.getMessage()); } - } else sqlLogManager.sendWarning("Not connected. Please connect first"); + if (isConnected()) { + try { + con.close(); + con = null; + LOG.info("Connection closed"); + } catch (Exception err) { LOG.error(err.getMessage()); } + } else LOG.warn("Not connected. Please connect first"); return this; } diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/SqlLogManager.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/SqlLogManager.java deleted file mode 100755 index d79f7a9..0000000 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/SqlLogManager.java +++ /dev/null @@ -1,87 +0,0 @@ -package de.gnmyt.SQLToolkit.drivers; - -import de.gnmyt.SQLToolkit.types.LogLevelType; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -public class SqlLogManager { - - private LogLevelType logLevelType; - private String logFormat = "[%date ยป MySQL %type] %msg"; - - /** - * Sets the Log Level - * @param logLevelType Logging Level - */ - public void setLogLevelType(LogLevelType logLevelType) { - this.logLevelType = logLevelType; - } - - /** - * Format for the Message - * @param logFormat The Formatted String - */ - public void setLogFormat(String logFormat) { - this.logFormat = logFormat; - } - - /** - * Getting the Logging Level - * @return LogLevelType - */ - public LogLevelType getLogLevelType() { - return logLevelType; - } - - /** - * Send an information - * @param msg The provided message - */ - public void sendInfo(String msg) { - if (logLevelType == LogLevelType.ALL) - sendLog("Info", msg); - } - - /** - * Send an Warning - * @param msg The provided message - */ - public void sendWarning(String msg) { - if (logLevelType == LogLevelType.ALL || logLevelType == LogLevelType.LOW) - sendLog("Warning", msg); - } - - /** - * Send an Error - * @param msg The provided message - */ - public void sendError(String msg) { - if (logLevelType == LogLevelType.ALL || logLevelType == LogLevelType.LOW) { - StackTraceElement[] st = Thread.currentThread().getStackTrace(); - StackTraceElement stack = st[st.length-1]; - sendLog("Error", "<"+stack.getFileName()+":"+stack.getLineNumber()+"> "+msg); - } - } - - /** - * Intern Logging Feature - * @param prefix Logging Prefix - * @param msg The provided message - */ - private void sendLog(String prefix, String msg) { - String formatted = logFormat.replace("%type", prefix).replace("%date", getDate()).replace("%msg", msg); - System.out.println(formatted); - } - - /** - * Getting the date - * @return Datetime - */ - private String getDate() { - DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:m:s"); - LocalDateTime dt = LocalDateTime.now(); - return dtf.format(dt); - } - -} diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java b/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java index 214a0e1..973fcca 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java @@ -1,6 +1,7 @@ package de.gnmyt.SQLToolkit.manager; import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import org.slf4j.Logger; import java.sql.ResultSet; import java.util.ArrayList; @@ -10,6 +11,8 @@ import java.util.concurrent.atomic.AtomicBoolean; public class DataBaseSelection { + private final Logger LOG = MySQLConnection.LOG; + private final MySQLConnection connection; private final HashMap whereList; private final ArrayList databaseParameters; @@ -121,8 +124,7 @@ public class DataBaseSelection { getTempParams().forEach(v -> { messageBuilder.append((added.get()) ? ", " : "").append(v);added.set(true); }); StackTraceElement[] st = Thread.currentThread().getStackTrace(); StackTraceElement stack = st[st.length-1]; - connection.getLogManager() - .sendInfo("DEBUG <" + stack.getFileName()+":"+stack.getLineNumber() + "> Statement: " + messageBuilder.toString()); + LOG.debug("DEBUG <" + stack.getFileName()+":"+stack.getLineNumber() + "> Statement: " + messageBuilder.toString()); return this; } diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java index ba24602..7e826af 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java @@ -1,6 +1,7 @@ package de.gnmyt.SQLToolkit.manager; -import de.gnmyt.SQLToolkit.drivers.SqlLogManager; +import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import org.slf4j.Logger; import java.sql.ResultSet; import java.sql.Timestamp; @@ -9,17 +10,16 @@ import java.util.HashMap; public class ResultManager { - private ResultSet resultSet; - private SqlLogManager logManager; + private final Logger LOG = MySQLConnection.LOG; + + private final ResultSet resultSet; /** * Basic constructor for the ResultManager * @param resultSet Existing ResultSet - * @param logManager Existing LogManager */ - public ResultManager(ResultSet resultSet, SqlLogManager logManager) { + public ResultManager(ResultSet resultSet) { this.resultSet = resultSet; - this.logManager = logManager; } /** @@ -37,7 +37,7 @@ public class ResultManager { */ public Object getObject(String column) { try { while (resultSet.next()) { return resultSet.getObject(column); } - } catch (Exception err) { logManager.sendError(err.getMessage()); } + } catch (Exception err) { LOG.error(err.getMessage()); } return null; } @@ -48,7 +48,7 @@ public class ResultManager { */ public String getString(String column) { try { while (resultSet.next()) { return resultSet.getString(column); } - } catch (Exception err) { logManager.sendError(err.getMessage()); } + } catch (Exception err) { LOG.error(err.getMessage()); } return ""; } @@ -59,7 +59,7 @@ public class ResultManager { */ public Integer getInteger(String column) { try { while (resultSet.next()) { return resultSet.getInt(column); } - } catch (Exception err) { logManager.sendError(err.getMessage()); } + } catch (Exception err) { LOG.error(err.getMessage()); } return 0; } @@ -70,13 +70,13 @@ public class ResultManager { */ public Boolean getBoolean(String column) { try { while (resultSet.next()) { return resultSet.getBoolean(column); } - } catch (Exception err) { logManager.sendError(err.getMessage()); } + } catch (Exception err) { LOG.error(err.getMessage()); } return false; } public Timestamp getTimestamp(String column) { try { while (resultSet.next()) { return resultSet.getTimestamp(column); } - } catch (Exception err) { logManager.sendError(err.getMessage()); } + } catch (Exception err) { LOG.error(err.getMessage()); } return null; } @@ -86,7 +86,7 @@ public class ResultManager { */ public Integer getRowCount() { int count=0; - try { while (resultSet.next()) { count++; } } catch (Exception err) { logManager.sendError(err.getMessage()); } + try { while (resultSet.next()) { count++; } } catch (Exception err) { LOG.error(err.getMessage()); } return count; } @@ -98,7 +98,7 @@ public class ResultManager { public ArrayList getList(String column) { ArrayList results = new ArrayList<>(); try { while (resultSet.next()) { results.add(resultSet.getString(column)); } - } catch (Exception err) { logManager.sendError(err.getMessage()); } + } catch (Exception err) { LOG.error(err.getMessage()); } return results; } @@ -112,7 +112,7 @@ public class ResultManager { HashMap results = new HashMap<>(); try { while (resultSet.next()) { results.put(resultSet.getString(column), resultSet.getString(column2)); } - } catch (Exception err) { logManager.sendError(err.getMessage()); } + } catch (Exception err) { LOG.error(err.getMessage()); } return results; } @@ -131,7 +131,7 @@ public class ResultManager { } results.add(result); } - } catch (Exception err) { logManager.sendError(err.getMessage()); } + } catch (Exception err) { LOG.error(err.getMessage()); } return results; } diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java index 3e8cea9..54299e4 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java @@ -2,6 +2,7 @@ package de.gnmyt.SQLToolkit.manager; import de.gnmyt.SQLToolkit.drivers.MySQLConnection; import de.gnmyt.SQLToolkit.generator.TableGenerator; +import org.slf4j.Logger; import java.util.ArrayList; import java.util.HashMap; @@ -9,6 +10,8 @@ import java.util.concurrent.atomic.AtomicBoolean; public class UpdateManager { + private final Logger LOG = MySQLConnection.LOG; + private MySQLConnection connection; private String tableName; private HashMap whereList; @@ -67,8 +70,7 @@ public class UpdateManager { whereList.values().forEach(v -> { messageBuilder.append((added.get()) ? ", " : "").append(v);added.set(true); }); StackTraceElement[] st = Thread.currentThread().getStackTrace(); StackTraceElement stack = st[st.length-1]; - connection.getLogManager() - .sendInfo("DEBUG <" + stack.getFileName()+":"+stack.getLineNumber() + "> Statement: " + messageBuilder.toString()); + LOG.debug("DEBUG <" + stack.getFileName()+":"+stack.getLineNumber() + "> Statement: " + messageBuilder.toString()); return this; } @@ -84,8 +86,7 @@ public class UpdateManager { getTempParams().forEach(v -> { messageBuilder.append((added.get()) ? ", " : "").append(v);added.set(true); }); StackTraceElement[] st = Thread.currentThread().getStackTrace(); StackTraceElement stack = st[st.length-1]; - connection.getLogManager() - .sendInfo("DEBUG <" + stack.getFileName()+":"+stack.getLineNumber() + "> Statement: " + messageBuilder.toString()); + LOG.debug("DEBUG <" + stack.getFileName()+":"+stack.getLineNumber() + "> Statement: " + messageBuilder.toString()); return this; } -- 2.47.2 From 47c8a1391d66d558de8627b368e348409b460d54 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 12:32:52 +0200 Subject: [PATCH 006/121] Updated the constructor & the readme file --- README.md | 8 -- .../SQLToolkit/drivers/MySQLConnection.java | 133 +++++++++--------- 2 files changed, 65 insertions(+), 76 deletions(-) diff --git a/README.md b/README.md index b915628..0d49a82 100644 --- a/README.md +++ b/README.md @@ -32,18 +32,10 @@ This is a small project for quickly managing a MySQL database in Java. It makes ```java MySQLConnection connection = new MySQLConnection(hostname, username, password, database).connect(); ``` - - Example of a constructor with setting the logging level - ```java - MySQLConnection connection = new MySQLConnection(hostname, username, password, database, LogLevelType.ALL).connect(); - ``` - Example of a constructor with optional login parameters ```java MySQLConnection connection = new MySQLConnection(hostname, username, password, database, LoginParam.AUTO_RECONNECT, LoginParam.NO_SSL).connect(); ``` - #### Logging Levels - - NONE - Sends nothing - - LOW - Sends Warnings & Errors - - ALL - Sends Infos, Warnings & Errors #### Login Parameters - DEFAULT *(useSSL=false&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&useTimezone=true&serverTimezone=UTC)* - NO_SSL *(useSSL=false)* diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 8c0dcd8..86b297c 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -5,7 +5,6 @@ import de.gnmyt.SQLToolkit.manager.DataBaseSelection; import de.gnmyt.SQLToolkit.manager.InsertManager; import de.gnmyt.SQLToolkit.manager.ResultManager; import de.gnmyt.SQLToolkit.manager.UpdateManager; -import de.gnmyt.SQLToolkit.types.LogLevelType; import de.gnmyt.SQLToolkit.types.LoginParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,84 +29,21 @@ public class MySQLConnection { private Connection con; /** - * Update the Connection String - * @param loginParams New login parameters - * @return this class - */ - public MySQLConnection updateConnectString(LoginParam... loginParams) { - this.connectString = getConnectionString(loginParams); - return this; - } - - /** - * Set the Connection String - * @param tablePrefixVariable New table prefix variable - * @return this class - */ - public MySQLConnection setTablePrefixVariable(String tablePrefixVariable) { - this.tablePrefixVariable = tablePrefixVariable; - return this; - } - - /** - * Set the current table Prefix - * @param tablePrefix New table prefix - * @return this class - */ - public MySQLConnection setTablePrefix(String tablePrefix) { - this.tablePrefix = tablePrefix; - return this; - } - - /** - * Get the current table Prefix - * @return the prefix - */ - public String getTablePrefix() { - return tablePrefix; - } - - /** - * Get the current jdbc connection string for mysql - * @param loginParams login parameters - * @return the string - */ - private String getConnectionString(LoginParam[] loginParams) { - boolean used = false;StringBuilder currentString = new StringBuilder(); - for (LoginParam param : loginParams) { - String currentChar = (used) ? "&" : "?";used = true; - currentString.append(currentChar).append(param.getValue()); - } - return currentString.toString(); - } - - /** - * Check if you are connected - * @return status of the connection - */ - public boolean isConnected() { - return (con != null); - } - - /** - * Basic constructor for the Connection + * Basic constructor for the connection * @param hostname MySQL server hostname * @param username MySQL server username * @param password MySQL server password * @param database MySQL server database - * @param logLevel Logging level - * @param loginParams Login parameters */ - public MySQLConnection(String hostname, String username, String password, String database, LogLevelType logLevel, LoginParam... loginParams) { + public MySQLConnection(String hostname, String username, String password, String database) { this.hostname = hostname; this.username = username; this.password = password; this.database = database; - updateConnectString(loginParams); } /** - * Basic constructor for the Connection + * Advanced constructor for the connection * @param hostname MySQL server hostname * @param username MySQL server username * @param password MySQL server password @@ -119,7 +55,7 @@ public class MySQLConnection { this.username = username; this.password = password; this.database = database; - updateConnectString(loginParams); + updateConnectionString(loginParams); } /** @@ -268,4 +204,65 @@ public class MySQLConnection { return this; } + /** + * Update the Connection String + * @param loginParams New login parameters + * @return this class + */ + public MySQLConnection updateConnectionString(LoginParam... loginParams) { + this.connectString = getConnectionString(loginParams); + return this; + } + + /** + * Set the Connection String + * @param tablePrefixVariable New table prefix variable + * @return this class + */ + public MySQLConnection setTablePrefixVariable(String tablePrefixVariable) { + this.tablePrefixVariable = tablePrefixVariable; + return this; + } + + /** + * Set the current table Prefix + * @param tablePrefix New table prefix + * @return this class + */ + public MySQLConnection setTablePrefix(String tablePrefix) { + this.tablePrefix = tablePrefix; + return this; + } + + /** + * Get the current table Prefix + * @return the prefix + */ + public String getTablePrefix() { + return tablePrefix; + } + + /** + * Get the current jdbc connection string for mysql + * @param loginParams login parameters + * @return the string + */ + private String getConnectionString(LoginParam[] loginParams) { + boolean used = false;StringBuilder currentString = new StringBuilder(); + for (LoginParam param : loginParams) { + String currentChar = (used) ? "&" : "?";used = true; + currentString.append(currentChar).append(param.getValue()); + } + return currentString.toString(); + } + + /** + * Check if you are connected + * @return status of the connection + */ + public boolean isConnected() { + return (con != null); + } + + } -- 2.47.2 From 2d220c0211f441e7df6989b1e83f3ab3afac06b4 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 12:41:15 +0200 Subject: [PATCH 007/121] Cleaned up the MySQLConnection class --- .../SQLToolkit/drivers/MySQLConnection.java | 104 ++++++++++++------ 1 file changed, 70 insertions(+), 34 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 86b297c..ec658da 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -30,6 +30,7 @@ public class MySQLConnection { /** * Basic constructor for the connection + * * @param hostname MySQL server hostname * @param username MySQL server username * @param password MySQL server password @@ -44,10 +45,11 @@ public class MySQLConnection { /** * Advanced constructor for the connection - * @param hostname MySQL server hostname - * @param username MySQL server username - * @param password MySQL server password - * @param database MySQL server database + * + * @param hostname MySQL server hostname + * @param username MySQL server username + * @param password MySQL server password + * @param database MySQL server database * @param loginParams Login parameters */ public MySQLConnection(String hostname, String username, String password, String database, LoginParam... loginParams) { @@ -60,15 +62,20 @@ public class MySQLConnection { /** * Get a result from your server - * @param query Search query + * + * @param query Search query * @param params Optional parameters * @return ResultSet */ public ResultSet getResultSet(String query, Object... params) { query = (tablePrefix.isEmpty()) ? query : query.replace((tablePrefixVariable.isEmpty()) ? "$tp" : tablePrefixVariable, tablePrefix); - try { int start = 1; + try { + int start = 1; PreparedStatement ps = con.prepareStatement(query); - for (Object current : params) { ps.setObject(start, current);start++; } + for (Object current : params) { + ps.setObject(start, current); + start++; + } return ps.executeQuery(); } catch (Exception err) { LOG.error(err.getMessage()); @@ -78,7 +85,8 @@ public class MySQLConnection { /** * Get a result from your server (get the Manager) - * @param query Search query + * + * @param query Search query * @param params Optional parameters * @return ResultManager */ @@ -88,36 +96,46 @@ public class MySQLConnection { /** * Run a action with a result from your server - * @param query Search query + * + * @param query Search query * @param consumer consumer - * @param params Optional parameters + * @param params Optional parameters */ public void getResult(String query, SQLConsumer consumer, Object... params) { try { ResultSet resultSet = getResultSet(query, params); consumer.accept(resultSet); resultSet.close(); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } } /** * Update something on your server by query - * @param query Update query + * + * @param query Update query * @param params Optional parameters * @return this class */ public MySQLConnection update(String query, Object... params) { query = (tablePrefix.isEmpty()) ? query : query.replace((tablePrefixVariable.isEmpty()) ? "$tp" : tablePrefixVariable, tablePrefix); - try { int start = 1; + try { + int start = 1; PreparedStatement ps = con.prepareStatement(query); - for (Object current : params) { ps.setObject(start, current);start++; } + for (Object current : params) { + ps.setObject(start, current); + start++; + } ps.executeUpdate(); - } catch (Exception err) { err.printStackTrace(); } + } catch (Exception err) { + err.printStackTrace(); + } return this; } /** * Get the update de.gnmyt.SQLToolkit.manager for easier updating + * * @return Update de.gnmyt.SQLToolkit.manager */ public UpdateManager update() { @@ -126,6 +144,7 @@ public class MySQLConnection { /** * Get the update de.gnmyt.SQLToolkit.manager for easier updating (pre filled table) + * * @param tableName The name of the table * @return Update de.gnmyt.SQLToolkit.manager */ @@ -135,6 +154,7 @@ public class MySQLConnection { /** * Get the Database Selection for easier selection of tables (pre filled table) + * * @param tableName The name of the table * @return DatabaseSelection */ @@ -144,6 +164,7 @@ public class MySQLConnection { /** * Get the Database Selection for easier selection of tables + * * @return DatabaseSelection */ public DataBaseSelection select() { @@ -152,6 +173,7 @@ public class MySQLConnection { /** * Get the InsertManager for easier inserting to a table + * * @return InsertManager */ public InsertManager insert() { @@ -160,6 +182,7 @@ public class MySQLConnection { /** * Get the InsertManager for easier inserting to a table + * * @param tableName The name of the table you want to insert a object * @return InsertManager */ @@ -169,21 +192,24 @@ public class MySQLConnection { /** * Connect with your MySQL server + * * @return this class */ public MySQLConnection connect() { - if (!isConnected()) { try { - LOG.info("Connecting to " + hostname + " with user " + username + " to database " + database); + if (!isConnected()) { + try { + LOG.info("Connecting to " + hostname + " with user " + username + " to database " + database); Class.forName("com.mysql.cj.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://" + hostname + "/" + database + connectString, username, password); LOG.info("Connection established"); } catch (Exception exception) { if (exception.getMessage().contains("jdbc.Driver")) LOG.error("MySQL driver not found! Check your dependencies or install the JDBC Mysql Driver from https://dev.mysql.com/downloads/file/?id=498587"); - else if (exception.getMessage().contains("has not received any packets")) - LOG.error("No packets received from the server."); - else if (exception.getMessage().contains("denied for user")) LOG.error("Wrong username/password"); - else LOG.error(exception.getMessage()); + else if (exception.getMessage().contains("has not received any packets")) + LOG.error("No packets received from the server."); + else if (exception.getMessage().contains("denied for user")) + LOG.error("Wrong username/password"); + else LOG.error(exception.getMessage()); } } else LOG.warn("Already connected"); return this; @@ -191,6 +217,7 @@ public class MySQLConnection { /** * Disconnect from your MySQL Server + * * @return this class */ public MySQLConnection disconnect() { @@ -199,13 +226,16 @@ public class MySQLConnection { con.close(); con = null; LOG.info("Connection closed"); - } catch (Exception err) { LOG.error(err.getMessage()); } + } catch (Exception err) { + LOG.error(err.getMessage()); + } } else LOG.warn("Not connected. Please connect first"); return this; } /** * Update the Connection String + * * @param loginParams New login parameters * @return this class */ @@ -216,6 +246,7 @@ public class MySQLConnection { /** * Set the Connection String + * * @param tablePrefixVariable New table prefix variable * @return this class */ @@ -224,16 +255,6 @@ public class MySQLConnection { return this; } - /** - * Set the current table Prefix - * @param tablePrefix New table prefix - * @return this class - */ - public MySQLConnection setTablePrefix(String tablePrefix) { - this.tablePrefix = tablePrefix; - return this; - } - /** * Get the current table Prefix * @return the prefix @@ -242,15 +263,29 @@ public class MySQLConnection { return tablePrefix; } + /** + * Set the current table Prefix + * + * @param tablePrefix New table prefix + * @return this class + */ + public MySQLConnection setTablePrefix(String tablePrefix) { + this.tablePrefix = tablePrefix; + return this; + } + /** * Get the current jdbc connection string for mysql + * * @param loginParams login parameters * @return the string */ private String getConnectionString(LoginParam[] loginParams) { - boolean used = false;StringBuilder currentString = new StringBuilder(); + boolean used = false; + StringBuilder currentString = new StringBuilder(); for (LoginParam param : loginParams) { - String currentChar = (used) ? "&" : "?";used = true; + String currentChar = (used) ? "&" : "?"; + used = true; currentString.append(currentChar).append(param.getValue()); } return currentString.toString(); @@ -258,6 +293,7 @@ public class MySQLConnection { /** * Check if you are connected + * * @return status of the connection */ public boolean isConnected() { -- 2.47.2 From bbf1232684c78d494403c0fbaaacf825ee078a01 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 14:56:31 +0200 Subject: [PATCH 008/121] Removed the sql field & cleaned up the table generator --- .../de/gnmyt/SQLToolkit/fields/SQLField.java | 105 ------------------ .../SQLToolkit/generator/TableGenerator.java | 91 +++++++++------ .../SQLToolkit/manager/UpdateManager.java | 4 +- 3 files changed, 59 insertions(+), 141 deletions(-) delete mode 100644 src/main/java/de/gnmyt/SQLToolkit/fields/SQLField.java diff --git a/src/main/java/de/gnmyt/SQLToolkit/fields/SQLField.java b/src/main/java/de/gnmyt/SQLToolkit/fields/SQLField.java deleted file mode 100644 index c9501ad..0000000 --- a/src/main/java/de/gnmyt/SQLToolkit/fields/SQLField.java +++ /dev/null @@ -1,105 +0,0 @@ -package de.gnmyt.SQLToolkit.fields; - -import de.gnmyt.SQLToolkit.types.SQLType; - -public class SQLField { - - private String name = ""; - private String defaultValue = ""; - private String optionalParameter = ""; - private Integer length = 0; - private SQLType sqlType; - - /** - * Basic constructor for the SQL field - * @param sqlType Type of the SQL field - * @param name Name of the SQL field - * @param length Length of the SQL field - */ - public SQLField(SQLType sqlType, String name, Integer length) { - this.name = name; - this.sqlType = sqlType; - this.length = length; - } - - /** - * Set the default value for the SQL field - * @param defaultValue New default value - * @return this class - */ - public SQLField setDefaultValue(String defaultValue) { - this.defaultValue = defaultValue; - return this; - } - - /** - * Set optional parameter for the SQL field - * @param optionalParameter New optional parameter - * @return this class - */ - public SQLField setOptionalParameter(String optionalParameter) { - this.optionalParameter = optionalParameter; - return this; - } - - /** - * Set the length of the SQL field - * @param length New length - * @return this class - */ - public SQLField setLength(Integer length) { - this.length = length; - return this; - } - - /** - * Set the name of the SQL field - * @param name New name - * @return this class - */ - public SQLField setName(String name) { - this.name = name; - return this; - } - - /** - * Get the length of the SQL Field - * @return length - */ - public Integer getLength() { - return length; - } - - /** - * Get the default value of the SQL Field - * @return default value - */ - public String getDefaultValue() { - return defaultValue; - } - - /** - * Get the optional parameters of the SQL Field - * @return this class - */ - public String getOptionalParameter() { - return optionalParameter; - } - - /** - * Get the name of the SQL Field - * @return name - */ - public String getName() { - return name; - } - - /** - * Get the SQL Type of the SQL Field - * @return SQL Type - */ - public SQLType getSqlType() { - return sqlType; - } - -} diff --git a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java b/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java index 09d60d5..45dc142 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java +++ b/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java @@ -1,43 +1,32 @@ package de.gnmyt.SQLToolkit.generator; import de.gnmyt.SQLToolkit.drivers.MySQLConnection; -import de.gnmyt.SQLToolkit.fields.SQLField; -import de.gnmyt.SQLToolkit.manager.UpdateManager; +import de.gnmyt.SQLToolkit.types.SQLType; import java.util.ArrayList; -import java.util.concurrent.atomic.AtomicBoolean; public class TableGenerator { - private UpdateManager updateManager; - private ArrayList fields; - private boolean useID; - private String tableName; - MySQLConnection connection; + private final MySQLConnection connection; + + private final ArrayList fields; + private final String tableName; /** * Basic constructor for the TableGenerator + * * @param updateManager Existing update de.gnmyt.SQLToolkit.manager - * @param tableName Name of the table + * @param tableName Name of the table */ - public TableGenerator(UpdateManager updateManager, String tableName) { - this.updateManager = updateManager; + public TableGenerator(MySQLConnection connection, String tableName) { this.tableName = tableName; + this.connection = connection; this.fields = new ArrayList<>(); - connection = updateManager.getConnection(); - } - - /** - * Add an 'id' field to the Table - * @return this class - */ - public TableGenerator useID() { - this.useID = true; - return this; } /** * Add a field to the Table + * * @param field String of the field * @return this class */ @@ -48,29 +37,63 @@ public class TableGenerator { /** * Add a field to the Table - * @param field Existing SQL Field + * @param type The type of the field you want to add + * @param name The name of the field you want to add + * @param length The length of the field you want to add + * @param defaultValue The default value of the field (leave empty for no default value) + * @param optionalParameters Optional parameters you want to add to the statement * @return this class */ - public TableGenerator addField(SQLField field) { - String temp = ""; - temp += "`" + field.getName() + "` " + field.getSqlType().getValue() + "(" + field.getLength() + ")"; - temp += !field.getDefaultValue().isEmpty() ? " DEFAULT '" + field.getDefaultValue() + "'" : ""; - temp += !field.getOptionalParameter().isEmpty() ? " " + field.getOptionalParameter() : ""; - fields.add(temp); + public TableGenerator addField(SQLType type, String name, Integer length, String defaultValue, String... optionalParameters) { + StringBuilder temp = new StringBuilder(); + temp.append("`").append(name).append("` ").append(type.getValue()).append("(").append(length).append(")"); + temp.append(!defaultValue.isEmpty() ? " DEFAULT '" + defaultValue + "'" : ""); + + for (String optionalParameter : optionalParameters) { + temp.append(" ").append(optionalParameter); + } + + fields.add(temp.toString()); return this; } /** - * Create the table you wanted + * Add a field to the Table + * @param type The type of the field you want to add + * @param name The name of the field you want to add + * @param length The length of the field you want to add + * @return this class + */ + public TableGenerator addField(SQLType type, String name, Integer length) { + return addField(type, name, length, ""); + } + + /** + * Add a field to the Table + * @param type The type of the field you want to add + * @param name The name of the field you want to add + * @return this class + */ + public TableGenerator addField(SQLType type, String name) { + return addField(type, name, 255, ""); + } + + /** + * Creates the table you wanted * @return this class */ public TableGenerator create() { StringBuilder sb = new StringBuilder(); - sb.append("CREATE TABLE IF NOT EXISTS " + tableName + " ( "); - AtomicBoolean used = new AtomicBoolean(false); - if (useID) sb.append(used.get() ? ", " : "").append("`id` INT(255) NOT NULL AUTO_INCREMENT");used.set(true); - fields.forEach(string -> { sb.append(used.get() ? ", " : "").append(string);used.set(true); }); - if (useID) sb.append(used.get() ? ", " : "").append("PRIMARY KEY (`id`)");used.set(true); + sb.append("CREATE TABLE IF NOT EXISTS ").append(tableName).append(" ( "); + + sb.append("`id` INT(255) NOT NULL AUTO_INCREMENT"); + + for (String field : fields) { + sb.append(", ").append(field); + } + + sb.append(", PRIMARY KEY (`id`)"); + sb.append(" ) ENGINE = InnoDB;"); connection.update(sb.toString()); return this; diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java index 54299e4..ee1d55d 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java @@ -188,7 +188,7 @@ public class UpdateManager { * @return the de.gnmyt.SQLToolkit.generator */ public TableGenerator generateTable(String tableName) { - return new TableGenerator(this, tableName); + return new TableGenerator(this.getConnection(), tableName); } /** @@ -196,7 +196,7 @@ public class UpdateManager { * @return the de.gnmyt.SQLToolkit.generator */ public TableGenerator generateTable() { - return (tableName.isEmpty()) ? null : new TableGenerator(this, tableName); + return (tableName.isEmpty()) ? null : new TableGenerator(this.getConnection(), tableName); } } -- 2.47.2 From 2532257f53dcb3d710313cd20b65ed96cd303082 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 15:50:40 +0200 Subject: [PATCH 009/121] Removed the LogLevelType.java file --- .../de/gnmyt/SQLToolkit/types/LogLevelType.java | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 src/main/java/de/gnmyt/SQLToolkit/types/LogLevelType.java diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/LogLevelType.java b/src/main/java/de/gnmyt/SQLToolkit/types/LogLevelType.java deleted file mode 100644 index 1d743ca..0000000 --- a/src/main/java/de/gnmyt/SQLToolkit/types/LogLevelType.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.gnmyt.SQLToolkit.types; - -public enum LogLevelType { - - NONE("Sends nothing"), - LOW("Sends Warnings & Errors"), - ALL("Sends Infos, Warnings & Errors"); - - /** - * Basic constructor for the LogLevelType enum - * @param info Info for documentation - */ - LogLevelType(String info) { } - -} -- 2.47.2 From 1ddfecd9077d0d9572012bc0d0504f68000c5868 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 15:51:19 +0200 Subject: [PATCH 010/121] Made the value variable final --- src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java b/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java index ac539e4..2f86856 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java @@ -11,7 +11,7 @@ public enum LoginParam { USE_TIMEZONE("useTimezone=true"), TIMEZONE_UTC("serverTimezone=UTC"); - private String value; + private final String value; /** * Basic constructor for the LoginParam enum -- 2.47.2 From 2106c277997fc71e9f455cd9f9f9010f71b904c8 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 16:40:06 +0200 Subject: [PATCH 011/121] Added the boolean sql type --- src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java b/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java index 2c9adb4..c90ba5a 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java @@ -5,7 +5,8 @@ public enum SQLType { STRING("VARCHAR"), INTEGER("INT"), DATE("DATE"), - DATETIME("DATETIME"); + DATETIME("DATETIME"), + BOOLEAN("BOOLEAN"); private String value = ""; -- 2.47.2 From f83d806674bb1774240ea1b33c0f4e628feb007e Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 16:40:35 +0200 Subject: [PATCH 012/121] Added the table field class --- .../de/gnmyt/SQLToolkit/types/TableField.java | 189 ++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 src/main/java/de/gnmyt/SQLToolkit/types/TableField.java diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java b/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java new file mode 100644 index 0000000..ce6a25c --- /dev/null +++ b/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java @@ -0,0 +1,189 @@ +package de.gnmyt.SQLToolkit.types; + +public class TableField { + + private String name; + private String type; + private int length; + private boolean allowNull; + private String defaultValue; + private String[] extra; + + /** + * Basic constructor of the {@link TableField} + * @param name The name of the field + * @param type The type of the field + * @param length The length of the field + * @param allowNull true if you want to allow a NULL in the field, otherwise false + * @param defaultValue The default value of the field + */ + public TableField(String name, String type, int length, boolean allowNull, String defaultValue) { + this.name = name; + this.type = type; + this.length = length; + this.allowNull = allowNull; + this.defaultValue = defaultValue; + } + + /** + * Simple constructor of the {@link TableField} + * @param name The name of the field + */ + public TableField(String name) { + this.name = name; + } + + /** + * Simple constructor with no prefilled variables + */ + public TableField() { + + } + + /** + * Gets the name of the field + * @return the name of the field + */ + public String getName() { + return name; + } + + /** + * Gets the type of the field + * @return the type of the field + */ + public String getType() { + return type; + } + + /** + * Gets the length of the field + * @return the length of the field + */ + public int getLength() { + return length != 0 ? length : 255; + } + + /** + * Gets the extra of the field + * @return the extra of the field + */ + public String[] getExtra() { + return extra; + } + + /** + * Gets the extras of the field as a string + * @return the extras of the field as a string + */ + public String getExtras() { + StringBuilder extras = new StringBuilder(); + for (int i=0; i < getExtra().length; i++) + extras.append(getExtra()[i]); + return extras.toString(); + } + + /** + * Gets the allowNull variable as sql string + * @return the allowNull variable as sql string + */ + public String getNullAsSQL() { + return !isAllowNull() ? "NOT NULL" : ""; + } + + /** + * Gets the default value of the field + * @return the default value of the field + */ + public String getDefaultValue() { + return !defaultValue.isEmpty() ? "DEFAULT '" + defaultValue + "'" : ""; + } + + /** + * Checks if the field is allowed to have a NULL + * @return true if the field is NULL, otherwise false + */ + public boolean isAllowNull() { + return allowNull; + } + + /** + * Sets the name of the field + * @param name The new name of the field + * @return this class + */ + public TableField setName(String name) { + this.name = name; + return this; + } + + /** + * Sets the type of the field + * @param type The new type of the field + * @return this class + */ + public TableField setType(String type) { + this.type = type; + return this; + } + + /** + * Sets the type of the field (with a sql type) + * @param type The new type of the field + * @return this class + */ + public TableField setType(SQLType type) { + this.type = type.getValue(); + return this; + } + + /** + * Sets the length of the field + * @param length The new length of the field + * @return this class + */ + public TableField setLength(int length) { + this.length = length; + return this; + } + + /** + * Sets the allowNull variable of the field + * @param allowNull true if you want to allow a NULL in the field, otherwise false + * @return this class + */ + public TableField setAllowNull(boolean allowNull) { + this.allowNull = allowNull; + return this; + } + + /** + * Sets the default value of the field + * @param defaultValue The new default value of the field + * @return this class + */ + public TableField setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + return this; + } + + /** + * Sets the extras of the field + * @param extra The new extras of the field + * @return this class + */ + public TableField setExtra(String[] extra) { + this.extra = extra; + return this; + } + + /** + * Gets the generated sql row + * @return the generated sql row + */ + public String generateSQLRow() { + return String.format("`%s` %s(%d) %s %s %s", getName(), getType(), getLength(), getNullAsSQL(), getDefaultValue(), getExtras()); + } + + +} -- 2.47.2 From 50fc5d50d54a75ecdd00f2234a711c7faa7ae771 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 16:41:30 +0200 Subject: [PATCH 013/121] The table generator can now add fields by the TableField class --- .../de/gnmyt/SQLToolkit/generator/TableGenerator.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java b/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java index 45dc142..743ed8f 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java +++ b/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java @@ -2,6 +2,7 @@ package de.gnmyt.SQLToolkit.generator; import de.gnmyt.SQLToolkit.drivers.MySQLConnection; import de.gnmyt.SQLToolkit.types.SQLType; +import de.gnmyt.SQLToolkit.types.TableField; import java.util.ArrayList; @@ -14,8 +15,6 @@ public class TableGenerator { /** * Basic constructor for the TableGenerator - * - * @param updateManager Existing update de.gnmyt.SQLToolkit.manager * @param tableName Name of the table */ public TableGenerator(MySQLConnection connection, String tableName) { @@ -68,6 +67,11 @@ public class TableGenerator { return addField(type, name, length, ""); } + public TableGenerator addField(TableField field) { + fields.add(field.generateSQLRow()); + return this; + } + /** * Add a field to the Table * @param type The type of the field you want to add -- 2.47.2 From 5f5f425c04fe03a4c4a538f6cc8ddda279c2a7a5 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 16:42:17 +0200 Subject: [PATCH 014/121] Added the sql table class --- .../de/gnmyt/SQLToolkit/storage/SQLTable.java | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java new file mode 100644 index 0000000..81947a0 --- /dev/null +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -0,0 +1,139 @@ +package de.gnmyt.SQLToolkit.storage; + +import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import de.gnmyt.SQLToolkit.types.SQLType; +import de.gnmyt.SQLToolkit.types.TableField; + +import java.util.ArrayList; + +public abstract class SQLTable { + + private MySQLConnection connection; + private ArrayList tableFields; + + /** + * The basic constructor of the {@link SQLTable} + * @param connection The mysql connection you want to use + */ + public SQLTable(MySQLConnection connection) { + this.connection = connection; + } + + protected abstract String tableName(); + + protected abstract void tableFields(); + + /** + * Adds a string to the table (without allowNull) + * @param name The name of the string you want to add + * @param length The length of the string you want to add + * @param defaultValue The default value of the string you want to add (leave empty if you don't want to use one) + * @param extras The extras you want to add to the string + */ + protected void string(String name, int length, String defaultValue, String... extras) { + custom(SQLType.STRING.getValue(), name, length, false, defaultValue, extras); + } + + /** + * Adds a string to the table (with allowNull) + * @param name The name of the string you want to add + * @param length The length of the string you want to add + * @param allowNull true if you want to allow a NULL in the field, otherwise false + * @param defaultValue The default value of the string you want to add (leave empty if you don't want to use one) + * @param extras The extras you want to add to the string + */ + protected void string(String name, int length, boolean allowNull, String defaultValue, String... extras) { + custom(SQLType.STRING.getValue(), name, length, allowNull, defaultValue, extras); + } + + /** + * Adds an integer to the table (without allowNull) + * @param name The name of the integer you want to add + * @param length The length of the integer you want to add + * @param defaultValue The default value of the integer you want to add (leave empty if you don't want to use one) + * @param extras The extras you want to add to the integer + */ + protected void integer(String name, int length, String defaultValue, String... extras) { + custom(SQLType.INTEGER.getValue(), name, length, false, defaultValue, extras); + } + + /** + * Adds an integer to the table (with allowNull) + * @param name The name of the integer you want to add + * @param length The length of the integer you want to add + * @param allowNull true if you want to allow a NULL in the field, otherwise false + * @param defaultValue The default value of the integer you want to add (leave empty if you don't want to use one) + * @param extras The extras you want to add to the integer + */ + protected void integer(String name, int length, boolean allowNull, String defaultValue, String... extras) { + custom(SQLType.INTEGER.getValue(), name, length, allowNull, defaultValue, extras); + } + + /** + * Adds a boolean to the table (without allowNull) + * @param name The name of the boolean you want to add + * @param length The length of the boolean you want to add + * @param defaultValue The default value of the boolean you want to add (leave empty if you don't want to use one) + * @param extras The extras you want to add to the boolean + */ + protected void bool(String name, int length, String defaultValue, String... extras) { + custom(SQLType.BOOLEAN.getValue(), name, length, false, defaultValue, extras); + } + + /** + * Adds a boolean to the table (with allowNull) + * @param name The name of the boolean you want to add + * @param length The length of the boolean you want to add + * @param allowNull true if you want to allow a NULL in the field, otherwise false + * @param defaultValue The default value of the boolean you want to add (leave empty if you don't want to use one) + * @param extras The extras you want to add to the boolean + */ + protected void bool(String name, int length, boolean allowNull, String defaultValue, String... extras) { + custom(SQLType.BOOLEAN.getValue(), name, length, allowNull, defaultValue, extras); + } + + /** + * Adds a custom field to the table + * @param type The type of the field + * @param name The name of the field + * @param length The length of the field + * @param allowNull true if you want to allow a NULL in the field, otherwise false + * @param defaultValue The default value of the field + * @param extras The extras that you want to add + */ + protected void custom(String type, String name, int length, boolean allowNull, String defaultValue, String... extras) { + custom(new TableField(name, type, length, allowNull, defaultValue).setExtra(extras)); + } + + /** + * Adds a table field to the table + * @param tableField The table field you want to add + */ + protected void custom(TableField tableField) { + tableFields.add(tableField); + } + + /** + * Generates the table sql + * @return the table sql + */ + public String generateSQL() { + tableFields = new ArrayList<>(); + StringBuilder query = new StringBuilder(); + + // Add table fields + integer("id", 255, false, "", "AUTO_INCREMENT"); + tableFields(); + + // Create the query + query.append("CREATE TABLE IF NOT EXISTS ").append(tableName()).append("("); + for (TableField tableField : tableFields) + query.append(tableField.generateSQLRow()).append(", "); + query.append("PRIMARY KEY (id)"); + query.append(") ENGINE=InnoDB;"); + + // Return the query + return query.toString(); + } + +} -- 2.47.2 From ab81160ac433bf1733ba0c78d13f77b0e7b19305 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 16:42:40 +0200 Subject: [PATCH 015/121] Added the table factory class --- .../SQLToolkit/factory/TableFactory.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java diff --git a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java b/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java new file mode 100644 index 0000000..8f83d6c --- /dev/null +++ b/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java @@ -0,0 +1,38 @@ +package de.gnmyt.SQLToolkit.factory; + +import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import de.gnmyt.SQLToolkit.storage.SQLTable; + +import java.util.HashMap; + +public class TableFactory { + + private final HashMap, SQLTable> REGISTERED_TABLES = new HashMap<>(); + + private MySQLConnection connection; + + public TableFactory(MySQLConnection connection) { + this.connection = connection; + } + + /** + * Registers and creates a sql table + * @param table The table you want to register + * @return this class + */ + public TableFactory register(SQLTable table) { + connection.update(table.generateSQL()); + REGISTERED_TABLES.put(table.getClass(), table); + return this; + } + + /** + * Gets a registered table from the list + * @param tableClass The class of the table you want to get + * @return the instance of the table + */ + public SQLTable getTable(Class tableClass) { + return REGISTERED_TABLES.get(tableClass); + } + +} -- 2.47.2 From 961778bb0ee5c51d1a5605a4529fef0d55c3635e Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 16:43:26 +0200 Subject: [PATCH 016/121] Integrated the table factory to the mysql connection --- .../de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index ec658da..0e141ba 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -1,6 +1,7 @@ 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; @@ -27,6 +28,7 @@ public class MySQLConnection { private String tablePrefixVariable = ""; private String connectString = ""; private Connection con; + private TableFactory tableFactory = new TableFactory(this); /** * Basic constructor for the connection @@ -190,6 +192,14 @@ public class MySQLConnection { return new InsertManager(this, tableName); } + /** + * Gets the table factory + * @return the table factory + */ + public TableFactory getTableFactory() { + return tableFactory; + } + /** * Connect with your MySQL server * -- 2.47.2 From 2fecd3b4028034dde435e2caac3c7d520f256144 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 16:44:15 +0200 Subject: [PATCH 017/121] Cleaned up code --- .../SQLToolkit/drivers/MySQLConnection.java | 4 +- .../SQLToolkit/factory/TableFactory.java | 4 +- .../SQLToolkit/generator/TableGenerator.java | 19 +- .../SQLToolkit/manager/DataBaseSelection.java | 34 +++- .../SQLToolkit/manager/InsertManager.java | 16 +- .../SQLToolkit/manager/ResultManager.java | 94 +++++++--- .../SQLToolkit/manager/UpdateManager.java | 47 +++-- .../de/gnmyt/SQLToolkit/storage/SQLTable.java | 64 ++++--- .../de/gnmyt/SQLToolkit/types/LoginParam.java | 2 + .../de/gnmyt/SQLToolkit/types/SQLType.java | 2 + .../de/gnmyt/SQLToolkit/types/TableField.java | 176 ++++++++++-------- 11 files changed, 301 insertions(+), 161 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 0e141ba..5ed992a 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -28,7 +28,7 @@ public class MySQLConnection { private String tablePrefixVariable = ""; private String connectString = ""; private Connection con; - private TableFactory tableFactory = new TableFactory(this); + private final TableFactory tableFactory = new TableFactory(this); /** * Basic constructor for the connection @@ -194,6 +194,7 @@ public class MySQLConnection { /** * Gets the table factory + * * @return the table factory */ public TableFactory getTableFactory() { @@ -267,6 +268,7 @@ public class MySQLConnection { /** * Get the current table Prefix + * * @return the prefix */ public String getTablePrefix() { diff --git a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java b/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java index 8f83d6c..58fe364 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java +++ b/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java @@ -9,7 +9,7 @@ public class TableFactory { private final HashMap, SQLTable> REGISTERED_TABLES = new HashMap<>(); - private MySQLConnection connection; + private final MySQLConnection connection; public TableFactory(MySQLConnection connection) { this.connection = connection; @@ -17,6 +17,7 @@ public class TableFactory { /** * Registers and creates a sql table + * * @param table The table you want to register * @return this class */ @@ -28,6 +29,7 @@ public class TableFactory { /** * Gets a registered table from the list + * * @param tableClass The class of the table you want to get * @return the instance of the table */ diff --git a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java b/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java index 743ed8f..b8a2ee4 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java +++ b/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java @@ -15,7 +15,8 @@ public class TableGenerator { /** * Basic constructor for the TableGenerator - * @param tableName Name of the table + * + * @param tableName Name of the table */ public TableGenerator(MySQLConnection connection, String tableName) { this.tableName = tableName; @@ -36,10 +37,11 @@ public class TableGenerator { /** * Add a field to the Table - * @param type The type of the field you want to add - * @param name The name of the field you want to add - * @param length The length of the field you want to add - * @param defaultValue The default value of the field (leave empty for no default value) + * + * @param type The type of the field you want to add + * @param name The name of the field you want to add + * @param length The length of the field you want to add + * @param defaultValue The default value of the field (leave empty for no default value) * @param optionalParameters Optional parameters you want to add to the statement * @return this class */ @@ -58,8 +60,9 @@ public class TableGenerator { /** * Add a field to the Table - * @param type The type of the field you want to add - * @param name The name of the field you want to add + * + * @param type The type of the field you want to add + * @param name The name of the field you want to add * @param length The length of the field you want to add * @return this class */ @@ -74,6 +77,7 @@ public class TableGenerator { /** * Add a field to the Table + * * @param type The type of the field you want to add * @param name The name of the field you want to add * @return this class @@ -84,6 +88,7 @@ public class TableGenerator { /** * Creates the table you wanted + * * @return this class */ public TableGenerator create() { diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java b/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java index 973fcca..a553bd9 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java @@ -22,8 +22,9 @@ public class DataBaseSelection { /** * Basic constructor for selection + * * @param connection The current Connection - * @param tableName The table name + * @param tableName The table name */ public DataBaseSelection(MySQLConnection connection, String tableName) { this.whereList = new HashMap<>(); @@ -35,6 +36,7 @@ public class DataBaseSelection { /** * Basic constructor for selection + * * @param connection The current Connection */ public DataBaseSelection(MySQLConnection connection) { @@ -46,6 +48,7 @@ public class DataBaseSelection { /** * Get the temp-generated parameters + * * @return ArrayList of parameters */ private ArrayList getTempParams() { @@ -57,6 +60,7 @@ public class DataBaseSelection { /** * Sets the table name + * * @param tableName The table name * @return this class */ @@ -67,8 +71,9 @@ public class DataBaseSelection { /** * Adding another 'where'-statement + * * @param column Table column name - * @param value Table value name + * @param value Table value name * @return this class */ public DataBaseSelection where(String column, Object value) { @@ -78,6 +83,7 @@ public class DataBaseSelection { /** * Sets the limit of the rows + * * @param limit The new limit * @return this class */ @@ -88,6 +94,7 @@ public class DataBaseSelection { /** * Sets the limit of the rows + * * @param limit The new limit * @return this class */ @@ -98,6 +105,7 @@ public class DataBaseSelection { /** * Get the ResultManager + * * @return ResultManager */ public ResultManager getResult() { @@ -106,6 +114,7 @@ public class DataBaseSelection { /** * Get the ResultSet + * * @return ResultSet */ public ResultSet getResultSet() { @@ -114,6 +123,7 @@ public class DataBaseSelection { /** * Debug the current Statement + * * @return this class */ public DataBaseSelection printStatement() { @@ -121,16 +131,20 @@ public class DataBaseSelection { messageBuilder.append(processStatement()); messageBuilder.append(" | paramsยป "); AtomicBoolean added = new AtomicBoolean(false); - getTempParams().forEach(v -> { messageBuilder.append((added.get()) ? ", " : "").append(v);added.set(true); }); + getTempParams().forEach(v -> { + messageBuilder.append((added.get()) ? ", " : "").append(v); + added.set(true); + }); StackTraceElement[] st = Thread.currentThread().getStackTrace(); - StackTraceElement stack = st[st.length-1]; - LOG.debug("DEBUG <" + stack.getFileName()+":"+stack.getLineNumber() + "> Statement: " + messageBuilder.toString()); + StackTraceElement stack = st[st.length - 1]; + LOG.debug("DEBUG <" + stack.getFileName() + ":" + stack.getLineNumber() + "> Statement: " + messageBuilder); return this; } /** * Adding another factors - * @param query MySQL Query + * + * @param query MySQL Query * @param params Optional parameters for the Query * @return this class */ @@ -142,13 +156,19 @@ public class DataBaseSelection { /** * Get the current statement query + * * @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(" = ? "); }); + 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(); diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java index fefa061..1430b63 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java @@ -7,12 +7,13 @@ import java.util.concurrent.atomic.AtomicBoolean; public class InsertManager { - private MySQLConnection connection; + private final MySQLConnection connection; private String tableName; - private HashMap values; + private final HashMap values; /** * Basic constructor for the InsertManager + * * @param connection The current connection */ public InsertManager(MySQLConnection connection) { @@ -22,8 +23,9 @@ public class InsertManager { /** * Constructor with direct tableName integration + * * @param connection The current connection - * @param tableName The name of the table + * @param tableName The name of the table */ public InsertManager(MySQLConnection connection, String tableName) { this.connection = connection; @@ -33,6 +35,7 @@ public class InsertManager { /** * Optionally add the tableName / Change the name of the table + * * @param tableName The name of the table */ public void from(String tableName) { @@ -41,8 +44,9 @@ public class InsertManager { /** * Query value + * * @param fieldName The name of the column - * @param value The value of the object you want to insert + * @param value The value of the object you want to insert * @return this class */ public InsertManager value(String fieldName, Object value) { @@ -52,6 +56,7 @@ public class InsertManager { /** * Prepares the SQL Query + * * @return the SQL Query */ public String prepareStatement() { @@ -66,7 +71,7 @@ public class InsertManager { query.append(")"); if (values.size() > 0) query.append(" VALUES ("); AtomicBoolean used_values = new AtomicBoolean(false); - for (int i=0; i < values.size(); i++) { + for (int i = 0; i < values.size(); i++) { if (used_values.get()) query.append(", "); used_values.set(true); query.append("?"); @@ -77,6 +82,7 @@ public class InsertManager { /** * Execute the current SQL query + * * @return this class */ public InsertManager execute() { diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java index 7e826af..5b7b136 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java @@ -16,6 +16,7 @@ public class ResultManager { /** * Basic constructor for the ResultManager + * * @param resultSet Existing ResultSet */ public ResultManager(ResultSet resultSet) { @@ -24,6 +25,7 @@ public class ResultManager { /** * Getting the ResultSet + * * @return ResultSet */ public ResultSet getResultSet() { @@ -32,92 +34,140 @@ public class ResultManager { /** * Get the Object of an Result + * * @param column Table column * @return Object */ public Object getObject(String column) { - try { while (resultSet.next()) { return resultSet.getObject(column); } - } catch (Exception err) { LOG.error(err.getMessage()); } + try { + while (resultSet.next()) { + return resultSet.getObject(column); + } + } catch (Exception err) { + LOG.error(err.getMessage()); + } return null; } /** * Get the String of an Result + * * @param column Table column * @return String */ public String getString(String column) { - try { while (resultSet.next()) { return resultSet.getString(column); } - } catch (Exception err) { LOG.error(err.getMessage()); } + try { + while (resultSet.next()) { + return resultSet.getString(column); + } + } catch (Exception err) { + LOG.error(err.getMessage()); + } return ""; } /** * Get the Integer of an Result + * * @param column Table column * @return Integer */ public Integer getInteger(String column) { - try { while (resultSet.next()) { return resultSet.getInt(column); } - } catch (Exception err) { LOG.error(err.getMessage()); } + try { + while (resultSet.next()) { + return resultSet.getInt(column); + } + } catch (Exception err) { + LOG.error(err.getMessage()); + } return 0; } /** * Get the Boolean of an Result + * * @param column Table column * @return Boolean */ public Boolean getBoolean(String column) { - try { while (resultSet.next()) { return resultSet.getBoolean(column); } - } catch (Exception err) { LOG.error(err.getMessage()); } + try { + while (resultSet.next()) { + return resultSet.getBoolean(column); + } + } catch (Exception err) { + LOG.error(err.getMessage()); + } return false; } public Timestamp getTimestamp(String column) { - try { while (resultSet.next()) { return resultSet.getTimestamp(column); } - } catch (Exception err) { LOG.error(err.getMessage()); } + try { + while (resultSet.next()) { + return resultSet.getTimestamp(column); + } + } catch (Exception err) { + LOG.error(err.getMessage()); + } return null; } /** * Get the count of the Result + * * @return Integer (Count) */ public Integer getRowCount() { - int count=0; - try { while (resultSet.next()) { count++; } } catch (Exception err) { LOG.error(err.getMessage()); } + int count = 0; + try { + while (resultSet.next()) { + count++; + } + } catch (Exception err) { + LOG.error(err.getMessage()); + } return count; } /** * Get a List of all Results + * * @param column Table column * @return ArrayList of Result */ public ArrayList getList(String column) { ArrayList results = new ArrayList<>(); - try { while (resultSet.next()) { results.add(resultSet.getString(column)); } - } catch (Exception err) { LOG.error(err.getMessage()); } + try { + while (resultSet.next()) { + results.add(resultSet.getString(column)); + } + } catch (Exception err) { + LOG.error(err.getMessage()); + } return results; } /** * Get a List of all Results for 2 columns - * @param column Table column #1 + * + * @param column Table column #1 * @param column2 Table column #2 * @return HashMap of Result */ public HashMap getMultipleList(String column, String column2) { HashMap results = new HashMap<>(); - try { while (resultSet.next()) { - results.put(resultSet.getString(column), resultSet.getString(column2)); } - } catch (Exception err) { LOG.error(err.getMessage()); } + try { + while (resultSet.next()) { + results.put(resultSet.getString(column), resultSet.getString(column2)); + } + } catch (Exception err) { + LOG.error(err.getMessage()); + } return results; } /** * Get a list of all results with all columns + * * @return ArrayList with the result */ public ArrayList> getList() { @@ -125,13 +175,15 @@ public class ResultManager { try { while (resultSet.next()) { HashMap result = new HashMap<>(); - for (int i=0; i < resultSet.getMetaData().getColumnCount(); i++) { - String columnName = resultSet.getMetaData().getColumnName(i+1); + for (int i = 0; i < resultSet.getMetaData().getColumnCount(); i++) { + String columnName = resultSet.getMetaData().getColumnName(i + 1); result.put(columnName, resultSet.getObject(columnName)); } results.add(result); } - } catch (Exception err) { LOG.error(err.getMessage()); } + } catch (Exception err) { + LOG.error(err.getMessage()); + } return results; } diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java index ee1d55d..4430e2c 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java @@ -12,13 +12,14 @@ public class UpdateManager { private final Logger LOG = MySQLConnection.LOG; - private MySQLConnection connection; + private final MySQLConnection connection; private String tableName; - private HashMap whereList; - private HashMap setList; + private final HashMap whereList; + private final HashMap setList; /** * Basic constructor for the UpdateManager + * * @param connection Existing MySQL connection */ public UpdateManager(MySQLConnection connection) { @@ -29,10 +30,11 @@ public class UpdateManager { /** * Basic constructor for the UpdateManager + * * @param connection Existing MySQL connection - * @param tableName Table name + * @param tableName Table name */ - public UpdateManager(MySQLConnection connection, String tableName){ + public UpdateManager(MySQLConnection connection, String tableName) { this.connection = connection; toTable(tableName); this.whereList = new HashMap<>(); @@ -41,6 +43,7 @@ public class UpdateManager { /** * Get the parameters for the SQL statement + * * @return the parameters */ private ArrayList getTempParams() { @@ -52,6 +55,7 @@ public class UpdateManager { /** * Get the current connection + * * @return MySQL connection */ public MySQLConnection getConnection() { @@ -60,6 +64,7 @@ public class UpdateManager { /** * Print the deletion statement + * * @return this class */ public UpdateManager printDeleteStatement() { @@ -67,15 +72,19 @@ public class UpdateManager { messageBuilder.append(processDeleteStatement()); messageBuilder.append(" | paramsยป "); AtomicBoolean added = new AtomicBoolean(false); - whereList.values().forEach(v -> { messageBuilder.append((added.get()) ? ", " : "").append(v);added.set(true); }); + whereList.values().forEach(v -> { + messageBuilder.append((added.get()) ? ", " : "").append(v); + added.set(true); + }); StackTraceElement[] st = Thread.currentThread().getStackTrace(); - StackTraceElement stack = st[st.length-1]; - LOG.debug("DEBUG <" + stack.getFileName()+":"+stack.getLineNumber() + "> Statement: " + messageBuilder.toString()); + StackTraceElement stack = st[st.length - 1]; + LOG.debug("DEBUG <" + stack.getFileName() + ":" + stack.getLineNumber() + "> Statement: " + messageBuilder); return this; } /** * Print the update statement + * * @return this class */ public UpdateManager printUpdateStatement() { @@ -83,15 +92,19 @@ public class UpdateManager { messageBuilder.append(processUpdateStatement()); messageBuilder.append(" | paramsยป "); AtomicBoolean added = new AtomicBoolean(false); - getTempParams().forEach(v -> { messageBuilder.append((added.get()) ? ", " : "").append(v);added.set(true); }); + getTempParams().forEach(v -> { + messageBuilder.append((added.get()) ? ", " : "").append(v); + added.set(true); + }); StackTraceElement[] st = Thread.currentThread().getStackTrace(); - StackTraceElement stack = st[st.length-1]; - LOG.debug("DEBUG <" + stack.getFileName()+":"+stack.getLineNumber() + "> Statement: " + messageBuilder.toString()); + StackTraceElement stack = st[st.length - 1]; + LOG.debug("DEBUG <" + stack.getFileName() + ":" + stack.getLineNumber() + "> Statement: " + messageBuilder); return this; } /** * Change the tableName + * * @param tableName New tableName * @return this class */ @@ -102,8 +115,9 @@ public class UpdateManager { /** * Add a 'where'-clause + * * @param column Table column - * @param value Value of the column + * @param value Value of the column * @return this class */ public UpdateManager where(String column, Object value) { @@ -113,8 +127,9 @@ public class UpdateManager { /** * Add a 'set'-clause + * * @param column Table column - * @param value Value of the column + * @param value Value of the column * @return this class */ public UpdateManager set(String column, Object value) { @@ -124,6 +139,7 @@ public class UpdateManager { /** * Delete the entries with your current conditions + * * @return this class */ public UpdateManager delete() { @@ -133,6 +149,7 @@ public class UpdateManager { /** * Update the entries with your current conditions + * * @return this class */ public UpdateManager update() { @@ -142,6 +159,7 @@ public class UpdateManager { /** * Get the Query of the 'update'-Statement + * * @return the Statement */ private String processUpdateStatement() { @@ -166,6 +184,7 @@ public class UpdateManager { /** * Get the Query of the 'delete'-Statement + * * @return */ private String processDeleteStatement() { @@ -184,6 +203,7 @@ public class UpdateManager { /** * Generate a new Table (with prefilled tableName) + * * @param tableName Name of the new table * @return the de.gnmyt.SQLToolkit.generator */ @@ -193,6 +213,7 @@ public class UpdateManager { /** * Generate a new Table + * * @return the de.gnmyt.SQLToolkit.generator */ public TableGenerator generateTable() { diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index 81947a0..d03e2d1 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -8,11 +8,12 @@ import java.util.ArrayList; public abstract class SQLTable { - private MySQLConnection connection; + private final MySQLConnection connection; private ArrayList tableFields; /** * The basic constructor of the {@link SQLTable} + * * @param connection The mysql connection you want to use */ public SQLTable(MySQLConnection connection) { @@ -25,10 +26,11 @@ public abstract class SQLTable { /** * Adds a string to the table (without allowNull) - * @param name The name of the string you want to add - * @param length The length of the string you want to add + * + * @param name The name of the string you want to add + * @param length The length of the string you want to add * @param defaultValue The default value of the string you want to add (leave empty if you don't want to use one) - * @param extras The extras you want to add to the string + * @param extras The extras you want to add to the string */ protected void string(String name, int length, String defaultValue, String... extras) { custom(SQLType.STRING.getValue(), name, length, false, defaultValue, extras); @@ -36,11 +38,12 @@ public abstract class SQLTable { /** * Adds a string to the table (with allowNull) - * @param name The name of the string you want to add - * @param length The length of the string you want to add - * @param allowNull true if you want to allow a NULL in the field, otherwise false + * + * @param name The name of the string you want to add + * @param length The length of the string you want to add + * @param allowNull true if you want to allow a NULL in the field, otherwise false * @param defaultValue The default value of the string you want to add (leave empty if you don't want to use one) - * @param extras The extras you want to add to the string + * @param extras The extras you want to add to the string */ protected void string(String name, int length, boolean allowNull, String defaultValue, String... extras) { custom(SQLType.STRING.getValue(), name, length, allowNull, defaultValue, extras); @@ -48,10 +51,11 @@ public abstract class SQLTable { /** * Adds an integer to the table (without allowNull) - * @param name The name of the integer you want to add - * @param length The length of the integer you want to add + * + * @param name The name of the integer you want to add + * @param length The length of the integer you want to add * @param defaultValue The default value of the integer you want to add (leave empty if you don't want to use one) - * @param extras The extras you want to add to the integer + * @param extras The extras you want to add to the integer */ protected void integer(String name, int length, String defaultValue, String... extras) { custom(SQLType.INTEGER.getValue(), name, length, false, defaultValue, extras); @@ -59,11 +63,12 @@ public abstract class SQLTable { /** * Adds an integer to the table (with allowNull) - * @param name The name of the integer you want to add - * @param length The length of the integer you want to add - * @param allowNull true if you want to allow a NULL in the field, otherwise false + * + * @param name The name of the integer you want to add + * @param length The length of the integer you want to add + * @param allowNull true if you want to allow a NULL in the field, otherwise false * @param defaultValue The default value of the integer you want to add (leave empty if you don't want to use one) - * @param extras The extras you want to add to the integer + * @param extras The extras you want to add to the integer */ protected void integer(String name, int length, boolean allowNull, String defaultValue, String... extras) { custom(SQLType.INTEGER.getValue(), name, length, allowNull, defaultValue, extras); @@ -71,10 +76,11 @@ public abstract class SQLTable { /** * Adds a boolean to the table (without allowNull) - * @param name The name of the boolean you want to add - * @param length The length of the boolean you want to add + * + * @param name The name of the boolean you want to add + * @param length The length of the boolean you want to add * @param defaultValue The default value of the boolean you want to add (leave empty if you don't want to use one) - * @param extras The extras you want to add to the boolean + * @param extras The extras you want to add to the boolean */ protected void bool(String name, int length, String defaultValue, String... extras) { custom(SQLType.BOOLEAN.getValue(), name, length, false, defaultValue, extras); @@ -82,11 +88,12 @@ public abstract class SQLTable { /** * Adds a boolean to the table (with allowNull) - * @param name The name of the boolean you want to add - * @param length The length of the boolean you want to add - * @param allowNull true if you want to allow a NULL in the field, otherwise false + * + * @param name The name of the boolean you want to add + * @param length The length of the boolean you want to add + * @param allowNull true if you want to allow a NULL in the field, otherwise false * @param defaultValue The default value of the boolean you want to add (leave empty if you don't want to use one) - * @param extras The extras you want to add to the boolean + * @param extras The extras you want to add to the boolean */ protected void bool(String name, int length, boolean allowNull, String defaultValue, String... extras) { custom(SQLType.BOOLEAN.getValue(), name, length, allowNull, defaultValue, extras); @@ -94,12 +101,13 @@ public abstract class SQLTable { /** * Adds a custom field to the table - * @param type The type of the field - * @param name The name of the field - * @param length The length of the field - * @param allowNull true if you want to allow a NULL in the field, otherwise false + * + * @param type The type of the field + * @param name The name of the field + * @param length The length of the field + * @param allowNull true if you want to allow a NULL in the field, otherwise false * @param defaultValue The default value of the field - * @param extras The extras that you want to add + * @param extras The extras that you want to add */ protected void custom(String type, String name, int length, boolean allowNull, String defaultValue, String... extras) { custom(new TableField(name, type, length, allowNull, defaultValue).setExtra(extras)); @@ -107,6 +115,7 @@ public abstract class SQLTable { /** * Adds a table field to the table + * * @param tableField The table field you want to add */ protected void custom(TableField tableField) { @@ -115,6 +124,7 @@ public abstract class SQLTable { /** * Generates the table sql + * * @return the table sql */ public String generateSQL() { diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java b/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java index 2f86856..a31406c 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java @@ -15,6 +15,7 @@ public enum LoginParam { /** * Basic constructor for the LoginParam enum + * * @param value JDBC parameter */ LoginParam(String value) { @@ -23,6 +24,7 @@ public enum LoginParam { /** * Get the JDBC value + * * @return the value */ public String getValue() { diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java b/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java index c90ba5a..d1aa688 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java @@ -12,6 +12,7 @@ public enum SQLType { /** * Basic constructor for the SQLType enum + * * @param value MySQL data type */ SQLType(String value) { @@ -20,6 +21,7 @@ public enum SQLType { /** * Get the value of the chosen enum + * * @return */ public String getValue() { diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java b/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java index ce6a25c..54f9063 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java @@ -11,10 +11,11 @@ public class TableField { /** * Basic constructor of the {@link TableField} - * @param name The name of the field - * @param type The type of the field - * @param length The length of the field - * @param allowNull true if you want to allow a NULL in the field, otherwise false + * + * @param name The name of the field + * @param type The type of the field + * @param length The length of the field + * @param allowNull true if you want to allow a NULL in the field, otherwise false * @param defaultValue The default value of the field */ public TableField(String name, String type, int length, boolean allowNull, String defaultValue) { @@ -27,6 +28,7 @@ public class TableField { /** * Simple constructor of the {@link TableField} + * * @param name The name of the field */ public TableField(String name) { @@ -42,73 +44,16 @@ public class TableField { /** * Gets the name of the field + * * @return the name of the field */ public String getName() { return name; } - /** - * Gets the type of the field - * @return the type of the field - */ - public String getType() { - return type; - } - - /** - * Gets the length of the field - * @return the length of the field - */ - public int getLength() { - return length != 0 ? length : 255; - } - - /** - * Gets the extra of the field - * @return the extra of the field - */ - public String[] getExtra() { - return extra; - } - - /** - * Gets the extras of the field as a string - * @return the extras of the field as a string - */ - public String getExtras() { - StringBuilder extras = new StringBuilder(); - for (int i=0; i < getExtra().length; i++) - extras.append(getExtra()[i]); - return extras.toString(); - } - - /** - * Gets the allowNull variable as sql string - * @return the allowNull variable as sql string - */ - public String getNullAsSQL() { - return !isAllowNull() ? "NOT NULL" : ""; - } - - /** - * Gets the default value of the field - * @return the default value of the field - */ - public String getDefaultValue() { - return !defaultValue.isEmpty() ? "DEFAULT '" + defaultValue + "'" : ""; - } - - /** - * Checks if the field is allowed to have a NULL - * @return true if the field is NULL, otherwise false - */ - public boolean isAllowNull() { - return allowNull; - } - /** * Sets the name of the field + * * @param name The new name of the field * @return this class */ @@ -117,8 +62,18 @@ public class TableField { return this; } + /** + * Gets the type of the field + * + * @return the type of the field + */ + public String getType() { + return type; + } + /** * Sets the type of the field + * * @param type The new type of the field * @return this class */ @@ -129,6 +84,7 @@ public class TableField { /** * Sets the type of the field (with a sql type) + * * @param type The new type of the field * @return this class */ @@ -137,8 +93,18 @@ public class TableField { return this; } + /** + * Gets the length of the field + * + * @return the length of the field + */ + public int getLength() { + return length != 0 ? length : 255; + } + /** * Sets the length of the field + * * @param length The new length of the field * @return this class */ @@ -148,27 +114,17 @@ public class TableField { } /** - * Sets the allowNull variable of the field - * @param allowNull true if you want to allow a NULL in the field, otherwise false - * @return this class + * Gets the extra of the field + * + * @return the extra of the field */ - public TableField setAllowNull(boolean allowNull) { - this.allowNull = allowNull; - return this; - } - - /** - * Sets the default value of the field - * @param defaultValue The new default value of the field - * @return this class - */ - public TableField setDefaultValue(String defaultValue) { - this.defaultValue = defaultValue; - return this; + public String[] getExtra() { + return extra; } /** * Sets the extras of the field + * * @param extra The new extras of the field * @return this class */ @@ -177,8 +133,70 @@ public class TableField { return this; } + /** + * Gets the extras of the field as a string + * + * @return the extras of the field as a string + */ + public String getExtras() { + StringBuilder extras = new StringBuilder(); + for (int i = 0; i < getExtra().length; i++) + extras.append(getExtra()[i]); + return extras.toString(); + } + + /** + * Gets the allowNull variable as sql string + * + * @return the allowNull variable as sql string + */ + public String getNullAsSQL() { + return !isAllowNull() ? "NOT NULL" : ""; + } + + /** + * Gets the default value of the field + * + * @return the default value of the field + */ + public String getDefaultValue() { + return !defaultValue.isEmpty() ? "DEFAULT '" + defaultValue + "'" : ""; + } + + /** + * Sets the default value of the field + * + * @param defaultValue The new default value of the field + * @return this class + */ + public TableField setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + return this; + } + + /** + * Checks if the field is allowed to have a NULL + * + * @return true if the field is NULL, otherwise false + */ + public boolean isAllowNull() { + return allowNull; + } + + /** + * Sets the allowNull variable of the field + * + * @param allowNull true if you want to allow a NULL in the field, otherwise false + * @return this class + */ + public TableField setAllowNull(boolean allowNull) { + this.allowNull = allowNull; + return this; + } + /** * Gets the generated sql row + * * @return the generated sql row */ public String generateSQLRow() { -- 2.47.2 From 38b3c3bbf4a41bf1fe5851e8397ca955c813f748 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 16:52:17 +0200 Subject: [PATCH 018/121] Updated the project version to 2.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 38a401f..c856848 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ de.gnmyt SQLToolkit - 1.0 + 2.0 8 -- 2.47.2 From 59705367edfa0d4b24ccecab2972882e5c64ca1c Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 16:52:40 +0200 Subject: [PATCH 019/121] Added the jitpack dependency to the readme file --- README.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0d49a82..b16b9d2 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,23 @@ This is a small project for quickly managing a MySQL database in Java. It makes everyday life with a database much easier. ### Installation -1. Clone the repo - ```sh - git clone https://github.com/gnmyt/sqltoolkit.git +1. Add the jitpack repository to your `pom.xml` + ```xml + + + jitpack.io + https://jitpack.io + + + ``` +2. Add the dependency to your `pom.xml` + ```xml + + com.github.gnmyt + sqltoolkit + master-SNAPSHOT + ``` -2. Move the project into a package of your project (in most cases "sql") -3. Ready! Have fun -#### Maven coming soon ### Usage Examples 1. Create a connection -- 2.47.2 From 2e5f651afa966ba4a8be27b6a7aec1a1e6f77942 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 17:00:57 +0200 Subject: [PATCH 020/121] Added the `ResultManager#exists` method --- .../java/de/gnmyt/SQLToolkit/manager/ResultManager.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java index 5b7b136..fd393b7 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java @@ -128,6 +128,14 @@ public class ResultManager { return count; } + /** + * Checks if the current result exists + * @return true if the current result exists, otherwise false + */ + public boolean exists() { + return getRowCount() != 0; + } + /** * Get a List of all Results * -- 2.47.2 From 7fe1fc9644c9d6b17dcbab810fabdc6749164d68 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 17:01:41 +0200 Subject: [PATCH 021/121] Added select, update & insert to the sql table class for quicker access to the table --- .../de/gnmyt/SQLToolkit/storage/SQLTable.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index d03e2d1..0a7e018 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -1,6 +1,9 @@ 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.UpdateManager; import de.gnmyt.SQLToolkit.types.SQLType; import de.gnmyt.SQLToolkit.types.TableField; @@ -113,6 +116,30 @@ public abstract class SQLTable { custom(new TableField(name, type, length, allowNull, defaultValue).setExtra(extras)); } + /** + * Gets the database selection from the current the table + * @return the database selection + */ + public DataBaseSelection select() { + return connection.selectFrom(tableName()); + } + + /** + * Gets the update manager of the current table + * @return the update manager + */ + public UpdateManager update() { + return connection.updateTable(tableName()); + } + + /** + * Gets the insert manager of the current table + * @return the insert manager + */ + public InsertManager insert() { + return connection.insertTo(tableName()); + } + /** * Adds a table field to the table * -- 2.47.2 From e8544ff76110e08960b82a5bc105183b484dc516 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 17:11:26 +0200 Subject: [PATCH 022/121] Added the sql storage medium to easily manage storages --- .../SQLToolkit/storage/SQLStorageMedium.java | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java new file mode 100644 index 0000000..da52336 --- /dev/null +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java @@ -0,0 +1,88 @@ +package de.gnmyt.SQLToolkit.storage; + +import de.gnmyt.SQLToolkit.drivers.MySQLConnection; + +import java.util.ArrayList; +import java.util.HashMap; + +public abstract class SQLStorageMedium extends SQLTable { + + /** + * The basic constructor of the {@link SQLStorageMedium} + * + * @param connection The mysql connection you want to use + */ + public SQLStorageMedium(MySQLConnection connection) { + super(connection); + } + + @Override + protected void tableFields() { + string("keyName", 255, ""); + string("value", 2000, ""); + } + + /** + * Checks if a key exists in the storage medium + * + * @param key The key you want to check + * @return true if the key exists, otherwise false + */ + public boolean exists(String key) { + return select().where("keyName", key).getResult().exists(); + } + + /** + * Inserts a key into the storage medium + * + * @param key The key you want to insert + * @param value The value you want to insert + */ + public void insert(String key, String value) { + insert().value("keyName", key).value("value", value).execute(); + } + + /** + * Updates a key in the storage medium + * + * @param key The key you want to use + * @param value The value you want to update + */ + public void update(String key, String value) { + update().where("keyName", key).set("value", value).update(); + } + + /** + * Deletes a key from the storage medium + * + * @param key The key you want to delete + */ + public void delete(String key) { + update().where("keyName", key).delete(); + } + + /** + * Gets all entries from the storage medium + * + * @return the entries from the storage medium + */ + public ArrayList> getEntries() { + return select().getResult().getList(); + } + + /** + * Inserts or updates the key of the storage medium. + * If the entry is currently in the storage medium, it updates it. Otherwise, it will insert it + * + * @param key The key you want to insert / update + * @param value The value you want to insert / update + */ + public void insertOrUpdate(String key, String value) { + if (exists(key)) { + update(key, value); + } else { + insert(key, value); + } + } + +} -- 2.47.2 From 264d33db4f03aa3a364e17236d846ac099cefcec Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 17:11:38 +0200 Subject: [PATCH 023/121] Cleaned up some code --- src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 3 +-- src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java | 2 +- src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java | 1 + src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java | 2 +- src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java | 3 +++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 5ed992a..607f0ae 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -23,12 +23,11 @@ public class MySQLConnection { private final String username; private final String password; private final String database; - + private final TableFactory tableFactory = new TableFactory(this); private String tablePrefix = ""; private String tablePrefixVariable = ""; private String connectString = ""; private Connection con; - private final TableFactory tableFactory = new TableFactory(this); /** * Basic constructor for the connection diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java index 1430b63..59353a0 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java @@ -8,8 +8,8 @@ import java.util.concurrent.atomic.AtomicBoolean; public class InsertManager { private final MySQLConnection connection; - private String tableName; private final HashMap values; + private String tableName; /** * Basic constructor for the InsertManager diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java index fd393b7..35c0894 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java @@ -130,6 +130,7 @@ public class ResultManager { /** * Checks if the current result exists + * * @return true if the current result exists, otherwise false */ public boolean exists() { diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java index 4430e2c..4af7262 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java @@ -13,9 +13,9 @@ public class UpdateManager { private final Logger LOG = MySQLConnection.LOG; private final MySQLConnection connection; - private String tableName; private final HashMap whereList; private final HashMap setList; + private String tableName; /** * Basic constructor for the UpdateManager diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index 0a7e018..d66982f 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -118,6 +118,7 @@ public abstract class SQLTable { /** * Gets the database selection from the current the table + * * @return the database selection */ public DataBaseSelection select() { @@ -126,6 +127,7 @@ public abstract class SQLTable { /** * Gets the update manager of the current table + * * @return the update manager */ public UpdateManager update() { @@ -134,6 +136,7 @@ public abstract class SQLTable { /** * Gets the insert manager of the current table + * * @return the insert manager */ public InsertManager insert() { -- 2.47.2 From 96ad704707a6036948b44aa0d0a140464dba16b9 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 17:14:03 +0200 Subject: [PATCH 024/121] Added the `TableFactory#getStorage` method to get a storage medium --- .../java/de/gnmyt/SQLToolkit/factory/TableFactory.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java b/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java index 58fe364..08c328b 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java +++ b/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java @@ -1,6 +1,7 @@ package de.gnmyt.SQLToolkit.factory; import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import de.gnmyt.SQLToolkit.storage.SQLStorageMedium; import de.gnmyt.SQLToolkit.storage.SQLTable; import java.util.HashMap; @@ -37,4 +38,13 @@ public class TableFactory { return REGISTERED_TABLES.get(tableClass); } + /** + * Gets a storage medium from the list + * @param storageClass The class of the storage medium you want to get + * @return the storage medium + */ + public SQLStorageMedium getStorage(Class storageClass) { + return (SQLStorageMedium) getTable(storageClass); + } + } -- 2.47.2 From e88169147cb32289576d3eecda6ed2bea973bbfc Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 17:20:33 +0200 Subject: [PATCH 025/121] Added the get method to the storage medium --- .../de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java index da52336..f3fe602 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java @@ -61,6 +61,16 @@ public abstract class SQLStorageMedium extends SQLTable { update().where("keyName", key).delete(); } + /** + * Gets the value of a key + * + * @param key The key of the value you want to get + * @return the value you want to get + */ + public String get(String key) { + return select().where("keyName", key).getResult().getString("value"); + } + /** * Gets all entries from the storage medium * -- 2.47.2 From e58d96b58af3f5016c8945e1f882ed340013601b Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 17:31:13 +0200 Subject: [PATCH 026/121] Cleaned up code --- src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java | 1 + .../java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java | 4 +--- src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java | 2 ++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java b/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java index 08c328b..45bddec 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java +++ b/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java @@ -40,6 +40,7 @@ public class TableFactory { /** * Gets a storage medium from the list + * * @param storageClass The class of the storage medium you want to get * @return the storage medium */ diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java b/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java index a553bd9..4ce7bcd 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java @@ -135,9 +135,7 @@ public class DataBaseSelection { messageBuilder.append((added.get()) ? ", " : "").append(v); added.set(true); }); - StackTraceElement[] st = Thread.currentThread().getStackTrace(); - StackTraceElement stack = st[st.length - 1]; - LOG.debug("DEBUG <" + stack.getFileName() + ":" + stack.getLineNumber() + "> Statement: " + messageBuilder); + LOG.debug("Statement: " + messageBuilder); return this; } diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java index 4af7262..c1a954f 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java @@ -167,11 +167,13 @@ public class UpdateManager { sb.append("UPDATE ").append(tableName); if (!setList.isEmpty()) sb.append(" SET "); AtomicBoolean used = new AtomicBoolean(false); + setList.forEach((str, obj) -> { if (used.get()) sb.append(", "); sb.append(str).append(" = ?"); used.set(true); }); + if (!whereList.isEmpty()) sb.append(" WHERE "); AtomicBoolean used2 = new AtomicBoolean(false); whereList.forEach((str, obj) -> { -- 2.47.2 From 5efc36d1b099a526696c41454e8ff7f0df744fbd Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 19:40:52 +0200 Subject: [PATCH 027/121] Removed the table prefix from the mysql connection --- .../SQLToolkit/drivers/MySQLConnection.java | 39 ++----------------- 1 file changed, 3 insertions(+), 36 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 607f0ae..a58cb3f 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -18,15 +18,15 @@ import java.sql.ResultSet; public class MySQLConnection { public static final Logger LOG = LoggerFactory.getLogger("MySQL-Logger"); + private final TableFactory tableFactory = new TableFactory(this); private final String hostname; private final String username; private final String password; private final String database; - private final TableFactory tableFactory = new TableFactory(this); - private String tablePrefix = ""; - private String tablePrefixVariable = ""; + private String connectString = ""; + private Connection con; /** @@ -69,7 +69,6 @@ public class MySQLConnection { * @return ResultSet */ public ResultSet getResultSet(String query, Object... params) { - query = (tablePrefix.isEmpty()) ? query : query.replace((tablePrefixVariable.isEmpty()) ? "$tp" : tablePrefixVariable, tablePrefix); try { int start = 1; PreparedStatement ps = con.prepareStatement(query); @@ -119,7 +118,6 @@ public class MySQLConnection { * @return this class */ public MySQLConnection update(String query, Object... params) { - query = (tablePrefix.isEmpty()) ? query : query.replace((tablePrefixVariable.isEmpty()) ? "$tp" : tablePrefixVariable, tablePrefix); try { int start = 1; PreparedStatement ps = con.prepareStatement(query); @@ -254,37 +252,6 @@ public class MySQLConnection { return this; } - /** - * Set the Connection String - * - * @param tablePrefixVariable New table prefix variable - * @return this class - */ - public MySQLConnection setTablePrefixVariable(String tablePrefixVariable) { - this.tablePrefixVariable = tablePrefixVariable; - return this; - } - - /** - * Get the current table Prefix - * - * @return the prefix - */ - public String getTablePrefix() { - return tablePrefix; - } - - /** - * Set the current table Prefix - * - * @param tablePrefix New table prefix - * @return this class - */ - public MySQLConnection setTablePrefix(String tablePrefix) { - this.tablePrefix = tablePrefix; - return this; - } - /** * Get the current jdbc connection string for mysql * -- 2.47.2 From 387f9d7b3524a8d93ee652dcd61c73015ca375b1 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 19:42:36 +0200 Subject: [PATCH 028/121] Removed the table prefix integration --- .../java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java | 2 +- .../java/de/gnmyt/SQLToolkit/manager/UpdateManager.java | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java b/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java index 4ce7bcd..2414b02 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/DataBaseSelection.java @@ -65,7 +65,7 @@ public class DataBaseSelection { * @return this class */ public DataBaseSelection from(String tableName) { - this.tableName = connection.getTablePrefix().isEmpty() ? tableName : connection.getTablePrefix() + tableName; + this.tableName = tableName; return this; } diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java index c1a954f..17269d2 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java @@ -76,9 +76,7 @@ public class UpdateManager { messageBuilder.append((added.get()) ? ", " : "").append(v); added.set(true); }); - StackTraceElement[] st = Thread.currentThread().getStackTrace(); - StackTraceElement stack = st[st.length - 1]; - LOG.debug("DEBUG <" + stack.getFileName() + ":" + stack.getLineNumber() + "> Statement: " + messageBuilder); + LOG.debug("Statement: " + messageBuilder); return this; } @@ -109,7 +107,7 @@ public class UpdateManager { * @return this class */ public UpdateManager toTable(String tableName) { - this.tableName = connection.getTablePrefix().isEmpty() ? tableName : connection.getTablePrefix() + tableName; + this.tableName = tableName; return this; } -- 2.47.2 From 3f2987b576ddfc93c639a81b3da5335c50aa2f42 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 19:59:58 +0200 Subject: [PATCH 029/121] Cleaned up code of the insert manager --- .../SQLToolkit/manager/InsertManager.java | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java index 59353a0..8570a7a 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java @@ -3,7 +3,6 @@ package de.gnmyt.SQLToolkit.manager; import de.gnmyt.SQLToolkit.drivers.MySQLConnection; import java.util.HashMap; -import java.util.concurrent.atomic.AtomicBoolean; public class InsertManager { @@ -60,26 +59,26 @@ public class InsertManager { * @return the SQL Query */ public String prepareStatement() { - StringBuilder query = new StringBuilder(); - query.append("INSERT INTO ").append(tableName).append(" ").append("("); - AtomicBoolean used = new AtomicBoolean(false); - values.forEach((field, object) -> { - if (used.get()) query.append(", "); - used.set(true); - query.append("`").append(field).append("`"); - }); - query.append(")"); - if (values.size() > 0) query.append(" VALUES ("); - AtomicBoolean used_values = new AtomicBoolean(false); + StringBuilder query = new StringBuilder().append("INSERT INTO ").append(tableName).append(" ("); + for (int i = 0; i < values.size(); i++) { - if (used_values.get()) query.append(", "); - used_values.set(true); + if (i > 0) query.append(", "); + query.append("`").append(values.keySet().toArray()[i]).append("`"); + } + + query.append(")").append(values.size() > 0 ? "VALUES (" : ""); + + for (int i = 0; i < values.size(); i++) { + if (i > 0) query.append(", "); query.append("?"); } + if (values.size() > 0) query.append(")"); + return query.toString(); } + /** * Execute the current SQL query * -- 2.47.2 From 2786ca124f1b5a446fdc7048419cc8baf2ebdd5a Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:05:58 +0200 Subject: [PATCH 030/121] Cleaned up code of the DataBaseSelection & renamed it to SelectionManager --- .../SQLToolkit/drivers/MySQLConnection.java | 10 ++-- ...seSelection.java => SelectionManager.java} | 59 +++++++------------ .../de/gnmyt/SQLToolkit/storage/SQLTable.java | 4 +- 3 files changed, 27 insertions(+), 46 deletions(-) rename src/main/java/de/gnmyt/SQLToolkit/manager/{DataBaseSelection.java => SelectionManager.java} (66%) 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()); } -- 2.47.2 From cebb2c8c9806fd5fa28684e8ef083c910b7cd2ab Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:08:14 +0200 Subject: [PATCH 031/121] Changed method name from processStatement to prepareStatement --- .../java/de/gnmyt/SQLToolkit/manager/SelectionManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java index 73f5a84..7569229 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java @@ -108,7 +108,7 @@ public class SelectionManager { * @return ResultManager */ public ResultManager getResult() { - return connection.getResult(processStatement(), getTempParams().toArray()); + return connection.getResult(prepareStatement(), getTempParams().toArray()); } /** @@ -117,7 +117,7 @@ public class SelectionManager { * @return ResultSet */ public ResultSet getResultSet() { - return connection.getResultSet(processStatement(), getTempParams().toArray()); + return connection.getResultSet(prepareStatement(), getTempParams().toArray()); } /** @@ -138,7 +138,7 @@ public class SelectionManager { * * @return the current statement query */ - private String processStatement() { + private String prepareStatement() { StringBuilder query = new StringBuilder().append("SELECT * FROM ").append(tableName).append(" "); for (int i = 0; i < whereList.size(); i++) { -- 2.47.2 From 42f2b37b8b53707aa65e72d9346db96c4ccd17c2 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:19:03 +0200 Subject: [PATCH 032/121] Removed the delete feature from the update manager & cleaned up the update manager --- .../SQLToolkit/manager/UpdateManager.java | 150 +++--------------- 1 file changed, 25 insertions(+), 125 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java index 17269d2..7b6e024 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java @@ -1,12 +1,10 @@ package de.gnmyt.SQLToolkit.manager; import de.gnmyt.SQLToolkit.drivers.MySQLConnection; -import de.gnmyt.SQLToolkit.generator.TableGenerator; import org.slf4j.Logger; import java.util.ArrayList; import java.util.HashMap; -import java.util.concurrent.atomic.AtomicBoolean; public class UpdateManager { @@ -41,6 +39,17 @@ public class UpdateManager { this.setList = new HashMap<>(); } + /** + * Change the tableName + * + * @param tableName New tableName + * @return this class + */ + public UpdateManager toTable(String tableName) { + this.tableName = tableName; + return this; + } + /** * Get the parameters for the SQL statement * @@ -53,64 +62,6 @@ public class UpdateManager { return tempParams; } - /** - * Get the current connection - * - * @return MySQL connection - */ - public MySQLConnection getConnection() { - return connection; - } - - /** - * Print the deletion statement - * - * @return this class - */ - public UpdateManager printDeleteStatement() { - StringBuilder messageBuilder = new StringBuilder(); - messageBuilder.append(processDeleteStatement()); - messageBuilder.append(" | paramsยป "); - AtomicBoolean added = new AtomicBoolean(false); - whereList.values().forEach(v -> { - messageBuilder.append((added.get()) ? ", " : "").append(v); - added.set(true); - }); - LOG.debug("Statement: " + messageBuilder); - return this; - } - - /** - * Print the update statement - * - * @return this class - */ - public UpdateManager printUpdateStatement() { - StringBuilder messageBuilder = new StringBuilder(); - messageBuilder.append(processUpdateStatement()); - messageBuilder.append(" | paramsยป "); - AtomicBoolean added = new AtomicBoolean(false); - getTempParams().forEach(v -> { - messageBuilder.append((added.get()) ? ", " : "").append(v); - added.set(true); - }); - StackTraceElement[] st = Thread.currentThread().getStackTrace(); - StackTraceElement stack = st[st.length - 1]; - LOG.debug("DEBUG <" + stack.getFileName() + ":" + stack.getLineNumber() + "> Statement: " + messageBuilder); - return this; - } - - /** - * Change the tableName - * - * @param tableName New tableName - * @return this class - */ - public UpdateManager toTable(String tableName) { - this.tableName = tableName; - return this; - } - /** * Add a 'where'-clause * @@ -135,23 +86,13 @@ public class UpdateManager { return this; } - /** - * Delete the entries with your current conditions - * - * @return this class - */ - public UpdateManager delete() { - connection.update(processDeleteStatement(), whereList.values().toArray()); - return this; - } - /** * Update the entries with your current conditions * * @return this class */ public UpdateManager update() { - connection.update(processUpdateStatement(), getTempParams().toArray()); + connection.update(prepareUpdateStatement(), getTempParams().toArray()); return this; } @@ -160,64 +101,23 @@ public class UpdateManager { * * @return the Statement */ - private String processUpdateStatement() { - StringBuilder sb = new StringBuilder(); - sb.append("UPDATE ").append(tableName); - if (!setList.isEmpty()) sb.append(" SET "); - AtomicBoolean used = new AtomicBoolean(false); + private String prepareUpdateStatement() { + StringBuilder query = new StringBuilder().append("UPDATE ").append(tableName); + if (!setList.isEmpty()) query.append(" SET "); - setList.forEach((str, obj) -> { - if (used.get()) sb.append(", "); - sb.append(str).append(" = ?"); - used.set(true); - }); + for (int i = 0; i < setList.size(); i++) { + if (i > 0) query.append(", "); + query.append(setList.keySet().toArray()[i]); + } - if (!whereList.isEmpty()) sb.append(" WHERE "); - AtomicBoolean used2 = new AtomicBoolean(false); - whereList.forEach((str, obj) -> { - if (used2.get()) sb.append(" AND "); - sb.append(str).append(" = ?"); - used2.set(true); - }); - return sb.toString(); - } + if (!whereList.isEmpty()) query.append(" WHERE "); - /** - * Get the Query of the 'delete'-Statement - * - * @return - */ - private String processDeleteStatement() { - StringBuilder sb = new StringBuilder(); - sb.append("DELETE FROM ").append(tableName); - if (!whereList.isEmpty()) sb.append(" WHERE "); - AtomicBoolean used = new AtomicBoolean(false); - whereList.forEach((str, obj) -> { - if (used.get()) sb.append(" AND "); - sb.append(str).append(" = ?"); - used.set(true); - }); - return sb.toString(); - } + for (int i = 0; i < whereList.size(); i++) { + if (i > 0) query.append(" AND "); + query.append(whereList.keySet().toArray()[i]).append(" = ?"); + } - - /** - * Generate a new Table (with prefilled tableName) - * - * @param tableName Name of the new table - * @return the de.gnmyt.SQLToolkit.generator - */ - public TableGenerator generateTable(String tableName) { - return new TableGenerator(this.getConnection(), tableName); - } - - /** - * Generate a new Table - * - * @return the de.gnmyt.SQLToolkit.generator - */ - public TableGenerator generateTable() { - return (tableName.isEmpty()) ? null : new TableGenerator(this.getConnection(), tableName); + return query.toString(); } } -- 2.47.2 From d56a4e9580520e454606ee07e6c8a3a2953b50f2 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:19:36 +0200 Subject: [PATCH 033/121] Integrated the table generator into MySQLConnection#generateTable --- .../de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 6353754..fb3e72a 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -2,6 +2,7 @@ package de.gnmyt.SQLToolkit.drivers; import de.gnmyt.SQLToolkit.api.SQLConsumer; import de.gnmyt.SQLToolkit.factory.TableFactory; +import de.gnmyt.SQLToolkit.generator.TableGenerator; import de.gnmyt.SQLToolkit.manager.InsertManager; import de.gnmyt.SQLToolkit.manager.ResultManager; import de.gnmyt.SQLToolkit.manager.SelectionManager; @@ -141,6 +142,15 @@ public class MySQLConnection { return new UpdateManager(this); } + /** + * Gets the table generator + * @param tableName The name of the table + * @return the instance of the table generator + */ + public TableGenerator generateTable(String tableName) { + return new TableGenerator(this, tableName); + } + /** * Get the update de.gnmyt.SQLToolkit.manager for easier updating (pre filled table) * -- 2.47.2 From f7eebbed86cdeaf58d45f48ac132b405e00c641a Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:41:14 +0200 Subject: [PATCH 034/121] Removed useless method --- .../de/gnmyt/SQLToolkit/manager/SelectionManager.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java index 7569229..5d90dfa 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java @@ -91,17 +91,6 @@ public class SelectionManager { return this; } - /** - * Sets the limit of the rows - * - * @param limit The new limit - * @return this class - */ - public SelectionManager limit(String limit) { - this.limit = Integer.parseInt(limit); - return this; - } - /** * Get the ResultManager * -- 2.47.2 From f6bfcb30d9e937dea5f307cad2a131938dbce6be Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:41:52 +0200 Subject: [PATCH 035/121] Changed UpdateManager#update to UpdateManager#execute --- src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java index 7b6e024..383e69c 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java @@ -91,7 +91,7 @@ public class UpdateManager { * * @return this class */ - public UpdateManager update() { + public UpdateManager execute() { connection.update(prepareUpdateStatement(), getTempParams().toArray()); return this; } -- 2.47.2 From 4661c7d4ecab253123ef4a2c32d64920df9e4704 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:49:01 +0200 Subject: [PATCH 036/121] Added the deletion manager --- .../SQLToolkit/manager/DeletionManager.java | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java new file mode 100644 index 0000000..7cc57ea --- /dev/null +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java @@ -0,0 +1,119 @@ +package de.gnmyt.SQLToolkit.manager; + +import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import org.slf4j.Logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; + +public class DeletionManager { + + private final Logger LOG = MySQLConnection.LOG; + + private final MySQLConnection connection; + private final HashMap whereList; + private final ArrayList databaseParameters; + public ArrayList optionalQuery; + private String tableName; + + /** + * Advanced constructor for the {@link DeletionManager} + * + * @param connection The current connection + * @param tableName The table name + */ + public DeletionManager(MySQLConnection connection, String tableName) { + this.whereList = new HashMap<>(); + this.databaseParameters = new ArrayList<>(); + this.optionalQuery = new ArrayList<>(); + this.connection = connection; + from(tableName); + } + + /** + * Basic constructor for the {@link DeletionManager} + * + * @param connection The current connection + */ + public DeletionManager(MySQLConnection connection) { + this.whereList = new HashMap<>(); + this.databaseParameters = new ArrayList<>(); + this.optionalQuery = new ArrayList<>(); + this.connection = connection; + } + + /** + * Get the temp-generated parameters + * + * @return ArrayList of parameters + */ + private ArrayList getTempParams() { + ArrayList tempParameters = new ArrayList<>(); + whereList.forEach((k, v) -> tempParameters.add(v)); + tempParameters.addAll(databaseParameters); + return tempParameters; + } + + /** + * Sets the table name + * + * @param tableName The table name + * @return this class + */ + public DeletionManager from(String tableName) { + this.tableName = tableName; + return this; + } + + /** + * Adding another 'where'-statement + * + * @param column Table column name + * @param value Table value name + * @return this class + */ + public DeletionManager where(String column, Object value) { + whereList.put(column, value); + return this; + } + + /** + * Executes the 'delete'-statement + */ + public void execute() { + connection.update(prepareStatement(), getTempParams()); + } + + /** + * Adding another factors + * + * @param query MySQL Query + * @param params Optional parameters for the Query + * @return this class + */ + public DeletionManager add(String query, Object... params) { + optionalQuery.add(query); + this.databaseParameters.addAll(Arrays.asList(params)); + return this; + } + + /** + * Get the current statement query + * + * @return the current statement query + */ + private String prepareStatement() { + StringBuilder query = new StringBuilder().append("DELETE FROM ").append(tableName); + + if (!whereList.isEmpty()) query.append(" WHERE "); + + for (int i = 0; i < whereList.size(); i++) { + if (i > 0) query.append(" AND "); + query.append(whereList.keySet().toArray()[i]).append(" = ?"); + } + + return query.toString(); + } + +} -- 2.47.2 From 7c2f408ef5c662a08b2f423827add74beb01d04c Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:54:11 +0200 Subject: [PATCH 037/121] Integrated the deletion manager into the MySQLConnection & renamed the update method --- .../SQLToolkit/drivers/MySQLConnection.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index fb3e72a..ba9da50 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -3,10 +3,7 @@ package de.gnmyt.SQLToolkit.drivers; import de.gnmyt.SQLToolkit.api.SQLConsumer; import de.gnmyt.SQLToolkit.factory.TableFactory; import de.gnmyt.SQLToolkit.generator.TableGenerator; -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.manager.*; import de.gnmyt.SQLToolkit.types.LoginParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -157,7 +154,7 @@ public class MySQLConnection { * @param tableName The name of the table * @return Update de.gnmyt.SQLToolkit.manager */ - public UpdateManager updateTable(String tableName) { + public UpdateManager update(String tableName) { return new UpdateManager(this, tableName); } @@ -199,6 +196,23 @@ public class MySQLConnection { return new InsertManager(this, tableName); } + /** + * Gets the deletion manager for easier deleting rows in a table + * @return the deletion manager + */ + public DeletionManager delete() { + return new DeletionManager(this); + } + + /** + * Gets the deletion manager for easier deleting rows in a table + * @param tableName The name of the table you want to delete a row from + * @return the deletion manager + */ + public DeletionManager delete(String tableName) { + return new DeletionManager(this, tableName); + } + /** * Gets the table factory * -- 2.47.2 From c61b4d07e9995c6c48b944115fbefbfa9f14baf8 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:54:47 +0200 Subject: [PATCH 038/121] Integrated the deletion manager into the sql table & the storage medium --- .../de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java | 4 ++-- .../java/de/gnmyt/SQLToolkit/storage/SQLTable.java | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java index f3fe602..02ea912 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java @@ -49,7 +49,7 @@ public abstract class SQLStorageMedium extends SQLTable { * @param value The value you want to update */ public void update(String key, String value) { - update().where("keyName", key).set("value", value).update(); + update().where("keyName", key).set("value", value).execute(); } /** @@ -58,7 +58,7 @@ public abstract class SQLStorageMedium extends SQLTable { * @param key The key you want to delete */ public void delete(String key) { - update().where("keyName", key).delete(); + delete().where("keyName", key).execute(); } /** diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index 7f2e3a3..052b7db 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -1,6 +1,7 @@ package de.gnmyt.SQLToolkit.storage; import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import de.gnmyt.SQLToolkit.manager.DeletionManager; import de.gnmyt.SQLToolkit.manager.InsertManager; import de.gnmyt.SQLToolkit.manager.SelectionManager; import de.gnmyt.SQLToolkit.manager.UpdateManager; @@ -131,7 +132,7 @@ public abstract class SQLTable { * @return the update manager */ public UpdateManager update() { - return connection.updateTable(tableName()); + return connection.update(tableName()); } /** @@ -143,6 +144,14 @@ public abstract class SQLTable { return connection.insertTo(tableName()); } + /** + * Gets the deletion manager of the current table + * @return the deletion manager + */ + public DeletionManager delete() { + return connection.delete(tableName()); + } + /** * Adds a table field to the table * -- 2.47.2 From 5cc960b21ae1f8c67ae9a5c38fd3c2c37ac80ba9 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:57:06 +0200 Subject: [PATCH 039/121] Renamed the delete method to deleteFrom --- src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 2 +- src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index ba9da50..ce5955b 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -209,7 +209,7 @@ public class MySQLConnection { * @param tableName The name of the table you want to delete a row from * @return the deletion manager */ - public DeletionManager delete(String tableName) { + public DeletionManager deleteFrom(String tableName) { return new DeletionManager(this, tableName); } diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index 052b7db..0d1f086 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -149,7 +149,7 @@ public abstract class SQLTable { * @return the deletion manager */ public DeletionManager delete() { - return connection.delete(tableName()); + return connection.deleteFrom(tableName()); } /** -- 2.47.2 From 6b2862a64b6d5a028d8f8077844d232cd2b85a21 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 21:00:24 +0200 Subject: [PATCH 040/121] Changed the access modifier of the optional query variable --- src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java | 2 +- src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java index 7cc57ea..29964dc 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java @@ -14,7 +14,7 @@ public class DeletionManager { private final MySQLConnection connection; private final HashMap whereList; private final ArrayList databaseParameters; - public ArrayList optionalQuery; + private ArrayList optionalQuery; private String tableName; /** diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java index 5d90dfa..f1a42b9 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java @@ -15,7 +15,7 @@ public class SelectionManager { private final MySQLConnection connection; private final HashMap whereList; private final ArrayList databaseParameters; - public ArrayList optionalQuery; + private ArrayList optionalQuery; private int limit; private String tableName; -- 2.47.2 From 6b82120e17b1bd83c7094304a4ad50cfdabca781 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 21:02:58 +0200 Subject: [PATCH 041/121] Changed update to updateTo --- src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 2 +- src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index ce5955b..3e57511 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -154,7 +154,7 @@ public class MySQLConnection { * @param tableName The name of the table * @return Update de.gnmyt.SQLToolkit.manager */ - public UpdateManager update(String tableName) { + public UpdateManager updateTo(String tableName) { return new UpdateManager(this, tableName); } diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index 0d1f086..e6b1628 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -132,7 +132,7 @@ public abstract class SQLTable { * @return the update manager */ public UpdateManager update() { - return connection.update(tableName()); + return connection.updateTo(tableName()); } /** -- 2.47.2 From 2446395f4c91f40b11ea8116fdb542481b320dea Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 21:14:53 +0200 Subject: [PATCH 042/121] Fixed a bug in the deletion manager --- src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java index 29964dc..895b73c 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java @@ -82,7 +82,7 @@ public class DeletionManager { * Executes the 'delete'-statement */ public void execute() { - connection.update(prepareStatement(), getTempParams()); + connection.update(prepareStatement(), getTempParams().toArray()); } /** -- 2.47.2 From c77aaa413fae71cc26975291b5d8196156d97fdb Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 21:15:57 +0200 Subject: [PATCH 043/121] Changed the return value of the insert & update manager --- src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java | 5 +---- src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java index 8570a7a..ff705cd 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java @@ -81,12 +81,9 @@ public class InsertManager { /** * Execute the current SQL query - * - * @return this class */ - public InsertManager execute() { + public void execute() { connection.update(prepareStatement(), values.values().toArray()); - return this; } } diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java index 383e69c..f59414d 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java @@ -88,12 +88,9 @@ public class UpdateManager { /** * Update the entries with your current conditions - * - * @return this class */ - public UpdateManager execute() { + public void execute() { connection.update(prepareUpdateStatement(), getTempParams().toArray()); - return this; } /** -- 2.47.2 From 8a16e172ad708ddda6de5447adffca26e3c37934 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 21:16:55 +0200 Subject: [PATCH 044/121] Cleaned up code --- src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 3 +++ src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java | 2 +- .../java/de/gnmyt/SQLToolkit/manager/SelectionManager.java | 2 +- src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 3e57511..4c09732 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -141,6 +141,7 @@ public class MySQLConnection { /** * Gets the table generator + * * @param tableName The name of the table * @return the instance of the table generator */ @@ -198,6 +199,7 @@ public class MySQLConnection { /** * Gets the deletion manager for easier deleting rows in a table + * * @return the deletion manager */ public DeletionManager delete() { @@ -206,6 +208,7 @@ public class MySQLConnection { /** * Gets the deletion manager for easier deleting rows in a table + * * @param tableName The name of the table you want to delete a row from * @return the deletion manager */ diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java index 895b73c..5476d21 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java @@ -14,7 +14,7 @@ public class DeletionManager { private final MySQLConnection connection; private final HashMap whereList; private final ArrayList databaseParameters; - private ArrayList optionalQuery; + private final ArrayList optionalQuery; private String tableName; /** diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java index f1a42b9..4c9a31b 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java @@ -15,7 +15,7 @@ public class SelectionManager { private final MySQLConnection connection; private final HashMap whereList; private final ArrayList databaseParameters; - private ArrayList optionalQuery; + private final ArrayList optionalQuery; private int limit; private String tableName; diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index e6b1628..29bf071 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -146,6 +146,7 @@ public abstract class SQLTable { /** * Gets the deletion manager of the current table + * * @return the deletion manager */ public DeletionManager delete() { -- 2.47.2 From 356624ce07b07cddfed79e500186f4814f97a4d0 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 21:46:35 +0200 Subject: [PATCH 045/121] Updated the readme file --- README.md | 120 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 105 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index b16b9d2..e973ee8 100644 --- a/README.md +++ b/README.md @@ -55,27 +55,32 @@ This is a small project for quickly managing a MySQL database in Java. It makes - USE_UNICODE *(useUnicode=yes)* - USE_TIMEZONE *(useTimezone=true)* - TIMEZONE_UTC *(serverTimezone=UTC)* -2. Perform a standard SQL query +2. Perform a default SQL query - Get a ResultSet ```java - connection.getResultSet("default query", "parameters"); + connection.getResultSet("SELECT * FROM example WHERE test = ?", "test1"); ``` - Perform an update ```java - connection.update("query", "parameters"); + connection.update("UPDATE example SET test = ? WHERE abc = ?", "test1", "test2"); ``` 3. Get something from a table with managers - 1. Getting a Result (For one result) + 1. Getting a string from the table ```java String value = connection.getResult("query", "parameters") .getString("column"); ``` - 2. Getting Results (For more than one) + 2. Getting a list from the table ```java ArrayList list = connection.getResult("query", "parameters") .getList("column"); ``` - 3. Choosing Results + or + ```java + ArrayList> list = connection.getResult("query", "parameters") + .getList(); + ``` + 4. Choosing Results ```java connection .selectFrom("table") @@ -83,35 +88,120 @@ This is a small project for quickly managing a MySQL database in Java. It makes .limit(10) .getResult(); ``` - 4. Choosing Results + Print the current statement + 5. Choosing Results with custom parameters ```java connection.select() .from("table") .where("column", "value") .add("LIMIT 2,5") - .printStatement(); + .getResult(); ``` 4. Perform an update using managers 1. Update a Table ```java connection - .update() - .toTable("table") + .updateTo("table") .where("column", "value") .set("column", "newValue") - .update(); + .execute(); ``` 2. Generate a Table ```java connection - .update() .generateTable("table") - .useID() - .addField(new SQLField(SQLType.STRING, "column", 999)) - .addField(new SQLField(SQLType.STRING, "column2", 25)) + .addField(SQLType.STRING, "column", 999) + .addField(SQLType.STRING, "column2", 25) .create(); ``` + 3. Delete something from a table + ```java + connection + .deleteFrom("table") + .where("column", "value") + .execute(); + ``` +5. The use of the table factory + 1. Create a new table class + ```java + import de.gnmyt.SQLToolkit.drivers.MySQLConnection; + import de.gnmyt.SQLToolkit.storage.SQLTable; + + public class ExampleTable extends SQLTable { + public ExampleTable(MySQLConnection connection) { + super(connection); + } + + @Override + protected String tableName() { + return "example"; + } + + @Override + protected void tableFields() { + string("column1", 255, "default"); + string("colum2", 100, "test2"); + integer("colum3", 2, ""); + } + + public void addSomething() { + insert() + .value("column1", "test") + .value("colum3", 52) + .execute(); + } + + public void deleteUser() { + delete() + .where("column1", "test") + .execute(); + } + } + ``` + 2. Register your table + ```java + connection.getTableFactory().register(new ExampleTable(connection)); + ``` + 3. Now you can access your table from everywhere + ```java + ((ExampleTable) connection.getTableFactory().getTable(ExampleTable.class)) + .addSomething(); + ``` +6. The use of the table factory with storage mediums + 1. Create a new storage medium class + ```java + import de.gnmyt.SQLToolkit.drivers.MySQLConnection; + import de.gnmyt.SQLToolkit.storage.SQLStorageMedium; + + public class ExampleStorage extends SQLStorageMedium { + + public ExampleStorage(MySQLConnection connection) { + super(connection); + } + + @Override + protected String tableName() { + return "example_storage"; + } + } + ``` + 2. Register your storage + ```java + connection.getTableFactory().register(new ExampleStorage(connection)); + ``` + 3. Now you can access your storage medium from everywhere. + Try something like that: + ```java + SQLStorageMedium storage = connection.getTableFactory().getStorage(ExampleStorage.class); + + storage.insert("username", "test"); + String username = storage.get("username"); + storage.delete("username"); + + storage.insertOrUpdate("version", "1.0.0"); + + storage.getEntries(); + ``` ## License -- 2.47.2 From d5bd0e4248fa377dee587a57c5e92cb3f981c0a8 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 21:55:32 +0200 Subject: [PATCH 046/121] Cleaned up the getResultSet method of the MySQLConnection class --- .../java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 4c09732..e3b6fe2 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -68,12 +68,12 @@ public class MySQLConnection { */ public ResultSet getResultSet(String query, Object... params) { try { - int start = 1; PreparedStatement ps = con.prepareStatement(query); - for (Object current : params) { - ps.setObject(start, current); - start++; + + for (int i = 0; i < params.length; i++) { + ps.setObject(i+1, params[i]); } + return ps.executeQuery(); } catch (Exception err) { LOG.error(err.getMessage()); -- 2.47.2 From ce8042c53032a32a920270a51712d431293c7ca4 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 22:01:33 +0200 Subject: [PATCH 047/121] Cleaned up the update method of the MySQLConnection class --- .../java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index e3b6fe2..497b066 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -117,12 +117,12 @@ public class MySQLConnection { */ public MySQLConnection update(String query, Object... params) { try { - int start = 1; PreparedStatement ps = con.prepareStatement(query); - for (Object current : params) { - ps.setObject(start, current); - start++; + + for (int i = 0; i < params.length; i++) { + ps.setObject(i+1, params[i]); } + ps.executeUpdate(); } catch (Exception err) { err.printStackTrace(); -- 2.47.2 From 34c1ec14fa4253481b1c26f526936feb7b3ff597 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 22:08:07 +0200 Subject: [PATCH 048/121] Updated the comments in the MySQLConnection class --- .../SQLToolkit/drivers/MySQLConnection.java | 148 +++++++++--------- 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 497b066..9efa52d 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -82,7 +82,7 @@ public class MySQLConnection { } /** - * Get a result from your server (get the Manager) + * Get a result from your server (get the manager) * * @param query Search query * @param params Optional parameters @@ -93,11 +93,11 @@ public class MySQLConnection { } /** - * Run a action with a result from your server + * Run an action with a result from your server * - * @param query Search query - * @param consumer consumer - * @param params Optional parameters + * @param query The search query + * @param consumer The consumer + * @param params The optional parameters */ public void getResult(String query, SQLConsumer consumer, Object... params) { try { @@ -131,14 +131,81 @@ public class MySQLConnection { } /** - * Get the update de.gnmyt.SQLToolkit.manager for easier updating + * Gets the {@link UpdateManager} for easier updating * - * @return Update de.gnmyt.SQLToolkit.manager + * @return the {@link UpdateManager} */ public UpdateManager update() { return new UpdateManager(this); } + /** + * Gets the {@link UpdateManager} for easier updating (pre-filled table) + * + * @param tableName The name of the table + * @return the {@link UpdateManager} + */ + public UpdateManager updateTo(String tableName) { + return new UpdateManager(this, tableName); + } + + /** + * Gets the {@link SelectionManager} for easier selection of tables + * + * @return The {@link SelectionManager} + */ + public SelectionManager select() { + return new SelectionManager(this); + } + + /** + * Gets the {@link SelectionManager} for easier selection of tables (pre-filled table) + * + * @param tableName The name of the table + * @return the {@link SelectionManager} + */ + public SelectionManager selectFrom(String tableName) { + return new SelectionManager(this, tableName); + } + + /** + * Gets the {@link InsertManager} for easier inserting to a table + * + * @return the {@link InsertManager} + */ + public InsertManager insert() { + return new InsertManager(this); + } + + /** + * Gets the {@link InsertManager} for easier inserting to a table + * + * @param tableName The name of the table you want to insert a object + * @return the {@link InsertManager} + */ + public InsertManager insertTo(String tableName) { + return new InsertManager(this, tableName); + } + + /** + * Gets the {@link DeletionManager} for easier deleting rows in a table + * + * @return the {@link DeletionManager} + */ + public DeletionManager delete() { + return new DeletionManager(this); + } + + /** + * Gets the {@link DeletionManager} for easier deleting rows in a table + * + * @param tableName The name of the table you want to delete a row from + * @return the {@link DeletionManager} + */ + public DeletionManager deleteFrom(String tableName) { + return new DeletionManager(this, tableName); + } + /** * Gets the table generator * @@ -149,73 +216,6 @@ public class MySQLConnection { return new TableGenerator(this, tableName); } - /** - * Get the update de.gnmyt.SQLToolkit.manager for easier updating (pre filled table) - * - * @param tableName The name of the table - * @return Update de.gnmyt.SQLToolkit.manager - */ - public UpdateManager updateTo(String tableName) { - return new UpdateManager(this, tableName); - } - - /** - * Get the Database Selection for easier selection of tables (pre filled table) - * - * @param tableName The name of the table - * @return DatabaseSelection - */ - public SelectionManager selectFrom(String tableName) { - return new SelectionManager(this, tableName); - } - - /** - * Get the Database Selection for easier selection of tables - * - * @return DatabaseSelection - */ - public SelectionManager select() { - return new SelectionManager(this); - } - - /** - * Get the InsertManager for easier inserting to a table - * - * @return InsertManager - */ - public InsertManager insert() { - return new InsertManager(this); - } - - /** - * Get the InsertManager for easier inserting to a table - * - * @param tableName The name of the table you want to insert a object - * @return InsertManager - */ - public InsertManager insertTo(String tableName) { - return new InsertManager(this, tableName); - } - - /** - * Gets the deletion manager for easier deleting rows in a table - * - * @return the deletion manager - */ - public DeletionManager delete() { - return new DeletionManager(this); - } - - /** - * Gets the deletion manager for easier deleting rows in a table - * - * @param tableName The name of the table you want to delete a row from - * @return the deletion manager - */ - public DeletionManager deleteFrom(String tableName) { - return new DeletionManager(this, tableName); - } - /** * Gets the table factory * -- 2.47.2 From f6d89ee3f2f55811c3d534fb236880bda4990021 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 22:09:11 +0200 Subject: [PATCH 049/121] Cleaned up code --- .../java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java | 4 ++-- .../java/de/gnmyt/SQLToolkit/generator/TableGenerator.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 9efa52d..69d7d5c 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -71,7 +71,7 @@ public class MySQLConnection { PreparedStatement ps = con.prepareStatement(query); for (int i = 0; i < params.length; i++) { - ps.setObject(i+1, params[i]); + ps.setObject(i + 1, params[i]); } return ps.executeQuery(); @@ -120,7 +120,7 @@ public class MySQLConnection { PreparedStatement ps = con.prepareStatement(query); for (int i = 0; i < params.length; i++) { - ps.setObject(i+1, params[i]); + ps.setObject(i + 1, params[i]); } ps.executeUpdate(); diff --git a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java b/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java index b8a2ee4..0c7e94f 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java +++ b/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java @@ -14,7 +14,7 @@ public class TableGenerator { private final String tableName; /** - * Basic constructor for the TableGenerator + * Basic constructor for the {@link TableGenerator} * * @param tableName Name of the table */ -- 2.47.2 From 3af9a7a8804ec080e18e3cbef00a7b09c1a26935 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 22:24:25 +0200 Subject: [PATCH 050/121] Added the string sql type & updated boolean & varchar --- src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java b/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java index d1aa688..f0a98f8 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java @@ -2,18 +2,18 @@ package de.gnmyt.SQLToolkit.types; public enum SQLType { - STRING("VARCHAR"), + VARCHAR("VARCHAR"), + STRING("TEXT"), INTEGER("INT"), DATE("DATE"), DATETIME("DATETIME"), - BOOLEAN("BOOLEAN"); + BOOLEAN("TINYINT"); - private String value = ""; + private String value; /** - * Basic constructor for the SQLType enum - * - * @param value MySQL data type + * Basic constructor of the {@link SQLType} enum + * @param value The value of the type */ SQLType(String value) { this.value = value; -- 2.47.2 From 62a789b7deff36e15a88ba75442dffed234254d6 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 22:25:00 +0200 Subject: [PATCH 051/121] Updated the boolean logic in the sql table class --- .../de/gnmyt/SQLToolkit/storage/SQLTable.java | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index 29bf071..8cfb3d3 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -82,25 +82,10 @@ public abstract class SQLTable { * Adds a boolean to the table (without allowNull) * * @param name The name of the boolean you want to add - * @param length The length of the boolean you want to add - * @param defaultValue The default value of the boolean you want to add (leave empty if you don't want to use one) * @param extras The extras you want to add to the boolean */ - protected void bool(String name, int length, String defaultValue, String... extras) { - custom(SQLType.BOOLEAN.getValue(), name, length, false, defaultValue, extras); - } - - /** - * Adds a boolean to the table (with allowNull) - * - * @param name The name of the boolean you want to add - * @param length The length of the boolean you want to add - * @param allowNull true if you want to allow a NULL in the field, otherwise false - * @param defaultValue The default value of the boolean you want to add (leave empty if you don't want to use one) - * @param extras The extras you want to add to the boolean - */ - protected void bool(String name, int length, boolean allowNull, String defaultValue, String... extras) { - custom(SQLType.BOOLEAN.getValue(), name, length, allowNull, defaultValue, extras); + protected void bool(String name, String... extras) { + custom(SQLType.BOOLEAN.getValue(), name, 1, false, "", extras); } /** -- 2.47.2 From a1b8e4f3d9633cc8bfda6f90d26dbe9f4599f5fe Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 23:18:51 +0200 Subject: [PATCH 052/121] Cleaned up readme --- README.md | 320 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 167 insertions(+), 153 deletions(-) diff --git a/README.md b/README.md index e973ee8..aa446f3 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,12 @@

MySQL Toolkit

## About The Project -This is a small project for quickly managing a MySQL database in Java. It makes everyday life with a database much easier. -### Installation +This is a small project for quickly managing a MySQL database in Java. It makes everyday life with a database much +easier. + +### Installation + 1. Add the jitpack repository to your `pom.xml` ```xml @@ -37,186 +40,197 @@ This is a small project for quickly managing a MySQL database in Java. It makes ``` ### Usage Examples + 1. Create a connection - - Example of a constructor without optional specifications + - Example of a constructor without optional specifications ```java MySQLConnection connection = new MySQLConnection(hostname, username, password, database).connect(); ``` - - Example of a constructor with optional login parameters + - Example of a constructor with optional login parameters ```java MySQLConnection connection = new MySQLConnection(hostname, username, password, database, LoginParam.AUTO_RECONNECT, LoginParam.NO_SSL).connect(); ``` #### Login Parameters - - DEFAULT *(useSSL=false&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&useTimezone=true&serverTimezone=UTC)* - - NO_SSL *(useSSL=false)* - - USE_SSL *(useSSL=true)* - - AUTO_RECONNECT *(autoReconnect=true)* - - UTF8_ENCODING *(characterEncoding=UTF-8)* - - USE_UNICODE *(useUnicode=yes)* - - USE_TIMEZONE *(useTimezone=true)* - - TIMEZONE_UTC *(serverTimezone=UTC)* + - DEFAULT *( + useSSL=false&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&useTimezone=true&serverTimezone=UTC)* + - NO_SSL *(useSSL=false)* + - USE_SSL *(useSSL=true)* + - AUTO_RECONNECT *(autoReconnect=true)* + - UTF8_ENCODING *(characterEncoding=UTF-8)* + - USE_UNICODE *(useUnicode=yes)* + - USE_TIMEZONE *(useTimezone=true)* + - TIMEZONE_UTC *(serverTimezone=UTC)* 2. Perform a default SQL query - - Get a ResultSet - ```java - connection.getResultSet("SELECT * FROM example WHERE test = ?", "test1"); - ``` - - Perform an update - ```java - connection.update("UPDATE example SET test = ? WHERE abc = ?", "test1", "test2"); - ``` + - Get a ResultSet + ```java + connection.getResultSet("SELECT * FROM example WHERE test = ?", "test1"); + ``` + - Perform an update + ```java + connection.update("UPDATE example SET test = ? WHERE abc = ?", "test1", "test2"); + ``` 3. Get something from a table with managers - 1. Getting a string from the table - ```java - String value = connection.getResult("query", "parameters") - .getString("column"); - ``` - 2. Getting a list from the table - ```java - ArrayList list = connection.getResult("query", "parameters") - .getList("column"); - ``` - or - ```java - ArrayList> list = connection.getResult("query", "parameters") - .getList(); - ``` - 4. Choosing Results - ```java - connection - .selectFrom("table") - .where("column", "value") - .limit(10) - .getResult(); - ``` - 5. Choosing Results with custom parameters - ```java - connection.select() - .from("table") + 1. Getting a string from the table + ```java + String value = connection.getResult("query", "parameters") + .getString("column"); + ``` + 2. Getting a list from the table + ```java + ArrayList list = connection.getResult("query", "parameters") + .getList("column"); + ``` + or + ```java + ArrayList> list = connection.getResult("query", "parameters") + .getList(); + ``` + 4. Choosing Results + ```java + connection + .selectFrom("table") .where("column", "value") - .add("LIMIT 2,5") + .limit(10) .getResult(); - ``` + ``` + 5. Choosing Results with custom parameters + ```java + connection.select() + .from("table") + .where("column", "value") + .add("LIMIT 2,5") + .getResult(); + ``` 4. Perform an update using managers - 1. Update a Table - ```java - connection - .updateTo("table") - .where("column", "value") - .set("column", "newValue") - .execute(); - ``` - 2. Generate a Table - ```java - connection - .generateTable("table") - .addField(SQLType.STRING, "column", 999) - .addField(SQLType.STRING, "column2", 25) - .create(); - ``` - 3. Delete something from a table - ```java - connection - .deleteFrom("table") - .where("column", "value") - .execute(); - ``` + 1. Update a Table + ```java + connection + .updateTo("table") + .where("column", "value") + .set("column", "newValue") + .execute(); + ``` + 2. Generate a Table + ```java + connection + .generateTable("table") + .addField(SQLType.STRING, "column", 999) + .addField(SQLType.STRING, "column2", 25) + .create(); + ``` + 3. Delete something from a table + ```java + connection + .deleteFrom("table") + .where("column", "value") + .execute(); + ``` 5. The use of the table factory - 1. Create a new table class - ```java - import de.gnmyt.SQLToolkit.drivers.MySQLConnection; - import de.gnmyt.SQLToolkit.storage.SQLTable; - - public class ExampleTable extends SQLTable { - - public ExampleTable(MySQLConnection connection) { - super(connection); - } - - @Override - protected String tableName() { - return "example"; - } - - @Override - protected void tableFields() { - string("column1", 255, "default"); - string("colum2", 100, "test2"); - integer("colum3", 2, ""); - } - - public void addSomething() { - insert() - .value("column1", "test") - .value("colum3", 52) - .execute(); - } - - public void deleteUser() { - delete() - .where("column1", "test") - .execute(); - } - } - ``` - 2. Register your table - ```java - connection.getTableFactory().register(new ExampleTable(connection)); - ``` - 3. Now you can access your table from everywhere - ```java - ((ExampleTable) connection.getTableFactory().getTable(ExampleTable.class)) - .addSomething(); - ``` + 1. Create a new table class + ```java + import de.gnmyt.SQLToolkit.drivers.MySQLConnection; + import de.gnmyt.SQLToolkit.storage.SQLTable; + + public class ExampleTable extends SQLTable { + + public ExampleTable(MySQLConnection connection) { + super(connection); + } + + @Override + protected String tableName() { + return "example"; + } + + @Override + protected void tableFields() { + string("column1", 255, "default"); + string("colum2", 100, "test2"); + integer("colum3", 2, ""); + } + + public void addSomething() { + insert() + .value("column1", "test") + .value("colum3", 52) + .execute(); + } + + public void deleteUser() { + delete() + .where("column1", "test") + .execute(); + } + } + ``` + 2. Register your table + ```java + connection.getTableFactory().register(new ExampleTable(connection)); + ``` + 3. Now you can access your table from everywhere + ```java + ((ExampleTable) connection.getTableFactory().getTable(ExampleTable.class)) + .addSomething(); + ``` 6. The use of the table factory with storage mediums - 1. Create a new storage medium class - ```java - import de.gnmyt.SQLToolkit.drivers.MySQLConnection; - import de.gnmyt.SQLToolkit.storage.SQLStorageMedium; + 1. Create a new storage medium class + ```java + import de.gnmyt.SQLToolkit.drivers.MySQLConnection; + import de.gnmyt.SQLToolkit.storage.SQLStorageMedium; + + public class ExampleStorage extends SQLStorageMedium { + + public ExampleStorage(MySQLConnection connection) { + super(connection); + } + + @Override + protected String tableName() { + return "example_storage"; + } + } + ``` + 2. Register your storage + ```java + connection.getTableFactory().register(new ExampleStorage(connection)); + ``` + 3. Now you can access your storage medium from everywhere. Try something like that: + ```java + SQLStorageMedium storage = connection.getTableFactory().getStorage(ExampleStorage.class); + + storage.insert("username", "test"); + String username = storage.get("username"); + storage.delete("username"); + + storage.insertOrUpdate("version", "1.0.0"); + + storage.getEntries(); + ``` - public class ExampleStorage extends SQLStorageMedium { - - public ExampleStorage(MySQLConnection connection) { - super(connection); - } - - @Override - protected String tableName() { - return "example_storage"; - } - } - ``` - 2. Register your storage - ```java - connection.getTableFactory().register(new ExampleStorage(connection)); - ``` - 3. Now you can access your storage medium from everywhere. - Try something like that: - ```java - SQLStorageMedium storage = connection.getTableFactory().getStorage(ExampleStorage.class); - - storage.insert("username", "test"); - String username = storage.get("username"); - storage.delete("username"); - - storage.insertOrUpdate("version", "1.0.0"); - - storage.getEntries(); - ``` - ## License Distributed under the MIT License. See `LICENSE` for more information. ## End -Currently there are not many features yet, so feel free to write me some suggestions! + +Currently, there are not many features yet, so feel free to write me some suggestions! [contributors-shield]: https://img.shields.io/github/contributors/gnmyt/sqltoolkit.svg?style=for-the-badge + [contributors-url]: https://github.com/gnmyt/sqltoolkit/graphs/contributors + [forks-shield]: https://img.shields.io/github/forks/gnmyt/sqltoolkit.svg?style=for-the-badge + [forks-url]: https://github.com/gnmyt/sqltoolkit/network/members + [stars-shield]: https://img.shields.io/github/stars/gnmyt/sqltoolkit.svg?style=for-the-badge + [stars-url]: https://github.com/gnmyt/sqltoolkit/stargazers + [issues-shield]: https://img.shields.io/github/issues/gnmyt/sqltoolkit.svg?style=for-the-badge + [issues-url]: https://github.com/gnmyt/sqltoolkit/issues + [license-shield]: https://img.shields.io/github/license/gnmyt/sqltoolkit.svg?style=for-the-badge + [license-url]: https://github.com/gnmyt/sqltoolkit/blob/master/LICENSE.txt -- 2.47.2 From a3766aa49035313f5dcef5528cbcab5f4949aaf7 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 23:24:16 +0200 Subject: [PATCH 053/121] Cleaned up code --- src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java | 2 +- src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java | 4 ++-- src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java index ff705cd..5996be1 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java @@ -80,7 +80,7 @@ public class InsertManager { /** - * Execute the current SQL query + * Executes the current SQL query */ public void execute() { connection.update(prepareStatement(), values.values().toArray()); diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index 8cfb3d3..2778aaf 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -81,8 +81,8 @@ public abstract class SQLTable { /** * Adds a boolean to the table (without allowNull) * - * @param name The name of the boolean you want to add - * @param extras The extras you want to add to the boolean + * @param name The name of the boolean you want to add + * @param extras The extras you want to add to the boolean */ protected void bool(String name, String... extras) { custom(SQLType.BOOLEAN.getValue(), name, 1, false, "", extras); diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java b/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java index f0a98f8..49298f9 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java @@ -9,10 +9,11 @@ public enum SQLType { DATETIME("DATETIME"), BOOLEAN("TINYINT"); - private String value; + private final String value; /** * Basic constructor of the {@link SQLType} enum + * * @param value The value of the type */ SQLType(String value) { -- 2.47.2 From 7daa494272fb96640e0b097c9db02e0119ff0eee Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 20 Aug 2021 00:09:15 +0200 Subject: [PATCH 054/121] Added a comment to the table factory --- src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java b/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java index 45bddec..5e4f4db 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java +++ b/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java @@ -12,6 +12,11 @@ public class TableFactory { private final MySQLConnection connection; + /** + * Basic constructor of the {@link TableFactory} + * + * @param connection The mysql connection + */ public TableFactory(MySQLConnection connection) { this.connection = connection; } -- 2.47.2 From 5114296b74e13249046c88bf9eadca7f8f665670 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 20 Aug 2021 14:05:24 +0200 Subject: [PATCH 055/121] Added default values to the table field --- .../java/de/gnmyt/SQLToolkit/types/TableField.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java b/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java index 54f9063..c8f24f0 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java @@ -2,11 +2,11 @@ package de.gnmyt.SQLToolkit.types; public class TableField { - private String name; - private String type; - private int length; - private boolean allowNull; - private String defaultValue; + private String name = "default"; + private String type = SQLType.STRING.getValue(); + private int length = 255; + private boolean allowNull = false; + private String defaultValue = ""; private String[] extra; /** -- 2.47.2 From 1bea0fd0b28507d17624e185ecd5ee133b749565 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 20 Aug 2021 14:07:52 +0200 Subject: [PATCH 056/121] Added default values to the table field --- src/main/java/de/gnmyt/SQLToolkit/types/TableField.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java b/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java index c8f24f0..5866fa8 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java +++ b/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java @@ -7,7 +7,7 @@ public class TableField { private int length = 255; private boolean allowNull = false; private String defaultValue = ""; - private String[] extra; + private String[] extra = new String[0]; /** * Basic constructor of the {@link TableField} -- 2.47.2 From 7925f2f1af19052feea9fb678a94d9720e93b523 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 20 Aug 2021 14:42:03 +0200 Subject: [PATCH 057/121] Created the CustomTableFieldManager --- .../manager/CustomTableFieldManager.java | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 src/main/java/de/gnmyt/SQLToolkit/manager/CustomTableFieldManager.java diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/CustomTableFieldManager.java b/src/main/java/de/gnmyt/SQLToolkit/manager/CustomTableFieldManager.java new file mode 100644 index 0000000..5cf5397 --- /dev/null +++ b/src/main/java/de/gnmyt/SQLToolkit/manager/CustomTableFieldManager.java @@ -0,0 +1,106 @@ +package de.gnmyt.SQLToolkit.manager; + +import de.gnmyt.SQLToolkit.storage.SQLTable; +import de.gnmyt.SQLToolkit.types.SQLType; +import de.gnmyt.SQLToolkit.types.TableField; + +public class CustomTableFieldManager { + + private final SQLTable table; + + private final TableField field = new TableField(); + + /** + * Basic constructor of the {@link CustomTableFieldManager} + * + * @param table Your current sql table + */ + public CustomTableFieldManager(SQLTable table) { + this.table = table; + } + + /** + * Set the name of the table field + * + * @param name The new name of the table field + * @return this class + */ + public CustomTableFieldManager name(String name) { + field.setName(name); + return this; + } + + /** + * Sets the type of the table field + * + * @param type The new type of the table field + * @return this class + */ + public CustomTableFieldManager type(SQLType type) { + field.setType(type.getValue()); + return this; + } + + /** + * Sets the type of the table field as a string + * + * @param type The new type of the table field + * @return this class + */ + public CustomTableFieldManager type(String type) { + field.setType(type); + return this; + } + + /** + * Sets the length of the table field + * + * @param length The new length of the table field + * @return this class + */ + public CustomTableFieldManager length(int length) { + field.setLength(length); + return this; + } + + /** + * Allows a null in the table field + * + * @param allowNull true if a NULL is allowed, otherwise false + * @return this class + */ + public CustomTableFieldManager allowNull(boolean allowNull) { + field.setAllowNull(allowNull); + return this; + } + + /** + * Sets the default value of the table field + * + * @param defaultValue The new default value of the table field + * @return this class + */ + public CustomTableFieldManager defaultValue(String defaultValue) { + field.setDefaultValue(defaultValue); + return this; + } + + /** + * Sets the extras of the table field + * + * @param extras The new extras of the table field + * @return this class + */ + public CustomTableFieldManager extras(String[] extras) { + field.setExtra(extras); + return this; + } + + /** + * Adds the current field to the sql table + */ + public void add() { + table.custom(field); + } + +} -- 2.47.2 From 2be583685fb84436d45d8652b32605aa5acebd21 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 20 Aug 2021 14:42:37 +0200 Subject: [PATCH 058/121] Integrated the CustomTableFieldManager into the SQLTable --- .../de/gnmyt/SQLToolkit/storage/SQLTable.java | 42 +++++++++++++------ 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java index 2778aaf..446e008 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java @@ -1,10 +1,7 @@ package de.gnmyt.SQLToolkit.storage; import de.gnmyt.SQLToolkit.drivers.MySQLConnection; -import de.gnmyt.SQLToolkit.manager.DeletionManager; -import de.gnmyt.SQLToolkit.manager.InsertManager; -import de.gnmyt.SQLToolkit.manager.SelectionManager; -import de.gnmyt.SQLToolkit.manager.UpdateManager; +import de.gnmyt.SQLToolkit.manager.*; import de.gnmyt.SQLToolkit.types.SQLType; import de.gnmyt.SQLToolkit.types.TableField; @@ -102,6 +99,34 @@ public abstract class SQLTable { custom(new TableField(name, type, length, allowNull, defaultValue).setExtra(extras)); } + /** + * Adds a table field to the table + * + * @param tableField The table field you want to add + */ + public void custom(TableField tableField) { + tableFields.add(tableField); + } + + /** + * Adds a custom table field to the table + * + * @param name The name of the column + * @return the manager of the table field + */ + protected CustomTableFieldManager custom(String name) { + return new CustomTableFieldManager(this).name(name); + } + + /** + * Adds a custom table field to the table + * + * @return the manager of the table field + */ + protected CustomTableFieldManager custom() { + return new CustomTableFieldManager(this); + } + /** * Gets the database selection from the current the table * @@ -138,15 +163,6 @@ public abstract class SQLTable { return connection.deleteFrom(tableName()); } - /** - * Adds a table field to the table - * - * @param tableField The table field you want to add - */ - protected void custom(TableField tableField) { - tableFields.add(tableField); - } - /** * Generates the table sql * -- 2.47.2 From 788cec76fafd6cb46062a6aaeb11f718949d6efd Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 20 Aug 2021 14:43:28 +0200 Subject: [PATCH 059/121] Integrated the CustomTableFieldManager into the readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index aa446f3..ec730b6 100644 --- a/README.md +++ b/README.md @@ -144,6 +144,7 @@ easier. @Override protected void tableFields() { + custom("test").type(SQLType.STRING).length(255).add(); string("column1", 255, "default"); string("colum2", 100, "test2"); integer("colum3", 2, ""); -- 2.47.2 From b28b2606cb2b63336996d10f17714c6c9fa1d26a Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 20 Aug 2021 14:46:44 +0200 Subject: [PATCH 060/121] Changed user to something & changed value to 3 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ec730b6..2c34166 100644 --- a/README.md +++ b/README.md @@ -157,9 +157,9 @@ easier. .execute(); } - public void deleteUser() { + public void deleteSomething() { delete() - .where("column1", "test") + .where("column3", "test") .execute(); } } -- 2.47.2 From fefbebeb3a9065f901556159fce985e3d5fc3000 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 20 Aug 2021 14:53:12 +0200 Subject: [PATCH 061/121] Updated the consumer methods in the MySQLConnection --- .../SQLToolkit/drivers/MySQLConnection.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java index 69d7d5c..a6e8764 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java @@ -99,12 +99,26 @@ public class MySQLConnection { * @param consumer The consumer * @param params The optional parameters */ - public void getResult(String query, SQLConsumer consumer, Object... params) { + public void getResultSet(String query, SQLConsumer consumer, Object... params) { try { - ResultSet resultSet = getResultSet(query, params); - consumer.accept(resultSet); - resultSet.close(); - } catch (Exception ignored) { + consumer.accept(getResultSet(query, params)); + } catch (Exception e) { + LOG.error(e.getMessage()); + } + } + + /** + * Run an action with a result from your server + * + * @param query The search query + * @param consumer The consumer + * @param params The optional parameters + */ + public void getResult(String query, SQLConsumer consumer, Object... params) { + try { + consumer.accept(getResult(query, params)); + } catch (Exception e) { + LOG.error(e.getMessage()); } } -- 2.47.2 From 043bd2139d718c72a0ed330f1cacc851e896c31f Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 20 Aug 2021 14:57:57 +0200 Subject: [PATCH 062/121] Added /target to the .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index bcbe4c5..c4016ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /sqltoolkit.iml /.idea/ +/target \ No newline at end of file -- 2.47.2 From 7c4582b0431a63ae612659f0f29b472f2646dbbd Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 20 Aug 2021 14:59:36 +0200 Subject: [PATCH 063/121] Changed the package name from de.gnmyt.SQLToolkit to de.gnmyt.sqltoolkit --- README.md | 8 ++++---- .../{SQLToolkit => sqltoolkit}/api/SQLConsumer.java | 2 +- .../drivers/MySQLConnection.java | 12 ++++++------ .../factory/TableFactory.java | 8 ++++---- .../generator/TableGenerator.java | 8 ++++---- .../manager/CustomTableFieldManager.java | 8 ++++---- .../manager/DeletionManager.java | 4 ++-- .../manager/InsertManager.java | 4 ++-- .../manager/ResultManager.java | 4 ++-- .../manager/SelectionManager.java | 4 ++-- .../manager/UpdateManager.java | 4 ++-- .../storage/SQLStorageMedium.java | 4 ++-- .../{SQLToolkit => sqltoolkit}/storage/SQLTable.java | 10 +++++----- .../{SQLToolkit => sqltoolkit}/types/LoginParam.java | 2 +- .../{SQLToolkit => sqltoolkit}/types/SQLType.java | 2 +- .../{SQLToolkit => sqltoolkit}/types/TableField.java | 2 +- 16 files changed, 43 insertions(+), 43 deletions(-) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/api/SQLConsumer.java (79%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/drivers/MySQLConnection.java (97%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/factory/TableFactory.java (88%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/generator/TableGenerator.java (94%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/manager/CustomTableFieldManager.java (93%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/manager/DeletionManager.java (97%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/manager/InsertManager.java (96%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/manager/ResultManager.java (98%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/manager/SelectionManager.java (97%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/manager/UpdateManager.java (97%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/storage/SQLStorageMedium.java (96%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/storage/SQLTable.java (96%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/types/LoginParam.java (95%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/types/SQLType.java (93%) rename src/main/java/de/gnmyt/{SQLToolkit => sqltoolkit}/types/TableField.java (99%) diff --git a/README.md b/README.md index 2c34166..bd6b2c4 100644 --- a/README.md +++ b/README.md @@ -128,8 +128,8 @@ easier. 5. The use of the table factory 1. Create a new table class ```java - import de.gnmyt.SQLToolkit.drivers.MySQLConnection; - import de.gnmyt.SQLToolkit.storage.SQLTable; + import de.gnmyt.sqltoolkit.drivers.MySQLConnection; + import de.gnmyt.sqltoolkit.storage.SQLTable; public class ExampleTable extends SQLTable { @@ -176,8 +176,8 @@ easier. 6. The use of the table factory with storage mediums 1. Create a new storage medium class ```java - import de.gnmyt.SQLToolkit.drivers.MySQLConnection; - import de.gnmyt.SQLToolkit.storage.SQLStorageMedium; + import de.gnmyt.sqltoolkit.drivers.MySQLConnection; + import de.gnmyt.sqltoolkit.storage.SQLStorageMedium; public class ExampleStorage extends SQLStorageMedium { diff --git a/src/main/java/de/gnmyt/SQLToolkit/api/SQLConsumer.java b/src/main/java/de/gnmyt/sqltoolkit/api/SQLConsumer.java similarity index 79% rename from src/main/java/de/gnmyt/SQLToolkit/api/SQLConsumer.java rename to src/main/java/de/gnmyt/sqltoolkit/api/SQLConsumer.java index fa2999b..24be0a0 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/api/SQLConsumer.java +++ b/src/main/java/de/gnmyt/sqltoolkit/api/SQLConsumer.java @@ -1,4 +1,4 @@ -package de.gnmyt.SQLToolkit.api; +package de.gnmyt.sqltoolkit.api; import java.sql.SQLException; diff --git a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java similarity index 97% rename from src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java rename to src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java index a6e8764..2e7cc1b 100755 --- a/src/main/java/de/gnmyt/SQLToolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java @@ -1,10 +1,10 @@ -package de.gnmyt.SQLToolkit.drivers; +package de.gnmyt.sqltoolkit.drivers; -import de.gnmyt.SQLToolkit.api.SQLConsumer; -import de.gnmyt.SQLToolkit.factory.TableFactory; -import de.gnmyt.SQLToolkit.generator.TableGenerator; -import de.gnmyt.SQLToolkit.manager.*; -import de.gnmyt.SQLToolkit.types.LoginParam; +import de.gnmyt.sqltoolkit.api.SQLConsumer; +import de.gnmyt.sqltoolkit.factory.TableFactory; +import de.gnmyt.sqltoolkit.generator.TableGenerator; +import de.gnmyt.sqltoolkit.manager.*; +import de.gnmyt.sqltoolkit.types.LoginParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java b/src/main/java/de/gnmyt/sqltoolkit/factory/TableFactory.java similarity index 88% rename from src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java rename to src/main/java/de/gnmyt/sqltoolkit/factory/TableFactory.java index 5e4f4db..a26b0d7 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/factory/TableFactory.java +++ b/src/main/java/de/gnmyt/sqltoolkit/factory/TableFactory.java @@ -1,8 +1,8 @@ -package de.gnmyt.SQLToolkit.factory; +package de.gnmyt.sqltoolkit.factory; -import de.gnmyt.SQLToolkit.drivers.MySQLConnection; -import de.gnmyt.SQLToolkit.storage.SQLStorageMedium; -import de.gnmyt.SQLToolkit.storage.SQLTable; +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.storage.SQLStorageMedium; +import de.gnmyt.sqltoolkit.storage.SQLTable; import java.util.HashMap; diff --git a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java b/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java similarity index 94% rename from src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java rename to src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java index 0c7e94f..3767878 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/generator/TableGenerator.java +++ b/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java @@ -1,8 +1,8 @@ -package de.gnmyt.SQLToolkit.generator; +package de.gnmyt.sqltoolkit.generator; -import de.gnmyt.SQLToolkit.drivers.MySQLConnection; -import de.gnmyt.SQLToolkit.types.SQLType; -import de.gnmyt.SQLToolkit.types.TableField; +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.types.SQLType; +import de.gnmyt.sqltoolkit.types.TableField; import java.util.ArrayList; diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/CustomTableFieldManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/CustomTableFieldManager.java similarity index 93% rename from src/main/java/de/gnmyt/SQLToolkit/manager/CustomTableFieldManager.java rename to src/main/java/de/gnmyt/sqltoolkit/manager/CustomTableFieldManager.java index 5cf5397..6bad27d 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/CustomTableFieldManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/CustomTableFieldManager.java @@ -1,8 +1,8 @@ -package de.gnmyt.SQLToolkit.manager; +package de.gnmyt.sqltoolkit.manager; -import de.gnmyt.SQLToolkit.storage.SQLTable; -import de.gnmyt.SQLToolkit.types.SQLType; -import de.gnmyt.SQLToolkit.types.TableField; +import de.gnmyt.sqltoolkit.storage.SQLTable; +import de.gnmyt.sqltoolkit.types.SQLType; +import de.gnmyt.sqltoolkit.types.TableField; public class CustomTableFieldManager { diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/DeletionManager.java similarity index 97% rename from src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java rename to src/main/java/de/gnmyt/sqltoolkit/manager/DeletionManager.java index 5476d21..bb544b2 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/DeletionManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/DeletionManager.java @@ -1,6 +1,6 @@ -package de.gnmyt.SQLToolkit.manager; +package de.gnmyt.sqltoolkit.manager; -import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; import org.slf4j.Logger; import java.util.ArrayList; diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java similarity index 96% rename from src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java rename to src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java index 5996be1..1c1ee1f 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/InsertManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java @@ -1,6 +1,6 @@ -package de.gnmyt.SQLToolkit.manager; +package de.gnmyt.sqltoolkit.manager; -import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; import java.util.HashMap; diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/ResultManager.java similarity index 98% rename from src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java rename to src/main/java/de/gnmyt/sqltoolkit/manager/ResultManager.java index 35c0894..1b66e11 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/ResultManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/ResultManager.java @@ -1,6 +1,6 @@ -package de.gnmyt.SQLToolkit.manager; +package de.gnmyt.sqltoolkit.manager; -import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; import org.slf4j.Logger; import java.sql.ResultSet; diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java similarity index 97% rename from src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java rename to src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java index 4c9a31b..be2e859 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/SelectionManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java @@ -1,6 +1,6 @@ -package de.gnmyt.SQLToolkit.manager; +package de.gnmyt.sqltoolkit.manager; -import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; import org.slf4j.Logger; import java.sql.ResultSet; diff --git a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java similarity index 97% rename from src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java rename to src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java index f59414d..a8da0d8 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java @@ -1,6 +1,6 @@ -package de.gnmyt.SQLToolkit.manager; +package de.gnmyt.sqltoolkit.manager; -import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; import org.slf4j.Logger; import java.util.ArrayList; diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java b/src/main/java/de/gnmyt/sqltoolkit/storage/SQLStorageMedium.java similarity index 96% rename from src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java rename to src/main/java/de/gnmyt/sqltoolkit/storage/SQLStorageMedium.java index 02ea912..e52717e 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLStorageMedium.java +++ b/src/main/java/de/gnmyt/sqltoolkit/storage/SQLStorageMedium.java @@ -1,6 +1,6 @@ -package de.gnmyt.SQLToolkit.storage; +package de.gnmyt.sqltoolkit.storage; -import de.gnmyt.SQLToolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java similarity index 96% rename from src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java rename to src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java index 446e008..8f72f55 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java @@ -1,9 +1,9 @@ -package de.gnmyt.SQLToolkit.storage; +package de.gnmyt.sqltoolkit.storage; -import de.gnmyt.SQLToolkit.drivers.MySQLConnection; -import de.gnmyt.SQLToolkit.manager.*; -import de.gnmyt.SQLToolkit.types.SQLType; -import de.gnmyt.SQLToolkit.types.TableField; +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.manager.*; +import de.gnmyt.sqltoolkit.types.SQLType; +import de.gnmyt.sqltoolkit.types.TableField; import java.util.ArrayList; diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java b/src/main/java/de/gnmyt/sqltoolkit/types/LoginParam.java similarity index 95% rename from src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java rename to src/main/java/de/gnmyt/sqltoolkit/types/LoginParam.java index a31406c..5936d71 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/LoginParam.java +++ b/src/main/java/de/gnmyt/sqltoolkit/types/LoginParam.java @@ -1,4 +1,4 @@ -package de.gnmyt.SQLToolkit.types; +package de.gnmyt.sqltoolkit.types; public enum LoginParam { diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java b/src/main/java/de/gnmyt/sqltoolkit/types/SQLType.java similarity index 93% rename from src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java rename to src/main/java/de/gnmyt/sqltoolkit/types/SQLType.java index 49298f9..f404cf0 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/SQLType.java +++ b/src/main/java/de/gnmyt/sqltoolkit/types/SQLType.java @@ -1,4 +1,4 @@ -package de.gnmyt.SQLToolkit.types; +package de.gnmyt.sqltoolkit.types; public enum SQLType { diff --git a/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java b/src/main/java/de/gnmyt/sqltoolkit/types/TableField.java similarity index 99% rename from src/main/java/de/gnmyt/SQLToolkit/types/TableField.java rename to src/main/java/de/gnmyt/sqltoolkit/types/TableField.java index 5866fa8..62df74a 100644 --- a/src/main/java/de/gnmyt/SQLToolkit/types/TableField.java +++ b/src/main/java/de/gnmyt/sqltoolkit/types/TableField.java @@ -1,4 +1,4 @@ -package de.gnmyt.SQLToolkit.types; +package de.gnmyt.sqltoolkit.types; public class TableField { -- 2.47.2 From 0605b4fcd9f0e29a543a488f573931a21549bcf6 Mon Sep 17 00:00:00 2001 From: mathias Date: Tue, 24 Aug 2021 20:27:25 +0200 Subject: [PATCH 064/121] Changed the return type of TableGenerator#create to void --- .../java/de/gnmyt/sqltoolkit/generator/TableGenerator.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java b/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java index 3767878..c241ca0 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java +++ b/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java @@ -88,10 +88,8 @@ public class TableGenerator { /** * Creates the table you wanted - * - * @return this class */ - public TableGenerator create() { + public void create() { StringBuilder sb = new StringBuilder(); sb.append("CREATE TABLE IF NOT EXISTS ").append(tableName).append(" ( "); @@ -105,7 +103,6 @@ public class TableGenerator { sb.append(" ) ENGINE = InnoDB;"); connection.update(sb.toString()); - return this; } } -- 2.47.2 From f4f6546caedb4be1d7233ba0a71ea29b85c36e0e Mon Sep 17 00:00:00 2001 From: mathias Date: Tue, 24 Aug 2021 21:12:42 +0200 Subject: [PATCH 065/121] Fixed a important bug in the SelectionManager --- src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java index be2e859..8a6288d 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java @@ -131,7 +131,7 @@ public class SelectionManager { StringBuilder query = new StringBuilder().append("SELECT * FROM ").append(tableName).append(" "); for (int i = 0; i < whereList.size(); i++) { - if (i > 0) query.append("WHERE "); + if (i == 0) query.append("WHERE "); else query.append("AND "); query.append(whereList.keySet().toArray()[i]).append(" = ? "); -- 2.47.2 From 9ef0fbcba45a084c1db34f3e90519985917262ec Mon Sep 17 00:00:00 2001 From: mathias Date: Wed, 25 Aug 2021 13:24:29 +0200 Subject: [PATCH 066/121] Created the table example --- src/examples/java/TableExample.java | 96 +++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/examples/java/TableExample.java diff --git a/src/examples/java/TableExample.java b/src/examples/java/TableExample.java new file mode 100644 index 0000000..7e60ce5 --- /dev/null +++ b/src/examples/java/TableExample.java @@ -0,0 +1,96 @@ +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.storage.SQLTable; +import de.gnmyt.sqltoolkit.types.SQLType; +import de.gnmyt.sqltoolkit.types.TableField; + +public class TableExample { + + private static MySQLConnection connection; + + public static void main(String[] args) { + + // First we need to connect to the mysql database + connection = new MySQLConnection("localhost", "root", "password", "database").connect(); + + // Then we can register our user table + connection.getTableFactory().register(new UserTable(connection)); + + // Now let's create some users + createUser("GNM", "germannewsmaker@gmail.com", "Mathias"); + + createUser("delete_me", "deleteme@example.com", "DeleteMe"); + + // Here we can get the email of our user before we delete him + String email = getUserMail("delete_me"); + + // Now we can delete this user + deleteUser("delete_me"); + } + + /** + * Creates a user in the user table + * + * @param username The name of the user (nickname) + * @param email The email of the user + * @param first_name The first name of the user + */ + public static void createUser(String username, String email, String first_name) { + SQLTable userTable = connection.getTableFactory().getTable(UserTable.class); + + userTable.insert() + .value("username", username) + .value("email", email) + .value("first_name", first_name) + .execute(); + } + + /** + * Deletes a user from the user table + * + * @param username The name of the user + */ + public static void deleteUser(String username) { + SQLTable userTable = connection.getTableFactory().getTable(UserTable.class); + + userTable.delete() + .where("username", username) + .execute(); + } + + /** + * Gets the email of the user + * + * @param username The name of the user + * @return the email of the user + */ + public static String getUserMail(String username) { + SQLTable userTable = connection.getTableFactory().getTable(UserTable.class); + + return userTable.select() + .where("username", username) + .getResult() + .getString("email"); + } + + public static class UserTable extends SQLTable { + + public UserTable(MySQLConnection connection) { + super(connection); + } + + @Override + protected String tableName() { + return "users"; + } + + @Override + protected void tableFields() { + string("username", 255, ""); + custom(new TableField().setType(SQLType.STRING).setName("email").setLength(25).setDefaultValue("test@example.com")); + custom("password").type(SQLType.STRING).allowNull(true).length(80).add(); + custom().name("first_name").add(); + } + + } + +} -- 2.47.2 From 3a2186399059521a4741be082e0e27b2f9f67bee Mon Sep 17 00:00:00 2001 From: mathias Date: Wed, 25 Aug 2021 14:30:43 +0200 Subject: [PATCH 067/121] Created the login example --- src/examples/java/LoginExample.java | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/examples/java/LoginExample.java diff --git a/src/examples/java/LoginExample.java b/src/examples/java/LoginExample.java new file mode 100644 index 0000000..930bb18 --- /dev/null +++ b/src/examples/java/LoginExample.java @@ -0,0 +1,32 @@ +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.types.LoginParam; + +import java.util.Arrays; + +public class LoginExample { + + public static void main(String[] args) { + + // First we can define the mysql server data into some variables + String hostname = "localhost"; + String username = "root"; + String password = "password"; + String database = "database"; + + // Then we need to create a connection + MySQLConnection connection = new MySQLConnection(hostname, username, password, database, // Here you need to provide your mysql server data + LoginParam.AUTO_RECONNECT); // You can set login parameters in the constructor + + // You can also set the connection string manually (before connecting) + connection.updateConnectionString(LoginParam.AUTO_RECONNECT, + LoginParam.USE_SSL, + LoginParam.UTF8_ENCODING); + + // Now you can connect to the database + connection.connect(); + + // If you want to you can list all login parameters + Arrays.stream(LoginParam.values()).forEach(System.out::println); + } + +} -- 2.47.2 From 93858ebbcdb25d007591095a28d428b197c34e88 Mon Sep 17 00:00:00 2001 From: mathias Date: Wed, 25 Aug 2021 17:17:06 +0200 Subject: [PATCH 068/121] Created the storage medium example --- src/examples/java/StorageMediumExample.java | 76 +++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/examples/java/StorageMediumExample.java diff --git a/src/examples/java/StorageMediumExample.java b/src/examples/java/StorageMediumExample.java new file mode 100644 index 0000000..02c1e7d --- /dev/null +++ b/src/examples/java/StorageMediumExample.java @@ -0,0 +1,76 @@ +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.storage.SQLStorageMedium; + +public class StorageMediumExample { + + public static void main(String[] args) { + + // First we need to connect to the mysql database + MySQLConnection connection = new MySQLConnection("localhost", "root", "password", "database").connect(); + + // Then we can register our user table + connection.getTableFactory().register(new StorageMediumExample.ConfigurationStorage(connection)); + + // Now we can get the storage from our table factory + ConfigurationStorage storage = (ConfigurationStorage) connection.getTableFactory().getStorage(ConfigurationStorage.class); + + // Here we can use the methods that we created in the storage + storage.updateLanguage("en"); + storage.updateVersion("1.0"); + + // We can also get a value by using the storage medium + String version = storage.getVersion(); + + // If you want to you can list all entries from the current storage + storage.getEntries().forEach(entry -> + System.out.println( entry.get("keyName") + " -> " + entry.get("value") )); + } + + + public static class ConfigurationStorage extends SQLStorageMedium { + + public ConfigurationStorage(MySQLConnection connection) { + super(connection); + } + + @Override + protected String tableName() { + return "config_storage"; + } + + // Here we can add some example methods to test the storage medium + + /** + * Updates the language of the configuration storage + * @param newLanguage The new language + */ + public void updateLanguage(String newLanguage) { + insertOrUpdate("language", newLanguage); + } + + /** + * Gets the current language of the configuration storage + * @return The current language of the configuration storage + */ + public String getLanguage() { + return get("language"); + } + + /** + * Updates the version of the configuration storage + * @param newVersion The new version + */ + public void updateVersion(String newVersion) { + insertOrUpdate("version", newVersion); + } + + /** + * Gets the current version of the configuration storage + * @return The current version of the configuration storage + */ + public String getVersion() { + return get("version"); + } + } + +} -- 2.47.2 From 9b8a395e3333158063ff51f111ad5270faa14964 Mon Sep 17 00:00:00 2001 From: mathias Date: Wed, 25 Aug 2021 17:22:22 +0200 Subject: [PATCH 069/121] Edited the README.md --- README.md | 85 ++----------------------------------------------------- 1 file changed, 2 insertions(+), 83 deletions(-) diff --git a/README.md b/README.md index bd6b2c4..0449cc1 100644 --- a/README.md +++ b/README.md @@ -125,88 +125,7 @@ easier. .where("column", "value") .execute(); ``` -5. The use of the table factory - 1. Create a new table class - ```java - import de.gnmyt.sqltoolkit.drivers.MySQLConnection; - import de.gnmyt.sqltoolkit.storage.SQLTable; - - public class ExampleTable extends SQLTable { - - public ExampleTable(MySQLConnection connection) { - super(connection); - } - - @Override - protected String tableName() { - return "example"; - } - - @Override - protected void tableFields() { - custom("test").type(SQLType.STRING).length(255).add(); - string("column1", 255, "default"); - string("colum2", 100, "test2"); - integer("colum3", 2, ""); - } - - public void addSomething() { - insert() - .value("column1", "test") - .value("colum3", 52) - .execute(); - } - - public void deleteSomething() { - delete() - .where("column3", "test") - .execute(); - } - } - ``` - 2. Register your table - ```java - connection.getTableFactory().register(new ExampleTable(connection)); - ``` - 3. Now you can access your table from everywhere - ```java - ((ExampleTable) connection.getTableFactory().getTable(ExampleTable.class)) - .addSomething(); - ``` -6. The use of the table factory with storage mediums - 1. Create a new storage medium class - ```java - import de.gnmyt.sqltoolkit.drivers.MySQLConnection; - import de.gnmyt.sqltoolkit.storage.SQLStorageMedium; - - public class ExampleStorage extends SQLStorageMedium { - - public ExampleStorage(MySQLConnection connection) { - super(connection); - } - - @Override - protected String tableName() { - return "example_storage"; - } - } - ``` - 2. Register your storage - ```java - connection.getTableFactory().register(new ExampleStorage(connection)); - ``` - 3. Now you can access your storage medium from everywhere. Try something like that: - ```java - SQLStorageMedium storage = connection.getTableFactory().getStorage(ExampleStorage.class); - - storage.insert("username", "test"); - String username = storage.get("username"); - storage.delete("username"); - - storage.insertOrUpdate("version", "1.0.0"); - - storage.getEntries(); - ``` +You can find other examples in the [examples directory](src/examples/java). ## License @@ -234,4 +153,4 @@ Currently, there are not many features yet, so feel free to write me some sugges [license-shield]: https://img.shields.io/github/license/gnmyt/sqltoolkit.svg?style=for-the-badge -[license-url]: https://github.com/gnmyt/sqltoolkit/blob/master/LICENSE.txt +[license-url]: https://github.com/gnmyt/sqltoolkit/blob/master/LICENSE \ No newline at end of file -- 2.47.2 From e8b29e1ff602dfb607559782bb2609ae9bf125ac Mon Sep 17 00:00:00 2001 From: mathias Date: Wed, 25 Aug 2021 17:23:51 +0200 Subject: [PATCH 070/121] Cleaned up code in the StorageMediumExample --- src/examples/java/StorageMediumExample.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/examples/java/StorageMediumExample.java b/src/examples/java/StorageMediumExample.java index 02c1e7d..28610aa 100644 --- a/src/examples/java/StorageMediumExample.java +++ b/src/examples/java/StorageMediumExample.java @@ -23,7 +23,7 @@ public class StorageMediumExample { // If you want to you can list all entries from the current storage storage.getEntries().forEach(entry -> - System.out.println( entry.get("keyName") + " -> " + entry.get("value") )); + System.out.println(entry.get("keyName") + " -> " + entry.get("value"))); } @@ -42,6 +42,7 @@ public class StorageMediumExample { /** * Updates the language of the configuration storage + * * @param newLanguage The new language */ public void updateLanguage(String newLanguage) { @@ -50,6 +51,7 @@ public class StorageMediumExample { /** * Gets the current language of the configuration storage + * * @return The current language of the configuration storage */ public String getLanguage() { @@ -58,6 +60,7 @@ public class StorageMediumExample { /** * Updates the version of the configuration storage + * * @param newVersion The new version */ public void updateVersion(String newVersion) { @@ -66,6 +69,7 @@ public class StorageMediumExample { /** * Gets the current version of the configuration storage + * * @return The current version of the configuration storage */ public String getVersion() { -- 2.47.2 From 5680c1968f502900a5a1e85b516c612ab7b5ad1f Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 16:20:59 +0200 Subject: [PATCH 071/121] Added the query parameter enum --- .../querybuilder/QueryParameter.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java new file mode 100644 index 0000000..8ea2aca --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java @@ -0,0 +1,34 @@ +package de.gnmyt.sqltoolkit.querybuilder; + +/** + * All usable query parameters for the {@link QueryBuilder} + */ +public enum QueryParameter { + + /** + * The name of the table provided as a {@link String} + */ + TABLE_NAME, + + /** + * All 'where'-parameters of the query provided as a {@link java.util.HashMap} + */ + WHERE_LIST, + + /** + * All values of the query provided as a {@link java.util.HashMap} + */ + VALUE_LIST, + + /** + * All 'set'-parameters of the query provided as a {@link java.util.HashMap} + */ + SET_LIST, + + /** + * The row limit of a query provided as a {@link String} + */ + LIMIT + + +} -- 2.47.2 From 787d3253141576c6e7555db3694a60c4b1f7089f Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 16:21:17 +0200 Subject: [PATCH 072/121] Added the SQLQuery object --- .../sqltoolkit/querybuilder/SQLQuery.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java new file mode 100644 index 0000000..e9b0991 --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java @@ -0,0 +1,71 @@ +package de.gnmyt.sqltoolkit.querybuilder; + +import java.util.Arrays; + +public class SQLQuery { + + private String statement = ""; + private String[] parameters = new String[0]; + + /** + * Advanced constructor of the {@link SQLQuery} with prefilled values + * + * @param statement The statement of the query + * @param parameters The query parameters + */ + public SQLQuery(String statement, String[] parameters) { + this.statement = statement; + this.parameters = parameters; + } + + /** + * Basic constructor of the {@link SQLQuery} + */ + public SQLQuery() { + + } + + /** + * Sets the new statement of the query + * + * @param statement The new query statement + */ + public void setStatement(String statement) { + this.statement = statement; + } + + /** + * Sets the new parameters of the query + * + * @param parameters The new query parameters + */ + public void setParameters(String[] parameters) { + this.parameters = parameters; + } + + /** + * Gets the current statement of the query + * + * @return the current statement + */ + public String getStatement() { + return statement; + } + + /** + * Gets the current query parameters + * + * @return the current query parameters + */ + public String[] getParameters() { + return parameters; + } + + @Override + public String toString() { + return "SQLQuery{" + + "statement='" + statement + '\'' + + ", parameters=" + Arrays.toString(parameters) + + '}'; + } +} -- 2.47.2 From a752a2269ab166e9ae91ef37f0c42aaca12439b5 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 16:21:39 +0200 Subject: [PATCH 073/121] Added the AbstractQuery class --- .../querybuilder/AbstractQuery.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/querybuilder/AbstractQuery.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/AbstractQuery.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/AbstractQuery.java new file mode 100644 index 0000000..976e86d --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/AbstractQuery.java @@ -0,0 +1,36 @@ +package de.gnmyt.sqltoolkit.querybuilder; + +import java.util.HashMap; + +public abstract class AbstractQuery { + + private final HashMap PARAMETERS = new HashMap<>(); + + /** + * The building logic of the sql query + * + * @return the sql query + */ + public abstract SQLQuery build(); + + /** + * Adds a query parameter to the building list + * + * @param type The type you want to use + * @param value The value of the type + */ + public void addParameter(QueryParameter type, Object value) { + PARAMETERS.put(type, value); + } + + /** + * Gets a query parameter from the building list + * + * @param type The type you want to get + * @return the query parameter + */ + protected Object getParameter(QueryParameter type) { + return PARAMETERS.get(type); + } + +} -- 2.47.2 From fb6b1d3a7d42e27ec2ac4ef83101af2199af36c3 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 16:21:51 +0200 Subject: [PATCH 074/121] Added the QueryBuilder --- .../sqltoolkit/querybuilder/QueryBuilder.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryBuilder.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryBuilder.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryBuilder.java new file mode 100644 index 0000000..7c17343 --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryBuilder.java @@ -0,0 +1,47 @@ +package de.gnmyt.sqltoolkit.querybuilder; + +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import org.slf4j.Logger; + +public class QueryBuilder { + + private static final Logger LOG = MySQLConnection.LOG; + + private AbstractQuery query; + + /** + * Basic constructor of the {@link QueryBuilder} + * + * @param queryType The type of the query you want to generate + */ + public QueryBuilder(Class queryType) { + try { + query = queryType.newInstance(); + } catch (Exception e) { + LOG.error("Could not initialize query: " + e.getMessage()); + } + } + + /** + * Adds a parameter to the building list + * + * @param type The type you want to use + * @param value The value of the type + * @return this class + */ + public QueryBuilder addParameter(QueryParameter type, Object value) { + query.addParameter(type, value); + return this; + } + + /** + * Builds the query + * + * @return the built query + */ + public SQLQuery build() { + return query.build(); + } + + +} -- 2.47.2 From de37860dd7077ab4259f89d3c58e5daecd232351 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 16:22:14 +0200 Subject: [PATCH 075/121] Integrated the QueryBuilder into the MySQLConnection --- .../de/gnmyt/sqltoolkit/drivers/MySQLConnection.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java index 2e7cc1b..03b448f 100755 --- a/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java @@ -4,6 +4,8 @@ import de.gnmyt.sqltoolkit.api.SQLConsumer; import de.gnmyt.sqltoolkit.factory.TableFactory; import de.gnmyt.sqltoolkit.generator.TableGenerator; import de.gnmyt.sqltoolkit.manager.*; +import de.gnmyt.sqltoolkit.querybuilder.AbstractQuery; +import de.gnmyt.sqltoolkit.querybuilder.QueryBuilder; import de.gnmyt.sqltoolkit.types.LoginParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -122,6 +124,16 @@ public class MySQLConnection { } } + /** + * Gets a new instance of the {@link QueryBuilder} + * + * @param queryType The type of the query you want to generate + * @return a new {@link QueryBuilder} instance + */ + public QueryBuilder createQuery(Class queryType) { + return new QueryBuilder(queryType); + } + /** * Update something on your server by query * -- 2.47.2 From 357a69f3acd5ea32e111abbaaf27aaf90628a83c Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 16:24:56 +0200 Subject: [PATCH 076/121] Changed the parameter type of the SQLQuery from string to object --- .../java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java index e9b0991..f54cc6f 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java @@ -5,7 +5,7 @@ import java.util.Arrays; public class SQLQuery { private String statement = ""; - private String[] parameters = new String[0]; + private Object[] parameters = new Object[0]; /** * Advanced constructor of the {@link SQLQuery} with prefilled values @@ -13,7 +13,7 @@ public class SQLQuery { * @param statement The statement of the query * @param parameters The query parameters */ - public SQLQuery(String statement, String[] parameters) { + public SQLQuery(String statement, Object[] parameters) { this.statement = statement; this.parameters = parameters; } @@ -39,7 +39,7 @@ public class SQLQuery { * * @param parameters The new query parameters */ - public void setParameters(String[] parameters) { + public void setParameters(Object[] parameters) { this.parameters = parameters; } @@ -57,7 +57,7 @@ public class SQLQuery { * * @return the current query parameters */ - public String[] getParameters() { + public Object[] getParameters() { return parameters; } -- 2.47.2 From 07126218af754cce63996d309435912364ad217a Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 16:29:54 +0200 Subject: [PATCH 077/121] Integrated the SQLQuery into the MySQLConnection --- .../sqltoolkit/drivers/MySQLConnection.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java index 03b448f..8da4e34 100755 --- a/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java @@ -6,6 +6,7 @@ import de.gnmyt.sqltoolkit.generator.TableGenerator; import de.gnmyt.sqltoolkit.manager.*; import de.gnmyt.sqltoolkit.querybuilder.AbstractQuery; import de.gnmyt.sqltoolkit.querybuilder.QueryBuilder; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; import de.gnmyt.sqltoolkit.types.LoginParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -124,6 +125,54 @@ public class MySQLConnection { } } + /** + * Gets a {@link ResultSet} from the server + * + * @param query The query you want to execute + * @return the {@link ResultSet} + */ + public ResultSet getResultSet(SQLQuery query) { + return getResultSet(query.getStatement(), query.getParameters()); + } + + /** + * Gets a {@link ResultManager} from the server + * + * @param query The query you want to execute + * @return the {@link ResultManager} + */ + public ResultManager getResult(SQLQuery query) { + return getResult(query.getStatement(), query.getParameters()); + } + + /** + * Run an action with the result from your server + * + * @param query The query you want to execute + * @param consumer The consumer you want to execute + */ + public void getResultSet(SQLQuery query, SQLConsumer consumer) { + try { + consumer.accept(getResultSet(query)); + } catch (Exception e) { + LOG.error(e.getMessage()); + } + } + + /** + * Run an action with the result from your server (get the manager) + * + * @param query The query you want to execute + * @param consumer The consumer you want to execute + */ + public void getResult(SQLQuery query, SQLConsumer consumer) { + try { + consumer.accept(getResult(query)); + } catch (Exception e) { + LOG.error(e.getMessage()); + } + } + /** * Gets a new instance of the {@link QueryBuilder} * -- 2.47.2 From 7c07f7086e4d3ba26a38cfd2519e49ec10cce7c3 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 16:35:07 +0200 Subject: [PATCH 078/121] Integrated the SQLQuery into the update method of the MySQLConnection --- .../de/gnmyt/sqltoolkit/drivers/MySQLConnection.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java index 8da4e34..7eb14b6 100755 --- a/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java @@ -205,6 +205,15 @@ public class MySQLConnection { return this; } + /** + * Update something on your server by query + * @param query The query you want to execute + * @return this class + */ + public MySQLConnection update(SQLQuery query) { + return update(query.getStatement(), query.getParameters()); + } + /** * Gets the {@link UpdateManager} for easier updating * -- 2.47.2 From cd3ce709d99bd3fb3902a4b953e3c2240c565d72 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 16:35:32 +0200 Subject: [PATCH 079/121] Cleaned up code --- .../sqltoolkit/drivers/MySQLConnection.java | 1 + .../sqltoolkit/querybuilder/SQLQuery.java | 36 +++++++++---------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java index 7eb14b6..948d238 100755 --- a/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java @@ -207,6 +207,7 @@ public class MySQLConnection { /** * Update something on your server by query + * * @param query The query you want to execute * @return this class */ diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java index f54cc6f..897ab53 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java @@ -25,24 +25,6 @@ public class SQLQuery { } - /** - * Sets the new statement of the query - * - * @param statement The new query statement - */ - public void setStatement(String statement) { - this.statement = statement; - } - - /** - * Sets the new parameters of the query - * - * @param parameters The new query parameters - */ - public void setParameters(Object[] parameters) { - this.parameters = parameters; - } - /** * Gets the current statement of the query * @@ -52,6 +34,15 @@ public class SQLQuery { return statement; } + /** + * Sets the new statement of the query + * + * @param statement The new query statement + */ + public void setStatement(String statement) { + this.statement = statement; + } + /** * Gets the current query parameters * @@ -61,6 +52,15 @@ public class SQLQuery { return parameters; } + /** + * Sets the new parameters of the query + * + * @param parameters The new query parameters + */ + public void setParameters(Object[] parameters) { + this.parameters = parameters; + } + @Override public String toString() { return "SQLQuery{" + -- 2.47.2 From 7f45e465f4bfc101acd7f870f36c0db335031054 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 16:46:16 +0200 Subject: [PATCH 080/121] Added the selection list to the QueryParameter enum --- .../de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java index 8ea2aca..ed1f21f 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java @@ -25,6 +25,11 @@ public enum QueryParameter { */ SET_LIST, + /** + * The selection list of the query provided as a {@link java.util.ArrayList} + */ + SELECT_LIST, + /** * The row limit of a query provided as a {@link String} */ -- 2.47.2 From 405f4051742db7b789e6ec9acc94cbb0c2be5bd4 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 17:03:00 +0200 Subject: [PATCH 081/121] Updated the return type of the sql query --- .../java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java index 897ab53..f9ebae3 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/SQLQuery.java @@ -39,8 +39,9 @@ public class SQLQuery { * * @param statement The new query statement */ - public void setStatement(String statement) { + public SQLQuery setStatement(String statement) { this.statement = statement; + return this; } /** @@ -57,8 +58,9 @@ public class SQLQuery { * * @param parameters The new query parameters */ - public void setParameters(Object[] parameters) { + public SQLQuery setParameters(Object[] parameters) { this.parameters = parameters; + return this; } @Override -- 2.47.2 From a3e97cda444c47e498b56dd7220be6edb0fdb4c5 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 17:04:49 +0200 Subject: [PATCH 082/121] The QueryBuilder now loads the defaults of the query --- src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryBuilder.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryBuilder.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryBuilder.java index 7c17343..d010c28 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryBuilder.java +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryBuilder.java @@ -17,6 +17,7 @@ public class QueryBuilder { public QueryBuilder(Class queryType) { try { query = queryType.newInstance(); + query.defaults(); } catch (Exception e) { LOG.error("Could not initialize query: " + e.getMessage()); } -- 2.47.2 From d41de8cfcc966f3f2e02c85250b6d86a9a0a422d Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 17:05:19 +0200 Subject: [PATCH 083/121] Added AbstractQuery#defaults --- .../java/de/gnmyt/sqltoolkit/querybuilder/AbstractQuery.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/AbstractQuery.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/AbstractQuery.java index 976e86d..b4dcaf0 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/AbstractQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/AbstractQuery.java @@ -6,6 +6,11 @@ public abstract class AbstractQuery { private final HashMap PARAMETERS = new HashMap<>(); + /** + * Here the query adds its default values + */ + public abstract void defaults(); + /** * The building logic of the sql query * -- 2.47.2 From 0772017633d5df94c88bb51aacd6841f6de20bc8 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 17:59:06 +0200 Subject: [PATCH 084/121] Added the StatementBuilder --- .../querybuilder/StatementBuilder.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java new file mode 100644 index 0000000..43d0c8a --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java @@ -0,0 +1,47 @@ +package de.gnmyt.sqltoolkit.querybuilder; + +public class StatementBuilder { + + private StringBuilder query = new StringBuilder(); + + /** + * Basic constructor of the {@link StatementBuilder} with a prefilled text + * @param text The text you want to add + */ + public StatementBuilder(String text) { + append(text); + } + + /** + * Basic constructor of the {@link StatementBuilder} + */ + public StatementBuilder() { + + } + + /** + * Adds a text to the query with spaces + * @param text The text you want to add + * @return this class + */ + public StatementBuilder append(String text) { + if (text.isEmpty()) return this; + + if (!query.toString().isEmpty()) query.append(" "); + query.append(text); + return this; + } + + /** + * Builds the query string + * @return the built string + */ + public String build() { + return query.toString(); + } + + @Override + public String toString() { + return build(); + } +} -- 2.47.2 From 537706ddca47d7569c899eaba7e65561eb3ae929 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 17:59:39 +0200 Subject: [PATCH 085/121] Added the SelectionQuery to create a 'select'-statement --- .../sqltoolkit/queries/SelectionQuery.java | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/queries/SelectionQuery.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/SelectionQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/SelectionQuery.java new file mode 100644 index 0000000..0ef1c5c --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/SelectionQuery.java @@ -0,0 +1,84 @@ +package de.gnmyt.sqltoolkit.queries; + +import de.gnmyt.sqltoolkit.querybuilder.AbstractQuery; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; +import de.gnmyt.sqltoolkit.querybuilder.StatementBuilder; + +import java.util.ArrayList; +import java.util.HashMap; + +import static de.gnmyt.sqltoolkit.querybuilder.QueryParameter.*; + +public class SelectionQuery extends AbstractQuery { + + @Override + public void defaults() { + + ArrayList selectList = new ArrayList<>(); + selectList.add("*"); + + addParameter(SELECT_LIST, selectList); + addParameter(WHERE_LIST, new HashMap()); + addParameter(TABLE_NAME, "default"); + } + + /** + * Builds the selection list + * + * @return the list as a string + */ + public String buildSelectionList() { + StringBuilder selectionString = new StringBuilder(); + + for (String selectItem : ((ArrayList) getParameter(SELECT_LIST))) { + if (!selectionString.toString().isEmpty()) selectionString.append(", "); + selectionString.append(selectItem); + } + + return selectionString.toString(); + } + + /** + * Builds the 'where'-list + * + * @return the 'where'-list as a string + */ + public String buildWhereList() { + StatementBuilder whereString = new StatementBuilder(); + + HashMap whereList = (HashMap) getParameter(WHERE_LIST); + + for (int i = 0; i < whereList.size(); i++) { + if (i == 0) whereString.append("WHERE"); + else whereString.append("AND"); + + whereString.append("`"+whereList.keySet().toArray()[i]+"`").append("=").append("?"); + } + + return whereString.toString(); + } + + /** + * Gets the parameters + * @return the parameters + */ + public Object[] getParameters() { + + HashMap whereList = (HashMap) getParameter(WHERE_LIST); + + return whereList.values().toArray(); + } + + @Override + public SQLQuery build() { + + StatementBuilder builder = new StatementBuilder("SELECT").append(buildSelectionList()).append("FROM").append("`" + getParameter(TABLE_NAME) + "`"); + + builder.append(buildWhereList()); + + if (getParameter(LIMIT) != null) builder.append("LIMIT").append(getParameter(LIMIT).toString()); + + return new SQLQuery().setStatement(builder.build()).setParameters(getParameters()); + } + +} -- 2.47.2 From b9139e77abe5d3dd1a597786ec07cefeaf1ca93d Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 18:01:43 +0200 Subject: [PATCH 086/121] Updated the SelectionManager --- .../sqltoolkit/manager/SelectionManager.java | 104 ++++++++---------- 1 file changed, 45 insertions(+), 59 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java index 8a6288d..9aac725 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/SelectionManager.java @@ -1,6 +1,10 @@ package de.gnmyt.sqltoolkit.manager; import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.queries.SelectionQuery; +import de.gnmyt.sqltoolkit.querybuilder.QueryBuilder; +import de.gnmyt.sqltoolkit.querybuilder.QueryParameter; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; import org.slf4j.Logger; import java.sql.ResultSet; @@ -11,56 +15,43 @@ import java.util.HashMap; public class SelectionManager { private final Logger LOG = MySQLConnection.LOG; - private final MySQLConnection connection; - private final HashMap whereList; - private final ArrayList databaseParameters; - private final ArrayList optionalQuery; - private int limit; - private String tableName; + + private final HashMap WHERE_LIST = new HashMap<>(); + private final ArrayList SELECTION_LIST = new ArrayList<>(); + + private String limit = ""; + private String tableName = "default"; /** - * Basic constructor for selection + * Advanced constructor of the {@link SelectionManager} with a prefilled table name * - * @param connection The current Connection + * @param connection The current connection * @param tableName The table name */ public SelectionManager(MySQLConnection connection, String tableName) { - this.whereList = new HashMap<>(); - this.databaseParameters = new ArrayList<>(); - this.optionalQuery = new ArrayList<>(); this.connection = connection; - from(tableName); + this.tableName = tableName; } /** - * Basic constructor for selection + * Basic constructor of the {@link SelectionManager} * - * @param connection The current Connection + * @param connection The current connection */ public SelectionManager(MySQLConnection connection) { - this.whereList = new HashMap<>(); - this.databaseParameters = new ArrayList<>(); - this.optionalQuery = new ArrayList<>(); this.connection = connection; } - /** - * Get the temp-generated parameters - * - * @return ArrayList of parameters - */ - private ArrayList getTempParams() { - ArrayList tempParameters = new ArrayList<>(); - whereList.forEach((k, v) -> tempParameters.add(v)); - tempParameters.addAll(databaseParameters); - return tempParameters; + public SelectionManager select(String... selection) { + SELECTION_LIST.addAll(Arrays.asList(selection)); + return this; } /** - * Sets the table name + * Sets the table name of the selection * - * @param tableName The table name + * @param tableName The new table name * @return this class */ public SelectionManager from(String tableName) { @@ -76,7 +67,7 @@ public class SelectionManager { * @return this class */ public SelectionManager where(String column, Object value) { - whereList.put(column, value); + WHERE_LIST.put(column, value); return this; } @@ -87,7 +78,19 @@ public class SelectionManager { * @return this class */ public SelectionManager limit(int limit) { - this.limit = limit; + this.limit = String.valueOf(limit); + return this; + } + + /** + * Sets the limit of the rows + * + * @param startRow The first row that should be counted + * @param limit The new limit + * @return this class + */ + public SelectionManager limit(int startRow, int limit) { + this.limit = startRow + "," + limit; return this; } @@ -97,7 +100,7 @@ public class SelectionManager { * @return ResultManager */ public ResultManager getResult() { - return connection.getResult(prepareStatement(), getTempParams().toArray()); + return connection.getResult(build()); } /** @@ -106,40 +109,23 @@ public class SelectionManager { * @return ResultSet */ public ResultSet getResultSet() { - return connection.getResultSet(prepareStatement(), getTempParams().toArray()); + return connection.getResultSet(build()); } /** - * Adding another factors + * Builds the query * - * @param query MySQL Query - * @param params Optional parameters for the Query - * @return this class + * @return the built query */ - public SelectionManager add(String query, Object... params) { - optionalQuery.add(query); - this.databaseParameters.addAll(Arrays.asList(params)); - return this; - } + private SQLQuery build() { + QueryBuilder query = connection.createQuery(SelectionQuery.class) + .addParameter(QueryParameter.TABLE_NAME, tableName) + .addParameter(QueryParameter.LIMIT, limit) + .addParameter(QueryParameter.WHERE_LIST, WHERE_LIST); - /** - * Get the current statement query - * - * @return the current statement query - */ - private String prepareStatement() { - StringBuilder query = new StringBuilder().append("SELECT * FROM ").append(tableName).append(" "); + if (!SELECTION_LIST.isEmpty()) query.addParameter(QueryParameter.SELECT_LIST, SELECTION_LIST); - 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(); + return query.build(); } } -- 2.47.2 From 3897733d6d440f125824a4a5edd2899fb81b8268 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 18:16:16 +0200 Subject: [PATCH 087/121] Added the DeletionQuery --- .../sqltoolkit/queries/DeletionQuery.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java new file mode 100644 index 0000000..d8f3221 --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java @@ -0,0 +1,60 @@ +package de.gnmyt.sqltoolkit.queries; + +import de.gnmyt.sqltoolkit.querybuilder.AbstractQuery; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; +import de.gnmyt.sqltoolkit.querybuilder.StatementBuilder; + +import java.util.HashMap; + +import static de.gnmyt.sqltoolkit.querybuilder.QueryParameter.TABLE_NAME; +import static de.gnmyt.sqltoolkit.querybuilder.QueryParameter.WHERE_LIST; + +public class DeletionQuery extends AbstractQuery { + + @Override + public void defaults() { + addParameter(WHERE_LIST, new HashMap()); + addParameter(TABLE_NAME, "default"); + } + + /** + * Builds the 'where'-list + * + * @return the 'where'-list as a string + */ + public String buildWhereList() { + StatementBuilder whereString = new StatementBuilder(); + + HashMap whereList = (HashMap) getParameter(WHERE_LIST); + + for (int i = 0; i < whereList.size(); i++) { + if (i == 0) whereString.append("WHERE"); + else whereString.append("AND"); + + whereString.append("`"+whereList.keySet().toArray()[i]+"`").append("=").append("?"); + } + + return whereString.toString(); + } + + /** + * Gets the parameters + * @return the parameters + */ + public Object[] getParameters() { + + HashMap whereList = (HashMap) getParameter(WHERE_LIST); + + return whereList.values().toArray(); + } + + @Override + public SQLQuery build() { + + StatementBuilder builder = new StatementBuilder("DELETE").append("FROM").append((String) getParameter(TABLE_NAME)); + + builder.append(buildWhereList()); + + return new SQLQuery().setStatement(builder.toString()).setParameters(getParameters()); + } +} -- 2.47.2 From 4a6f0c690181e9046a21c035095de2f2ec7ef07f Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 18:21:22 +0200 Subject: [PATCH 088/121] Integrated the DeletionQuery into the DeletionManager --- .../sqltoolkit/manager/DeletionManager.java | 64 ++++--------------- 1 file changed, 13 insertions(+), 51 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/DeletionManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/DeletionManager.java index bb544b2..bcaeea6 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/DeletionManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/DeletionManager.java @@ -1,10 +1,11 @@ package de.gnmyt.sqltoolkit.manager; import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.queries.DeletionQuery; +import de.gnmyt.sqltoolkit.querybuilder.QueryParameter; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; import org.slf4j.Logger; -import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; public class DeletionManager { @@ -12,9 +13,8 @@ public class DeletionManager { private final Logger LOG = MySQLConnection.LOG; private final MySQLConnection connection; - private final HashMap whereList; - private final ArrayList databaseParameters; - private final ArrayList optionalQuery; + + private final HashMap whereList = new HashMap<>(); private String tableName; /** @@ -24,11 +24,8 @@ public class DeletionManager { * @param tableName The table name */ public DeletionManager(MySQLConnection connection, String tableName) { - this.whereList = new HashMap<>(); - this.databaseParameters = new ArrayList<>(); - this.optionalQuery = new ArrayList<>(); this.connection = connection; - from(tableName); + this.tableName = tableName; } /** @@ -37,24 +34,9 @@ public class DeletionManager { * @param connection The current connection */ public DeletionManager(MySQLConnection connection) { - this.whereList = new HashMap<>(); - this.databaseParameters = new ArrayList<>(); - this.optionalQuery = new ArrayList<>(); this.connection = connection; } - /** - * Get the temp-generated parameters - * - * @return ArrayList of parameters - */ - private ArrayList getTempParams() { - ArrayList tempParameters = new ArrayList<>(); - whereList.forEach((k, v) -> tempParameters.add(v)); - tempParameters.addAll(databaseParameters); - return tempParameters; - } - /** * Sets the table name * @@ -82,38 +64,18 @@ public class DeletionManager { * Executes the 'delete'-statement */ public void execute() { - connection.update(prepareStatement(), getTempParams().toArray()); + connection.update(build()); } /** - * Adding another factors + * Builds the current statement * - * @param query MySQL Query - * @param params Optional parameters for the Query - * @return this class + * @return the current statement */ - public DeletionManager add(String query, Object... params) { - optionalQuery.add(query); - this.databaseParameters.addAll(Arrays.asList(params)); - return this; - } - - /** - * Get the current statement query - * - * @return the current statement query - */ - private String prepareStatement() { - StringBuilder query = new StringBuilder().append("DELETE FROM ").append(tableName); - - if (!whereList.isEmpty()) query.append(" WHERE "); - - for (int i = 0; i < whereList.size(); i++) { - if (i > 0) query.append(" AND "); - query.append(whereList.keySet().toArray()[i]).append(" = ?"); - } - - return query.toString(); + private SQLQuery build() { + return connection.createQuery(DeletionQuery.class) + .addParameter(QueryParameter.TABLE_NAME, tableName) + .addParameter(QueryParameter.WHERE_LIST, whereList).build(); } } -- 2.47.2 From c6ed5d9b8d443fadf9f6bd3a92cb7d28ba0027f4 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 21:38:29 +0200 Subject: [PATCH 089/121] Added the appendDefault method to the StatementBuilder --- .../querybuilder/StatementBuilder.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java index 43d0c8a..ad33830 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java @@ -6,6 +6,7 @@ public class StatementBuilder { /** * Basic constructor of the {@link StatementBuilder} with a prefilled text + * * @param text The text you want to add */ public StatementBuilder(String text) { @@ -21,6 +22,7 @@ public class StatementBuilder { /** * Adds a text to the query with spaces + * * @param text The text you want to add * @return this class */ @@ -32,8 +34,23 @@ public class StatementBuilder { return this; } + /** + * Adds a text to the query without spaces + * + * @param text The text you want to add + * @return this class + */ + public StatementBuilder appendDefault(String text) { + if (text.isEmpty()) return this; + + query.append(text); + + return this; + } + /** * Builds the query string + * * @return the built string */ public String build() { -- 2.47.2 From a859aa1d32dc3462b61b3bf8d9249217925f61c2 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 22:07:43 +0200 Subject: [PATCH 090/121] Created the InsertQuery --- .../gnmyt/sqltoolkit/queries/InsertQuery.java | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java new file mode 100644 index 0000000..61344a1 --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java @@ -0,0 +1,81 @@ +package de.gnmyt.sqltoolkit.queries; + +import de.gnmyt.sqltoolkit.querybuilder.AbstractQuery; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; +import de.gnmyt.sqltoolkit.querybuilder.StatementBuilder; + +import java.util.HashMap; + +import static de.gnmyt.sqltoolkit.querybuilder.QueryParameter.TABLE_NAME; +import static de.gnmyt.sqltoolkit.querybuilder.QueryParameter.VALUE_LIST; + +public class InsertQuery extends AbstractQuery { + + @Override + public void defaults() { + addParameter(TABLE_NAME, "default"); + addParameter(VALUE_LIST, new HashMap()); + } + + /** + * Builds the rows of the 'values'-list + * + * @return the rows of the 'values'-list as a string + */ + public String buildRowList() { + StatementBuilder rowString = new StatementBuilder("("); + + HashMap valueList = (HashMap) getParameter(VALUE_LIST); + + for (int i = 0; i < valueList.size(); i++) { + if (i > 0) rowString.append(","); + rowString.append("`").appendDefault(valueList.keySet().toArray()[i].toString()).appendDefault("`"); + } + + return rowString.append(")").build(); + } + + /** + * Builds the 'values'-list + * + * @return the 'values'-list as a string + */ + public String buildValueList() { + StatementBuilder valueString = new StatementBuilder(); + + HashMap valueList = (HashMap) getParameter(VALUE_LIST); + + valueString.append(valueList.size() > 0 ? "VALUES (" : ""); + + for (int i = 0; i < valueList.size(); i++) { + if (i > 0) valueString.append(","); + valueString.append("?"); + } + + if (valueList.size() > 0) valueString.append(")"); + + return valueString.toString(); + } + + /** + * Gets the parameters + * @return the parameters + */ + public Object[] getParameters() { + + HashMap valueList = (HashMap) getParameter(VALUE_LIST); + + return valueList.values().toArray(); + } + + @Override + public SQLQuery build() { + StatementBuilder builder = new StatementBuilder("INSERT INTO").append((String) getParameter(TABLE_NAME)); + + builder.append(buildRowList()); + + builder.append(buildValueList()); + + return new SQLQuery().setStatement(builder.build()).setParameters(getParameters()); + } +} -- 2.47.2 From 262baee54c8e1a1466ef5246ae122501d8ed0053 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 22:20:04 +0200 Subject: [PATCH 091/121] Changed InsertManager#from to InsertManager#to --- .../sqltoolkit/manager/InsertManager.java | 40 ++++++------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java index 1c1ee1f..60e0a7e 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java @@ -1,6 +1,9 @@ package de.gnmyt.sqltoolkit.manager; import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.queries.InsertQuery; +import de.gnmyt.sqltoolkit.querybuilder.QueryParameter; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; import java.util.HashMap; @@ -37,7 +40,7 @@ public class InsertManager { * * @param tableName The name of the table */ - public void from(String tableName) { + public void to(String tableName) { this.tableName = tableName; } @@ -53,37 +56,18 @@ public class InsertManager { return this; } - /** - * Prepares the SQL Query - * - * @return the SQL Query - */ - public String prepareStatement() { - StringBuilder query = new StringBuilder().append("INSERT INTO ").append(tableName).append(" ("); - - for (int i = 0; i < values.size(); i++) { - if (i > 0) query.append(", "); - query.append("`").append(values.keySet().toArray()[i]).append("`"); - } - - query.append(")").append(values.size() > 0 ? "VALUES (" : ""); - - for (int i = 0; i < values.size(); i++) { - if (i > 0) query.append(", "); - query.append("?"); - } - - if (values.size() > 0) query.append(")"); - - return query.toString(); - } - - /** * Executes the current SQL query */ public void execute() { - connection.update(prepareStatement(), values.values().toArray()); + connection.update(build()); + } + + private SQLQuery build() { + return connection.createQuery(InsertQuery.class) + .addParameter(QueryParameter.TABLE_NAME, tableName) + .addParameter(QueryParameter.VALUE_LIST, values) + .build(); } } -- 2.47.2 From d48ebe05c0784588e2893e3cb9f378c6e1c0b712 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 22:26:16 +0200 Subject: [PATCH 092/121] Added a comment to the InsertManager --- src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java index 60e0a7e..0078bf7 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/InsertManager.java @@ -63,6 +63,11 @@ public class InsertManager { connection.update(build()); } + /** + * Builds the current statement + * + * @return the current statement + */ private SQLQuery build() { return connection.createQuery(InsertQuery.class) .addParameter(QueryParameter.TABLE_NAME, tableName) -- 2.47.2 From 65f8f12077578c9252d98c225ce155114c6ddb13 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 23:18:36 +0200 Subject: [PATCH 093/121] Updated the InsertQuery --- src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java index 61344a1..6bdbdd2 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java @@ -28,7 +28,7 @@ public class InsertQuery extends AbstractQuery { HashMap valueList = (HashMap) getParameter(VALUE_LIST); for (int i = 0; i < valueList.size(); i++) { - if (i > 0) rowString.append(","); + if (i > 0) rowString.appendDefault(","); rowString.append("`").appendDefault(valueList.keySet().toArray()[i].toString()).appendDefault("`"); } @@ -48,7 +48,7 @@ public class InsertQuery extends AbstractQuery { valueString.append(valueList.size() > 0 ? "VALUES (" : ""); for (int i = 0; i < valueList.size(); i++) { - if (i > 0) valueString.append(","); + if (i > 0) valueString.appendDefault(","); valueString.append("?"); } -- 2.47.2 From 81aaf4a0bf2fbcf68e4dce6e7b6b16a5f1420554 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 23:29:49 +0200 Subject: [PATCH 094/121] Cleaned up the SelectionQuery --- src/main/java/de/gnmyt/sqltoolkit/queries/SelectionQuery.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/SelectionQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/SelectionQuery.java index 0ef1c5c..027bce5 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/queries/SelectionQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/SelectionQuery.java @@ -52,7 +52,7 @@ public class SelectionQuery extends AbstractQuery { if (i == 0) whereString.append("WHERE"); else whereString.append("AND"); - whereString.append("`"+whereList.keySet().toArray()[i]+"`").append("=").append("?"); + whereString.append("`" + whereList.keySet().toArray()[i] + "`").append("=").append("?"); } return whereString.toString(); @@ -60,6 +60,7 @@ public class SelectionQuery extends AbstractQuery { /** * Gets the parameters + * * @return the parameters */ public Object[] getParameters() { -- 2.47.2 From 75dc54b17af5953c147c097960006efaf41b7ac9 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 23:30:08 +0200 Subject: [PATCH 095/121] Added the UpdateQuery --- .../gnmyt/sqltoolkit/queries/UpdateQuery.java | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/queries/UpdateQuery.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/UpdateQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/UpdateQuery.java new file mode 100644 index 0000000..73d037c --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/UpdateQuery.java @@ -0,0 +1,82 @@ +package de.gnmyt.sqltoolkit.queries; + +import de.gnmyt.sqltoolkit.querybuilder.AbstractQuery; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; +import de.gnmyt.sqltoolkit.querybuilder.StatementBuilder; + +import java.util.ArrayList; +import java.util.HashMap; + +import static de.gnmyt.sqltoolkit.querybuilder.QueryParameter.*; + +public class UpdateQuery extends AbstractQuery { + + @Override + public void defaults() { + addParameter(TABLE_NAME, "default"); + addParameter(WHERE_LIST, new HashMap()); + addParameter(SET_LIST, new HashMap()); + } + + /** + * Builds the 'set'-list + * + * @return the 'set'-list as a string + */ + public String buildSetList() { + StatementBuilder builder = new StatementBuilder("SET"); + + HashMap setList = (HashMap) getParameter(SET_LIST); + + for (int i = 0; i < setList.size(); i++) { + if (i > 0) builder.appendDefault(","); + builder.append(setList.keySet().toArray()[i].toString()).append("=").append("?"); + } + + return builder.build(); + } + + /** + * Builds the 'where'-list + * + * @return the 'where'-list as a string + */ + public String buildWhereList() { + StatementBuilder builder = new StatementBuilder("WHERE"); + + HashMap whereList = (HashMap) getParameter(WHERE_LIST); + + for (int i = 0; i < whereList.size(); i++) { + if (i > 0) builder.append("AND"); + builder.append(whereList.keySet().toArray()[i].toString()).append("=").append("?"); + } + + return builder.build(); + } + + /** + * Gets the parameters + * + * @return the parameters + */ + public Object[] getParameters() { + + ArrayList tempParameters = new ArrayList<>(); + + ((HashMap) getParameter(SET_LIST)).forEach((str, obj) -> tempParameters.add(obj)); + ((HashMap) getParameter(WHERE_LIST)).forEach((str, obj) -> tempParameters.add(obj)); + + return tempParameters.toArray(); + } + + @Override + public SQLQuery build() { + StatementBuilder builder = new StatementBuilder("UPDATE").append((String) getParameter(TABLE_NAME)); + + if (!((HashMap) getParameter(SET_LIST)).isEmpty()) builder.append(buildSetList()); + + if (!((HashMap) getParameter(WHERE_LIST)).isEmpty()) builder.append(buildWhereList()); + + return new SQLQuery().setStatement(builder.build()).setParameters(getParameters()); + } +} -- 2.47.2 From 3cb1f2d1512c28765dd0d5b1484e13573a19d8b5 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 23:30:48 +0200 Subject: [PATCH 096/121] Integrated the UpdateQuery into the UpdateManager --- .../sqltoolkit/manager/UpdateManager.java | 47 +++++-------------- 1 file changed, 13 insertions(+), 34 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java index a8da0d8..f2af336 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java @@ -1,9 +1,11 @@ package de.gnmyt.sqltoolkit.manager; import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.queries.UpdateQuery; +import de.gnmyt.sqltoolkit.querybuilder.QueryParameter; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; import org.slf4j.Logger; -import java.util.ArrayList; import java.util.HashMap; public class UpdateManager { @@ -34,7 +36,7 @@ public class UpdateManager { */ public UpdateManager(MySQLConnection connection, String tableName) { this.connection = connection; - toTable(tableName); + this.tableName = tableName; this.whereList = new HashMap<>(); this.setList = new HashMap<>(); } @@ -50,18 +52,6 @@ public class UpdateManager { return this; } - /** - * Get the parameters for the SQL statement - * - * @return the parameters - */ - private ArrayList getTempParams() { - ArrayList tempParams = new ArrayList<>(); - setList.forEach((str, obj) -> tempParams.add(obj)); - whereList.forEach((str, obj) -> tempParams.add(obj)); - return tempParams; - } - /** * Add a 'where'-clause * @@ -90,31 +80,20 @@ public class UpdateManager { * Update the entries with your current conditions */ public void execute() { - connection.update(prepareUpdateStatement(), getTempParams().toArray()); + connection.update(build()); } /** - * Get the Query of the 'update'-Statement + * Builds the current statement * - * @return the Statement + * @return the current statement */ - private String prepareUpdateStatement() { - StringBuilder query = new StringBuilder().append("UPDATE ").append(tableName); - if (!setList.isEmpty()) query.append(" SET "); - - for (int i = 0; i < setList.size(); i++) { - if (i > 0) query.append(", "); - query.append(setList.keySet().toArray()[i]); - } - - if (!whereList.isEmpty()) query.append(" WHERE "); - - for (int i = 0; i < whereList.size(); i++) { - if (i > 0) query.append(" AND "); - query.append(whereList.keySet().toArray()[i]).append(" = ?"); - } - - return query.toString(); + public SQLQuery build() { + return connection.createQuery(UpdateQuery.class) + .addParameter(QueryParameter.TABLE_NAME, tableName) + .addParameter(QueryParameter.WHERE_LIST, whereList) + .addParameter(QueryParameter.SET_LIST, setList) + .build(); } } -- 2.47.2 From d970568158b949e1f9a0919d1d2e8f3a8ea009df Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 23:31:19 +0200 Subject: [PATCH 097/121] Cleaned up code --- src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java | 3 ++- src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java | 1 + .../de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java index d8f3221..2a5c9ac 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java @@ -31,7 +31,7 @@ public class DeletionQuery extends AbstractQuery { if (i == 0) whereString.append("WHERE"); else whereString.append("AND"); - whereString.append("`"+whereList.keySet().toArray()[i]+"`").append("=").append("?"); + whereString.append("`" + whereList.keySet().toArray()[i] + "`").append("=").append("?"); } return whereString.toString(); @@ -39,6 +39,7 @@ public class DeletionQuery extends AbstractQuery { /** * Gets the parameters + * * @return the parameters */ public Object[] getParameters() { diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java index 6bdbdd2..ba5395c 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java @@ -59,6 +59,7 @@ public class InsertQuery extends AbstractQuery { /** * Gets the parameters + * * @return the parameters */ public Object[] getParameters() { diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java index ad33830..0af8408 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/StatementBuilder.java @@ -2,7 +2,7 @@ package de.gnmyt.sqltoolkit.querybuilder; public class StatementBuilder { - private StringBuilder query = new StringBuilder(); + private final StringBuilder query = new StringBuilder(); /** * Basic constructor of the {@link StatementBuilder} with a prefilled text -- 2.47.2 From d60c2a806f586ce53653db0bff0d51cf1218f3c3 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 23:42:10 +0200 Subject: [PATCH 098/121] Changed the access modifier of UpdateManager#build --- src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java index f2af336..3827f0f 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/UpdateManager.java @@ -88,7 +88,7 @@ public class UpdateManager { * * @return the current statement */ - public SQLQuery build() { + private SQLQuery build() { return connection.createQuery(UpdateQuery.class) .addParameter(QueryParameter.TABLE_NAME, tableName) .addParameter(QueryParameter.WHERE_LIST, whereList) -- 2.47.2 From db70fda9a51b1b002e07b90c5f8441eeb8722fb7 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 00:09:12 +0200 Subject: [PATCH 099/121] Changed the name in the queries --- .../java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java | 2 +- src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java | 2 +- src/main/java/de/gnmyt/sqltoolkit/queries/UpdateQuery.java | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java index 2a5c9ac..ed718bd 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/DeletionQuery.java @@ -52,7 +52,7 @@ public class DeletionQuery extends AbstractQuery { @Override public SQLQuery build() { - StatementBuilder builder = new StatementBuilder("DELETE").append("FROM").append((String) getParameter(TABLE_NAME)); + StatementBuilder builder = new StatementBuilder("DELETE").append("FROM").append("`" + getParameter(TABLE_NAME) + "`"); builder.append(buildWhereList()); diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java index ba5395c..4c45649 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/InsertQuery.java @@ -71,7 +71,7 @@ public class InsertQuery extends AbstractQuery { @Override public SQLQuery build() { - StatementBuilder builder = new StatementBuilder("INSERT INTO").append((String) getParameter(TABLE_NAME)); + StatementBuilder builder = new StatementBuilder("INSERT INTO").append("`" + getParameter(TABLE_NAME) + "`"); builder.append(buildRowList()); diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/UpdateQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/UpdateQuery.java index 73d037c..f17aa3e 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/queries/UpdateQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/UpdateQuery.java @@ -30,7 +30,7 @@ public class UpdateQuery extends AbstractQuery { for (int i = 0; i < setList.size(); i++) { if (i > 0) builder.appendDefault(","); - builder.append(setList.keySet().toArray()[i].toString()).append("=").append("?"); + builder.append("`" + setList.keySet().toArray()[i] + "`").append("=").append("?"); } return builder.build(); @@ -48,7 +48,7 @@ public class UpdateQuery extends AbstractQuery { for (int i = 0; i < whereList.size(); i++) { if (i > 0) builder.append("AND"); - builder.append(whereList.keySet().toArray()[i].toString()).append("=").append("?"); + builder.append("`" + whereList.keySet().toArray()[i] + "`").append("=").append("?"); } return builder.build(); @@ -71,7 +71,7 @@ public class UpdateQuery extends AbstractQuery { @Override public SQLQuery build() { - StatementBuilder builder = new StatementBuilder("UPDATE").append((String) getParameter(TABLE_NAME)); + StatementBuilder builder = new StatementBuilder("UPDATE").append("`" + getParameter(TABLE_NAME) + "`"); if (!((HashMap) getParameter(SET_LIST)).isEmpty()) builder.append(buildSetList()); -- 2.47.2 From 0ab4ae3fed136e83ddfd02b112e23e11c20822dc Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 12:22:07 +0200 Subject: [PATCH 100/121] Updated the TableField --- .../de/gnmyt/sqltoolkit/types/TableField.java | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/types/TableField.java b/src/main/java/de/gnmyt/sqltoolkit/types/TableField.java index 62df74a..aef35b3 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/types/TableField.java +++ b/src/main/java/de/gnmyt/sqltoolkit/types/TableField.java @@ -1,13 +1,15 @@ package de.gnmyt.sqltoolkit.types; +import de.gnmyt.sqltoolkit.querybuilder.StatementBuilder; + public class TableField { private String name = "default"; private String type = SQLType.STRING.getValue(); - private int length = 255; private boolean allowNull = false; - private String defaultValue = ""; - private String[] extra = new String[0]; + private String[] extras = new String[0]; + private int length = 0; + private Object defaultValue; /** * Basic constructor of the {@link TableField} @@ -18,7 +20,7 @@ public class TableField { * @param allowNull true if you want to allow a NULL in the field, otherwise false * @param defaultValue The default value of the field */ - public TableField(String name, String type, int length, boolean allowNull, String defaultValue) { + public TableField(String name, String type, int length, boolean allowNull, Object defaultValue) { this.name = name; this.type = type; this.length = length; @@ -99,7 +101,7 @@ public class TableField { * @return the length of the field */ public int getLength() { - return length != 0 ? length : 255; + return length; } /** @@ -118,18 +120,18 @@ public class TableField { * * @return the extra of the field */ - public String[] getExtra() { - return extra; + public String[] getExtras() { + return extras; } + /** * Sets the extras of the field - * - * @param extra The new extras of the field + * @param extras The extras you want to add * @return this class */ - public TableField setExtra(String[] extra) { - this.extra = extra; + public TableField setExtras(String... extras) { + this.extras = extras; return this; } @@ -138,11 +140,11 @@ public class TableField { * * @return the extras of the field as a string */ - public String getExtras() { - StringBuilder extras = new StringBuilder(); - for (int i = 0; i < getExtra().length; i++) - extras.append(getExtra()[i]); - return extras.toString(); + public String getExtraString() { + StatementBuilder extras = new StatementBuilder(); + for (int i = 0; i < getExtras().length; i++) + extras.append(getExtras()[i]); + return extras.build(); } /** @@ -160,7 +162,10 @@ public class TableField { * @return the default value of the field */ public String getDefaultValue() { - return !defaultValue.isEmpty() ? "DEFAULT '" + defaultValue + "'" : ""; + if (defaultValue == null) return ""; + if (defaultValue instanceof String && (((String) defaultValue).isEmpty())) return ""; + + return "DEFAULT " + (defaultValue instanceof String ? "'" + defaultValue + "'" : defaultValue); } /** @@ -169,7 +174,7 @@ public class TableField { * @param defaultValue The new default value of the field * @return this class */ - public TableField setDefaultValue(String defaultValue) { + public TableField setDefaultValue(Object defaultValue) { this.defaultValue = defaultValue; return this; } @@ -200,7 +205,11 @@ public class TableField { * @return the generated sql row */ public String generateSQLRow() { - return String.format("`%s` %s(%d) %s %s %s", getName(), getType(), getLength(), getNullAsSQL(), getDefaultValue(), getExtras()); + return String.format("`%s` %s%s%s%s%s", getName(), getType(), + getLength() == 0 ? "" : "(" + getLength() + ")", + getNullAsSQL().isEmpty() ? "" : " " + getNullAsSQL(), + getDefaultValue().isEmpty() ? "" : " " + getDefaultValue(), + getExtraString().isEmpty() ? "" : " " + getExtraString()); } -- 2.47.2 From 6ce3671099f5a2b32fe458b1b2fa14da4b1e57c6 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 12:22:46 +0200 Subject: [PATCH 101/121] Added the FIELD_LIST and the PRIMARY_KEY to the QueryParameter --- .../gnmyt/sqltoolkit/querybuilder/QueryParameter.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java index ed1f21f..d107e46 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java +++ b/src/main/java/de/gnmyt/sqltoolkit/querybuilder/QueryParameter.java @@ -30,6 +30,16 @@ public enum QueryParameter { */ SELECT_LIST, + /** + * The field list of the query provided as a {@link java.util.ArrayList} that contains a {@link de.gnmyt.sqltoolkit.types.TableField} + */ + FIELD_LIST, + + /** + * Tells the {@link de.gnmyt.sqltoolkit.queries.TableCreationQuery} which field is primary + */ + PRIMARY_KEY, + /** * The row limit of a query provided as a {@link String} */ -- 2.47.2 From 8eb4033704b7fbaf3756d15a6b16bd4fc4d89eb3 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 12:23:26 +0200 Subject: [PATCH 102/121] Integrated the changes of the TableField into the SQLTable and the CustomTableFieldManager --- .../de/gnmyt/sqltoolkit/manager/CustomTableFieldManager.java | 2 +- src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/CustomTableFieldManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/CustomTableFieldManager.java index 6bad27d..66a6464 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/CustomTableFieldManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/CustomTableFieldManager.java @@ -92,7 +92,7 @@ public class CustomTableFieldManager { * @return this class */ public CustomTableFieldManager extras(String[] extras) { - field.setExtra(extras); + field.setExtras(extras); return this; } diff --git a/src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java index 8f72f55..883d7b6 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java @@ -96,7 +96,7 @@ public abstract class SQLTable { * @param extras The extras that you want to add */ protected void custom(String type, String name, int length, boolean allowNull, String defaultValue, String... extras) { - custom(new TableField(name, type, length, allowNull, defaultValue).setExtra(extras)); + custom(new TableField(name, type, length, allowNull, defaultValue).setExtras(extras)); } /** -- 2.47.2 From bf7565a8dce1c79f6e97cd341d926cc83d5a752f Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 12:23:57 +0200 Subject: [PATCH 103/121] Created the TableCreationQuery --- .../queries/TableCreationQuery.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java new file mode 100644 index 0000000..84371f5 --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java @@ -0,0 +1,49 @@ +package de.gnmyt.sqltoolkit.queries; + +import de.gnmyt.sqltoolkit.querybuilder.AbstractQuery; +import de.gnmyt.sqltoolkit.querybuilder.QueryParameter; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; +import de.gnmyt.sqltoolkit.querybuilder.StatementBuilder; +import de.gnmyt.sqltoolkit.types.TableField; + +import java.util.ArrayList; + +import static de.gnmyt.sqltoolkit.querybuilder.QueryParameter.PRIMARY_KEY; + +public class TableCreationQuery extends AbstractQuery { + + @Override + public void defaults() { + addParameter(QueryParameter.TABLE_NAME, "default"); + addParameter(QueryParameter.FIELD_LIST, new ArrayList()); + addParameter(PRIMARY_KEY, ""); + } + + /** + * Builds the field list + * @return the field list as a string + */ + public String buildFieldList() { + StatementBuilder builder = new StatementBuilder("("); + + ArrayList fieldList = (ArrayList) getParameter(QueryParameter.FIELD_LIST); + + for (int i = 0; i < fieldList.size(); i++) { + if (i > 0) builder.appendDefault(","); + builder.append(fieldList.get(i).generateSQLRow()); + } + + if (!((String) getParameter(PRIMARY_KEY)).isEmpty()) builder.appendDefault(String.format(", PRIMARY KEY (%s)", getParameter(PRIMARY_KEY))); + + return builder.append(")").build(); + } + + @Override + public SQLQuery build() { + StatementBuilder builder = new StatementBuilder("CREATE TABLE IF NOT EXISTS").append("`" + getParameter(QueryParameter.TABLE_NAME) + "`"); + + builder.append(buildFieldList()); + + return new SQLQuery().setStatement(builder.build()); + } +} -- 2.47.2 From 52ca4879f9db2ad0cc490982d9681310ec63e6d9 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 12:44:08 +0200 Subject: [PATCH 104/121] Integrated the TableCreationQuery into the TableGenerator --- .../sqltoolkit/generator/TableGenerator.java | 58 +++++++------------ 1 file changed, 20 insertions(+), 38 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java b/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java index c241ca0..05c65ee 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java +++ b/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java @@ -1,6 +1,9 @@ package de.gnmyt.sqltoolkit.generator; import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.queries.TableCreationQuery; +import de.gnmyt.sqltoolkit.querybuilder.QueryParameter; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; import de.gnmyt.sqltoolkit.types.SQLType; import de.gnmyt.sqltoolkit.types.TableField; @@ -10,7 +13,7 @@ public class TableGenerator { private final MySQLConnection connection; - private final ArrayList fields; + private final ArrayList fields = new ArrayList<>(); private final String tableName; /** @@ -21,18 +24,7 @@ public class TableGenerator { public TableGenerator(MySQLConnection connection, String tableName) { this.tableName = tableName; this.connection = connection; - this.fields = new ArrayList<>(); - } - - /** - * Add a field to the Table - * - * @param field String of the field - * @return this class - */ - public TableGenerator addField(String field) { - fields.add(field); - return this; + addField(SQLType.INTEGER, "id", 255, null, "AUTO_INCREMENT"); } /** @@ -42,19 +34,11 @@ public class TableGenerator { * @param name The name of the field you want to add * @param length The length of the field you want to add * @param defaultValue The default value of the field (leave empty for no default value) - * @param optionalParameters Optional parameters you want to add to the statement + * @param extras Optional parameters you want to add to the statement * @return this class */ - public TableGenerator addField(SQLType type, String name, Integer length, String defaultValue, String... optionalParameters) { - StringBuilder temp = new StringBuilder(); - temp.append("`").append(name).append("` ").append(type.getValue()).append("(").append(length).append(")"); - temp.append(!defaultValue.isEmpty() ? " DEFAULT '" + defaultValue + "'" : ""); - - for (String optionalParameter : optionalParameters) { - temp.append(" ").append(optionalParameter); - } - - fields.add(temp.toString()); + public TableGenerator addField(SQLType type, String name, Integer length, String defaultValue, String... extras) { + fields.add(new TableField().setType(type).setName(name).setLength(length).setDefaultValue(defaultValue).setExtras(extras)); return this; } @@ -70,8 +54,13 @@ public class TableGenerator { return addField(type, name, length, ""); } + /** + * Add a field to the table + * @param field The field you want to add + * @return this class + */ public TableGenerator addField(TableField field) { - fields.add(field.generateSQLRow()); + fields.add(field); return this; } @@ -90,19 +79,12 @@ public class TableGenerator { * Creates the table you wanted */ public void create() { - StringBuilder sb = new StringBuilder(); - sb.append("CREATE TABLE IF NOT EXISTS ").append(tableName).append(" ( "); - - sb.append("`id` INT(255) NOT NULL AUTO_INCREMENT"); - - for (String field : fields) { - sb.append(", ").append(field); - } - - sb.append(", PRIMARY KEY (`id`)"); - - sb.append(" ) ENGINE = InnoDB;"); - connection.update(sb.toString()); + SQLQuery query = connection.createQuery(TableCreationQuery.class) + .addParameter(QueryParameter.TABLE_NAME, tableName) + .addParameter(QueryParameter.FIELD_LIST, fields) + .addParameter(QueryParameter.PRIMARY_KEY, "id") + .build(); + connection.update(query); } } -- 2.47.2 From 3883d5f3d488c31fd3987ec39d59b56404e95dcc Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 12:50:04 +0200 Subject: [PATCH 105/121] Integrated the TableCreationQuery into the SQLTable --- .../de/gnmyt/sqltoolkit/storage/SQLTable.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java b/src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java index 883d7b6..a4ea3d0 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java +++ b/src/main/java/de/gnmyt/sqltoolkit/storage/SQLTable.java @@ -2,6 +2,9 @@ package de.gnmyt.sqltoolkit.storage; import de.gnmyt.sqltoolkit.drivers.MySQLConnection; import de.gnmyt.sqltoolkit.manager.*; +import de.gnmyt.sqltoolkit.queries.TableCreationQuery; +import de.gnmyt.sqltoolkit.querybuilder.QueryParameter; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; import de.gnmyt.sqltoolkit.types.SQLType; import de.gnmyt.sqltoolkit.types.TableField; @@ -164,27 +167,22 @@ public abstract class SQLTable { } /** - * Generates the table sql - * - * @return the table sql + * Creates the table */ - public String generateSQL() { + public void create() { tableFields = new ArrayList<>(); - StringBuilder query = new StringBuilder(); // Add table fields integer("id", 255, false, "", "AUTO_INCREMENT"); tableFields(); - // Create the query - query.append("CREATE TABLE IF NOT EXISTS ").append(tableName()).append("("); - for (TableField tableField : tableFields) - query.append(tableField.generateSQLRow()).append(", "); - query.append("PRIMARY KEY (id)"); - query.append(") ENGINE=InnoDB;"); + SQLQuery query = connection.createQuery(TableCreationQuery.class) + .addParameter(QueryParameter.TABLE_NAME, tableName()) + .addParameter(QueryParameter.PRIMARY_KEY, "id") + .addParameter(QueryParameter.FIELD_LIST, tableFields) + .build(); - // Return the query - return query.toString(); + connection.update(query); } } -- 2.47.2 From f29731cdd2cdbabefc5b0b2ea2f55e8d569f0c8f Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 12:50:45 +0200 Subject: [PATCH 106/121] Updated the register logic in the TableFactory --- src/main/java/de/gnmyt/sqltoolkit/factory/TableFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/factory/TableFactory.java b/src/main/java/de/gnmyt/sqltoolkit/factory/TableFactory.java index a26b0d7..6638f59 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/factory/TableFactory.java +++ b/src/main/java/de/gnmyt/sqltoolkit/factory/TableFactory.java @@ -28,7 +28,7 @@ public class TableFactory { * @return this class */ public TableFactory register(SQLTable table) { - connection.update(table.generateSQL()); + table.create(); REGISTERED_TABLES.put(table.getClass(), table); return this; } -- 2.47.2 From 97431c7c1fccae4d28b7a501060e6c524de06d49 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 13:27:54 +0200 Subject: [PATCH 107/121] Removed the old connection parameters --- .../de/gnmyt/sqltoolkit/types/LoginParam.java | 34 ------------------- 1 file changed, 34 deletions(-) delete mode 100644 src/main/java/de/gnmyt/sqltoolkit/types/LoginParam.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/types/LoginParam.java b/src/main/java/de/gnmyt/sqltoolkit/types/LoginParam.java deleted file mode 100644 index 5936d71..0000000 --- a/src/main/java/de/gnmyt/sqltoolkit/types/LoginParam.java +++ /dev/null @@ -1,34 +0,0 @@ -package de.gnmyt.sqltoolkit.types; - -public enum LoginParam { - - DEFAULT("useSSL=false&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&useTimezone=true&serverTimezone=UTC"), - NO_SSL("useSSL=false"), - USE_SSL("useSSL=true"), - AUTO_RECONNECT("autoReconnect=true"), - UTF8_ENCODING("characterEncoding=UTF-8"), - USE_UNICODE("useUnicode=yes"), - USE_TIMEZONE("useTimezone=true"), - TIMEZONE_UTC("serverTimezone=UTC"); - - private final String value; - - /** - * Basic constructor for the LoginParam enum - * - * @param value JDBC parameter - */ - LoginParam(String value) { - this.value = value; - } - - /** - * Get the JDBC value - * - * @return the value - */ - public String getValue() { - return this.value; - } - -} -- 2.47.2 From f579b69ae6052b2caa5a70c0fffd051d3a24a1ac Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 14:04:53 +0200 Subject: [PATCH 108/121] Added the new ConnectSettingsManager --- .../manager/ConnectSettingsManager.java | 190 ++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java new file mode 100644 index 0000000..db5b755 --- /dev/null +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java @@ -0,0 +1,190 @@ +package de.gnmyt.sqltoolkit.manager; + +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; + +import java.nio.charset.StandardCharsets; +import java.util.HashMap; + +public class ConnectSettingsManager { + + private final MySQLConnection connection; + + private HashMap settingValues = new HashMap<>(); + + public ConnectSettingsManager(MySQLConnection connection) { + this.connection = connection; + } + + /** + * Adds a custom property to the values + * @param property The property you want to add + * @param value The value you want to use + * @return this class + */ + public ConnectSettingsManager customProperty(String property, Object value) { + settingValues.put(property, value); + return this; + } + + + /** + * Sets the timezone of the connection + * @param timezone The new timezone + * @return this class + */ + public ConnectSettingsManager timezone(String timezone) { + settingValues.put("useTimezone", true); + settingValues.put("serverTimezone", timezone); + return this; + } + + /** + * Sets the requireSSL property + * @param requireSSL The new value of the requireSSL property + * @return this class + */ + public ConnectSettingsManager requireSSL(boolean requireSSL) { + settingValues.put("requireSSL", requireSSL); + return this; + } + + /** + * Sets the useSSL property + * @param useSSL The new value of the useSSL property + * @return this class + */ + public ConnectSettingsManager useSSL(boolean useSSL) { + settingValues.put("useSSL", useSSL); + return this; + } + + /** + * Sets the autoReconnect property + * @param autoReconnect The new value of the autoReconnect property + * @return this class + */ + public ConnectSettingsManager autoReconnect(boolean autoReconnect) { + settingValues.put("autoReconnect", autoReconnect); + return this; + } + + /** + * Sets the maxReconnects property + * @param maxReconnects The new value of the maxReconnects property + * @return this class + */ + public ConnectSettingsManager maxReconnects(int maxReconnects) { + settingValues.put("maxReconnects", maxReconnects); + return this; + } + + /** + * Sets the charset property + * @param charset The new value of the charset property + * @return this class + */ + public ConnectSettingsManager characterEncoding(StandardCharsets charset) { + settingValues.put("characterEncoding", charset.toString()); + return this; + } + + /** + * Sets the tcpKeepAlive property + * @param tcpKeepAlive The new value of the tcpKeepAlive property + * @return this class + */ + public ConnectSettingsManager tcpKeepAlive(boolean tcpKeepAlive) { + settingValues.put("tcpKeepAlive", tcpKeepAlive); + return this; + } + + /** + * Sets the tcpNoDelay property + * @param tcpNoDelay The new value of the tcpNoDelay property + * @return this class + */ + public ConnectSettingsManager tcpNoDelay(boolean tcpNoDelay) { + settingValues.put("tcpNoDelay", tcpNoDelay); + return this; + } + + /** + * Sets the tcpRcvBuf property + * @param tcpRcvBuf The new value of the tcpRcvBuf property + * @return this class + */ + public ConnectSettingsManager tcpRcvBuf(int tcpRcvBuf) { + settingValues.put("tcpRcvBuf", tcpRcvBuf); + return this; + } + + /** + * Sets the tcpSndBuf property + * @param tcpSndBuf The new value of the tcpSndBuf property + * @return this class + */ + public ConnectSettingsManager tcpSndBuf(int tcpSndBuf) { + settingValues.put("tcpSndBuf", tcpSndBuf); + return this; + } + + /** + * Sets the tcpTrafficClass property + * @param tcpTrafficClass The new value of the tcpTrafficClass property + * @return this class + */ + public ConnectSettingsManager tcpTrafficClass(int tcpTrafficClass) { + settingValues.put("tcpTrafficClass", tcpTrafficClass); + return this; + } + + /** + * Sets the useCompression property + * @param useCompression The new value of the useCompression property + * @return this class + */ + public ConnectSettingsManager useCompression(boolean useCompression) { + settingValues.put("useCompression", useCompression); + return this; + } + + /** + * Sets the useUnbufferedInput property + * @param useUnbufferedInput The new value of the useUnbufferedInput property + * @return this class + */ + public ConnectSettingsManager useUnbufferedInput(boolean useUnbufferedInput) { + settingValues.put("useUnbufferedInput", useUnbufferedInput); + return this; + } + + /** + * Sets the paranoid property + * @param paranoid The new value of the paranoid property + * @return this class + */ + public ConnectSettingsManager paranoid(boolean paranoid) { + settingValues.put("paranoid", paranoid); + return this; + } + + /** + * Creates the connection string + * @return the connection string + */ + public String generateConnectionString() { + StringBuilder builder = new StringBuilder(); + + Object[] keys = settingValues.keySet().toArray(); + Object[] values = settingValues.values().toArray(); + + for (int i = 0; i < settingValues.size(); i++) { + if (i == 0) builder.append("?"); + else builder.append("&"); + + builder.append(keys[i]).append("=").append(values[i]); + } + return builder.toString(); + } + +} -- 2.47.2 From e96bb22814eabda9fb064f0a56bb9a6233d811f3 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 14:05:49 +0200 Subject: [PATCH 109/121] Integrated the new ConnectSettingsManager --- .../sqltoolkit/drivers/MySQLConnection.java | 51 ++----------------- 1 file changed, 4 insertions(+), 47 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java index 948d238..fcdddae 100755 --- a/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java +++ b/src/main/java/de/gnmyt/sqltoolkit/drivers/MySQLConnection.java @@ -7,7 +7,6 @@ import de.gnmyt.sqltoolkit.manager.*; import de.gnmyt.sqltoolkit.querybuilder.AbstractQuery; import de.gnmyt.sqltoolkit.querybuilder.QueryBuilder; import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; -import de.gnmyt.sqltoolkit.types.LoginParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,14 +19,13 @@ public class MySQLConnection { public static final Logger LOG = LoggerFactory.getLogger("MySQL-Logger"); private final TableFactory tableFactory = new TableFactory(this); + private final ConnectSettingsManager settingsManager = new ConnectSettingsManager(this); private final String hostname; private final String username; private final String password; private final String database; - private String connectString = ""; - private Connection con; /** @@ -45,21 +43,8 @@ public class MySQLConnection { this.database = database; } - /** - * Advanced constructor for the connection - * - * @param hostname MySQL server hostname - * @param username MySQL server username - * @param password MySQL server password - * @param database MySQL server database - * @param loginParams Login parameters - */ - public MySQLConnection(String hostname, String username, String password, String database, LoginParam... loginParams) { - this.hostname = hostname; - this.username = username; - this.password = password; - this.database = database; - updateConnectionString(loginParams); + public ConnectSettingsManager updateSettings() { + return settingsManager; } /** @@ -320,7 +305,7 @@ public class MySQLConnection { try { LOG.info("Connecting to " + hostname + " with user " + username + " to database " + database); Class.forName("com.mysql.cj.jdbc.Driver"); - con = DriverManager.getConnection("jdbc:mysql://" + hostname + "/" + database + connectString, username, password); + con = DriverManager.getConnection("jdbc:mysql://" + hostname + "/" + database + settingsManager.generateConnectionString(), username, password); LOG.info("Connection established"); } catch (Exception exception) { if (exception.getMessage().contains("jdbc.Driver")) @@ -353,34 +338,6 @@ public class MySQLConnection { return this; } - /** - * Update the Connection String - * - * @param loginParams New login parameters - * @return this class - */ - public MySQLConnection updateConnectionString(LoginParam... loginParams) { - this.connectString = getConnectionString(loginParams); - return this; - } - - /** - * Get the current jdbc connection string for mysql - * - * @param loginParams login parameters - * @return the string - */ - private String getConnectionString(LoginParam[] loginParams) { - boolean used = false; - StringBuilder currentString = new StringBuilder(); - for (LoginParam param : loginParams) { - String currentChar = (used) ? "&" : "?"; - used = true; - currentString.append(currentChar).append(param.getValue()); - } - return currentString.toString(); - } - /** * Check if you are connected * -- 2.47.2 From 86f3ce2f3e232a6e65bf25789ede2ba04f1efdb2 Mon Sep 17 00:00:00 2001 From: mathias Date: Fri, 27 Aug 2021 14:14:51 +0200 Subject: [PATCH 110/121] Updated the LoginExample --- src/examples/java/LoginExample.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/examples/java/LoginExample.java b/src/examples/java/LoginExample.java index 930bb18..e8051a4 100644 --- a/src/examples/java/LoginExample.java +++ b/src/examples/java/LoginExample.java @@ -1,7 +1,4 @@ import de.gnmyt.sqltoolkit.drivers.MySQLConnection; -import de.gnmyt.sqltoolkit.types.LoginParam; - -import java.util.Arrays; public class LoginExample { @@ -14,19 +11,16 @@ public class LoginExample { String database = "database"; // Then we need to create a connection - MySQLConnection connection = new MySQLConnection(hostname, username, password, database, // Here you need to provide your mysql server data - LoginParam.AUTO_RECONNECT); // You can set login parameters in the constructor + MySQLConnection connection = new MySQLConnection(hostname, username, password, database); // Here you need to provide your mysql server data + + // You can now set the settings of the connection (before connecting) + connection.updateSettings() + .useSSL(true) // You can set for example the ssl property + .customProperty("example", ""); // You can also set a custom property - // You can also set the connection string manually (before connecting) - connection.updateConnectionString(LoginParam.AUTO_RECONNECT, - LoginParam.USE_SSL, - LoginParam.UTF8_ENCODING); // Now you can connect to the database connection.connect(); - - // If you want to you can list all login parameters - Arrays.stream(LoginParam.values()).forEach(System.out::println); } } -- 2.47.2 From 614c557d7e7ddf6c55602d9f928bb733dc017f8e Mon Sep 17 00:00:00 2001 From: mathias Date: Sat, 28 Aug 2021 00:17:39 +0200 Subject: [PATCH 111/121] Updated the LoginExample --- src/examples/java/LoginExample.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples/java/LoginExample.java b/src/examples/java/LoginExample.java index e8051a4..5534e19 100644 --- a/src/examples/java/LoginExample.java +++ b/src/examples/java/LoginExample.java @@ -16,7 +16,7 @@ public class LoginExample { // You can now set the settings of the connection (before connecting) connection.updateSettings() .useSSL(true) // You can set for example the ssl property - .customProperty("example", ""); // You can also set a custom property + .customProperty("example", "value"); // You can also set a custom property // Now you can connect to the database -- 2.47.2 From d55e681a6c4e872b30500e6d0c251c4680ee389d Mon Sep 17 00:00:00 2001 From: mathias Date: Sat, 28 Aug 2021 00:26:20 +0200 Subject: [PATCH 112/121] Created the QueryExample --- src/examples/java/QueryExample.java | 60 +++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/examples/java/QueryExample.java diff --git a/src/examples/java/QueryExample.java b/src/examples/java/QueryExample.java new file mode 100644 index 0000000..88e7072 --- /dev/null +++ b/src/examples/java/QueryExample.java @@ -0,0 +1,60 @@ +import de.gnmyt.sqltoolkit.drivers.MySQLConnection; +import de.gnmyt.sqltoolkit.queries.DeletionQuery; +import de.gnmyt.sqltoolkit.queries.InsertQuery; +import de.gnmyt.sqltoolkit.queries.SelectionQuery; +import de.gnmyt.sqltoolkit.querybuilder.QueryParameter; +import de.gnmyt.sqltoolkit.querybuilder.SQLQuery; + +import java.util.HashMap; + +public class QueryExample { + + public static void main(String[] args) { + + // First we need to connect to our database + MySQLConnection connection = new MySQLConnection("localhost", "root", "password", "database"); + + // We then can create a hashmap with all where-parameters + HashMap whereList = new HashMap<>(); + + // Now we can now add some values to the 'where'-list + whereList.put("username", "GNM"); + whereList.put("email", "germannewsmaker@gmail.com"); + + // Now we can create an example 'select'-query + SQLQuery query = connection.createQuery(SelectionQuery.class) // Here you can provide which query you want to create + .addParameter(QueryParameter.TABLE_NAME, "example_table") // Now we can pass in the table name + .addParameter(QueryParameter.WHERE_LIST, whereList) // And the list of 'where'-parameters + .build(); // Then we build the query + + // You can then execute it + connection.getResult(query); + + // Or print it + System.out.println(query); + + // You can also create a 'delete'-query + + SQLQuery deleteQuery = connection.createQuery(DeletionQuery.class) // Now we try the deletion query + .addParameter(QueryParameter.TABLE_NAME, "example_table") // Here you can pass in the table name + .addParameter(QueryParameter.WHERE_LIST, whereList) // For the example we are using the same list as before + .build(); // And now we build the query + + // You can also create for example a 'insert'-query + + // Because we want to insert values into a table we first need to create the list of values + HashMap insertValues = new HashMap<>(); + + // Now we can put add some values to the 'insert'-list + insertValues.put("username", "GNM"); + insertValues.put("email", "germannewsmaker@gmail.com"); + insertValues.put("password", "example123!"); + + // And then we can create the query + SQLQuery insertQuery = connection.createQuery(InsertQuery.class) // Now we try the insert query + .addParameter(QueryParameter.TABLE_NAME, "example_table") // Here you can pass in the table name + .addParameter(QueryParameter.VALUE_LIST, insertValues) // And now we pass in the value list + .build(); + } + +} -- 2.47.2 From a207aca1966e999740f1ff575d7912a058ec1f2f Mon Sep 17 00:00:00 2001 From: mathias Date: Sat, 28 Aug 2021 00:28:19 +0200 Subject: [PATCH 113/121] Updated the README.md --- README.md | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/README.md b/README.md index 0449cc1..cb20254 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ ## About The Project -This is a small project for quickly managing a MySQL database in Java. It makes everyday life with a database much +This is a small project for quickly managing a MySQL database in Java. It makes your everyday life with a database much easier. ### Installation @@ -46,20 +46,6 @@ easier. ```java MySQLConnection connection = new MySQLConnection(hostname, username, password, database).connect(); ``` - - Example of a constructor with optional login parameters - ```java - MySQLConnection connection = new MySQLConnection(hostname, username, password, database, LoginParam.AUTO_RECONNECT, LoginParam.NO_SSL).connect(); - ``` - #### Login Parameters - - DEFAULT *( - useSSL=false&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&useTimezone=true&serverTimezone=UTC)* - - NO_SSL *(useSSL=false)* - - USE_SSL *(useSSL=true)* - - AUTO_RECONNECT *(autoReconnect=true)* - - UTF8_ENCODING *(characterEncoding=UTF-8)* - - USE_UNICODE *(useUnicode=yes)* - - USE_TIMEZONE *(useTimezone=true)* - - TIMEZONE_UTC *(serverTimezone=UTC)* 2. Perform a default SQL query - Get a ResultSet ```java -- 2.47.2 From e7b5a422defa8766377a058b8eedf2e56803a160 Mon Sep 17 00:00:00 2001 From: mathias Date: Mon, 30 Aug 2021 12:29:54 +0200 Subject: [PATCH 114/121] Cleaned up code --- .../sqltoolkit/generator/TableGenerator.java | 11 +++++----- .../manager/ConnectSettingsManager.java | 20 +++++++++++++++++-- .../queries/TableCreationQuery.java | 4 +++- .../de/gnmyt/sqltoolkit/types/TableField.java | 1 + 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java b/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java index 05c65ee..c7c1c7d 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java +++ b/src/main/java/de/gnmyt/sqltoolkit/generator/TableGenerator.java @@ -30,11 +30,11 @@ public class TableGenerator { /** * Add a field to the Table * - * @param type The type of the field you want to add - * @param name The name of the field you want to add - * @param length The length of the field you want to add - * @param defaultValue The default value of the field (leave empty for no default value) - * @param extras Optional parameters you want to add to the statement + * @param type The type of the field you want to add + * @param name The name of the field you want to add + * @param length The length of the field you want to add + * @param defaultValue The default value of the field (leave empty for no default value) + * @param extras Optional parameters you want to add to the statement * @return this class */ public TableGenerator addField(SQLType type, String name, Integer length, String defaultValue, String... extras) { @@ -56,6 +56,7 @@ public class TableGenerator { /** * Add a field to the table + * * @param field The field you want to add * @return this class */ diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java index db5b755..8a2cdac 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java @@ -9,7 +9,7 @@ public class ConnectSettingsManager { private final MySQLConnection connection; - private HashMap settingValues = new HashMap<>(); + private final HashMap settingValues = new HashMap<>(); public ConnectSettingsManager(MySQLConnection connection) { this.connection = connection; @@ -17,8 +17,9 @@ public class ConnectSettingsManager { /** * Adds a custom property to the values + * * @param property The property you want to add - * @param value The value you want to use + * @param value The value you want to use * @return this class */ public ConnectSettingsManager customProperty(String property, Object value) { @@ -29,6 +30,7 @@ public class ConnectSettingsManager { /** * Sets the timezone of the connection + * * @param timezone The new timezone * @return this class */ @@ -40,6 +42,7 @@ public class ConnectSettingsManager { /** * Sets the requireSSL property + * * @param requireSSL The new value of the requireSSL property * @return this class */ @@ -50,6 +53,7 @@ public class ConnectSettingsManager { /** * Sets the useSSL property + * * @param useSSL The new value of the useSSL property * @return this class */ @@ -60,6 +64,7 @@ public class ConnectSettingsManager { /** * Sets the autoReconnect property + * * @param autoReconnect The new value of the autoReconnect property * @return this class */ @@ -70,6 +75,7 @@ public class ConnectSettingsManager { /** * Sets the maxReconnects property + * * @param maxReconnects The new value of the maxReconnects property * @return this class */ @@ -80,6 +86,7 @@ public class ConnectSettingsManager { /** * Sets the charset property + * * @param charset The new value of the charset property * @return this class */ @@ -90,6 +97,7 @@ public class ConnectSettingsManager { /** * Sets the tcpKeepAlive property + * * @param tcpKeepAlive The new value of the tcpKeepAlive property * @return this class */ @@ -100,6 +108,7 @@ public class ConnectSettingsManager { /** * Sets the tcpNoDelay property + * * @param tcpNoDelay The new value of the tcpNoDelay property * @return this class */ @@ -110,6 +119,7 @@ public class ConnectSettingsManager { /** * Sets the tcpRcvBuf property + * * @param tcpRcvBuf The new value of the tcpRcvBuf property * @return this class */ @@ -120,6 +130,7 @@ public class ConnectSettingsManager { /** * Sets the tcpSndBuf property + * * @param tcpSndBuf The new value of the tcpSndBuf property * @return this class */ @@ -130,6 +141,7 @@ public class ConnectSettingsManager { /** * Sets the tcpTrafficClass property + * * @param tcpTrafficClass The new value of the tcpTrafficClass property * @return this class */ @@ -140,6 +152,7 @@ public class ConnectSettingsManager { /** * Sets the useCompression property + * * @param useCompression The new value of the useCompression property * @return this class */ @@ -150,6 +163,7 @@ public class ConnectSettingsManager { /** * Sets the useUnbufferedInput property + * * @param useUnbufferedInput The new value of the useUnbufferedInput property * @return this class */ @@ -160,6 +174,7 @@ public class ConnectSettingsManager { /** * Sets the paranoid property + * * @param paranoid The new value of the paranoid property * @return this class */ @@ -170,6 +185,7 @@ public class ConnectSettingsManager { /** * Creates the connection string + * * @return the connection string */ public String generateConnectionString() { diff --git a/src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java b/src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java index 84371f5..2eec247 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java +++ b/src/main/java/de/gnmyt/sqltoolkit/queries/TableCreationQuery.java @@ -21,6 +21,7 @@ public class TableCreationQuery extends AbstractQuery { /** * Builds the field list + * * @return the field list as a string */ public String buildFieldList() { @@ -33,7 +34,8 @@ public class TableCreationQuery extends AbstractQuery { builder.append(fieldList.get(i).generateSQLRow()); } - if (!((String) getParameter(PRIMARY_KEY)).isEmpty()) builder.appendDefault(String.format(", PRIMARY KEY (%s)", getParameter(PRIMARY_KEY))); + if (!((String) getParameter(PRIMARY_KEY)).isEmpty()) + builder.appendDefault(String.format(", PRIMARY KEY (%s)", getParameter(PRIMARY_KEY))); return builder.append(")").build(); } diff --git a/src/main/java/de/gnmyt/sqltoolkit/types/TableField.java b/src/main/java/de/gnmyt/sqltoolkit/types/TableField.java index aef35b3..fab06d8 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/types/TableField.java +++ b/src/main/java/de/gnmyt/sqltoolkit/types/TableField.java @@ -127,6 +127,7 @@ public class TableField { /** * Sets the extras of the field + * * @param extras The extras you want to add * @return this class */ -- 2.47.2 From 054a02ba76229c394715ea33ed38bc76d1d07657 Mon Sep 17 00:00:00 2001 From: mathias Date: Mon, 30 Aug 2021 19:17:57 +0200 Subject: [PATCH 115/121] Updated the README.md --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index cb20254..898afc3 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ easier. ### Usage Examples 1. Create a connection - - Example of a constructor without optional specifications + - Example of creating a connection ```java MySQLConnection connection = new MySQLConnection(hostname, username, password, database).connect(); ``` @@ -79,14 +79,6 @@ easier. .limit(10) .getResult(); ``` - 5. Choosing Results with custom parameters - ```java - connection.select() - .from("table") - .where("column", "value") - .add("LIMIT 2,5") - .getResult(); - ``` 4. Perform an update using managers 1. Update a Table ```java @@ -100,8 +92,8 @@ easier. ```java connection .generateTable("table") - .addField(SQLType.STRING, "column", 999) - .addField(SQLType.STRING, "column2", 25) + .addField(SQLType.STRING, "column") + .addField(SQLType.INTEGER, "column2", 2) .create(); ``` 3. Delete something from a table @@ -111,6 +103,14 @@ easier. .where("column", "value") .execute(); ``` + 4. Insert something into a table + ```java + connection + .insertTo("table") + .value("username", "GNM") + .value("email", "germannewsmaker@gmail.com") + .execute(); + ``` You can find other examples in the [examples directory](src/examples/java). ## License @@ -119,7 +119,7 @@ Distributed under the MIT License. See `LICENSE` for more information. ## End -Currently, there are not many features yet, so feel free to write me some suggestions! +Currently, there are not many features, so feel free to write me some suggestions! [contributors-shield]: https://img.shields.io/github/contributors/gnmyt/sqltoolkit.svg?style=for-the-badge -- 2.47.2 From f51b938893308875590715c7297afceb98ae340b Mon Sep 17 00:00:00 2001 From: mathias Date: Wed, 1 Sep 2021 19:20:14 +0200 Subject: [PATCH 116/121] English is hard --- src/examples/java/QueryExample.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples/java/QueryExample.java b/src/examples/java/QueryExample.java index 88e7072..572c3e9 100644 --- a/src/examples/java/QueryExample.java +++ b/src/examples/java/QueryExample.java @@ -17,7 +17,7 @@ public class QueryExample { // We then can create a hashmap with all where-parameters HashMap whereList = new HashMap<>(); - // Now we can now add some values to the 'where'-list + // Now we can add some values to the 'where'-list whereList.put("username", "GNM"); whereList.put("email", "germannewsmaker@gmail.com"); -- 2.47.2 From 58f49a7c69d17821251ab73dc4bca4c182ac18af Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 2 Sep 2021 14:41:40 +0200 Subject: [PATCH 117/121] Added some new connection properties to the ConnectSettingsManager --- .../manager/ConnectSettingsManager.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java index 8a2cdac..10bb672 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java @@ -95,6 +95,28 @@ public class ConnectSettingsManager { return this; } + /** + * Sets the connectTimeout property + * + * @param connectTimeout The new value of the connectTimeout property + * @return this class + */ + public ConnectSettingsManager connectTimeout(int connectTimeout) { + settingValues.put("connectTimeout", connectTimeout); + return this; + } + + /** + * Sets the socketTimeout property + * + * @param socketTimeout The new value of the socketTimeout property + * @return this class + */ + public ConnectSettingsManager socketTimeout(int socketTimeout) { + settingValues.put("socketTimeout", socketTimeout); + return this; + } + /** * Sets the tcpKeepAlive property * @@ -139,6 +161,17 @@ public class ConnectSettingsManager { return this; } + /** + * Sets the maxAllowedPacket property + * + * @param maxAllowedPacket The new value of the maxAllowedPacket property + * @return this class + */ + public ConnectSettingsManager maxAllowedPacket(int maxAllowedPacket) { + settingValues.put("maxAllowedPacket", maxAllowedPacket); + return this; + } + /** * Sets the tcpTrafficClass property * @@ -183,6 +216,17 @@ public class ConnectSettingsManager { return this; } + /** + * Sets the verifyServerCertificate property + * + * @param verifyServerCertificate The new value of the verifyServerCertificate property + * @return this class + */ + public ConnectSettingsManager verifyServerCertificate(boolean verifyServerCertificate) { + settingValues.put("verifyServerCertificate", verifyServerCertificate); + return this; + } + /** * Creates the connection string * -- 2.47.2 From 6f57860564c4f8d85223cc019e07985fe51f14bd Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 2 Sep 2021 14:46:41 +0200 Subject: [PATCH 118/121] First test to create a java ci workflow --- .github/workflows/ci.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..fdb2371 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,17 @@ +name: Java CI + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + - name: Build with Maven + run: mvn --batch-mode --update-snapshots verify \ No newline at end of file -- 2.47.2 From 84641c9550fa45bdcaf1e93716fa2520e062a485 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 2 Sep 2021 15:09:20 +0200 Subject: [PATCH 119/121] Created the FUNDING.yml file --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..086dfce --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +ko_fi: gnmyt \ No newline at end of file -- 2.47.2 From f1f1fcbe2d96a705c20f92fc9152eb15269e4674 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 2 Sep 2021 15:26:59 +0200 Subject: [PATCH 120/121] Added new sql types --- src/main/java/de/gnmyt/sqltoolkit/types/SQLType.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/types/SQLType.java b/src/main/java/de/gnmyt/sqltoolkit/types/SQLType.java index f404cf0..4a5d2e9 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/types/SQLType.java +++ b/src/main/java/de/gnmyt/sqltoolkit/types/SQLType.java @@ -7,7 +7,12 @@ public enum SQLType { INTEGER("INT"), DATE("DATE"), DATETIME("DATETIME"), - BOOLEAN("TINYINT"); + TIMESTAMP("TIMESTAMP"), + TIME("TIME"), + YEAR("YEAR"), + BOOLEAN("TINYINT"), + BIG_INTEGER("BIGINT"), + FLOAT("FLOAT"); private final String value; -- 2.47.2 From 0b59c1a11ceccc6176a5d5beb20046b4dad11592 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 2 Sep 2021 15:29:23 +0200 Subject: [PATCH 121/121] Removed line from the ConnectSettingsManager --- .../java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java b/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java index 10bb672..4a1693d 100644 --- a/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java +++ b/src/main/java/de/gnmyt/sqltoolkit/manager/ConnectSettingsManager.java @@ -27,7 +27,6 @@ public class ConnectSettingsManager { return this; } - /** * Sets the timezone of the connection * -- 2.47.2