//* Licensed Materials - Property of * //* IBM * //* * //* eu.abc4trust.pabce.1.34 * //* * //* (C) Copyright IBM Corp. 2014. All Rights Reserved. * //* US Government Users Restricted Rights - Use, duplication or * //* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. * //* * //* This file is licensed under the Apache License, Version 2.0 (the * //* "License"); you may not use this file except in compliance with * //* the License. You may obtain a copy of the License at: * //* http://www.apache.org/licenses/LICENSE-2.0 * //* Unless required by applicable law or agreed to in writing, * //* software distributed under the License is distributed on an * //* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * //* KIND, either express or implied. See the License for the * //* specific language governing permissions and limitations * //* under the License. * //*/**/**************************************************************** package eu.abc4trust.util.attributeTypes; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import eu.abc4trust.xml.AttributeDescription; public class EnumAllowedValues { private final List<String> allowedValues; private final Map<String, Integer> positions; public EnumAllowedValues() { allowedValues = new ArrayList<String>(); positions = new HashMap<String, Integer>(); } public EnumAllowedValues(AttributeDescription desc) { this(); if(desc.getAllowedValue() != null) { for(Object o: desc.getAllowedValue()) { addAllowedValue(o.toString()); } } } public EnumAllowedValues(List<String> allowedValues) { this(); for(String s: allowedValues) { addAllowedValue(s); } } public void addAllowedValue(String value) { if(positions.containsKey(value)) { throw new RuntimeException("Duplicate enum value"); } positions.put(value, allowedValues.size()); allowedValues.add(value); } public boolean isAllowedValue(String value) { return positions.containsKey(value); } public int getPosition(String value) { return positions.get(value); } public List<String> getAllowedValues() { return Collections.unmodifiableList(allowedValues); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((allowedValues == null) ? 0 : allowedValues.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; EnumAllowedValues other = (EnumAllowedValues) obj; if (allowedValues == null) { if (other.allowedValues != null) return false; } else if (!allowedValues.equals(other.allowedValues)) return false; return true; } }