/**
* Copyright (c) Codice Foundation
* <p>
* This is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser
* General Public License as published by the Free Software Foundation, either version 3 of the
* License, or any later version.
* <p>
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. A copy of the GNU Lesser General Public License
* is distributed along with this program and can be found at
* <http://www.gnu.org/licenses/lgpl.html>.
*/
package ddf.catalog.filter.proxy.builder;
import org.opengis.filter.Filter;
import ddf.catalog.filter.BufferedSpatialExpressionBuilder;
import ddf.catalog.filter.ContextualExpressionBuilder;
import ddf.catalog.filter.EqualityExpressionBuilder;
import ddf.catalog.filter.ExpressionBuilder;
import ddf.catalog.filter.NumericalExpressionBuilder;
import ddf.catalog.filter.NumericalRangeExpressionBuilder;
import ddf.catalog.filter.SpatialExpressionBuilder;
import ddf.catalog.filter.TemporalInstantExpressionBuilder;
import ddf.catalog.filter.TemporalRangeExpressionBuilder;
public class GeotoolsExpressionBuilder extends GeotoolsEqualityExpressionBuilder
implements ExpressionBuilder {
GeotoolsExpressionBuilder() {
super();
}
GeotoolsExpressionBuilder(GeotoolsBuilder builder) {
super(builder);
}
/*
* SCALAR
*/
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#lessThan()
*/
@Override
public NumericalExpressionBuilder lessThan() {
setOperator(Operator.LT);
return new GeotoolsNumericalExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#lessThanOrEqualTo()
*/
@Override
public NumericalExpressionBuilder lessThanOrEqualTo() {
setOperator(Operator.LTE);
return new GeotoolsNumericalExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#greaterThan()
*/
@Override
public NumericalExpressionBuilder greaterThan() {
setOperator(Operator.GT);
return new GeotoolsNumericalExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#greaterThanOrEqualTo()
*/
@Override
public NumericalExpressionBuilder greaterThanOrEqualTo() {
setOperator(Operator.GTE);
return new GeotoolsNumericalExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#equalTo()
*/
@Override
public EqualityExpressionBuilder equalTo() {
setOperator(Operator.EQ);
return new GeotoolsEqualityExpressionBuilder(this);
}
/*
* CONTEXTUAL
*/
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#like()
*/
@Override
public ContextualExpressionBuilder like() {
setOperator(Operator.LIKE);
return new GeotoolsContextualExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#between()
*/
@Override
public NumericalRangeExpressionBuilder between() {
setOperator(Operator.BETWEEN);
return new GeotoolsNumericalRangeExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#notEqualTo()
*/
@Override
public EqualityExpressionBuilder notEqualTo() {
setOperator(Operator.NEQ);
return (EqualityExpressionBuilder) this;
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#empty()
*/
@Override
public Filter empty() {
setOperator(Operator.NULL);
return build(null);
}
/*
* TEMPORAL
*/
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#after()
*/
@Override
public TemporalInstantExpressionBuilder after() {
setOperator(Operator.AFTER);
return new GeotoolsTemporalInstantExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#before()
*/
@Override
public TemporalInstantExpressionBuilder before() {
setOperator(Operator.BEFORE);
return new GeotoolsTemporalInstantExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#during()
*/
@Override
public TemporalRangeExpressionBuilder during() {
setOperator(Operator.DURING);
return new GeotoolsTemporalRangeExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#overlapping()
*/
@Override
public TemporalRangeExpressionBuilder overlapping() {
setOperator(Operator.TOVERLAPS);
return new GeotoolsTemporalRangeExpressionBuilder(this);
}
/*
* SPATIAL
*/
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#intersecting()
*/
@Override
public SpatialExpressionBuilder intersecting() {
setOperator(Operator.INTERSECTS);
return new GeotoolsSpatialExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#containing()
*/
@Override
public SpatialExpressionBuilder containing() {
setOperator(Operator.CONTAINS);
return new GeotoolsSpatialExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#beyond()
*/
@Override
public BufferedSpatialExpressionBuilder beyond() {
setOperator(Operator.BEYOND);
return new GeotoolsBufferedSpatialExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#within()
*/
@Override
public SpatialExpressionBuilder within() {
setOperator(Operator.WITHIN);
return new GeotoolsSpatialExpressionBuilder(this);
}
/*
* (non-Javadoc)
*
* @see ddf.catalog.filter.ExpressionBuilder#withinBuffer()
*/
@Override
public BufferedSpatialExpressionBuilder withinBuffer() {
setOperator(Operator.DWITHIN);
return new GeotoolsBufferedSpatialExpressionBuilder(this);
}
@Override
public SpatialExpressionBuilder nearestTo() {
setOperator(Operator.BEYOND);
return new GeotoolsSpatialExpressionBuilder(this);
}
}