2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ===================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ===================================================================
10 * Unless otherwise specified, all software contained herein is licensed
11 * under the Apache License, Version 2.0 (the "License");
12 * you may not use this software except in compliance with the License.
13 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
23 * Unless otherwise specified, all documentation contained herein is licensed
24 * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
25 * you may not use this documentation except in compliance with the License.
26 * You may obtain a copy of the License at
28 * https://creativecommons.org/licenses/by/4.0/
30 * Unless required by applicable law or agreed to in writing, documentation
31 * distributed under the License is distributed on an "AS IS" BASIS,
32 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
33 * See the License for the specific language governing permissions and
34 * limitations under the License.
36 * ============LICENSE_END============================================
40 package org.onap.portalapp.portal.controller;
42 import com.fasterxml.jackson.core.JsonProcessingException;
43 import com.fasterxml.jackson.databind.ObjectMapper;
44 import java.io.IOException;
45 import java.util.List;
47 import javax.servlet.http.HttpServletRequest;
48 import javax.servlet.http.HttpServletResponse;
49 import org.onap.portalapp.controller.EPRestrictedBaseController;
50 import org.onap.portalapp.portal.domain.AdminUserApplications;
51 import org.onap.portalapp.portal.domain.AppIdAndNameTransportModel;
52 import org.onap.portalapp.portal.domain.AppsResponse;
53 import org.onap.portalapp.portal.domain.EPApp;
54 import org.onap.portalapp.portal.domain.EPUser;
55 import org.onap.portalapp.portal.domain.EcompApp;
56 import org.onap.portalapp.portal.domain.UserRoles;
57 import org.onap.portalapp.portal.logging.aop.EPAuditLog;
58 import org.onap.portalapp.portal.service.AdminRolesService;
59 import org.onap.portalapp.portal.service.EPAppService;
60 import org.onap.portalapp.portal.service.EPLeftMenuService;
61 import org.onap.portalapp.portal.transport.EPAppsManualPreference;
62 import org.onap.portalapp.portal.transport.EPAppsSortPreference;
63 import org.onap.portalapp.portal.transport.EPDeleteAppsManualSortPref;
64 import org.onap.portalapp.portal.transport.EPWidgetsSortPreference;
65 import org.onap.portalapp.portal.transport.FieldsValidator;
66 import org.onap.portalapp.portal.transport.LocalRole;
67 import org.onap.portalapp.portal.transport.OnboardingApp;
68 import org.onap.portalapp.portal.utils.EcompPortalUtils;
69 import org.onap.portalapp.portal.utils.PortalConstants;
70 import org.onap.portalapp.util.EPUserUtils;
71 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
72 import org.onap.portalsdk.core.util.SystemProperties;
73 import org.onap.portalsdk.core.web.support.AppUtils;
74 import org.springframework.beans.factory.annotation.Autowired;
75 import org.springframework.context.annotation.EnableAspectJAutoProxy;
76 import org.springframework.http.HttpEntity;
77 import org.springframework.http.HttpHeaders;
78 import org.springframework.http.MediaType;
79 import org.springframework.web.bind.annotation.PathVariable;
80 import org.springframework.web.bind.annotation.RequestBody;
81 import org.springframework.web.bind.annotation.RequestMapping;
82 import org.springframework.web.bind.annotation.RequestMethod;
83 import org.springframework.web.bind.annotation.RestController;
86 @EnableAspectJAutoProxy
88 public class AppsController extends EPRestrictedBaseController {
89 private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AppsController.class);
92 private AdminRolesService adminRolesService;
95 private EPAppService appService;
98 private EPLeftMenuService leftMenuService;
101 * RESTful service method to fetch all Applications available to current
107 * HttpServletResponse
108 * @return List<EcompApp>
110 @RequestMapping(value = { "/portalApi/userApps" }, method = RequestMethod.GET, produces = "application/json")
111 public List<EcompApp> getUserApps(HttpServletRequest request, HttpServletResponse response) {
112 EPUser user = EPUserUtils.getUserSession(request);
113 List<EcompApp> ecompApps = null;
117 EcompPortalUtils.setBadPermissions(user, response, "getUserApps");
119 ecompApps = appService.transformAppsToEcompApps(appService.getUserApps(user));
120 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userApps", "GET result =", ecompApps);
122 } catch (Exception e) {
123 logger.error(EELFLoggerDelegate.errorLogger, "getUserApps failed", e);
130 * RESTful service method to fetch all applications accessible to the
131 * current user, with personalizations.
136 * HttpServletResponse
137 * @return List<EcompApp>
138 * @throws IOException
141 @RequestMapping(value = { "/portalApi/persUserApps" }, method = RequestMethod.GET, produces = "application/json")
142 public List<EcompApp> getPersUserApps(HttpServletRequest request, HttpServletResponse response) throws IOException {
143 EPUser user = EPUserUtils.getUserSession(request);
144 List<EcompApp> ecompApps = null;
147 EcompPortalUtils.setBadPermissions(user, response, "getPersUserApps");
149 List<EPApp> apps = null;
150 if (adminRolesService.isSuperAdmin(user))
151 apps = appService.getPersAdminApps(user);
153 apps = appService.getPersUserApps(user);
154 ecompApps = appService.transformAppsToEcompApps(apps);
155 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userPersApps", "GET result =", ecompApps);
157 } catch (Exception e) {
158 logger.error(EELFLoggerDelegate.errorLogger, "getPersUserApps failed", e);
159 response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
165 * RESTful service method to fetch applications for which the current user
166 * is an Administrator
171 * HttpServletResponse
172 * @return List<AppIdAndNameTransportModel>
174 @RequestMapping(value = { "/portalApi/adminApps" }, method = RequestMethod.GET, produces = "application/json")
175 public List<AppIdAndNameTransportModel> getAdminApps(HttpServletRequest request, HttpServletResponse response) {
176 EPUser user = EPUserUtils.getUserSession(request);
177 List<AppIdAndNameTransportModel> adminApps = null;
180 if (!adminRolesService.isAccountAdmin(user) && !adminRolesService.isRoleAdmin(user) ) {
181 EcompPortalUtils.setBadPermissions(user, response, "getAdminApps");
183 adminApps = appService.getAdminApps(user);
184 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/adminApps", "GET result =", adminApps);
186 } catch (Exception e) {
187 logger.error(EELFLoggerDelegate.errorLogger, "getAdminApps failed", e);
194 * RESTful service method to fetch Applications for user who is super admin
200 * HttpServletResponse
201 * @return List<AppIdAndNameTransportModel>
203 @RequestMapping(value = {
204 "/portalApi/appsForSuperAdminAndAccountAdmin" }, method = RequestMethod.GET, produces = "application/json")
205 public List<AppIdAndNameTransportModel> getAppsForSuperAdminAndAccountAdmin(HttpServletRequest request,
206 HttpServletResponse response) {
207 EPUser user = EPUserUtils.getUserSession(request);
208 List<AppIdAndNameTransportModel> adminApps = null;
211 if (!adminRolesService.isSuperAdmin(user) && !adminRolesService.isAccountAdmin(user) && !adminRolesService.isRoleAdmin(user) ) {
212 EcompPortalUtils.setBadPermissions(user, response, "getAdminApps");
214 adminApps = appService.getAppsForSuperAdminAndAccountAdmin(user);
215 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/appsForSuperAdminAndAccountAdmin",
216 "GET result =", adminApps);
218 } catch (Exception e) {
219 logger.error(EELFLoggerDelegate.errorLogger, "getAppsForSuperAdminAndAccountAdmin failed", e);
226 * RESTful service method to fetch left menu items from the user's session.
231 * HttpServletResponse
232 * @return JSON with left menu
234 @SuppressWarnings({ "rawtypes", "unchecked" })
235 @RequestMapping(value = { "/portalApi/leftmenuItems" }, method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
236 public String getLeftMenuItems(HttpServletRequest request, HttpServletResponse response) {
237 String menuList = null;
238 Set menuSet = (Set) AppUtils.getSession(request)
239 .getAttribute(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_ATTRIBUTE_NAME));
241 Set roleFunctionSet = (Set) AppUtils.getSession(request)
242 .getAttribute(SystemProperties.getProperty(SystemProperties.ROLE_FUNCTIONS_ATTRIBUTE_NAME));
244 EPUser user = EPUserUtils.getUserSession(request);
247 menuList = leftMenuService.getLeftMenuItems(user, menuSet, roleFunctionSet);
248 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/leftmenuItems", "GET result =", menuList);
249 } catch (Exception e) {
250 logger.error(EELFLoggerDelegate.errorLogger, "getLeftMenuItems failed", e);
255 @RequestMapping(value = {
256 "/portalApi/userAppsOrderBySortPref" }, method = RequestMethod.GET, produces = "application/json")
257 public List<EcompApp> getUserAppsOrderBySortPref(HttpServletRequest request, HttpServletResponse response) {
258 EPUser user = EPUserUtils.getUserSession(request);
259 List<EcompApp> ecompApps = null;
262 EcompPortalUtils.setBadPermissions(user, response, "getUserAppsOrderBySortPref");
264 String usrSortPref = request.getParameter("mparams");
265 if (usrSortPref.equals("")) {
268 switch (usrSortPref) {
270 ecompApps = appService.transformAppsToEcompApps(appService.getAppsOrderByName(user));
271 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppsOrderBySortPref", "GET result =",
275 ecompApps = appService.transformAppsToEcompApps(appService.getAppsOrderByLastUsed(user));
276 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppsOrderBySortPref", "GET result =",
280 ecompApps = appService.transformAppsToEcompApps(appService.getAppsOrderByMostUsed(user));
281 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppsOrderBySortPref", "GET result =",
285 ecompApps = appService.transformAppsToEcompApps(appService.getAppsOrderByManual(user));
286 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppsOrderBySortPref", "GET result =",
290 logger.error(EELFLoggerDelegate.errorLogger,
291 "getUserAppsOrderBySortPref failed: no match for " + usrSortPref);
294 } catch (Exception e) {
295 logger.error(EELFLoggerDelegate.errorLogger, "getUserAppsOrderBySortPref failed", e);
301 * Sets the user apps manual sort preference
304 * HTTP servlet request
306 * HTTP servlet response
307 * @param epAppsManualPref
309 * @return FieldsValidator
311 @RequestMapping(value = {
312 "/portalApi/saveUserAppsSortingManual" }, method = RequestMethod.PUT, produces = "application/json")
313 public FieldsValidator putUserAppsSortingManual(HttpServletRequest request,
314 @RequestBody List<EPAppsManualPreference> epAppsManualPref, HttpServletResponse response) {
315 FieldsValidator fieldsValidator = null;
317 EPUser user = EPUserUtils.getUserSession(request);
318 fieldsValidator = appService.saveAppsSortManual(epAppsManualPref, user);
319 response.setStatus(fieldsValidator.httpStatusCode.intValue());
320 } catch (Exception e) {
321 logger.error(EELFLoggerDelegate.errorLogger, "putUserAppsSortingManual failed", e);
323 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/saveUserAppsSortingManual", "PUT result =",
324 response.getStatus());
325 return fieldsValidator;
328 @RequestMapping(value = {
329 "/portalApi/saveUserWidgetsSortManual" }, method = RequestMethod.PUT, produces = "application/json")
330 public FieldsValidator putUserWidgetsSortManual(HttpServletRequest request,
331 @RequestBody List<EPWidgetsSortPreference> saveManualWidgetSData, HttpServletResponse response) {
332 FieldsValidator fieldsValidator = null;
334 EPUser user = EPUserUtils.getUserSession(request);
335 fieldsValidator = appService.saveWidgetsSortManual(saveManualWidgetSData, user);
336 response.setStatus(fieldsValidator.httpStatusCode.intValue());
337 } catch (Exception e) {
338 logger.error(EELFLoggerDelegate.errorLogger, "putUserWidgetsSortManual failed", e);
340 // return fieldsValidator;
341 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/putUserWidgetsSortManual", "PUT result =",
342 response.getStatus());
343 return fieldsValidator;
346 @RequestMapping(value = {
347 "/portalApi/updateWidgetsSortPref" }, method = RequestMethod.PUT, produces = "application/json")
348 public FieldsValidator putUserWidgetsSortPref(HttpServletRequest request,
349 @RequestBody List<EPWidgetsSortPreference> delManualWidgetData, HttpServletResponse response) {
350 FieldsValidator fieldsValidator = null;
352 EPUser user = EPUserUtils.getUserSession(request);
353 fieldsValidator = appService.deleteUserWidgetSortPref(delManualWidgetData, user);
354 response.setStatus(fieldsValidator.httpStatusCode.intValue());
355 } catch (Exception e) {
356 logger.error(EELFLoggerDelegate.errorLogger, "putUserWidgetsSortPref failed", e);
359 // return fieldsValidator;
360 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/putUserWidgetsSortPref", "PUT result =",
361 response.getStatus());
362 return fieldsValidator;
366 * Deletes the user app manual sort preference record
369 * HTTP servlet request
371 * HTTP servlet response
372 * @param delManualAppData
374 * @return FieldsValidator
376 @RequestMapping(value = {
377 "/portalApi/UpdateUserAppsSortManual" }, method = RequestMethod.PUT, produces = "application/json")
378 public FieldsValidator deleteUserAppSortManual(HttpServletRequest request,
379 @RequestBody EPDeleteAppsManualSortPref delManualAppData, HttpServletResponse response) {
380 FieldsValidator fieldsValidator = null;
382 EPUser user = EPUserUtils.getUserSession(request);
383 fieldsValidator = appService.deleteUserAppSortManual(delManualAppData, user);
384 response.setStatus(fieldsValidator.httpStatusCode.intValue());
385 } catch (Exception e) {
386 logger.error(EELFLoggerDelegate.errorLogger, "deleteUserAppSortManual failed", e);
389 // return fieldsValidator;
390 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/deleteUserAppSortManual", "PUT result =",
391 response.getStatus());
392 return fieldsValidator;
395 @RequestMapping(value = {
396 "/portalApi/saveUserAppsSortingPreference" }, method = RequestMethod.PUT, produces = "application/json")
397 public FieldsValidator putUserAppsSortingPreference(HttpServletRequest request,
398 @RequestBody EPAppsSortPreference userAppsValue, HttpServletResponse response) {
399 FieldsValidator fieldsValidator = null;
401 EPUser user = EPUserUtils.getUserSession(request);
402 fieldsValidator = appService.saveAppsSortPreference(userAppsValue, user);
403 response.setStatus(fieldsValidator.httpStatusCode.intValue());
404 } catch (Exception e) {
405 logger.error(EELFLoggerDelegate.errorLogger, "putUserAppsSortingPreference failed", e);
409 // return fieldsValidator;
410 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/putUserAppsSortingPreference", "PUT result =",
411 response.getStatus());
412 return fieldsValidator;
415 @RequestMapping(value = {
416 "/portalApi/userAppsSortTypePreference" }, method = RequestMethod.GET, produces = "application/String")
417 public String getUserAppsSortTypePreference(HttpServletRequest request, HttpServletResponse response) {
418 EPUser user = EPUserUtils.getUserSession(request);
419 String userSortPreference = null;
423 EcompPortalUtils.setBadPermissions(user, response, "userAppsSortTypePreference");
425 userSortPreference = appService.getUserAppsSortTypePreference(user);
426 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppsSortTypePreference", "GET result =",
429 } catch (Exception e) {
430 logger.error(EELFLoggerDelegate.errorLogger, "getUserAppsSortTypePreference failed", e);
433 return userSortPreference;
437 * RESTful service method to fetch Application Administrators to Super
438 * Administrator user. Attention: Users which have Super Administrator roles
439 * only are not included!
442 * HTTP servlet request
444 * HTTP servlet response
445 * @return List<AdminUserApplications>
447 @RequestMapping(value = { "/portalApi/accountAdmins" }, method = RequestMethod.GET, produces = "application/json")
448 public List<AdminUserApplications> getAppsAdministrators(HttpServletRequest request, HttpServletResponse response) {
449 EPUser user = EPUserUtils.getUserSession(request);
450 List<AdminUserApplications> admins = null;
452 if (!adminRolesService.isSuperAdmin(user)) {
453 EcompPortalUtils.setBadPermissions(user, response, "getAppsAdministrators");
455 admins = appService.getAppsAdmins();
456 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/accountAdmins", "GET result =", admins);
458 } catch (Exception e) {
459 logger.error(EELFLoggerDelegate.errorLogger, "getAppsAdministrators failed", e);
465 @RequestMapping(value = { "/portalApi/availableApps" }, method = RequestMethod.GET, produces = "application/json")
466 public List<AppsResponse> getApps(HttpServletRequest request, HttpServletResponse response) {
467 EPUser user = EPUserUtils.getUserSession(request);
468 List<AppsResponse> apps = null;
470 if (!adminRolesService.isSuperAdmin(user)) {
471 EcompPortalUtils.setBadPermissions(user, response, "getApps");
473 apps = appService.getAllApps(false);
474 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/availableApps", "GET result =", apps);
476 } catch (Exception e) {
477 logger.error(EELFLoggerDelegate.errorLogger, "getApps failed", e);
484 * Gets all apps, both active and inactive; i.e., all on-boarded apps,
485 * regardless of enabled status.
488 * HTTP servlet request
490 * HTTP servlet response
491 * @return List of applications
493 @RequestMapping(value = {
494 "/portalApi/allAvailableApps" }, method = RequestMethod.GET, produces = "application/json")
495 public List<AppsResponse> getAllApps(HttpServletRequest request, HttpServletResponse response) {
496 EPUser user = EPUserUtils.getUserSession(request);
497 List<AppsResponse> apps = null;
499 if (!adminRolesService.isSuperAdmin(user)) {
500 EcompPortalUtils.setBadPermissions(user, response, "getApps");
502 apps = appService.getAllApps(true);
503 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/availableApps", "GET result =", apps);
505 } catch (Exception e) {
506 logger.error(EELFLoggerDelegate.errorLogger, "getAllApps failed", e);
515 * HTTP servlet request
517 * HTTP servlet response
518 * @return List of applications
520 @RequestMapping(value = { "/portalApi/appsFullList" }, method = RequestMethod.GET, produces = "application/json")
521 public List<EcompApp> getAppsFullList(HttpServletRequest request, HttpServletResponse response) {
522 EPUser user = EPUserUtils.getUserSession(request);
523 List<EcompApp> ecompApps = null;
525 EcompPortalUtils.setBadPermissions(user, response, "getAppsFullList");
527 ecompApps = appService.getEcompAppAppsFullList();
528 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/appsFullList", "GET result =", ecompApps);
536 * HTTP servlet request
538 * HTTP servlet response
541 @RequestMapping(value = { "/portalApi/userProfile" }, method = RequestMethod.GET, produces = "application/json")
542 public UserRoles getUserProfile(HttpServletRequest request, HttpServletResponse response) {
543 EPUser user = EPUserUtils.getUserSession(request);
544 UserRoles userAndRoles = null;
547 EcompPortalUtils.setBadPermissions(user, response, "getUserProfile");
549 userAndRoles = appService.getUserProfileNormalized(user);
551 } catch (Exception e) {
552 logger.error(EELFLoggerDelegate.errorLogger, "getUserProfile failed", e);
555 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userProfile", "getUserProfile result =",
563 * HTTP servlet request
566 * @return List<LocalRole>
568 @RequestMapping(value = { "/portalApi/appRoles/{appId}" }, method = {
569 RequestMethod.GET }, produces = "application/json")
570 public List<LocalRole> getAppRoles(HttpServletRequest request, @PathVariable("appId") Long appId,
571 HttpServletResponse response) {
572 List<LocalRole> roleList = null;
573 EPUser user = EPUserUtils.getUserSession(request);
574 EPApp requestedApp = appService.getApp(appId);
575 if (user != null && (adminRolesService.isAccountAdminOfApplication(user, requestedApp)
576 || (adminRolesService.isSuperAdmin(user) && requestedApp.getId() == PortalConstants.PORTAL_APP_ID))) {
578 roleList = appService.getAppRoles(appId);
579 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/appRoles/" + appId, "GET result =",
581 } catch (Exception e) {
582 logger.error(EELFLoggerDelegate.errorLogger, "getAppRoles failed", e);
585 EcompPortalUtils.setBadPermissions(user, response, "getAppRoles");
592 * Return single app information with appName as parameter
596 * @return EPApp object
598 @RequestMapping(value = { "/portalApi/singleAppInfo" }, method = {
599 RequestMethod.GET }, produces = "application/json")
600 public EPApp getSingleAppInfo(HttpServletRequest request, HttpServletResponse response) {
602 EPUser user = EPUserUtils.getUserSession(request);
604 String appName = request.getParameter("appParam");
605 app = appService.getAppDetailByAppName(appName);
606 if (user != null && (adminRolesService.isAccountAdminOfApplication(user, app)
607 || (adminRolesService.isSuperAdmin(user) && app.getId() == PortalConstants.PORTAL_APP_ID)))
608 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/singleAppInfo" + appName, "GET result =", app);
611 EcompPortalUtils.setBadPermissions(user, response, "createAdmin");
614 } catch (Exception e) {
615 logger.error(EELFLoggerDelegate.errorLogger, "getSingleAppInfo failed", e);
622 * Return single app information with appId as parameter
626 * @return EPApp object
628 @RequestMapping(value = { "/portalApi/singleAppInfoById" }, method = {
629 RequestMethod.GET }, produces = "application/json")
630 public EPApp getSingleAppInfoById(HttpServletRequest request, HttpServletResponse response) {
632 EPUser user = EPUserUtils.getUserSession(request);
634 String appId = request.getParameter("appParam");
635 app = appService.getApp(Long.valueOf(appId));
636 if(!EcompPortalUtils.checkIfRemoteCentralAccessAllowed()) {
637 app.setCentralAuth(false);
639 if (user != null && (adminRolesService.isAccountAdminOfApplication(user, app)
640 || (adminRolesService.isSuperAdmin(user) && app.getId() == PortalConstants.PORTAL_APP_ID)))
641 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/singleAppInfoById" + appId, "GET result =", app);
644 EcompPortalUtils.setBadPermissions(user, response, "createAdmin");
647 } catch (Exception e) {
648 logger.error(EELFLoggerDelegate.errorLogger, "getSingleAppInfo failed", e);
656 * HTTP servlet request
658 * HTTP servlet response
659 * @return List<OnboardingApp>
661 @RequestMapping(value = { "/portalApi/onboardingApps" }, method = RequestMethod.GET, produces = "application/json")
662 public List<OnboardingApp> getOnboardingApps(HttpServletRequest request, HttpServletResponse response) {
663 EPUser user = EPUserUtils.getUserSession(request);
664 List<OnboardingApp> onboardingApps = null;
666 if (!adminRolesService.isSuperAdmin(user)) {
667 EcompPortalUtils.setBadPermissions(user, response, "getOnboardingApps");
669 onboardingApps = appService.getOnboardingApps();
670 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/onboardingApps", "GET result =",
671 "onboardingApps of size " + onboardingApps.size());
673 } catch (Exception e) {
674 logger.error(EELFLoggerDelegate.errorLogger, "getOnboardingApps failed", e);
677 return onboardingApps;
683 * HTTP servlet request
685 * HTTP servlet response
686 * @param modifiedOnboardingApp
688 * @return FieldsValidator
690 @RequestMapping(value = { "/portalApi/onboardingApps" }, method = RequestMethod.PUT, produces = "application/json")
691 public FieldsValidator putOnboardingApp(HttpServletRequest request,
692 @RequestBody OnboardingApp modifiedOnboardingApp, HttpServletResponse response) {
693 FieldsValidator fieldsValidator = null;
695 EPApp oldEPApp = null;
697 user = EPUserUtils.getUserSession(request);
698 if (!adminRolesService.isSuperAdmin(user)) {
699 EcompPortalUtils.setBadPermissions(user, response, "putOnboardingApp");
701 oldEPApp = appService.getApp(modifiedOnboardingApp.id);
702 modifiedOnboardingApp.normalize();
703 fieldsValidator = appService.modifyOnboardingApp(modifiedOnboardingApp, user);
704 response.setStatus(fieldsValidator.httpStatusCode.intValue());
706 } catch (Exception e) {
707 logger.error(EELFLoggerDelegate.errorLogger, "putOnboardingApps failed", e);
709 if(response.getStatus()==200) {
711 String oldvaluesAsJson = new ObjectMapper().writeValueAsString(oldEPApp);
712 String newvaluesAsJson = new ObjectMapper().writeValueAsString(modifiedOnboardingApp);
713 logger.info(EELFLoggerDelegate.auditLogger, "/portalApi/onboardingApps, old values ={}", oldvaluesAsJson);
714 logger.info(EELFLoggerDelegate.auditLogger, "/portalApi/onboardingApps, loginId={}, new values ={}",
715 user != null ? user.getLoginId() : "", newvaluesAsJson);
716 } catch (JsonProcessingException e) {
717 logger.error(EELFLoggerDelegate.errorLogger, "putOnboardingApps failed", e);
720 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/onboardingApps", "PUT result =",
721 response.getStatus());
722 return fieldsValidator;
728 * HTTP servlet request
730 * HTTP servlet response
731 * @param newOnboardingApp
733 * @return FieldsValidator
735 @RequestMapping(value = { "/portalApi/onboardingApps" }, method = RequestMethod.POST, produces = "application/json")
736 public FieldsValidator postOnboardingApp(HttpServletRequest request, @RequestBody OnboardingApp newOnboardingApp,
737 HttpServletResponse response) {
738 FieldsValidator fieldsValidator = null;
740 EPUser user = EPUserUtils.getUserSession(request);
741 if (!adminRolesService.isSuperAdmin(user)) {
742 EcompPortalUtils.setBadPermissions(user, response, "postOnboardingApps");
744 newOnboardingApp.normalize();
745 fieldsValidator = appService.addOnboardingApp(newOnboardingApp, user);
746 response.setStatus(fieldsValidator.httpStatusCode.intValue());
748 } catch (Exception e) {
749 logger.error(EELFLoggerDelegate.errorLogger, "postOnboardingApp failed", e);
752 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/onboardingApps", "POST result =",
753 response.getStatus());
754 return fieldsValidator;
758 * REST endpoint to process a request to delete an on-boarded application.
761 * HTTP servlet request
763 * HTTP servlet response
765 * ID of app to delete
766 * @return FieldsValidator
768 @RequestMapping(value = { "/portalApi/onboardingApps/{appId}" }, method = {
769 RequestMethod.DELETE }, produces = "application/json")
770 public FieldsValidator deleteOnboardingApp(HttpServletRequest request, @PathVariable("appId") Long appId,
771 HttpServletResponse response) {
772 FieldsValidator fieldsValidator = null;
774 EPUser user = EPUserUtils.getUserSession(request);
775 if (!adminRolesService.isSuperAdmin(user)) {
776 EcompPortalUtils.setBadPermissions(user, response, "deleteOnboardingApps");
778 fieldsValidator = appService.deleteOnboardingApp(user, appId);
779 response.setStatus(fieldsValidator.httpStatusCode.intValue());
781 } catch (Exception e) {
782 logger.error(EELFLoggerDelegate.errorLogger, "deleteOnboardingApp failed", e);
783 response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
786 EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/onboardingApps" + appId, "DELETE result =",
787 response.getStatus());
788 return fieldsValidator;
792 * Gets the application thumbnail image; sets status 404 if none exists.
795 * HTTP servlet request
797 * HTTP servlet response
800 * @return Bytes with the app thumbnail image; null if not available.
802 @RequestMapping(value = { "/portalApi/appThumbnail/{appId}" }, method = { RequestMethod.GET })
803 public HttpEntity<byte[]> getAppThumbnail(HttpServletRequest request, @PathVariable("appId") Long appId,
804 HttpServletResponse response) {
805 EPApp app = appService.getApp(appId);
806 if (app == null || app.getImageUrl() == null || app.getThumbnail() == null || app.getThumbnail().length == 0) {
807 logger.debug(EELFLoggerDelegate.debugLogger,
808 "getAppThumbnail: no app and/or no thumbnail for app " + appId);
809 response.setStatus(HttpServletResponse.SC_NOT_FOUND);
812 String url = app.getImageUrl();
813 int indexOfDot = url.lastIndexOf('.');
814 String urlSuffix = indexOfDot > 0 ? url.substring(indexOfDot + 1).toLowerCase() : "UNK";
815 // Default to JPG if no usable suffix.
816 MediaType mediaType = MediaType.IMAGE_JPEG;
817 if ("png".equals(urlSuffix))
818 mediaType = MediaType.IMAGE_PNG;
819 else if ("gif".equals(urlSuffix))
820 mediaType = MediaType.IMAGE_GIF;
821 HttpHeaders header = new HttpHeaders();
822 header.setContentType(mediaType);
823 header.setContentLength(app.getThumbnail().length);
824 return new HttpEntity<byte[]>(app.getThumbnail(), header);