
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