Changeset: 6617eaf808cb for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list