1 20 package org.enhydra.barracuda.contrib.sam.data; 21 22 import java.util.*; 23 import javax.servlet.http.*; 24 25 import org.enhydra.barracuda.core.event.*; 26 import org.enhydra.barracuda.core.forms.*; 27 import org.enhydra.barracuda.contrib.sam.xmlform.*; 28 import org.enhydra.barracuda.contrib.sam.models.*; 29 import org.apache.log4j.*; 30 31 public abstract class DataObjectSaveHandler extends DefaultBaseEventListener implements GetConfig { 32 33 protected static Logger logger = Logger.getLogger(DataObjectSaveHandler.class.getName()); 34 35 public abstract Config getConfig(); 36 37 protected Config config; 38 protected XmlFormMap xfm; 39 protected DataObject dataObj; 40 41 public void handleControlEvent(ControlEventContext context) throws EventException, javax.servlet.ServletException , java.io.IOException { 42 BaseEvent event = context.getEvent(); 43 HttpServletRequest request = context.getRequest(); 44 HttpSession session = request.getSession(); 45 46 config = getConfig(); 47 48 if (ErrorModel.exists(context)) return; 49 logger.info("Saving User"); 50 xfm = (XmlFormMap) context.getState(config.getMapName()); 51 String oid = xfm.getStringVal(config.getOidName()); 52 logger.info("oid is " + oid); 53 try { 54 dataObj = config.getDataObject(oid); 56 Map elements = xfm.getElements(); 57 Iterator iter = elements.entrySet().iterator(); 58 while (iter.hasNext()) { 59 Map.Entry e = (Map.Entry)iter.next(); 60 String key = (String )e.getKey(); 61 if (logger.isDebugEnabled()) logger.debug("key " + key); 62 FormElement fe = (FormElement)e.getValue(); 63 Object oldData = fe.getVal(); 64 Object newData = modifyFormData(key, oldData); 65 logger.debug("old: " + oldData + " new: " + newData); 66 dataObj.set(key, newData); 67 } 68 dataObj.save(null); 69 logger.debug("oldoid is " + oid); 70 String newoid = (String )dataObj.get(config.getOidName()); 71 logger.debug("newoid is " + oid); 72 73 74 80 } catch (DataObjectException ex) { 81 ErrorModel.create(context, ex); 82 logger.error(ex.getMessage(),ex); 83 } 84 } 85 86 89 protected Object modifyFormData(String key, Object value) { 90 return value; 91 } 92 } 93 | Popular Tags |