gov.nih.nci.cabig.caaers.web.ae.SubmitReportTab.java Source code

Java tutorial

Introduction

Here is the source code for gov.nih.nci.cabig.caaers.web.ae.SubmitReportTab.java

Source

/*******************************************************************************
 * Copyright SemanticBits, Northwestern University and Akaza Research
 * 
 * Distributed under the OSI-approved BSD 3-Clause License.
 * See http://ncip.github.com/caaers/LICENSE.txt for details.
 ******************************************************************************/
package gov.nih.nci.cabig.caaers.web.ae;

import gov.nih.nci.cabig.caaers.domain.report.Report;
import gov.nih.nci.cabig.caaers.domain.report.ReportVersion;
import gov.nih.nci.cabig.caaers.service.ReportSubmissionService;
import gov.nih.nci.cabig.caaers.web.fields.DefaultInputFieldGroup;
import gov.nih.nci.cabig.caaers.web.fields.InputField;
import gov.nih.nci.cabig.caaers.web.fields.InputFieldAttributes;
import gov.nih.nci.cabig.caaers.web.fields.InputFieldFactory;
import gov.nih.nci.cabig.caaers.web.fields.InputFieldGroup;
import gov.nih.nci.cabig.caaers.web.fields.InputFieldGroupMap;
import gov.nih.nci.cabig.caaers.web.fields.TabWithFields;
import gov.nih.nci.cabig.caaers.web.utils.WebUtils;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.validator.EmailValidator;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.validation.Errors;

/**
 * @author Krikor Krumlian
 */
public class SubmitReportTab extends TabWithFields<SubmitExpeditedAdverseEventCommand> {

    protected final Log log = LogFactory.getLog(getClass());
    protected ReportSubmissionService reportSubmissionService;

    public SubmitReportTab() {
        super("Submission", "Recipients", "ae/submitReport");
    }

    @Override
    public InputFieldGroupMap createFieldGroups(SubmitExpeditedAdverseEventCommand command) {

        InputFieldGroupMap map = new InputFieldGroupMap();
        InputFieldGroup ccReport = new DefaultInputFieldGroup("ccReport");
        InputField cc = InputFieldFactory.createTextArea("report.lastVersion.ccEmails", "Cc");
        InputFieldAttributes.setColumns(cc, 50);
        ccReport.getFields().add(cc);
        map.addInputFieldGroup(ccReport);
        return map;
    }

    @Override
    public Map<String, Object> referenceData(SubmitExpeditedAdverseEventCommand submitCommand) {
        Report report = submitCommand.getReport();
        submitCommand.refreshReportDeliveries(report);
        return super.referenceData(submitCommand);
    }

    @Override
    protected void validate(SubmitExpeditedAdverseEventCommand command, BeanWrapper commandBean,
            Map<String, InputFieldGroup> fieldGroups, Errors errors) {
        Report report = command.getReport();
        ReportVersion lastVersion = report.getLastVersion();
        String emailString = lastVersion.getCcEmails();

        if (emailString != null) {
            String[] emails = emailString.split(",");
            for (String email : emails) {
                if (!isEmailValid(email)) {
                    InputField field = fieldGroups.get("ccReport").getFields().get(0);
                    errors.rejectValue(field.getPropertyName(), "SAE_007", new Object[] { field.getDisplayName() },
                            "Not Valid " + field.getDisplayName());
                    break;
                }
            }
        }
    }

    public boolean isEmailValid(String email) {
        String trimmedEmail = (email != null) ? email.trim() : email;
        return EmailValidator.getInstance().isValid(trimmedEmail);
    }

    @Override
    public void postProcess(HttpServletRequest request, SubmitExpeditedAdverseEventCommand command, Errors errors) {
        log.debug("In postProcess");

        int targetPage = WebUtils.getTargetPage(request);

        if (log.isDebugEnabled())
            log.debug("Should process SubmitReportTab:postProcess (back button) ? " + !(targetPage < 2));
        if (targetPage < 2)
            return; //only process if we are moving forward.

        if (log.isDebugEnabled())
            log.debug("Should process SubmitReportTab:postProcess (errors) ? " + !errors.hasErrors());
        if (errors.hasErrors())
            return;

        if (log.isDebugEnabled())
            log.debug("Report active ? " + command.getReport().isActive());
        if (log.isDebugEnabled())
            log.debug("Report submitted already ? " + command.isSubmissionInprogress());

        if (command.getReport().isActive() && (!command.isSubmissionInprogress())) {
            reportSubmissionService.submitReport(command.getReport());
            command.setSubmissionInprogress(true);
        }
    }

    public ReportSubmissionService getReportSubmissionService() {
        return reportSubmissionService;
    }

    @Required
    public void setReportSubmissionService(ReportSubmissionService reportSubmissionService) {
        this.reportSubmissionService = reportSubmissionService;
    }
}