From 4661c7d4ecab253123ef4a2c32d64920df9e4704 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 19 Aug 2021 20:49:01 +0200 Subject: [PATCH] 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(); + } + +}