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, HttpServletResponse response) {
68 Map<String, Object> model = new HashMap<String, Object>();
69 ObjectMapper mapper = new ObjectMapper();
70 User user = UserUtils.getUserSession(request);
73 Long profileId = null;
75 if (request.getRequestURI().indexOf("self_profile.htm") > -1) {
76 profile = UserUtils.getUserSession(request);
77 profileId = profile.getId();
79 profileId = Long.parseLong(request.getParameter("profile_id"));
80 profile = (User) service.getUser(request.getParameter("profile_id"));
84 model.put("stateList", mapper.writeValueAsString(getStates()));
85 model.put("countries", mapper.writeValueAsString(getCountries()));
86 model.put("timeZones", mapper.writeValueAsString(getTimeZones()));
87 model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles(user.getOrgUserId())));
88 model.put("profile", mapper.writeValueAsString(profile));
89 model.put("profileId", mapper.writeValueAsString(profileId));
90 } catch (Exception e) {
91 logger.error(EELFLoggerDelegate.errorLogger, "profile: failed to write JSON", e);
93 return new ModelAndView("profile", "model", model);
96 @RequestMapping(value = { "/self_profile" }, method = RequestMethod.GET)
97 public ModelAndView self_profile(HttpServletRequest request) {
98 Map<String, Object> model = new HashMap<String, Object>();
99 ObjectMapper mapper = new ObjectMapper();
102 Long profileId = null;
103 User user = UserUtils.getUserSession(request);
105 profile = UserUtils.getUserSession(request);
106 profileId = profile.getId();
107 profile = (User) service.getUser(profileId.toString());
110 model.put("stateList", mapper.writeValueAsString(getStates()));
111 model.put("countries", mapper.writeValueAsString(getCountries()));
112 model.put("timeZones", mapper.writeValueAsString(getTimeZones()));
113 model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles(user.getOrgUserId())));
114 model.put("profile", mapper.writeValueAsString(profile));
115 model.put("profileId", mapper.writeValueAsString(profileId));
116 } catch (Exception e) {
117 logger.error(EELFLoggerDelegate.errorLogger, "self_profile: failed to write JSON" + e.getMessage());
119 return new ModelAndView("profile", "model", model);
122 @RequestMapping(value = { "/get_self_profile" }, method = RequestMethod.GET)
123 public void getSelfProfile(HttpServletRequest request, HttpServletResponse response) {
124 Map<String, Object> model = new HashMap<String, Object>();
125 ObjectMapper mapper = new ObjectMapper();
126 User user = UserUtils.getUserSession(request);
129 Long profileId = null;
131 profile = UserUtils.getUserSession(request);
132 profileId = profile.getId();
133 profile = (User) service.getUser(profileId.toString());
136 model.put("stateList", mapper.writeValueAsString(getStates()));
137 model.put("countries", mapper.writeValueAsString(getCountries()));
138 model.put("timeZones", mapper.writeValueAsString(getTimeZones()));
139 model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles(user.getOrgUserId())));
140 model.put("profile", mapper.writeValueAsString(profile));
141 model.put("profileId", mapper.writeValueAsString(profileId));
142 JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
143 JSONObject j = new JSONObject(msg);
144 response.getWriter().write(j.toString());
145 } catch (Exception e) {
146 logger.error(EELFLoggerDelegate.errorLogger, "getSelfProfile: failed to write JSON" + e.getMessage());
151 @RequestMapping(value = { "/get_profile" }, method = RequestMethod.GET)
152 public void GetUser(HttpServletRequest request, HttpServletResponse response) {
153 Map<String, Object> model = new HashMap<String, Object>();
154 User user = UserUtils.getUserSession(request);
155 ObjectMapper mapper = new ObjectMapper();
158 Long profileId = null;
159 if (request.getRequestURI().indexOf("self_profile.htm") > -1) {
160 profile = UserUtils.getUserSession(request);
161 profileId = profile.getId();
163 profileId = Long.parseLong(request.getParameter("profile_id"));
164 profile = (User) service.getUser(request.getParameter("profile_id"));
166 model.put("stateList", mapper.writeValueAsString(getStates()));
167 model.put("countries", mapper.writeValueAsString(getCountries()));
168 model.put("timeZones", mapper.writeValueAsString(getTimeZones()));
169 model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles(user.getOrgUserId())));
170 model.put("profile", mapper.writeValueAsString(profile));
171 model.put("profileId", mapper.writeValueAsString(profileId));
172 JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
173 JSONObject j = new JSONObject(msg);
174 response.getWriter().write(j.toString());
176 } catch (Exception e) {
177 logger.error(EELFLoggerDelegate.errorLogger, "GetUser: failed to write JSON" + e.getMessage());
181 @RequestMapping(value = { "/profile/saveProfile" }, method = RequestMethod.POST)
182 public ModelAndView saveProfile(HttpServletRequest request, HttpServletResponse response) {
183 logger.info(EELFLoggerDelegate.debugLogger, "ProfileController.save");
186 ObjectMapper mapper = new ObjectMapper();
187 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
188 JsonNode root = mapper.readTree(request.getReader());
189 User user = mapper.readValue(root.get("profile").toString(), User.class);
191 String selectedCountry = mapper.readValue(root.get("selectedCountry").toString(), String.class);
192 String selectedState = mapper.readValue(root.get("selectedState").toString(), String.class);
193 String selectedTimeZone = mapper.readValue(root.get("selectedTimeZone").toString(), String.class);
195 Long profileId = Long.parseLong(request.getParameter("profile_id"));
197 User domainUser = (User) service.getUser(request.getParameter("profile_id"));
198 // user.setRoles(domainUser.getRoles());
199 user.setPseudoRoles(domainUser.getPseudoRoles());
200 user.setUserApps(domainUser.getUserApps());
201 if (!selectedCountry.equals("")) {
202 user.setCountry(selectedCountry);
204 if (!selectedState.equals("")) {
205 user.setState(selectedState);
207 if (!selectedTimeZone.equals("")) {
208 user.setTimeZoneId(Long.parseLong(selectedTimeZone));
210 service.saveUser(user);
211 logger.info(EELFLoggerDelegate.auditLogger, "Save user's profile for user " + profileId);
213 response.setCharacterEncoding("UTF-8");
214 response.setContentType("application / json");
215 request.setCharacterEncoding("UTF-8");
217 PrintWriter out = response.getWriter();
218 out.write("" + profileId);
220 } catch (Exception e) {
221 response.setCharacterEncoding("UTF-8");
223 request.setCharacterEncoding("UTF-8");
224 } catch (UnsupportedEncodingException e1) {
226 e1.printStackTrace();
229 PrintWriter out = null;
231 out = response.getWriter();
232 } catch (IOException e1) {
233 logger.error(EELFLoggerDelegate.errorLogger, "saveProfile: failed to get writer" + e1.getMessage());
235 out.write(e.getMessage());
240 @RequestMapping(value = { "/profile/removeRole" }, method = RequestMethod.POST)
241 public ModelAndView removeRole(HttpServletRequest request, HttpServletResponse response) throws Exception {
243 logger.info(EELFLoggerDelegate.debugLogger, "ProfileController.save");
246 ObjectMapper mapper = new ObjectMapper();
247 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
248 JsonNode root = mapper.readTree(request.getReader());
249 Role role = mapper.readValue(root.get("role").toString(), Role.class);
251 // Long profileId = Long.parseLong(request.getParameter("profile_id"));
253 User domainUser = (User) service.getUser(request.getParameter("profile_id"));
255 domainUser.removeRole(role.getId());
257 service.saveUser(domainUser);
258 logger.info(EELFLoggerDelegate.auditLogger, "Remove role " + role.getId() + " from user " + request.getParameter("profile_id"));
260 response.setCharacterEncoding("UTF-8");
261 response.setContentType("application / json");
262 request.setCharacterEncoding("UTF-8");
264 PrintWriter out = response.getWriter();
266 Map<String, Object> model = new HashMap<String, Object>();
267 model.put("profile", mapper.writeValueAsString(domainUser));
268 JSONObject j = new JSONObject(mapper.writeValueAsString(domainUser));
270 out.write(j.toString());
273 } catch (Exception e) {
274 logger.error(EELFLoggerDelegate.errorLogger, "removeRole" + e.getMessage());
275 response.setCharacterEncoding("UTF-8");
276 request.setCharacterEncoding("UTF-8");
277 PrintWriter out = response.getWriter();
278 out.write(e.getMessage());
284 @RequestMapping(value = { "/profile/addNewRole" }, method = RequestMethod.POST)
285 public ModelAndView addNewRole(HttpServletRequest request, HttpServletResponse response) throws Exception {
287 logger.info(EELFLoggerDelegate.debugLogger, "ProfileController.save" );
290 ObjectMapper mapper = new ObjectMapper();
291 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
292 JsonNode root = mapper.readTree(request.getReader());
293 Role role = mapper.readValue(root.get("role").toString(), Role.class);
295 // Long profileId = Long.parseLong(request.getParameter("profile_id"));
297 User domainUser = (User) service.getUser(request.getParameter("profile_id"));
299 domainUser.addRole(role);
301 service.saveUser(domainUser);
302 logger.info(EELFLoggerDelegate.auditLogger, "Add new role " + role.getName() + " to user " + request.getParameter("profile_id"));
304 response.setCharacterEncoding("UTF-8");
305 response.setContentType("application / json");
306 request.setCharacterEncoding("UTF-8");
308 PrintWriter out = response.getWriter();
310 Map<String, Object> model = new HashMap<String, Object>();
311 model.put("profile", mapper.writeValueAsString(domainUser));
312 JSONObject j = new JSONObject(mapper.writeValueAsString(domainUser));
314 out.write(j.toString());
317 } catch (Exception e) {
318 logger.error(EELFLoggerDelegate.errorLogger, "addNewRole" + e.getMessage());
319 response.setCharacterEncoding("UTF-8");
320 request.setCharacterEncoding("UTF-8");
321 PrintWriter out = response.getWriter();
322 out.write(e.getMessage());
328 public String getViewName() {
332 public void setViewName(String viewName) {
333 this.viewName = viewName;
336 @SuppressWarnings("rawtypes")
337 public List getStates() {
338 return AppUtils.getLookupList("FN_LU_STATE", "STATE_CD", "STATE", null, "STATE_CD");
341 @SuppressWarnings("rawtypes")
342 public List getCountries() {
343 return AppUtils.getLookupList("FN_LU_COUNTRY", "COUNTRY_CD", "COUNTRY", null, "COUNTRY");
346 @SuppressWarnings("rawtypes")
347 public List getTimeZones() {
348 return AppUtils.getLookupList("FN_LU_TIMEZONE", "TIMEZONE_ID", "TIMEZONE_NAME", null, "TIMEZONE_NAME");
351 @SuppressWarnings("rawtypes")
352 public List getAvailableRoles(String requestedLoginId) throws Exception {
353 return roleService.getAvailableRoles(requestedLoginId);