package org.weso.wesearch.domain.impl.filters;
/**
* It's an implementation of the interface Filters that represents a set of
* sparql filters
* @author Ignacio Fuertes Bernardo
*
*/
public class SPARQLFilters implements Filters{
/**
* A single sparql filter
*/
private SPARQLFilter filter;
/**
* The operator that separates one filter to the others
*/
private Operator op;
/**
* The rest filters of the query
*/
private Filters filters;
/**
* It's a constructor of the class
* @param filter The single filter of the object
*/
public SPARQLFilters(SPARQLFilter filter) {
this.filter = filter;
op = null;
filters = null;
}
/**
* It's a constructor of the class. Initialize with null the properties of
* the object
*/
public SPARQLFilters() {
this.filter = null;
this.op = null;
this.filters = null;
}
/**
* This method returns the single filter of the object
* @return The single filter
*/
public Filter getFilter() {
return filter;
}
/**
* This method sets a new single filter to the object
* @param filter A new single filter
*/
public void setFilter(SPARQLFilter filter) {
this.filter = filter;
}
/**
* This method returns the operator
* @return The operator of the filters
*/
public Operator getOp() {
return op;
}
/**
* It's a constructor of the class
* @param filter The single filter
* @param op The operator
* @param filters The rest of filters
*/
public SPARQLFilters(SPARQLFilter filter, Operator op,
Filters filters) {
this.filter = filter;
this.op = op;
this.filters = filters;
}
/**
* This method sets a new operator
* @param op The new operator
*/
public void setOp(Operator op) {
this.op = op;
}
/**
* This method sets a new set of filters
* @param filters New set of filter
*/
public void setFilters(Filters filters) {
this.filters = filters;
}
/**
* This method returns the set of filter of the object
* @return
*/
public Filters getFilters() {
return filters;
}
@Override
public void addFilter(Filter filter, Operator op) {
if(filters == null) {
this.op = op;
this.filters = new SPARQLFilters((SPARQLFilter)filter);
} else {
filters.addFilter(filter, op);
}
}
@Override
public String toString() {
String result = "";
result += filter.getClause();
if(op != null && filters != null) {
result += op.value() + " " + filters.toString();
}
return result;
}
}