You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2013/03/18 22:49:06 UTC

svn commit: r1458030 - in /jena/Experimental/jena-jdbc: jena-jdbc-core/src/main/java/org/apache/jena/jdbc/utils/ jena-jdbc-driver-mem/src/main/java/org/apache/jena/jdbc/mem/ jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/

Author: rvesse
Date: Mon Mar 18 21:49:06 2013
New Revision: 1458030

URL: http://svn.apache.org/r1458030
Log:
Refactor to account for NodeFactory -> NodeFactoryExtra, initial stub for TDB driver

Modified:
    jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/utils/JenaJdbcNodeUtils.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/main/java/org/apache/jena/jdbc/mem/JenaJdbcDatasetConnection.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/TDBDriver.java

Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/utils/JenaJdbcNodeUtils.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/utils/JenaJdbcNodeUtils.java?rev=1458030&r1=1458029&r2=1458030&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/utils/JenaJdbcNodeUtils.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/utils/JenaJdbcNodeUtils.java Mon Mar 18 21:49:06 2013
@@ -28,6 +28,7 @@ import java.util.Set;
 import com.hp.hpl.jena.graph.Node;
 import com.hp.hpl.jena.sparql.expr.NodeValue;
 import com.hp.hpl.jena.sparql.util.NodeFactory;
+import com.hp.hpl.jena.sparql.util.NodeFactoryExtra;
 import com.hp.hpl.jena.vocabulary.XSD;
 
 /**
@@ -123,7 +124,7 @@ public class JenaJdbcNodeUtils {
         try {
             if (n == null) return 0;
             if (n.isLiteral()) {
-                return NodeFactory.nodeToInt(n);
+                return NodeFactoryExtra.nodeToInt(n);
             } else {
                 throw new SQLException("Unable to marshal a non-literal to an integer");
             }
@@ -146,7 +147,7 @@ public class JenaJdbcNodeUtils {
         try {
             if (n == null) return 0;
             if (n.isLiteral()) {
-                return NodeFactory.nodeToLong(n);
+                return NodeFactoryExtra.nodeToLong(n);
             } else {
                 throw new SQLException("Unable to marshal a non-literal to a long integer");
             }
@@ -169,7 +170,7 @@ public class JenaJdbcNodeUtils {
         try {
             if (n == null) return 0;
             if (n.isLiteral()) {
-                return NodeFactory.nodeToFloat(n);
+                return NodeFactoryExtra.nodeToFloat(n);
             } else {
                 throw new SQLException("Unable to marshal a non-literal to a float");
             }
@@ -192,7 +193,7 @@ public class JenaJdbcNodeUtils {
         try {
             if (n == null) return 0;
             if (n.isLiteral()) {
-                return NodeFactory.nodeToDouble(n);
+                return NodeFactoryExtra.nodeToDouble(n);
             } else {
                 throw new SQLException("Unable to marshal a non-literal to a double");
             }

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/main/java/org/apache/jena/jdbc/mem/JenaJdbcDatasetConnection.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/main/java/org/apache/jena/jdbc/mem/JenaJdbcDatasetConnection.java?rev=1458030&r1=1458029&r2=1458030&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/main/java/org/apache/jena/jdbc/mem/JenaJdbcDatasetConnection.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/main/java/org/apache/jena/jdbc/mem/JenaJdbcDatasetConnection.java Mon Mar 18 21:49:06 2013
@@ -65,6 +65,7 @@ public class JenaJdbcDatasetConnection e
             for (JenaJdbcDatasetStatement stmt : this.statements) {
                 stmt.close();
             }
+            this.ds.close();
         } finally {
             this.ds = null;
         }

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/TDBDriver.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/TDBDriver.java?rev=1458030&r1=1458029&r2=1458030&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/TDBDriver.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/TDBDriver.java Mon Mar 18 21:49:06 2013
@@ -22,9 +22,13 @@ import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Properties;
 
+import org.apache.jena.jdbc.JenaJdbcConnection;
 import org.apache.jena.jdbc.JenaJdbcDriver;
+import org.apache.jena.jdbc.mem.JenaJdbcDatasetConnection;
 
 import com.hp.hpl.jena.query.Dataset;
+import com.hp.hpl.jena.query.DatasetFactory;
+import com.hp.hpl.jena.tdb.TDBFactory;
 
 /**
  * <p>
@@ -37,19 +41,28 @@ import com.hp.hpl.jena.query.Dataset;
  * This driver expects a URL of the following form:
  * </p>
  * <pre>
- * jdbc:jena:mem:dataset=file.nq
+ * jdbc:jena:tdb:location=/path/to/dataset;must-exist=false
  * </pre>
  * <p>
- * The {@code dataset} parameter is used to refer to a file containing the
- * dataset you wish to load. Note that if you are creating the connection in
- * code you may alternatively opt to provide a {@link Dataset} instance directly
- * as a property named {@code dataset} to the
- * {@link #connect(String, Properties)} method instead.
+ * The {@code location} parameter is used to refer to a folder containing the
+ * TDB dataset you wish to load. The {@code must-exist} parameter indicates
+ * whether the TDB dataset must already exist, if false then the driver will
+ * create a new empty TDB dataset in that location if a TDB dataset does not
+ * already exist.
  * </p>
  */
 public class TDBDriver extends JenaJdbcDriver {
     
+    /**
+     * Constant for the TDB driver prefix, this is appended to the base {@link JenaJdbcDriver#DRIVER_PREFIX} to form the URL prefix for JDBC Connection URLs for this driver 
+     */
     public static final String TDB_DRIVER_PREFIX = "tdb:";
+    
+    public static final String PARAM_LOCATION = "location";
+    
+    public static final String PARAM_MUST_EXIST = "must-exist";
+    
+    public static final String PARAM_TRANSACTIONAL = "transactional";
 
     /**
      * Creates a new TDB driver
@@ -60,8 +73,22 @@ public class TDBDriver extends JenaJdbcD
 
     @Override
     protected Connection connect(Properties props) throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+        String location = props.getProperty(PARAM_LOCATION);
+        if (location == null) throw new SQLException("Required connection parameter " + PARAM_LOCATION + " is not present in the connection URL or the provided Properties object");
+        
+        String mustExist = props.getProperty(PARAM_MUST_EXIST, "false").toLowerCase();
+        if ("true".equals(mustExist)) {
+            // TODO Ensure the location exists
+        }
+        
+        String transactional = props.getProperty(PARAM_TRANSACTIONAL, "false").toLowerCase();
+        
+        // Open the TDB dataset
+        Dataset tdb = TDBFactory.createDataset(location);
+        
+        // TODO If transactional is set use the dataset in transactional mode - needs a Transactional connection instance
+        // Return a JenaJdbcDatasetConnection for the TDB dataset
+        return (Connection) new JenaJdbcDatasetConnection(tdb, JenaJdbcConnection.DEFAULT_HOLDABILITY);
     }