/*
* Provided by CSTI Consulting
* Following GNU LESSER GENERAL PUBLIC LICENSE
* You may obtain more details at
*
* http://www.csticonsulting.com
* Copyright (c) 2006-2010 Consultation CS-TI inc.
*
* 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 com.salesmanager.central.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Manage the cache
*
* @author Carl Samson
*
*/
public class CacheFactory {
private static CacheFactory cachefactory = null;
private static Map cachesm = Collections.synchronizedMap(new HashMap());
private CacheFactory() {
}
public static CacheFactory getInstance() {
if (cachefactory == null) {
cachefactory = new CacheFactory();
}
return cachefactory;
}
/**
* Create a synchronized HashMap for caching
*
* @param name
* @return
* @throws Exception
*/
public Map createCacheMap(String name) {
if (cachesm.containsKey(name)) {
// throw new Exception("Cache name " + name + " already exist");
return (Map) cachesm.get(name);
}
Map newcache = Collections.synchronizedMap(new HashMap());
cachesm.put(name, newcache);
return newcache;
}
/**
* Create a synchronized List for caching
*
* @param name
* @return
* @throws Exception
*/
public List createCacheList(String name) {
if (cachesm.containsKey(name)) {
// throw new Exception("Cache name " + name + " already exist");
return (List) cachesm.get(name);
}
List newcache = Collections.synchronizedList(new ArrayList());
cachesm.put(name, newcache);
return newcache;
}
public Map getCacheMap(String name) {
Map returnmap = (Map) cachesm.get(name);
return returnmap;
}
public List getCacheList(String name) {
List returnlist = (List) cachesm.get(name);
return returnlist;
}
public boolean containsCache(String name) {
return cachesm.containsKey(name);
}
public void removeCache(String name) {
cachesm.remove(name);
}
}