be08d4e9e4517bad4181da807674b50ad97da3cf
[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.HashMap;
24 import java.util.Map;
25
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 import org.json.JSONObject;
30 import org.openecomp.portalsdk.core.controller.RestrictedBaseController;
31 import org.openecomp.portalsdk.core.domain.Role;
32 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
33 import org.openecomp.portalsdk.core.service.RoleService;
34 import org.openecomp.portalsdk.core.web.support.JsonMessage;
35 import org.springframework.beans.factory.annotation.Autowired;
36 import org.springframework.stereotype.Controller;
37 import org.springframework.web.bind.annotation.RequestMapping;
38 import org.springframework.web.bind.annotation.RequestMethod;
39 import org.springframework.web.servlet.ModelAndView;
40
41 import com.fasterxml.jackson.databind.DeserializationFeature;
42 import com.fasterxml.jackson.databind.JsonNode;
43 import com.fasterxml.jackson.databind.ObjectMapper;
44
45 @Controller
46 @RequestMapping("/")
47 public class RoleListController extends RestrictedBaseController {
48
49         private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RoleListController.class);
50         @Autowired
51         RoleService service;
52         
53         private String viewName;
54         
55         @RequestMapping(value = {"/role_list" }, method = RequestMethod.GET)
56         public ModelAndView getRoleList(HttpServletRequest request) {
57                 Map<String, Object> model = new HashMap<String, Object>();
58                 ObjectMapper mapper = new ObjectMapper();       
59                 
60                 try {
61                         model.put("availableRoles", mapper.writeValueAsString(service.getAvailableRoles()));
62                 } catch (Exception e) {
63                         logger.error(EELFLoggerDelegate.errorLogger, "getRoleList failed", e);
64                 }
65         
66                 return new ModelAndView(getViewName(),model);
67         }
68         
69         @RequestMapping(value = {"/get_roles" }, method = RequestMethod.GET)
70         public void getRoles(HttpServletRequest request, HttpServletResponse response) {
71                 Map<String, Object> model = new HashMap<String, Object>();
72                 ObjectMapper mapper = new ObjectMapper();       
73                 
74                 try {
75                         model.put("availableRoles", mapper.writeValueAsString(service.getAvailableRoles()));
76                         JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
77                         JSONObject j = new JSONObject(msg);
78                         response.getWriter().write(j.toString());       
79                 } catch (Exception e) {
80                         logger.error(EELFLoggerDelegate.errorLogger, "getRoles failed", e);
81                 }
82         }
83         
84         
85         @RequestMapping(value = {"/role_list/toggleRole" }, method = RequestMethod.POST)
86         public ModelAndView toggleRole(HttpServletRequest request, 
87                         HttpServletResponse response) throws Exception {
88
89                 try {
90                         ObjectMapper mapper = new ObjectMapper();
91                         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
92                         JsonNode root = mapper.readTree(request.getReader());
93                         Role role = mapper.readValue(root.get("role").toString(), Role.class);
94
95                         Role domainRole = service.getRole(role.getId());
96                         //role. toggle active ind
97                         boolean active = domainRole.getActive();
98                         domainRole.setActive(!active);
99                         
100                         service.saveRole(domainRole);
101                         logger.info(EELFLoggerDelegate.auditLogger, "Toggle active status for role " + domainRole.getId());
102
103                         response.setCharacterEncoding("UTF-8");
104                         response.setContentType("application / json");
105                         request.setCharacterEncoding("UTF-8");
106
107                         PrintWriter out = response.getWriter();
108                         String responseString = mapper.writeValueAsString(service.getAvailableRoles());
109                         JSONObject j = new JSONObject("{availableRoles: "+responseString+"}");
110                         
111                         out.write(j.toString());
112                         
113                         return null;
114                 } catch (Exception e) {
115                         logger.error(EELFLoggerDelegate.errorLogger, "toggleRole failed", e);
116                         response.setCharacterEncoding("UTF-8");
117                         request.setCharacterEncoding("UTF-8");
118                         PrintWriter out = response.getWriter();
119                         out.write(e.getMessage());
120                         return null;
121                 }
122
123         }
124         
125         @RequestMapping(value = {"/role_list/removeRole" }, method = RequestMethod.POST)
126         public ModelAndView removeRole(HttpServletRequest request, 
127                         HttpServletResponse response) throws Exception {
128
129                 try {
130
131                         ObjectMapper mapper = new ObjectMapper();
132                         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
133                         JsonNode root = mapper.readTree(request.getReader());
134                         Role role = mapper.readValue(root.get("role").toString(), Role.class);
135
136                         Role domainRole = service.getRole(role.getId());
137                                                 
138                         service.deleteDependcyRoleRecord(role.getId());
139                         service.deleteRole(domainRole);
140                         logger.info(EELFLoggerDelegate.auditLogger, "Remove role " + domainRole.getId());
141
142                         response.setCharacterEncoding("UTF-8");
143                         response.setContentType("application / json");
144                         request.setCharacterEncoding("UTF-8");
145
146                         PrintWriter out = response.getWriter();
147                         
148                         String responseString = mapper.writeValueAsString(service.getAvailableRoles());
149                         JSONObject j = new JSONObject("{availableRoles: "+responseString+"}");
150                         out.write(j.toString());
151                         
152                         return null;
153                 } catch (Exception e) {
154                         logger.error(EELFLoggerDelegate.errorLogger, "removeRole failed", e);
155                         response.setCharacterEncoding("UTF-8");
156                         request.setCharacterEncoding("UTF-8");
157                         PrintWriter out = response.getWriter();
158                         out.write(e.getMessage());
159                         return null;
160                 }
161
162         }
163
164         public String getViewName() {
165                 return viewName;
166         }
167         public void setViewName(String viewName) {
168                 this.viewName = viewName;
169         }
170 }