/* * Copyright (C) 2010 Teleal GmbH, Switzerland * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.teleal.cling.support.model; import org.teleal.cling.model.ModelUtil; import java.util.HashMap; import java.util.Map; /** * @author Christian Bauer */ public enum StorageMedium { UNKNOWN, DV, MINI_DV("MINI-DV"), VHS, W_VHS("W-VHS"), S_VHS("S-VHS"), D_VHS("D-VHS"), VHSC, VIDEO8, HI8, CD_ROM("CD-ROM"), CD_DA("CD-DA"), CD_R("CD-R"), CD_RW("CD-RW"), VIDEO_CD("VIDEO-CD"), SACD, MD_AUDIO("M-AUDIO"), MD_PICTURE("MD-PICTURE"), DVD_ROM("DVD-ROM"), DVD_VIDEO("DVD-VIDEO"), DVD_R("DVD-R"), DVD_PLUS_RW("DVD+RW"), DVD_MINUS_RW("DVD-RW"), DVD_RAM("DVD-RAM"), DVD_AUDIO("DVD-AUDIO"), DAT, LD, HDD, MICRO_MV("MICRO_MV"), NETWORK, NONE, NOT_IMPLEMENTED, VENDOR_SPECIFIC; private static Map<String, StorageMedium> byProtocolString = new HashMap<String, StorageMedium>() {{ for (StorageMedium e : StorageMedium.values()) { put(e.protocolString, e); } }}; private String protocolString; StorageMedium() { this(null); } StorageMedium(String protocolString) { this.protocolString = protocolString == null ? this.name() : protocolString; } @Override public String toString() { return protocolString; } public static StorageMedium valueOrExceptionOf(String s) { StorageMedium sm = byProtocolString.get(s); if (sm != null) return sm; throw new IllegalArgumentException("Invalid storage medium string: " + s); } public static StorageMedium valueOrVendorSpecificOf(String s) { StorageMedium sm = byProtocolString.get(s); return sm != null ? sm : StorageMedium.VENDOR_SPECIFIC; } public static StorageMedium[] valueOfCommaSeparatedList(String s) { String[] strings = ModelUtil.fromCommaSeparatedList(s); if (strings == null) return new StorageMedium[0]; StorageMedium[] result = new StorageMedium[strings.length]; for (int i = 0; i < strings.length; i++) { result[i] = valueOrVendorSpecificOf(strings[i]); } return result; } }