foldermultiactioncontroller.java

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

JAVA
185
字号
package mcaps.core.docman.webapp.controller;

import java.net.URLEncoder;
import java.util.Locale;

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

import mcaps.core.docman.util.DocManUtil;
import mcaps.core.docman.util.NameConstants;
import mcap.core.base.webapp.controller.BaseMultiActionController;
import mcap.core.docman.model.FolderObject;
import mcap.core.docman.service.DocAccessException;
import mcap.core.docman.service.DocExistsException;
import mcap.core.docman.service.DocManManager;
import mcap.core.docman.service.DocPathNotFoundException;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContextException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;

/**
 * This class handle multiple request pertaining to
 * a folder object.
 *
 * @author Chan Chin Wei
 * @date Apr 20, 2006
 * @version 1.0.1.0
 */
public class FolderMultiActionController extends BaseMultiActionController implements InitializingBean {

	private static final String FOLDER_VIEW = "core/docMan/folder";
	private static final String DEST_VIEW = "core/docMan/destSelection";
	
	private DocManManager docManager;

	public DocManManager getDocManager() {
		return docManager;
	}

	public void setDocManager(DocManManager docManager) {
		this.docManager = docManager;
	}

//	===========================================================================================================
//	 INITIALIZING BEAN IMPLEMENTATION
//	===========================================================================================================


	/* (non-Javadoc)
	 * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
	 * Invoked by a BeanFactory after it has set all bean properties supplied. This allows 
	 * the bean instance to perform initialization only possible when all bean properties 
	 * have been set and to throw an exception in the event of misconfiguration. 
	 */
	public void afterPropertiesSet() throws Exception {
		if (docManager == null)
			throw new ApplicationContextException ("Must set docManager bean property on " + getClass());
		
	}

//	===========================================================================================================
//	 HANDLERS
//	===========================================================================================================

	/**
	 * Custom handler for folder display
	 * 
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @return a ModelAndView to render the response
	 */
	public ModelAndView folderHandler(HttpServletRequest request,
			HttpServletResponse response) throws ServletException {
		String path = request.getParameter ("path");
		FolderObject folder = null;
		try {
			folder = docManager.getFolder(path, false);
		} catch (DocAccessException e) {
			e.printStackTrace();
			throw new ServletException (e.getMessage());
		}
		return new ModelAndView(FOLDER_VIEW, NameConstants.FOLDER, folder);
	}
	
	/**
	 * Custom handler for folder deletion
	 * 
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @return a ModelAndView to render the response
	 */
	public ModelAndView deleteFolderHandler(HttpServletRequest request,
			HttpServletResponse response) throws ServletException {
		Locale locale = request.getLocale();
		String path = request.getParameter ("path");
		try {
			docManager.removeFolder(path);
			saveMessage (request, getText ("folderObject.deleted", request.getParameter ("name"), locale));
		} catch (DocAccessException e) {
			e.printStackTrace();
			if (e instanceof DocPathNotFoundException)
				saveError (request, getText ("errors.folderObject.deleteNotFound", request.getParameter ("name"), locale));
			else
				saveError (request, getText ("errors.folderObject.deleteFail", request.getParameter ("name"), locale));
		}
		path = request.getParameter ("parentId");
		try {
			path = URLEncoder.encode(path, "UTF-8");
		} catch (Exception e) {
			//for url encoder
		}
		return new ModelAndView (new RedirectView ("docMan.action?path=" + DocManUtil.urlEncodePath (path)));
	}
	
	/**
	 * Custom handler for folder move destination folder selection display
	 * 
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @return a ModelAndView to render the response
	 */
	public ModelAndView getFolderDestHandler(HttpServletRequest request,
			HttpServletResponse response) throws ServletException {
		String path = request.getParameter ("path");
		FolderObject folder = null;
		FolderObject folderstruct = null;
		try {
			folder = docManager.getFolder(path, false);
			folderstruct = docManager.getFolder("", true);
		} catch (DocAccessException e) {
			e.printStackTrace();
			throw new ServletException (e.getMessage());
		}
		ModelAndView mv = new ModelAndView(DEST_VIEW, NameConstants.FOLDERSTRUCT, folderstruct);
		mv.addObject(NameConstants.FOLDER, folder);
		return mv;
	}
	
	/**
	 * Custom handler for folder move
	 * 
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @return a ModelAndView to render the response
	 */
	public ModelAndView moveFolderHandler(HttpServletRequest request,
			HttpServletResponse response) throws ServletException {
		Locale locale = request.getLocale();
		String path = request.getParameter ("path");
		String destpath = request.getParameter ("destpath");
		FolderObject folder = null;
		try {
			folder = docManager.getFolder(path, false);
			docManager.moveFolder(destpath, folder);
		} catch (DocAccessException e) {
			String name = "";
			//since error occur, redirect to original parent folder
			if (folder != null) {
				destpath = folder.getParentId();
				name = folder.getName();
			}
			else {
				int index = path.lastIndexOf("/");
				if (index != -1) {
					name = path.substring(index+1);
					destpath = path.substring(0, index);
				}
				else {
					name = path;
					destpath = "";
				}
			}
			if (e instanceof DocExistsException)
				saveError (request, getText ("errors.folderObject.moveFailExist", name, locale));
			else
				saveError (request, getText ("errors.folderObject.moveFail", name, locale));
		}
		return new ModelAndView (new RedirectView ("docMan.action?path=" + DocManUtil.urlEncodePath (destpath)));
	}
	
}

⌨️ 快捷键说明

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