/* * $Id: CaseCodeManager.java,v 1.1.2.1 2007/01/12 19:32:50 idegaweb Exp $ * Created on Oct 19, 2004 * * Copyright (C) 2004 Idega Software hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. */ package com.idega.block.process.business; import java.util.HashMap; import java.util.Map; import com.idega.block.process.data.CaseCode; import com.idega.business.IBOLookup; import com.idega.business.IBOLookupException; import com.idega.idegaweb.IWApplicationContext; /** * * Last modified: $Date: 2007/01/12 19:32:50 $ by $Author: idegaweb $ * * @author <a href="mailto:thomas@idega.com">thomas</a> * @version $Revision: 1.1.2.1 $ */ public class CaseCodeManager { private static CaseCodeManager caseCodeManager = null; private Map caseCodeBusinessMap = null; public static CaseCodeManager getInstance() { if (caseCodeManager == null) { caseCodeManager = new CaseCodeManager(); } return caseCodeManager; } public CaseBusiness getCaseBusinessOrDefault(CaseCode caseCode, IWApplicationContext iwac) throws IBOLookupException { Class businessClass = getBusinessClass(caseCode); if (businessClass == null) { businessClass = CaseBusiness.class; } return getBusiness(businessClass, iwac); } public CaseBusiness getCaseBusiness(CaseCode caseCode, IWApplicationContext iwac) throws IBOLookupException { Class businessClass = getBusinessClass(caseCode); if (businessClass == null) { throw new IBOLookupException("[CaseCodeManager]: An entry for case code "+ caseCode.getCode() +" could not be found"); } return getBusiness(businessClass, iwac); } public void addCaseBusinessForCode(CaseCode caseCode, Class caseBusiness) { addCaseBusinessForCode(caseCode.getCode(), caseBusiness); } public void addCaseBusinessForCode(String code, Class caseBusiness) { getCaseCodeBusinessMap().put(code, caseBusiness); } private CaseBusiness getBusiness(Class serviceClass, IWApplicationContext iwac) throws IBOLookupException { return (CaseBusiness) IBOLookup.getServiceInstance(iwac, serviceClass); } private Class getBusinessClass(CaseCode caseCode) { String code = caseCode.getCode(); return (Class) getCaseCodeBusinessMap().get(code); } private Map getCaseCodeBusinessMap() { if (this.caseCodeBusinessMap == null) { this.caseCodeBusinessMap = new HashMap(); } return this.caseCodeBusinessMap; } }