/**
* QueryOrdersController.java
* 2008-11-23
* Administrator
*/
package com.conant.order.web.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.util.StringUtils;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.ModelAndViewDefiningException;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.conant.order.common.PageMsg;
import com.conant.order.dao.OrderDao;
import com.conant.order.util.Logger;
import com.conant.order.util.ProcessException;
import com.conant.order.vo.OrderQuerier;
import com.conant.order.vo.QuerierResult;
import com.conant.order.web.form.OrderStatusEditor;
import com.conant.order.web.form.OrderTypeEditor;
/**
* @author Administrator
*
*/
public class QueryOrdersController extends SimpleFormController
{
private static final Logger log = Logger.getLogger("QueryOrdersController",
Logger.DEBUG, true);
private OrderDao orderDao;
private int pageSize;
private boolean filterAuditedOrders;
public QueryOrdersController()
{
// Initialize controller properties here or
// in the Web Application Context
}
public OrderDao getOrderDao()
{
return orderDao;
}
public void setOrderDao(OrderDao orderDao)
{
this.orderDao = orderDao;
}
public int getPageSize()
{
return pageSize;
}
public void setPageSize(int pageSize)
{
this.pageSize = pageSize;
}
public boolean isFilterAuditedOrders()
{
return filterAuditedOrders;
}
public void setFilterAuditedOrders(boolean filterAuditedOrders)
{
this.filterAuditedOrders = filterAuditedOrders;
}
protected Object formBackingObject(HttpServletRequest request)
throws ModelAndViewDefiningException
{
log.info("QueryOrdersController formBackingObject...");
OrderQuerier querier = new OrderQuerier();
int pageNo = 0;
int orderStatus = 0;
int pageSize = this.pageSize;
// ������������������
if(StringUtils.hasText(request.getParameter("pageNo")))
{
try
{
pageNo = Integer.parseInt(request.getParameter("pageNo"));
}
catch(Exception exp)
{
}
}
querier.setPageNo(pageNo);
if(StringUtils.hasText(request.getParameter("status")))
{
try
{
orderStatus = Integer.parseInt(request.getParameter("status"));
querier.setOrderstatus(orderStatus);
}
catch(Exception exp)
{
}
}
if(StringUtils.hasText(request.getParameter("pageSize")))
{
try
{
pageSize = Integer.parseInt(request.getParameter("pageSize"));
}
catch(Exception exp)
{
}
}
querier.setPageSize(pageSize);
querier.setStartIndex(pageNo * pageSize);
// �����form�ύ��ִ�в�ѯ����
if(!isFormSubmission(request))
{
try
{
// �û���
String user = (String)request.getSession().getAttribute("user_name");
querier.setClientname(user);
// ִ�в�ѯ
orderDao.getOrders(querier);
}
catch(Exception exp)
{
PageMsg pageMsg = new PageMsg();
pageMsg.setTarget("_self");
pageMsg.setMsg(exp.getMessage());
ModelAndView modelAndView = new ModelAndView("common/err", "error",
pageMsg);
throw new ModelAndViewDefiningException(modelAndView);
}
}
return querier;
}
protected Map referenceData(HttpServletRequest request) throws Exception
{
log.info("QueryOrdersController referenceData...");
Map<Object, Object> model = new HashMap<Object, Object>();
List<String> listOrderstatus = new ArrayList<String>();
listOrderstatus.add("--Please Select--");
listOrderstatus.addAll(OrderStatusEditor.getListStatus());
List<String> listOrdertype = new ArrayList<String>();
listOrdertype.add("--Please Select--");
listOrdertype.addAll(OrderTypeEditor.getListType());
model.put("listOrderstatus", listOrderstatus);
model.put("listOrdertype", listOrdertype);
return model;
}
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception
{
log.info("QueryOrdersController initBinder...");
super.initBinder(request, binder);
binder.registerCustomEditor(Integer.class, "orderstatus",
new OrderStatusEditor(true));
binder.registerCustomEditor(Integer.class, "ordertype",
new OrderTypeEditor(true));
// ΪList�����ָ���ֶ�ע��editor
binder.registerCustomEditor(Integer.class, "listOrder.orderstatus",
new OrderStatusEditor(true));
binder.registerCustomEditor(Integer.class, "listOrder.ordertype",
new OrderTypeEditor(true));
}
@Override
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception
{
log.info("QueryOrdersController onSubmit...");
OrderQuerier querier = (OrderQuerier)command;
PageMsg pageMsg = new PageMsg();
pageMsg.setTarget("_self");
pageMsg.setUrl("/queryOrders.ord");
try
{
// �û���
String user = (String)request.getSession().getAttribute("user_name");
querier.setClientname(user);
// ִ�в�ѯ
orderDao.getOrders(querier);
log.info("QueryOrdersController start rendering...");
// ���ֱ�ӷ���ModelAndView������Ҫ�ֶ�����referenceData
// ����showForm���Զ�����
//Map controlModel = errors.getModel();
//controlModel.putAll(referenceData(request));
//return new ModelAndView(this.getSuccessView(), controlModel);
return showForm(request, errors, this.getSuccessView());
}
catch(ProcessException pe)
{
pageMsg.setMsg("Failed to query orders!");
return new ModelAndView("common/err", "error", pageMsg);
}
catch(Exception ex)
{
pageMsg.setMsg(ex.getMessage());
return new ModelAndView("common/err", "error", pageMsg);
}
}
}