001    /*
002     *    GeoAPI - Java interfaces for OGC/ISO standards
003     *    http://www.geoapi.org
004     *
005     *    Copyright (C) 2004-2013 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.quality;
033    
034    import java.util.Collection;
035    import java.util.Date;
036    import org.opengis.metadata.Identifier;
037    import org.opengis.metadata.citation.Citation;
038    import org.opengis.util.InternationalString;
039    import org.opengis.annotation.UML;
040    
041    import static org.opengis.annotation.Obligation.*;
042    import static org.opengis.annotation.Specification.*;
043    
044    
045    /**
046     * Type of test applied to the data specified by a data quality scope.
047     *
048     * @author  Martin Desruisseaux (IRD)
049     * @author  Cory Horner (Refractions Research)
050     * @version 3.0
051     * @since   2.0
052     *
053     * @navassoc 1 - - Identifier
054     * @navassoc 1 - - EvaluationMethodType
055     * @navassoc 1 - - Citation
056     * @navassoc - - - Result
057     */
058    @UML(identifier="DQ_Element", specification=ISO_19115)
059    public interface Element {
060        /**
061         * Name of the test applied to the data.
062         *
063         * @return Name of the test applied to the data.
064         */
065        @UML(identifier="nameOfMeasure", obligation=OPTIONAL, specification=ISO_19115)
066        Collection<? extends InternationalString> getNamesOfMeasure();
067    
068        /**
069         * Code identifying a registered standard procedure, or {@code null} if none.
070         *
071         * @return Code identifying a registered standard procedure, or {@code null}.
072         */
073        @UML(identifier="measureIdentification", obligation=OPTIONAL, specification=ISO_19115)
074        Identifier getMeasureIdentification();
075    
076        /**
077         * Description of the measure being determined.
078         *
079         * @return Description of the measure being determined, or {@code null}.
080         */
081        @UML(identifier="measureDescription", obligation=OPTIONAL, specification=ISO_19115)
082        InternationalString getMeasureDescription();
083    
084        /**
085         * Type of method used to evaluate quality of the dataset, or {@code null} if unspecified.
086         *
087         * @return Type of method used to evaluate quality, or {@code null}.
088         */
089        @UML(identifier="evaluationMethodType", obligation=OPTIONAL, specification=ISO_19115)
090        EvaluationMethodType getEvaluationMethodType();
091    
092        /**
093         * Description of the evaluation method.
094         *
095         * @return Description of the evaluation method, or {@code null}.
096         */
097        @UML(identifier="evaluationMethodDescription", obligation=OPTIONAL, specification=ISO_19115)
098        InternationalString getEvaluationMethodDescription();
099    
100        /**
101         * Reference to the procedure information, or {@code null} if none.
102         *
103         * @return Reference to the procedure information, or {@code null}.
104         */
105        @UML(identifier="evaluationProcedure", obligation=OPTIONAL, specification=ISO_19115)
106        Citation getEvaluationProcedure();
107    
108        /**
109         * Date or range of dates on which a data quality measure was applied.
110         * The collection size is 1 for a single date, or 2 for a range. Returns
111         * an empty collection if this information is not available.
112         * <p>
113         * <TABLE WIDTH="80%" ALIGN="center" CELLPADDING="18" BORDER="4" BGCOLOR="#FFE0B0">
114         *   <TR><TD>
115         *     <P align="justify"><B>Warning:</B> The element type of this method may change
116         *     in GeoAPI 3.1 release. It may be replaced by a type matching more closely
117         *     either ISO 19108 (<cite>Temporal Schema</cite>) or ISO 19103.</P>
118         *   </TD></TR>
119         * </TABLE>
120         *
121         * @return Date or range of dates on which a data quality measure was applied.
122         *
123         * @since 2.1
124         */
125        @UML(identifier="dateTime", obligation=OPTIONAL, specification=ISO_19115)
126        Collection<? extends Date> getDates();
127    
128        /**
129         * Value (or set of values) obtained from applying a data quality measure or the out
130         * come of evaluating the obtained value (or set of values) against a specified
131         * acceptable conformance quality level.
132         *
133         * @return Set of values obtained from applying a data quality measure.
134         *
135         * @since 2.1
136         */
137        @UML(identifier="result", obligation=MANDATORY, specification=ISO_19115)
138        Collection<? extends Result> getResults();
139    }