![JAR search and dependency download from the Maven repository](/logo.png)
nl.topicus.jdbc.statement.ParameterStore Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of spanner-jdbc Show documentation
Show all versions of spanner-jdbc Show documentation
JDBC Driver for Google Cloud Spanner
package nl.topicus.jdbc.statement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
/**
*
* @author loite
*
*/
public class ParameterStore {
private Object[] parameters = new Object[10];
private Integer[] types = new Integer[10];
private Integer[] nullable = new Integer[10];
private Integer[] scalesOrLengths = new Integer[10];
private String table;
private String[] columns = new String[10];
private int highestIndex = 0;
void clearParameters() {
highestIndex = 0;
parameters = new Object[10];
types = new Integer[10];
nullable = new Integer[10];
scalesOrLengths = new Integer[10];
columns = new String[10];
table = null;
}
Object getParameter(int parameterIndex) {
int arrayIndex = parameterIndex - 1;
if (arrayIndex >= parameters.length)
return null;
return parameters[arrayIndex];
}
Integer getType(int parameterIndex) {
int arrayIndex = parameterIndex - 1;
if (arrayIndex >= types.length)
return null;
return types[arrayIndex];
}
Integer getNullable(int parameterIndex) {
int arrayIndex = parameterIndex - 1;
if (arrayIndex >= nullable.length)
return null;
return nullable[arrayIndex];
}
Integer getScaleOrLength(int parameterIndex) {
int arrayIndex = parameterIndex - 1;
if (arrayIndex >= scalesOrLengths.length)
return null;
return scalesOrLengths[arrayIndex];
}
String getColumn(int parameterIndex) {
int arrayIndex = parameterIndex - 1;
if (arrayIndex >= columns.length)
return null;
return columns[arrayIndex];
}
String getTable() {
return table;
}
void setTable(String table) {
this.table = table;
}
void setColumn(int parameterIndex, String column) {
setParameter(parameterIndex, getParameter(parameterIndex), getType(parameterIndex),
getScaleOrLength(parameterIndex), column);
}
void setType(int parameterIndex, Integer type) {
setParameter(parameterIndex, getParameter(parameterIndex), type,
getScaleOrLength(parameterIndex), getColumn(parameterIndex));
}
void setParameter(int parameterIndex, Object value, Integer sqlType) {
setParameter(parameterIndex, value, sqlType, null);
}
void setParameter(int parameterIndex, Object value, Integer sqlType, Integer scaleOrLength) {
setParameter(parameterIndex, value, sqlType, scaleOrLength, null);
}
void setParameter(int parameterIndex, Object value, Integer sqlType, Integer scaleOrLength,
String column) {
highestIndex = Math.max(parameterIndex, highestIndex);
int arrayIndex = parameterIndex - 1;
if (arrayIndex >= parameters.length) {
parameters = Arrays.copyOf(parameters, Math.max(parameters.length * 2, arrayIndex));
types = Arrays.copyOf(types, Math.max(types.length * 2, arrayIndex));
nullable = Arrays.copyOf(nullable, Math.max(nullable.length * 2, arrayIndex));
scalesOrLengths =
Arrays.copyOf(scalesOrLengths, Math.max(scalesOrLengths.length * 2, arrayIndex));
columns = Arrays.copyOf(columns, Math.max(columns.length * 2, arrayIndex));
}
parameters[arrayIndex] = value;
types[arrayIndex] = sqlType;
scalesOrLengths[arrayIndex] = scaleOrLength;
columns[arrayIndex] = column;
}
int getHighestIndex() {
return highestIndex;
}
void fetchMetaData(Connection connection) throws SQLException {
if (table != null && !"".equals(table)) {
try (ResultSet rsCols = connection.getMetaData().getColumns(null, null, table, null)) {
while (rsCols.next()) {
String col = rsCols.getString("COLUMN_NAME");
int arrayIndex = getParameterArrayIndex(col);
if (arrayIndex > -1) {
scalesOrLengths[arrayIndex] = rsCols.getInt("COLUMN_SIZE");
types[arrayIndex] = rsCols.getInt("DATA_TYPE");
nullable[arrayIndex] = rsCols.getInt("NULLABLE");
}
}
}
}
}
private int getParameterArrayIndex(String columnName) {
for (int param = 0; param < highestIndex; param++) {
if (columnName != null && columns[param] != null
&& columnName.equalsIgnoreCase(columns[param])) {
return param;
}
}
return -1;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy