package jdepend.client.core.command; import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; import jdepend.client.core.config.CommandConf; import jdepend.client.core.config.CommandConfException; import jdepend.client.core.config.CommandConfMgr; import jdepend.client.core.config.GroupConf; import jdepend.client.core.config.GroupConfChangeListener; /** * 命令管理器 * * 管理CommandAdapter集合 * * @author <b>Abner</b> * */ public final class CommandAdapterMgr implements GroupConfChangeListener { private static CommandAdapterMgr mgr; // 命名 group label adapter private Map<String, LinkedHashMap<String, CommandAdapter>> commands = new LinkedHashMap<String, LinkedHashMap<String, CommandAdapter>>(); private CommandAdapterMgr() throws CommandConfException { this.refresh(); } public void refresh() throws CommandConfException { CommandAdapter adapter; LinkedHashMap<String, CommandAdapter> commandAdapters; commands = new LinkedHashMap<String, LinkedHashMap<String, CommandAdapter>>(); for (GroupConf group : CommandConfMgr.getInstance().getGroups()) { Collection<CommandConf> commandInfos = group.getCommands(); for (CommandConf info : commandInfos) { try { // 构建adapter adapter = new CommandAdapter(info); // 缓存adapter commandAdapters = commands.get(info.group); if (commandAdapters == null) { commandAdapters = new LinkedHashMap<String, CommandAdapter>(); commands.put(info.group, commandAdapters); } commandAdapters.put(adapter.getLabel(), adapter); } catch (Exception e) { e.printStackTrace(); continue; } } } } public CommandAdapter getTheCommandAdapter(String group, String command) { return this.commands.get(group).get(command); } public static CommandAdapterMgr getInstance() throws CommandConfException { if (mgr == null) { mgr = new CommandAdapterMgr(); } return mgr; } public Map<String, CommandAdapter> getCommands(String group) { return commands.get(group); } @Override public void onCreate(String group) throws CommandConfException { } @Override public void onDelete(String group) throws CommandConfException { } @Override public void onUpdate(String group) throws CommandConfException { } @Override public void onRefresh() throws CommandConfException { this.refresh(); } }