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/05/31 02:22:51 UTC
svn commit: r1488066 - in /jena/Experimental/jena-jdbc:
jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/
jena-jdbc-core/src/main/java/org/apache/jena/jdbc/statements/
jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/
Author: rvesse
Date: Fri May 31 00:22:51 2013
New Revision: 1488066
URL: http://svn.apache.org/r1488066
Log:
More stub work on improving setObject() support
Modified:
jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/JenaResultSet.java
jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/statements/JenaPreparedStatement.java
jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/TestTdbDiskResultSets.java
jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/TestTdbMemResultSets.java
Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/JenaResultSet.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/JenaResultSet.java?rev=1488066&r1=1488065&r2=1488066&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/JenaResultSet.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/JenaResultSet.java Fri May 31 00:22:51 2013
@@ -387,6 +387,8 @@ public abstract class JenaResultSet impl
throw new SQLException("Unable to marhsal a RDF Node to the declared column type " + jdbcType);
case Types.BOOLEAN:
return JenaJdbcNodeUtils.toBoolean(n);
+ case Types.BIGINT:
+ return JenaJdbcNodeUtils.toLong(n);
case Types.DATE:
return JenaJdbcNodeUtils.toDate(n);
case Types.DECIMAL:
Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/statements/JenaPreparedStatement.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/statements/JenaPreparedStatement.java?rev=1488066&r1=1488065&r2=1488066&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/statements/JenaPreparedStatement.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/statements/JenaPreparedStatement.java Fri May 31 00:22:51 2013
@@ -39,12 +39,14 @@ import java.sql.SQLFeatureNotSupportedEx
import java.sql.SQLXML;
import java.sql.Time;
import java.sql.Timestamp;
+import java.sql.Types;
import java.util.Calendar;
import java.util.TimeZone;
import org.apache.jena.iri.IRI;
import org.apache.jena.jdbc.connections.JenaConnection;
import org.apache.jena.jdbc.statements.metadata.JenaParameterMetadata;
+import org.apache.jena.jdbc.utils.JenaJdbcNodeUtils;
import com.hp.hpl.jena.datatypes.xsd.XSDDatatype;
import com.hp.hpl.jena.graph.Node;
@@ -354,9 +356,85 @@ public abstract class JenaPreparedStatem
}
@Override
- public void setObject(int parameterIndex, Object value, int arg2) throws SQLException {
- // TODO: This should be supported
- throw new SQLFeatureNotSupportedException();
+ public void setObject(int parameterIndex, Object value, int targetSqlType) throws SQLException {
+ switch (targetSqlType) {
+ case Types.ARRAY:
+ case Types.BINARY:
+ case Types.BIT:
+ case Types.BLOB:
+ case Types.CHAR:
+ case Types.CLOB:
+ case Types.DATALINK:
+ case Types.DISTINCT:
+ case Types.LONGNVARCHAR:
+ case Types.LONGVARBINARY:
+ case Types.LONGVARCHAR:
+ case Types.NCHAR:
+ case Types.NCLOB:
+ case Types.NULL:
+ case Types.NUMERIC:
+ case Types.OTHER:
+ case Types.REAL:
+ case Types.REF:
+ case Types.ROWID:
+ case Types.SQLXML:
+ case Types.STRUCT:
+ case Types.VARBINARY:
+ case Types.VARCHAR:
+ throw new SQLException("The provided SQL Target Type cannot be translated into an appropriate RDF term type");
+ case Types.BIGINT:
+ if (value instanceof Long || value instanceof Integer || value instanceof Short || value instanceof Byte) {
+ this.setParameter(parameterIndex, NodeFactoryExtra.intToNode((Long)value));
+ } else if (value instanceof Node) {
+ long l = JenaJdbcNodeUtils.toLong((Node)value);
+ this.setParameter(parameterIndex, NodeFactoryExtra.intToNode(l));
+ } else {
+ throw new SQLException("The given value is not marshallable to the desired target type");
+ }
+ break;
+ case Types.BOOLEAN:
+ if (value instanceof Boolean) {
+ this.setParameter(parameterIndex, NodeFactory.createLiteral(Boolean.toString((Boolean)value), XSDDatatype.XSDboolean));
+ } else if (value instanceof Node) {
+ boolean b = JenaJdbcNodeUtils.toBoolean((Node)value);
+ this.setParameter(parameterIndex, NodeFactory.createLiteral(Boolean.toString((Boolean)value), XSDDatatype.XSDboolean));
+ } else {
+ throw new SQLException("The given value is not marshallable to the desired target type");
+ }
+ break;
+ case Types.DATE:
+ break;
+ case Types.DECIMAL:
+ break;
+ case Types.DOUBLE:
+ break;
+ case Types.FLOAT:
+ break;
+ case Types.INTEGER:
+ break;
+ case Types.JAVA_OBJECT:
+ if (value instanceof Node) {
+ this.setParameter(parameterIndex, (Node)value);
+ } else if (value instanceof RDFNode) {
+ this.setParameter(parameterIndex, ((RDFNode)value).asNode());
+ } else if (value instanceof String) {
+ this.setParameter(parameterIndex, NodeFactory.createLiteral((String)value));
+ } else if (value instanceof URL) {
+ this.setParameter(parameterIndex, NodeFactory.createURI(((URL)value).toString()));
+ } else
+ break;
+ case Types.NVARCHAR:
+ this.setParameter(parameterIndex, NodeFactory.createLiteral(value.toString()));
+ break;
+ case Types.SMALLINT:
+ break;
+ case Types.TIME:
+ break;
+ case Types.TINYINT:
+ break;
+ default:
+ throw new SQLException("Cannot translate an unknown SQL Target Type into an appropriate RDF term type");
+ }
}
@Override
Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/TestTdbDiskResultSets.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/TestTdbDiskResultSets.java?rev=1488066&r1=1488065&r2=1488066&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/TestTdbDiskResultSets.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/TestTdbDiskResultSets.java Fri May 31 00:22:51 2013
@@ -54,6 +54,10 @@ public class TestTdbDiskResultSets exten
@Override
protected Dataset prepareDataset(Dataset ds) throws SQLException {
+ if (this.currDataset != null) {
+ this.currDataset.close();
+ }
+
Dataset tdb = TDBFactory.createDataset(tempDir.getRoot().getAbsolutePath());
TestUtils.copyDataset(ds, tdb, true);
this.currDataset = tdb;
Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/TestTdbMemResultSets.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/TestTdbMemResultSets.java?rev=1488066&r1=1488065&r2=1488066&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/TestTdbMemResultSets.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/TestTdbMemResultSets.java Fri May 31 00:22:51 2013
@@ -46,6 +46,10 @@ public class TestTdbMemResultSets extend
@Override
protected Dataset prepareDataset(Dataset ds) throws SQLException {
+ if (currDataset != null) {
+ currDataset.close();
+ }
+
Dataset tdb = TDBFactory.createDataset();
TestUtils.copyDataset(ds, tdb, true);
currDataset = tdb;