001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * Copyright © 2014-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.citation; 019 020import java.util.Collection; 021import java.util.Collections; 022import org.opengis.annotation.UML; 023import org.opengis.metadata.identification.BrowseGraphic; 024 025import static org.opengis.annotation.Obligation.*; 026import static org.opengis.annotation.Specification.ISO_19115; 027 028 029/** 030 * Information about the party if the party is an organisation. 031 * 032 * <p><b>Conditional properties:</b></p> 033 * Following properties have default methods but shall nevertheless be implemented if the corresponding condition is met: 034 * <ul> 035 * <li>At least one of {@linkplain #getIndividual() individual} and {@linkplain #getLogo() logo} properties 036 * shall be documented if the {@linkplain #getName() name} (in parent interface) is not documented.</li> 037 * </ul> 038 * 039 * @author Rémi Maréchal (Geomatys) 040 * @version 3.1 041 * @since 3.1 042 */ 043@UML(identifier="CI_Organisation", specification=ISO_19115) 044public interface Organisation extends Party { 045 /** 046 * Graphics identifying organisation. 047 * Returns an empty collection if there is none. 048 * 049 * @return graphic identifying organisation. 050 * 051 * @condition Mandatory if {@linkplain #getName() name} or {@linkplain Individual#getPositionName() position name} 052 * is not documented. 053 */ 054 @UML(identifier="logo", obligation=CONDITIONAL, specification=ISO_19115) 055 default Collection<? extends BrowseGraphic> getLogo() { 056 return Collections.emptyList(); 057 } 058 059 /** 060 * Individuals in the named organisation. 061 * Returns an empty collection if there is none. 062 * 063 * @return individuals in the named organisation. 064 */ 065 @UML(identifier="individual", obligation=OPTIONAL, specification=ISO_19115) 066 default Collection<? extends Individual> getIndividual() { 067 return Collections.emptyList(); 068 } 069}