package eu.lod2.rsine.registrationservice; import eu.lod2.rsine.dissemination.messageformatting.BindingSetFormatter; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; public class NotificationQuery { private BindingSetFormatter bindingSetFormatter; private String sparqlQuery; private Date lastIssued = new Date(0); private Subscription subscription; private Collection<Condition> conditions = new ArrayList<Condition>(); private Collection<String> auxiliaryQueries = new ArrayList<String>(); public NotificationQuery(String sparqlQuery, BindingSetFormatter bindingSetFormatter, Subscription subscription) { this.sparqlQuery = sparqlQuery; this.bindingSetFormatter = bindingSetFormatter; this.subscription = subscription; } public void updateLastIssued() { lastIssued = new Date(); } public Date getLastIssued() { return lastIssued; } public String getSparqlQuery() { return sparqlQuery; } public void setConditions(Collection<Condition> conditions) { this.conditions = conditions; } public Iterator<Condition> getConditions() { return conditions.iterator(); } public void addAuxiliaryQueries(Collection<String> auxiliaryQuery) { auxiliaryQueries.addAll(auxiliaryQuery); } public Iterator<String> getAuxiliaryQueries() { return auxiliaryQueries.iterator(); } public BindingSetFormatter getBindingSetFormatter() { return bindingSetFormatter; } public Subscription getSubscription() { return subscription; } @Override public boolean equals(Object obj) { return obj instanceof NotificationQuery && sparqlQuery.equals(((NotificationQuery) obj).sparqlQuery) && conditions.equals(((NotificationQuery) obj).conditions); } @Override public int hashCode() { return sparqlQuery.hashCode() + conditions.hashCode(); } @Override public String toString() { return "query: '" +sparqlQuery+ "', conditions: '" +conditions.toString()+ "'"; } }