Changeset: 6617eaf808cb for monetdb-java URL: http://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=6617eaf808cb Added Files: src/main/java/nl/cwi/monetdb/embedded/resultset/AbstractQueryResultSetColumn.java src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetBooleanColumn.java src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetByteColumn.java src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetDoubleColumn.java src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetFloatColumn.java src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetIntColumn.java src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetLongColumn.java src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetObjectColumn.java src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetShortColumn.java Removed Files: src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetColumn.java Modified Files: src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractColumn.java src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBEmbeddedBlob.java src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBToJavaMapping.java src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultRowSet.java src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSet.java src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTableColumn.java src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java Branch: embedded Log Message:
Intermediary commit. Added direct mapping for primitive types. Removed unused code. diffs (truncated from 1987 to 300 lines): diff --git a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java --- a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java +++ b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java @@ -39,7 +39,7 @@ public class MonetDBEmbeddedConnection { */ public String getCurrentSchema() throws MonetDBEmbeddedException { QueryResultSet eqr = this.sendQuery("SELECT current_schema FROM sys.var();"); - QueryResultSetColumn<String> col = eqr.getColumnByIndex(0); + QueryResultSetObjectColumn<String> col = eqr.getObjectColumnByIndex(0); String res = col.fetchFirstNColumnValues(1)[0]; eqr.close(); return res; @@ -138,31 +138,6 @@ public class MonetDBEmbeddedConnection { }*/ /** - * Creates a prepared query statement likewise the PreparedStatement in JDBC. - * - * @param query The SQL query with '?' indicating the parameters to replace in the query - * @return An instance of EmbeddedPreparedStatement - * @throws MonetDBEmbeddedException If an error in the database occurred - */ - /*public EmbeddedPreparedStatement createPreparedStatement(String query) throws MonetDBEmbeddedException { - if (!query.endsWith(";")) { - query += ";"; - } - return this.createPreparedStatementInternal(this.connectionPointer, query); - }*/ - - /** - * Creates a prepared query statement likewise the PreparedStatement in JDBC asynchronously. - * - * @param query The SQL query with '?' indicating the parameters to replace in the query - * @return An instance of EmbeddedPreparedStatement - * @throws MonetDBEmbeddedException If an error in the database occurred - */ - /*public CompletableFuture<EmbeddedPreparedStatement> createPreparedStatementAsync(String query) throws MonetDBEmbeddedException { - return CompletableFuture.supplyAsync(() -> this.createPreparedStatement(query)); - }*/ - - /** * Retrieves a MonetDB Table for further operations * * @param schemaName The schema of the table @@ -284,9 +259,6 @@ public class MonetDBEmbeddedConnection { private native MonetDBTable getMonetDBTableInternal(long connectionPointer, String schemaName, String tableName) throws MonetDBEmbeddedException; - /*private native EmbeddedPreparedStatement createPreparedStatementInternal(long connectionPointer, String query) - throws MonetDBEmbeddedException;*/ - /** * Internal implementation to close a connection. */ diff --git a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractColumn.java b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractColumn.java --- a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractColumn.java +++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractColumn.java @@ -16,12 +16,30 @@ package nl.cwi.monetdb.embedded.mapping; public abstract class AbstractColumn { /** - * The Mapping between MonetDB type and the Java Class. + * The mapping between MonetDB type and the Java Class. */ protected final MonetDBToJavaMapping mapping; - protected AbstractColumn(String columnType) { + /** + * The column name. + */ + private final String columnName; + + /** + * The column digits. + */ + private final int columnDigits; + + /** + * The column scale. + */ + private final int columnScale; + + protected AbstractColumn(String columnType, String columnName, int columnDigits, int columnScale) { this.mapping = MonetDBToJavaMapping.GetJavaMappingFromMonetDBString(columnType); + this.columnName = columnName; + this.columnDigits = columnDigits; + this.columnScale = columnScale; } /** @@ -43,19 +61,19 @@ public abstract class AbstractColumn { * * @return The column name */ - public abstract String getColumnName(); + public String getColumnName() { return this.columnName; } /** * Gets the number digits of the column. * * @return The number of digits */ - public abstract int getColumnDigits(); + public int getColumnDigits() { return this.columnDigits; } /** * Gets the scale of the column. * * @return The scale */ - public abstract int getColumnScale(); + public int getColumnScale() { return this.columnScale; } } diff --git a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java --- a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java +++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java @@ -1,3 +1,11 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 2016 MonetDB B.V. + */ + package nl.cwi.monetdb.embedded.mapping; import nl.cwi.monetdb.embedded.env.AbstractConnectionResult; diff --git a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java --- a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java +++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java @@ -1,3 +1,11 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 2016 MonetDB B.V. + */ + package nl.cwi.monetdb.embedded.mapping; /** @@ -9,6 +17,11 @@ package nl.cwi.monetdb.embedded.mapping; public abstract class AbstractRowSet { /** + * The original query result set this row set belongs. + */ + private final AbstractResultTable table; + + /** * The MonetDB-To-Java mappings of the columns. */ protected final MonetDBToJavaMapping[] mappings; @@ -18,7 +31,8 @@ public abstract class AbstractRowSet { */ protected final MonetDBRow[] rows; - protected AbstractRowSet(MonetDBToJavaMapping[] mappings, Object[][] rows) { + protected AbstractRowSet(AbstractResultTable table, MonetDBToJavaMapping[] mappings, Object[][] rows) { + this.table = table; this.mappings = mappings; this.rows = new MonetDBRow[rows.length]; for(int i = 0 ; i < rows.length ; i++) { @@ -27,9 +41,23 @@ public abstract class AbstractRowSet { } /** + * Gets the original query result set this row set belongs. + * + * @return The original query result set this row set belongs + */ + public AbstractResultTable getQueryResultTable() { return table; } + + /** * Gets the number of columns in this set. * * @return The number of columns in this set */ public int getNumberOfColumns() { return mappings.length; } + + /** + * Gets a column index in the result set by name. + * + * @return The index number + */ + public abstract int getColumnIndexByName(String columnName); } diff --git a/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBEmbeddedBlob.java b/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBEmbeddedBlob.java --- a/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBEmbeddedBlob.java +++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBEmbeddedBlob.java @@ -1,3 +1,11 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 2016 MonetDB B.V. + */ + package nl.cwi.monetdb.embedded.mapping; import java.io.*; diff --git a/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java b/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java --- a/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java +++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java @@ -1,3 +1,11 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 2016 MonetDB B.V. + */ + package nl.cwi.monetdb.embedded.mapping; import java.util.Arrays; @@ -30,7 +38,7 @@ public class MonetDBRow implements Itera * * @return The original row result set from this row */ - public AbstractRowSet getOriginalSet() { return originalSet; } + public AbstractRowSet getRowSet() { return originalSet; } /** * Gets the columns values as Java objects. @@ -40,7 +48,7 @@ public class MonetDBRow implements Itera public Object[] getAllColumns() { return columns; } /** - * Sets all columns values as Java objects. + * Sets all columns values as Java objects. Warning - this method does not override the contents in the database! * * @param values An object array of the elements to update */ @@ -80,7 +88,33 @@ public class MonetDBRow implements Itera } /** - * Sets a column value as a Java class. + * Gets a column value as a Java class. + * + * @param <T> A Java class mapped to a MonetDB data type + * @param columnName The name of the column + * @param javaClass The Java class + * @return The column value as a Java class + */ + public <T> T getColumnByName(String columnName, Class<T> javaClass) { + int index = this.getRowSet().getColumnIndexByName(columnName); + 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 columnName The name of the column + * @return The column value as a Java class + */ + public <T> T getColumnByName(String columnName) { + int index = this.getRowSet().getColumnIndexByName(columnName); + Class<T> javaClass = this.originalSet.mappings[index].getJavaClass(); + return javaClass.cast(columns[index]); + } + + /** + * Sets a column value as a Java class. Warning - this method does not override the contents in the database! * * @param <T> A Java class mapped to a MonetDB data type * @param index The index of the column @@ -91,7 +125,7 @@ public class MonetDBRow implements Itera } /** - * Sets a column value as a Java class. + * Sets a column value as a Java class. Warning - this method does not override the contents in the database! * * @param <T> A Java class mapped to a MonetDB data type * @param index The index of the column @@ -102,6 +136,31 @@ public class MonetDBRow implements Itera this.columns[index] = javaClass.cast(value); } + /** + * Sets a column value as a Java class. Warning - this method does not override the contents in the database! + * + * @param <T> A Java class mapped to a MonetDB data type + * @param columnName The name of the column + * @param value The value to set + */ + public <T> void setColumnByName(String columnName, T value) { + int index = this.getRowSet().getColumnIndexByName(columnName); + this.columns[index] = this.originalSet.mappings[index].getJavaClass().cast(value); + } + + /** + * Sets a column value as a Java class. Warning - this method does not override the contents in the database! + * _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list