package cn.newgxu.bbs.domain.sys.impl; import java.util.HashMap; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import cn.newgxu.bbs.common.util.Util; import cn.newgxu.bbs.domain.sys.Param; import cn.newgxu.jpamodel.ObjectNotFoundException; /** * * @author 红叶狐 * @since 4.0.0 * @version $Revision 1.1$ */ public class ParamManager { private static final Log log = LogFactory.getLog(ParamManager.class); private static final int DATA_TYPE_INTEGER = 1; private static final int DATA_TYPE_STRING = 2; private static final int DATA_TYPE_SPLITE = 3; private static ParamManager instance = new ParamManager(); private ParamManager() { } public static ParamManager getInstance() { return instance; } private static Map<String, Param> cache = new HashMap<String, Param>(); public static Object getParam(String code) throws ObjectNotFoundException { if (log.isDebugEnabled()) { log.debug("get from cache : " + cache.get(code)); } Param param = cache.get(code); if (param == null) { param = Param.getByCode(code); cache.put(code, param); } switch (param.getData_type()) { case DATA_TYPE_INTEGER: return Integer.parseInt(param.getPara_value().toString()); case DATA_TYPE_STRING: return param.getPara_value(); case DATA_TYPE_SPLITE: return (int[]) Util.splitIds(param.getPara_value()); default: return param.getPara_value(); } } public static void reset() { cache = new HashMap<String, Param>(); } }