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.portalapp.controller.core;
22 import java.util.ArrayList;
23 import java.util.HashMap;
24 import java.util.List;
28 import javax.servlet.http.Cookie;
29 import javax.servlet.http.HttpServletRequest;
30 import javax.servlet.http.HttpServletResponse;
31 import javax.servlet.http.HttpSession;
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;
51 import com.fasterxml.jackson.databind.ObjectMapper;
55 public class MenuListController extends RestrictedBaseController {
57 private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MenuListController.class);
60 private FnMenuService fnMenuService;
62 private SharedContextRestClient sharedContextRestClient;
66 * Gets Menu items and stores into session.
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");
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);
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);
106 * Gets app name from system.properties file.
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);
116 String appName = (String) session
117 .getAttribute(SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME));
118 if (appName != null && appName.equals("app_display_name")) {
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);
135 * @return Map with childItemList and parentList keys, associated values.
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>();
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);
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);
162 logger.debug(EELFLoggerDelegate.debugLogger, "getLeftMenuJSP ends");
167 * Answers requests for user information, which is fetched from the shared
173 @RequestMapping(value = { "/get_userinfo" }, method = RequestMethod.GET)
174 public void getUserInfo(HttpServletRequest request, HttpServletResponse response) {
175 logger.debug(EELFLoggerDelegate.debugLogger, "getUserInfo begins");
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();
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 {}",
188 Map<String, Object> model = new HashMap<String, Object>();
189 for (SharedContext sharedContext : sharedContextRes) {
190 model.put(sharedContext.getCkey(), sharedContext.getCvalue());
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);
201 * Get User information from app sessions
206 @RequestMapping(value = { "/get_topMenuInfo" }, method = RequestMethod.GET)
207 public void getTopMenu(HttpServletRequest request, HttpServletResponse response) {
209 HttpSession session = request.getSession();
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);
238 @RequestMapping(value = { "/page_redirect" }, method = RequestMethod.GET)
239 public void pageRedirect(HttpServletRequest request, HttpServletResponse response) {
240 String pageToURL = null;
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";
250 response.getWriter().write(pageToURL);
251 } catch (Exception e) {
252 logger.error(EELFLoggerDelegate.errorLogger, "pageRedirect failed", e);