View Javadoc

1   /*
2    * Copyright James Leigh (c) 2007.
3    *
4    * Licensed under the Aduna BSD-style license.
5    */
6   package org.openrdf.repository.augur;
7   
8   import info.aduna.iteration.CloseableIteration;
9   
10  import org.openrdf.model.Statement;
11  import org.openrdf.model.Value;
12  import org.openrdf.query.BindingSet;
13  import org.openrdf.query.Dataset;
14  import org.openrdf.query.GraphQuery;
15  import org.openrdf.query.GraphQueryResult;
16  import org.openrdf.query.QueryEvaluationException;
17  import org.openrdf.query.impl.GraphQueryResultImpl;
18  import org.openrdf.query.QueryResultUtil;
19  import org.openrdf.repository.augur.helpers.AStatementIterator;
20  import org.openrdf.repository.augur.model.AugurNode;
21  import org.openrdf.rio.RDFHandler;
22  import org.openrdf.rio.RDFHandlerException;
23  
24  /**
25   * Wraps a GraphQuery and associates the results with the original query.
26   * 
27   * @author James Leigh
28   * 
29   */
30  class AugurGraphQuery implements GraphQuery {
31  
32  	private AugurNode node;
33  
34  	private GraphQuery delegate;
35  
36  	public AugurGraphQuery(AugurNode node, GraphQuery delegate) {
37  		super();
38  		this.node = node;
39  		this.delegate = delegate;
40  	}
41  
42  	public boolean getIncludeInferred() {
43  		return delegate.getIncludeInferred();
44  	}
45  
46  	public void setIncludeInferred(boolean includeInferred) {
47  		delegate.setIncludeInferred(includeInferred);
48  		node.setIncludeInferred(includeInferred);
49  	}
50  
51  	public BindingSet getBindings() {
52  		return delegate.getBindings();
53  	}
54  
55  	public void addBinding(String name, Value value) {
56  		setBinding(name, value);
57  	}
58  
59  	public void setBinding(String name, Value value) {
60  		delegate.setBinding(name, value);
61  	}
62  
63  	public void removeBinding(String name) {
64  		delegate.removeBinding(name);
65  	}
66  
67  	public void setDataset(Dataset dataset) {
68  		delegate.setDataset(dataset);
69  	}
70  
71  	public Dataset getDataset() {
72  		return delegate.getDataset();
73  	}
74  
75  	public GraphQueryResult evaluate() throws QueryEvaluationException {
76  		GraphQueryResult result = delegate.evaluate();
77  		CloseableIteration<Statement, QueryEvaluationException> iter;
78  		iter = new AStatementIterator<QueryEvaluationException>(result, node,
79  				"subject", "object");
80  		return new GraphQueryResultImpl(result.getNamespaces(), iter);
81  	}
82  
83  	public void evaluate(RDFHandler handler) throws QueryEvaluationException,
84  			RDFHandlerException {
85  		GraphQueryResult queryResult = evaluate();
86  		QueryResultUtil.report(queryResult, handler);
87  	}
88  
89  }