2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ===================================================================
8 * Unless otherwise specified, all software contained herein is licensed
9 * under the Apache License, Version 2.0 (the "License");
10 * you may not use this software except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * Unless otherwise specified, all documentation contained herein is licensed
22 * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23 * you may not use this documentation except in compliance with the License.
24 * You may obtain a copy of the License at
26 * https://creativecommons.org/licenses/by/4.0/
28 * Unless required by applicable law or agreed to in writing, documentation
29 * distributed under the License is distributed on an "AS IS" BASIS,
30 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 * See the License for the specific language governing permissions and
32 * limitations under the License.
34 * ============LICENSE_END============================================
38 package org.onap.portalapp.portal.controller;
40 import java.io.IOException;
41 import java.text.SimpleDateFormat;
42 import java.util.ArrayList;
43 import java.util.Collections;
44 import java.util.Comparator;
45 import java.util.Date;
46 import java.util.HashMap;
47 import java.util.List;
50 import javax.servlet.http.HttpServletRequest;
51 import javax.servlet.http.HttpServletResponse;
53 import org.json.JSONObject;
54 import org.onap.portalapp.controller.EPRestrictedBaseController;
55 import org.onap.portalapp.portal.domain.EPUser;
56 import org.onap.portalapp.portal.domain.SharedContext;
57 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
58 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
59 import org.onap.portalapp.portal.logging.aop.EPAuditLog;
60 import org.onap.portalapp.portal.service.AdminRolesService;
61 import org.onap.portalapp.portal.service.FunctionalMenuService;
62 import org.onap.portalapp.portal.service.SearchService;
63 import org.onap.portalapp.portal.service.SharedContextService;
64 import org.onap.portalapp.portal.transport.BusinessCardApplicationRole;
65 import org.onap.portalapp.portal.transport.BusinessCardApplicationRolesList;
66 import org.onap.portalapp.portal.transport.FavoritesFunctionalMenuItem;
67 import org.onap.portalapp.portal.transport.FavoritesFunctionalMenuItemJson;
68 import org.onap.portalapp.portal.transport.FieldsValidator;
69 import org.onap.portalapp.portal.transport.FunctionalMenuItem;
70 import org.onap.portalapp.portal.transport.FunctionalMenuItemWithRoles;
71 import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
72 import org.onap.portalapp.portal.utils.EcompPortalUtils;
73 import org.onap.portalapp.util.EPUserUtils;
74 import org.onap.portalapp.validation.DataValidator;
75 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
76 import org.onap.portalsdk.core.util.SystemProperties;
77 import org.springframework.beans.factory.annotation.Autowired;
78 import org.springframework.context.annotation.Configuration;
79 import org.springframework.context.annotation.EnableAspectJAutoProxy;
80 import org.springframework.web.bind.annotation.PathVariable;
81 import org.springframework.web.bind.annotation.RequestBody;
82 import org.springframework.web.bind.annotation.RequestMapping;
83 import org.springframework.web.bind.annotation.RequestMethod;
84 import org.springframework.web.bind.annotation.RequestParam;
85 import org.springframework.web.bind.annotation.RestController;
88 * Supports menus at the top of the Portal app landing page.
92 @EnableAspectJAutoProxy
94 public class FunctionalMenuController extends EPRestrictedBaseController {
96 private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FunctionalMenuController.class);
97 private final DataValidator dataValidator = new DataValidator();
100 private AdminRolesService adminRolesService;
102 private FunctionalMenuService functionalMenuService;
104 private SharedContextService sharedContextService;
106 private SearchService searchService;
109 * RESTful service method to fetch all the FunctionalMenuItems.
114 * HttpServletResponse
115 * @return List of FunctionalMenuItem objects
117 @RequestMapping(value = { "/portalApi/functionalMenu" }, method = RequestMethod.GET, produces = "application/json")
118 public List<FunctionalMenuItem> getMenuItems(HttpServletRequest request, HttpServletResponse response) {
119 // TODO: should only the superuser be allowed to use this API?
120 List<FunctionalMenuItem> menuItems = null;
122 menuItems = functionalMenuService.getFunctionalMenuItems();
123 functionalMenuService.assignHelpURLs(menuItems);
124 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenu", "result =", menuItems);
125 } catch (Exception e) {
126 logger.error(EELFLoggerDelegate.errorLogger, "getMenuItems failed", e);
132 * RESTful service method to get ONAP Portal Title.
137 * HttpServletResponse
138 * @return PortalRestResponse of ONAP portal title
140 @RequestMapping(value = { "/portalApi/ecompTitle" }, method = RequestMethod.GET, produces = "application/json")
141 public PortalRestResponse<String> getECOMPTitle(HttpServletRequest request, HttpServletResponse response) {
142 PortalRestResponse<String> portalRestResponse = null;
144 String ecompTitle = SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME);
145 portalRestResponse = new PortalRestResponse<String>(PortalRestStatusEnum.OK, "success", ecompTitle);
146 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/ecompTitle", "result =", ecompTitle);
147 } catch (Exception e) {
148 portalRestResponse = new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), null);
149 logger.error(EELFLoggerDelegate.errorLogger, "getEcompTitle failed", e);
151 return portalRestResponse;
155 * RESTful service method to fetch all the FunctionalMenuItems, both active and
156 * inactive, for the EditFunctionalMenu feature. Can only be accessed by the
162 * HttpServletResponse
163 * @return List of FunctionalMenuItem objects
165 @RequestMapping(value = {
166 "/portalApi/functionalMenuForEditing" }, method = RequestMethod.GET, produces = "application/json")
167 public List<FunctionalMenuItem> getMenuItemsForEditing(HttpServletRequest request, HttpServletResponse response) {
168 // TODO: should only the superuser be allowed to use this API?
169 EPUser user = EPUserUtils.getUserSession(request);
170 List<FunctionalMenuItem> menuItems = null;
172 if (!adminRolesService.isSuperAdmin(user)) {
173 EcompPortalUtils.setBadPermissions(user, response, "getFunctionalMenuItemDetails");
175 menuItems = functionalMenuService.getFunctionalMenuItems(true);
177 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenuForEditing", "result =",
179 } catch (Exception e) {
180 logger.error(EELFLoggerDelegate.errorLogger, "getMenuItemsForEditing failed", e);
186 * RESTful service method to fetch all the FunctionalMenuItems, active , for the
187 * Functional menu in notification Tree feature.
192 * HttpServletResponse
193 * @return List of FunctionalMenuItem objects
195 @RequestMapping(value = {
196 "/portalApi/functionalMenuForNotificationTree" }, method = RequestMethod.GET, produces = "application/json")
197 public List<FunctionalMenuItem> getMenuItemsForNotifications(HttpServletRequest request,
198 HttpServletResponse response) {
199 // TODO: should only the superuser be allowed to use this API?
200 // EPUser user = EPUserUtils.getUserSession(request);
201 List<FunctionalMenuItem> menuItems = null;
203 menuItems = functionalMenuService.getFunctionalMenuItemsForNotificationTree(true);
204 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenuForNotificationTree", "result =",
206 } catch (Exception e) {
207 logger.error(EELFLoggerDelegate.errorLogger, "getMenuItemsForNotifications failed", e);
213 * RESTful service method to fetch all FunctionalMenuItems associated with an
220 * @return List of FunctionalMenuItem objects
222 @RequestMapping(value = {
223 "/portalApi/functionalMenuForApp/{appId}" }, method = RequestMethod.GET, produces = "application/json")
224 public List<FunctionalMenuItem> getMenuItemsForApp(HttpServletRequest request,
225 @PathVariable("appId") Integer appId) {
226 // TODO: should only the superuser be allowed to use this API?
227 List<FunctionalMenuItem> menuItems = null;
229 menuItems = functionalMenuService.getFunctionalMenuItemsForApp(appId);
230 functionalMenuService.assignHelpURLs(menuItems);
231 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenuForApp/" + appId, "result =",
233 } catch (Exception e) {
234 logger.error(EELFLoggerDelegate.errorLogger, "getMenuItemsForApp failed", e);
240 * RESTful service method to fetch all FunctionalMenuItems associated with the
241 * applications and roles that a user has access to.
247 * @return List of FunctionalMenuItem objects
249 @RequestMapping(value = {
250 "/portalApi/functionalMenuForUser/{orgUserId}" }, method = RequestMethod.GET, produces = "application/json")
251 public List<FunctionalMenuItem> getMenuItemsForUser(HttpServletRequest request,
252 @PathVariable("orgUserId") String orgUserId) {
253 // TODO: should only the superuser be allowed to use this API?
254 List<FunctionalMenuItem> menuItems = null;
256 menuItems = functionalMenuService.getFunctionalMenuItemsForUser(orgUserId);
257 functionalMenuService.assignHelpURLs(menuItems);
258 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenuForUser/" + orgUserId, "result =",
260 } catch (Exception e) {
261 logger.error(EELFLoggerDelegate.errorLogger, "getMenuItemsForUser failed", e);
268 * RESTful service method to fetch all FunctionalMenuItems associated with the
269 * applications and roles that the authenticated user has access to.
274 * HttpServletResponse
275 * @return List of FunctionalMenuItem objects
277 @RequestMapping(value = {
278 "/portalApi/functionalMenuForAuthUser" }, method = RequestMethod.GET, produces = "application/json")
279 public List<FunctionalMenuItem> getMenuItemsForAuthUser(HttpServletRequest request, HttpServletResponse response) {
281 EPUser user = EPUserUtils.getUserSession(request);
282 List<FunctionalMenuItem> menuItems = null;
285 EcompPortalUtils.setBadPermissions(user, response, "getMenuItemsForAuthUser");
286 } else if (adminRolesService.isSuperAdmin(user)) {
287 menuItems = functionalMenuService.getFunctionalMenuItems();
289 // calculate the menu items
290 String orgUserId = user.getOrgUserId();
291 menuItems = functionalMenuService.getFunctionalMenuItemsForUser(orgUserId);
292 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenuForUser/" + orgUserId,
293 "result =", menuItems);
295 functionalMenuService.assignHelpURLs(menuItems);
296 } catch (Exception e) {
297 logger.error(EELFLoggerDelegate.errorLogger, "getMenuItemsForAuthUser failed", e);
303 * RESTful service method to fetch the details for a functional menu item.
304 * Requirement: you must be the ONAP portal super admin user.
309 * HttpServletResponse
312 * @return FunctionalMenuItem object
314 @RequestMapping(value = {
315 "/portalApi/functionalMenuItemDetails/{menuId}" }, method = RequestMethod.GET, produces = "application/json")
316 public FunctionalMenuItem getFunctionalMenuItemDetails(HttpServletRequest request,
317 @PathVariable("menuId") Long menuId, HttpServletResponse response) {
318 // TODO: return FunctionalMenuItemJson
319 // TODO: modify FunctionalMenuItem to not include the transient fields
320 FunctionalMenuItem menuItem = null;
322 EPUser user = EPUserUtils.getUserSession(request);
323 if (!adminRolesService.isSuperAdmin(user)) {
324 EcompPortalUtils.setBadPermissions(user, response, "getFunctionalMenuItemDetails");
326 menuItem = functionalMenuService.getFunctionalMenuItemDetails(menuId);
327 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenuItemDetails/" + menuId,
328 "result =", menuItem);
330 } catch (Exception e) {
331 logger.error(EELFLoggerDelegate.errorLogger, "getFunctionalMenuItemDetails failed", e);
338 * RESTful service method to create a new menu item.
340 * Requirement: you must be the ONAP portal super admin user.
345 * HttpServletResponse
346 * @param menuItemJson
347 * FunctionalMenuItemWithRoles
348 * @return FieldsValidator
350 @RequestMapping(value = { "/portalApi/functionalMenuItem" }, method = RequestMethod.POST)
351 public FieldsValidator createFunctionalMenuItem(HttpServletRequest request,
352 @RequestBody FunctionalMenuItemWithRoles menuItemJson, HttpServletResponse response) {
353 EPUser user = EPUserUtils.getUserSession(request);
354 FieldsValidator fieldsValidator = null;
356 if(!dataValidator.isValid(menuItemJson)){
357 fieldsValidator = new FieldsValidator();
358 logger.warn(EELFLoggerDelegate.debugLogger,"FunctionalMenuController.createFunctionalMenuItem not valid object");
359 fieldsValidator.httpStatusCode = (long)HttpServletResponse.SC_NOT_ACCEPTABLE;
360 return fieldsValidator;
363 if (!adminRolesService.isSuperAdmin(user)) {
364 logger.debug(EELFLoggerDelegate.debugLogger,
365 "FunctionalMenuController.createFunctionalMenuItem bad permissions");
366 EcompPortalUtils.setBadPermissions(user, response, "createFunctionalMenuItem");
368 fieldsValidator = functionalMenuService.createFunctionalMenuItem(menuItemJson);
369 response.setStatus(fieldsValidator.httpStatusCode.intValue());
370 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenuItem", "POST result =",
371 response.getStatus());
374 return fieldsValidator;
378 * RESTful service method to update an existing menu item
380 * Requirement: you must be the ONAP portal super admin user.
385 * HttpServletResponse
386 * @param menuItemJson
387 * FunctionalMenuItemWithRoles
388 * @return FieldsValidator
390 @RequestMapping(value = { "/portalApi/functionalMenuItem" }, method = RequestMethod.PUT)
391 public FieldsValidator editFunctionalMenuItem(HttpServletRequest request,
392 @RequestBody FunctionalMenuItemWithRoles menuItemJson, HttpServletResponse response) {
393 EPUser user = EPUserUtils.getUserSession(request);
394 FieldsValidator fieldsValidator = null;
396 if(!dataValidator.isValid(menuItemJson)){
397 fieldsValidator = new FieldsValidator();
398 logger.warn(EELFLoggerDelegate.debugLogger,"FunctionalMenuController.createFunctionalMenuItem not valid object");
399 fieldsValidator.httpStatusCode = (long)HttpServletResponse.SC_NOT_ACCEPTABLE;
400 return fieldsValidator;
403 if (!adminRolesService.isSuperAdmin(user)) {
404 EcompPortalUtils.setBadPermissions(user, response, "editFunctionalMenuItem");
406 fieldsValidator = functionalMenuService.editFunctionalMenuItem(menuItemJson);
407 response.setStatus(fieldsValidator.httpStatusCode.intValue());
408 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenuItem", "PUT result =",
409 response.getStatus());
412 return fieldsValidator;
416 * RESTful service method to delete a menu item
421 * HttpServletResponse
424 * @return FieldsValidator
426 @RequestMapping(value = { "/portalApi/functionalMenuItem/{menuId}" }, method = RequestMethod.DELETE)
427 public FieldsValidator deleteFunctionalMenuItem(HttpServletRequest request, @PathVariable("menuId") Long menuId,
428 HttpServletResponse response) {
429 EPUser user = EPUserUtils.getUserSession(request);
430 FieldsValidator fieldsValidator = null;
431 if (!adminRolesService.isSuperAdmin(user)) {
432 EcompPortalUtils.setBadPermissions(user, response, "deleteFunctionalMenuItem");
434 fieldsValidator = functionalMenuService.deleteFunctionalMenuItem(menuId);
435 response.setStatus(fieldsValidator.httpStatusCode.intValue());
436 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenuItem", "DELETE result =",
437 response.getStatus());
440 return fieldsValidator;
444 * RESTful service to regenerate table
449 * HttpServletResponse
450 * @return FieldsValidator
452 @RequestMapping(value = { "/portalApi/regenerateFunctionalMenuAncestors" }, method = RequestMethod.GET)
453 public FieldsValidator regenerateAncestorTable(HttpServletRequest request, HttpServletResponse response) {
454 // TODO: should only the superuser be allowed to use this API?
455 EPUser user = EPUserUtils.getUserSession(request);
456 FieldsValidator fieldsValidator = null;
458 if (!adminRolesService.isSuperAdmin(user)) {
459 EcompPortalUtils.setBadPermissions(user, response, "deleteFunctionalMenuItem");
461 fieldsValidator = functionalMenuService.regenerateAncestorTable();
462 response.setStatus(fieldsValidator.httpStatusCode.intValue());
463 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/regenerateAncestorTable", "GET result =",
464 response.getStatus());
467 return fieldsValidator;
471 * RESful service to set a favorite item.
476 * HttpServletResponse
477 * @param menuItemJson
478 * FunctionalMenuItemWithRoles
479 * @return FieldsValidator
481 @RequestMapping(value = { "/portalApi/setFavoriteItem" }, method = RequestMethod.POST)
482 public FieldsValidator addFavoriteItem(HttpServletRequest request,
483 @RequestBody FavoritesFunctionalMenuItem menuItemJson, HttpServletResponse response) {
484 EPUser user = EPUserUtils.getUserSession(request);
485 FieldsValidator fieldsValidator = null;
486 menuItemJson.userId = user.getId();
487 fieldsValidator = functionalMenuService.setFavoriteItem(menuItemJson);
488 response.setStatus(fieldsValidator.httpStatusCode.intValue());
489 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/setFavoriteItem", "Post result =",
490 response.getStatus());
492 return fieldsValidator;
496 * RESTful service to get favorites for the current user as identified in the
502 * HttpServletResponse
503 * @return List of FavoritesFunctionalMenuItemJson
505 @RequestMapping(value = {
506 "/portalApi/getFavoriteItems" }, method = RequestMethod.GET, produces = "application/json")
507 public List<FavoritesFunctionalMenuItemJson> getFavoritesForUser(HttpServletRequest request,
508 HttpServletResponse response) {
509 EPUser user = EPUserUtils.getUserSession(request);
510 List<FavoritesFunctionalMenuItemJson> favorites = functionalMenuService.getFavoriteItems(user.getId());
511 FieldsValidator fieldsValidator = new FieldsValidator();
512 response.setStatus(fieldsValidator.httpStatusCode.intValue());
513 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/getFavoriteItems", "GET result =",
514 response.getStatus());
519 * RESTful service to delete a favorite menu item for the current user as
520 * identified in the session.
525 * HttpServletResponse
528 * @return FieldsValidator
530 @RequestMapping(value = { "/portalApi/removeFavoriteItem/{menuId}" }, method = RequestMethod.DELETE)
531 public FieldsValidator deleteFavoriteItem(HttpServletRequest request, @PathVariable("menuId") Long menuId,
532 HttpServletResponse response) {
533 EPUser user = EPUserUtils.getUserSession(request);
534 FieldsValidator fieldsValidator = null;
535 Long userId = user.getId();
536 fieldsValidator = functionalMenuService.removeFavoriteItem(userId, menuId);
537 response.setStatus(fieldsValidator.httpStatusCode.intValue());
538 EcompPortalUtils.logAndSerializeObject(logger, "/deleteFavoriteItem", "DELETE result =", response.getStatus());
540 return fieldsValidator;
544 * RESTful service to get user information: user's first and last names, org
545 * user ID, email and last-login. (Actually has nothing to do with the real
546 * functional menu.) First attempts to get the information from the Tomcat
547 * session (i.e., the CSP cookie); if that fails, calls the shared context
548 * service to read the information from the database. Gives back what it found,
549 * any of which may be null, as a JSON collection.
554 * HttpServletResponse
555 * @return JSON collection of key-value pairs shown below.
557 @RequestMapping(value = {
558 "/portalApi/functionalMenuStaticInfo" }, method = RequestMethod.GET, produces = "application/json")
559 public String getFunctionalMenuStaticInfo(HttpServletRequest request, HttpServletResponse response) {
561 // Get user details from session
562 logger.debug(EELFLoggerDelegate.debugLogger, "getFunctionalMenuStaticInfo: getting user info");
563 String fnMenuStaticResponse = null;
565 String orgUserIdStr = null, firstNameStr = null, lastNameStr = null, emailStr = null, lastLogin = null;
566 EPUser user = EPUserUtils.getUserSession(request);
567 firstNameStr = user.getFirstName();
568 lastNameStr = user.getLastName();
569 orgUserIdStr = user.getOrgUserId();
570 emailStr = user.getEmail();
571 if (emailStr == null || emailStr.equals("")) {
572 EPUser userResult = searchService.searchUserByUserId(orgUserIdStr);
573 emailStr = userResult.getEmail();
575 SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss Z a");
576 Date lastLoginDate = user.getLastLoginDate();
577 if (lastLoginDate == null) {
578 // should never happen
579 logger.error(EELFLoggerDelegate.errorLogger, "getFunctionalMenuStaticInfo: no last login in session");
580 lastLogin = "no last login available";
582 lastLogin = sdf.format(lastLoginDate);
585 // If any item is missing from session, try the Shared Context
587 SharedContext orgUserIdSC = null, firstNameSC = null, lastNameSC = null, emailSC = null;
588 String sessionId = request.getSession().getId();
589 if (firstNameStr == null)
590 firstNameSC = sharedContextService.getSharedContext(sessionId,
591 EPCommonSystemProperties.USER_FIRST_NAME);
592 if (lastNameStr == null)
593 lastNameSC = sharedContextService.getSharedContext(sessionId, EPCommonSystemProperties.USER_LAST_NAME);
594 if (emailStr == null)
595 emailSC = sharedContextService.getSharedContext(sessionId, EPCommonSystemProperties.USER_EMAIL);
596 if (orgUserIdStr == null)
597 orgUserIdSC = sharedContextService.getSharedContext(sessionId,
598 EPCommonSystemProperties.USER_ORG_USERID);
600 // Build the response
601 Map<String, String> map = new HashMap<String, String>();
603 firstNameStr != null ? firstNameStr : (firstNameSC != null ? firstNameSC.getCvalue() : null));
605 lastNameStr != null ? lastNameStr : (lastNameSC != null ? lastNameSC.getCvalue() : null));
606 map.put("email", emailStr != null ? emailStr : (emailSC != null ? emailSC.getCvalue() : null));
608 orgUserIdStr != null ? orgUserIdStr : (orgUserIdSC != null ? orgUserIdSC.getCvalue() : null));
609 map.put("last_login", lastLogin);
610 JSONObject j = new JSONObject(map);
611 fnMenuStaticResponse = j.toString();
612 // Be chatty in the log
613 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/functionalMenuStaticInfo", "GET result =",
614 fnMenuStaticResponse);
615 } catch (Exception e) {
616 // Should never happen.
617 logger.error(EELFLoggerDelegate.errorLogger, "getFunctionalMenuStaticInfo failed", e);
618 // Return a real error?
619 // fnMenuStaticResponse = "{ \"status\": \"error\", \"message\": \""
620 // + e.toString() + "\" }";
621 // But the angular controller expects null on error.
623 return fnMenuStaticResponse;
626 private Comparator<BusinessCardApplicationRole> getUserAppRolesComparator = new Comparator<BusinessCardApplicationRole>() {
627 public int compare(BusinessCardApplicationRole o1, BusinessCardApplicationRole o2) {
628 return o1.getAppName().compareTo(o2.getAppName());
638 * @return List<BusinessCardApplicationRolesList>
639 * @throws IOException
642 @RequestMapping(value = {
643 "/portalApi/userApplicationRoles" }, method = RequestMethod.GET, produces = "application/json")
644 public List<BusinessCardApplicationRolesList> getAppList(HttpServletRequest request,
645 @RequestParam("userId") String userId) throws IOException {
647 List<BusinessCardApplicationRolesList> AppRoles = null;
649 List<BusinessCardApplicationRole> userAppRoleList = functionalMenuService.getUserAppRolesList(userId);
651 Collections.sort(userAppRoleList, getUserAppRolesComparator);
652 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userApplicationRoles", "result =",
655 AppRoles = new ArrayList<BusinessCardApplicationRolesList>();
656 for (BusinessCardApplicationRole userAppRole : userAppRoleList) {
657 boolean found = false;
658 List<String> roles = null;
660 for (BusinessCardApplicationRolesList app : AppRoles) {
661 if (app.getAppName().equals(userAppRole.getAppName())) {
662 roles = app.getRoleNames();
663 roles.add(userAppRole.getRoleName());
664 app.setRoleNames(roles);
671 roles = new ArrayList<String>();
672 roles.add(userAppRole.getRoleName());
673 AppRoles.add(new BusinessCardApplicationRolesList(userAppRole.getAppName(), roles));
676 Collections.sort(roles);
678 } catch (Exception e) {
679 logger.error(EELFLoggerDelegate.errorLogger, "getAppList failed", e);