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.citation.Citation; 026import org.opengis.metadata.citation.ResponsibleParty; 027import org.opengis.util.InternationalString; 028 029import static org.opengis.annotation.Obligation.*; 030import static org.opengis.annotation.Specification.*; 031 032 033/** 034 * Designation of the platform 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_Platform", specification=ISO_19115_2) 041public interface Platform { 042 /** 043 * Source where information about the platform is described. 044 * 045 * @return source where information about the platform is described, or {@code null}. 046 */ 047 @UML(identifier="citation", obligation=OPTIONAL, specification=ISO_19115_2) 048 default Citation getCitation() { 049 return null; 050 } 051 052 /** 053 * Unique identification of the platform. 054 * 055 * @return unique identification of the platform. 056 */ 057 @UML(identifier="identifier", obligation=MANDATORY, specification=ISO_19115_2) 058 Identifier getIdentifier(); 059 060 /** 061 * Narrative description of the platform supporting the instrument. 062 * 063 * @return narrative description of the platform. 064 */ 065 @UML(identifier="description", obligation=MANDATORY, specification=ISO_19115_2) 066 InternationalString getDescription(); 067 068 /** 069 * Organization responsible for building, launch, or operation of the platform. 070 * 071 * <div class="warning"><b>Upcoming API change — generalization</b><br> 072 * As of ISO 19115:2014, {@code ResponsibleParty} is replaced by the {@link Responsibility} parent interface. 073 * This change may be applied in GeoAPI 4.0. 074 * </div> 075 * 076 * @return organization responsible for building, launch, or operation of the platform. 077 */ 078 @UML(identifier="sponsor", obligation=OPTIONAL, specification=ISO_19115_2, version=2003) 079 default Collection<? extends ResponsibleParty> getSponsors() { 080 return Collections.emptyList(); 081 } 082 083 /** 084 * Instrument(s) mounted on a platform. 085 * 086 * @return instrument(s) mounted on a platform. 087 */ 088 @UML(identifier="instrument", obligation=MANDATORY, specification=ISO_19115_2) 089 Collection<? extends Instrument> getInstruments(); 090}