
net.sf.aguacate.context.spi.sql.impl.AbstractSentenceSqlUpdate Maven / Gradle / Ivy
package net.sf.aguacate.context.spi.sql.impl;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import net.sf.aguacate.context.spi.sql.SentenceExecutionResult;
public abstract class AbstractSentenceSqlUpdate extends AbstractSentenceSql {
private static final SentenceExecutionResult SUCCESS = new SentenceExecutionResult(true);
private static final SentenceExecutionResult FAILURE = new SentenceExecutionResult(false);
private final String[] required;
private final String[] optional;
private final String outputName;
public AbstractSentenceSqlUpdate(String name, String table, List methods, List required,
List optional, String outputName) {
super(name, table, methods);
this.required = required.toArray(new String[required.size()]);
this.optional = optional.toArray(new String[optional.size()]);
this.outputName = outputName;
}
@Override
protected String buildSqlSentence(String table, Map context) {
return buildSqlSentence(table, context, required, optional);
}
abstract String buildSqlSentence(String table, Map context, String[] required, String[] optional);
@Override
protected SentenceExecutionResult execute(PreparedStatement statement, Map context)
throws SQLException {
parameters(statement, context, required, optional);
int count = statement.executeUpdate();
if (count == 1) {
if (outputName == null) {
return SUCCESS;
} else {
// TODO: This code doesn't work in Oracle
ResultSet generatedKeys = statement.getGeneratedKeys();
if (generatedKeys.next()) {
return new SentenceExecutionResult(true, generatedKeys.getObject(1));
} else {
return FAILURE;
}
}
} else {
return FAILURE;
}
}
@Override
public String outputName() {
return outputName;
}
abstract void parameters(PreparedStatement statement, Map context, String[] required,
String[] optional) throws SQLException;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy