gov.nih.nci.cabig.caaers.web.admin.EditOrganizationController.java Source code

Java tutorial

Introduction

Here is the source code for gov.nih.nci.cabig.caaers.web.admin.EditOrganizationController.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.admin;

import gov.nih.nci.cabig.caaers.domain.Organization;
import gov.nih.nci.cabig.ctms.web.tabs.Flow;

import java.util.List;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.web.servlet.ModelAndView;

/**
 * @author Saurbah Agrawal
 */
public class EditOrganizationController extends OrganizationController<Organization> {

    private static final Log log = LogFactory.getLog(EditOrganizationController.class);

    public EditOrganizationController() {
        setBindOnNewForm(true);
    }

    // /LOGIC

    @Override
    protected Object formBackingObject(final HttpServletRequest request) throws ServletException {
        request.getSession().removeAttribute(getReplacedCommandSessionAttributeName(request));
        Organization organization = organizationDao
                .getById(Integer.parseInt(request.getParameter("organizationId")));

        if (log.isDebugEnabled()) {
            log.debug("Retrieved Organization :" + String.valueOf(organization));
        }

        return organization;
    }

    @Override
    protected Organization save(final Organization organization, final Errors errors) {
        if (errors.hasErrors()) {
            return organization;
        }
        organizationRepository.createOrUpdate(organization);
        return organization;
    }

    @Override
    protected boolean isSummaryEnabled() {
        return true;
    }

    @Override
    protected void layoutTabs(final Flow<Organization> flow) {
        flow.addTab(new OrganizationTab());
    }

    @SuppressWarnings("unchecked")
    @Override
    protected ModelAndView processFinish(final HttpServletRequest request, final HttpServletResponse response,
            final Object command, final BindException errors) throws Exception {
        ModelAndView modelAndView = new ModelAndView("admin/organization_confirmation");
        if (!errors.hasErrors()) {
            Organization organization = (Organization) command;
            if ("saveRemoteOrg".equals(request.getParameter("_action")) && organization.getId() != null) {
                organizationDao.evict(organization);
                Organization remoteOrganization = organization.getExternalOrganizations()
                        .get(Integer.parseInt(request.getParameter("_selected")));
                organizationRepository.convertToRemote(organization, remoteOrganization);
                organization.setName(remoteOrganization.getName());
                organization.setNciInstituteCode(remoteOrganization.getNciInstituteCode());
                organization.setDescriptionText(remoteOrganization.getDescriptionText());
                modelAndView.addAllObjects(errors.getModel());
                modelAndView.getModel().put("flashMessage", "Successfully synched the Organization");
            } else {
                organizationRepository.createOrUpdate(organization);
                modelAndView.getModel().put("flashMessage", "Successfully updated the Organization");
                modelAndView.addAllObjects(errors.getModel());
            }
        }
        return modelAndView;
    }

    @Override
    protected void onBindAndValidate(HttpServletRequest request, Object command, BindException errors, int page)
            throws Exception {
        Organization organization = (Organization) command;
        if ("syncOrganization".equals(request.getParameter("_action"))) {
            //TODO: searching only on nci-id , shud be able to search by name or nci-id
            List<Organization> remoteOrgs = organizationRepository
                    .searchRemoteOrganization(organization.getNciInstituteCode(), "nciInstituteCode");
            if (remoteOrgs != null && remoteOrgs.size() > 0) {
                organization.setExternalOrganizations(remoteOrgs);
                errors.reject("REMOTE_ORG_EXISTS", "Organization with NCI Institute Code "
                        + organization.getNciInstituteCode() + " exisits in external system");
            }
        }
    }
}