From 537706ddca47d7569c899eaba7e65561eb3ae929 Mon Sep 17 00:00:00 2001 From: mathias Date: Thu, 26 Aug 2021 17:59:39 +0200 Subject: [PATCH] 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()); + } + +}