package org.geotools.filter; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import org.geotools.Builder; import org.geotools.factory.CommonFactoryFinder; import org.opengis.filter.Filter; import org.opengis.filter.FilterFactory; import org.opengis.filter.Id; import org.opengis.filter.identity.Identifier; /** * FitlerBuilder acting as a simple wrapper around an Expression. * * * @source $URL$ */ public class IdBuilder<P> implements Builder<Id> { protected Filter filter; // placeholder just to keep us going right now protected FilterFactory ff = CommonFactoryFinder.getFilterFactory2(null); protected P parent; protected boolean unset = false; private List<Identifier> ids = new ArrayList<Identifier>(); public IdBuilder(){ reset(); } public IdBuilder( P parent){ this.parent = parent; reset(); } /** * Build the expression. */ public Id build() { if( unset ) { return null; } return ff.id( new HashSet<Identifier>(ids)); } public IdBuilder<P> fid( String fid ){ ids.add( ff.featureId(fid)); return this; } public IdBuilder<P> featureId( String fid ){ ids.add( ff.featureId(fid)); return this; } public IdBuilder<P> fid( List<String> fids ){ for( String fid : fids ){ ids.add( ff.featureId(fid)); } return this; } public P end(){ return parent; } public IdBuilder<P> reset() { this.filter = org.opengis.filter.Filter.EXCLUDE; this.unset = false; return this; } public IdBuilder<P> reset(Id filter) { if( filter == null ){ return unset(); } this.ids.clear(); this.ids.addAll( filter.getIdentifiers() ); this.unset = false; return this; } public IdBuilder<P> unset() { this.unset = true; this.ids.clear(); return this; } }