1 20 package org.enhydra.barracuda.contrib.sam.data; 21 22 import java.io.*; 23 import javax.servlet.http.*; 24 import org.enhydra.barracuda.core.event.*; 25 import org.enhydra.barracuda.core.forms.*; 26 import org.enhydra.barracuda.contrib.sam.xmlform.*; 27 import org.enhydra.barracuda.contrib.sam.models.*; 28 import org.apache.log4j.*; 29 30 34 public abstract class DataObjectHandler extends DefaultBaseEventListener implements GetConfig { 35 36 protected static Logger logger = Logger.getLogger(DataObjectHandler.class.getName()); 37 38 public abstract Config getConfig(); 39 protected Config config; 40 41 48 public void handleControlEvent(ControlEventContext context) throws EventException, javax.servlet.ServletException , java.io.IOException { 49 BaseEvent event = context.getEvent(); 50 HttpServletRequest request = context.getRequest(); 51 HttpSession session = request.getSession(); 52 53 config = getConfig(); 54 55 if (logger.isDebugEnabled()) logger.debug("handling controlEvent " + event.getClass().getName()); 56 DataObject dataObj = null; 57 try { 58 dataObj = config.getDataObject(request.getParameter(config.getOidName())); 59 } catch (DataObjectException ex) { 60 logger.error(ex.getMessage() ); 61 } 62 63 controlEventHookBeforeXmlFormMap(context, dataObj); 64 65 XmlFormMap xfm = new XmlFormMap(context, config.getXmlFormName(), config.getFormName(), dataObj); 66 context.putState(config.getMapName(), xfm); 67 if (logger.isDebugEnabled()) logger.debug("putting session attribute " + config.getMapName() + " value: " + xfm); 68 69 if (config.getFormName().equals(request.getParameter("visited"))) { 70 try { 71 logger.debug("Mapping form"); 72 xfm.map(request).validate(true); 73 } catch (ValidationException ex) { 74 ErrorModel.create(context, ex); 75 logger.error(ex.getMessage(), ex); 76 throw new InterruptDispatchException(config.getViewEvent()); 77 } 78 } 79 controlEventHookAfterXmlFormMap(context, dataObj); 80 81 ViewEvent renderEvent = config.getViewEvent(); 82 if (logger.isDebugEnabled()) logger.debug("putting " + renderEvent.getClass().getName() + " to event queue"); 83 event.setHandled(true); 84 context.getQueue().addEvent(renderEvent); 85 } 86 87 88 protected void controlEventHookBeforeXmlFormMap(ControlEventContext context, DataObject dataObj) { 89 } 90 91 92 protected void controlEventHookAfterXmlFormMap(ControlEventContext context, DataObject dataObj) { 93 } 94 } 95 | Popular Tags |