Author: andy
Date: Thu Aug 8 10:32:29 2013
New Revision: 1511678
URL: http://svn.apache.org/r1511678
Log:
Add Table.rows() to assist in table manipulation.
Reformat code to more conventional style.
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/Table.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/Table1.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableData.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableEmpty.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableN.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableUnit.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableWriter.java
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/Table.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/Table.java?rev=1511678&r1=1511677&r2=1511678&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/Table.java
(original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/Table.java
Thu Aug 8 10:32:29 2013
@@ -18,6 +18,7 @@
package com.hp.hpl.jena.sparql.algebra;
+import java.util.Iterator ;
import java.util.List ;
import com.hp.hpl.jena.query.ResultSet ;
@@ -34,13 +35,13 @@ public interface Table
boolean includeOnNoMatch,
ExprList condition,
ExecutionContext execCxt) ;
-
public void close() ;
public List<Var> getVars() ;
public List<String> getVarNames() ;
public int size() ;
public boolean isEmpty() ;
public QueryIterator iterator(ExecutionContext execCxt) ;
+ public Iterator<Binding> rows() ;
public void addBinding(Binding binding) ;
public boolean contains(Binding binding) ;
public ResultSet toResultSet() ;
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/Table1.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/Table1.java?rev=1511678&r1=1511677&r2=1511678&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/Table1.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/Table1.java
Thu Aug 8 10:32:29 2013
@@ -16,11 +16,14 @@
* limitations under the License.
*/
-package com.hp.hpl.jena.sparql.algebra.table;
+package com.hp.hpl.jena.sparql.algebra.table ;
import java.util.ArrayList ;
+import java.util.Iterator ;
import java.util.List ;
+import org.apache.jena.atlas.iterator.Iter ;
+
import com.hp.hpl.jena.graph.Node ;
import com.hp.hpl.jena.sparql.core.Var ;
import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
@@ -32,21 +35,24 @@ import com.hp.hpl.jena.sparql.engine.ite
import com.hp.hpl.jena.sparql.expr.ExprList ;
import com.hp.hpl.jena.sparql.util.FmtUtils ;
-/** A table of one row of one binding */
-public class Table1 extends TableBase
-{
- private Var var ;
+/** A table of one row of one binding */
+public class Table1 extends TableBase {
+ private Var var ;
private Node value ;
- public Table1(Var var, Node value)
- {
+ public Table1(Var var, Node value) {
this.var = var ;
this.value = value ;
}
-
+
+ @Override
+ public Iterator<Binding> rows() {
+ Binding b = BindingFactory.binding(var, value) ;
+ return Iter.singleton(b) ;
+ }
+
@Override
- public QueryIterator iterator(ExecutionContext execCxt)
- {
+ public QueryIterator iterator(ExecutionContext execCxt) {
// Root binding?
Binding binding = BindingFactory.binding(var, value) ;
QueryIterator qIter = QueryIterSingleton.create(binding, var, value,
execCxt) ;
@@ -54,58 +60,61 @@ public class Table1 extends TableBase
}
@Override
- public QueryIterator matchRightLeft(Binding bindingLeft, boolean
includeOnNoMatch,
- ExprList conditions,
- ExecutionContext execContext)
- {
+ public QueryIterator matchRightLeft(Binding bindingLeft, boolean
includeOnNoMatch, ExprList conditions,
+ ExecutionContext execContext) {
boolean matches = true ;
Node other = bindingLeft.get(var) ;
-
- if ( other == null )
- {
- // Not present - return the merge = the other binding + this
(var/value)
+
+ if ( other == null ) {
+ // Not present - return the merge = the other binding + this
+ // (var/value)
Binding mergedBinding = BindingFactory.binding(bindingLeft, var,
value) ;
return QueryIterSingleton.create(mergedBinding, execContext) ;
}
-
- if ( ! other.equals(value) )
+
+ if ( !other.equals(value) )
matches = false ;
- else
- {
+ else {
if ( conditions != null )
matches = conditions.isSatisfied(bindingLeft, execContext) ;
}
-
- if ( ! matches && ! includeOnNoMatch)
+
+ if ( !matches && !includeOnNoMatch )
return QueryIterNullIterator.create(execContext) ;
- // Matches, or does not match and it's a left join - return the left
binding.
+ // Matches, or does not match and it's a left join - return the left
+ // binding.
return QueryIterSingleton.create(bindingLeft, execContext) ;
}
@Override
- public void closeTable() {}
+ public void closeTable() {}
@Override
- public List<Var> getVars()
- {
+ public List<Var> getVars() {
List<Var> x = new ArrayList<Var>() ;
x.add(var) ;
return x ;
}
-
+
@Override
- public List<String> getVarNames()
- {
+ public List<String> getVarNames() {
List<String> x = new ArrayList<String>() ;
x.add(var.getVarName()) ;
return x ;
}
-
+
@Override
- public int size() { return 1 ; }
+ public int size() {
+ return 1 ;
+ }
+
@Override
- public boolean isEmpty() { return false ; }
-
+ public boolean isEmpty() {
+ return false ;
+ }
+
@Override
- public String toString() { return
"Table1("+var+","+FmtUtils.stringForNode(value)+")" ; }
+ public String toString() {
+ return "Table1(" + var + "," + FmtUtils.stringForNode(value) + ")" ;
+ }
}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableBase.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableBase.java?rev=1511678&r1=1511677&r2=1511678&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableBase.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableBase.java
Thu Aug 8 10:32:29 2013
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.hp.hpl.jena.sparql.algebra.table;
+package com.hp.hpl.jena.sparql.algebra.table ;
import com.hp.hpl.jena.query.ResultSet ;
import com.hp.hpl.jena.query.ResultSetFactory ;
@@ -28,99 +28,98 @@ import com.hp.hpl.jena.sparql.engine.bin
import com.hp.hpl.jena.sparql.engine.binding.BindingUtils ;
import com.hp.hpl.jena.sparql.engine.ref.Evaluator ;
-public abstract class TableBase implements Table
-{
+public abstract class TableBase implements Table {
protected TableBase() {}
@Override
- final public
- void close()
- {
+ final public void close() {
closeTable() ;
}
-
+
protected abstract void closeTable() ;
- final public Table eval(Evaluator evaluator) { return this ; }
-
-
- @Override
- public void addBinding(Binding binding)
- { throw new UnsupportedOperationException("Table.add") ; }
-
+ final public Table eval(Evaluator evaluator) {
+ return this ;
+ }
+
@Override
- public boolean contains(Binding b)
- {
+ public void addBinding(Binding binding) {
+ throw new UnsupportedOperationException("Table.add") ;
+ }
+
+ @Override
+ public boolean contains(Binding b) {
QueryIterator qIter = iterator(null) ;
try {
- for ( ; qIter.hasNext() ; )
- {
+ for (; qIter.hasNext();) {
Binding b2 = qIter.nextBinding() ;
- if ( BindingUtils.equals(b,b2) )
+ if ( BindingUtils.equals(b, b2) )
return true ;
}
return false ;
- } finally { qIter.close() ; }
+ } finally {
+ qIter.close() ;
+ }
}
-
+
@Override
public abstract int size() ;
-
+
@Override
public abstract boolean isEmpty() ;
-
+
@Override
- public ResultSet toResultSet()
- {
+ public ResultSet toResultSet() {
QueryIterator qIter = iterator(null) ;
ResultSet rs = new ResultSetStream(getVarNames(), null, qIter) ;
rs = ResultSetFactory.makeRewindable(rs) ;
qIter.close() ;
return rs ;
}
-
+
@Override
- public String toString()
- {
- return TableWriter.asSSE(this) ;
+ public String toString() {
+ return TableWriter.asSSE(this) ;
}
-
+
@Override
- public int hashCode()
- {
+ public int hashCode() {
int hash = 0 ;
QueryIterator qIter = iterator(null) ;
try {
- for ( ; qIter.hasNext() ; )
- {
+ for (; qIter.hasNext();) {
Binding binding = qIter.nextBinding() ;
- hash ^= binding.hashCode();
+ hash ^= binding.hashCode() ;
}
return hash ;
- } finally { qIter.close() ; }
+ } finally {
+ qIter.close() ;
+ }
}
-
@Override
- public boolean equals(Object other)
- {
- if ( this == other ) return true ;
- if ( ! ( other instanceof Table) ) return false ;
+ public boolean equals(Object other) {
+ if ( this == other )
+ return true ;
+ if ( !(other instanceof Table) )
+ return false ;
Table table = (Table)other ;
if ( table.size() != this.size() )
return false ;
QueryIterator qIter1 = iterator(null) ;
QueryIterator qIter2 = table.iterator(null) ;
try {
- for ( ; qIter1.hasNext() ; )
- {
+ for (; qIter1.hasNext();) {
Binding bind1 = qIter1.nextBinding() ;
Binding bind2 = qIter2.nextBinding() ;
- if ( ! BindingBase.equals(bind1, bind2) )
- return false ;
+ if ( !BindingBase.equals(bind1, bind2) )
+ return false ;
}
return true ;
- } finally { qIter1.close() ; qIter2.close() ;}
+ } finally {
+ qIter1.close() ;
+ qIter2.close() ;
+ }
}
}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableData.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableData.java?rev=1511678&r1=1511677&r2=1511678&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableData.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableData.java
Thu Aug 8 10:32:29 2013
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.hp.hpl.jena.sparql.algebra.table;
+package com.hp.hpl.jena.sparql.algebra.table ;
import java.util.List ;
@@ -24,19 +24,17 @@ import com.hp.hpl.jena.sparql.ARQExcepti
import com.hp.hpl.jena.sparql.core.Var ;
import com.hp.hpl.jena.sparql.engine.binding.Binding ;
-public class TableData extends TableN
-{
- public TableData(List<Var> variables, List<Binding> rows)
- {
+public class TableData extends TableN {
+ public TableData(List<Var> variables, List<Binding> rows) {
super(variables, rows) ;
}
-
+
@Override
- public void addBinding(Binding binding)
- {
+ public void addBinding(Binding binding) {
throw new ARQException("Can't add bindings to an existing data table")
;
}
-
- public List<Binding> getRows() { return rows ; }
-}
+ public List<Binding> getRows() {
+ return rows ;
+ }
+}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableEmpty.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableEmpty.java?rev=1511678&r1=1511677&r2=1511678&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableEmpty.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableEmpty.java
Thu Aug 8 10:32:29 2013
@@ -19,8 +19,11 @@
package com.hp.hpl.jena.sparql.algebra.table;
import java.util.ArrayList ;
+import java.util.Iterator ;
import java.util.List ;
+import org.apache.jena.atlas.iterator.Iter ;
+
import com.hp.hpl.jena.sparql.core.Var ;
import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
import com.hp.hpl.jena.sparql.engine.QueryIterator ;
@@ -35,16 +38,18 @@ public class TableEmpty extends TableBas
{ }
@Override
- public QueryIterator iterator(ExecutionContext execCxt)
- {
+ public Iterator<Binding> rows() {
+ return Iter.nullIterator() ;
+ }
+
+ @Override
+ public QueryIterator iterator(ExecutionContext execCxt) {
return QueryIterNullIterator.create(execCxt) ;
}
@Override
- public QueryIterator matchRightLeft(Binding bindingLeft, boolean
includeOnNoMatch,
- ExprList conditions,
- ExecutionContext execContext)
- {
+ public QueryIterator matchRightLeft(Binding bindingLeft, boolean
includeOnNoMatch, ExprList conditions,
+ ExecutionContext execContext) {
if ( includeOnNoMatch )
return QueryIterSingleton.create(bindingLeft, execContext) ;
else
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableN.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableN.java?rev=1511678&r1=1511677&r2=1511678&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableN.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableN.java
Thu Aug 8 10:32:29 2013
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.hp.hpl.jena.sparql.algebra.table;
+package com.hp.hpl.jena.sparql.algebra.table ;
import java.util.ArrayList ;
import java.util.Iterator ;
@@ -31,35 +31,28 @@ import com.hp.hpl.jena.sparql.engine.ite
import com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper ;
import com.hp.hpl.jena.sparql.expr.ExprList ;
-
-public class TableN extends TableBase
-{
+public class TableN extends TableBase {
protected List<Binding> rows = new ArrayList<Binding>() ;
- protected List<Var> vars = new ArrayList<Var>() ;
+ protected List<Var> vars = new ArrayList<Var>() ;
public TableN() {}
-
- public TableN(List<Var> vars)
- {
+
+ public TableN(List<Var> vars) {
if ( vars != null )
this.vars = vars ;
}
-
- public TableN(QueryIterator qIter)
- {
+
+ public TableN(QueryIterator qIter) {
materialize(qIter) ;
}
-
- protected TableN(List<Var> variables, List<Binding> rows)
- {
+
+ protected TableN(List<Var> variables, List<Binding> rows) {
this.vars = variables ;
this.rows = rows ;
}
- private void materialize(QueryIterator qIter)
- {
- while ( qIter.hasNext() )
- {
+ private void materialize(QueryIterator qIter) {
+ while (qIter.hasNext()) {
Binding binding = qIter.nextBinding() ;
addBinding(binding) ;
}
@@ -67,65 +60,71 @@ public class TableN extends TableBase
}
@Override
- public void addBinding(Binding binding)
- {
- for ( Iterator<Var> names = binding.vars() ; names.hasNext() ; )
- {
+ public void addBinding(Binding binding) {
+ for (Iterator<Var> names = binding.vars(); names.hasNext();) {
Var v = names.next() ;
- if ( ! vars.contains(v))
+ if ( !vars.contains(v) )
vars.add(v) ;
}
rows.add(binding) ;
}
-
+
@Override
- public int size() { return rows.size() ; }
+ public int size() {
+ return rows.size() ;
+ }
+
@Override
- public boolean isEmpty() { return rows.isEmpty() ; }
+ public boolean isEmpty() {
+ return rows.isEmpty() ;
+ }
-
// Note - this table is the RIGHT table, and takes a LEFT binding.
@Override
- public QueryIterator matchRightLeft(Binding bindingLeft, boolean
includeOnNoMatch,
- ExprList conditions,
- ExecutionContext execContext)
- {
+ public QueryIterator matchRightLeft(Binding bindingLeft, boolean
includeOnNoMatch, ExprList conditions,
+ ExecutionContext execContext) {
List<Binding> out = new ArrayList<Binding>() ;
- for ( Iterator<Binding> iter = rows.iterator() ; iter.hasNext() ; )
- {
+ for (Iterator<Binding> iter = rows.iterator(); iter.hasNext();) {
Binding bindingRight = iter.next() ;
- Binding r = Algebra.merge(bindingLeft, bindingRight) ;
+ Binding r = Algebra.merge(bindingLeft, bindingRight) ;
if ( r == null )
continue ;
// This does the conditional part. Theta-join.
if ( conditions == null || conditions.isSatisfied(r, execContext) )
out.add(r) ;
}
-
+
if ( out.size() == 0 && includeOnNoMatch )
out.add(bindingLeft) ;
-
+
if ( out.size() == 0 )
return QueryIterNullIterator.create(execContext) ;
return new QueryIterPlainWrapper(out.iterator(), execContext) ;
}
-
+
+ @Override
+ public Iterator<Binding> rows() {
+ return rows.iterator() ;
+ }
+
@Override
- public QueryIterator iterator(ExecutionContext execCxt)
- {
+ public QueryIterator iterator(ExecutionContext execCxt) {
return new QueryIterPlainWrapper(rows.iterator(), execCxt) ;
}
-
+
@Override
- public void closeTable()
- {
+ public void closeTable() {
rows = null ;
- // Don't clear the vars in case code later asks for the variables.
+ // Don't clear the vars in case code later asks for the variables.
}
@Override
- public List<String> getVarNames() { return Var.varNames(vars) ; }
+ public List<String> getVarNames() {
+ return Var.varNames(vars) ;
+ }
@Override
- public List<Var> getVars() { return vars ; }
+ public List<Var> getVars() {
+ return vars ;
+ }
}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableUnit.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableUnit.java?rev=1511678&r1=1511677&r2=1511678&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableUnit.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableUnit.java
Thu Aug 8 10:32:29 2013
@@ -19,8 +19,11 @@
package com.hp.hpl.jena.sparql.algebra.table;
import java.util.ArrayList ;
+import java.util.Iterator ;
import java.util.List ;
+import org.apache.jena.atlas.iterator.Iter ;
+
import com.hp.hpl.jena.sparql.algebra.Table ;
import com.hp.hpl.jena.sparql.core.Var ;
import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
@@ -38,6 +41,12 @@ public class TableUnit extends TableBase
public TableUnit() {}
@Override
+ public Iterator<Binding> rows() {
+ Binding binding = BindingFactory.binding() ;
+ return Iter.singleton(binding) ;
+ }
+
+ @Override
public QueryIterator iterator(ExecutionContext execCxt)
{
// BindingRoot?
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableWriter.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableWriter.java?rev=1511678&r1=1511677&r2=1511678&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableWriter.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/table/TableWriter.java
Thu Aug 8 10:32:29 2013
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.hp.hpl.jena.sparql.algebra.table;
+package com.hp.hpl.jena.sparql.algebra.table ;
import java.util.Iterator ;
@@ -32,48 +32,40 @@ import com.hp.hpl.jena.sparql.engine.bin
import com.hp.hpl.jena.sparql.serializer.SerializationContext ;
import com.hp.hpl.jena.sparql.util.FmtUtils ;
-public class TableWriter
-{
- public static String asSSE(Table table)
- {
+public class TableWriter {
+ public static String asSSE(Table table) {
IndentedLineBuffer out = new IndentedLineBuffer() ;
TableWriter.output(table, out) ;
return out.asString() ;
}
-
- public static void output(Table table, IndentedWriter out)
- {
+
+ public static void output(Table table, IndentedWriter out) {
output(table, out, null) ;
}
-
- public static void output(Table table, IndentedWriter out,
SerializationContext sCxt)
- {
- if ( sCxt != null )
- {} // Prefix. But then qnames are wrong.
+
+ public static void output(Table table, IndentedWriter out,
SerializationContext sCxt) {
+ if ( sCxt != null ) {} // Prefix. But then qnames are wrong.
out.print("(table") ;
out.incIndent() ;
QueryIterator qIter = table.iterator(null) ;
- for ( ; qIter.hasNext() ; )
- {
+ for (; qIter.hasNext();) {
out.println() ;
Binding binding = qIter.nextBinding() ;
output(binding, out, sCxt) ;
}
out.decIndent() ;
-
+
out.print(")") ;
}
- private static void output(Binding binding, IndentedWriter out,
SerializationContext sCxt)
- {
+ private static void output(Binding binding, IndentedWriter out,
SerializationContext sCxt) {
out.print("(row") ;
- for ( Iterator<Var> iter = binding.vars() ; iter.hasNext() ; )
- {
- Var v = iter.next();
+ for (Iterator<Var> iter = binding.vars(); iter.hasNext();) {
+ Var v = iter.next() ;
Node n = binding.get(v) ;
out.print(" ") ;
out.print(Plan.startMarker2) ;
- out.print(FmtUtils.stringForNode(v)) ;
+ out.print(FmtUtils.stringForNode(v)) ;
out.print(" ") ;
out.print(FmtUtils.stringForNode(n)) ;
out.print(Plan.finishMarker2) ;