001    // $Header:
002    // /cvsroot/deegree/src/org/deegree/ogcwebservices/getcapabilities/Contents.java,v
003    // 1.1 2004/06/23 11:55:40 mschneider Exp $
004    /*----------------    FILE HEADER  ------------------------------------------
005    
006     This file is part of deegree.
007     Copyright (C) 2001-2004 by:
008     EXSE, Department of Geography, University of Bonn
009     http://www.giub.uni-bonn.de/exse/
010     lat/lon GmbH
011     http://www.lat-lon.de
012    
013     This library is free software; you can redistribute it and/or
014     modify it under the terms of the GNU Lesser General Public
015     License as published by the Free Software Foundation; either
016     version 2.1 of the License, or (at your option) any later version.
017    
018     This library is distributed in the hope that it will be useful,
019     but WITHOUT ANY WARRANTY; without even the implied warranty of
020     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
021     Lesser General Public License for more details.
022    
023     You should have received a copy of the GNU Lesser General Public
024     License along with this library; if not, write to the Free Software
025     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
026    
027     Contact:
028    
029     Andreas Poth
030     lat/lon Fitzke/Fretter/Poth GbR
031     Meckenheimer Allee 176
032     53115 Bonn
033     Germany
034     E-Mail: poth@lat-lon.de
035    
036     Jens Fitzke
037     Department of Geography
038     University of Bonn
039     Meckenheimer Allee 166
040     53115 Bonn
041     Germany
042     E-Mail: jens.fitzke@uni-bonn.de
043    
044    
045     ---------------------------------------------------------------------------*/
046    package org.opengis.filter.capability;
047    
048    // Annotations
049    import static org.opengis.annotation.Specification.UNSPECIFIED;
050    
051    import org.opengis.annotation.UML;
052    
053    /**
054     * Indicates a supported Operator.
055     * <p>
056     * The operator that is supported is indicated by the getName() field, these
057     * names are formally defined to match:
058     * <ul>
059     * <li>A subclass of Filter. Examples include "BBOX" and "EqualsTo"
060     * <li>A subclass of Expression or Function. Examples include "ADD" and "Length"
061     * </ul>
062     * Each filter subclass has an associated name (such as BBOX or EqualsTo), you
063     * can use this name to determine if a matching Operator is defined as part of
064     * FilterCapabilities.
065     * 
066     * @author <a href="mailto:tfr@users.sourceforge.net">Torsten Friebe</A>
067     * @author Jody Garnett (Refractions Research)
068     * @todo Which relationship with Filter and expressions?
069     */
070    public interface Operator {     
071        /**
072         * Name of supported Operator.
073         * <p>
074         * Each filter subclass has an associated name (such as BBOX or EqualsTo), you
075         * can use this name to determine if a matching Operator is defined as part of
076         * FilterCapabilities. 
077         */
078        @UML(identifier="name", specification=UNSPECIFIED)
079        String getName();
080        
081        /**
082         * The supported interface enabled by this Operator.
083         * <p>
084         * The mapping from getName() to supported interface is formally defined; and
085         * is must agree with the interfaces defined in org.opengis.filter. Because this
086         * binding is formal we should replace Operator here with a CodeList and capture
087         * it as part of the GeoAPI project.
088         * </p>
089         * @return Interface marked as supported by this Operator
090         */
091        //Class getSupportedType();
092        
093        /**
094         * Equals should be implemented simply in terms of getName()
095         */
096        @Override
097        boolean equals(Object obj);
098        /**
099         * HashCode should be implemented simply in terms of getName().
100         */
101        @Override
102        int hashCode();
103    }