001/*
002 *    GeoAPI - Java interfaces for OGC/ISO standards
003 *    Copyright © 2004-2024 Open Geospatial Consortium, Inc.
004 *    http://www.geoapi.org
005 *
006 *    Licensed under the Apache License, Version 2.0 (the "License");
007 *    you may not use this file except in compliance with the License.
008 *    You may obtain a copy of the License at
009 *
010 *        http://www.apache.org/licenses/LICENSE-2.0
011 *
012 *    Unless required by applicable law or agreed to in writing, software
013 *    distributed under the License is distributed on an "AS IS" BASIS,
014 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 *    See the License for the specific language governing permissions and
016 *    limitations under the License.
017 */
018package org.opengis.metadata.content;
019
020import java.util.Collection;
021import java.util.Collections;
022import org.opengis.util.InternationalString;
023import org.opengis.util.MemberName;
024import org.opengis.metadata.Identifier;
025import org.opengis.annotation.UML;
026
027import static org.opengis.annotation.Obligation.*;
028import static org.opengis.annotation.Specification.*;
029
030
031/**
032 * Information on the range of each dimension of a cell measurement value.
033 *
034 * @author  Martin Desruisseaux (IRD)
035 * @author  Cory Horner (Refractions Research)
036 * @author  Rémi Maréchal (Geomatys)
037 * @version 3.1
038 * @since   2.0
039 *
040 * @see AttributeGroup#getAttributes()
041 */
042@UML(identifier="MD_RangeDimension", specification=ISO_19115)
043public interface RangeDimension {
044    /**
045     * Unique name or number that identifies attributes included in the coverage.
046     *
047     * @return unique name or number, or {@code null} if none.
048     */
049    @UML(identifier="sequenceIdentifier", obligation=OPTIONAL, specification=ISO_19115)
050    default MemberName getSequenceIdentifier() {
051        return null;
052    }
053
054    /**
055     * Description of the attribute.
056     *
057     * @return description of the attribute, or {@code null} if none.
058     *
059     * @since 3.1
060     */
061    @UML(identifier="description", obligation=OPTIONAL, specification=ISO_19115)
062    default InternationalString getDescription() {
063        return null;
064    }
065
066    /**
067     * Description of the range of a cell measurement value.
068     *
069     * @return description of the range of a cell measurement value, or {@code null} if none.
070     *
071     * @deprecated As of ISO 19115:2014, renamed {@link #getDescription()}.
072     */
073    @Deprecated(since="3.1")
074    @UML(identifier="descriptor", obligation=OPTIONAL, specification=ISO_19115, version=2003)
075    default InternationalString getDescriptor() {
076        return getDescription();
077    }
078
079    /**
080     * Identifiers for each attribute included in the resource. These identifiers
081     * can be used to provide names for the attribute from a standard set of names.
082     *
083     * @return identifiers for each attribute included in the resource.
084     *
085     * @since 3.1
086     */
087    @UML(identifier="name", obligation=OPTIONAL, specification=ISO_19115)
088    default Collection<? extends Identifier> getNames() {
089        return Collections.emptyList();
090    }
091}