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

net.sf.aguacate.context.spi.sql.impl.SentenceSqlStaticSelectSingleRow Maven / Gradle / Ivy

package net.sf.aguacate.context.spi.sql.impl;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.HashMap;
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.SentenceExecutionResult;
import net.sf.aguacate.context.spi.sql.SentenceSqlType;

public class SentenceSqlStaticSelectSingleRow extends AbstractSentenceSqlStatic {

	private static final Logger LOGGER = LogManager.getLogger(SentenceSqlStaticSelectSingleRow.class);

	public SentenceSqlStaticSelectSingleRow(String name, List methods, String outputName, String[] required,
			String sql) {
		super(name, methods, outputName, required, sql);
	}

	@Override
	public SentenceSqlType getType() {
		return SentenceSqlType.SELECT_STATIC;
	}

	@Override
	SentenceExecutionResult execute(PreparedStatement statement) throws SQLException {
		ResultSet resultSet = statement.executeQuery();
		try {
			if (resultSet.next()) {
				Map data = new HashMap<>();
				ResultSetMetaData meta = resultSet.getMetaData();
				int count = meta.getColumnCount();
				for (int i = 1; i < count; i++) {
					String parameter = meta.getColumnName(i);
					data.put(parameter, resultSet.getObject(parameter));
				}
				if (resultSet.next()) {
					LOGGER.warn("multiple results");
				}
				return new SentenceExecutionResult(true, data);
			} else {
				return new SentenceExecutionResult(false);
			}
		} finally {
			try {
				resultSet.close();
			} catch (SQLException e) {
				LOGGER.warn("on closing resultset", e);
			}
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy