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.IOException;
23 import java.io.PrintWriter;
24 import java.io.UnsupportedEncodingException;
25 import java.util.HashMap;
26 import java.util.List;
29 import javax.servlet.http.HttpServletRequest;
30 import javax.servlet.http.HttpServletResponse;
32 import org.json.JSONObject;
33 import org.openecomp.portalsdk.core.controller.RestrictedBaseController;
34 import org.openecomp.portalsdk.core.domain.Role;
35 import org.openecomp.portalsdk.core.domain.User;
36 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
37 import org.openecomp.portalsdk.core.service.RoleService;
38 import org.openecomp.portalsdk.core.service.UserProfileService;
39 import org.openecomp.portalsdk.core.web.support.AppUtils;
40 import org.openecomp.portalsdk.core.web.support.JsonMessage;
41 import org.openecomp.portalsdk.core.web.support.UserUtils;
42 import org.springframework.beans.factory.annotation.Autowired;
43 import org.springframework.stereotype.Controller;
44 import org.springframework.web.bind.annotation.RequestMapping;
45 import org.springframework.web.bind.annotation.RequestMethod;
46 import org.springframework.web.servlet.ModelAndView;
48 import com.fasterxml.jackson.databind.DeserializationFeature;
49 import com.fasterxml.jackson.databind.JsonNode;
50 import com.fasterxml.jackson.databind.ObjectMapper;
54 public class ProfileController extends RestrictedBaseController {
56 private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ProfileController.class);
59 UserProfileService service;
62 RoleService roleService;
64 private String viewName;
66 @RequestMapping(value = { "/profile" }, method = RequestMethod.GET)
67 public ModelAndView profile(HttpServletRequest request) {
68 Map<String, Object> model = new HashMap<String, Object>();
69 ObjectMapper mapper = new ObjectMapper();
72 Long profileId = null;
74 if (request.getRequestURI().indexOf("self_profile.htm") > -1) {
75 profile = UserUtils.getUserSession(request);
76 profileId = profile.getId();
78 profileId = Long.parseLong(request.getParameter("profile_id"));
79 profile = (User) service.getUser(request.getParameter("profile_id"));
83 model.put("stateList", mapper.writeValueAsString(getStates()));
84 model.put("countries", mapper.writeValueAsString(getCountries()));
85 model.put("timeZones", mapper.writeValueAsString(getTimeZones()));
86 model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles()));
87 model.put("profile", mapper.writeValueAsString(profile));
88 model.put("profileId", mapper.writeValueAsString(profileId));
89 } catch (Exception e) {
90 logger.error(EELFLoggerDelegate.errorLogger, "profile: failed to write JSON", e);
92 return new ModelAndView("profile", "model", model);
95 @RequestMapping(value = { "/self_profile" }, method = RequestMethod.GET)
96 public ModelAndView self_profile(HttpServletRequest request) {
97 Map<String, Object> model = new HashMap<String, Object>();
98 ObjectMapper mapper = new ObjectMapper();
101 Long profileId = null;
103 profile = UserUtils.getUserSession(request);
104 profileId = profile.getId();
105 profile = (User) service.getUser(profileId.toString());
108 model.put("stateList", mapper.writeValueAsString(getStates()));
109 model.put("countries", mapper.writeValueAsString(getCountries()));
110 model.put("timeZones", mapper.writeValueAsString(getTimeZones()));
111 model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles()));
112 model.put("profile", mapper.writeValueAsString(profile));
113 model.put("profileId", mapper.writeValueAsString(profileId));
114 } catch (Exception e) {
115 logger.error(EELFLoggerDelegate.errorLogger, "self_profile: failed to write JSON" + e.getMessage());
117 return new ModelAndView("profile", "model", model);
120 @RequestMapping(value = { "/get_self_profile" }, method = RequestMethod.GET)
121 public void getSelfProfile(HttpServletRequest request, HttpServletResponse response) {
122 Map<String, Object> model = new HashMap<String, Object>();
123 ObjectMapper mapper = new ObjectMapper();
126 Long profileId = null;
128 profile = UserUtils.getUserSession(request);
129 profileId = profile.getId();
130 profile = (User) service.getUser(profileId.toString());
133 model.put("stateList", mapper.writeValueAsString(getStates()));
134 model.put("countries", mapper.writeValueAsString(getCountries()));
135 model.put("timeZones", mapper.writeValueAsString(getTimeZones()));
136 model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles()));
137 model.put("profile", mapper.writeValueAsString(profile));
138 model.put("profileId", mapper.writeValueAsString(profileId));
139 JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
140 JSONObject j = new JSONObject(msg);
141 response.getWriter().write(j.toString());
142 } catch (Exception e) {
143 logger.error(EELFLoggerDelegate.errorLogger, "getSelfProfile: failed to write JSON" + e.getMessage());
148 @RequestMapping(value = { "/get_profile" }, method = RequestMethod.GET)
149 public void GetUser(HttpServletRequest request, HttpServletResponse response) {
150 Map<String, Object> model = new HashMap<String, Object>();
151 ObjectMapper mapper = new ObjectMapper();
154 Long profileId = null;
155 if (request.getRequestURI().indexOf("self_profile.htm") > -1) {
156 profile = UserUtils.getUserSession(request);
157 profileId = profile.getId();
159 profileId = Long.parseLong(request.getParameter("profile_id"));
160 profile = (User) service.getUser(request.getParameter("profile_id"));
162 model.put("stateList", mapper.writeValueAsString(getStates()));
163 model.put("countries", mapper.writeValueAsString(getCountries()));
164 model.put("timeZones", mapper.writeValueAsString(getTimeZones()));
165 model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles()));
166 model.put("profile", mapper.writeValueAsString(profile));
167 model.put("profileId", mapper.writeValueAsString(profileId));
168 JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
169 JSONObject j = new JSONObject(msg);
170 response.getWriter().write(j.toString());
172 } catch (Exception e) {
173 logger.error(EELFLoggerDelegate.errorLogger, "GetUser: failed to write JSON" + e.getMessage());
177 @RequestMapping(value = { "/profile/saveProfile" }, method = RequestMethod.POST)
178 public ModelAndView saveProfile(HttpServletRequest request, HttpServletResponse response) {
179 logger.info(EELFLoggerDelegate.debugLogger, "ProfileController.save");
182 ObjectMapper mapper = new ObjectMapper();
183 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
184 JsonNode root = mapper.readTree(request.getReader());
185 User user = mapper.readValue(root.get("profile").toString(), User.class);
187 String selectedCountry = mapper.readValue(root.get("selectedCountry").toString(), String.class);
188 String selectedState = mapper.readValue(root.get("selectedState").toString(), String.class);
189 String selectedTimeZone = mapper.readValue(root.get("selectedTimeZone").toString(), String.class);
191 Long profileId = Long.parseLong(request.getParameter("profile_id"));
193 User domainUser = (User) service.getUser(request.getParameter("profile_id"));
194 // user.setRoles(domainUser.getRoles());
195 user.setPseudoRoles(domainUser.getPseudoRoles());
196 user.setUserApps(domainUser.getUserApps());
197 if (!selectedCountry.equals("")) {
198 user.setCountry(selectedCountry);
200 if (!selectedState.equals("")) {
201 user.setState(selectedState);
203 if (!selectedTimeZone.equals("")) {
204 user.setTimeZoneId(Long.parseLong(selectedTimeZone));
206 service.saveUser(user);
207 logger.info(EELFLoggerDelegate.auditLogger, "Save user's profile for user " + profileId);
209 response.setCharacterEncoding("UTF-8");
210 response.setContentType("application / json");
211 request.setCharacterEncoding("UTF-8");
213 PrintWriter out = response.getWriter();
214 out.write("" + profileId);
216 } catch (Exception e) {
217 response.setCharacterEncoding("UTF-8");
219 request.setCharacterEncoding("UTF-8");
220 } catch (UnsupportedEncodingException e1) {
222 e1.printStackTrace();
225 PrintWriter out = null;
227 out = response.getWriter();
228 } catch (IOException e1) {
229 logger.error(EELFLoggerDelegate.errorLogger, "saveProfile: failed to get writer" + e1.getMessage());
231 out.write(e.getMessage());
236 @RequestMapping(value = { "/profile/removeRole" }, method = RequestMethod.POST)
237 public ModelAndView removeRole(HttpServletRequest request, HttpServletResponse response) throws Exception {
239 logger.info(EELFLoggerDelegate.debugLogger, "ProfileController.save");
242 ObjectMapper mapper = new ObjectMapper();
243 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
244 JsonNode root = mapper.readTree(request.getReader());
245 Role role = mapper.readValue(root.get("role").toString(), Role.class);
247 // Long profileId = Long.parseLong(request.getParameter("profile_id"));
249 User domainUser = (User) service.getUser(request.getParameter("profile_id"));
251 domainUser.removeRole(role.getId());
253 service.saveUser(domainUser);
254 logger.info(EELFLoggerDelegate.auditLogger, "Remove role " + role.getId() + " from user " + request.getParameter("profile_id"));
256 response.setCharacterEncoding("UTF-8");
257 response.setContentType("application / json");
258 request.setCharacterEncoding("UTF-8");
260 PrintWriter out = response.getWriter();
262 Map<String, Object> model = new HashMap<String, Object>();
263 model.put("profile", mapper.writeValueAsString(domainUser));
264 JSONObject j = new JSONObject(mapper.writeValueAsString(domainUser));
266 out.write(j.toString());
269 } catch (Exception e) {
270 logger.error(EELFLoggerDelegate.errorLogger, "removeRole" + e.getMessage());
271 response.setCharacterEncoding("UTF-8");
272 request.setCharacterEncoding("UTF-8");
273 PrintWriter out = response.getWriter();
274 out.write(e.getMessage());
280 @RequestMapping(value = { "/profile/addNewRole" }, method = RequestMethod.POST)
281 public ModelAndView addNewRole(HttpServletRequest request, HttpServletResponse response) throws Exception {
283 logger.info(EELFLoggerDelegate.debugLogger, "ProfileController.save" );
286 ObjectMapper mapper = new ObjectMapper();
287 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
288 JsonNode root = mapper.readTree(request.getReader());
289 Role role = mapper.readValue(root.get("role").toString(), Role.class);
291 // Long profileId = Long.parseLong(request.getParameter("profile_id"));
293 User domainUser = (User) service.getUser(request.getParameter("profile_id"));
295 domainUser.addRole(role);
297 service.saveUser(domainUser);
298 logger.info(EELFLoggerDelegate.auditLogger, "Add new role " + role.getName() + " to user " + request.getParameter("profile_id"));
300 response.setCharacterEncoding("UTF-8");
301 response.setContentType("application / json");
302 request.setCharacterEncoding("UTF-8");
304 PrintWriter out = response.getWriter();
306 Map<String, Object> model = new HashMap<String, Object>();
307 model.put("profile", mapper.writeValueAsString(domainUser));
308 JSONObject j = new JSONObject(mapper.writeValueAsString(domainUser));
310 out.write(j.toString());
313 } catch (Exception e) {
314 logger.error(EELFLoggerDelegate.errorLogger, "addNewRole" + e.getMessage());
315 response.setCharacterEncoding("UTF-8");
316 request.setCharacterEncoding("UTF-8");
317 PrintWriter out = response.getWriter();
318 out.write(e.getMessage());
324 public String getViewName() {
328 public void setViewName(String viewName) {
329 this.viewName = viewName;
332 @SuppressWarnings("rawtypes")
333 public List getStates() {
334 return AppUtils.getLookupList("FN_LU_STATE", "STATE_CD", "STATE", null, "STATE_CD");
337 @SuppressWarnings("rawtypes")
338 public List getCountries() {
339 return AppUtils.getLookupList("FN_LU_COUNTRY", "COUNTRY_CD", "COUNTRY", null, "COUNTRY");
342 @SuppressWarnings("rawtypes")
343 public List getTimeZones() {
344 return AppUtils.getLookupList("FN_LU_TIMEZONE", "TIMEZONE_ID", "TIMEZONE_NAME", null, "TIMEZONE_NAME");
347 @SuppressWarnings("rawtypes")
348 public List getAvailableRoles() {
349 return roleService.getAvailableRoles();