/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2011, Open Source Geospatial Foundation (OSGeo) * (C) 2004-2005, Open Geospatial Consortium Inc. * * All Rights Reserved. http://www.opengis.org/legal/ */ package org.opengis.metadata; import java.util.Collection; import org.opengis.util.InternationalString; import org.opengis.metadata.citation.ResponsibleParty; import org.opengis.annotation.UML; import static org.opengis.annotation.Obligation.*; import static org.opengis.annotation.Specification.*; /** * New metadata element, not found in ISO 19115, which is required to describe geographic data. * * * @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/metadata/ExtendedElementInformation.java $ * @version <A HREF="http://www.opengeospatial.org/standards/as#01-111">ISO 19115</A> * @author Martin Desruisseaux (IRD) * @since GeoAPI 2.0 */ @UML(identifier="MD_ExtendedElementInformation", specification=ISO_19115) public interface ExtendedElementInformation { /** * Name of the extended metadata element. * * @return Name of the extended metadata element. */ @UML(identifier="name", obligation=MANDATORY, specification=ISO_19115) String getName(); /** * Short form suitable for use in an implementation method such as XML or SGML. * Returns {@code null} if the {@linkplain #getDataType data type} * is {@linkplain Datatype#CODE_LIST_ELEMENT code list element}, in which case * {@link #getDomainCode} may be used instead. * * @return Short form suitable for use in an implementation method such as XML or SGML, * or {@code null}. */ @UML(identifier="shortName", obligation=CONDITIONAL, specification=ISO_19115) String getShortName(); /** * Three digit code assigned to the extended element. * Returns a non-null value only if the {@linkplain #getDataType data type} * is {@linkplain Datatype#CODE_LIST_ELEMENT code list element}, in which case * {@link #getShortName} may be used instead. * * @return Three digit code assigned to the extended element, or {@code null}. */ @UML(identifier="domainCode", obligation=CONDITIONAL, specification=ISO_19115) Integer getDomainCode(); /** * Definition of the extended element. * * @return Definition of the extended element. */ @UML(identifier="definition", obligation=MANDATORY, specification=ISO_19115) InternationalString getDefinition(); /** * Obligation of the extended element. * * @return Obligation of the extended element, or {@code null}. */ @UML(identifier="obligation", obligation=CONDITIONAL, specification=ISO_19115) Obligation getObligation(); /** * Condition under which the extended element is mandatory. * Returns a non-null value only if the {@linkplain #getObligation obligation} * is {@linkplain Obligation#CONDITIONAL conditional}. * * @return The condition under which the extended element is mandatory, or {@code null}. */ @UML(identifier="condition", obligation=CONDITIONAL, specification=ISO_19115) InternationalString getCondition(); /** * Code which identifies the kind of value provided in the extended element. * * @return The kind of value provided in the extended element. */ @UML(identifier="dataType", obligation=MANDATORY, specification=ISO_19115) Datatype getDataType(); /** * Maximum occurrence of the extended element. * Returns {@code null} if it doesn't apply, for example if the * {@linkplain #getDataType data type} is {@linkplain Datatype#ENUMERATION enumeration}, * {@linkplain Datatype#CODE_LIST code list} or {@linkplain Datatype#CODE_LIST_ELEMENT * code list element}. * * @return Maximum occurrence of the extended element, or {@code null}. */ @UML(identifier="maximumOccurrence", obligation=CONDITIONAL, specification=ISO_19115) Integer getMaximumOccurrence(); /** * Valid values that can be assigned to the extended element. * Returns {@code null} if it doesn't apply, for example if the * {@linkplain #getDataType data type} is {@linkplain Datatype#ENUMERATION enumeration}, * {@linkplain Datatype#CODE_LIST code list} or {@linkplain Datatype#CODE_LIST_ELEMENT * code list element}. * * @return Valid values that can be assigned to the extended element, or {@code null}. */ @UML(identifier="domainValue", obligation=CONDITIONAL, specification=ISO_19115) InternationalString getDomainValue(); /** * Name of the metadata entity(s) under which this extended metadata element may appear. * The name(s) may be standard metadata element(s) or other extended metadata element(s). * * @return Name of the metadata entity(s) under which this extended metadata element may appear. */ @UML(identifier="parentEntity", obligation=MANDATORY, specification=ISO_19115) Collection<String> getParentEntity(); /** * Specifies how the extended element relates to other existing elements and entities. * * @return How the extended element relates to other existing elements and entities. */ @UML(identifier="rule", obligation=MANDATORY, specification=ISO_19115) InternationalString getRule(); /** * Reason for creating the extended element. * * @return Reason for creating the extended element. */ @UML(identifier="rationale", obligation=OPTIONAL, specification=ISO_19115) Collection<? extends InternationalString> getRationales(); /** * Name of the person or organization creating the extended element. * * @return Name of the person or organization creating the extended element. */ @UML(identifier="source", obligation=MANDATORY, specification=ISO_19115) Collection<? extends ResponsibleParty> getSources(); }