com.swiftcorp.portal.mailinfo.web.MailinfoDispatchAction.java Source code

Java tutorial

Introduction

Here is the source code for com.swiftcorp.portal.mailinfo.web.MailinfoDispatchAction.java

Source

/*
 * @ (#) MailinfoDispatchAction.java
 * 
 * Copyright (c) 2010 ClickDiagnostics Inc. All Rights Reserved. This software is the
 * confidential and proprietary information of ClickDiagnostics ("Confidential
 * Information"). You shall not disclose such Confidential Information and shall
 * use it only in accordance with the terms of the license agreement you entered
 * into with ClickDiagnostics.
 */
package com.swiftcorp.portal.mailinfo.web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.validator.DynaValidatorActionForm;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import com.swiftcorp.portal.common.GlobalConstants;
import com.swiftcorp.portal.common.exception.BusinessRuleViolationException;
import com.swiftcorp.portal.common.exception.SystemException;
import com.swiftcorp.portal.common.search.SearchOperationResult;
import com.swiftcorp.portal.common.search.SearchUtil;
import com.swiftcorp.portal.common.util.WebUtils;
import com.swiftcorp.portal.common.web.ForwardNames;
import com.swiftcorp.portal.common.web.ForwardUtil;
import com.swiftcorp.portal.common.web.MessageKeys;
import com.swiftcorp.portal.common.web.SESSION_KEYS;
import com.swiftcorp.portal.user.dto.UserDTO;
import com.swiftcorp.portal.mailinfo.dto.MailinfoDTO;
import com.swiftcorp.portal.group.service.IGroupService;
import com.swiftcorp.portal.mailinfo.MailinfoSuccessResult;
import com.swiftcorp.portal.mailinfo.service.IMailinfoService;
import com.swiftcorp.portal.mailinfo.web.MailinfoSearchUtils;
import com.swiftcorp.portal.common.util.DTOObjectReflectionUtil;

/*
 * @author swift corporation
 * @since mar 3, 2011
 */
public class MailinfoDispatchAction extends DispatchAction {
    protected static final Log log = LogFactory.getLog(MailinfoDispatchAction.class);
    @SuppressWarnings("unused")
    private IMailinfoService mailinfoService;
    @SuppressWarnings("unused")
    private IGroupService groupService;

    public void setGroupService(IGroupService groupService) {
        this.groupService = groupService;
    }

    public void setMailinfoService(IMailinfoService mailinfoService) {
        this.mailinfoService = mailinfoService;
    }

    public ActionForward initialLoad(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        JSONArray arr2 = new JSONArray();
        JSONArray arr3 = new JSONArray();
        JSONArray arr4 = new JSONArray();
        JSONObject mailObj_group = new JSONObject();
        JSONObject mailObj = new JSONObject();
        JSONArray mail_dtl = new JSONArray();
        JSONObject mails = new JSONObject();
        mails.put("share_mail", mailObj);
        mails.put("personal_mail", mail_dtl);
        mails.put("company_unread", arr4);
        mails.put("company_all", arr3);
        mails.put("messages", arr3);
        log.info("promptMailinfoSearchSystemLevel() : enter");
        try {
            MailinfoSearchUtils.prepareSearchPage(request);
            String searchSqlQuery = MailinfoSearchUtils.prepareSqlQuery(request);
            SearchUtil.prepareRequest(request);
            SearchOperationResult searchOperationResult = mailinfoService.search(searchSqlQuery);
            log.info("searchMailinfoFromSystemLevel():: searchOperationResult> size = "
                    + searchOperationResult.getTotalRowCount());
            request.setAttribute(SESSION_KEYS.MAILINFO_SEARCH_RESULT, searchOperationResult);
            request.setAttribute(SESSION_KEYS.MAILINFO_INITIAL_LOAD, mails);
            request.setAttribute(SESSION_KEYS.IS_SEARCH_RESULT_SHOW, true);
            MailinfoSearchUtils.prepareSearchPage(request);
        } catch (Exception e) {
            log.info("promptMailinfoSearchSystemLevel() :", e);
            throw e;
        }
        // show the mailinfo search page
        return mapping.findForward(ForwardNames.MAILINFO_INITIAL_LOAD);
    }

    public ActionForward inbox(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_INBOX);
    }

    public ActionForward checkMail(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_CHECK_MAIL);
    }

    public ActionForward countInbox(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_COUNT_INBOX);
    }

    public ActionForward companyInbox(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_COMPANY_INBOX);
    }

    public ActionForward mailDtl(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_MAIL_DTL);
    }

    public ActionForward markAsRead(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_MARK_AS_READ);
    }

    public ActionForward markAsUnRead(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_MARK_AS_UNREAD);
    }

    public ActionForward sessionCheck(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_SESSION_CHECK);
    }

    public ActionForward sendMail(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_SEND_MAIL);
    }

    public ActionForward saveAsDraft(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_SAVE_AS_DRAFT);
    }

    public ActionForward attachments(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_ATTACHMENTS);
    }

    public ActionForward emailSettings(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_EMAIL_SETTINGS);
    }

    public ActionForward downloadAttachment(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_EMAIL_DOWNLOAD_ATTACHMENTS);
    }

    public ActionForward mailSearch(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_EMAIL_SEARCH);
    }

    public ActionForward shareMail(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return mapping.findForward(ForwardNames.MAILINFO_EMAIL_SHARE);
    }

    public ActionForward promptMailinfoSearchSystemLevel(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        log.info("promptMailinfoSearchSystemLevel() : enter");
        try {
            MailinfoSearchUtils.prepareSearchPage(request);
            String searchSqlQuery = MailinfoSearchUtils.prepareSqlQuery(request);
            SearchUtil.prepareRequest(request);
            SearchOperationResult searchOperationResult = mailinfoService.search(searchSqlQuery);
            log.info("searchMailinfoFromSystemLevel():: searchOperationResult> size = "
                    + searchOperationResult.getTotalRowCount());
            request.setAttribute(SESSION_KEYS.MAILINFO_SEARCH_RESULT, searchOperationResult);
            request.setAttribute(SESSION_KEYS.IS_SEARCH_RESULT_SHOW, true);
            MailinfoSearchUtils.prepareSearchPage(request);
        } catch (Exception e) {
            log.info("promptMailinfoSearchSystemLevel() :", e);
            throw e;
        }
        // show the mailinfo search page
        return mapping.findForward(ForwardNames.MAILINFO_SEARCH_SYSTEM_LEVEL);
    }

    public ActionForward promptExtMailUserSearchSystemLevel(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        log.info("promptMailinfoSearchSystemLevel() : enter");
        try {
            MailinfoSearchUtils.prepareSearchPage(request);
            String searchSqlQuery = MailinfoSearchUtils.prepareSqlQuery(request);
            SearchUtil.prepareRequest(request);
            SearchOperationResult searchOperationResult = mailinfoService.search(searchSqlQuery);
            log.info("searchMailinfoFromSystemLevel():: searchOperationResult> size = "
                    + searchOperationResult.getTotalRowCount());
            System.out.println("OPERATION RESULT SIZE::" + searchOperationResult.getTotalRowCount());
            request.setAttribute(SESSION_KEYS.MAILINFO_SEARCH_RESULT, searchOperationResult);
            request.setAttribute(SESSION_KEYS.IS_SEARCH_RESULT_SHOW, true);
            MailinfoSearchUtils.prepareSearchPage(request);
        } catch (Exception e) {
            log.info("promptMailinfoSearchSystemLevel() :", e);
            throw e;
        }
        // show the mailinfo search page
        return mapping.findForward(ForwardNames.EXT_MAILINFO_SEARCH_SYSTEM_LEVEL);
    }

    public ActionForward promptExtMailinfoSearchSystemLevel(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        log.info("promptMailinfoSearchSystemLevel() : enter");
        try {
            MailinfoSearchUtils.prepareSearchPage(request);
            String searchSqlQuery = MailinfoSearchUtils.prepareSqlQuery(request);
            SearchUtil.prepareRequest(request);
            SearchOperationResult searchOperationResult = mailinfoService.search(searchSqlQuery);
            log.info("searchMailinfoFromSystemLevel():: searchOperationResult> size = "
                    + searchOperationResult.getTotalRowCount());
            System.out.println("OPERATION RESULT SIZE::" + searchOperationResult.getTotalRowCount());
            request.setAttribute(SESSION_KEYS.MAILINFO_SEARCH_RESULT, searchOperationResult);
            request.setAttribute(SESSION_KEYS.IS_SEARCH_RESULT_SHOW, true);
            MailinfoSearchUtils.prepareSearchPage(request);
        } catch (Exception e) {
            log.info("promptMailinfoSearchSystemLevel() :", e);
            throw e;
        }
        // show the mailinfo search page
        return mapping.findForward(ForwardNames.EXT_MAILINFO_SEARCH_SYSTEM_LEVEL);
    }

    public ActionForward promptMailinfoSearchGroupLevel(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        log.info("promptMailinfoSearchGroupLevel() : enter");
        try {
            // here we want to load the mailinfo
            String searchSqlQuery = MailinfoSearchUtils.prepareSqlQuery(request);
            SearchUtil.prepareRequest(request);

            SearchOperationResult searchOperationResult = mailinfoService.search(searchSqlQuery);
            log.info("searchMailinfoFromSystemLevel():: searchOperationResult> size = "
                    + searchOperationResult.getTotalRowCount());
            request.setAttribute(SESSION_KEYS.MAILINFO_SEARCH_RESULT, searchOperationResult);
            request.setAttribute(SESSION_KEYS.IS_SEARCH_RESULT_SHOW, true);
            MailinfoSearchUtils.prepareSearchPage(request);
        } catch (Exception e) {
            log.info("promptMailinfoSearchGroupLevel() :", e);
            throw e;
        }
        // show the mailinfo search page
        return mapping.findForward(ForwardNames.MAILINFO_SEARCH_GROUP_LEVEL);
    }

    public ActionForward promptAddMailinfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        log.info("promptAddMailinfoHome() : enter");
        DynaValidatorActionForm mailinfoForm = (DynaValidatorActionForm) form;
        mailinfoForm.set("mailinfo", new MailinfoDTO());
        request.getSession().setAttribute(SESSION_KEYS.OPERATION_TYPE, GlobalConstants.ADD_OPERATION);
        return mapping.findForward(ForwardNames.PROMPT_ADD_MAILINFO);
    }

    public ActionForward addMailinfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws SystemException, BusinessRuleViolationException, Exception {
        log.info("addMailinfo() : Enter");
        HttpSession session = request.getSession();
        DynaValidatorActionForm mailinfoForm = (DynaValidatorActionForm) form;
        MailinfoDTO mailinfoDTO = (MailinfoDTO) mailinfoForm.get("mailinfo");
        mailinfoDTO = new MailinfoDTO();
        DTOObjectReflectionUtil.populateDTOFromRequest(request, mailinfoDTO);
        String[][] messageArgValues = { { mailinfoDTO.getUniqueCode() } };
        MailinfoSuccessResult result = (MailinfoSuccessResult) mailinfoService.add(mailinfoDTO);
        WebUtils.setSuccessMessages(request, MessageKeys.ADD_SUCCESS_MESSAGE_KEYS, messageArgValues);
        log.info("addMailinfo() : Exit");
        return promptSuccessAddMailinfo(mapping, form, request, response);
    }

    public ActionForward searchMailinfoFromSystemLevel(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws SystemException, BusinessRuleViolationException {
        log.info("searchMailinfoFromSystemLevel():: Enter");
        String searchSqlQuery = MailinfoSearchUtils.prepareSqlQuery(request);
        SearchUtil.prepareRequest(request);

        SearchOperationResult searchOperationResult = mailinfoService.search(searchSqlQuery);
        log.info("searchMailinfoFromSystemLevel():: searchOperationResult> size = "
                + searchOperationResult.getTotalRowCount());
        request.setAttribute(SESSION_KEYS.MAILINFO_SEARCH_RESULT, searchOperationResult);
        MailinfoSearchUtils.prepareSearchPage(request);
        log.info("searchMailinfoFromSystemLevel()::Exit");
        return mapping.findForward(ForwardNames.MAILINFO_SEARCH_SYSTEM_LEVEL);
    }

    public ActionForward searchMailinfoFromGroupLevel(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws SystemException, BusinessRuleViolationException {
        log.info("searchMailinfoFromGroupLevel():: Enter");
        String searchSqlQuery = MailinfoSearchUtils.prepareSqlQuery(request);
        SearchUtil.prepareRequest(request);

        SearchOperationResult searchOperationResult = mailinfoService.search(searchSqlQuery);
        log.info("searchMailinfoFromGroupLevel():: searchOperationResult> size = "
                + searchOperationResult.getTotalRowCount());
        MailinfoSearchUtils.prepareSearchPage(request);
        request.setAttribute(SESSION_KEYS.MAILINFO_SEARCH_RESULT, searchOperationResult);
        log.info("searchMailinfoFromGroupLevel()::Exit");
        return mapping.findForward(ForwardNames.MAILINFO_SEARCH_GROUP_LEVEL);
    }

    /**
     * Needs authenticated session to exist
     */
    public ActionForward promptModifyMailinfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws RuntimeException, Exception {
        log.info("promptModifyMailinfo() : Enter");
        Long componentId = WebUtils.getComponentId(request);
        log.info("promptModifyMailinfo() : componentId = " + componentId);
        MailinfoDTO mailinfoDTO = (MailinfoDTO) mailinfoService.get(componentId);
        DynaValidatorActionForm dynaValidatorActionForm = (DynaValidatorActionForm) form;
        dynaValidatorActionForm.set("mailinfo", mailinfoDTO);
        request.getSession().setAttribute(SESSION_KEYS.OPERATION_TYPE, GlobalConstants.MODIFY_OPERATION);
        log.info("promptModifyMailinfo() : Exit");
        return mapping.findForward(ForwardNames.PROMPT_MODIFY_MAILINFO);
    }

    public ActionForward modifyMailinfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws SystemException, BusinessRuleViolationException, Exception {
        log.info("modifyMailinfo() : Enter");
        DynaValidatorActionForm mailinfoForm = (DynaValidatorActionForm) form;
        Long componentId = WebUtils.getComponentId(request);
        log.info("promptModifyMailinfo() : componentId = " + componentId);
        MailinfoDTO mailinfoDTO = (MailinfoDTO) mailinfoService.get(componentId);
        DTOObjectReflectionUtil.populateDTOFromRequest(request, mailinfoDTO);

        String[][] messageArgValues = { { mailinfoDTO.getUniqueCode() } };
        mailinfoService.modify(mailinfoDTO);
        WebUtils.setSuccessMessages(request, MessageKeys.MODIFY_SUCCESS_MESSAGE_KEYS, messageArgValues);
        log.info("modifyMailinfo() : Exit");
        return promptSuccessAddMailinfo(mapping, form, request, response);
    }

    public ActionForward promptSuccessAddMailinfo(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws SystemException, BusinessRuleViolationException, Exception {
        log.info("successFormSubmitMailinfo() :");
        return mapping.findForward(ForwardNames.EXT_FORM_ADD_SUCCESS);
    }

    public ActionForward cancelMailinfoOperation(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        log.info("cancelMailinfoOperation() :");
        UserDTO usrDTO = (UserDTO) request.getSession().getAttribute(SESSION_KEYS.USER);
        int accessLevel = usrDTO.getRole().getAccessLevel();

        if (accessLevel == GlobalConstants.SYSTEM_LEVEL) {
            return promptMailinfoSearchSystemLevel(mapping, form, request, response);
        } else if (accessLevel == GlobalConstants.GROUP_LEVEL) {
            return promptMailinfoSearchGroupLevel(mapping, form, request, response);
        }
        return promptMailinfoSearchSystemLevel(mapping, form, request, response);
    }

    public ActionForward cancelSearchMailinfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws SystemException, BusinessRuleViolationException, Exception {
        log.info("cancelSearchMailinfo() :");
        return ForwardUtil.getInstance().promtHomePage(mapping, form, request, response);
    }

}