2 * ================================================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ================================================================================
20 package org.openecomp.portalsdk.core.controller;
22 import java.util.ArrayList;
23 import java.util.HashMap;
24 import java.util.List;
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpSession;
31 import org.openecomp.portalsdk.core.domain.MenuData;
32 import org.openecomp.portalsdk.core.domain.User;
33 import org.openecomp.portalsdk.core.interfaces.SecurityInterface;
34 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
35 import org.openecomp.portalsdk.core.menu.MenuBuilder;
36 import org.openecomp.portalsdk.core.service.AppService;
37 import org.openecomp.portalsdk.core.service.DataAccessService;
38 import org.openecomp.portalsdk.core.service.FnMenuService;
39 import org.openecomp.portalsdk.core.util.SystemProperties;
40 import org.openecomp.portalsdk.core.web.support.UserUtils;
41 import org.springframework.beans.factory.annotation.Autowired;
42 import org.springframework.stereotype.Controller;
43 import org.springframework.web.bind.annotation.ModelAttribute;
45 import com.fasterxml.jackson.databind.ObjectMapper;
48 public abstract class FusionBaseController implements SecurityInterface{
50 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FusionBaseController.class);
53 public boolean isAccessible() {
57 public boolean isRESTfulCall(){
61 private FnMenuService fnMenuService;
64 private MenuBuilder menuBuilder;
67 private DataAccessService dataAccessService;
70 AppService appService;
72 @SuppressWarnings({ "unchecked", "rawtypes" })
73 @ModelAttribute("menu")
74 public Map<String, Object> getMenu(HttpServletRequest request) {
75 HttpSession session = null;
76 Map<String, Object> model = new HashMap<String, Object>();
79 String appName = appService.getDefaultAppName();
80 if (appName==null || appName=="") {
81 appName = SystemProperties.SDK_NAME;
83 logger.setRequestBasedDefaultsIntoGlobalLoggingContext(request, appName);
84 } catch (Exception e) {
87 session = request.getSession();
88 User user = UserUtils.getUserSession(request);
89 if(session!=null && user!=null){
90 Set<MenuData> menuResult = (Set<MenuData>) session.getAttribute(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_ATTRIBUTE_NAME));
92 Set appMenu = getMenuBuilder().getMenu(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_SET_NAME),dataAccessService);
93 session.setAttribute(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_ATTRIBUTE_NAME), MenuBuilder.filterMenu(appMenu, request));
94 menuResult = (Set<MenuData>) session.getAttribute(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_ATTRIBUTE_NAME));
96 model = setMenu(menuResult);
98 } catch (Exception e) {
99 logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
104 public Map<String, Object> setMenu(Set<MenuData> menuResult) throws Exception{
105 ObjectMapper mapper = new ObjectMapper();
106 List<List<MenuData>> childItemList = new ArrayList<List<MenuData>>();;
107 List<MenuData> parentList = new ArrayList<MenuData>();;
108 Map<String, Object> model = new HashMap<String, Object>();
110 fnMenuService.setMenuDataStructure(childItemList, parentList, menuResult);
112 logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
114 model.put("childItemList",childItemList!=null?mapper.writeValueAsString(childItemList):"");
115 model.put("parentList",parentList!=null?mapper.writeValueAsString(parentList):"");
119 public MenuBuilder getMenuBuilder() {
123 public void setMenuBuilder(MenuBuilder menuBuilder) {
124 this.menuBuilder = menuBuilder;
127 public DataAccessService getDataAccessService() {
128 return dataAccessService;
131 public void setDataAccessService(DataAccessService dataAccessService) {
132 this.dataAccessService = dataAccessService;