001    /*
002     *    GeoAPI - Java interfaces for OGC/ISO standards
003     *    http://www.geoapi.org
004     *
005     *    Copyright (C) 2004-2012 Open Geospatial Consortium, Inc.
006     *    All Rights Reserved. http://www.opengeospatial.org/ogc/legal
007     *
008     *    Permission to use, copy, and modify this software and its documentation, with
009     *    or without modification, for any purpose and without fee or royalty is hereby
010     *    granted, provided that you include the following on ALL copies of the software
011     *    and documentation or portions thereof, including modifications, that you make:
012     *
013     *    1. The full text of this NOTICE in a location viewable to users of the
014     *       redistributed or derivative work.
015     *    2. Notice of any changes or modifications to the OGC files, including the
016     *       date changes were made.
017     *
018     *    THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE
019     *    NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
020     *    TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
021     *    THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY
022     *    PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
023     *
024     *    COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
025     *    CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
026     *
027     *    The name and trademarks of copyright holders may NOT be used in advertising or
028     *    publicity pertaining to the software without specific, written prior permission.
029     *    Title to copyright in this software and any associated documentation will at all
030     *    times remain with copyright holders.
031     */
032    package org.opengis.metadata.maintenance;
033    
034    import java.util.Set;
035    import org.opengis.annotation.UML;
036    import org.opengis.feature.type.AttributeType;
037    import org.opengis.feature.type.FeatureType;
038    
039    import static org.opengis.annotation.Obligation.*;
040    import static org.opengis.annotation.Specification.*;
041    
042    
043    /**
044     * Description of the class of information covered by the information.
045     *
046     * @author  Martin Desruisseaux (IRD)
047     * @author  Cory Horner (Refractions Research)
048     * @version 3.0
049     * @since   2.0
050     *
051     * @navassoc - - - AttributeType
052     * @navassoc - - - FeatureType
053     * @navassoc - - - AttributeType
054     */
055    @UML(identifier="MD_ScopeDescription", specification=ISO_19115)
056    public interface ScopeDescription {
057        /**
058         * Attributes to which the information applies.
059         *
060         * @return Attributes to which the information applies.
061         *
062         * @condition Features, featureInstances, attributeInstances, dataset and other not
063         *            documented.
064         */
065        @UML(identifier="attributes", obligation=CONDITIONAL, specification=ISO_19115)
066        Set<? extends AttributeType> getAttributes();
067    
068        /**
069         * Features to which the information applies.
070         *
071         * @return Features to which the information applies.
072         *
073         * @condition attributes, featureInstances, attributeInstances, dataset and other not
074         *            documented.
075         */
076        @UML(identifier="features", obligation=CONDITIONAL, specification=ISO_19115)
077        Set<? extends FeatureType> getFeatures();
078    
079        /**
080         * Feature instances to which the information applies.
081         *
082         * @return Feature instances to which the information applies.
083         *
084         * @condition Attributes, features, attributeInstances, dataset and other not
085         *            documented.
086         */
087        @UML(identifier="featureInstances", obligation=CONDITIONAL, specification=ISO_19115)
088        Set<? extends FeatureType> getFeatureInstances();
089    
090        /**
091         * Attribute instances to which the information applies.
092         *
093         * @return Attribute instances to which the information applies.
094         *
095         * @since 2.1
096         *
097         * @condition Attributes, features, featureInstances, dataset and other not
098         *            documented.
099         */
100        @UML(identifier="attributeInstances", obligation=CONDITIONAL, specification=ISO_19115)
101        Set<? extends AttributeType> getAttributeInstances();
102    
103        /**
104         * Dataset to which the information applies.
105         *
106         * @return Dataset to which the information applies.
107         *
108         * @since 2.1
109         *
110         * @condition Attributes, features, featureInstances, attributeInstances and other not
111         *            documented.
112         */
113        @UML(identifier="dataset", obligation=CONDITIONAL, specification=ISO_19115)
114        String getDataset();
115    
116        /**
117         * Class of information that does not fall into the other categories to
118         * which the information applies.
119         *
120         * @return Class of information that does not fall into the other categories.
121         *
122         * @since 2.1
123         *
124         * @condition Attributes, features, featureInstances, attributeInstances and dataset not
125         *            documented.
126         */
127        @UML(identifier="other", obligation=CONDITIONAL, specification=ISO_19115)
128        String getOther();
129    }