1 /* 2 * GeoAPI - Java interfaces for OGC/ISO standards 3 * http://www.geoapi.org 4 * 5 * Copyright (C) 2004-2011 Open Geospatial Consortium, Inc. 6 * All Rights Reserved. http://www.opengeospatial.org/ogc/legal 7 * 8 * Permission to use, copy, and modify this software and its documentation, with 9 * or without modification, for any purpose and without fee or royalty is hereby 10 * granted, provided that you include the following on ALL copies of the software 11 * and documentation or portions thereof, including modifications, that you make: 12 * 13 * 1. The full text of this NOTICE in a location viewable to users of the 14 * redistributed or derivative work. 15 * 2. Notice of any changes or modifications to the OGC files, including the 16 * date changes were made. 17 * 18 * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE 19 * NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 20 * TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT 21 * THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY 22 * PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. 23 * 24 * COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR 25 * CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. 26 * 27 * The name and trademarks of copyright holders may NOT be used in advertising or 28 * publicity pertaining to the software without specific, written prior permission. 29 * Title to copyright in this software and any associated documentation will at all 30 * times remain with copyright holders. 31 */ 32 package org.opengis.metadata.distribution; 33 34 import java.util.List; 35 import java.util.ArrayList; 36 import org.opengis.util.CodeList; 37 import org.opengis.annotation.UML; 38 39 import static org.opengis.annotation.Obligation.*; 40 import static org.opengis.annotation.Specification.*; 41 42 43 /** 44 * Name of the medium. 45 * 46 * @author Martin Desruisseaux (IRD) 47 * @version 3.0 48 * @since 2.0 49 */ 50 @UML(identifier="MD_MediumNameCode", specification=ISO_19115) 51 public final class MediumName extends CodeList<MediumName> { 52 /** 53 * Serial number for compatibility with different versions. 54 */ 55 private static final long serialVersionUID = 2634504971646621701L; 56 57 /** 58 * List of all enumerations of this type. 59 * Must be declared before any enum declaration. 60 */ 61 private static final List<MediumName> VALUES = new ArrayList<MediumName>(18); 62 63 /** 64 * Read-only optical disk. 65 */ 66 @UML(identifier="cdRom", obligation=CONDITIONAL, specification=ISO_19115) 67 public static final MediumName CD_ROM = new MediumName("CD_ROM"); 68 69 /** 70 * Digital versatile disk. 71 */ 72 @UML(identifier="dvd", obligation=CONDITIONAL, specification=ISO_19115) 73 public static final MediumName DVD = new MediumName("DVD"); 74 75 /** 76 * Digital versatile disk digital versatile disk, read only. 77 */ 78 @UML(identifier="dvdRom", obligation=CONDITIONAL, specification=ISO_19115) 79 public static final MediumName DVD_ROM = new MediumName("DVD_ROM"); 80 81 /** 82 * 3½ inch magnetic disk. 83 */ 84 @UML(identifier="3halfInchFloppy", obligation=CONDITIONAL, specification=ISO_19115) 85 public static final MediumName FLOPPY_3_HALF_INCH = new MediumName("FLOPPY_3_HALF_INCH"); 86 87 /** 88 * 5¼ inch magnetic disk. 89 */ 90 @UML(identifier="5quarterInchFloppy", obligation=CONDITIONAL, specification=ISO_19115) 91 public static final MediumName FLOPPY_5_QUARTER_INCH = new MediumName("FLOPPY_5_QUARTER_INCH"); 92 93 /** 94 * 7 track magnetic tape. 95 */ 96 @UML(identifier="7trackTape", obligation=CONDITIONAL, specification=ISO_19115) 97 public static final MediumName TAPE_7_TRACK = new MediumName("TAPE_7_TRACK"); 98 99 /** 100 * 9 track magnetic tape. 101 */ 102 @UML(identifier="9trackTape", obligation=CONDITIONAL, specification=ISO_19115) 103 public static final MediumName TAPE_9_TRACK = new MediumName("TAPE_9_TRACK"); 104 105 /** 106 * 3480 cartridge tape drive. 107 */ 108 @UML(identifier="3480Cartridge", obligation=CONDITIONAL, specification=ISO_19115) 109 public static final MediumName CARTRIDGE_3480 = new MediumName("CARTRIDGE_3480"); 110 111 /** 112 * 3490 cartridge tape drive. 113 */ 114 @UML(identifier="3490Cartridge", obligation=CONDITIONAL, specification=ISO_19115) 115 public static final MediumName CARTRIDGE_3490 = new MediumName("CARTRIDGE_3490"); 116 117 /** 118 * 3580 cartridge tape drive. 119 */ 120 @UML(identifier="3580Cartridge", obligation=CONDITIONAL, specification=ISO_19115) 121 public static final MediumName CARTRIDGE_3580 = new MediumName("CARTRIDGE_3580"); 122 123 /** 124 * 4 millimetre magnetic tape. 125 */ 126 @UML(identifier="4mmCartridgeTape", obligation=CONDITIONAL, specification=ISO_19115) 127 public static final MediumName CARTRIDGE_TAPE_4mm = new MediumName("CARTRIDGE_TAPE_4mm"); 128 129 /** 130 * 8 millimetre magnetic tape. 131 */ 132 @UML(identifier="8mmCartridgeTape", obligation=CONDITIONAL, specification=ISO_19115) 133 public static final MediumName CARTRIDGE_TAPE_8mm = new MediumName("CARTRIDGE_TAPE_8mm"); 134 135 /** 136 * ¼ inch magnetic tape. 137 */ 138 @UML(identifier="1quarterInchCartridgeTape", obligation=CONDITIONAL, specification=ISO_19115) 139 public static final MediumName CARTRIDGE_TAPE_1_QUARTER_INCH = new MediumName("CARTRIDGE_TAPE_1_QUARTER_INCH"); 140 141 /** 142 * Half inch cartridge streaming tape drive. 143 */ 144 @UML(identifier="digitalLinearTape", obligation=CONDITIONAL, specification=ISO_19115) 145 public static final MediumName DIGITAL_LINEAR_TAPE = new MediumName("DIGITAL_LINEAR_TAPE"); 146 147 /** 148 * Direct computer linkage. 149 */ 150 @UML(identifier="onLine", obligation=CONDITIONAL, specification=ISO_19115) 151 public static final MediumName ON_LINE = new MediumName("ON_LINE"); 152 153 /** 154 * Linkage through a satellite communication system. 155 */ 156 @UML(identifier="satellite", obligation=CONDITIONAL, specification=ISO_19115) 157 public static final MediumName SATELLITE = new MediumName("SATELLITE"); 158 159 /** 160 * Communication through a telephone network. 161 */ 162 @UML(identifier="telephoneLink", obligation=CONDITIONAL, specification=ISO_19115) 163 public static final MediumName TELEPHONE_LINK = new MediumName("TELEPHONE_LINK"); 164 165 /** 166 * Pamphlet or leaflet giving descriptive information. 167 */ 168 @UML(identifier="hardcopy", obligation=CONDITIONAL, specification=ISO_19115) 169 public static final MediumName HARDCOPY = new MediumName("HARDCOPY"); 170 171 /** 172 * Constructs an enum with the given name. The new enum is 173 * automatically added to the list returned by {@link #values}. 174 * 175 * @param name The enum name. This name must not be in use by an other enum of this type. 176 */ MediumName(final String name)177 private MediumName(final String name) { 178 super(name, VALUES); 179 } 180 181 /** 182 * Returns the list of {@code MediumName}s. 183 * 184 * @return The list of codes declared in the current JVM. 185 */ values()186 public static MediumName[] values() { 187 synchronized (VALUES) { 188 return VALUES.toArray(new MediumName[VALUES.size()]); 189 } 190 } 191 192 /** 193 * Returns the list of enumerations of the same kind than this enum. 194 */ family()195 public MediumName[] family() { 196 return values(); 197 } 198 199 /** 200 * Returns the medium name that matches the given string, or returns a 201 * new one if none match it. 202 * 203 * @param code The name of the code to fetch or to create. 204 * @return A code matching the given name. 205 */ valueOf(String code)206 public static MediumName valueOf(String code) { 207 return valueOf(MediumName.class, code); 208 } 209 } 210