Mercurial > hg > monetdb-java
view src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java @ 51:c592d8a72627 embedded
More defensive approach for tables. Only the table name and schema are cached.
author | Pedro Ferreira <pedro.ferreira@monetdbsolutions.com> |
---|---|
date | Wed, 16 Nov 2016 21:21:26 +0100 (2016-11-16) |
parents | cd6ff38c90f4 |
children | 6617eaf808cb |
line wrap: on
line source
package nl.cwi.monetdb.embedded.mapping; import java.util.Arrays; import java.util.ListIterator; /** * A single MonetDB row in a result set. * * @author <a href="mailto:pedro.ferreira@monetdbsolutions.com">Pedro Ferreira</a> */ public class MonetDBRow implements Iterable { /** * The original row result set from this row. */ private final AbstractRowSet originalSet; /** * The columns values as Java objects. */ private Object[] columns; protected MonetDBRow(AbstractRowSet originalSet, Object[] columns) { this.originalSet = originalSet; this.columns = columns; } /** * Gets the original row result set from this row. * * @return The original row result set from this row */ public AbstractRowSet getOriginalSet() { return originalSet; } /** * Gets the columns values as Java objects. * * @return The columns values as Java objects */ public Object[] getAllColumns() { return columns; } /** * Sets all columns values as Java objects. * * @param values An object array of the elements to update */ public void setAllColumns(Object[] values) { if(values.length != this.columns.length) throw new ArrayStoreException("The values array and the columns length differ!"); this.columns = values; } /** * Gets the number of columns. * * @return The number of columns */ public int getNumberOfColumns() { return columns.length; } /** * Gets a column value as a Java class. * * @param <T> A Java class mapped to a MonetDB data type * @param index The index of the column * @param javaClass The Java class * @return The column value as a Java class */ public <T> T getColumnByIndex(int index, Class<T> javaClass) { return javaClass.cast(columns[index]); } /** * Gets a column value as a Java class using the default mapping. * * @param <T> A Java class mapped to a MonetDB data type * @param index The index of the column * @return The column value as a Java class */ public <T> T getColumnByIndex(int index) { Class<T> javaClass = this.originalSet.mappings[index].getJavaClass(); return javaClass.cast(columns[index]); } /** * Sets a column value as a Java class. * * @param <T> A Java class mapped to a MonetDB data type * @param index The index of the column * @param value The value to set */ public <T> void setColumnByIndex(int index, T value) { this.columns[index] = this.originalSet.mappings[index].getJavaClass().cast(value); } /** * Sets a column value as a Java class. * * @param <T> A Java class mapped to a MonetDB data type * @param index The index of the column * @param javaClass The Java class * @param value The value to set */ public <T> void setColumnByIndex(int index, Class<T> javaClass, T value) { this.columns[index] = javaClass.cast(value); } @Override public ListIterator<Object> iterator() { return Arrays.asList(this.columns).listIterator(); } }