/* Name: - Enum Description: - Requires: - Provides: - Part of: ProcessPuzzle Framework, Domain and Business Model Ready Architecture. Provides content, workflow and social networking functionality. http://www.processpuzzle.com ProcessPuzzle - Content and Workflow Management Integration Business Platform Author(s): - Zsolt Zsuffa Copyright: (C) 2011 This program is free software: you can redistribute it and/or modify it under the terms of the GNU 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.processpuzzle.persistence.domain; import java.io.ObjectStreamException; import java.io.Serializable; import java.util.HashMap; import java.util.Map; public abstract class Enum implements Serializable { protected static Map<String, Enum> nameMap = new HashMap<String, Enum>(15); protected static Map<Integer, Enum> valueMap = new HashMap<Integer, Enum>(15); protected int value; protected transient String name; protected Enum(String name, int value) { this.value = value; this.name = name; add(); } protected void add() { nameMap.put(this.name, this); valueMap.put(new Integer(this.value), this); } public static Enum get(String name) { return nameMap.get(name); } public static Enum get(int value) { return valueMap.get(new Integer(value)); } public int getValue() { return value; } public String getName() { return name; } protected Object readResolve() throws ObjectStreamException { return get(this.value); } }