package net.codjo.dataprocess.server.handler; import net.codjo.dataprocess.common.table.annotations.Table; import net.codjo.dataprocess.server.handler.handlerfactory.HandlerFactory; import net.codjo.mad.server.handler.Handler; import net.codjo.mad.server.handler.HandlerMap; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.picocontainer.MutablePicoContainer; /** * */ class DataProcessHandlerMap implements HandlerMap { private HandlerMap handlerMap; private Map<String, HandlerFactory> handlerFactoryMap = new HashMap<String, HandlerFactory>(); DataProcessHandlerMap(MutablePicoContainer container, HandlerMap handlerMap, Class[] classes) { this.handlerMap = handlerMap; processClass(container, classes); } private void processClass(MutablePicoContainer picoContainer, Class[] classes) { for (Class aClass : classes) { ClassProcessor classProcessor = null; if (aClass.isAnnotationPresent(net.codjo.dataprocess.common.table.annotations.Handler.class)) { classProcessor = new HandlerCommandClassProcessor(picoContainer, aClass, handlerFactoryMap); } if (aClass.isAnnotationPresent(Table.class)) { classProcessor = new TableClassProcessor(picoContainer, aClass, handlerFactoryMap); } if (classProcessor != null) { classProcessor.process(); } } } public Handler getHandler(String handlerId) { if (handlerFactoryMap.containsKey(handlerId)) { HandlerFactory hf = handlerFactoryMap.get(handlerId); return hf.getHandler(); } return handlerMap.getHandler(handlerId); } public Set<String> getHandlerIdSet() { Set<String> handlerIdSet = new HashSet<String>(handlerMap.getHandlerIdSet()); handlerIdSet.addAll(handlerFactoryMap.keySet()); return handlerIdSet; } }