From 1faf201e8608dfa4d7af3460fd3d1fc7ebec398b Mon Sep 17 00:00:00 2001 From: talasila Date: Tue, 7 Feb 2017 11:47:55 -0500 Subject: Initial OpenECOMP Portal SDK commit Change-Id: I66a3491600a4b9ea241128dc29267eed6a78ed76 Signed-off-by: talasila --- .../core/controller/ProfileController.java | 349 +++++++++++++++++++++ 1 file changed, 349 insertions(+) create mode 100644 ecomp-sdk/quantum/src/main/java/org/openecomp/portalsdk/core/controller/ProfileController.java (limited to 'ecomp-sdk/quantum/src/main/java/org/openecomp/portalsdk/core/controller/ProfileController.java') diff --git a/ecomp-sdk/quantum/src/main/java/org/openecomp/portalsdk/core/controller/ProfileController.java b/ecomp-sdk/quantum/src/main/java/org/openecomp/portalsdk/core/controller/ProfileController.java new file mode 100644 index 00000000..1fd7800f --- /dev/null +++ b/ecomp-sdk/quantum/src/main/java/org/openecomp/portalsdk/core/controller/ProfileController.java @@ -0,0 +1,349 @@ +/*- + * ================================================================================ + * eCOMP Portal SDK + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ================================================================================ + */ +package org.openecomp.portalsdk.core.controller; + +import java.io.IOException; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.json.JSONObject; +import org.openecomp.portalsdk.core.domain.Role; +import org.openecomp.portalsdk.core.domain.User; +import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.openecomp.portalsdk.core.service.RoleService; +import org.openecomp.portalsdk.core.service.UserProfileService; +import org.openecomp.portalsdk.core.web.support.AppUtils; +import org.openecomp.portalsdk.core.web.support.JsonMessage; +import org.openecomp.portalsdk.core.web.support.UserUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +@Controller +@RequestMapping("/") +public class ProfileController extends RestrictedBaseController { + + @Autowired + UserProfileService service; + @Autowired + RoleService roleService; + + String viewName; + EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ProfileController.class); + + @RequestMapping(value = { "/profile" }, method = RequestMethod.GET) + public ModelAndView profile(HttpServletRequest request) { + Map model = new HashMap(); + ObjectMapper mapper = new ObjectMapper(); + + User profile = null; + Long profileId = null; + + if (request.getRequestURI().indexOf("self_profile.htm") > -1) { + profile = UserUtils.getUserSession(request); + profileId = profile.getId(); + } else { + profileId = Long.parseLong(request.getParameter("profile_id")); + profile = (User) service.getUser(request.getParameter("profile_id")); + } + + try { + model.put("stateList", mapper.writeValueAsString(getStates())); + model.put("countries", mapper.writeValueAsString(getCountries())); + model.put("timeZones", mapper.writeValueAsString(getTimeZones())); + model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles())); + model.put("profile", mapper.writeValueAsString(profile)); + model.put("profileId", mapper.writeValueAsString(profileId)); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "profile: failed to write JSON" + e.getMessage()); + } + return new ModelAndView("profile", "model", model); + } + + @RequestMapping(value = { "/self_profile" }, method = RequestMethod.GET) + public ModelAndView self_profile(HttpServletRequest request) { + Map model = new HashMap(); + ObjectMapper mapper = new ObjectMapper(); + + User profile = null; + Long profileId = null; + + profile = UserUtils.getUserSession(request); + profileId = profile.getId(); + profile = (User) service.getUser(profileId.toString()); + + try { + model.put("stateList", mapper.writeValueAsString(getStates())); + model.put("countries", mapper.writeValueAsString(getCountries())); + model.put("timeZones", mapper.writeValueAsString(getTimeZones())); + model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles())); + model.put("profile", mapper.writeValueAsString(profile)); + model.put("profileId", mapper.writeValueAsString(profileId)); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "self_profile: failed to write JSON" + e.getMessage()); + } + return new ModelAndView("profile", "model", model); + } + + @RequestMapping(value = { "/get_self_profile" }, method = RequestMethod.GET) + public void getSelfProfile(HttpServletRequest request, HttpServletResponse response) { + Map model = new HashMap(); + ObjectMapper mapper = new ObjectMapper(); + + User profile = null; + Long profileId = null; + + profile = UserUtils.getUserSession(request); + profileId = profile.getId(); + profile = (User) service.getUser(profileId.toString()); + + try { + model.put("stateList", mapper.writeValueAsString(getStates())); + model.put("countries", mapper.writeValueAsString(getCountries())); + model.put("timeZones", mapper.writeValueAsString(getTimeZones())); + model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles())); + model.put("profile", mapper.writeValueAsString(profile)); + model.put("profileId", mapper.writeValueAsString(profileId)); + JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); + JSONObject j = new JSONObject(msg); + response.getWriter().write(j.toString()); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "getSelfProfile: failed to write JSON" + e.getMessage()); + } + + } + + @RequestMapping(value = { "/get_profile" }, method = RequestMethod.GET) + public void GetUser(HttpServletRequest request, HttpServletResponse response) { + Map model = new HashMap(); + ObjectMapper mapper = new ObjectMapper(); + try { + User profile = null; + Long profileId = null; + if (request.getRequestURI().indexOf("self_profile.htm") > -1) { + profile = UserUtils.getUserSession(request); + profileId = profile.getId(); + } else { + profileId = Long.parseLong(request.getParameter("profile_id")); + profile = (User) service.getUser(request.getParameter("profile_id")); + } + model.put("stateList", mapper.writeValueAsString(getStates())); + model.put("countries", mapper.writeValueAsString(getCountries())); + model.put("timeZones", mapper.writeValueAsString(getTimeZones())); + model.put("availableRoles", mapper.writeValueAsString(getAvailableRoles())); + model.put("profile", mapper.writeValueAsString(profile)); + model.put("profileId", mapper.writeValueAsString(profileId)); + JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); + JSONObject j = new JSONObject(msg); + response.getWriter().write(j.toString()); + + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "GetUser: failed to write JSON" + e.getMessage()); + } + } + + @RequestMapping(value = { "/profile/saveProfile" }, method = RequestMethod.POST) + public ModelAndView saveProfile(HttpServletRequest request, HttpServletResponse response) { + logger.info(EELFLoggerDelegate.debugLogger, "ProfileController.save"); + try { + + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + User user = mapper.readValue(root.get("profile").toString(), User.class); + + String selectedCountry = mapper.readValue(root.get("selectedCountry").toString(), String.class); + String selectedState = mapper.readValue(root.get("selectedState").toString(), String.class); + String selectedTimeZone = mapper.readValue(root.get("selectedTimeZone").toString(), String.class); + + Long profileId = Long.parseLong(request.getParameter("profile_id")); + + User domainUser = (User) service.getUser(request.getParameter("profile_id")); + // user.setRoles(domainUser.getRoles()); + user.setPseudoRoles(domainUser.getPseudoRoles()); + user.setUserApps(domainUser.getUserApps()); + if (!selectedCountry.equals("")) { + user.setCountry(selectedCountry); + } + if (!selectedState.equals("")) { + user.setState(selectedState); + } + if (!selectedTimeZone.equals("")) { + user.setTimeZoneId(Long.parseLong(selectedTimeZone)); + } + service.saveUser(user); + logger.info(EELFLoggerDelegate.auditLogger, "Save user's profile for user " + profileId); + + response.setCharacterEncoding("UTF-8"); + response.setContentType("application / json"); + request.setCharacterEncoding("UTF-8"); + + PrintWriter out = response.getWriter(); + out.write("" + profileId); + return null; + } catch (Exception e) { + response.setCharacterEncoding("UTF-8"); + try { + request.setCharacterEncoding("UTF-8"); + } catch (UnsupportedEncodingException e1) { + + e1.printStackTrace(); + + } + PrintWriter out = null; + try { + out = response.getWriter(); + } catch (IOException e1) { + logger.error(EELFLoggerDelegate.errorLogger, "saveProfile: failed to get writer" + e1.getMessage()); + } + out.write(e.getMessage()); + return null; + } + } + + @RequestMapping(value = { "/profile/removeRole" }, method = RequestMethod.POST) + public ModelAndView removeRole(HttpServletRequest request, HttpServletResponse response) throws Exception { + + logger.info(EELFLoggerDelegate.debugLogger, "ProfileController.save"); + try { + + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + Role role = mapper.readValue(root.get("role").toString(), Role.class); + + // Long profileId = Long.parseLong(request.getParameter("profile_id")); + + User domainUser = (User) service.getUser(request.getParameter("profile_id")); + + domainUser.removeRole(role.getId()); + + service.saveUser(domainUser); + logger.info(EELFLoggerDelegate.auditLogger, "Remove role " + role.getId() + " from user " + request.getParameter("profile_id")); + + response.setCharacterEncoding("UTF-8"); + response.setContentType("application / json"); + request.setCharacterEncoding("UTF-8"); + + PrintWriter out = response.getWriter(); + + Map model = new HashMap(); + model.put("profile", mapper.writeValueAsString(domainUser)); + JSONObject j = new JSONObject(mapper.writeValueAsString(domainUser)); + + out.write(j.toString()); + + return null; + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "removeRole" + e.getMessage()); + response.setCharacterEncoding("UTF-8"); + request.setCharacterEncoding("UTF-8"); + PrintWriter out = response.getWriter(); + out.write(e.getMessage()); + return null; + } + + } + + @RequestMapping(value = { "/profile/addNewRole" }, method = RequestMethod.POST) + public ModelAndView addNewRole(HttpServletRequest request, HttpServletResponse response) throws Exception { + + logger.info(EELFLoggerDelegate.debugLogger, "ProfileController.save" ); + try { + + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + Role role = mapper.readValue(root.get("role").toString(), Role.class); + + // Long profileId = Long.parseLong(request.getParameter("profile_id")); + + User domainUser = (User) service.getUser(request.getParameter("profile_id")); + + domainUser.addRole(role); + + service.saveUser(domainUser); + logger.info(EELFLoggerDelegate.auditLogger, "Add new role " + role.getName() + " to user " + request.getParameter("profile_id")); + + response.setCharacterEncoding("UTF-8"); + response.setContentType("application / json"); + request.setCharacterEncoding("UTF-8"); + + PrintWriter out = response.getWriter(); + + Map model = new HashMap(); + model.put("profile", mapper.writeValueAsString(domainUser)); + JSONObject j = new JSONObject(mapper.writeValueAsString(domainUser)); + + out.write(j.toString()); + + return null; + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "addNewRole" + e.getMessage()); + response.setCharacterEncoding("UTF-8"); + request.setCharacterEncoding("UTF-8"); + PrintWriter out = response.getWriter(); + out.write(e.getMessage()); + return null; + } + + } + + public String getViewName() { + return viewName; + } + + public void setViewName(String viewName) { + this.viewName = viewName; + } + + @SuppressWarnings("rawtypes") + public List getStates() { + return AppUtils.getLookupList("FN_LU_STATE", "STATE_CD", "STATE", null, "STATE_CD"); + } + + @SuppressWarnings("rawtypes") + public List getCountries() { + return AppUtils.getLookupList("FN_LU_COUNTRY", "COUNTRY_CD", "COUNTRY", null, "COUNTRY"); + } + + @SuppressWarnings("rawtypes") + public List getTimeZones() { + return AppUtils.getLookupList("FN_LU_TIMEZONE", "TIMEZONE_ID", "TIMEZONE_NAME", null, "TIMEZONE_NAME"); + } + + @SuppressWarnings("rawtypes") + public List getAvailableRoles() { + return roleService.getAvailableRoles(); + } + +} -- cgit 1.2.3-korg