// license-header java merge-point package org.andromda.test.howto16.a.crud; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.andromda.test.ManageableServiceLocator; import org.apache.commons.lang.StringUtils; import org.apache.struts.Globals; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.actions.DispatchAction; public final class ManagePerson extends DispatchAction { public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { request.getSession().setAttribute("manageableForm", actionForm); return super.execute(mapping, actionForm, request, response); } public ActionForward create(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { final PersonForm form = (PersonForm)actionForm; ManageableServiceLocator.instance().getPersonManageableService().create( (StringUtils.isBlank(request.getParameter("name"))) ? null : form.getName() , (StringUtils.isBlank(request.getParameter("birthDateAsString"))) ? null : form.getBirthDate() , (StringUtils.isBlank(request.getParameter("id"))) ? null : form.getId() , (StringUtils.isBlank(request.getParameter("cars"))) ? null : form.getCars() ); return preload(mapping, actionForm, request, response); } public ActionForward read(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { final PersonForm form = (PersonForm)actionForm; final List list = ManageableServiceLocator.instance().getPersonManageableService().read( (StringUtils.isBlank(request.getParameter("name"))) ? null : form.getName() , (StringUtils.isBlank(request.getParameter("birthDateAsString"))) ? null : form.getBirthDate() , (StringUtils.isBlank(request.getParameter("id"))) ? null : form.getId() , (StringUtils.isBlank(request.getParameter("cars"))) ? null : form.getCars() ); form.setManageableList(list); if (list.size() >= 250) { saveMaxResultsWarning(request); } final Map backingLists = ManageableServiceLocator.instance().getPersonManageableService().readBackingLists(); form.setCarsBackingList((List)backingLists.get("cars")); return mapping.getInputForward(); } public ActionForward preload(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { final PersonForm form = (PersonForm)actionForm; final List list = ManageableServiceLocator.instance().getPersonManageableService().readAll(); form.setManageableList(list); if (list.size() >= 250) { saveMaxResultsWarning(request); } final Map backingLists = ManageableServiceLocator.instance().getPersonManageableService().readBackingLists(); if (StringUtils.isNotBlank(request.getParameter("ref_Car"))) { final Long[] array = new Long[1]; array[0] = new Long(request.getParameter("ref_Car")); form.setCars(array); } form.setCarsBackingList((List)backingLists.get("cars")); return mapping.getInputForward(); } protected ActionForward unspecified(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { return preload(mapping, actionForm, request, response); } public ActionForward update(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { final PersonForm form = (PersonForm) actionForm; ManageableServiceLocator.instance().getPersonManageableService().update( (StringUtils.isBlank(request.getParameter("name"))) ? null : form.getName() , (StringUtils.isBlank(request.getParameter("birthDateAsString"))) ? null : form.getBirthDate() , (StringUtils.isBlank(request.getParameter("id"))) ? null : form.getId() , (StringUtils.isBlank(request.getParameter("cars"))) ? null : form.getCars() ); return preload(mapping, actionForm, request, response); } public ActionForward delete(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { final PersonForm form = (PersonForm) actionForm; final Long[] selectedRows = form.getSelectedRows(); if (selectedRows != null && selectedRows.length > 0) { ManageableServiceLocator.instance().getPersonManageableService().delete(selectedRows); } return preload(mapping, actionForm, request, response); } private void saveMaxResultsWarning(HttpServletRequest request) { final HttpSession session = request.getSession(); ActionMessages messages = (ActionMessages)session.getAttribute(Globals.MESSAGE_KEY); if (messages == null) { messages = new ActionMessages(); session.setAttribute(Globals.MESSAGE_KEY, messages); } messages.add("org.andromda.bpm4struts.warningmessages", new ActionMessage("maximum.results.fetched.warning", "250")); } }