
net.sf.aguacate.context.spi.sql.impl.SentenceSqlInsert Maven / Gradle / Ivy
package net.sf.aguacate.context.spi.sql.impl;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import net.sf.aguacate.context.spi.sql.SentenceSqlType;
public class SentenceSqlInsert extends AbstractSentenceSqlUpdate {
private static final Logger LOGGER = LogManager.getLogger(SentenceSqlInsert.class);
public SentenceSqlInsert(String name, String table, List methods, List required,
List optional, String outputName) {
super(name, table, methods, required, optional, outputName);
}
@Override
public SentenceSqlType getType() {
return SentenceSqlType.INSERT;
}
@Override
String buildSqlSentence(String table, Map context, String[] required, String[] optional) {
StringBuilder principal = new StringBuilder();
StringBuilder auxiliar = new StringBuilder();
principal.append("INSERT INTO ").append(table).append('(');
auxiliar.append(") VALUES(");
for (String parameter : required) {
if (context.containsKey(parameter)) {
principal.append(parameter).append(',');
auxiliar.append('?').append(',');
} else {
return null;
}
}
for (String parameter : optional) {
if (context.containsKey(parameter)) {
principal.append(parameter).append(',');
auxiliar.append('?').append(',');
}
}
int index = principal.length() - 1;
if (principal.charAt(index) == ',') {
principal.setLength(index);
auxiliar.setLength(auxiliar.length() - 1);
} else {
// Empty sentence?
return null;
}
return principal.append(auxiliar).append(')').toString();
}
@Override
void parameters(PreparedStatement statement, Map context, String[] required, String[] optional)
throws SQLException {
int position = 1;
for (String parameter : required) {
LOGGER.trace(parameter);
if (context.containsKey(parameter)) {
Object value = context.get(parameter);
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("{}: {}", parameter, value.getClass().getName());
}
statement.setObject(position, value);
position += 1;
}
}
for (String parameter : optional) {
if (context.containsKey(parameter)) {
statement.setObject(position, context.get(parameter));
position += 1;
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy