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.lineage; 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 * Comprehensive information about the procedure(s), process(es) and algorithm(s) applied 034 * in the process step. 035 * 036 * @author Cédric Briançon (Geomatys) 037 * @version 3.1 038 * @since 2.3 039 */ 040@UML(identifier="LE_Processing", specification=ISO_19115_2) 041public interface Processing { 042 /** 043 * Information to identify the processing package that produced the data. 044 * 045 * @return identifier of the processing package that produced the data. 046 */ 047 @UML(identifier="identifier", obligation=MANDATORY, specification=ISO_19115_2) 048 Identifier getIdentifier(); 049 050 /** 051 * Reference to document describing processing software. 052 * 053 * @return document describing processing software. 054 */ 055 @UML(identifier="softwareReference", obligation=OPTIONAL, specification=ISO_19115_2) 056 default Collection<? extends Citation> getSoftwareReferences() { 057 return Collections.emptyList(); 058 } 059 060 /** 061 * Additional details about the processing procedures. 062 * 063 * @return processing procedures, or {@code null}. 064 */ 065 @UML(identifier="procedureDescription", obligation=OPTIONAL, specification=ISO_19115_2) 066 default InternationalString getProcedureDescription() { 067 return null; 068 } 069 070 /** 071 * Reference to documentation describing the processing. 072 * 073 * @return documentation describing the processing. 074 */ 075 @UML(identifier="documentation", obligation=OPTIONAL, specification=ISO_19115_2) 076 default Collection<? extends Citation> getDocumentations() { 077 return Collections.emptyList(); 078 } 079 080 /** 081 * Parameters to control the processing operations, entered at run time. 082 * 083 * @return parameters to control the processing operations, or {@code null}. 084 */ 085 @UML(identifier="runTimeParameters", obligation=OPTIONAL, specification=ISO_19115_2) 086 default InternationalString getRunTimeParameters() { 087 return null; 088 } 089 090 /** 091 * Details of the methodology by which geographic information was derived from the 092 * instrument readings. 093 * 094 * @return methodology by which geographic information was derived from the instrument readings. 095 */ 096 @UML(identifier="algorithm", obligation=OPTIONAL, specification=ISO_19115_2) 097 default Collection<? extends Algorithm> getAlgorithms() { 098 return Collections.emptyList(); 099 } 100}