001 //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/model/filterencoding/capabilities/OperatorFactory100.java $ 002 /*---------------------------------------------------------------------------- 003 This file is part of deegree, http://deegree.org/ 004 Copyright (C) 2001-2009 by: 005 Department of Geography, University of Bonn 006 and 007 lat/lon GmbH 008 009 This library is free software; you can redistribute it and/or modify it under 010 the terms of the GNU Lesser General Public License as published by the Free 011 Software Foundation; either version 2.1 of the License, or (at your option) 012 any later version. 013 This library is distributed in the hope that it will be useful, but WITHOUT 014 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 015 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 016 details. 017 You should have received a copy of the GNU Lesser General Public License 018 along with this library; if not, write to the Free Software Foundation, Inc., 019 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 020 021 Contact information: 022 023 lat/lon GmbH 024 Aennchenstr. 19, 53177 Bonn 025 Germany 026 http://lat-lon.de/ 027 028 Department of Geography, University of Bonn 029 Prof. Dr. Klaus Greve 030 Postfach 1147, 53001 Bonn 031 Germany 032 http://www.geographie.uni-bonn.de/deegree/ 033 034 e-mail: info@deegree.org 035 ----------------------------------------------------------------------------*/ 036 package org.deegree.model.filterencoding.capabilities; 037 038 import org.deegree.ogcwebservices.getcapabilities.UnknownOperatorNameException; 039 040 /** 041 * @author mschneider 042 * 043 * TODO To change the template for this generated type comment go to Window - Preferences - Java - 044 * Code Style - Code Templates 045 */ 046 public class OperatorFactory100 { 047 048 // arithmetic operators as defined in filterCapabilities.xsd 049 050 /** 051 * 052 */ 053 public final static String OPERATOR_LOGICAL_OPERATORS = "Logical_Operators"; 054 055 /** 056 * 057 */ 058 public final static String OPERATOR_SIMPLE_ARITHMETIC = "Simple_Arithmetic"; 059 060 /** 061 * 062 */ 063 public final static String OPERATOR_FUNCTIONS = "Functions"; 064 065 // comparison operators as defined in filterCapabilities.xsd 066 067 /** 068 * 069 */ 070 public final static String OPERATOR_SIMPLE_COMPARISONS = "Simple_Comparisons"; 071 072 /** 073 * 074 */ 075 public final static String OPERATOR_LIKE = "Like"; 076 077 /** 078 * 079 */ 080 public final static String OPERATOR_BETWEEN = "Between"; 081 082 /** 083 * 084 */ 085 public final static String OPERATOR_NULL_CHECK = "NullCheck"; 086 087 // spatial operators as defined in filterCapabilities.xsd 088 089 /** 090 * 091 */ 092 public final static String OPERATOR_BBOX = "BBOX"; 093 094 /** 095 * 096 */ 097 public final static String OPERATOR_EQUALS = "Equals"; 098 099 /** 100 * 101 */ 102 public final static String OPERATOR_DISJOINT = "Disjoint"; 103 104 /** 105 * 106 */ 107 public final static String OPERATOR_INTERSECT = "Intersect"; 108 109 /** 110 * 111 */ 112 public final static String OPERATOR_TOUCHES = "Touches"; 113 114 /** 115 * 116 */ 117 public final static String OPERATOR_CROSSES = "Crosses"; 118 119 /** 120 * 121 */ 122 public final static String OPERATOR_WITHIN = "Within"; 123 124 /** 125 * 126 */ 127 public final static String OPERATOR_CONTAINS = "Contains"; 128 129 /** 130 * 131 */ 132 public final static String OPERATOR_OVERLAPS = "Overlaps"; 133 134 /** 135 * 136 */ 137 public final static String OPERATOR_BEYOND = "Beyond"; 138 139 /** 140 * 141 */ 142 public final static String OPERATOR_DWITHIN = "DWithin"; 143 144 /** 145 * @param name 146 * @return a new instance 147 * @throws UnknownOperatorNameException 148 */ 149 public static SpatialOperator createSpatialOperator( String name ) 150 throws UnknownOperatorNameException { 151 if ( name.equals( OPERATOR_BBOX ) || name.equals( OPERATOR_EQUALS ) || name.equals( OPERATOR_DISJOINT ) 152 || name.equals( OPERATOR_INTERSECT ) || name.equals( OPERATOR_TOUCHES ) || name.equals( OPERATOR_CROSSES ) 153 || name.equals( OPERATOR_WITHIN ) || name.equals( OPERATOR_CONTAINS ) || name.equals( OPERATOR_OVERLAPS ) 154 || name.equals( OPERATOR_BEYOND ) || name.equals( OPERATOR_DWITHIN ) ) { 155 return new SpatialOperator( name ); 156 } 157 throw new UnknownOperatorNameException( "'" + name + "' is no known spatial operator." ); 158 } 159 160 /** 161 * @param name 162 * @return a new instance 163 * @throws UnknownOperatorNameException 164 */ 165 public static Operator createComparisonOperator( String name ) 166 throws UnknownOperatorNameException { 167 if ( name.equals( OPERATOR_SIMPLE_COMPARISONS ) || name.equals( OPERATOR_LIKE ) 168 || name.equals( OPERATOR_BETWEEN ) || name.equals( OPERATOR_NULL_CHECK ) ) { 169 return new Operator( name ); 170 } 171 throw new UnknownOperatorNameException( "'" + name + "' is no known comparison operator." ); 172 } 173 174 /** 175 * @param name 176 * @return a new instance 177 * @throws UnknownOperatorNameException 178 */ 179 public static Operator createArithmeticOperator( String name ) 180 throws UnknownOperatorNameException { 181 if ( name.equals( OPERATOR_SIMPLE_ARITHMETIC ) || name.equals( OPERATOR_FUNCTIONS ) ) { 182 return new Operator( name ); 183 } 184 throw new UnknownOperatorNameException( "'" + name + "' is no known arithmetic operator." ); 185 } 186 187 /** 188 * @param name 189 * @param argumentCount 190 * @return a new instance 191 */ 192 public static Function createArithmeticFunction( String name, int argumentCount ) { 193 return new Function( name, argumentCount ); 194 } 195 }