    001    // $HeadURL:
    002    // /deegreerepository/deegree/src/org/deegree/model/filterencoding/capabilities/OperatorFactory.java,v
    003    // 1.1 2005/03/04 16:33:07 mschneider Exp $
    004    /*----------------------------------------------------------------------------
    005     This file is part of deegree, http://deegree.org/
    006     Copyright (C) 2001-2009 by:
    007       Department of Geography, University of Bonn
    008     and
    009       lat/lon GmbH
    010
    011     This library is free software; you can redistribute it and/or modify it under
    012     the terms of the GNU Lesser General Public License as published by the Free
    013     Software Foundation; either version 2.1 of the License, or (at your option)
    014     any later version.
    015     This library is distributed in the hope that it will be useful, but WITHOUT
    016     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    017     FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
    018     details.
    019     You should have received a copy of the GNU Lesser General Public License
    020     along with this library; if not, write to the Free Software Foundation, Inc.,
    021     59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    022
    023     Contact information:
    024
    025     lat/lon GmbH
    026     Aennchenstr. 19, 53177 Bonn
    027     Germany
    028     http://lat-lon.de/
    029
    030     Department of Geography, University of Bonn
    031     Prof. Dr. Klaus Greve
    032     Postfach 1147, 53001 Bonn
    033     Germany
    034     http://www.geographie.uni-bonn.de/deegree/
    035
    036     e-mail: info@deegree.org
    037    ----------------------------------------------------------------------------*/
    038    package org.deegree.model.filterencoding.capabilities;
    039
    040    import org.deegree.framework.util.StringTools;
    041    import org.deegree.ogcwebservices.getcapabilities.UnknownOperatorNameException;
    042
    043    /**
    044     *
    045     *
    046     *
    047     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
    048     * @author last edited by: $Author: mschneider $
    049     *
    050     * @version $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18. Jun 2009) $
    051     */
    052    public class OperatorFactory110 {
    053
    054        // comparison operators as defined in filterCapabilities.xsd (1.1.0)
    055
    056        /**
    057         *
    058         */
    059        public final static String LESS_THAN = "LessThan";
    060
    061        /**
    062         *
    063         */
    064        public final static String GREATER_THAN = "GreaterThan";
    065
    066        /**
    067         *
    068         */
    069        public final static String LESS_THAN_EQUAL_TO = "LessThanEqualTo";
    070
    071        /**
    072         *
    073         */
    074        public final static String GREATER_THAN_EQUAL_TO = "GreaterThanEqualTo";
    075
    076        /**
    077         *
    078         */
    079        public final static String EQUAL_TO = "EqualTo";
    080
    081        /**
    082         *
    083         */
    084        public final static String NOT_EQUAL_TO = "NotEqualTo";
    085
    086        /**
    087         *
    088         */
    089        public final static String LIKE = "Like";
    090
    091        /**
    092         *
    093         */
    094        public final static String BETWEEN = "Between";
    095
    096        /**
    097         *
    098         */
    099        public final static String NULL_CHECK = "NullCheck";
    100
    101        // spatial operators as defined in filterCapabilities.xsd (1.1.0)
    102
    103        /**
    104         *
    105         */
    106        public final static String BBOX = "BBOX";
    107
    108        /**
    109         *
    110         */
    111        public final static String EQUALS = "Equals";
    112
    113        /**
    114         *
    115         */
    116        public final static String DISJOINT = "Disjoint";
    117
    118        /**
    119         *
    120         */
    121        public final static String INTERSECTS = "Intersects";
    122
    123        /**
    124         *
    125         */
    126        public final static String TOUCHES = "Touches";
    127
    128        /**
    129         *
    130         */
    131        public final static String CROSSES = "Crosses";
    132
    133        /**
    134         *
    135         */
    136        public final static String WITHIN = "Within";
    137
    138        /**
    139         *
    140         */
    141        public final static String CONTAINS = "Contains";
    142
    143        /**
    144         *
    145         */
    146        public final static String OVERLAPS = "Overlaps";
    147
    148        /**
    149         *
    150         */
    151        public final static String BEYOND = "Beyond";
    152
    153        /**
    154         *
    155         */
    156        public final static String DWITHIN = "DWithin";
    157
    158        /**
    159         *
    160         * @param name
    161         * @return SpatialOperator for name
    162         * @throws UnknownOperatorNameException
    163         */
    164        public static SpatialOperator createSpatialOperator( String name )
    165                                throws UnknownOperatorNameException {
    166
    167            if ( name.equals( BBOX ) || name.equals( EQUALS ) || name.equals( DISJOINT ) || name.equals( INTERSECTS )
    168                 || name.equals( TOUCHES ) || name.equals( CROSSES ) || name.equals( WITHIN ) || name.equals( CONTAINS )
    169                 || name.equals( OVERLAPS ) || name.equals( BEYOND ) || name.equals( DWITHIN ) ) {
    170                return new SpatialOperator( name, null );
    171            }
    172            String msg = StringTools.concat( 200, "'", name, "' is no valid spatial operator (according to filter ",
    173                                             "encoding specification 1.1.0.)." );
    174            throw new UnknownOperatorNameException( msg );
    175        }
    176
    177        /**
    178         *
    179         * @param name
    180         * @return Operator for name
    181         * @throws UnknownOperatorNameException
    182         */
    183        public static Operator createComparisonOperator( String name )
    184                                throws UnknownOperatorNameException {
    185
    186            if ( name.equals( LESS_THAN ) || name.equals( GREATER_THAN ) || name.equals( LESS_THAN_EQUAL_TO )
    187                 || name.equals( EQUAL_TO ) || name.equals( LESS_THAN_EQUAL_TO ) || name.equals( GREATER_THAN_EQUAL_TO )
    188                 || name.equals( EQUAL_TO ) || name.equals( NOT_EQUAL_TO ) || name.equals( LIKE ) || name.equals( BETWEEN )
    189                 || name.equals( NULL_CHECK ) ) {
    190                return new Operator( name );
    191            }
    192            String msg = StringTools.concat( 200, "'", name, "' is no valid comparison operator (according tofilter",
    193                                             " encoding specification 1.1.0.)." );
    194            throw new UnknownOperatorNameException( msg );
    195        }
    196    }