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/04/01 23:13:20 UTC
svn commit: r1463303 - in
/jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results:
TripleIteratorResults.java metadata/JenaJdbcResultsMetadata.java
metadata/TripleResultsMetadata.java
Author: rvesse
Date: Mon Apr 1 21:13:20 2013
New Revision: 1463303
URL: http://svn.apache.org/r1463303
Log:
Results Metadata and basic implementation of TripleIteratorResults
Added:
jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/metadata/TripleResultsMetadata.java
Modified:
jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/TripleIteratorResults.java
jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/metadata/JenaJdbcResultsMetadata.java
Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/TripleIteratorResults.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/TripleIteratorResults.java?rev=1463303&r1=1463302&r2=1463303&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/TripleIteratorResults.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/TripleIteratorResults.java Mon Apr 1 21:13:20 2013
@@ -24,11 +24,11 @@ import java.sql.Statement;
import java.util.Iterator;
import org.apache.jena.atlas.lib.Closeable;
+import org.apache.jena.jdbc.results.metadata.TripleResultsMetadata;
import com.hp.hpl.jena.graph.Node;
import com.hp.hpl.jena.graph.Triple;
import com.hp.hpl.jena.query.QueryExecution;
-import com.hp.hpl.jena.sparql.core.Var;
/**
* Represents results of a CONSTRUCT/DESCRIBE query where the results are
@@ -37,11 +37,25 @@ import com.hp.hpl.jena.sparql.core.Var;
*/
public class TripleIteratorResults extends StreamedResults<Triple> {
+ private static final TripleResultsMetadata metadata = new TripleResultsMetadata();
+
+ /**
+ * Constant for the number of columns in triple results
+ */
public static final int NUM_COLUMNS = 3;
+ /**
+ * Constant for the subject column label
+ */
public static final String COLUMN_LABEL_SUBJECT = "Subject";
- public static final String COLUMN_LABEL_PREDICATE = "Subject";
- public static final String COLUMN_LABEL_OBJECT = "Subject";
+ /**
+ * Constant for the predicate column label
+ */
+ public static final String COLUMN_LABEL_PREDICATE = "Predicate";
+ /**
+ * Constant for the object column label
+ */
+ public static final String COLUMN_LABEL_OBJECT = "Object";
private Iterator<Triple> triples;
@@ -65,8 +79,15 @@ public class TripleIteratorResults exten
}
public int findColumn(String columnLabel) throws SQLException {
- // TODO Auto-generated method stub
- return 0;
+ if (COLUMN_LABEL_SUBJECT.equals(columnLabel)) {
+ return 1;
+ } else if (COLUMN_LABEL_PREDICATE.equals(columnLabel)) {
+ return 2;
+ } else if (COLUMN_LABEL_OBJECT.equals(columnLabel)) {
+ return 3;
+ } else {
+ throw new SQLException("Column " + columnLabel + " does not exist in these results");
+ }
}
@Override
@@ -93,8 +114,7 @@ public class TripleIteratorResults exten
@Override
public ResultSetMetaData getMetaData() throws SQLException {
- // TODO Auto-generated method stub
- return null;
+ return metadata;
}
@Override
Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/metadata/JenaJdbcResultsMetadata.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/metadata/JenaJdbcResultsMetadata.java?rev=1463303&r1=1463302&r2=1463303&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/metadata/JenaJdbcResultsMetadata.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/metadata/JenaJdbcResultsMetadata.java Mon Apr 1 21:13:20 2013
@@ -25,10 +25,10 @@ import java.sql.Types;
/**
* Abstract implementation of result set metadata for Jena JDBC result sets
- *
+ *
*/
public abstract class JenaJdbcResultsMetadata implements ResultSetMetaData {
-
+
/**
* Constant for the type name reported for Jena JDBC columns
*/
@@ -47,15 +47,25 @@ public abstract class JenaJdbcResultsMet
}
public String getColumnClassName(int column) throws SQLException {
- // TODO Auto-generated method stub
- return null;
+ return this.getColumnTypeName(column);
}
public abstract int getColumnCount() throws SQLException;
+ /**
+ * Gets a columns display size
+ * <p>
+ * Since RDF imposes no maximum on the size of a term this may be
+ * arbitrarily large hence {@link Integer#MAX_VALUE} is returned, users
+ * should not rely on this method to give them accurate information for UI
+ * usage.
+ * </p>
+ */
public int getColumnDisplaySize(int column) throws SQLException {
- // TODO Auto-generated method stub
- return 0;
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
+ // No max size for columns so return maximum possible
+ return Integer.MAX_VALUE;
}
public abstract String getColumnLabel(int column) throws SQLException;
@@ -65,19 +75,33 @@ public abstract class JenaJdbcResultsMet
}
public int getColumnType(int column) throws SQLException {
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
+ // All columns are typed as Java Object from a JDBC SQL type perspective
return Types.JAVA_OBJECT;
}
public String getColumnTypeName(int column) throws SQLException {
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
+ // All columns are typed as ARQ Node
return COLUMN_TYPE_NAME;
}
public int getPrecision(int column) throws SQLException {
- return 0;
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
+ // Precision is not a supported notion in RDF/SPARQL
+ // Precision can vary depending on data type
+ throw new SQLFeatureNotSupportedException();
}
public int getScale(int column) throws SQLException {
- return 0;
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
+ // Scale is not a supported notion in RDF/SPARQL
+ // Scale can vary depending on data type
+ throw new SQLFeatureNotSupportedException();
}
public String getSchemaName(int column) throws SQLException {
@@ -89,17 +113,25 @@ public abstract class JenaJdbcResultsMet
}
public boolean isAutoIncrement(int column) throws SQLException {
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
// SPARQL engines don't have a notion of auto-increment
return false;
}
public boolean isCaseSensitive(int column) throws SQLException {
- // Most types in RDF/SPARQL are subject to case sensitivity especially when talking strict
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
+ // Most types in RDF/SPARQL are subject to case sensitivity especially
+ // when talking strict
// RDF equality semantics
return true;
}
public boolean isCurrency(int column) throws SQLException {
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
+ // No built in currency type in RDF
return false;
}
@@ -110,24 +142,31 @@ public abstract class JenaJdbcResultsMet
public abstract int isNullable(int column) throws SQLException;
public boolean isReadOnly(int column) throws SQLException {
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
// All Jena JDBC results are read-only currently
return true;
}
public boolean isSearchable(int column) throws SQLException {
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
// All columns are searchable in RDF/SPARQL
return true;
}
public boolean isSigned(int column) throws SQLException {
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
// Most numeric types allow for signs in RDF/SPARQL
return true;
}
public boolean isWritable(int column) throws SQLException {
+ // Call getColumnName to validate the column index
+ this.getColumnName(column);
// All Jena JDBC results are read-only currently
return false;
}
-
}
Added: jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/metadata/TripleResultsMetadata.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/metadata/TripleResultsMetadata.java?rev=1463303&view=auto
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/metadata/TripleResultsMetadata.java (added)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/metadata/TripleResultsMetadata.java Mon Apr 1 21:13:20 2013
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.jdbc.results.metadata;
+
+import java.sql.SQLException;
+
+import org.apache.jena.jdbc.results.TripleIteratorResults;
+
+/**
+ * Result set metadata for {@link TripleIteratorResults} instances
+ *
+ */
+public class TripleResultsMetadata extends JenaJdbcResultsMetadata {
+
+ @Override
+ public int getColumnCount() throws SQLException {
+ return TripleIteratorResults.NUM_COLUMNS;
+ }
+
+ @Override
+ public String getColumnLabel(int column) throws SQLException {
+ switch (column) {
+ case 1:
+ return TripleIteratorResults.COLUMN_LABEL_SUBJECT;
+ case 2:
+ return TripleIteratorResults.COLUMN_LABEL_PREDICATE;
+ case 3:
+ return TripleIteratorResults.COLUMN_LABEL_OBJECT;
+ default:
+ throw new SQLException("Column Index is out of bounds");
+ }
+ }
+
+ @Override
+ public int isNullable(int column) throws SQLException {
+ return columnNoNulls;
+ }
+
+}