svn commit: r1738122 - in /ofbiz/trunk/applications/humanres: config/HumanResErrorUiLabels.xml src/org/ofbiz/humanres/HumanResEvents.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1738122 - in /ofbiz/trunk/applications/humanres: config/HumanResErrorUiLabels.xml src/org/ofbiz/humanres/HumanResEvents.java

pranayp
Author: pranayp
Date: Thu Apr  7 12:04:27 2016
New Revision: 1738122

URL: http://svn.apache.org/viewvc?rev=1738122&view=rev
Log:

[OFBIZ-6986] Applied slightly modified patch from JIRA issue. Simplify getChildHRCategoryTree. Breaking the single long method to multiple private functions with improved exception handling.
Thanks Kulwant for reporting and providing patch for the issue. Thanks Deepak Dixit for reviewing the patch and providing improvement suggestions.

Added:
    ofbiz/trunk/applications/humanres/config/HumanResErrorUiLabels.xml
Modified:
    ofbiz/trunk/applications/humanres/src/org/ofbiz/humanres/HumanResEvents.java

Added: ofbiz/trunk/applications/humanres/config/HumanResErrorUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/humanres/config/HumanResErrorUiLabels.xml?rev=1738122&view=auto
==============================================================================
--- ofbiz/trunk/applications/humanres/config/HumanResErrorUiLabels.xml (added)
+++ ofbiz/trunk/applications/humanres/config/HumanResErrorUiLabels.xml Thu Apr  7 12:04:27 2016
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+
+<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-properties.xsd">
+</resource>
\ No newline at end of file

Modified: ofbiz/trunk/applications/humanres/src/org/ofbiz/humanres/HumanResEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/humanres/src/org/ofbiz/humanres/HumanResEvents.java?rev=1738122&r1=1738121&r2=1738122&view=diff
==============================================================================
--- ofbiz/trunk/applications/humanres/src/org/ofbiz/humanres/HumanResEvents.java (original)
+++ ofbiz/trunk/applications/humanres/src/org/ofbiz/humanres/HumanResEvents.java Thu Apr  7 12:04:27 2016
@@ -22,10 +22,8 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.entity.Delegator;
@@ -37,8 +35,8 @@ import org.ofbiz.entity.util.EntityQuery
 
 public class HumanResEvents {
     public static final String module = HumanResEvents.class.getName();
-    public static final String resourceError = "ProductErrorUiLabels";
-    
+    public static final String resourceError = "HumanResErrorUiLabels";
+
     // Please note : the structure of map in this function is according to the JSON data map of the jsTree
     public static String getChildHRCategoryTree(HttpServletRequest request, HttpServletResponse response){
         Delegator delegator = (Delegator) request.getAttribute("delegator");
@@ -47,12 +45,57 @@ public class HumanResEvents {
         String additionParam = request.getParameter("additionParam");
         String hrefString = request.getParameter("hrefString");
         String hrefString2 = request.getParameter("hrefString2");
-        
+
+        Map<String, Object> paramMap = new HashMap<String, Object>();
+        paramMap.put("delegator", delegator);
+        paramMap.put("partyId", partyId);
+        paramMap.put("onclickFunction", onclickFunction);
+        paramMap.put("additionParam", additionParam);
+        paramMap.put("hrefString", hrefString);
+        paramMap.put("hrefString2", hrefString2);
+
         List<Map<String,Object>> categoryList = new ArrayList<Map<String,Object>>();
-        List<GenericValue> childOfComs;
+
         //check employee position
         try {
-            long emplPosCount = EntityQuery.use(delegator).from("EmplPosition")
+            categoryList.addAll(getCurrentEmployeeDetails(paramMap));
+        } catch (GenericEntityException e) {
+            e.printStackTrace();
+            return "error";
+        }
+
+        try {
+            GenericValue partyGroup = EntityQuery.use(delegator).from("PartyGroup").where("partyId", partyId).queryOne();
+            if (UtilValidate.isNotEmpty(partyGroup)) {
+                paramMap.put("partyGroup", partyGroup);
+                /* get the child departments of company or party */
+                categoryList.addAll(getChildComps(paramMap));
+
+                /* get employee which are working in company or party */
+                categoryList.addAll(getEmployeeInComp(paramMap));
+            }
+        } catch (GenericEntityException e) {
+            e.printStackTrace();
+            return "error";
+        }
+        request.setAttribute("hrTree", categoryList);
+        return "success";
+    }
+
+    private static List<Map<String, Object>> getCurrentEmployeeDetails(Map<String, Object> params) throws GenericEntityException{
+
+        Delegator delegator = (Delegator) params.get("delegator");
+        String partyId = (String) params.get("partyId");
+        String onclickFunction = (String) params.get("onclickFunction");
+        String additionParam = (String) params.get("additionParam");
+        String hrefString = (String) params.get("hrefString");
+        String hrefString2 = (String) params.get("hrefString2");
+
+        List<Map<String, Object>> responseList = new ArrayList<>();
+
+        long emplPosCount;
+        try {
+            emplPosCount = EntityQuery.use(delegator).from("EmplPosition")
                     .where("emplPositionId", partyId).queryCount();
             if (emplPosCount > 0) {
                 String emplId = partyId;
@@ -64,7 +107,7 @@ public class HumanResEvents {
                         String memberId = emlpfillCtx.getString("partyId");
                         GenericValue memCtx = EntityQuery.use(delegator).from("Person").where("partyId", partyId).queryOne();
                         String title = null;
-                        if (memCtx != null) {
+                        if (UtilValidate.isNotEmpty(memCtx)) {
                             String firstname = memCtx.getString("firstName");
                             String lastname = memCtx.getString("lastName");
                             if (UtilValidate.isEmpty(lastname)) {
@@ -76,165 +119,198 @@ public class HumanResEvents {
                             title = firstname +" "+ lastname;
                         }
                         GenericValue memGroupCtx = EntityQuery.use(delegator).from("PartyGroup").where("partyId", partyId).queryOne();
-                        if (memGroupCtx != null) {
+                        if (UtilValidate.isNotEmpty(memGroupCtx)) {
                             title = memGroupCtx.getString("groupName");
                         }
-                        
-                        Map josonMap = new HashMap();
-                        Map dataMap = new HashMap();
-                        Map dataAttrMap = new HashMap();
-                        Map attrMap = new HashMap();
-                        
+
+                        Map<String,Object> josonMap = new HashMap<String, Object>();
+                        Map<String,Object> dataMap = new HashMap<String, Object>();
+                        Map<String,Object> dataAttrMap = new HashMap<String, Object>();
+                        Map<String,Object> attrMap = new HashMap<String, Object>();
+
                         dataAttrMap.put("onClick", onclickFunction + "('" + memberId + additionParam + "')");
-                        
+
                         String hrefStr = hrefString + memberId;
                         if (UtilValidate.isNotEmpty(hrefString2)) {
                             hrefStr = hrefStr + hrefString2;
                         }
                         dataAttrMap.put("href", hrefStr);
+
                         attrMap.put("rel", "P");
-                        dataMap.put("attr", dataAttrMap);
                         attrMap.put("id", memberId);
-                        josonMap.put("attr",attrMap);
+
                         dataMap.put("title", title);
+                        dataMap.put("attr", dataAttrMap);
+
+                        josonMap.put("attr",attrMap);
                         josonMap.put("data", dataMap);
-                        
-                        categoryList.add(josonMap);
+
+                        responseList.add(josonMap) ;
                     }
                 }
             }
-        } catch (Exception e) {
+        } catch (GenericEntityException e) {
             e.printStackTrace();
-            return "error";
+            throw new GenericEntityException(e);
         }
-        
+
+        return responseList;
+    }
+
+    private static List<Map<String, Object>> getChildComps(Map<String, Object> params) throws GenericEntityException{
+
+        Delegator delegator = (Delegator) params.get("delegator");
+        String onclickFunction = (String) params.get("onclickFunction");
+        String additionParam = (String) params.get("additionParam");
+        String hrefString = (String) params.get("hrefString");
+        String hrefString2 = (String) params.get("hrefString2");
+
+        Map<String , Object> partyGroup = (Map<String, Object>) params.get("partyGroup");
+        List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
+        List<GenericValue> childOfComs = null;
+
         try {
-            GenericValue partyGroup = EntityQuery.use(delegator).from("PartyGroup").where("partyId", partyId).queryOne();
-            if (UtilValidate.isNotEmpty(partyGroup)) {
-                childOfComs = EntityQuery.use(delegator).from("PartyRelationship")
-                        .where("partyIdFrom", partyGroup.get("partyId"),
-                                "partyRelationshipTypeId", "GROUP_ROLLUP")
-                        .filterByDate().queryList();
-                if (UtilValidate.isNotEmpty(childOfComs)) {
-                    
-                    for (GenericValue childOfCom : childOfComs ) {
-                        Object catId = null;
-                        String catNameField = null;
-                        String title = null;
-                        
-                        Map josonMap = new HashMap();
-                        Map dataMap = new HashMap();
-                        Map dataAttrMap = new HashMap();
-                        Map attrMap = new HashMap();
-                        
-                        catId = childOfCom.get("partyIdTo");
-                        
-                        //Department or Sub department
-                        GenericValue childContext = EntityQuery.use(delegator).from("PartyGroup").where("partyId", catId).queryOne();
-                        if (UtilValidate.isNotEmpty(childContext)) {
-                            catNameField = (String) childContext.get("groupName");
-                            title = catNameField;
-                            josonMap.put("title",title);
-                            
-                        }
-                        //Check child existing
-                        List<GenericValue> childOfSubComs = EntityQuery.use(delegator).from("PartyRelationship")
-                                .where("partyIdFrom", catId,
-                                        "partyRelationshipTypeId", "GROUP_ROLLUP")
-                                .filterByDate().queryList();
-                        //check employee position
-                        List<GenericValue> isPosition = EntityQuery.use(delegator).from("EmplPosition").where("partyId", catId).queryList();
-                        if (UtilValidate.isNotEmpty(childOfSubComs) || UtilValidate.isNotEmpty(isPosition)) {
-                            josonMap.put("state", "closed");
-                        }
-                        
-                        //Employee
-                        GenericValue emContext = EntityQuery.use(delegator).from("Person").where("partyId", catId).queryOne();
-                        if (UtilValidate.isNotEmpty(emContext)) {
-                            String firstname = (String) emContext.get("firstName");
-                            String lastname = (String) emContext.get("lastName");
-                            if (UtilValidate.isEmpty(lastname)) {
-                                lastname = "";
-                            }
-                            if (UtilValidate.isEmpty(firstname)) {
-                                firstname = "";
-                            }
-                            title = firstname +" "+ lastname;
+            childOfComs = EntityQuery.use(delegator).from("PartyRelationship")
+                    .where("partyIdFrom", partyGroup.get("partyId"),
+                            "partyRelationshipTypeId", "GROUP_ROLLUP")
+                            .filterByDate().queryList();
+            if (UtilValidate.isNotEmpty(childOfComs)) {
+
+                for (GenericValue childOfCom : childOfComs ) {
+                    Object catId = null;
+                    String catNameField = null;
+                    String title = null;
+
+                    Map<String, Object> josonMap = new HashMap<String, Object>();
+                    Map<String, Object> dataMap = new HashMap<String, Object>();
+                    Map<String, Object> dataAttrMap = new HashMap<String, Object>();
+                    Map<String, Object> attrMap = new HashMap<String, Object>();
+
+                    catId = childOfCom.get("partyIdTo");
+
+                    //Department or Sub department
+                    GenericValue childContext = EntityQuery.use(delegator).from("PartyGroup").where("partyId", catId).queryOne();
+                    if (UtilValidate.isNotEmpty(childContext)) {
+                        catNameField = (String) childContext.get("groupName");
+                        title = catNameField;
+                        josonMap.put("title",title);
+
+                    }
+                    //Check child existing
+                    List<GenericValue> childOfSubComs = EntityQuery.use(delegator).from("PartyRelationship")
+                            .where("partyIdFrom", catId,
+                                    "partyRelationshipTypeId", "GROUP_ROLLUP")
+                                    .filterByDate().queryList();
+                    //check employee position
+                    List<GenericValue> isPosition = EntityQuery.use(delegator).from("EmplPosition").where("partyId", catId).queryList();
+                    if (UtilValidate.isNotEmpty(childOfSubComs) || UtilValidate.isNotEmpty(isPosition)) {
+                        josonMap.put("state", "closed");
+                    }
+
+                    //Employee
+                    GenericValue emContext = EntityQuery.use(delegator).from("Person").where("partyId", catId).queryOne();
+                    if (UtilValidate.isNotEmpty(emContext)) {
+                        String firstname = (String) emContext.get("firstName");
+                        String lastname = (String) emContext.get("lastName");
+                        if (UtilValidate.isEmpty(lastname)) {
+                            lastname = "";
                         }
-                        
-                        dataAttrMap.put("onClick", onclickFunction + "('" + catId + additionParam + "')");
-                        
-                        String hrefStr = hrefString + catId;
-                        if (UtilValidate.isNotEmpty(hrefString2)) {
-                            hrefStr = hrefStr + hrefString2;
+                        if (UtilValidate.isEmpty(firstname)) {
+                            firstname = "";
                         }
-                        dataAttrMap.put("href", hrefStr);
-                        
-                        dataMap.put("attr", dataAttrMap);
-                        
-                        attrMap.put("rel", "Y");
-                        attrMap.put("id", catId);
-                        josonMap.put("attr",attrMap);
-                        dataMap.put("title", title);
-                        josonMap.put("data", dataMap);
-                        
-                        categoryList.add(josonMap);
-                }
-                    
-                }
+                        title = firstname +" "+ lastname;
+                    }
+
+                    dataAttrMap.put("onClick", onclickFunction + "('" + catId + additionParam + "')");
+
+                    String hrefStr = hrefString + catId;
+                    if (UtilValidate.isNotEmpty(hrefString2)) {
+                        hrefStr = hrefStr + hrefString2;
+                    }
+                    dataAttrMap.put("href", hrefStr);
+
+                    dataMap.put("attr", dataAttrMap);
+                    dataMap.put("title", title);
+
+                    attrMap.put("rel", "Y");
+                    attrMap.put("id", catId);
+
+
+                    josonMap.put("attr",attrMap);
+                    josonMap.put("data", dataMap);
+
+                    resultList.add(josonMap);
+                }  
+            }
+        } catch (GenericEntityException e) {
+            e.printStackTrace();
+            throw new GenericEntityException(e);
+        }
+
+        return resultList;
+
+    }
+
+    private static List<Map<String, Object>> getEmployeeInComp(Map<String, Object> params) throws GenericEntityException{
+        List<GenericValue> isEmpls = null;
+        Delegator delegator = (Delegator) params.get("delegator");
+        String partyId = (String) params.get("partyId");
 
-                List<GenericValue> isEmpls = null;
-                try {
-                    isEmpls = EntityQuery.use(delegator).from("EmplPosition")
-                            .where(EntityCondition.makeCondition("partyId", EntityOperator.EQUALS, partyId),
-                                    EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "EMPL_POS_INACTIVE"))
+        List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
+
+        try {
+            isEmpls = EntityQuery.use(delegator).from("EmplPosition")
+                    .where(EntityCondition.makeCondition("partyId", EntityOperator.EQUALS, partyId),
+                            EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "EMPL_POS_INACTIVE"))
                             .filterByDate("actualFromDate", "actualThruDate")
                             .queryList();
-                } catch (GenericEntityException e) {
-                    Debug.logError(e, module);
-                }
 
-                if (UtilValidate.isNotEmpty(isEmpls)) {
-                    for (GenericValue childOfEmpl : isEmpls ) {
-                        Map emplMap = new HashMap();
-                        Map emplAttrMap = new HashMap();
-                        Map empldataMap = new HashMap();
-                        Map emplDataAttrMap = new HashMap();
-                        
-                        String emplId = (String) childOfEmpl.get("emplPositionId");
-                        String typeId = (String) childOfEmpl.get("emplPositionTypeId");
-                        //check child
-                        List<GenericValue> emlpfCtxs = EntityQuery.use(delegator).from("EmplPositionFulfillment")
-                                .where("emplPositionId", emplId)
-                                .filterByDate().queryList();
-                        if (UtilValidate.isNotEmpty(emlpfCtxs)) {
-                            emplMap.put("state", "closed");
-                        }
-                        
-                        GenericValue emplContext = EntityQuery.use(delegator).from("EmplPositionType").where("emplPositionTypeId", typeId).queryOne();
-                        String title = null;
-                        if (UtilValidate.isNotEmpty(emplContext)) {
-                            title = (String) emplContext.get("description") + " " +"["+ emplId +"]";
-                        }
-                        String hrefStr = "emplPositionView?emplPositionId=" + emplId;
-                        empldataMap.put("title", title);
-                        emplAttrMap.put("href", hrefStr);
-                        emplAttrMap.put("onClick", "callEmplDocument" + "('" + emplId + "')");
-                        empldataMap.put("attr", emplAttrMap);
-                        emplMap.put("data", empldataMap);
-                        emplDataAttrMap.put("id", emplId);
-                        emplDataAttrMap.put("rel", "N");
-                        emplMap.put("attr",emplDataAttrMap);
-                        emplMap.put("title",title);
-                        categoryList.add(emplMap);
+            if (UtilValidate.isNotEmpty(isEmpls)) {
+                for (GenericValue childOfEmpl : isEmpls ) {
+                    Map<String, Object> emplMap = new HashMap<String, Object>();
+                    Map<String, Object> emplAttrMap = new HashMap<String, Object>();
+                    Map<String, Object> empldataMap = new HashMap<String, Object>();
+                    Map<String, Object> emplDataAttrMap = new HashMap<String, Object>();
+
+                    String emplId = (String) childOfEmpl.get("emplPositionId");
+                    String typeId = (String) childOfEmpl.get("emplPositionTypeId");
+
+                    //check child
+                    List<GenericValue> emlpfCtxs = EntityQuery.use(delegator).from("EmplPositionFulfillment")
+                            .where("emplPositionId", emplId)
+                            .filterByDate().queryList();
+                    if (UtilValidate.isNotEmpty(emlpfCtxs)) {
+                        emplMap.put("state", "closed");
+                    }
+
+                    GenericValue emplContext = EntityQuery.use(delegator).from("EmplPositionType").where("emplPositionTypeId", typeId).queryOne();
+                    String title = null;
+                    if (UtilValidate.isNotEmpty(emplContext)) {
+                        title = (String) emplContext.get("description") + " " +"["+ emplId +"]";
                     }
+
+                    String hrefStr = "emplPositionView?emplPositionId=" + emplId;
+                    emplAttrMap.put("href", hrefStr);
+                    emplAttrMap.put("onClick", "callEmplDocument" + "('" + emplId + "')");
+
+                    empldataMap.put("title", title);
+                    empldataMap.put("attr", emplAttrMap);
+
+                    emplDataAttrMap.put("id", emplId);
+                    emplDataAttrMap.put("rel", "N");
+
+                    emplMap.put("data", empldataMap);
+                    emplMap.put("attr",emplDataAttrMap);
+                    emplMap.put("title",title);
+
+                    resultList.add(emplMap);
                 }
             }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return "error";
+        } catch (GenericEntityException e) {
+            Debug.logError(e, module);
+            throw new GenericEntityException(e);
         }
-        request.setAttribute("hrTree", categoryList);
-        return "success";
+
+        return resultList;
     }
 }