Source code for /src/java/com/coolshare/springapp/web/BambooAdminEditForm2Controller.java
// =====================================================================//
// Author: Mark Qian <markqian@hotmail.com> //
// WWW: http://www.coolshare.com/ //
// Copyright (c) 2006, Mark Qian //
// //
// You must contact Mark Qian to get a permission of use //
// in case you want to make any use of the codes except viewing it //
// on Mark's site. //
//======================================================================//
package com.coolshare.springapp.web;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Query;
import org.hibernate.Session;
import com.coolshare.springapp.bus.Bamboo;
import com.coolshare.springapp.bus.BambooManager;
import com.coolshare.springapp.bus.Source;
import com.coolshare.springapp.hibernate.HibernateUtil;
import com.coolshare.springapp.bus.Source;
public class BambooAdminEditForm2Controller extends ReflectFormController {
/** Logger for this class and subclasses */
protected final Log logger = LogFactory.getLog(getClass());
private BambooManager bambooManager;
/* (non-Javadoc)
*
* You may notice that the parameter of this method is now a map instead of the Command object.
* This new customized onSubmit expose on the bean level info: the beanMap contains
* business beans instead of fields in original Command object. So you are ready to go -
* modify beans as need here and call the API of next tier without worry about value
* building
*
* @see com.coolshare.springapp.web.ReflectFormController#onSubmit(java.util.Map)
*/
public ModelAndView onSubmit(Map beanMap) throws ServletException {
Bamboo bamboo = (Bamboo) beanMap.get("Bamboo");
Source source = (Source) beanMap.get("Source");
bamboo.setSource(source.getId());
getBambooManager().saveBamboo(bamboo);
getBambooManager().saveSource(source);
return new ModelAndView(new RedirectView(getSuccessView()));
}
/* (non-Javadoc)
*
* This method could be further generalized by making use of "page config" file.
* Page config file contains info about what beans are involved on the page. So
* we can learn what bean we need to prepare for the form from the page config instead
* of hard coded the bean info in this method.
*
* @see org.springframework.web.servlet.mvc.AbstractFormController#formBackingObject(javax.servlet.http.HttpServletRequest)
*/
protected Object formBackingObject(HttpServletRequest request)
throws ServletException {
String id = request.getParameter("id");
BeanMapCommand form = new BeanMapCommand();
Map beanMap = new HashMap();
form.setBeanMap(beanMap);
Bamboo bamboo = null;
Source source = null;
List sources = getBambooManager().getAllSource();
if (id != null) {
try {
bamboo = getBambooManager().getBamboo(id);
source = getBambooManager().getSource("" + bamboo.getSource());
} catch (BambooNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SourceNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
bamboo = new Bamboo();
source = new Source();
}
beanMap.put("Bamboo", new TileController("Bamboo", "Bamboo Data", bamboo));
beanMap.put("Source", new TileController("Source", "Source Data", source));
beanMap.put("Sources", sources);
return form;
}
public BambooManager getBambooManager() {
return bambooManager;
}
public void setBambooManager(BambooManager bambooManager) {
this.bambooManager = bambooManager;
}
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception {
// binder.registerCustomEditor(Source.class, new SourceEditor(false));
}
}