001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * Copyright © 2003-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.citation.Citation; 026import org.opengis.metadata.identification.Progress; 027import org.opengis.util.InternationalString; 028 029import static org.opengis.annotation.Obligation.*; 030import static org.opengis.annotation.Specification.*; 031 032 033/** 034 * Designations for the operation used to acquire the dataset. 035 * 036 * @author Cédric Briançon (Geomatys) 037 * @version 3.1 038 * @since 2.3 039 */ 040@UML(identifier="MI_Operation", specification=ISO_19115_2) 041public interface Operation { 042 /** 043 * Description of the mission on which the platform observations are made and the 044 * objectives of that mission. 045 * 046 * @return description of the mission, or {@code null}. 047 */ 048 @UML(identifier="description", obligation=OPTIONAL, specification=ISO_19115_2) 049 default InternationalString getDescription() { 050 return null; 051 } 052 053 /** 054 * Identification of the mission. 055 * 056 * @return identification of the mission, or {@code null}. 057 */ 058 @UML(identifier="citation", obligation=OPTIONAL, specification=ISO_19115_2) 059 default Citation getCitation() { 060 return null; 061 } 062 063 /** 064 * Unique identification of the operation. 065 * 066 * @return unique identification of the operation. 067 */ 068 @UML(identifier="identifier", obligation=OPTIONAL, specification=ISO_19115_2) 069 default Identifier getIdentifier() { 070 return null; 071 } 072 073 /** 074 * Status of the data acquisition. 075 * 076 * @return status of the data acquisition. 077 */ 078 @UML(identifier="status", obligation=MANDATORY, specification=ISO_19115_2) 079 Progress getStatus(); 080 081 /** 082 * Collection technique for the operation. 083 * 084 * @return collection technique for the operation, or {@code null}. 085 */ 086 @UML(identifier="type", obligation=OPTIONAL, specification=ISO_19115_2) 087 default OperationType getType() { 088 return null; 089 } 090 091 /** 092 * Sub-missions that make up part of a larger mission. 093 * 094 * @return sub-missions. 095 */ 096 @UML(identifier="childOperation", obligation=OPTIONAL, specification=ISO_19115_2) 097 default Collection<? extends Operation> getChildOperations() { 098 return Collections.emptyList(); 099 } 100 101 /** 102 * Object(s) or area(s) of interest to be sensed. 103 * 104 * @return object(s) or area(s) of interest. 105 */ 106 @UML(identifier="objective", obligation=OPTIONAL, specification=ISO_19115_2) 107 default Collection<? extends Objective> getObjectives() { 108 return Collections.emptyList(); 109 } 110 111 /** 112 * Heritage of the operation. 113 * 114 * @return heritage of the operation, or {@code null}. 115 */ 116 @UML(identifier="parentOperation", obligation=OPTIONAL, specification=ISO_19115_2) 117 default Operation getParentOperation() { 118 return null; 119 } 120 121 /** 122 * Plan satisfied by the operation. 123 * 124 * @return plan satisfied by the operation, or {@code null}. 125 */ 126 @UML(identifier="plan", obligation=OPTIONAL, specification=ISO_19115_2) 127 default Plan getPlan() { 128 return null; 129 } 130 131 /** 132 * Platform (or platforms) used in the operation. 133 * 134 * @return Platforms used in the operation. 135 */ 136 @UML(identifier="platform", obligation=OPTIONAL, specification=ISO_19115_2) 137 default Collection<? extends Platform> getPlatforms() { 138 return Collections.emptyList(); 139 } 140 141 /** 142 * Record of an event occurring during an operation. 143 * 144 * @return record of an event occurring during an operation. 145 */ 146 @UML(identifier="significantEvent", obligation=OPTIONAL, specification=ISO_19115_2) 147 default Collection<? extends Event> getSignificantEvents() { 148 return Collections.emptyList(); 149 } 150}