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 + -
显示快捷键?