2c5899918421078e0624863f7849386e8f00202d
[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.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;
44
45 import com.fasterxml.jackson.databind.DeserializationFeature;
46 import com.fasterxml.jackson.databind.JsonNode;
47 import com.fasterxml.jackson.databind.ObjectMapper;
48
49 /**
50  * A controller for Admin to add/edit/delete menu items from FN_MENU.
51  */
52
53 @Controller
54 @RequestMapping("/")
55 public class FnMenuController extends RestrictedBaseController {
56
57         private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnMenuController.class);
58
59         @Autowired
60         FnMenuService service;
61
62         private String viewName;
63
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();
67                 try {
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());
75                 }
76         }
77
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();
81                 try {
82                         response.getWriter().write(mapper.writeValueAsString(service.getFunctionCDList()));
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());
89                 }
90
91         }
92
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<>();
100
101                 try {
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());
109                                 }
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;
125                                 /*
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); }
130                                  */
131                                 childItemList.add(tempList);
132                         }
133                         model.put("fnMenuItems", parentList);
134                         // JsonMessage msg = new
135                         // JsonMessage(mapper.writeValueAsString(parentList),mapper.writeValueAsString(childItemList),"none");
136
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);
142                 }
143
144         }
145
146         @RequestMapping(value = { "/admin_fn_menu/updateFnMenu" }, method = RequestMethod.POST)
147         public ModelAndView updateFnMenu(HttpServletRequest request, HttpServletResponse response) throws Exception {
148
149                 try {
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);
154
155                         service.saveFnMenu(fnMenuItem);
156                         request.getSession()
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);
160
161                         response.setCharacterEncoding("UTF-8");
162                         response.setContentType("application / json");
163                         request.setCharacterEncoding("UTF-8");
164
165                         PrintWriter out = response.getWriter();
166                         String responseString = mapper.writeValueAsString(service.getMenuItem(fnMenuItem.getId()));
167
168                         out.write(responseString);
169
170                         return null;
171
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());
178                 }
179                 return null;
180
181         }
182
183         @RequestMapping(value = { "/admin_fn_menu/removeMenuItem" }, method = RequestMethod.POST)
184         public ModelAndView removeFnMenu(HttpServletRequest request, HttpServletResponse response) throws Exception {
185
186                 try {
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());
192
193                         service.removeMenuItem(fnMenuItemRow);
194
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);
201
202                         return null;
203
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());
210                 }
211                 return null;
212
213         }
214
215         public String getViewName() {
216                 return viewName;
217         }
218
219         public void setViewName(String viewName) {
220                 this.viewName = viewName;
221         }
222
223 }