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.util.InternationalString; 027 028import static org.opengis.annotation.Obligation.*; 029import static org.opengis.annotation.Specification.*; 030 031 032/** 033 * Designations for the measuring instruments. 034 * 035 * @author Cédric Briançon (Geomatys) 036 * @version 3.1 037 * @since 2.3 038 */ 039@UML(identifier="MI_Instrument", specification=ISO_19115_2) 040public interface Instrument { 041 /** 042 * Complete citation of the instrument. 043 * 044 * @return complete citation of the instrument. 045 */ 046 @UML(identifier="citation", obligation=OPTIONAL, specification=ISO_19115_2) 047 default Collection<? extends Citation> getCitations() { 048 return Collections.emptyList(); 049 } 050 051 /** 052 * Unique identification of the instrument. 053 * 054 * @return unique identification of the instrument. 055 */ 056 @UML(identifier="identifier", obligation=MANDATORY, specification=ISO_19115_2) 057 Identifier getIdentifier(); 058 059 /** 060 * Name of the type of instrument. Examples: framing, line-scan, push-broom, pan-frame. 061 * 062 * @return type of instrument. 063 */ 064 @UML(identifier="type", obligation=MANDATORY, specification=ISO_19115_2) 065 InternationalString getType(); 066 067 /** 068 * Textual description of the instrument. 069 * 070 * @return textual description, or {@code null}. 071 */ 072 @UML(identifier="description", obligation=OPTIONAL, specification=ISO_19115_2) 073 default InternationalString getDescription() { 074 return null; 075 } 076 077 /** 078 * Platform on which the instrument is mounted. 079 * 080 * @return platform on which the instrument is mounted, or {@code null}. 081 */ 082 @UML(identifier="mountedOn", obligation=OPTIONAL, specification=ISO_19115_2) 083 default Platform getMountedOn() { 084 return null; 085 } 086}