[PORTAL-16 PORTAL-18] Widget ms; staging
[portal.git] / ecomp-portal-BE-common / src / main / java / org / openecomp / portalapp / portal / service / EPLeftMenuServiceImpl.java
index 2a1f466..9158e99 100644 (file)
-/*-\r
- * ================================================================================\r
- * ECOMP Portal\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ================================================================================\r
- */\r
-package org.openecomp.portalapp.portal.service;\r
-\r
-import java.util.Collection;\r
-import java.util.Comparator;\r
-import java.util.LinkedHashMap;\r
-import java.util.Map;\r
-import java.util.Set;\r
-import java.util.SortedSet;\r
-import java.util.TreeSet;\r
-\r
-import org.json.JSONArray;\r
-import org.json.JSONObject;\r
-import org.springframework.beans.factory.annotation.Autowired;\r
-import org.springframework.context.annotation.EnableAspectJAutoProxy;\r
-import org.springframework.stereotype.Service;\r
-import org.springframework.transaction.annotation.Transactional;\r
-\r
-import org.openecomp.portalsdk.core.domain.MenuData;\r
-import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;\r
-import org.openecomp.portalapp.portal.domain.EPUser;\r
-import org.openecomp.portalapp.portal.domain.UserRoles;\r
-//import org.openecomp.portalapp.portal.domain.Menu;\r
-import org.openecomp.portalapp.portal.logging.aop.EPMetricsLog;\r
-\r
-@Service("leftMenuService")\r
-@Transactional\r
-@org.springframework.context.annotation.Configuration\r
-@EnableAspectJAutoProxy\r
-@EPMetricsLog\r
-\r
-public class EPLeftMenuServiceImpl implements EPLeftMenuService {\r
-\r
-       private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EPLeftMenuServiceImpl.class);\r
-\r
-       @Autowired\r
-       private EPAppService appService;\r
-\r
-       /*\r
-        * (non-Javadoc)\r
-        * \r
-        * @see\r
-        * org.openecomp.portalapp.portal.service.EPLeftMenuService#getLeftMenuItems\r
-        * (java.util.Set)\r
-        */\r
-       @Override\r
-       public String getLeftMenuItems(EPUser user, Set<MenuData> fullMenuSet, Set<String> roleFunctionSet) {\r
-               final Map<String, JSONObject> defaultNavMap = new LinkedHashMap<String, JSONObject>();\r
-\r
-               resetNavMap(defaultNavMap);\r
-\r
-               loadDefaultNavMap(defaultNavMap);\r
-\r
-               // Handle Account Administrator in a special way; soon this will\r
-               // be revised as Account Administrator may become obsolete\r
-               try {\r
-                       if (user != null) {\r
-                               UserRoles uRoles = appService.getUserProfileNormalized(user);\r
-                               if (uRoles.getRoles().contains("Account Administrator"))\r
-                                       loadAccAdminNavMap(defaultNavMap);\r
-                       }\r
-               } catch (Exception e) {\r
-                       logger.error(EELFLoggerDelegate.errorLogger,\r
-                                       "getLeftMenuItems: failed to get roles for user " + user.getOrgUserId(), e);\r
-               }\r
-\r
-               loadNavMapByRole(defaultNavMap, fullMenuSet);\r
-\r
-               return convertToSideBarModel(defaultNavMap);\r
-       }\r
-\r
-       /**\r
-        * Clears the map\r
-        * \r
-        * @param defaultNavMap\r
-        */\r
-       private void resetNavMap(Map<String, JSONObject> defaultNavMap) {\r
-               defaultNavMap.clear();\r
-       }\r
-\r
-       /**\r
-        * \r
-        * @param defaultNavMap\r
-        * @param fullMenuSet\r
-        */\r
-       private void loadNavMapByRole(Map<String, JSONObject> defaultNavMap, Set<MenuData> fullMenuSet) {\r
-\r
-               class SortOrderComparator implements Comparator<MenuData> {\r
-                       @Override\r
-                       public int compare(MenuData e1, MenuData e2) {\r
-                               return e1.getSortOrder().compareTo(e2.getSortOrder());\r
-                       }\r
-               }\r
-\r
-               SortedSet<MenuData> sortMenuSet = new TreeSet<MenuData>(new SortOrderComparator());\r
-               for (MenuData mn : fullMenuSet) {\r
-                       sortMenuSet.add(mn);\r
-               }\r
-\r
-               for (MenuData mn : sortMenuSet) {\r
-                       JSONObject navItemsDetails = new JSONObject();\r
-                       navItemsDetails.put("name", mn.getLabel());\r
-                       navItemsDetails.put("state", mn.getAction());\r
-                       navItemsDetails.put("imageSrc", mn.getImageSrc());\r
-                       defaultNavMap.put(mn.getAction(), navItemsDetails);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * \r
-        * @param defaultNavMap\r
-        * @return\r
-        */\r
-       private String convertToSideBarModel(Map<String, JSONObject> defaultNavMap) {\r
-               JSONObject sidebarModel = new JSONObject();\r
-               JSONArray navItems = new JSONArray();\r
-               Collection<JSONObject> jsonObjs = defaultNavMap.values();\r
-\r
-               for (JSONObject navItemsDetail : jsonObjs)\r
-                       navItems.put(navItemsDetail);\r
-\r
-               sidebarModel.put("label", "ECOMP portal");\r
-               sidebarModel.put("navItems", navItems);\r
-               return sidebarModel.toString();\r
-       }\r
-\r
-       /**\r
-        * Loads default entries for regular user.\r
-        * \r
-        * @param defaultNavMap\r
-        */\r
-       private void loadDefaultNavMap(Map<String, JSONObject> defaultNavMap) {\r
-\r
-               JSONObject navItemsDetails1 = new JSONObject();\r
-               navItemsDetails1.put("name", "Home");\r
-               navItemsDetails1.put("state", "root.applicationsHome");\r
-               navItemsDetails1.put("imageSrc", "icon-building-home");\r
-               defaultNavMap.put("root.applicationsHome", navItemsDetails1);\r
-\r
-               JSONObject navItemsDetails2 = new JSONObject();\r
-               navItemsDetails2.put("name", "Application Catalog");\r
-               navItemsDetails2.put("state", "root.appCatalog");\r
-               navItemsDetails2.put("imageSrc", "icon-apps-marketplace");\r
-               defaultNavMap.put("root.appCatalog", navItemsDetails2);\r
-\r
-               JSONObject navItemsDetails3 = new JSONObject();\r
-               navItemsDetails3.put("name", "Widget Catalog");\r
-               navItemsDetails3.put("state", "root.widgetCatalog");\r
-               navItemsDetails3.put("imageSrc", "icon-apps-marketplace");\r
-               defaultNavMap.put("root.widgetCatalog", navItemsDetails3);\r
-\r
-       }\r
-\r
-       /**\r
-        * Loads default entries for application administrator.\r
-        * \r
-        * @param defaultNavMap\r
-        */\r
-       private void loadAccAdminNavMap(Map<String, JSONObject> defaultNavMap) {\r
-\r
-               JSONObject navItemsDetails1 = new JSONObject();\r
-               navItemsDetails1.put("name", "Users");\r
-               navItemsDetails1.put("state", "root.users");\r
-               navItemsDetails1.put("imageSrc", "icon-user");\r
-               defaultNavMap.put("root.users", navItemsDetails1);\r
-\r
-               // No more widget onboarding like this:\r
-               //\r
-               // JSONObject navItemsDetails2 = new JSONObject();\r
-               // navItemsDetails2.put("name", "Widget Onboarding");\r
-               // navItemsDetails2.put("state", "root.widgetOnboarding");\r
-               // navItemsDetails2.put("imageSrc", "icon-add-widget");\r
-               // defaultNavMap.put("root.widgetOnboarding", navItemsDetails2);\r
-\r
-       }\r
-\r
-}\r
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed 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.
+ * ================================================================================
+ */
+package org.openecomp.portalapp.portal.service;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import org.openecomp.portalsdk.core.domain.MenuData;
+import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.openecomp.portalapp.portal.domain.EPUser;
+import org.openecomp.portalapp.portal.domain.UserRoles;
+//import org.openecomp.portalapp.portal.domain.Menu;
+import org.openecomp.portalapp.portal.logging.aop.EPMetricsLog;
+
+@Service("leftMenuService")
+@Transactional
+@org.springframework.context.annotation.Configuration
+@EnableAspectJAutoProxy
+@EPMetricsLog
+
+public class EPLeftMenuServiceImpl implements EPLeftMenuService {
+
+       private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EPLeftMenuServiceImpl.class);
+
+       @Autowired
+       private EPAppService appService;
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.openecomp.portalapp.portal.service.EPLeftMenuService#getLeftMenuItems
+        * (java.util.Set)
+        */
+       @Override
+       public String getLeftMenuItems(EPUser user, Set<MenuData> fullMenuSet, Set<String> roleFunctionSet) {
+               final Map<String, JSONObject> defaultNavMap = new LinkedHashMap<String, JSONObject>();
+
+               resetNavMap(defaultNavMap);
+
+               loadDefaultNavMap(defaultNavMap);
+
+               // Handle Account Administrator in a special way; soon this will
+               // be revised as Account Administrator may become obsolete
+               try {
+                       if (user != null) {
+                               UserRoles uRoles = appService.getUserProfileNormalized(user);
+                               if (uRoles.getRoles().contains("Account Administrator"))
+                                       loadAccAdminNavMap(defaultNavMap);
+                       }
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger,
+                                       "getLeftMenuItems: failed to get roles for user " + user.getOrgUserId(), e);
+               }
+
+               loadNavMapByRole(defaultNavMap, fullMenuSet);
+
+               return convertToSideBarModel(defaultNavMap);
+       }
+
+       /**
+        * Clears the map
+        * 
+        * @param defaultNavMap
+        */
+       private void resetNavMap(Map<String, JSONObject> defaultNavMap) {
+               defaultNavMap.clear();
+       }
+
+       /**
+        * 
+        * @param defaultNavMap
+        * @param fullMenuSet
+        */
+       private void loadNavMapByRole(Map<String, JSONObject> defaultNavMap, Set<MenuData> fullMenuSet) {
+
+               class SortOrderComparator implements Comparator<MenuData> {
+                       @Override
+                       public int compare(MenuData e1, MenuData e2) {
+                               return e1.getSortOrder().compareTo(e2.getSortOrder());
+                       }
+               }
+
+               SortedSet<MenuData> sortMenuSet = new TreeSet<MenuData>(new SortOrderComparator());
+               for (MenuData mn : fullMenuSet) {
+                       sortMenuSet.add(mn);
+               }
+
+               for (MenuData mn : sortMenuSet) {
+                       JSONObject navItemsDetails = new JSONObject();
+                       navItemsDetails.put("name", mn.getLabel());
+                       navItemsDetails.put("state", mn.getAction());
+                       navItemsDetails.put("imageSrc", mn.getImageSrc());
+                       defaultNavMap.put(mn.getAction(), navItemsDetails);
+               }
+       }
+
+       /**
+        * 
+        * @param defaultNavMap
+        * @return
+        */
+       private String convertToSideBarModel(Map<String, JSONObject> defaultNavMap) {
+               JSONObject sidebarModel = new JSONObject();
+               JSONArray navItems = new JSONArray();
+               Collection<JSONObject> jsonObjs = defaultNavMap.values();
+
+               for (JSONObject navItemsDetail : jsonObjs)
+                       navItems.put(navItemsDetail);
+
+               sidebarModel.put("label", "ECOMP portal");
+               sidebarModel.put("navItems", navItems);
+               return sidebarModel.toString();
+       }
+
+       /**
+        * Loads default entries for regular user.
+        * 
+        * @param defaultNavMap
+        */
+       private void loadDefaultNavMap(Map<String, JSONObject> defaultNavMap) {
+
+               JSONObject navItemsDetails1 = new JSONObject();
+               navItemsDetails1.put("name", "Home");
+               navItemsDetails1.put("state", "root.applicationsHome");
+               navItemsDetails1.put("imageSrc", "icon-building-home");
+               defaultNavMap.put("root.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);
+
+               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);
+
+       }
+
+       /**
+        * Loads default entries for application administrator.
+        * 
+        * @param defaultNavMap
+        */
+       private void loadAccAdminNavMap(Map<String, JSONObject> defaultNavMap) {
+
+               JSONObject navItemsDetails1 = new JSONObject();
+               navItemsDetails1.put("name", "Users");
+               navItemsDetails1.put("state", "root.users");
+               navItemsDetails1.put("imageSrc", "icon-user");
+               defaultNavMap.put("root.users", navItemsDetails1);
+
+               // No more widget onboarding like this:
+               //
+               // JSONObject navItemsDetails2 = new JSONObject();
+               // navItemsDetails2.put("name", "Widget Onboarding");
+               // navItemsDetails2.put("state", "root.widgetOnboarding");
+               // navItemsDetails2.put("imageSrc", "icon-add-widget");
+               // defaultNavMap.put("root.widgetOnboarding", navItemsDetails2);
+
+       }
+
+}