001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * Copyright © 2013-2024 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.annotation; 019 020 021/** 022 * Type of modeling element as declared in the OGC/ISO UML diagram. 023 * Values of this enumeration are associated to GeoAPI interfaces by the {@link Classifier} 024 * annotation. 025 * 026 * <p>This enumeration is closely related to the ISO 19115 {@link org.opengis.metadata.Datatype} code list, 027 * but not identical since ISO 19115 specifies <i>datatype</i> and <i>stereotype</i> as two distinct information. 028 * Furthermore, {@code Stereotype} needs to be defined as an {@code Enum} for allowing usages in Java annotations</p> 029 * 030 * <p>This enumeration does not include the <i>code list</i> and <i>enumeration</i> stereotypes, 031 * because instances of those types are identified by the {@link org.opengis.util.CodeList} and 032 * {@link Enum} base classes respectively.</p> 033 * 034 * @author Martin Desruisseaux (Geomatys) 035 * @version 3.1 036 * @since 3.1 037 * 038 * @see org.opengis.metadata.Datatype 039 * @see <a href="http://en.wikipedia.org/wiki/Stereotype_%28UML%29">Stereotype on Wikipedia</a> 040 */ 041public enum Stereotype { 042 /** 043 * Class that specifies a domain of objects together with the operations applicable to the 044 * objects, without defining the physical implementation of those objects. 045 * 046 * <p>This is the default value for interfaces without {@link Classifier} annotation.</p> 047 * 048 * @see org.opengis.metadata.Datatype#TYPE_CLASS 049 */ 050 TYPE, 051 052 /** 053 * Encapsulation of data, as opposed to taxonomic or behavioural descriptions. 054 * Data types may not have an identity of their own and are usually aggregated 055 * into some sort of container such as being an attribute in another class. 056 * 057 * @see org.opengis.metadata.Datatype#DATATYPE_CLASS 058 */ 059 DATATYPE, 060 061 /** 062 * Root class for a structural polymorphism. Abstract types are not directly instantiable. 063 * 064 * @see org.opengis.metadata.Datatype#ABSTRACT_CLASS 065 */ 066 ABSTRACT, 067 068 /** 069 * Type consisting of one and only one of several alternatives (listed as member attributes). 070 * 071 * @see org.opengis.metadata.Datatype#UNION_CLASS 072 */ 073 UNION, 074 075 /** 076 * Class whose instances are classes. 077 * 078 * @see org.opengis.metadata.Datatype#META_CLASS 079 */ 080 METACLASS 081}