org.simpleflatmapper.jdbc.impl.getter.ArrayBooleanResultSetGetter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sfm-jdbc Show documentation
Show all versions of sfm-jdbc Show documentation
Java library to map flat record - ResultSet, csv - to java object with minimum configuration and low footprint.
The newest version!
package org.simpleflatmapper.jdbc.impl.getter;
import org.simpleflatmapper.converter.Context;
import org.simpleflatmapper.map.getter.ContextualGetter;
import org.simpleflatmapper.reflect.Getter;
import java.sql.Array;
import java.sql.ResultSet;
import java.util.Arrays;
import static org.simpleflatmapper.jdbc.impl.getter.ArrayResultSetGetter.VALUE_INDEX;
public class ArrayBooleanResultSetGetter implements Getter, ContextualGetter {
private static final boolean[] INIT = new boolean[0];
private final int index;
public ArrayBooleanResultSetGetter(int index) {
this.index = index;
}
@Override
public boolean[] get(ResultSet resultSet, Context context) throws Exception {
return get(resultSet);
}
@Override
public boolean[] get(ResultSet target) throws Exception {
Array sqlArray = target.getArray(index);
if (sqlArray != null) {
boolean[] array = INIT;
int capacity = 0;
int size = 0;
ResultSet rs = sqlArray.getResultSet();
try {
while (rs.next()) {
if (size >= capacity) {
int newCapacity = Math.max(Math.max(capacity + 1, capacity + (capacity >> 1)), 10);
array = Arrays.copyOf(array, newCapacity);
capacity = newCapacity;
}
array[size++] = rs.getBoolean(VALUE_INDEX);
}
} finally {
rs.close();
}
return Arrays.copyOf(array, size);
}
return null;
}
}