/** * <p>Copyright: Copyright (c) 2013</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.usermacro.compiler.handlers; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.engin.constant.IEngineContextConstant; import com.hundsun.ares.studio.engin.macrohandler.IMacroTokenHandler; import com.hundsun.ares.studio.usermacro.UserMacro; import com.hundsun.ares.studio.usermacro.UserMacroItem; import com.hundsun.ares.studio.usermacro.constants.IUserMacroResType; /** * @author zhuyf * */ public class UserMacroTokenService implements IUserMacroTokenService { Map<String, UserMacroItem> macroMap = null; Map<String,IMacroTokenHandler> macroHandlerMap = new HashMap<String,IMacroTokenHandler>(); Map<String, Object[]> fomateMap = new HashMap<String, Object[]>(); IARESProject project; boolean procedure = false; //����ǰ׺ public UserMacroTokenService(IARESProject project ,boolean procedure){ this.project = project; this.procedure = procedure; if(null == macroMap){ macroMap = new HashMap<String, UserMacroItem>(); try { IARESResource[] resources = project.getResources(IUserMacroResType.USER_MACRO); if(null != resources && resources.length > 0){ UserMacro userMacro = resources[0].getInfo(UserMacro.class); for(UserMacroItem item:userMacro.getMacroItems()){ macroMap.put(item.getName(), item); macroHandlerMap.put(item.getName(),new UserMacroHandler(item)); } } } catch (Exception e) { } } } @Override public boolean isUserMacro(String macroName) { return macroMap.containsKey(macroName); } @Override public IMacroTokenHandler getUserMacroHandler(String macroName, Map<Object, Object> context,Map<String, Object> paramsMap) { IMacroTokenHandler handler = macroHandlerMap.get(macroName); if (handler instanceof UserMacroHandler) { ((UserMacroHandler) handler).setParamsMap(paramsMap); } return handler; } @Override public Set<IMacroTokenHandler> getUserMacros() { Set<IMacroTokenHandler> tset = new HashSet<IMacroTokenHandler>(); for(IMacroTokenHandler item:macroHandlerMap.values()){ tset.add(item); } return tset; } @Override public UserMacroItem getUserMacro(String macroName) { return macroMap.get(macroName); } }