Changeset: cd6ff38c90f4 for monetdb-java
URL: http://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=cd6ff38c90f4
Added Files:
        src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java
        src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java
        src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultRowSet.java
Removed Files:
        src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetRows.java
Modified Files:
        src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java
        src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedDatabase.java
        
src/main/java/nl/cwi/monetdb/embedded/resultset/EmbeddedPreparedStatement.java
        src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSet.java
        
src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetColumn.java
        src/main/java/nl/cwi/monetdb/embedded/tables/IMonetDBTableIterator.java
        src/main/java/nl/cwi/monetdb/embedded/tables/IMonetDBTableRemover.java
        src/main/java/nl/cwi/monetdb/embedded/tables/IMonetDBTableUpdater.java
        src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java
        src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java
        src/main/java/nl/cwi/monetdb/embedded/tables/RowRemover.java
        src/main/java/nl/cwi/monetdb/embedded/tables/RowUpdater.java
Branch: embedded
Log Message:

Cleaned more code. Ready to implement the iterators internally.


diffs (truncated from 1268 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
@@ -111,9 +111,8 @@ public class MonetDBEmbeddedConnection {
      * @return The update result object
      * @throws MonetDBEmbeddedException If an error in the database occurred
      */
-    /*public UpdateResultSet sendUpdateAsync(String query) throws 
MonetDBEmbeddedException {
-        /CompletableFuture.supplyAsync(() -> this.sendUpdate(query));
-        throw new UnsupportedOperationException("Must wait for Java 8 :(");
+    /*public CompletableFuture<UpdateResultSet> sendUpdateAsync(String query) 
throws MonetDBEmbeddedException {
+        return CompletableFuture.supplyAsync(() -> this.sendUpdate(query));
     }*/
 
     /**
@@ -139,9 +138,8 @@ public class MonetDBEmbeddedConnection {
      * @return The query result object
      * @throws MonetDBEmbeddedException If an error in the database occurred
      */
-    /*public QueryResultSet sendQueryAsync(String query) throws 
MonetDBEmbeddedException {
-        CompletableFuture.supplyAsync(() -> this.sendQuery(query));
-        throw new UnsupportedOperationException("Must wait for Java 8 :(");
+    /*public CompletableFuture<QueryResultSet> sendQueryAsync(String query) 
throws MonetDBEmbeddedException {
+        return CompletableFuture.supplyAsync(() -> this.sendQuery(query));
     }*/
 
     /**
@@ -165,9 +163,8 @@ public class MonetDBEmbeddedConnection {
      * @return An instance of EmbeddedPreparedStatement
      * @throws MonetDBEmbeddedException If an error in the database occurred
      */
-    /*public EmbeddedPreparedStatement createPreparedStatementAsync(String 
query) throws MonetDBEmbeddedException {
-        CompletableFuture.supplyAsync(() -> 
this.createPreparedStatement(query));
-        throw new UnsupportedOperationException("Must wait for Java 8 :(");
+    /*public CompletableFuture<EmbeddedPreparedStatement> 
createPreparedStatementAsync(String query) throws MonetDBEmbeddedException {
+        return CompletableFuture.supplyAsync(() -> 
this.createPreparedStatement(query));
     }*/
 
     /**
@@ -192,9 +189,8 @@ public class MonetDBEmbeddedConnection {
      * @return A MonetDBTable instance with column details
      * @throws MonetDBEmbeddedException If an error in the database occurred
      */
-    /*public MonetDBTable getMonetDBTableAsync(String schemaName, String 
tableName) throws MonetDBEmbeddedException {
-        CompletableFuture.supplyAsync(() -> this.getMonetDBTable(schemaName, 
tableName));
-        throw new UnsupportedOperationException("Must wait for Java 8 :(");
+    /*public CompletableFuture<MonetDBTable> getMonetDBTableAsync(String 
schemaName, String tableName) throws MonetDBEmbeddedException {
+        return CompletableFuture.supplyAsync(() -> 
this.getMonetDBTable(schemaName, tableName));
     }*/
 
     /**
@@ -266,9 +262,8 @@ public class MonetDBEmbeddedConnection {
     /**
      * Shuts down this connection asynchronously. Any pending queries 
connections will be immediately closed as well.
      */
-    /*public void closeConnectionAsync() {
-        CompletableFuture.supplyAsync(() -> this.closeConnection());
-        throw new UnsupportedOperationException("Must wait for Java 8 :(");
+    /*public CompletableFuture<Void> closeConnectionAsync() {
+        return CompletableFuture.runAsync(() -> this.closeConnection());
     }*/
 
     /**
diff --git 
a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedDatabase.java 
b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedDatabase.java
--- a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedDatabase.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedDatabase.java
@@ -48,10 +48,9 @@ public class MonetDBEmbeddedDatabase {
      * @return A MonetDBEmbeddedDatabase instance
      * @throws MonetDBEmbeddedException If the JNI library has not been loaded 
yet or an error in the database occurred
      */
-    /*public static MonetDBEmbeddedDatabase StartDatabaseAsync(String 
dbDirectory, boolean silentFlag,
+    /*public static CompletableFuture<MonetDBEmbeddedDatabase> 
StartDatabaseAsync(String dbDirectory, boolean silentFlag,
                                                              boolean 
sequentialFlag) throws MonetDBEmbeddedException {
-        CompletableFuture.supplyAsync(() -> StartDatabase(dbDirectory, 
silentFlag, sequentialFlag));
-        throw new UnsupportedOperationException("Must wait for Java 8 :(");
+        return CompletableFuture.supplyAsync(() -> StartDatabase(dbDirectory, 
silentFlag, sequentialFlag));
     }*/
 
     private final String databaseDirectory;
@@ -127,9 +126,8 @@ public class MonetDBEmbeddedDatabase {
      *
      * @throws MonetDBEmbeddedException If the database is not running or an 
error in the database occurred
      */
-    /*public void stopDatabaseAsync() throws MonetDBEmbeddedException {
-        CompletableFuture.supplyAsync(() -> this.stopDatabase());
-        throw new UnsupportedOperationException("Must wait for Java 8 :(");
+    /*public CompletableFuture<Void> stopDatabaseAsync() throws 
MonetDBEmbeddedException {
+        return CompletableFuture.runAsync(() -> this.stopDatabase());
     }*/
 
     /**
@@ -148,9 +146,8 @@ public class MonetDBEmbeddedDatabase {
      * @return A MonetDBEmbeddedConnection instance
      * @throws MonetDBEmbeddedException If the database is not running or an 
error in the database occurred
      */
-    /*public MonetDBEmbeddedConnection createConnectionAsync() throws 
MonetDBEmbeddedException {
-        CompletableFuture.supplyAsync(() -> this.createConnectionInternal());
-        throw new UnsupportedOperationException("Must wait for Java 8 :(");
+    /*public CompletableFuture<MonetDBEmbeddedConnection> 
createConnectionAsync() throws MonetDBEmbeddedException {
+        return CompletableFuture.supplyAsync(() -> 
this.createConnectionInternal());
     }*/
 
     /**
diff --git a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java 
b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java
new file mode 100644
--- /dev/null
+++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java
@@ -0,0 +1,35 @@
+package nl.cwi.monetdb.embedded.mapping;
+
+/**
+ * A row set retrieved from an embedded MonetDB query result. All the values 
in this set are already mapped
+ * to Java classes a priori.
+ *
+ * @author <a href="mailto:pedro.ferre...@monetdbsolutions.com";>Pedro 
Ferreira</a>
+ */
+public abstract class AbstractRowSet {
+
+    /**
+     * The MonetDB-To-Java mappings of the columns.
+     */
+    protected final MonetDBToJavaMapping[] mappings;
+
+    /**
+     * The rows of this set.
+     */
+    protected final MonetDBRow[] rows;
+
+    protected AbstractRowSet(MonetDBToJavaMapping[] mappings, Object[][] rows) 
{
+        this.mappings = mappings;
+        this.rows = new MonetDBRow[mappings.length];
+        for(int i = 0 ; i < mappings.length ; i++) {
+            this.rows[i] = new MonetDBRow(this, rows[i]);
+        }
+    }
+
+    /**
+     * Gets the number of columns in this set.
+     *
+     * @return The number of columns in this set
+     */
+    public int getNumberOfColumns() { return mappings.length; }
+}
diff --git a/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java 
b/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java
new file mode 100644
--- /dev/null
+++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java
@@ -0,0 +1,107 @@
+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.ferre...@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 getColumn(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 getColumn(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 setColumn(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 setColumn(int index, Class<T> javaClass, T value) {
+        this.columns[index] = javaClass.cast(value);
+    }
+
+    @Override
+    public ListIterator<Object> iterator() { return 
Arrays.asList(this.columns).listIterator(); }
+}
diff --git 
a/src/main/java/nl/cwi/monetdb/embedded/resultset/EmbeddedPreparedStatement.java
 
b/src/main/java/nl/cwi/monetdb/embedded/resultset/EmbeddedPreparedStatement.java
--- 
a/src/main/java/nl/cwi/monetdb/embedded/resultset/EmbeddedPreparedStatement.java
+++ 
b/src/main/java/nl/cwi/monetdb/embedded/resultset/EmbeddedPreparedStatement.java
@@ -414,7 +414,7 @@ public class EmbeddedPreparedStatement {
      * @return The update result object
      * @throws MonetDBEmbeddedException If an error in the database occurred 
or if a parameter has not been set yet
      */
-    /*public UpdateResultSet sendUpdateAsync() throws MonetDBEmbeddedException 
{
+    /*public CompletableFuture<UpdateResultSet> sendUpdateAsync() throws 
MonetDBEmbeddedException {
         return this.connection.sendUpdateAsync(this.applyParameters());
     }*/
 
@@ -424,7 +424,7 @@ public class EmbeddedPreparedStatement {
      * @return The query result object
      * @throws MonetDBEmbeddedException If an error in the database occurred 
or if a parameter has not been set yet
      */
-    /*public QueryResultSet sendQueryAsync() throws MonetDBEmbeddedException {
+    /*public CompletableFuture<QueryResultSet> sendQueryAsync() throws 
MonetDBEmbeddedException {
         return this.connection.sendQueryAsync(this.applyParameters());
     }*/
 }
diff --git 
a/src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetRows.java 
b/src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultRowSet.java
rename from 
src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetRows.java
rename to src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultRowSet.java
--- a/src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetRows.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultRowSet.java
@@ -8,6 +8,8 @@
 
 package nl.cwi.monetdb.embedded.resultset;
 
+import nl.cwi.monetdb.embedded.mapping.AbstractRowSet;
+import nl.cwi.monetdb.embedded.mapping.MonetDBRow;
 import nl.cwi.monetdb.embedded.mapping.MonetDBToJavaMapping;
 
 import java.lang.reflect.Array;
@@ -15,106 +17,20 @@ import java.util.Arrays;
 import java.util.ListIterator;
 
 /**
- * A row set retrieved from an embedded MonetDB query result. All the values 
in this set are already mapped
- * to Java classes a priori.
+ * The row result set from a sendQuery.
  *
  * @author <a href="mailto:pedro.ferre...@monetdbsolutions.com";>Pedro 
Ferreira</a>
  */
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to