/** * */ package org.hyperdata.scute.sparql; import javax.swing.event.EventListenerList; import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFactory; import com.hp.hpl.jena.sparql.resultset.SPARQLResult; import org.hyperdata.scute.sparql.endpoints.Endpoint; import org.hyperdata.scute.system.Log; /** * @author danny * * changed it to include a Query object - may cause inconsistencies */ public class SparqlContainerImpl implements SparqlContainer { private String queryString = null; private Dataset dataset = null; private Endpoint endpoint = null; private boolean local = false; private String resultsString = null; private EventListenerList listenerList = new EventListenerList(); private SparqlEvent sparqlEvent = null; private ResultSet resultSet; private String httpText; private Query query; /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#getQueryString() */ @Override public String getQueryString() { return queryString; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#setQueryString(java.lang.String) */ @Override public void setQueryString(String queryString) { this.queryString = queryString; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#getDataset() */ @Override public Dataset getDataset() { return dataset ; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#getEndpoint() */ @Override public Endpoint getEndpoint() { return endpoint; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#setEndpoint(org.hyperdata.scute.sparql.Endpoint) */ @Override public void setEndpoint(Endpoint endpoint) { this.endpoint = endpoint; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#isLocal() */ @Override public boolean isLocal() { return local; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#setResultsText(java.lang.String) */ @Override public void setResultsText(String resultsString) { this.resultsString = resultsString; if(isSelect()){ try{ // spurious resultSet = ResultSetFactory.fromXML(resultsString); }catch(Exception exception){ resultsString = null; Log.exception(exception); } } } /** * @return */ private boolean isSelect() { // TODO check what kind of query it is return true; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#getResultsText() */ @Override public String getResultsText() { return resultsString; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#addSparqlListener(org.hyperdata.scute.sparql.SparqlListener) */ @Override public void addSparqlListener(SparqlListener sparqlListener) { listenerList.add(SparqlListener.class, sparqlListener); } public void removeFooListener(SparqlListener sparqlListener) { listenerList.remove(SparqlListener.class, sparqlListener); } @Override public void fireSparqlEvent() { // Guaranteed to return a non-null array Object[] listeners = listenerList.getListenerList(); // Process the listeners last to first, notifying // those that are interested in this event for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==SparqlListener.class) { // Lazily create the event: if (sparqlEvent == null) sparqlEvent = new SparqlEvent(this); ((SparqlListener)listeners[i+1]).sparqlEvent(sparqlEvent); } } } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#getResults() */ @Override public ResultSet getResultSet() { return resultSet; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#setHTTPText(java.lang.String) */ @Override public void setHTTPText(String httpText) { this.httpText = httpText; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#getHTTPText() */ @Override public String getHTTPText() { return httpText; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#setQuery(com.hp.hpl.jena.query.Query) */ @Override public void setQuery(Query query) { this.query = query; } /* (non-Javadoc) * @see org.hyperdata.scute.sparql.SparqlContainer#getQuery() */ @Override public Query getQuery() { return query; } }