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.util.SystemProperties;
38 import org.openecomp.portalsdk.core.web.support.JsonMessage;
39 import org.springframework.beans.factory.annotation.Autowired;
40 import org.springframework.stereotype.Controller;
41 import org.springframework.web.bind.annotation.RequestMapping;
42 import org.springframework.web.bind.annotation.RequestMethod;
43 import org.springframework.web.servlet.ModelAndView;
45 import com.fasterxml.jackson.databind.DeserializationFeature;
46 import com.fasterxml.jackson.databind.JsonNode;
47 import com.fasterxml.jackson.databind.ObjectMapper;
50 * A controller for Admin to add/edit/delete menu items from FN_MENU.
55 public class FnMenuController extends RestrictedBaseController {
57 private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnMenuController.class);
60 FnMenuService service;
62 private String viewName;
64 @RequestMapping(value = { "/admin_fn_menu/get_parent_list" }, method = RequestMethod.GET)
65 public void getParentList(HttpServletRequest request, HttpServletResponse response) throws Exception {
66 ObjectMapper mapper = new ObjectMapper();
68 response.getWriter().write(mapper.writeValueAsString(service.getParentList()));
69 } catch (Exception e) {
70 logger.error(EELFLoggerDelegate.errorLogger, "getParentListFailed", e);
71 response.setCharacterEncoding("UTF-8");
72 request.setCharacterEncoding("UTF-8");
73 PrintWriter out = response.getWriter();
74 out.write(e.getMessage());
78 @RequestMapping(value = { "/admin_fn_menu/get_function_cd_list" }, method = RequestMethod.GET)
79 public void getFunctionCDList(HttpServletRequest request, HttpServletResponse response) throws Exception {
80 ObjectMapper mapper = new ObjectMapper();
82 response.getWriter().write(mapper.writeValueAsString(service.getFunctionCDList(request)));
83 } catch (Exception e) {
84 logger.error(EELFLoggerDelegate.errorLogger, "getFunctionCDList", e);
85 response.setCharacterEncoding("UTF-8");
86 request.setCharacterEncoding("UTF-8");
87 PrintWriter out = response.getWriter();
88 out.write(e.getMessage());
93 @RequestMapping(value = { "/admin_fn_menu" }, method = RequestMethod.GET)
94 public void getFnMenuList(HttpServletRequest request, HttpServletResponse response) {
95 Map<String, Object> model = new HashMap<String, Object>();
96 ObjectMapper mapper = new ObjectMapper();
97 List<MenuData> temp = null;
98 List<List<MenuData>> childItemList = new ArrayList<List<MenuData>>();
99 List<MenuData> parentList = new ArrayList<>();
102 temp = service.getFnMenuItems();
103 for (MenuData menu : temp) {
104 MenuData parentData = new MenuData();
105 parentData.setId(menu.getId());
106 parentData.setLabel(menu.getLabel());
107 if (menu.getParentMenu() != null) {
108 parentData.setParentId(menu.getParentMenu().getId());
110 parentData.setAction(menu.getAction());
111 parentData.setFunctionCd(menu.getFunctionCd());
112 parentData.setImageSrc(menu.getImageSrc());
113 parentData.setSortOrder(menu.getSortOrder());
114 parentData.setActive(menu.isActive());
115 parentData.setServlet(menu.getServlet());
116 parentData.setQueryString(menu.getQueryString());
117 parentData.setExternalUrl(menu.getExternalUrl());
118 parentData.setTarget(menu.getTarget());
119 parentData.setMenuSetCode(menu.getMenuSetCode());
120 parentData.setSeparator(menu.isSeparator());
121 parentData.setImageSrc(menu.getImageSrc());
122 parentList.add(parentData);
123 List<MenuData> tempList = new ArrayList<MenuData>();
124 // int countChildAction = 0;
126 * for(Object o:menu.getChildMenus()){ Menu m = (Menu)o; Menu
127 * data = new Menu(); data.setId(m.getId());
128 * data.setLabel(m.getLabel()); data.setAction(m.getAction());
129 * data.setImageSrc(m.getImageSrc()); tempList.add(data); }
131 childItemList.add(tempList);
133 model.put("fnMenuItems", parentList);
134 // JsonMessage msg = new
135 // JsonMessage(mapper.writeValueAsString(parentList),mapper.writeValueAsString(childItemList),"none");
137 JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
138 JSONObject j = new JSONObject(msg);
139 response.getWriter().write(j.toString());
140 } catch (Exception e) {
141 logger.error(EELFLoggerDelegate.errorLogger, "getFnMenuList failed", e);
146 @RequestMapping(value = { "/admin_fn_menu/updateFnMenu" }, method = RequestMethod.POST)
147 public ModelAndView updateFnMenu(HttpServletRequest request, HttpServletResponse response) throws Exception {
150 ObjectMapper mapper = new ObjectMapper();
151 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
152 JsonNode root = mapper.readTree(request.getReader());
153 Menu fnMenuItem = mapper.readValue(root.get("availableFnMenuItem").toString(), Menu.class);
155 service.saveFnMenu(fnMenuItem);
157 .removeAttribute(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_ATTRIBUTE_NAME));
158 request.getSession().removeAttribute(SystemProperties.LEFT_MENU_CHILDREND);
159 request.getSession().removeAttribute(SystemProperties.LEFT_MENU_PARENT);
161 response.setCharacterEncoding("UTF-8");
162 response.setContentType("application / json");
163 request.setCharacterEncoding("UTF-8");
165 PrintWriter out = response.getWriter();
166 String responseString = mapper.writeValueAsString(service.getMenuItem(fnMenuItem.getId()));
168 out.write(responseString);
172 } catch (Exception e) {
173 logger.error(EELFLoggerDelegate.errorLogger, "updateFnMenu failed", e);
174 response.setCharacterEncoding("UTF-8");
175 request.setCharacterEncoding("UTF-8");
176 PrintWriter out = response.getWriter();
177 out.write(e.getMessage());
183 @RequestMapping(value = { "/admin_fn_menu/removeMenuItem" }, method = RequestMethod.POST)
184 public ModelAndView removeFnMenu(HttpServletRequest request, HttpServletResponse response) throws Exception {
187 ObjectMapper mapper = new ObjectMapper();
188 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
189 JsonNode root = mapper.readTree(request.getReader());
190 Menu fnMenuItem = mapper.readValue(root.get("fnMenuItem").toString(), Menu.class);
191 Menu fnMenuItemRow = service.getMenuItemRow(fnMenuItem.getId());
193 service.removeMenuItem(fnMenuItemRow);
195 response.setCharacterEncoding("UTF-8");
196 response.setContentType("application / json");
197 request.setCharacterEncoding("UTF-8");
198 PrintWriter out = response.getWriter();
199 String responseString = mapper.writeValueAsString(service.getMenuItem(fnMenuItem.getId()));
200 out.write(responseString);
204 } catch (Exception e) {
205 logger.error(EELFLoggerDelegate.errorLogger, "removeFnMenu failed", e);
206 response.setCharacterEncoding("UTF-8");
207 request.setCharacterEncoding("UTF-8");
208 PrintWriter out = response.getWriter();
209 out.write(e.getMessage());
215 public String getViewName() {
219 public void setViewName(String viewName) {
220 this.viewName = viewName;