From 75dc54b17af5953c147c097960006efaf41b7ac9 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 23:30:08 +0200 Subject: [PATCH] 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()); + } +}