Created the InsertQuery

This commit is contained in:
mathias 2021-08-26 22:07:43 +02:00
parent c6ed5d9b8d
commit a859aa1d32
No known key found for this signature in database
GPG Key ID: 8950DF62139C852A

View File

@ -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<String, Object>());
}
/**
* 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<String, Object> valueList = (HashMap<String, Object>) 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<String, Object> valueList = (HashMap<String, Object>) 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<String, Object> valueList = (HashMap<String, Object>) 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());
}
}