Changes made to fix left menu routing
[portal.git] / ecomp-portal-BE-common / src / main / java / org / onap / portalapp / portal / service / EPLeftMenuServiceImpl.java
index f661163..fc926eb 100644 (file)
  */
 package org.onap.portalapp.portal.service;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -49,10 +52,13 @@ import java.util.TreeSet;
 import org.json.JSONArray;
 import org.json.JSONObject;
 import org.onap.portalapp.portal.domain.CentralizedApp;
+import org.onap.portalapp.portal.domain.DisplayText;
 import org.onap.portalapp.portal.domain.EPUser;
 import org.onap.portalapp.portal.logging.aop.EPMetricsLog;
+import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
 import org.onap.portalsdk.core.domain.MenuData;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.service.DataAccessService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.stereotype.Service;
@@ -68,14 +74,15 @@ public class EPLeftMenuServiceImpl implements EPLeftMenuService {
 
        private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EPLeftMenuServiceImpl.class);
 
-       
        @Autowired
        private ExternalAccessRolesService externalAccessRolesService;
+       @Autowired
+       private DataAccessService dataAccessService;
+
        /*
         * (non-Javadoc)
         * 
-        * @see
-        * org.onap.portalapp.portal.service.EPLeftMenuService#getLeftMenuItems
+        * @see org.onap.portalapp.portal.service.EPLeftMenuService#getLeftMenuItems
         * (java.util.Set)
         */
        @Override
@@ -83,7 +90,8 @@ public class EPLeftMenuServiceImpl implements EPLeftMenuService {
                final Map<String, JSONObject> defaultNavMap = new LinkedHashMap<String, JSONObject>();
                resetNavMap(defaultNavMap);
                loadDefaultNavMap(defaultNavMap);
-               loadNavMapByRole(defaultNavMap, fullMenuSet , user);
+               loadNavMapByUserAdminRole(defaultNavMap, user);
+               loadNavMapByRole(defaultNavMap, fullMenuSet, user);
                return convertToSideBarModel(defaultNavMap);
        }
 
@@ -101,7 +109,7 @@ public class EPLeftMenuServiceImpl implements EPLeftMenuService {
         * @param defaultNavMap
         * @param fullMenuSet
         */
-       private void loadNavMapByRole(Map<String, JSONObject> defaultNavMap, Set<MenuData> fullMenuSet , EPUser user) {
+       private void loadNavMapByRole(Map<String, JSONObject> defaultNavMap, Set<MenuData> fullMenuSet, EPUser user) {
 
                class SortOrderComparator implements Comparator<MenuData> {
                        @Override
@@ -110,11 +118,35 @@ public class EPLeftMenuServiceImpl implements EPLeftMenuService {
                        }
                }
 
+               // mulitilanguage impl
+               String loginId = user.getLoginId();
+               HashMap loginParams = new HashMap();
+               loginParams.put("login_id", loginId);
+               List<EPUser> epUsers = dataAccessService.executeNamedQuery("getEPUserByLoginId", loginParams, new HashMap());
+               Integer languageId = 1;
+               for (EPUser epUser : epUsers) {
+                       languageId = epUser.getLanguageId();
+               }
+               Iterator<MenuData> iterator = fullMenuSet.iterator();
+               HashMap params = new HashMap();
+               params.put("language_id", languageId);
+               List<DisplayText> displayTexts = dataAccessService.executeNamedQuery("displayText", params, new HashMap());
+               while (iterator.hasNext()) {
+                       MenuData menuData = iterator.next();
+                       for (int index = 0; index < displayTexts.size(); index++) {
+                               DisplayText displayText = displayTexts.get(index);
+                               if (menuData.getId() == displayText.getTextId()) {
+                                       menuData.setLabel(displayText.getLabel());
+                                       break;
+                               }
+                       }
+               }
+
                SortedSet<MenuData> sortMenuSet = new TreeSet<MenuData>(new SortOrderComparator());
                for (MenuData mn : fullMenuSet) {
                        sortMenuSet.add(mn);
                }
-               
+
                // Remove Roles from left menu if user doesnt have admin access on
                // centralized application
                List<CentralizedApp> applicationsList = null;
@@ -155,25 +187,60 @@ public class EPLeftMenuServiceImpl implements EPLeftMenuService {
         * @param defaultNavMap
         */
        private void loadDefaultNavMap(Map<String, JSONObject> defaultNavMap) {
-
+               String leftMenuRootValue = getLeftMenuPrefixValue();
                JSONObject navItemsDetails1 = new JSONObject();
                navItemsDetails1.put("name", "Home");
-               navItemsDetails1.put("state", "root.applicationsHome");
-               navItemsDetails1.put("imageSrc", "icon-building-home");
-               defaultNavMap.put("root.applicationsHome", navItemsDetails1);
+               navItemsDetails1.put("state",
+                               (isLeftMenuHasRoot(leftMenuRootValue))
+                                               ? leftMenuRootValue+".applicationsHome"
+                                               : "applicationsHome");
+               navItemsDetails1.put("imageSrc", isLeftMenuHasRoot(leftMenuRootValue) ? "icon-building-home" : "home");
+               defaultNavMap.put("applicationsHome", navItemsDetails1);
 
                JSONObject navItemsDetails2 = new JSONObject();
                navItemsDetails2.put("name", "Application Catalog");
-               navItemsDetails2.put("state", "root.appCatalog");
-               navItemsDetails2.put("imageSrc", "icon-apps-marketplace");
-               defaultNavMap.put("root.appCatalog", navItemsDetails2);
+               navItemsDetails2.put("state",
+                               (isLeftMenuHasRoot(leftMenuRootValue))
+                                               ? leftMenuRootValue+".appCatalog"
+                                               : "appCatalog");
+               navItemsDetails2.put("imageSrc", isLeftMenuHasRoot(leftMenuRootValue) ? "icon-apps-marketplace" : "apps");
+               defaultNavMap.put("appCatalog", navItemsDetails2);
 
                JSONObject navItemsDetails3 = new JSONObject();
                navItemsDetails3.put("name", "Widget Catalog");
-               navItemsDetails3.put("state", "root.widgetCatalog");
-               navItemsDetails3.put("imageSrc", "icon-apps-marketplace");
-               defaultNavMap.put("root.widgetCatalog", navItemsDetails3);
+               navItemsDetails3.put("state",
+                               isLeftMenuHasRoot(leftMenuRootValue)
+                                               ? leftMenuRootValue+".widgetCatalog"
+                                               : "widgetCatalog");
+               navItemsDetails3.put("imageSrc", isLeftMenuHasRoot(leftMenuRootValue) ? "icon-apps-marketplace" : "apps");
+               defaultNavMap.put("widgetCatalog", navItemsDetails3);
+
+       }
+
+       private boolean isLeftMenuHasRoot(String leftMenuRootValue) {
+               return (leftMenuRootValue != "" || leftMenuRootValue.isEmpty()) && leftMenuRootValue.equals("root");
+       }
+
+       @SuppressWarnings("unchecked")
+       private void loadNavMapByUserAdminRole(Map<String, JSONObject> defaultNavMap, EPUser user) {
+               String leftMenuRootValue = getLeftMenuPrefixValue();
+               List<String> applicationsList = new ArrayList<>();
+               final Map<String, Long> appParams = new HashMap<>();
+               appParams.put("userId", user.getId());
+               applicationsList = dataAccessService.executeNamedQuery("getAprroverRoleFunctionsOfUser", appParams, null);
+               if (applicationsList.size() > 0) {
+                       JSONObject navItemsDetails = new JSONObject();
+                       navItemsDetails.put("name", "Users");
+                       navItemsDetails.put("state",
+                                       ((leftMenuRootValue != "" || !leftMenuRootValue.isEmpty()) && leftMenuRootValue.equals("root")) ? leftMenuRootValue+".users"
+                                                       : "users");
+                       navItemsDetails.put("imageSrc", isLeftMenuHasRoot(leftMenuRootValue) ? "person" : "icon-user");
+                       defaultNavMap.put("users", navItemsDetails);
+               }
+       }
 
+       private String getLeftMenuPrefixValue() {
+               return EPCommonSystemProperties.getProperty(EPCommonSystemProperties.PORTAL_LEFT_MENU);
        }
 
 }