/* * Copyright (c) 2005-2011 Grameen Foundation USA * All rights reserved. * * 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. * * See also http://www.apache.org/licenses/LICENSE-2.0.html for an * explanation of the license and how it is applied. */ package org.mifos.config.business; import java.util.Hashtable; import java.util.Map; import org.mifos.config.cache.CacheRepository; import org.mifos.config.util.helpers.ConfigurationInitializer; /** * This class is a remnant of per-office configuration, which <a * href="http://article.gmane.org/gmane.comp.finance.mifos.devel/3498">is * deprecated and may be removed</a> (-Adam 22-JAN-2008). */ public class Configuration { /** * It is the map of instances of OfficeConfig stored based on officeid. It * is cache of OfficeConfig instances */ private Map<Short, OfficeConfig> officeConfigMap; private SystemConfiguration systemConfig; private static CacheRepository cacheRepo; private static Configuration config; public synchronized static Configuration getInstance() { if (config == null) { config = new Configuration(); config.initialize(); } return config; } private void initialize() { synchronized (cacheRepo) { new ConfigurationInitializer().initialize(); initializeSystemConfiguration(); } } // TODO:Currently offset is being passed for TimeZone. It should be changed // to Timezone value picked from database private void initializeSystemConfiguration() { systemConfig = cacheRepo.getSystemConfiguration(); } private Configuration() { cacheRepo = CacheRepository.getInstance(); officeConfigMap = new Hashtable<Short, OfficeConfig>(); } /** * This method will return instance of OfficeConfig based on officeId. If * OfficeConfig instance is available in cache it will return the same, * otherwise it will create and retuen a new instance and store that into * cache also. */ public OfficeConfig getOfficeConfig(Short officeId) { if (officeConfigMap.containsKey(officeId)) { return officeConfigMap.get(officeId); } OfficeConfig officeConfig = new OfficeConfig(cacheRepo, officeId); officeConfigMap.put(officeId, officeConfig); return officeConfig; } public SystemConfiguration getSystemConfig() { return systemConfig; } public AccountConfig getAccountConfig(Short officeId) { return getOfficeConfig(officeId).getAccountConfig(); } /** * For injecting mock configuration instance * @param config */ public static void setConfig(Configuration config) { Configuration.config = config; } }