/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2008, Open Source Geospatial Foundation (OSGeo) * * This library 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; * version 2.1 of the License. * * This library 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. */ package org.geotools.filter.capability; import org.opengis.filter.capability.FilterCapabilities; import org.opengis.filter.capability.IdCapabilities; import org.opengis.filter.capability.ScalarCapabilities; import org.opengis.filter.capability.SpatialCapabilities; import org.opengis.filter.capability.TemporalCapabilities; /** * Implementation of the FilterCapabilities interface. * * @author Justin Deoliveira, The Open Planning Project * * * * @source $URL$ */ public class FilterCapabilitiesImpl implements FilterCapabilities { String version; IdCapabilitiesImpl id; ScalarCapabilitiesImpl scalar; SpatialCapabiltiesImpl spatial; TemporalCapabilitiesImpl temporal; public FilterCapabilitiesImpl(){ this( FilterCapabilities.VERSION_100 ); } public FilterCapabilitiesImpl( String version ){ this.version = version; } public FilterCapabilitiesImpl( String version, ScalarCapabilities scalar, SpatialCapabilities spatial, IdCapabilities id ) { this.version = version; this.id = toIdCapabilitiesImpl(id); this.scalar = toScalarCapabilitiesImpl( scalar ); this.spatial = toSpatialCapabiltiesImpl( spatial ); this.temporal = toTemporalCapabilitiesImpl( null ); } public FilterCapabilitiesImpl( String version, ScalarCapabilities scalar, SpatialCapabilities spatial, IdCapabilities id, TemporalCapabilities temporal ) { this.version = version; this.id = toIdCapabilitiesImpl(id); this.scalar = toScalarCapabilitiesImpl( scalar ); this.spatial = toSpatialCapabiltiesImpl( spatial ); this.temporal = toTemporalCapabilitiesImpl( temporal ); } public FilterCapabilitiesImpl( FilterCapabilities copy ) { this.version = copy.getVersion(); this.id = copy.getIdCapabilities() == null ? null : new IdCapabilitiesImpl( copy.getIdCapabilities() ); this.scalar = toScalarCapabilitiesImpl( copy.getScalarCapabilities() ); this.spatial = toSpatialCapabiltiesImpl( copy.getSpatialCapabilities() ); this.temporal = toTemporalCapabilitiesImpl( copy.getTemporalCapabilities() ); } private ScalarCapabilitiesImpl toScalarCapabilitiesImpl( ScalarCapabilities scalarCapabilities ) { if( scalarCapabilities == null ){ return new ScalarCapabilitiesImpl(); } if( scalarCapabilities instanceof ScalarCapabilitiesImpl){ return (ScalarCapabilitiesImpl) scalarCapabilities; } return new ScalarCapabilitiesImpl( scalarCapabilities ); } private IdCapabilitiesImpl toIdCapabilitiesImpl( IdCapabilities idCapabilities ) { if( idCapabilities == null ){ return new IdCapabilitiesImpl(); } if( idCapabilities instanceof IdCapabilitiesImpl){ return (IdCapabilitiesImpl) idCapabilities; } return new IdCapabilitiesImpl( idCapabilities ); } private static SpatialCapabiltiesImpl toSpatialCapabiltiesImpl( SpatialCapabilities spatialCapabilities ) { if( spatialCapabilities == null ){ return new SpatialCapabiltiesImpl(); } if( spatialCapabilities instanceof SpatialCapabiltiesImpl){ return (SpatialCapabiltiesImpl) spatialCapabilities; } return new SpatialCapabiltiesImpl( spatialCapabilities ); } private static TemporalCapabilitiesImpl toTemporalCapabilitiesImpl(TemporalCapabilities temporalCapabilities) { if (temporalCapabilities == null) { return new TemporalCapabilitiesImpl(); } if (temporalCapabilities instanceof TemporalCapabilitiesImpl) { return (TemporalCapabilitiesImpl) temporalCapabilities; } return new TemporalCapabilitiesImpl(temporalCapabilities); } /** * Version of the Filter Specification supported. * <p> * This should be one of the following constants: * <ul> * <li>FilterCapabilities.VERSION_100 * <li>FilterCapabilities.VERSION_110 * </ul> * @param version */ public void setVersion( String version ) { this.version = version; } public String getVersion() { return version; } public void setId( IdCapabilities id ) { this.id = toIdCapabilitiesImpl(id); } public IdCapabilitiesImpl getIdCapabilities() { if( id == null ){ id = new IdCapabilitiesImpl(); } return id; } public void setScalar( ScalarCapabilities scalar ) { this.scalar = toScalarCapabilitiesImpl( scalar ); } public ScalarCapabilitiesImpl getScalarCapabilities() { if( scalar == null ){ scalar = new ScalarCapabilitiesImpl(); } return scalar; } public void setSpatial( SpatialCapabilities spatial ) { this.spatial = toSpatialCapabiltiesImpl( spatial ); } public SpatialCapabiltiesImpl getSpatialCapabilities() { if( spatial == null ){ spatial = new SpatialCapabiltiesImpl(); } return spatial; } public void setTemporal(TemporalCapabilitiesImpl temporal) { this.temporal = temporal; } public TemporalCapabilities getTemporalCapabilities() { // TODO Auto-generated method stub return null; } public void addAll( FilterCapabilities copy ){ getIdCapabilities().addAll( copy.getIdCapabilities() ); getScalarCapabilities().addAll( copy.getScalarCapabilities() ); getSpatialCapabilities().addAll( copy.getSpatialCapabilities() ); if( getVersion().compareTo( copy.getVersion() ) < 0 ){ setVersion( copy.getVersion() ); } } public String toString() { StringBuffer buf = new StringBuffer(); buf.append("FilterCapabilities ["); buf.append(version); buf.append("]"); if( id != null ){ buf.append( "\n idCapabilities="); buf.append( id ); } if( scalar != null ){ buf.append("\n scalarCapabilities="); buf.append( scalar ); } if( spatial != null ){ buf.append("\n spatialCapabilities="); buf.append( spatial ); } return buf.toString(); } }