ce5ec975369e489d04bbd02dbc5f13a521c96eb6
[portal/sdk.git] /
1 /*-
2  * ================================================================================
3  * ECOMP Portal SDK
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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  * ================================================================================
19  */
20 package org.openecomp.portalapp.controller.core;
21
22 import java.util.ArrayList;
23 import java.util.HashMap;
24 import java.util.List;
25 import java.util.Map;
26 import java.util.Set;
27
28 import javax.servlet.http.Cookie;
29 import javax.servlet.http.HttpServletRequest;
30 import javax.servlet.http.HttpServletResponse;
31 import javax.servlet.http.HttpSession;
32
33 import org.json.JSONObject;
34 import org.openecomp.portalsdk.core.controller.RestrictedBaseController;
35 import org.openecomp.portalsdk.core.domain.MenuData;
36 import org.openecomp.portalsdk.core.domain.User;
37 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
38 import org.openecomp.portalsdk.core.onboarding.util.PortalApiConstants;
39 import org.openecomp.portalsdk.core.onboarding.util.PortalApiProperties;
40 import org.openecomp.portalsdk.core.restful.client.SharedContextRestClient;
41 import org.openecomp.portalsdk.core.restful.domain.SharedContext;
42 import org.openecomp.portalsdk.core.service.FnMenuService;
43 import org.openecomp.portalsdk.core.util.SystemProperties;
44 import org.openecomp.portalsdk.core.web.support.JsonMessage;
45 import org.springframework.beans.factory.annotation.Autowired;
46 import org.springframework.stereotype.Controller;
47 import org.springframework.web.bind.annotation.ModelAttribute;
48 import org.springframework.web.bind.annotation.RequestMapping;
49 import org.springframework.web.bind.annotation.RequestMethod;
50
51 import com.fasterxml.jackson.databind.ObjectMapper;
52
53 @Controller
54 @RequestMapping("/")
55 public class MenuListController extends RestrictedBaseController {
56
57         private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MenuListController.class);
58
59         @Autowired
60         private FnMenuService fnMenuService;
61         @Autowired
62         private SharedContextRestClient sharedContextRestClient;
63
64         /**
65          * 
66          * Gets Menu items and stores into session.
67          * 
68          * @param request
69          * @param response
70          */
71         @SuppressWarnings("unchecked")
72         @RequestMapping(value = { "/get_menu" }, method = RequestMethod.GET)
73         public void getMenu(HttpServletRequest request, HttpServletResponse response) {
74                 logger.debug(EELFLoggerDelegate.debugLogger, "getMenu begins");
75                 try {
76                         ObjectMapper mapper = new ObjectMapper();
77                         Set<MenuData> menuResult = null;
78                         HttpSession session = request.getSession();
79                         List<List<MenuData>> childItemList = (List<List<MenuData>>) session
80                                         .getAttribute(SystemProperties.LEFT_MENU_CHILDREND);
81                         List<MenuData> parentList = (List<MenuData>) session.getAttribute(SystemProperties.LEFT_MENU_PARENT);
82                         if (parentList == null || childItemList == null || parentList.size() == 0 || childItemList.size() == 0) {
83                                 childItemList = new ArrayList<List<MenuData>>();
84                                 parentList = new ArrayList<MenuData>();
85                                 menuResult = (Set<MenuData>) session
86                                                 .getAttribute(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_ATTRIBUTE_NAME));
87                                 fnMenuService.setMenuDataStructure(childItemList, parentList, menuResult);
88                                 logger.debug(EELFLoggerDelegate.debugLogger, "storing leftmenu items into session");
89                                 session.setAttribute(SystemProperties.LEFT_MENU_PARENT, parentList);
90                                 session.setAttribute(SystemProperties.LEFT_MENU_CHILDREND, childItemList);
91                         }
92                         String userName = (String) session.getAttribute(SystemProperties.getProperty(SystemProperties.USER_NAME));
93                         JsonMessage msg = new JsonMessage(mapper.writeValueAsString(parentList),
94                                         mapper.writeValueAsString(childItemList), userName);
95                         JSONObject j = new JSONObject(msg);
96                         response.setContentType("application/json");
97                         response.getWriter().write(j.toString());
98                         logger.debug(EELFLoggerDelegate.debugLogger, "getMenu ends");
99                 } catch (Exception e) {
100                         logger.error(EELFLoggerDelegate.errorLogger, "getMenu failed", e);
101                 }
102         }
103
104         /**
105          * 
106          * Gets app name from system.properties file.
107          * 
108          * @param request
109          * @param response
110          */
111         @RequestMapping(value = { "/get_app_name" }, method = RequestMethod.GET)
112         public void getAppName(HttpServletRequest request, HttpServletResponse response) {
113                 logger.debug(EELFLoggerDelegate.debugLogger, "getAppName begins");
114                 HttpSession session = request.getSession(true);
115                 try {
116                         String appName = (String) session
117                                         .getAttribute(SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME));
118                         if (appName != null && appName.equals("app_display_name")) {
119                                 appName = "";
120                         }
121                         JsonMessage msg = new JsonMessage(appName);
122                         JSONObject j = new JSONObject(msg);
123                         response.setContentType("application/json");
124                         response.getWriter().write(j.toString());
125                         logger.debug(EELFLoggerDelegate.debugLogger, "getAppName ends");
126                 } catch (Exception e) {
127                         logger.error(EELFLoggerDelegate.errorLogger, "getAppName failed", e);
128                 }
129         }
130
131         /**
132          * Apparently unused?
133          * 
134          * @param request
135          * @return Map with childItemList and parentList keys, associated values.
136          */
137         @SuppressWarnings("unchecked")
138         @ModelAttribute("menu")
139         public Map<String, Object> getLeftMenuJSP(HttpServletRequest request) {
140                 logger.debug(EELFLoggerDelegate.debugLogger, "getLeftMenuJSP begins");
141                 ObjectMapper mapper = new ObjectMapper();
142                 Map<String, Object> model = new HashMap<String, Object>();
143                 try {
144                         HttpSession session = request.getSession();
145                         List<List<MenuData>> childItemList = (List<List<MenuData>>) session
146                                         .getAttribute(SystemProperties.LEFT_MENU_CHILDREND);
147                         List<MenuData> parentList = (List<MenuData>) session.getAttribute(SystemProperties.LEFT_MENU_PARENT);
148                         if (parentList == null || childItemList == null) {
149                                 childItemList = new ArrayList<List<MenuData>>();
150                                 parentList = new ArrayList<MenuData>();
151                                 Set<MenuData> menuResult = (Set<MenuData>) session
152                                                 .getAttribute(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_ATTRIBUTE_NAME));
153                                 fnMenuService.setMenuDataStructure(childItemList, parentList, menuResult);
154                                 session.setAttribute(SystemProperties.LEFT_MENU_PARENT, parentList);
155                                 session.setAttribute(SystemProperties.LEFT_MENU_CHILDREND, childItemList);
156                         }
157                         model.put("childItemList", mapper.writeValueAsString(childItemList));
158                         model.put("parentList", mapper.writeValueAsString(parentList));
159                 } catch (Exception e) {
160                         logger.error(EELFLoggerDelegate.errorLogger, "getLeftMenuJSP failed", e);
161                 }
162                 logger.debug(EELFLoggerDelegate.debugLogger, "getLeftMenuJSP ends");
163                 return model;
164         }
165
166         /**
167          * Answers requests for user information, which is fetched from the shared
168          * context at Portal.
169          * 
170          * @param request
171          * @param response
172          */
173         @RequestMapping(value = { "/get_userinfo" }, method = RequestMethod.GET)
174         public void getUserInfo(HttpServletRequest request, HttpServletResponse response) {
175                 logger.debug(EELFLoggerDelegate.debugLogger, "getUserInfo begins");
176                 try {
177                         String contextId = null;
178                         if (request.getCookies() != null) {
179                                 for (Cookie ck : request.getCookies()) {
180                                         if (ck.getName().equalsIgnoreCase("EPService"))
181                                                 contextId = ck.getValue();
182                                 }
183                         }
184                         logger.debug(EELFLoggerDelegate.debugLogger, "getUserInfo: ContextId is : " + contextId);
185                         List<SharedContext> sharedContextRes = sharedContextRestClient.getUserContext(contextId);
186                         logger.debug(EELFLoggerDelegate.debugLogger, "getUserInfo: Shared Context Response is {}",
187                                         sharedContextRes);
188                         Map<String, Object> model = new HashMap<String, Object>();
189                         for (SharedContext sharedContext : sharedContextRes) {
190                                 model.put(sharedContext.getCkey(), sharedContext.getCvalue());
191                         }
192                         JSONObject j = new JSONObject(model);
193                         response.setContentType("application/json");
194                         response.getWriter().write(j.toString());
195                 } catch (Exception e) {
196                         logger.error(EELFLoggerDelegate.errorLogger, "getUserInfo failed", e);
197                 }
198         }
199
200         /**
201          * Get User information from app sessions
202          * 
203          * @param request
204          * @param response
205          */
206         @RequestMapping(value = { "/get_topMenuInfo" }, method = RequestMethod.GET)
207         public void getTopMenu(HttpServletRequest request, HttpServletResponse response) {
208
209                 HttpSession session = request.getSession();
210                 try {
211                         String userName = (String) session.getAttribute(SystemProperties.getProperty(SystemProperties.USER_NAME));
212                         String firstName = (String) session.getAttribute(SystemProperties.FIRST_NAME);
213                         String lastName = (String) session.getAttribute(SystemProperties.LAST_NAME);
214                         User user = (User) session.getAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME));
215                         Map<String, String> map = new HashMap<String, String>();
216                         String redirectUrl = PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL);
217                         String portalDomain = redirectUrl.substring(0, redirectUrl.lastIndexOf('/'));
218                         String portalUrl = portalDomain + "/process_csp";
219                         String getAccessUrl = portalDomain + "/get_access";
220                         String contactUsLink = SystemProperties.getProperty(SystemProperties.CONTACT_US_LINK);
221                         map.put("portalUrl", portalUrl);
222                         map.put("contactUsLink", contactUsLink);
223                         map.put("userName", userName);
224                         map.put("firstName", firstName);
225                         map.put("lastName", lastName);
226                         map.put("userid", user.getOrgUserId());
227                         map.put("email", user.getEmail());
228                         map.put("getAccessUrl", getAccessUrl);
229                         JSONObject j = new JSONObject(map);
230                         response.setContentType("application/json");
231                         response.getWriter().write(j.toString());
232                 } catch (Exception e) {
233                         logger.error(EELFLoggerDelegate.errorLogger, "Failed to serialize JSON", e);
234                 }
235
236         }
237
238         @RequestMapping(value = { "/page_redirect" }, method = RequestMethod.GET)
239         public void pageRedirect(HttpServletRequest request, HttpServletResponse response) {
240                 String pageToURL = null;
241                 try {
242                         String pageTo = request.getParameter("page");
243                         if (pageTo.equals("contact"))
244                                 pageToURL = SystemProperties.getProperty(SystemProperties.CONTACT_US_LINK);
245                         else if (pageTo.equals("access")) {
246                                 String redirectUrl = PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL);
247                                 String portalDomain = redirectUrl.substring(0, redirectUrl.lastIndexOf('/'));
248                                 pageToURL = portalDomain + "/get_access";
249                         }
250                         response.getWriter().write(pageToURL);
251                 } catch (Exception e) {
252                         logger.error(EELFLoggerDelegate.errorLogger, "pageRedirect failed", e);
253                 }
254         }
255 }