001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * Copyright © 2009-2023 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.acquisition; 019 020import java.util.Collection; 021import java.util.Collections; 022 023import org.opengis.annotation.UML; 024import org.opengis.metadata.Identifier; 025import org.opengis.metadata.extent.Extent; 026import org.opengis.util.InternationalString; 027 028import static org.opengis.annotation.Obligation.*; 029import static org.opengis.annotation.Specification.*; 030 031 032/** 033 * Describes the characteristics, spatial and temporal extent of the intended object to be 034 * observed. 035 * 036 * @author Cédric Briançon (Geomatys) 037 * @version 3.0 038 * @since 2.3 039 */ 040@UML(identifier="MI_Objective", specification=ISO_19115_2) 041public interface Objective { 042 /** 043 * Code used to identify the objective. 044 * 045 * @return objective identifiers. 046 */ 047 @UML(identifier="identifier", obligation=MANDATORY, specification=ISO_19115_2) 048 Collection<? extends Identifier> getIdentifiers(); 049 050 /** 051 * Priority applied to the target. 052 * 053 * @return priority applied, or {@code null}. 054 */ 055 @UML(identifier="priority", obligation=OPTIONAL, specification=ISO_19115_2) 056 default InternationalString getPriority() { 057 return null; 058 } 059 060 /** 061 * Collection technique for the objective. 062 * 063 * @return collection technique for the objective. 064 */ 065 @UML(identifier="type", obligation=OPTIONAL, specification=ISO_19115_2) 066 default Collection<? extends ObjectiveType> getTypes() { 067 return Collections.emptySet(); 068 } 069 070 /** 071 * Role or purpose performed by or activity performed at the objective. 072 * 073 * @return role or purpose performed by or activity performed at the objective. 074 */ 075 @UML(identifier="function", obligation=OPTIONAL, specification=ISO_19115_2) 076 default Collection<? extends InternationalString> getFunctions() { 077 return Collections.emptyList(); 078 } 079 080 /** 081 * Extent information including the bounding box, bounding polygon, vertical and 082 * temporal extent of the objective. 083 * 084 * @return extent information. 085 */ 086 @UML(identifier="extent", obligation=OPTIONAL, specification=ISO_19115_2) 087 default Collection<? extends Extent> getExtents() { 088 return Collections.emptyList(); 089 } 090 091 /** 092 * Event or events associated with objective completion. 093 * 094 * <div class="note"><b>Known typo:</b> 095 * "occurrence" is missing a "r" in the UML diagram of ISO 19115-2 specification. 096 * The {@code UML} annotation below reflects that spelling. 097 * The method reflects that spelling in GeoAPI 3.1, but will be changed to 098 * {@code getObjectiveOccurrences()} in GeoAPI 4.0.</div> 099 * 100 * @return events associated with objective completion. 101 */ 102 @UML(identifier="objectiveOccurence", obligation=MANDATORY, specification=ISO_19115_2) 103 Collection<? extends Event> getObjectiveOccurences(); 104 105 /** 106 * Pass of the platform over the objective. 107 * 108 * @return pass of the platform. 109 */ 110 @UML(identifier="pass", obligation=OPTIONAL, specification=ISO_19115_2) 111 default Collection<? extends PlatformPass> getPass() { 112 return Collections.emptyList(); 113 } 114 115 /** 116 * Instrument which senses the objective data. 117 * 118 * @return instrument which senses the objective data. 119 */ 120 @UML(identifier="sensingInstrument", obligation=OPTIONAL, specification=ISO_19115_2) 121 default Collection<? extends Instrument> getSensingInstruments() { 122 return Collections.emptyList(); 123 } 124}