/** * Copyright 2006 by Know-Center, Graz, Austria * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a * joint initiative of the Federal Chancellery Austria and Graz University of * Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.knowcenter.wag.egov.egiz.ldap.client; import iaik.asn1.structures.Name; import iaik.utils.RFC2253NameParser; import iaik.utils.RFC2253NameParserException; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import org.apache.log4j.Logger; /** * @author Thomas Knall */ public class LDAPMappingStore { // private Hashtable storedMappings; private Hashtable storedMappings; private LDAPIssuerNameFilter issuerNameFilter; private Logger log = Logger.getLogger(getClass()); public LDAPMappingStore(LDAPIssuerNameFilter issuerNameFilter) { this.storedMappings = new Hashtable(); this.issuerNameFilter = issuerNameFilter; } public LDAPMappingStore() { this(null); } public void clearStore() { this.storedMappings = new Hashtable(); } public boolean isEmpty() { return this.storedMappings.isEmpty(); } public boolean isLDAPIssuerNameFilter() { return this.issuerNameFilter != null; } public void addMapping(LDAPMapping mapping) { Name name = mapping.getIssuerName(); if (issuerNameFilter != null) { name = this.issuerNameFilter.applyFilter(name); } List mappingList = (List) this.storedMappings.get(name); if (mappingList == null) { mappingList = new ArrayList(); this.storedMappings.put(name, mappingList); } log.debug("Adding mapping \"" + mapping + "\" for \"" + name.getName() + "\"."); mappingList.add(mapping); } public List getMappings(Name name) { if (issuerNameFilter != null) { name = this.issuerNameFilter.applyFilter(name); } return (List) this.storedMappings.get(name); } public List getMappings(String nameString) throws LDAPException { RFC2253NameParser parser = new RFC2253NameParser(nameString); Name name; try { name = parser.parse(); } catch (RFC2253NameParserException e) { throw new LDAPException(e); } if (issuerNameFilter != null) { name = this.issuerNameFilter.applyFilter(name); } return this.getMappings(name); } }