All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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