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.io.PrintWriter;
23 import java.util.ArrayList;
24 import java.util.HashMap;
25 import java.util.List;
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletResponse;
31 import org.json.JSONObject;
32 import org.openecomp.portalsdk.core.controller.RestrictedBaseController;
33 import org.openecomp.portalsdk.core.domain.Menu;
34 import org.openecomp.portalsdk.core.domain.MenuData;
35 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
36 import org.openecomp.portalsdk.core.service.FnMenuService;
37 import org.openecomp.portalsdk.core.service.FunctionalMenuListService;
38 import org.openecomp.portalsdk.core.util.SystemProperties;
39 import org.openecomp.portalsdk.core.web.support.JsonMessage;
40 import org.springframework.beans.factory.annotation.Autowired;
41 import org.springframework.stereotype.Controller;
42 import org.springframework.web.bind.annotation.RequestMapping;
43 import org.springframework.web.bind.annotation.RequestMethod;
44 import org.springframework.web.servlet.ModelAndView;
46 import com.fasterxml.jackson.databind.DeserializationFeature;
47 import com.fasterxml.jackson.databind.JsonNode;
48 import com.fasterxml.jackson.databind.ObjectMapper;
51 * A controller for Admin to add/edit/delete menu items from FN_MENU.
56 public class FnMenuController extends RestrictedBaseController {
58 private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnMenuController.class);
61 FnMenuService service;
64 FunctionalMenuListService functionalMenuListService;
66 private String viewName;
68 @RequestMapping(value = { "/admin_fn_menu/get_parent_list" }, method = RequestMethod.GET)
69 public void getParentList(HttpServletRequest request, HttpServletResponse response) throws Exception {
70 ObjectMapper mapper = new ObjectMapper();
72 response.getWriter().write(mapper.writeValueAsString(service.getParentList()));
73 } catch (Exception e) {
74 logger.error(EELFLoggerDelegate.errorLogger, "getParentListFailed", e);
75 response.setCharacterEncoding("UTF-8");
76 request.setCharacterEncoding("UTF-8");
77 PrintWriter out = response.getWriter();
78 out.write(e.getMessage());
82 @RequestMapping(value = { "/admin_fn_menu/get_function_cd_list" }, method = RequestMethod.GET)
83 public void getFunctionCDList(HttpServletRequest request, HttpServletResponse response) throws Exception {
84 ObjectMapper mapper = new ObjectMapper();
86 response.getWriter().write(mapper.writeValueAsString(functionalMenuListService.getFunctionCDList(request)));
87 } catch (Exception e) {
88 logger.error(EELFLoggerDelegate.errorLogger, "getFunctionCDList", e);
89 response.setCharacterEncoding("UTF-8");
90 request.setCharacterEncoding("UTF-8");
91 PrintWriter out = response.getWriter();
92 out.write(e.getMessage());
97 @RequestMapping(value = { "/admin_fn_menu" }, method = RequestMethod.GET)
98 public void getFnMenuList(HttpServletRequest request, HttpServletResponse response) {
99 Map<String, Object> model = new HashMap<String, Object>();
100 ObjectMapper mapper = new ObjectMapper();
101 List<MenuData> temp = null;
102 List<List<MenuData>> childItemList = new ArrayList<List<MenuData>>();
103 List<MenuData> parentList = new ArrayList<>();
106 temp = service.getFnMenuItems();
107 for (MenuData menu : temp) {
108 MenuData parentData = new MenuData();
109 parentData.setId(menu.getId());
110 parentData.setLabel(menu.getLabel());
111 if (menu.getParentMenu() != null) {
112 parentData.setParentId(menu.getParentMenu().getId());
114 parentData.setAction(menu.getAction());
115 parentData.setFunctionCd(menu.getFunctionCd());
116 parentData.setImageSrc(menu.getImageSrc());
117 parentData.setSortOrder(menu.getSortOrder());
118 parentData.setActive(menu.isActive());
119 parentData.setServlet(menu.getServlet());
120 parentData.setQueryString(menu.getQueryString());
121 parentData.setExternalUrl(menu.getExternalUrl());
122 parentData.setTarget(menu.getTarget());
123 parentData.setMenuSetCode(menu.getMenuSetCode());
124 parentData.setSeparator(menu.isSeparator());
125 parentData.setImageSrc(menu.getImageSrc());
126 parentList.add(parentData);
127 List<MenuData> tempList = new ArrayList<MenuData>();
128 // int countChildAction = 0;
130 * for(Object o:menu.getChildMenus()){ Menu m = (Menu)o; Menu
131 * data = new Menu(); data.setId(m.getId());
132 * data.setLabel(m.getLabel()); data.setAction(m.getAction());
133 * data.setImageSrc(m.getImageSrc()); tempList.add(data); }
135 childItemList.add(tempList);
137 model.put("fnMenuItems", parentList);
138 // JsonMessage msg = new
139 // JsonMessage(mapper.writeValueAsString(parentList),mapper.writeValueAsString(childItemList),"none");
141 JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
142 JSONObject j = new JSONObject(msg);
143 response.getWriter().write(j.toString());
144 } catch (Exception e) {
145 logger.error(EELFLoggerDelegate.errorLogger, "getFnMenuList failed", e);
150 @RequestMapping(value = { "/admin_fn_menu/updateFnMenu" }, method = RequestMethod.POST)
151 public ModelAndView updateFnMenu(HttpServletRequest request, HttpServletResponse response) throws Exception {
154 ObjectMapper mapper = new ObjectMapper();
155 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
156 JsonNode root = mapper.readTree(request.getReader());
157 Menu fnMenuItem = mapper.readValue(root.get("availableFnMenuItem").toString(), Menu.class);
159 service.saveFnMenu(fnMenuItem);
161 .removeAttribute(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_ATTRIBUTE_NAME));
162 request.getSession().removeAttribute(SystemProperties.LEFT_MENU_CHILDREND);
163 request.getSession().removeAttribute(SystemProperties.LEFT_MENU_PARENT);
165 response.setCharacterEncoding("UTF-8");
166 response.setContentType("application / json");
167 request.setCharacterEncoding("UTF-8");
169 PrintWriter out = response.getWriter();
170 String responseString = mapper.writeValueAsString(service.getMenuItem(fnMenuItem.getId()));
172 out.write(responseString);
176 } catch (Exception e) {
177 logger.error(EELFLoggerDelegate.errorLogger, "updateFnMenu failed", e);
178 response.setCharacterEncoding("UTF-8");
179 request.setCharacterEncoding("UTF-8");
180 PrintWriter out = response.getWriter();
181 out.write(e.getMessage());
187 @RequestMapping(value = { "/admin_fn_menu/removeMenuItem" }, method = RequestMethod.POST)
188 public ModelAndView removeFnMenu(HttpServletRequest request, HttpServletResponse response) throws Exception {
191 ObjectMapper mapper = new ObjectMapper();
192 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
193 JsonNode root = mapper.readTree(request.getReader());
194 Menu fnMenuItem = mapper.readValue(root.get("fnMenuItem").toString(), Menu.class);
195 Menu fnMenuItemRow = service.getMenuItemRow(fnMenuItem.getId());
197 service.removeMenuItem(fnMenuItemRow);
199 response.setCharacterEncoding("UTF-8");
200 response.setContentType("application / json");
201 request.setCharacterEncoding("UTF-8");
202 PrintWriter out = response.getWriter();
203 String responseString = mapper.writeValueAsString(service.getMenuItem(fnMenuItem.getId()));
204 out.write(responseString);
208 } catch (Exception e) {
209 logger.error(EELFLoggerDelegate.errorLogger, "removeFnMenu failed", e);
210 response.setCharacterEncoding("UTF-8");
211 request.setCharacterEncoding("UTF-8");
212 PrintWriter out = response.getWriter();
213 out.write(e.getMessage());
219 public String getViewName() {
223 public void setViewName(String viewName) {
224 this.viewName = viewName;