package net.codjo.dataprocess.server.handler; import net.codjo.dataprocess.common.table.annotations.HandlerCommand; import net.codjo.dataprocess.common.table.annotations.QueryFactory; import net.codjo.dataprocess.common.table.model.TableModel; import net.codjo.dataprocess.server.handler.handlerfactory.DeleteHandlerFactory; import net.codjo.dataprocess.server.handler.handlerfactory.HandlerCommandFactory; import net.codjo.dataprocess.server.handler.handlerfactory.HandlerFactory; import net.codjo.dataprocess.server.handler.handlerfactory.InsertHandlerFactory; import net.codjo.dataprocess.server.handler.handlerfactory.QueryHandlerFactory; import net.codjo.dataprocess.server.handler.handlerfactory.SelectAllHandlerFactory; import net.codjo.dataprocess.server.handler.handlerfactory.SelectByPkHandlerFactory; import net.codjo.dataprocess.server.handler.handlerfactory.SelectRequetorHandlerFactory; import net.codjo.dataprocess.server.handler.handlerfactory.UpdateHandlerFactory; import java.lang.reflect.Method; import java.util.Map; import org.picocontainer.MutablePicoContainer; /** * */ public class TableClassProcessor implements ClassProcessor { private MutablePicoContainer container; private Class clazz; private Map<String, HandlerFactory> map; public TableClassProcessor(MutablePicoContainer container, Class clazz, Map<String, HandlerFactory> map) { this.container = container; this.clazz = clazz; this.map = map; } public void process() { TableModel table = new TableModel(clazz); addHandlerFactory(new SelectAllHandlerFactory(container, table)); addHandlerFactory(new SelectByPkHandlerFactory(container, table)); addHandlerFactory(new InsertHandlerFactory(container, table)); addHandlerFactory(new UpdateHandlerFactory(container, table)); addHandlerFactory(new DeleteHandlerFactory(container, table)); addHandlerFactory(new SelectRequetorHandlerFactory(container, table)); for (Method method : clazz.getDeclaredMethods()) { HandlerFactory handlerFactory = null; if (method.isAnnotationPresent(HandlerCommand.class)) { handlerFactory = new HandlerCommandFactory(container, clazz, method, table); } else if (method.isAnnotationPresent(QueryFactory.class)) { handlerFactory = new QueryHandlerFactory(container, clazz, method, table); } if (handlerFactory != null) { addHandlerFactory(handlerFactory); } } } private void addHandlerFactory(HandlerFactory handlerFactory) { map.put(handlerFactory.getHandlerId(), handlerFactory); } }