/** * <p>Copyright: Copyright (c) 2009</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.internal.core; import java.lang.ref.SoftReference; import java.util.HashMap; import java.util.Map; import com.hundsun.ares.studio.core.IARESElement; /** * ���档 * @author sundl */ public class ARESModelCache { private Map<IARESElement, SoftReference<Object> > openableCache; private Map<IARESElement, SoftReference<Object>> resCache; public ARESModelCache() { openableCache = new HashMap<IARESElement, SoftReference<Object>>(); resCache = new HashMap<IARESElement, SoftReference<Object>>(3000 * 5); } public void putInfo(IARESElement element, Object info) { if (element == null) return; switch (element.getElementType()) { case IARESElement.ARES_RESOURCE: resCache.put(element, new SoftReference<Object>(info)); break; default: openableCache.put(element, new SoftReference<Object>(info)); } } public void removeInfo(IARESElement element) { if (element == null) return; switch (element.getElementType()) { case IARESElement.ARES_RESOURCE: resCache.remove(element); break; default: openableCache.remove(element); } } public Object getInfo(IARESElement element) { if (element == null) return null; SoftReference<Object> ref = null; switch (element.getElementType()) { case IARESElement.ARES_RESOURCE: ref = resCache.get(element); break; default: ref = openableCache.get(element); } if (ref == null) { return null; } else { return ref.get(); } } }