us.mn.state.health.lims.qaevent.action.QaEventsEntryUpdateAction.java Source code

Java tutorial

Introduction

Here is the source code for us.mn.state.health.lims.qaevent.action.QaEventsEntryUpdateAction.java

Source

/**
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (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.mozilla.org/MPL/ 
* 
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations under
* the License.
* 
* The Original Code is OpenELIS code.
* 
* Copyright (C) The Minnesota Department of Health.  All Rights Reserved.
*/
package us.mn.state.health.lims.qaevent.action;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.StringTokenizer;

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

import org.apache.commons.beanutils.PropertyUtils;
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.ActionMessages;

import us.mn.state.health.lims.action.dao.ActionDAO;
import us.mn.state.health.lims.action.daoimpl.ActionDAOImpl;
import us.mn.state.health.lims.action.valueholder.Action;
import us.mn.state.health.lims.analysis.dao.AnalysisDAO;
import us.mn.state.health.lims.analysis.daoimpl.AnalysisDAOImpl;
import us.mn.state.health.lims.analysis.valueholder.Analysis;
import us.mn.state.health.lims.analysisqaevent.dao.AnalysisQaEventDAO;
import us.mn.state.health.lims.analysisqaevent.daoimpl.AnalysisQaEventDAOImpl;
import us.mn.state.health.lims.analysisqaevent.valueholder.AnalysisQaEvent;
import us.mn.state.health.lims.analysisqaeventaction.dao.AnalysisQaEventActionDAO;
import us.mn.state.health.lims.analysisqaeventaction.daoimpl.AnalysisQaEventActionDAOImpl;
import us.mn.state.health.lims.analysisqaeventaction.valueholder.AnalysisQaEventAction;
import us.mn.state.health.lims.common.action.BaseAction;
import us.mn.state.health.lims.common.action.BaseActionForm;
import us.mn.state.health.lims.common.exception.LIMSRuntimeException;
import us.mn.state.health.lims.common.log.LogEvent;
import us.mn.state.health.lims.common.util.DateUtil;
import us.mn.state.health.lims.common.util.StringUtil;
import us.mn.state.health.lims.common.util.SystemConfiguration;
import us.mn.state.health.lims.common.util.validator.ActionError;
import us.mn.state.health.lims.hibernate.HibernateUtil;
import us.mn.state.health.lims.login.valueholder.UserSessionData;
import us.mn.state.health.lims.qaevent.dao.QaEventDAO;
import us.mn.state.health.lims.qaevent.daoimpl.QaEventDAOImpl;
import us.mn.state.health.lims.qaevent.valueholder.QaEvent;
import us.mn.state.health.lims.sample.dao.SampleDAO;
import us.mn.state.health.lims.sample.daoimpl.SampleDAOImpl;
import us.mn.state.health.lims.sample.valueholder.Sample;
import us.mn.state.health.lims.sampleitem.dao.SampleItemDAO;
import us.mn.state.health.lims.sampleitem.daoimpl.SampleItemDAOImpl;
import us.mn.state.health.lims.sampleitem.valueholder.SampleItem;
import us.mn.state.health.lims.sampleqaevent.dao.SampleQaEventDAO;
import us.mn.state.health.lims.sampleqaevent.daoimpl.SampleQaEventDAOImpl;
import us.mn.state.health.lims.sampleqaevent.valueholder.SampleQaEvent;
import us.mn.state.health.lims.sampleqaeventaction.dao.SampleQaEventActionDAO;
import us.mn.state.health.lims.sampleqaeventaction.daoimpl.SampleQaEventActionDAOImpl;
import us.mn.state.health.lims.sampleqaeventaction.valueholder.SampleQaEventAction;
import us.mn.state.health.lims.systemuser.dao.SystemUserDAO;
import us.mn.state.health.lims.systemuser.daoimpl.SystemUserDAOImpl;
import us.mn.state.health.lims.systemuser.valueholder.SystemUser;

/**
 * @author diane benz
 */
public class QaEventsEntryUpdateAction extends BaseAction {

    private boolean isNew = false;

    protected ActionForward performAction(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        String forward = FWD_SUCCESS;
        request.setAttribute(ALLOW_EDITS_KEY, "true");
        request.setAttribute(PREVIOUS_DISABLED, "true");
        request.setAttribute(NEXT_DISABLED, "true");
        BaseActionForm dynaForm = (BaseActionForm) form;

        String accessionNumber = (String) dynaForm.get("accessionNumber");
        String[] selectedAnalysisQaEventIdsForCompletion = (String[]) dynaForm
                .get("selectedAnalysisQaEventIdsForCompletion");
        List testQaEvents = (List) dynaForm.get("testQaEvents");
        //bugzilla 2500
        String[] selectedSampleQaEventIdsForCompletion = (String[]) dynaForm
                .get("selectedSampleQaEventIdsForCompletion");
        List sampleQaEvents = (List) dynaForm.get("sampleQaEvents");

        //bugzilla 2566 for now qa events is for both humand and newborn
        //bugzilla 2501
        String multipleSampleMode = (String) dynaForm.get("multipleSampleMode");
        String qaEventCategoryId = (String) dynaForm.get("selectedQaEventsCategoryId");

        //bugzilla 2500
        String addQaEventPopupSelectedQaEventIdsForSample = (String) dynaForm
                .get("addQaEventPopupSelectedQaEventIdsForSample");

        StringTokenizer qaEventIdTokenizerForSample = new StringTokenizer(
                addQaEventPopupSelectedQaEventIdsForSample,
                SystemConfiguration.getInstance().getDefaultIdSeparator());
        List listOfAddedQaEventIdsForSample = new ArrayList();
        while (qaEventIdTokenizerForSample.hasMoreElements()) {
            String qaEventIdForSample = (String) qaEventIdTokenizerForSample.nextElement();
            listOfAddedQaEventIdsForSample.add(qaEventIdForSample);
        }

        String addActionSelectedActionIdsForSample = (String) dynaForm
                .get("addActionPopupSelectedActionIdsForSample");
        String addActionSelectedSampleQaEventIds = (String) dynaForm.get("addActionPopupSelectedSampleQaEventIds");

        StringTokenizer actionIdTokenizerForSample = new StringTokenizer(addActionSelectedActionIdsForSample,
                SystemConfiguration.getInstance().getDefaultIdSeparator());
        List listOfAddedActionIdsForSample = new ArrayList();
        while (actionIdTokenizerForSample.hasMoreElements()) {
            String actionIdForSample = (String) actionIdTokenizerForSample.nextElement();
            listOfAddedActionIdsForSample.add(actionIdForSample);
        }

        StringTokenizer sampleQaEventIdTokenizer = new StringTokenizer(addActionSelectedSampleQaEventIds,
                SystemConfiguration.getInstance().getDefaultIdSeparator());
        List listOfSampleQaEventIds = new ArrayList();
        while (sampleQaEventIdTokenizer.hasMoreElements()) {
            String sampleQaEventId = (String) sampleQaEventIdTokenizer.nextElement();
            listOfSampleQaEventIds.add(sampleQaEventId);
        }

        //end bugzilla 2500

        String addQaEventSelectedTestIds = (String) dynaForm.get("addQaEventPopupSelectedTestIds");
        String addQaEventSelectedQaEventIds = (String) dynaForm.get("addQaEventPopupSelectedQaEventIds");

        StringTokenizer testIdTokenizer = new StringTokenizer(addQaEventSelectedTestIds,
                SystemConfiguration.getInstance().getDefaultIdSeparator());
        List listOfTestIds = new ArrayList();
        while (testIdTokenizer.hasMoreElements()) {
            String testId = (String) testIdTokenizer.nextElement();
            listOfTestIds.add(testId);
        }

        StringTokenizer qaEventIdTokenizer = new StringTokenizer(addQaEventSelectedQaEventIds,
                SystemConfiguration.getInstance().getDefaultIdSeparator());
        List listOfAddedQaEventIds = new ArrayList();
        while (qaEventIdTokenizer.hasMoreElements()) {
            String qaEventId = (String) qaEventIdTokenizer.nextElement();
            listOfAddedQaEventIds.add(qaEventId);
        }

        String addActionSelectedActionIds = (String) dynaForm.get("addActionPopupSelectedActionIds");
        String addActionSelectedAnalysisQaEventIds = (String) dynaForm
                .get("addActionPopupSelectedAnalysisQaEventIds");

        StringTokenizer actionIdTokenizer = new StringTokenizer(addActionSelectedActionIds,
                SystemConfiguration.getInstance().getDefaultIdSeparator());
        List listOfActionIds = new ArrayList();
        while (actionIdTokenizer.hasMoreElements()) {
            String actionId = (String) actionIdTokenizer.nextElement();
            listOfActionIds.add(actionId);
        }

        StringTokenizer analysisQaEventIdTokenizer = new StringTokenizer(addActionSelectedAnalysisQaEventIds,
                SystemConfiguration.getInstance().getDefaultIdSeparator());
        List listOfAnalysisQaEventIds = new ArrayList();
        while (analysisQaEventIdTokenizer.hasMoreElements()) {
            String analysisQaEventId = (String) analysisQaEventIdTokenizer.nextElement();
            listOfAnalysisQaEventIds.add(analysisQaEventId);
        }

        // server side validation of accessionNumber
        // validate on server-side sample accession number

        ActionMessages errors = null;

        try {
            errors = new ActionMessages();
            errors = validateAccessionNumber(request, errors, dynaForm);
        } catch (Exception e) {
            //bugzilla 2154
            LogEvent.logError("QaEventsEntryUpdateAction", "performAction()", e.toString());
            ActionError error = new ActionError("errors.ValidationException", null, null);
            errors.add(ActionMessages.GLOBAL_MESSAGE, error);
        }
        if (errors != null && errors.size() > 0) {
            saveErrors(request, errors);
            return mapping.findForward(FWD_FAIL);
        }

        // initialize the form
        dynaForm.initialize(mapping);

        // 1926 get sysUserId from login module
        UserSessionData usd = (UserSessionData) request.getSession().getAttribute(USER_SESSION_DATA);
        String sysUserId = String.valueOf(usd.getSystemUserId());

        //bugzilla 2481 Action Owner
        SystemUser systemUser = new SystemUser();
        systemUser.setId(sysUserId);
        SystemUserDAO systemUserDAO = new SystemUserDAOImpl();
        systemUserDAO.getData(systemUser);

        Date today = Calendar.getInstance().getTime();
        Locale locale = (Locale) request.getSession().getAttribute("org.apache.struts.action.LOCALE");

        String dateAsText = DateUtil.formatDateAsText(today, locale);

        org.hibernate.Transaction tx = HibernateUtil.getSession().beginTransaction();

        AnalysisQaEventDAO analysisQaEventDAO = new AnalysisQaEventDAOImpl();
        SampleDAO sampleDAO = new SampleDAOImpl();
        SampleItemDAO sampleItemDAO = new SampleItemDAOImpl();
        AnalysisDAO analysisDAO = new AnalysisDAOImpl();
        QaEventDAO qaEventDAO = new QaEventDAOImpl();
        ActionDAO actionDAO = new ActionDAOImpl();
        AnalysisQaEventActionDAO analysisQaEventActionDAO = new AnalysisQaEventActionDAOImpl();
        //bugzilla 2501
        SampleQaEventDAO sampleQaEventDAO = new SampleQaEventDAOImpl();
        SampleQaEventActionDAO sampleQaEventActionDAO = new SampleQaEventActionDAOImpl();

        if (!StringUtil.isNullorNill(accessionNumber)) {

            try {

                //bugzilla 2500 first update completed dates for sample
                if (selectedSampleQaEventIdsForCompletion != null
                        && selectedSampleQaEventIdsForCompletion.length > 0) {
                    for (int i = 0; i < selectedSampleQaEventIdsForCompletion.length; i++) {

                        String sampleQaEventId = selectedSampleQaEventIdsForCompletion[i];
                        SampleQaEvent sampleQaEvent = new SampleQaEvent();
                        sampleQaEvent.setId(sampleQaEventId);
                        sampleQaEventDAO.getData(sampleQaEvent);
                        if (sampleQaEvent.getCompletedDate() == null) {
                            sampleQaEvent.setCompletedDateForDisplay(dateAsText);
                            sampleQaEvent.setSysUserId(sysUserId);
                            sampleQaEventDAO.updateData(sampleQaEvent);
                        }

                    }
                }

                //first update completed dates
                if (selectedAnalysisQaEventIdsForCompletion != null
                        && selectedAnalysisQaEventIdsForCompletion.length > 0) {
                    for (int i = 0; i < selectedAnalysisQaEventIdsForCompletion.length; i++) {

                        String analysisQaEventId = selectedAnalysisQaEventIdsForCompletion[i];
                        AnalysisQaEvent analysisQaEvent = new AnalysisQaEvent();
                        analysisQaEvent.setId(analysisQaEventId);
                        analysisQaEventDAO.getData(analysisQaEvent);
                        if (analysisQaEvent.getCompletedDate() == null) {
                            analysisQaEvent.setCompletedDateForDisplay(dateAsText);
                            analysisQaEvent.setSysUserId(sysUserId);
                            analysisQaEventDAO.updateData(analysisQaEvent);
                        }

                    }
                }

                //bug 2500 now check if we added new Qa Events for sample
                if (listOfAddedQaEventIdsForSample != null && listOfAddedQaEventIdsForSample.size() > 0) {

                    Sample sample = new Sample();
                    sample.setAccessionNumber(accessionNumber);
                    sampleDAO.getSampleByAccessionNumber(sample);

                    if (!StringUtil.isNullorNill(sample.getId())) {
                        //insert all qaEvents selected for this sample if doesn't exist already
                        for (int j = 0; j < listOfAddedQaEventIdsForSample.size(); j++) {
                            //if this doesn't exist in in SAMPLE_QAEVENT already then insert it
                            QaEvent qaEvent = new QaEvent();
                            qaEvent.setId((String) listOfAddedQaEventIdsForSample.get(j));
                            qaEventDAO.getData(qaEvent);
                            if (qaEvent != null) {
                                SampleQaEvent sampleQaEvent = new SampleQaEvent();
                                sampleQaEvent.setSample(sample);
                                sampleQaEvent.setQaEvent(qaEvent);
                                sampleQaEvent = sampleQaEventDAO.getSampleQaEventBySampleAndQaEvent(sampleQaEvent);
                                if (sampleQaEvent != null) {
                                    //do nothing
                                } else {
                                    //insert this new analysis qa event
                                    sampleQaEvent = new SampleQaEvent();
                                    sampleQaEvent.setSample(sample);
                                    sampleQaEvent.setQaEvent(qaEvent);
                                    sampleQaEvent.setSysUserId(sysUserId);
                                    sampleQaEventDAO.insertData(sampleQaEvent);
                                }
                            }
                        }
                    }

                }

                //now check if we added new Actions
                if (listOfSampleQaEventIds != null && listOfSampleQaEventIds.size() > 0
                        && listOfAddedActionIdsForSample != null && listOfAddedActionIdsForSample.size() > 0) {

                    Sample sample = new Sample();
                    sample.setAccessionNumber(accessionNumber);
                    sampleDAO.getSampleByAccessionNumber(sample);

                    if (!StringUtil.isNullorNill(sample.getId())) {

                        SampleQaEvent sampleQaEvent = new SampleQaEvent();
                        sampleQaEvent.setSample(sample);
                        sampleQaEvents = sampleQaEventDAO.getSampleQaEventsBySample(sampleQaEvent);

                        for (int j = 0; j < sampleQaEvents.size(); j++) {
                            SampleQaEvent sampQaEvent = (SampleQaEvent) sampleQaEvents.get(j);
                            if (listOfSampleQaEventIds.contains(sampQaEvent.getId())) {

                                for (int k = 0; k < listOfAddedActionIdsForSample.size(); k++) {
                                    Action action = new Action();
                                    action.setId((String) listOfAddedActionIdsForSample.get(k));
                                    actionDAO.getData(action);

                                    //if this analysis qa event action doesn't already exist in ANALYSIS_QA_EVENT_ACTION then insert it
                                    if (action != null) {
                                        SampleQaEventAction sampQaEventAction = new SampleQaEventAction();
                                        sampQaEventAction.setAction(action);
                                        sampQaEventAction.setSampleQaEvent(sampQaEvent);
                                        sampQaEventAction = sampleQaEventActionDAO
                                                .getSampleQaEventActionBySampleQaEventAndAction(sampQaEventAction);
                                        if (sampQaEventAction != null) {
                                            //do nothing if already exists
                                        } else {
                                            //insert this new analysis qa event action
                                            sampQaEventAction = new SampleQaEventAction();
                                            sampQaEventAction.setSampleQaEvent(sampQaEvent);
                                            sampQaEventAction.setAction(action);
                                            sampQaEventAction.setCreatedDateForDisplay(dateAsText);
                                            sampQaEventAction.setSysUserId(sysUserId);
                                            //bugzilla 2481
                                            sampQaEventAction.setSystemUser(systemUser);
                                            sampleQaEventActionDAO.insertData(sampQaEventAction);
                                        }
                                    }
                                }

                            }
                        }
                    }
                }
                //end 2500

                //now check if we added new Qa Events
                if (listOfAddedQaEventIds != null && listOfAddedQaEventIds.size() > 0 && listOfTestIds != null
                        && listOfTestIds.size() > 0) {

                    Sample sample = new Sample();
                    sample.setAccessionNumber(accessionNumber);
                    sampleDAO.getSampleByAccessionNumber(sample);
                    List analyses = new ArrayList();

                    if (!StringUtil.isNullorNill(sample.getId())) {

                        SampleItem sampleItem = new SampleItem();
                        sampleItem.setSample(sample);
                        sampleItemDAO.getDataBySample(sampleItem);
                        if (sampleItem.getId() != null) {
                            //bugzilla 2227
                            analyses = analysisDAO.getMaxRevisionAnalysesBySample(sampleItem);
                        }
                    }

                    if (analyses != null) {
                        for (int i = 0; i < analyses.size(); i++) {
                            Analysis analysis = (Analysis) analyses.get(i);
                            if (listOfTestIds.contains(analysis.getTest().getId())) {
                                //insert all qaEvents selected for this test if doesn't exist already
                                for (int j = 0; j < listOfAddedQaEventIds.size(); j++) {
                                    //if this doesn't exist in in ANALYSIS_QAEVENT already then insert it
                                    QaEvent qaEvent = new QaEvent();
                                    qaEvent.setId((String) listOfAddedQaEventIds.get(j));
                                    qaEventDAO.getData(qaEvent);
                                    if (qaEvent != null) {
                                        AnalysisQaEvent analysisQaEvent = new AnalysisQaEvent();
                                        analysisQaEvent.setAnalysis(analysis);
                                        analysisQaEvent.setQaEvent(qaEvent);
                                        analysisQaEvent = analysisQaEventDAO
                                                .getAnalysisQaEventByAnalysisAndQaEvent(analysisQaEvent);
                                        if (analysisQaEvent != null) {
                                            //do nothing
                                        } else {
                                            //insert this new analysis qa event
                                            analysisQaEvent = new AnalysisQaEvent();
                                            analysisQaEvent.setAnalysis(analysis);
                                            analysisQaEvent.setQaEvent(qaEvent);
                                            analysisQaEvent.setSysUserId(sysUserId);
                                            analysisQaEventDAO.insertData(analysisQaEvent);
                                        }
                                    }
                                }

                            }
                        }
                    }

                }

                //now check if we added new Actions
                if (listOfAnalysisQaEventIds != null && listOfAnalysisQaEventIds.size() > 0
                        && listOfActionIds != null && listOfActionIds.size() > 0) {

                    Sample sample = new Sample();
                    sample.setAccessionNumber(accessionNumber);
                    sampleDAO.getSampleByAccessionNumber(sample);
                    List analyses = new ArrayList();

                    if (!StringUtil.isNullorNill(sample.getId())) {

                        SampleItem sampleItem = new SampleItem();
                        sampleItem.setSample(sample);
                        sampleItemDAO.getDataBySample(sampleItem);
                        if (sampleItem.getId() != null) {
                            //bugzilla 2227
                            analyses = analysisDAO.getMaxRevisionAnalysesBySample(sampleItem);
                        }
                    }

                    if (analyses != null) {
                        for (int i = 0; i < analyses.size(); i++) {
                            Analysis analysis = (Analysis) analyses.get(i);

                            AnalysisQaEvent analysisQaEvent = new AnalysisQaEvent();
                            analysisQaEvent.setAnalysis(analysis);
                            List analysisQaEvents = analysisQaEventDAO
                                    .getAnalysisQaEventsByAnalysis(analysisQaEvent);

                            for (int j = 0; j < analysisQaEvents.size(); j++) {
                                AnalysisQaEvent analQaEvent = (AnalysisQaEvent) analysisQaEvents.get(j);
                                if (listOfAnalysisQaEventIds.contains(analQaEvent.getId())) {

                                    for (int k = 0; k < listOfActionIds.size(); k++) {
                                        Action action = new Action();
                                        action.setId((String) listOfActionIds.get(k));
                                        actionDAO.getData(action);

                                        //if this analysis qa event action doesn't already exist in ANALYSIS_QA_EVENT_ACTION then insert it
                                        if (action != null) {
                                            AnalysisQaEventAction analQaEventAction = new AnalysisQaEventAction();
                                            analQaEventAction.setAction(action);
                                            analQaEventAction.setAnalysisQaEvent(analQaEvent);
                                            analQaEventAction = analysisQaEventActionDAO
                                                    .getAnalysisQaEventActionByAnalysisQaEventAndAction(
                                                            analQaEventAction);
                                            if (analQaEventAction != null) {
                                                //do nothing if already exists
                                            } else {
                                                //insert this new analysis qa event action
                                                analQaEventAction = new AnalysisQaEventAction();
                                                analQaEventAction.setAnalysisQaEvent(analQaEvent);
                                                analQaEventAction.setAction(action);
                                                analQaEventAction.setCreatedDateForDisplay(dateAsText);
                                                analQaEventAction.setSysUserId(sysUserId);
                                                //bugzilla 2481
                                                analQaEventAction.setSystemUser(systemUser);
                                                analysisQaEventActionDAO.insertData(analQaEventAction);
                                            }
                                        }
                                    }

                                }
                            }

                        }
                    }

                }
                tx.commit();

            } catch (LIMSRuntimeException lre) {
                //bugzilla 2154
                LogEvent.logError("QaEventsEntryUpdateAction", "performAction()", lre.toString());
                tx.rollback();

                errors = new ActionMessages();
                ActionError error = null;
                if (lre.getException() instanceof org.hibernate.StaleObjectStateException) {

                    error = new ActionError("errors.OptimisticLockException", null, null);
                } else {
                    error = new ActionError("errors.UpdateException", null, null);
                }
                errors.add(ActionMessages.GLOBAL_MESSAGE, error);
                saveErrors(request, errors);
                request.setAttribute(Globals.ERROR_KEY, errors);

                forward = FWD_FAIL;

            } finally {
                HibernateUtil.closeSession();
            }

        }

        PropertyUtils.setProperty(dynaForm, "accessionNumber", accessionNumber);
        PropertyUtils.setProperty(dynaForm, "selectedAnalysisQaEventIdsForCompletion",
                selectedAnalysisQaEventIdsForCompletion);

        //bugzilla 2500
        PropertyUtils.setProperty(dynaForm, "selectedSampleQaEventIdsForCompletion",
                selectedSampleQaEventIdsForCompletion);

        //bugzilla 2566 for now qa events is for human and newborn
        //PropertyUtils.setProperty(dynaForm, "domain", domain);
        PropertyUtils.setProperty(dynaForm, "testQaEvents", testQaEvents);
        //bugzilla 2501
        PropertyUtils.setProperty(dynaForm, "multipleSampleMode", multipleSampleMode);
        PropertyUtils.setProperty(dynaForm, "selectedQaEventsCategoryId", qaEventCategoryId);

        return mapping.findForward(forward);
    }

    protected String getPageTitleKey() {
        if (isNew) {
            return "qaeventsentry.add.title";
        } else {
            return "qaeventsentry.edit.title";
        }
    }

    protected String getPageTitleKeyParameter(HttpServletRequest request, ActionForm form) {
        BaseActionForm dynaForm = (BaseActionForm) form;
        String accn = "";
        if (dynaForm.get("accessionNumber") != null) {
            accn = (String) dynaForm.get("accessionNumber");
        }
        return accn;
    }

    protected String getPageSubtitleKey() {
        if (isNew) {
            return "qaeventsentry.add.subtitle";
        } else {
            return "qaeventsentry.edit.subtitle";
        }
    }

}