roaddefectformcontroller.java

来自「Java的框架」· Java 代码 · 共 274 行

JAVA
274
字号
package mcaps.apps.prrm.roaddefect.webapp.controller;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import mcaps.apps.prrm.roaddefect.model.Contact;
import mcaps.apps.prrm.roaddefect.model.Road;
import mcaps.apps.prrm.roaddefect.model.RoadDefect;
import mcaps.apps.prrm.roaddefect.model.RoadDefectSeverity;
import mcaps.apps.prrm.roaddefect.model.RoadDefectStatus;
import mcaps.apps.prrm.roaddefect.model.RoadDefectType;
import mcaps.apps.prrm.roaddefect.service.RoadDefectManager;
import mcaps.apps.prrm.roaddefect.service.RoadManager;
import mcaps.apps.prrm.task.model.Task;
import mcaps.apps.prrm.task.service.TaskManager;
import mcap.core.base.webapp.controller.BaseFormController;
import mcap.core.logging.Log;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.validation.BindException;
import org.springframework.web.bind.RequestUtils;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;

/**
 * Implementation of BaseFormController that interacts with the 
 * RoadDefectManager to handle request to retrieve/persist road defect
 * info to data store.
 * 
 * @author jov
 * @date 05-Sep-2005
 * @version 1.0.1.0
 */
public class RoadDefectFormController extends BaseFormController {

	private final static String className="mcaps.apps.prrm.roaddefect.webapp.controller.RoadDefectFormController";
	private static final String EDIT_URL = "roadDefectForm.action?method=edit&roadDefectId=";
	private static final String VIEW_URL ="roadDefect.action?roadDefectId=";
	private RoadDefectManager roadDefectManager;
	private TaskManager taskManager;
	private RoadManager roadManager;

	/**
	 * Returns the roadDefectManager.
	 * @return RoadDefectManager
	 */
	public RoadDefectManager getRoadDefectManager () {
		return roadDefectManager;
	}

	
	/**
	 * Sets the roadDefectManager.
	 * @param roadDefectManager The roadDefectManager to set.
	 */
	public void setRoadDefectManager (RoadDefectManager roadDefectManager) {
		this.roadDefectManager = roadDefectManager;
	}
	
	
	/**
	 * Returns the taskManager.
	 * @return TaskManager
	 */
	public TaskManager getTaskManager () {
		return taskManager;
	}

	
	/**
	 * Sets the taskManager.
	 * @param taskManager The taskManager to set.
	 */
	public void setTaskManager (TaskManager taskManager) {
		this.taskManager = taskManager;
	}


//===========================================================================================================
	
	/* (non-Javadoc)
	 * @see org.springframework.web.servlet.mvc.AbstractFormController#processFormSubmission(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
	 * Checks for an action that should be executed without respect to binding errors, like a cancel action.
	 */
	public ModelAndView processFormSubmission (HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {
		if (request.getParameter ("cancel") != null) {
			return new ModelAndView (getCancelView ());
		}
		
	/*	RoadDefect roadDefect = (RoadDefect) command;
		Log.info(className + " processFormSubmission roadid=" + request.getParameter("road_id"));
		Integer roadid= new Integer (request.getParameter("road_id"));
		
		Road road=roadManager.getRoad(roadid);
		 roadDefect.setRoad(road);
		 
		Log.info(className+ " roadid=" + request.getParameter("coordinates"));
		
		
		*/
		return super.processFormSubmission (request, response, command, errors);
	}

	
	protected void onBind(HttpServletRequest request, Object command, BindException errors) throws Exception {
		// TODO Auto-generated method stub
		
		RoadDefect roadDefect=(RoadDefect)command;
		String roadId = request.getParameter("road_id");
		if (roadId != null && roadId.length() > 0){
		 Road road=roadManager.getRoad(new Integer (roadId));
		 Log.info(className + " onSubmit() getRoad()" + road.getId());
		 roadDefect.setRoad(road);
		}
		super.onBind(request, command, errors);
	}


	/* (non-Javadoc)
	 * @see org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
	 * Next to be called if processFormSubmission method called the
	 * super.processFormSubmission
	 */
	public ModelAndView onSubmit (HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {
		
		Locale locale = request.getLocale();
    RoadDefect roadDefect = (RoadDefect) command;
    
		if (request.getParameter ("delete") != null) {
			this.getRoadDefectManager().removeRoadDefect(roadDefect);
			saveMessage (request, getText ("roadDefect.deleted", roadDefect.getId().toString(),
										locale));
			return new ModelAndView (getSuccessView ());
		}
		else {			

	 Log.info(className + " onSubmit() Before saveRoadDefect()");
     


	 
	 
	 
	 
	 this.getRoadDefectManager().saveRoadDefect(roadDefect);
      
      Log.info(className + " onSubmit() after saveRoadDefect()");
      
      saveMessage (request, getText ("roadDefect.saved", roadDefect.getId().toString(),
							locale));
		      
  		return new ModelAndView (new RedirectView (VIEW_URL + roadDefect.getId()));
		}
	}

	
	/* (non-Javadoc)
	 * @see org.springframework.web.servlet.mvc.AbstractFormController#showForm(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.springframework.validation.BindException)
	 * Calling in case of validation errors, to show the form view again.
	 */
	protected ModelAndView showForm (HttpServletRequest request,
			HttpServletResponse response, BindException errors) throws Exception {

		// prevent ordinary users from calling a GET on roadDefectForm.html
		// unless a bind error exists.
		if ((request.getRequestURI ().indexOf ("roadDefectForm") > -1)
				&& (!request.isUserInRole (mcap.core.user.util.NameConstants.ADMIN_ROLE)
						&& (errors.getErrorCount () == 0) && 
				(request.getRemoteUser () != null))) { 
			response.sendError (HttpServletResponse.SC_FORBIDDEN);
			return null;
		}
		return super.showForm (request, response, errors);
	}

	
	/*
	
	protected void onBind(HttpServletRequest request, Object command, BindException arg2) throws Exception {
		
		RoadDefect roadDefect = (RoadDefect) command;
		Log.info(className + " processFormSubmission roadid=" + request.getParameter("road_id"));
		Integer roadid= new Integer (request.getParameter("road_id"));
		
		Road road=roadManager.getRoad(roadid);
		 roadDefect.setRoad(road);
		 
		Log.info(className+ " roadid=" + request.getParameter("coordinates"));
		
		
		
		// TODO Auto-generated method stub
		super.onBind(request, command, arg2);
	}*/


	/* (non-Javadoc)
	 * @see org.springframework.web.servlet.mvc.AbstractFormController#formBackingObject(javax.servlet.http.HttpServletRequest)
	 * Retrieve a backing object for the current form from the given request.
	 */
	protected Object formBackingObject (HttpServletRequest request)
			throws Exception {
		RoadDefect roadDefect = null;
		if (StringUtils.equals (request.getParameter ("method"), "add")) {
			roadDefect = new RoadDefect();
			roadDefect.setContact(new Contact());
			roadDefect.setRoad(new Road());
		}else{	
			roadDefect = roadDefectManager.getRoadDefect(RequestUtils.getIntParameter(request, "roadDefectId"));
			Task task = new Task();
			task.setRoadDefectId(roadDefect.getId());
			request.setAttribute(mcaps.apps.prrm.task.util.NameConstants.TASK_LIST,taskManager.getTasks(task));
//			Road road = roadManager.getRoad(roadDefect.getRoadName());
//			request.setAttribute(NameConstants.ROAD_BBOX,road.getBbox());
		}		
		return roadDefect;
	}
	
	/* (non-Javadoc)
	 * @see org.springframework.web.servlet.mvc.BaseCommandController#initBinder(javax.servlet.http.HttpServletRequest, org.springframework.web.bind.ServletRequestDataBinder)
	 * Set up a custom property editor for converting form inputs to real objects
	 */
	protected void initBinder (HttpServletRequest request,
			ServletRequestDataBinder binder) {
		// super.initBinder(request,binder);
//		binder.registerCustomEditor (RoadDefectType.class,
//				new RoadDefectTypeSupport ());
//		binder.registerCustomEditor (RoadDefectSeverity.class,
//				new RoadDefectSeveritySupport ());
//		binder.registerCustomEditor (RoadDefectStatus.class,
//				new RoadDefectStatusSupport ());
		SimpleDateFormat dateFormat = new SimpleDateFormat (getText ("date.format",
				request.getLocale ()));
		dateFormat.setLenient (false);
		binder.registerCustomEditor (Date.class, null, new CustomDateEditor (
					dateFormat, true));
	}
	
	/* (non-Javadoc)
	 * @see org.springframework.web.servlet.mvc.SimpleFormController#referenceData(javax.servlet.http.HttpServletRequest)
	 * Create a reference data map for the given request and command, consisting of bean name/bean instance pairs as expected by ModelAndView
	 */
	protected Map referenceData(HttpServletRequest request) throws Exception {
		Map refMap = new HashMap();
		refMap.put("roaddefecttypelist", RoadDefectType.list);
		refMap.put("roaddefectseveritylist", RoadDefectSeverity.list);
		refMap.put("roaddefectstatuslist", RoadDefectStatus.list);
		return refMap;
	}


	public RoadManager getRoadManager() {
		return roadManager;
	}


	public void setRoadManager(RoadManager roadManager) {
		this.roadManager = roadManager;
	}
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?