From: Jonathan O. <os...@us...> - 2005-11-29 21:53:40
|
Update of /cvsroot/dlese/dlese-tools-project/src/org/dlese/dpc/schemedit/action In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv553/action Modified Files: StatusAction.java Log Message: - added support for editing status records - fixed bug in which dcsDataRecords for all but adn frameworks were not getting current status set properly Index: StatusAction.java =================================================================== RCS file: /cvsroot/dlese/dlese-tools-project/src/org/dlese/dpc/schemedit/action/StatusAction.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** StatusAction.java 6 Oct 2005 23:01:35 -0000 1.14 --- StatusAction.java 29 Nov 2005 21:53:31 -0000 1.15 *************** *** 1,23 **** /** ! * Copyright 2002, 2003 DLESE Program Center/University Corporation for ! * Atmospheric Research (UCAR), P.O. Box 3000, Boulder, CO 80307, ! * su...@dl....<p> * * This file is part of the DLESE Discovery Project.<p> * ! * The DLESE Discovery Project is free software; you can redistribute it and/or ! * modify it under the terms of the GNU General Public License as published by ! * the Free Software Foundation; either version 2 of the License, or (at your ! * option) any later version.<p> * ! * The DLESE Discovery Project is distributed in the hope that it will be ! * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of ! * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ! * Public License for more details.<p> * ! * You should have received a copy of the GNU General Public License along with ! * The DLESE System; if not, write to the Free Software Foundation, Inc., 59 ! * Temple Place, Suite 330, Boston, MA 02111-1307 USA */ --- 1,19 ---- /** ! * Copyright 2002, 2003 DLESE Program Center/University Corporation for Atmospheric Research (UCAR), P.O. Box ! * 3000, Boulder, CO 80307, su...@dl....<p> * * This file is part of the DLESE Discovery Project.<p> * ! * The DLESE Discovery Project is free software; you can redistribute it and/or modify it under the terms of ! * the GNU General Public License as published by the Free Software Foundation; either version 2 of the ! * License, or (at your option) any later version.<p> * ! * The DLESE Discovery Project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; ! * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! * General Public License for more details.<p> * ! * You should have received a copy of the GNU General Public License along with The DLESE System; if not, ! * write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ *************** *** 57,65 **** /** ! * A Struts Action controlling interaction during workflow status information asociated with ! individual metadata records..<p> ! ! *@author Jonathan Ostwald ! <p>$Id$ */ public final class StatusAction extends Action { --- 53,65 ---- /** ! * A Struts Action controlling interaction during editing of workflow status information asociated with ! * individual metadata records..<p> ! * ! * ! * ! * @author Jonathan Ostwald <p> ! * ! * $Id$ ! * @version $Id$ */ public final class StatusAction extends Action { *************** *** 69,108 **** private CollectionRegistry collectionRegistry = null; private SessionRegistry sessionRegistry = null; ! ! /** * Gets the metaDataFramework attribute of the StatusAction object * ! *@return The metaDataFramework value */ protected MetaDataFramework getMetaDataFramework() { return frameworkRegistry.getFramework("dcs_data"); } ! // --------------------------------------------------------- Public Methods /** ! * Processes the specified HTTP request and creates the corresponding HTTP ! * response by forwarding to a JSP that will create it. A {@link ! * org.dlese.dpc.repository.RepositoryManager} must be available to this class via ! * a ServletContext attribute under the key "repositoryManager." Returns an {@link ! * org.apache.struts.action.ActionForward} instance which must be configured in ! * struts-config.xml to forward to the JSP page that will handle the request. ! * ! *@param mapping The ActionMapping used to select this instance ! *@param request The HTTP request we are processing ! *@param response The HTTP response we are creating ! *@param form The ActionForm for the given page ! *@return The ActionForward instance describing where and ! * how control should be forwarded ! *@exception IOException if an input/output error occurs ! *@exception ServletException if a servlet exception occurs */ public ActionForward execute( ! ActionMapping mapping, ! ActionForm form, ! HttpServletRequest request, ! HttpServletResponse response) ! throws IOException, ServletException { /* * Design note: --- 69,108 ---- private CollectionRegistry collectionRegistry = null; private SessionRegistry sessionRegistry = null; ! private RepositoryManager rm = null; ! ! /** * Gets the metaDataFramework attribute of the StatusAction object * ! * @return The metaDataFramework value */ protected MetaDataFramework getMetaDataFramework() { return frameworkRegistry.getFramework("dcs_data"); } ! // --------------------------------------------------------- Public Methods /** ! * Processes the specified HTTP request and creates the corresponding HTTP response by forwarding to a JSP ! * that will create it. A {@link org.dlese.dpc.repository.RepositoryManager} must be available to this class ! * via a ServletContext attribute under the key "repositoryManager." Returns an {@link ! * org.apache.struts.action.ActionForward} instance which must be configured in struts-config.xml to forward ! * to the JSP page that will handle the request. ! * ! * @param mapping The ActionMapping used to select this instance ! * @param request The HTTP request we are processing ! * @param response The HTTP response we are creating ! * @param form The ActionForm for the given page ! * @return The ActionForward instance describing where and how control should be ! * forwarded ! * @exception IOException if an input/output error occurs ! * @exception ServletException if a servlet exception occurs */ public ActionForward execute( ! ActionMapping mapping, ! ActionForm form, ! HttpServletRequest request, ! HttpServletResponse response) ! throws IOException, ServletException { /* * Design note: *************** *** 115,261 **** String errorMsg = ""; ! RepositoryManager rm = ! (RepositoryManager) servlet.getServletContext().getAttribute("repositoryManager"); ! ! DcsDataManager dcsDataManager = (DcsDataManager) servlet.getServletContext().getAttribute("dcsDataManager"); ! ! /* SimpleLuceneIndex index = rm.getIndex(); */ ! frameworkRegistry = (FrameworkRegistry) servlet.getServletContext() .getAttribute("frameworkRegistry"); ! collectionRegistry = (CollectionRegistry) servlet.getServletContext() .getAttribute("collectionRegistry"); ! ! sessionRegistry = ! (SessionRegistry) servlet.getServletContext().getAttribute("sessionRegistry"); ! MetaDataFramework dcsdataFramework = getMetaDataFramework(); ! SchemaHelper schemaHelper = dcsdataFramework.getSchemaHelper(); SessionBean sessionBean = sessionRegistry.getSessionBean(request); ! ActionErrors errors = new ActionErrors(); SchemEditUtils.showRequestParameters(request); ! try { if (request.getParameter("command") != null) { String param = request.getParameter("command"); ! ! if (param.equalsIgnoreCase("edit")) { ! String id = request.getParameter("recId"); ! if (id == null || id.trim().length() == 0) ! if (errors.size() > 0) { ! errors.add("error", ! new ActionError("generic.error", "a record id is required to edit status")); ! saveErrors(request, errors); ! return forwardToCaller (request, statusForm); ! } ! ! // OBTAIN LOCK For record ! if (!sessionBean.getLock (id)) { ! /* errorMsg = "Failed to obtain lock on the source record, which is required to change status"; ! errors.add("error", ! new ActionError("generic.error", errorMsg)); */ ! errors.add("recordLocked", ! new ActionError("lock.not.obtained.error", id)); ! saveErrors(request, errors); ! return mapping.findForward("error.page"); ! } ! ! statusForm.clear(); ! statusForm.setReferer(request.getHeader("referer")); ! statusForm.setRecId(id); ! ! XMLDocReader docReader = RepositoryServices.getXMLDocReader(id, rm); ! String collection = docReader.getCollection(); ! ! statusForm.setStatusFlags(getStatusFlags(collection)); ! ! statusForm.setCollection (collection); ! statusForm.setCollectionName (docReader.getMyCollectionDoc().getShortTitle()); ! ! // existing dcsData Record ! DcsDataRecord dcsData = dcsDataManager.getDcsDataRecord(id, rm); ! if (dcsData == null) { ! errorMsg = "failed to create dcsData"; ! prtln (errorMsg); ! throw new Exception (errorMsg); ! } ! statusForm.setDcsDataRecord(dcsData); ! ! // sessionBean remembers the editor for this session ! statusForm.setLastEditor(sessionBean.getEditor()); ! // statusForm.setStatus(StatusFlags.UNKNOWN_STATUS); ! statusForm.setStatus(dcsData.getStatus()); ! statusForm.setStatusNote(""); ! ! return mapping.findForward("edit.status"); ! } ! ! if (param.equalsIgnoreCase("cancel")) { String recId = statusForm.getRecId(); sessionBean.releaseLock(recId); statusForm.clear(); ! return forwardToCaller (request, statusForm); } ! ! if (param.equalsIgnoreCase("submit")) { String recId = statusForm.getRecId(); ! if (!sessionBean.ownsLock(recId)) ! throw new MissingLockException (); ! errors = validateForm(request, statusForm); // prtln ("validation found " + errors.size() + " errors"); if (errors.size() > 0) { errors.add("error", ! new ActionError("edit.errors.found")); saveErrors(request, errors); return mapping.findForward("edit.status"); } else { ! return handleSaveRecord (rm, mapping, statusForm, request, response); } } } statusForm.clear(); ! errors.add("message", ! new ActionError("No command submitted - no action taken")); saveErrors(request, errors); return mapping.findForward("edit.status"); ! ! } catch (NullPointerException e) { ! prtln("StatusAction caught exception."); ! e.printStackTrace(); ! return forwardToCaller (request, statusForm); } catch (Throwable e) { ! prtln("RepositoryAminAction caught exception: " + e); ! return forwardToCaller (request, statusForm); ! } } ! /** Return a list of {@link StatusFlag} beans that describe the statuses that ! can be assigned to a {@link StatusEntry}. This list is composed of ! * the UNKNOWN_status plus those statuses that defined for the collection. The IMPORT status ! * is not available in this context, since it is only assigned by the system. ! */ ! private List getStatusFlags (String collection) { CollectionInfo info = collectionRegistry.getCollectionInfo(collection); return info.getAssignableStatusFlags(); } ! ! private ActionForward handleSaveRecord (RepositoryManager rm, ActionMapping mapping, ! ActionForm form, ! HttpServletRequest request, ! HttpServletResponse response) { ! ActionErrors errors = new ActionErrors (); StatusForm statusForm = (StatusForm) form; SessionBean sessionBean = sessionRegistry.getSessionBean(request); ! String changeDate = SchemEditUtils.fullDateString (new Date()); ! StatusEntry statusEntry = ! new StatusEntry (statusForm.getStatus(), statusForm.getStatusNote(), statusForm.getLastEditor(), changeDate); String id = statusForm.getRecId(); ! try { RepositoryServices.updateStatus(id, statusEntry, servlet.getServletContext()); --- 115,408 ---- String errorMsg = ""; ! rm = (RepositoryManager) servlet.getServletContext().getAttribute("repositoryManager"); ! ! /* SimpleLuceneIndex index = rm.getIndex(); */ frameworkRegistry = (FrameworkRegistry) servlet.getServletContext() .getAttribute("frameworkRegistry"); ! collectionRegistry = (CollectionRegistry) servlet.getServletContext() .getAttribute("collectionRegistry"); ! ! sessionRegistry = ! (SessionRegistry) servlet.getServletContext().getAttribute("sessionRegistry"); ! MetaDataFramework dcsdataFramework = getMetaDataFramework(); ! SchemaHelper schemaHelper = dcsdataFramework.getSchemaHelper(); SessionBean sessionBean = sessionRegistry.getSessionBean(request); ! ActionErrors errors = new ActionErrors(); SchemEditUtils.showRequestParameters(request); ! try { if (request.getParameter("command") != null) { String param = request.getParameter("command"); ! ! if (param.equalsIgnoreCase("exit")) { String recId = statusForm.getRecId(); sessionBean.releaseLock(recId); statusForm.clear(); ! return forwardToCaller(request, statusForm); ! } ! ! if (param.equalsIgnoreCase("edit")) { ! return handleEditRecord(mapping, form, request, response); ! } ! ! // The rest of these commands require that a lock is held ! ! if (!sessionBean.ownsLock(statusForm.getRecId())) ! throw new MissingLockException(); ! ! if (param.equalsIgnoreCase("deleteEntry")) { ! return handleDeleteEntry(mapping, form, request, response); ! } ! ! if (param.equalsIgnoreCase("updateEntry")) { ! return handleUpdateEntry(mapping, form, request, response); } ! ! if (param.equalsIgnoreCase("editEntry")) { ! return handleEditEntry(mapping, form, request, response); ! } ! ! if (param.equalsIgnoreCase("cancelEditEntry")) { ! if (!sessionBean.ownsLock(statusForm.getRecId())) ! throw new MissingLockException(); ! statusForm.setStatusNote(""); ! errors.add("message", new ActionError("generic.message", "entry edit canceled")); ! saveErrors(request, errors); ! return mapping.findForward("edit.status"); ! } ! ! if (param.equalsIgnoreCase("updateStatus")) { String recId = statusForm.getRecId(); ! errors = validateForm(request, statusForm); // prtln ("validation found " + errors.size() + " errors"); if (errors.size() > 0) { errors.add("error", ! new ActionError("edit.errors.found")); saveErrors(request, errors); return mapping.findForward("edit.status"); } else { ! return handleSaveRecord(mapping, form, request, response); } } } statusForm.clear(); ! errors.add("error", ! new ActionError("generic.error", "No command submitted - no action taken")); saveErrors(request, errors); return mapping.findForward("edit.status"); ! } catch (MissingLockException mle) { ! errors.add("missingLock", new ActionError("missing.lock")); ! saveErrors(request, errors); ! return mapping.findForward("error.page"); } catch (Throwable e) { ! prtln("System Error: " + e); ! if (e instanceof NullPointerException) ! e.printStackTrace(); ! return forwardToCaller(request, statusForm); ! } } ! ! /** ! * Return a list of {@link StatusFlag} beans that describe the statuses that can be assigned to a {@link ! * StatusEntry}. This list is composed of the UNKNOWN_status plus those statuses that defined for the ! * collection. The IMPORT status is not available in this context, since it is only assigned by the system. ! * ! * @param collection collection key (e.g., 'dcc') ! * @return status flags that may be assigned for this collection ! */ ! private List getStatusFlags(String collection) { CollectionInfo info = collectionRegistry.getCollectionInfo(collection); return info.getAssignableStatusFlags(); } ! ! ! /** ! * Remove the StatusEntry corresponding to "entryKey" from the DcsDataRecord. ! * ! * @param mapping NOT YET DOCUMENTED ! * @param form NOT YET DOCUMENTED ! * @param request NOT YET DOCUMENTED ! * @param response NOT YET DOCUMENTED ! * @return NOT YET DOCUMENTED ! * @exception Exception NOT YET DOCUMENTED ! */ ! private ActionForward handleDeleteEntry(ActionMapping mapping, ! ActionForm form, ! HttpServletRequest request, ! HttpServletResponse response) throws Exception { ! ActionErrors errors = new ActionErrors(); ! StatusForm statusForm = (StatusForm) form; ! String id = statusForm.getRecId(); ! ! DcsDataRecord dcsDataRecord = statusForm.getDcsDataRecord(); ! String entryKey = statusForm.getEntryKey(); ! ! prtln("entryKey: " + entryKey); ! ! dcsDataRecord.deleteStatusEntry(entryKey); ! RepositoryServices.indexRecord(id, rm); ! dcsDataRecord.flushToDisk(); ! statusForm.clear(); ! errors.add("message", new ActionError("generic.message", "status entry deleted")); ! saveErrors(request, errors); ! ! return mapping.findForward("edit.status"); ! } ! ! ! /** ! * Update the edited values for the StatusEntry corresponding to "entryKey" ! * ! * @param mapping NOT YET DOCUMENTED ! * @param form NOT YET DOCUMENTED ! * @param request NOT YET DOCUMENTED ! * @param response NOT YET DOCUMENTED ! * @return NOT YET DOCUMENTED ! * @exception Exception NOT YET DOCUMENTED ! */ ! private ActionForward handleUpdateEntry(ActionMapping mapping, ! ActionForm form, ! HttpServletRequest request, ! HttpServletResponse response) throws Exception { ! ActionErrors errors = new ActionErrors(); ! StatusForm statusForm = (StatusForm) form; ! String entryKey = statusForm.getEntryKey(); ! String id = statusForm.getRecId(); ! ! DcsDataRecord dcsDataRecord = statusForm.getDcsDataRecord(); ! StatusEntry statusEntry = dcsDataRecord.getStatusEntry(entryKey); ! if (statusEntry == null) ! throw new Exception("status entry not found for " + entryKey); ! statusEntry.setStatusNote(statusForm.getStatusNote()); ! dcsDataRecord.replaceStatusEntry(entryKey, statusEntry); ! RepositoryServices.indexRecord(id, rm); ! dcsDataRecord.flushToDisk(); ! statusForm.setHash(entryKey); ! statusForm.setEntryKey(""); ! errors.add("message", new ActionError("generic.message", "status entry updated")); ! saveErrors(request, errors); ! return mapping.findForward("edit.status"); ! } ! ! ! /** ! * Set up to edit a history item (corresponding to "entryKey" of the current status record ! * ! * @param mapping NOT YET DOCUMENTED ! * @param form NOT YET DOCUMENTED ! * @param request NOT YET DOCUMENTED ! * @param response NOT YET DOCUMENTED ! * @return NOT YET DOCUMENTED ! * @exception Exception NOT YET DOCUMENTED ! */ ! private ActionForward handleEditEntry(ActionMapping mapping, ! ActionForm form, ! HttpServletRequest request, ! HttpServletResponse response) throws Exception { ! StatusForm statusForm = (StatusForm) form; ! DcsDataRecord dcsDataRecord = statusForm.getDcsDataRecord(); ! String entryKey = statusForm.getEntryKey(); ! StatusEntry statusEntry = dcsDataRecord.getStatusEntry(entryKey); ! if (statusEntry == null) ! throw new Exception("status entry not found for " + entryKey); ! statusForm.setStatusNote(statusEntry.getStatusNote()); ! statusForm.setHash(entryKey); ! return mapping.findForward("edit.status"); ! } ! ! ! /** ! * Set up to edit a new statusEntry for this record. ! * ! * @param mapping NOT YET DOCUMENTED ! * @param form NOT YET DOCUMENTED ! * @param request NOT YET DOCUMENTED ! * @param response NOT YET DOCUMENTED ! * @return NOT YET DOCUMENTED ! * @exception Exception NOT YET DOCUMENTED ! */ ! private ActionForward handleEditRecord(ActionMapping mapping, ! ActionForm form, ! HttpServletRequest request, ! HttpServletResponse response) throws Exception { ! ActionErrors errors = new ActionErrors(); ! SessionBean sessionBean = sessionRegistry.getSessionBean(request); ! DcsDataManager dcsDataManager = (DcsDataManager) servlet.getServletContext().getAttribute("dcsDataManager"); ! StatusForm statusForm = (StatusForm) form; ! String id = request.getParameter("recId"); ! if (id == null || id.trim().length() == 0) { ! errors.add("error", ! new ActionError("generic.error", "a record id is required to edit status")); ! saveErrors(request, errors); ! return forwardToCaller(request, statusForm); ! } ! ! // OBTAIN LOCK For record ! if (!sessionBean.getLock(id)) { ! errors.add("recordLocked", ! new ActionError("lock.not.obtained.error", id)); ! saveErrors(request, errors); ! return mapping.findForward("error.page"); ! } ! ! statusForm.clear(); ! statusForm.setReferer(request.getHeader("referer")); ! statusForm.setRecId(id); ! statusForm.setEntryKey(""); ! ! XMLDocReader docReader = RepositoryServices.getXMLDocReader(id, rm); ! String collection = docReader.getCollection(); ! ! statusForm.setStatusFlags(getStatusFlags(collection)); ! ! statusForm.setCollection(collection); ! statusForm.setCollectionName(docReader.getMyCollectionDoc().getShortTitle()); ! ! // existing dcsData Record ! DcsDataRecord dcsData = dcsDataManager.getDcsDataRecord(id, rm); ! if (dcsData == null) { ! throw new Exception("Could not find dcsDataRecord for " + id); ! } ! statusForm.setDcsDataRecord(dcsData); ! ! // sessionBean remembers the editor for this session ! statusForm.setLastEditor(sessionBean.getEditor()); ! statusForm.setStatus(dcsData.getStatus()); ! statusForm.setStatusNote(""); ! ! return mapping.findForward("edit.status"); ! } ! ! ! /** ! * Save the new status entry for this record. ! * ! * @param mapping NOT YET DOCUMENTED ! * @param form NOT YET DOCUMENTED ! * @param request NOT YET DOCUMENTED ! * @param response NOT YET DOCUMENTED ! * @return NOT YET DOCUMENTED ! */ ! private ActionForward handleSaveRecord(ActionMapping mapping, ! ActionForm form, ! HttpServletRequest request, ! HttpServletResponse response) { ! ActionErrors errors = new ActionErrors(); StatusForm statusForm = (StatusForm) form; SessionBean sessionBean = sessionRegistry.getSessionBean(request); ! String changeDate = SchemEditUtils.fullDateString(new Date()); ! StatusEntry statusEntry = ! new StatusEntry(statusForm.getStatus(), statusForm.getStatusNote(), statusForm.getLastEditor(), changeDate); String id = statusForm.getRecId(); ! String entryKey = statusForm.getEntryKey(); ! try { RepositoryServices.updateStatus(id, statusEntry, servlet.getServletContext()); *************** *** 267,285 **** DcsDataManager dcsDataManager = (DcsDataManager) servlet.getServletContext().getAttribute("dcsDataManager"); ! statusForm.setDcsDataRecord (dcsDataManager.getDcsDataRecord(id, rm)); String errorMsg = "UpdateStatus Error: handleSaveRecord error: " + t.getMessage(); errors.add("message", ! new ActionError("generic.message", errorMsg)); saveErrors(request, errors); return mapping.findForward("edit.status"); } } ! ! /* Validate the input from user. Put changed or default values into statusForm. After this method returns, ! statusForm (rather than request) is used to process user input ! */ ! private ActionErrors validateForm (HttpServletRequest request, StatusForm statusForm) { ActionErrors errors = new ActionErrors(); ! String lastEditor = request.getParameter("lastEditor"); if ((lastEditor == null) || (lastEditor.trim().equals(""))) { errors.add("lastEditor", new ActionError("field.required", "Last Editor")); --- 414,438 ---- DcsDataManager dcsDataManager = (DcsDataManager) servlet.getServletContext().getAttribute("dcsDataManager"); ! statusForm.setDcsDataRecord(dcsDataManager.getDcsDataRecord(id, rm)); String errorMsg = "UpdateStatus Error: handleSaveRecord error: " + t.getMessage(); errors.add("message", ! new ActionError("generic.message", errorMsg)); saveErrors(request, errors); return mapping.findForward("edit.status"); } } ! ! ! /** ! * Validate the input from user. Put changed or default values into statusForm. After this method returns, ! * statusForm (rather than request) is used to process user input ! * ! * @param request NOT YET DOCUMENTED ! * @param statusForm NOT YET DOCUMENTED ! * @return NOT YET DOCUMENTED ! */ ! private ActionErrors validateForm(HttpServletRequest request, StatusForm statusForm) { ActionErrors errors = new ActionErrors(); ! String lastEditor = request.getParameter("lastEditor"); if ((lastEditor == null) || (lastEditor.trim().equals(""))) { errors.add("lastEditor", new ActionError("field.required", "Last Editor")); *************** *** 287,292 **** else statusForm.setLastEditor(lastEditor.trim()); ! ! String status = request.getParameter("status"); if (status == null) { errors.add("status", new ActionError("field.required", "Status")); --- 440,445 ---- else statusForm.setLastEditor(lastEditor.trim()); ! ! String status = request.getParameter("status"); if (status == null) { errors.add("status", new ActionError("field.required", "Status")); *************** *** 294,298 **** else if (status.trim().equals(StatusFlags.IMPORTED_STATUS)) { ! errors.add ("status", new ActionError ("generic.error", "Please assign a status other than \"" + StatusFlags.IMPORTED_STATUS + "\"")); } else --- 447,451 ---- else if (status.trim().equals(StatusFlags.IMPORTED_STATUS)) { ! errors.add("status", new ActionError("generic.error", "Please assign a status other than \"" + StatusFlags.IMPORTED_STATUS + "\"")); } else *************** *** 301,327 **** return errors; } ! private ActionForward forwardToCaller(HttpServletRequest request, StatusForm statusForm) { ! prtln ("\n\nforwardToCaller()"); ! // if all else fails, we return to the browse page for the current collection ! String DEFAULT_FORWARD = "/admin/browse.do?s=0&q=&sc=0" + statusForm.getCollection(); ! String referer = statusForm.getReferer(); statusForm.setReferer(null); ! try { // set the recId in the sessionBean so it is available to upcoming jsp page sessionRegistry.getSessionBean(request).setRecId(statusForm.getRecId()); ! if (referer == null) ! throw new Exception ("forwardToCaller() referer is null"); else ! prtln ("forwardToCaller() referer is " + referer); ! String forwardPath = new URL(referer).getFile(); ! if (forwardPath == null || forwardPath.trim().length() == 0) ! throw new Exception ("forwarding to " + DEFAULT_FORWARD + " because referer was not supplied"); ! // we expect the forwardPath at this point to start with the contextPath String contextUrl = GeneralServletTools.getContextUrl(request); --- 454,488 ---- return errors; } ! ! ! /** ! * Generate an ActionForward that returns control to the calling page if possible. ! * ! * @param request NOT YET DOCUMENTED ! * @param statusForm NOT YET DOCUMENTED ! * @return NOT YET DOCUMENTED ! */ private ActionForward forwardToCaller(HttpServletRequest request, StatusForm statusForm) { ! prtln("\n\nforwardToCaller()"); ! // if all else fails, we return to the search page for the current collection ! String DEFAULT_FORWARD = "/admin/query.do?s=0&q=&sc=0" + statusForm.getCollection(); ! String referer = statusForm.getReferer(); statusForm.setReferer(null); ! try { // set the recId in the sessionBean so it is available to upcoming jsp page sessionRegistry.getSessionBean(request).setRecId(statusForm.getRecId()); ! if (referer == null) ! throw new Exception("forwardToCaller() referer is null"); else ! prtln("forwardToCaller() referer is " + referer); ! String forwardPath = new URL(referer).getFile(); ! if (forwardPath == null || forwardPath.trim().length() == 0) ! throw new Exception("forwarding to " + DEFAULT_FORWARD + " because referer was not supplied"); ! // we expect the forwardPath at this point to start with the contextPath String contextUrl = GeneralServletTools.getContextUrl(request); *************** *** 334,350 **** forwardPath = forwardPath.substring(contextPath.length()); else ! throw new Exception ("forwardToCaller: expected context path \"" + contextPath + "\" not found in referer"); ! // we have a legal forward path. if (forwardPath != null && forwardPath.trim().length() > 0) { ! prtln("forwardToCaller() about to forward to : " + forwardPath); return new ActionForward(forwardPath, true); } ! return new ActionForward(DEFAULT_FORWARD, true); - } catch (Throwable t) { ! prtln ("fowardToCaller error: " + t.getMessage()); return new ActionForward(DEFAULT_FORWARD, true); } --- 495,510 ---- forwardPath = forwardPath.substring(contextPath.length()); else ! throw new Exception("forwardToCaller: expected context path \"" + contextPath + "\" not found in referer"); ! // we have a legal forward path. if (forwardPath != null && forwardPath.trim().length() > 0) { ! prtln("forwardToCaller() about to forward to : " + forwardPath); return new ActionForward(forwardPath, true); } ! return new ActionForward(DEFAULT_FORWARD, true); } catch (Throwable t) { ! prtln("fowardToCaller error: " + t.getMessage()); return new ActionForward(DEFAULT_FORWARD, true); } *************** *** 355,366 **** public static void setDebug(boolean isDebugOutput) { debug = isDebugOutput; } /** * Print a line to standard out. * ! *@param s The String to print. */ private void prtln(String s) { --- 515,532 ---- + /** + * Sets the debug attribute of the StatusAction class + * + * @param isDebugOutput The new debug value + */ public static void setDebug(boolean isDebugOutput) { debug = isDebugOutput; } + /** * Print a line to standard out. * ! * @param s The String to print. */ private void prtln(String s) { |