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.citation.Citation; 025import org.opengis.metadata.identification.Progress; 026 027import static org.opengis.annotation.Obligation.*; 028import static org.opengis.annotation.Specification.*; 029 030 031/** 032 * Designations for the planning information related to meeting the data acquisition requirements. 033 * 034 * @author Cédric Briançon (Geomatys) 035 * @version 3.1 036 * @since 2.3 037 */ 038@UML(identifier="MI_Plan", specification=ISO_19115_2) 039public interface Plan { 040 /** 041 * Manner of sampling geometry that the planner expects for collection of objective data. 042 * 043 * @return manner of sampling geometry, or {@code null}. 044 */ 045 @UML(identifier="type", obligation=OPTIONAL, specification=ISO_19115_2) 046 default GeometryType getType() { 047 return null; 048 } 049 050 /** 051 * Current status of the plan (pending, completed, etc.) 052 * 053 * @return current status of the plan. 054 */ 055 @UML(identifier="status", obligation=MANDATORY, specification=ISO_19115_2) 056 Progress getStatus(); 057 058 /** 059 * Identification of authority requesting target collection. 060 * 061 * @return identification of authority requesting target collection. 062 */ 063 @UML(identifier="citation", obligation=MANDATORY, specification=ISO_19115_2) 064 Citation getCitation(); 065 066 /** 067 * Identification of the activity or activities that satisfy a plan. 068 * 069 * @return identification of the activity or activities. 070 */ 071 @UML(identifier="operation", obligation=OPTIONAL, specification=ISO_19115_2) 072 default Collection<? extends Operation> getOperations() { 073 return Collections.emptyList(); 074 } 075 076 /** 077 * Requirement satisfied by the plan. 078 * 079 * @return requirement satisfied by the plan. 080 */ 081 @UML(identifier="satisfiedRequirement", obligation=OPTIONAL, specification=ISO_19115_2) 082 default Collection<? extends Requirement> getSatisfiedRequirements() { 083 return Collections.emptyList(); 084 } 085}