78c1440dac768ed23c62694f75bfc8ede4bd97c6
[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.io.PrintWriter;
23 import java.util.ArrayList;
24 import java.util.HashMap;
25 import java.util.List;
26 import java.util.Map;
27
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletResponse;
30
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;
45
46 import com.fasterxml.jackson.databind.DeserializationFeature;
47 import com.fasterxml.jackson.databind.JsonNode;
48 import com.fasterxml.jackson.databind.ObjectMapper;
49
50 /**
51  * A controller for Admin to add/edit/delete menu items from FN_MENU.
52  */
53
54 @Controller
55 @RequestMapping("/")
56 public class FnMenuController extends RestrictedBaseController {
57
58         private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnMenuController.class);
59
60         @Autowired
61         FnMenuService service;
62         
63         @Autowired
64         FunctionalMenuListService functionalMenuListService;
65
66         private String viewName;
67
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();
71                 try {
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());
79                 }
80         }
81
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();
85                 try {
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());
93                 }
94
95         }
96
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<>();
104
105                 try {
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());
113                                 }
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;
129                                 /*
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); }
134                                  */
135                                 childItemList.add(tempList);
136                         }
137                         model.put("fnMenuItems", parentList);
138                         // JsonMessage msg = new
139                         // JsonMessage(mapper.writeValueAsString(parentList),mapper.writeValueAsString(childItemList),"none");
140
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);
146                 }
147
148         }
149
150         @RequestMapping(value = { "/admin_fn_menu/updateFnMenu" }, method = RequestMethod.POST)
151         public ModelAndView updateFnMenu(HttpServletRequest request, HttpServletResponse response) throws Exception {
152
153                 try {
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);
158
159                         service.saveFnMenu(fnMenuItem);
160                         request.getSession()
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);
164
165                         response.setCharacterEncoding("UTF-8");
166                         response.setContentType("application / json");
167                         request.setCharacterEncoding("UTF-8");
168
169                         PrintWriter out = response.getWriter();
170                         String responseString = mapper.writeValueAsString(service.getMenuItem(fnMenuItem.getId()));
171
172                         out.write(responseString);
173
174                         return null;
175
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());
182                 }
183                 return null;
184
185         }
186
187         @RequestMapping(value = { "/admin_fn_menu/removeMenuItem" }, method = RequestMethod.POST)
188         public ModelAndView removeFnMenu(HttpServletRequest request, HttpServletResponse response) throws Exception {
189
190                 try {
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());
196
197                         service.removeMenuItem(fnMenuItemRow);
198
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);
205
206                         return null;
207
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());
214                 }
215                 return null;
216
217         }
218
219         public String getViewName() {
220                 return viewName;
221         }
222
223         public void setViewName(String viewName) {
224                 this.viewName = viewName;
225         }
226
227 }