com.krawler.spring.organizationChart.organizationChartController.java Source code

Java tutorial

Introduction

Here is the source code for com.krawler.spring.organizationChart.organizationChartController.java

Source

/*
 * Copyright (C) 2012  Krawler Information Systems Pvt Ltd
 * All rights reserved.
 * 
 * This program 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.
 * 
 * This program 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.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/
package com.krawler.spring.organizationChart;

import com.krawler.common.admin.User;
import com.krawler.common.util.AuditAction;
import com.krawler.common.util.StringUtil;
import com.krawler.hrms.ess.Empprofile;
import com.krawler.spring.auditTrailModule.auditTrailDAO;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import com.krawler.spring.organizationChart.bizservice.OrganizationServiceDAO;
import com.krawler.spring.sessionHandler.sessionHandlerImpl;
import com.krawler.utils.json.base.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;

import org.springframework.context.MessageSource;
import org.springframework.context.MessageSourceAware;
import org.springframework.orm.hibernate3.HibernateTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import org.springframework.web.servlet.support.RequestContextUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 *
 * @author Kuldeep Singh
 */
public class organizationChartController extends MultiActionController implements MessageSourceAware {

    private OrganizationServiceDAO organizationService;
    private sessionHandlerImpl sessionHandlerImplObj;
    private HibernateTransactionManager txnManager;
    private String successView;
    private auditTrailDAO auditTrailDAOObj;
    private MessageSource messageSource;

    private static final Log logger = LogFactory.getLog(organizationChartController.class);

    public void setTxnManager(HibernateTransactionManager txManager) {
        this.txnManager = txManager;
    }

    public void setOrganizationServiceDAO(OrganizationServiceDAO organizationService) {
        this.organizationService = organizationService;
    }

    public void setsessionHandlerImpl(sessionHandlerImpl sessionHandlerImplObj1) {
        this.sessionHandlerImplObj = sessionHandlerImplObj1;
    }

    public String getSuccessView() {
        return successView;
    }

    public void setSuccessView(String successView) {
        this.successView = successView;
    }

    public void setAuditTrailDAO(auditTrailDAO auditTrailDAOObj1) {
        this.auditTrailDAOObj = auditTrailDAOObj1;
    }

    @Override
    public void setMessageSource(MessageSource ms) {
        this.messageSource = ms;
    }

    public ModelAndView getUnmappedUsers(HttpServletRequest request, HttpServletResponse response) {
        JSONObject jobj = new JSONObject();
        JSONObject jobj1 = new JSONObject();
        try {

            String companyid = sessionHandlerImplObj.getCompanyid(request);
            Locale locale = RequestContextUtils.getLocale(request);
            jobj = organizationService.getUnmappedUsers(companyid, locale);

            jobj1.put("valid", true);
            jobj1.put("data", jobj);
            jobj1.put("success", true);

        } catch (Exception e) {
            logger.warn("General exception in getUnmappedUsers()", e);
        }
        return new ModelAndView("jsonView", "model", jobj1.toString());
    }

    // Organisation Chart - insert node
    public ModelAndView insertNode(HttpServletRequest request, HttpServletResponse response) {
        JSONObject jobj = new JSONObject();
        JSONObject jobj1 = new JSONObject();
        String retMsg = "";
        //Create transaction
        DefaultTransactionDefinition def = new DefaultTransactionDefinition();
        def.setName("JE_Tx");
        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
        def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_UNCOMMITTED);
        TransactionStatus status = txnManager.getTransaction(def);
        try {

            String parentid = StringUtil.checkForNull(request.getParameter("fromId"));
            String childid = StringUtil.checkForNull(request.getParameter("userid"));

            HashMap<String, Object> hm = organizationService.insertNode(parentid, childid);

            boolean success = Boolean.parseBoolean(hm.get("success").toString());
            User parent = (User) hm.get("parent");
            User child = (User) hm.get("child");

            if (parent != null && child != null) {
                auditTrailDAOObj.insertAuditLog(AuditAction.ORGANIZATION_CHART_NODE_ASSIGNED,
                        child.getFirstName() + " " + child.getLastName() + " re-assigned to "
                                + parent.getFirstName() + " " + parent.getLastName(),
                        request, "0");
            }

            if (success) {
                retMsg = "{success:true}";
            } else {
                retMsg = "{success:false,msg:\""
                        + messageSource.getMessage("hrms.common.not.assign.parent.node.employee.role", null,
                                "Could not assign because, parent node has Employee role.",
                                RequestContextUtils.getLocale(request))
                        + "\"}";
            }
            jobj.put("data", retMsg);

            jobj1.put("valid", true);
            jobj1.put("data", jobj);
            jobj1.put("success", true);
            txnManager.commit(status);
        } catch (Exception e) {
            logger.warn("General exception in insertNode()", e);
            txnManager.rollback(status);
        }
        return new ModelAndView("jsonView", "model", jobj1.toString());
    }

    public ModelAndView getMappedUsers(HttpServletRequest request, HttpServletResponse response) {
        JSONObject jobj = new JSONObject();
        JSONObject jobj1 = new JSONObject();
        try {
            String userid = sessionHandlerImplObj.getUserid(request);
            String companyid = sessionHandlerImplObj.getCompanyid(request);
            Locale locale = RequestContextUtils.getLocale(request);
            jobj = organizationService.getMappedUsers(userid, companyid, locale);

            jobj1.put("valid", true);
            jobj1.put("data", jobj);
            jobj1.put("success", true);
        } catch (Exception e) {
            logger.warn("General exception in getMappedUsers()", e);
        }
        return new ModelAndView("jsonView", "model", jobj1.toString());
    }

    public ModelAndView getGridMappedUsers(HttpServletRequest request, HttpServletResponse response) {
        JSONObject jobj = new JSONObject();
        JSONObject jobj1 = new JSONObject();

        try {
            String childid = request.getParameter("nodeid");
            String parentid = request.getParameter("parentid");
            String userid = sessionHandlerImplObj.getUserid(request);
            String companyid = sessionHandlerImplObj.getCompanyid(request);
            Locale locale = RequestContextUtils.getLocale(request);
            jobj = organizationService.getGridMappedUsers(parentid, childid, userid, companyid, locale);

            jobj1.put("valid", true);
            jobj1.put("data", jobj);
            jobj1.put("success", true);
        } catch (Exception e) {
            logger.warn("General exception in getGridMappedUsers()", e);
        }
        return new ModelAndView("jsonView", "model", jobj1.toString());
    }

    public ModelAndView updateNode(HttpServletRequest request, HttpServletResponse response) {
        JSONObject jobj = new JSONObject();
        JSONObject jobj1 = new JSONObject();
        String retMsg = "";
        //Create transaction
        DefaultTransactionDefinition def = new DefaultTransactionDefinition();
        def.setName("JE_Tx");
        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
        def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_UNCOMMITTED);
        TransactionStatus status = txnManager.getTransaction(def);
        try {

            String childid = request.getParameter("nodeid");
            String parentid = request.getParameter("fromId");

            HashMap<String, Object> hm = organizationService.updateNode(parentid, childid);

            boolean success = Boolean.parseBoolean(hm.get("success").toString());
            User parent = (User) hm.get("parent");
            User child = (User) hm.get("child");

            if (parent != null && child != null) {
                auditTrailDAOObj.insertAuditLog(AuditAction.ORGANIZATION_CHART_NODE_ASSIGNED,
                        child.getFirstName() + " " + child.getLastName() + " re-assigned to "
                                + parent.getFirstName() + " " + parent.getLastName(),
                        request, "0");
            }

            if (success) {
                retMsg = "{success:true}";
            } else {
                retMsg = "{success:false,msg:\""
                        + messageSource.getMessage("hrms.common.not.assign.parent.node.employee.role", null,
                                "Could not assign because, parent node has Employee role.",
                                RequestContextUtils.getLocale(request))
                        + "\"}";
            }
            jobj.put("data", retMsg);

            jobj1.put("valid", true);
            jobj1.put("data", jobj);
            jobj1.put("success", true);
            txnManager.commit(status);
        } catch (Exception e) {
            logger.warn("General exception in updateNode()", e);
            txnManager.rollback(status);
        }
        return new ModelAndView("jsonView", "model", jobj1.toString());
    }

    public ModelAndView deleteNode(HttpServletRequest request, HttpServletResponse response) {
        JSONObject jobj = new JSONObject();
        JSONObject jobj1 = new JSONObject();
        //Create transaction
        DefaultTransactionDefinition def = new DefaultTransactionDefinition();
        def.setName("JE_Tx");
        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
        def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_UNCOMMITTED);
        TransactionStatus status = txnManager.getTransaction(def);
        try {

            boolean success = false;
            String nodeid = request.getParameter("nodeId");

            if (!StringUtil.isNullOrEmpty(nodeid)) {
                HashMap<String, Object> deleteJobj = organizationService.deleteNode(nodeid);

                success = Boolean.parseBoolean(deleteJobj.get("success").toString());

                List<Empprofile> ll = (List<Empprofile>) deleteJobj.get("childList");
                Empprofile emp = null;

                if (deleteJobj.get("deletedEmployee") != null) {
                    emp = (Empprofile) deleteJobj.get("deletedEmployee");
                }

                User parentEmp = null;

                if (deleteJobj.get("parentEmployee") != null) {
                    parentEmp = (User) deleteJobj.get("parentEmployee");
                }

                if (parentEmp != null && emp != null) {

                    if (emp != null) {

                        String details = emp.getUserLogin().getUserName() + " [ "
                                + emp.getUserLogin().getUser().getFirstName() + " "
                                + emp.getUserLogin().getUser().getLastName() + " ] Un-assigned from "
                                + parentEmp.getFirstName() + " " + parentEmp.getLastName()
                                + " , and removed from Organization.";
                        auditTrailDAOObj.insertAuditLog(AuditAction.ORGANIZATION_CHART_NODE_DELETED, details,
                                request, "0");
                    }

                    for (Empprofile e : ll) {
                        String details = e.getUserLogin().getUser().getFirstName() + " "
                                + e.getUserLogin().getUser().getLastName() + "  re-assigned to "
                                + parentEmp.getFirstName() + " " + parentEmp.getLastName() + "  ";

                        auditTrailDAOObj.insertAuditLog(AuditAction.ORGANIZATION_CHART_NODE_ASSIGNED, details,
                                request, "0");
                    }
                }

            }

            jobj.put("data", "{success:" + success + "}");

            jobj1.put("valid", true);
            jobj1.put("data", jobj);
            jobj1.put("success", true);
            txnManager.commit(status);
        } catch (Exception e) {
            logger.warn("General exception in deleteNode()", e);
            txnManager.rollback(status);
        }
        return new ModelAndView("jsonView", "model", jobj1.toString());
    }
}