Java tutorial
/** * Copyright 2003-2006 the original author or authors. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.jdon.strutsutil; import java.security.Principal; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.beanutils.PropertyUtils; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import com.jdon.controller.events.EventModel; import com.jdon.controller.events.EventSupport; import com.jdon.model.ModelForm; import com.jdon.util.Debug; /** * ActionForm Model * * <p> * Copyright: Jdon.com Copyright (c) 2003 * </p> * <p> * Company: * </p> * * @author banq * @version 1.0 */ public final class FormBeanUtil { public final static String module = FormBeanUtil.class.getName(); public final static String FORWARD_SUCCESS_NAME = "success"; public final static String FORWARD_FAILURE_NAME = "failure"; /** * ActionForm?struts_config.xmlattribute * * @param form * @param mapping * @param request */ public static void saveActionForm(ActionForm form, ActionMapping mapping, HttpServletRequest request) { if ((form != null) && (mapping.getAttribute() != null)) { if ("request".equals(mapping.getScope())) { request.setAttribute(mapping.getAttribute(), form); } else { HttpSession session = request.getSession(); session.setAttribute(mapping.getAttribute(), form); request.setAttribute(mapping.getAttribute(), form); } } } /** * ?struts_config.xmlattributeActionForm? * * @param form * @param mapping * @param request */ public static ActionForm loadActionForm(ActionMapping mapping, HttpServletRequest request) { if ("request".equals(mapping.getScope())) { return (ActionForm) request.getAttribute(mapping.getAttribute()); } else { HttpSession session = request.getSession(); return (ActionForm) session.getAttribute(mapping.getAttribute()); } } /** * lookup ActionForm in * * @param request * @return */ public static ActionForm lookupActionForm(HttpServletRequest request, String formName) { ActionForm actionForm = null; actionForm = (ActionForm) request.getAttribute(formName); if (actionForm == null && request.getSession(false) != null) { HttpSession session = request.getSession(false); actionForm = (ActionForm) session.getAttribute(formName); } return actionForm; } /** * ?attributeActionForm * * @param mapping * @param request */ public static void removeActionForm(ActionMapping mapping, HttpServletRequest request) { if (mapping.getAttribute() != null) { if ("request".equals(mapping.getScope())) request.removeAttribute(mapping.getAttribute()); else { HttpSession session = request.getSession(); session.removeAttribute(mapping.getAttribute()); request.removeAttribute(mapping.getAttribute()); } } } public static String getFormName(ActionMapping mapping) throws Exception { String formName = "NoFormName Error!"; if (mapping.getName() != null) formName = mapping.getName(); else if ((mapping.getAttribute() != null)) formName = mapping.getAttribute(); else throw new Exception("not found the actionForm name in action configure"); return formName; } public static ModelForm getModelForm(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request) throws Exception { if (actionForm == null) { String msg = " not found the actionForm name in action configure"; Debug.logError(msg); throw new Exception(msg); // modelForm = createModelFormNow(actionMapping, actionForm, // request); } ModelForm modelForm = null; try { modelForm = (ModelForm) actionForm; } catch (ClassCastException e) { String msg = "your class:" + actionForm.getClass().getName() + " isn't the subclass of com.jdon.model.ModelForm"; Debug.logVerbose(msg, module); throw new Exception(msg); } return modelForm; } /** * ?struts-config.xml??ActionForm * * @param actionMapping * ActionMapping * @param actionForm * ActionForm * @param request * HttpServletRequest * @param moduleConfig * ModuleConfig * @return ModelForm * @throws Exception * private static ModelForm createModelFormNow(ActionMapping * actionMapping, ActionForm actionForm, HttpServletRequest * request) throws Exception { * * * Debug.logVerbose( * "[JdonFramework] not found a existed ModelForm, create it now" * , module); ModuleConfig moduleConfig = * moduleUtils.getModuleConfig(request, * request.getSession().getServletContext()); ModelForm form = * null; String formName = null; String formClass = null; try { * formName = getFormName(actionMapping); FormBeanConfig * formConfig = moduleConfig.findFormBeanConfig(formName); if * (formConfig == null) { throw new * Exception(" not found config for " + formName); } formClass = * formConfig.getType(); * * ClassLoader classLoader = * Thread.currentThread().getContextClassLoader(); form = * (ModelForm) classLoader.loadClass(formClass).newInstance(); * * String action = request.getParameter("action"); if (action == * null) action = request.getParameter("method"); * form.setAction(action); * * request.setAttribute(formName, form); } catch (Exception ex) * { Debug.logError("[JdonFramework] formName:" + formName + * "formClass create error :" + formClass + ex, module); } * return form; } */ public static boolean validateAction(String actionName, ActionMapping mapping) { boolean res = true; int result = actionTransfer(actionName); // ?? if (result == 0) res = false; if (mapping.findForward(actionName) == null) // ??? res = false; return res; } public static String getName(HttpServletRequest request) throws Exception { Principal principal = request.getUserPrincipal(); if (principal == null) { Debug.logError("[JdonFramework] No Principal", module); throw new Exception(" No Principal"); } return principal.getName(); } public static ActionErrors notNull(Object object, String errorsInfo) { ActionErrors errors = new ActionErrors(); if (object == null) { errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(errorsInfo)); } return errors; } /** * create a EventModel from a existed ModelForm. it is only for * create/edit/delete of ModelSaveAction */ public static EventModel createEvent(ModelForm form, Object model) throws Exception { EventModel em = new EventModel(); try { PropertyUtils.copyProperties(model, form); em.setModelIF(model); String action = form.getAction(); em.setActionName(action); em.setActionType(FormBeanUtil.actionTransfer(action)); } catch (Exception ex) { Debug.logError("[JdonFramework]create Event error:" + ex, module); throw new Exception(ex); } return em; } public static int actionTransfer(String actionName) { if (actionName.equalsIgnoreCase(ModelForm.CREATE_STR)) return EventSupport.CREATE; else if (actionName.equalsIgnoreCase(ModelForm.EDIT_STR)) return EventSupport.EDIT; else if (actionName.equalsIgnoreCase(ModelForm.UPDATE_STR)) return EventSupport.EDIT; else if (actionName.equalsIgnoreCase(ModelForm.DELETE_STR)) return EventSupport.DELETE; else return 0; } }