Update license; improve coverage; add docs dir
[portal.git] / ecomp-portal-BE-common / src / main / java / org / openecomp / portalapp / portal / service / UserRolesCommonServiceImpl.java
index d7aac63..683bca3 100644 (file)
@@ -1,21 +1,39 @@
 /*-
- * ================================================================================
- * ECOMP Portal
- * ================================================================================
- * 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.
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the “License”);
+ * you may not use this software except in compliance with the License.
  * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
+ *             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.
- * ================================================================================
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 
 package org.openecomp.portalapp.portal.service;
@@ -58,6 +76,7 @@ import org.openecomp.portalapp.portal.logging.aop.EPMetricsLog;
 import org.openecomp.portalapp.portal.logging.format.EPAppMessagesEnum;
 import org.openecomp.portalapp.portal.logging.logic.EPLogUtil;
 import org.openecomp.portalapp.portal.transport.AppWithRolesForUser;
+import org.openecomp.portalapp.portal.transport.CentralRole;
 import org.openecomp.portalapp.portal.transport.EPUserAppCurrentRoles;
 import org.openecomp.portalapp.portal.transport.EcompUserAppRoles;
 import org.openecomp.portalapp.portal.transport.ExternalAccessUser;
@@ -339,9 +358,10 @@ public class UserRolesCommonServiceImpl  {
                        transaction.commit();
                        result = true;
                } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "syncUserRoles failed", e);
                        EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeDaoSystemError, e);
                        EcompPortalUtils.rollbackTransaction(transaction,
-                                       "Exception occurred in syncUserRoles, Details: " + EcompPortalUtils.getStackTrace(e));
+                                       "Exception occurred in syncUserRoles, Details: " + e.toString());
                        if("DELETE".equals(reqType)){
                                throw new Exception(e.getMessage());
                        }
@@ -537,6 +557,7 @@ public class UserRolesCommonServiceImpl  {
                                        externalAccessRolesService.deleteRoleDependencyRecords(localSession, roleId, appId);
                                        logger.debug(EELFLoggerDelegate.debugLogger, "syncAppRoles: about to delete the role: " + role.toString());
                                        localSession.delete(role);
+                                       localSession.flush();
                                        logger.debug(EELFLoggerDelegate.debugLogger, "syncAppRoles: deleted the role");
                                }
                        }
@@ -555,9 +576,10 @@ public class UserRolesCommonServiceImpl  {
                        transaction.commit();
                        logger.debug(EELFLoggerDelegate.debugLogger, "syncAppRoles: committed the transaction");
                } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "syncAppRoles failed", e);
                        EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeDaoSystemError, e);
                        EcompPortalUtils.rollbackTransaction(transaction,
-                                       "syncAppRoles: Exception occurred in syncAppRoles, Details: " + EcompPortalUtils.getStackTrace(e));
+                                       "Exception occurred in syncAppRoles, Details: " + e.toString());
                        throw new Exception(e);
                } finally {
                        localSession.close();
@@ -1292,7 +1314,7 @@ public class UserRolesCommonServiceImpl  {
                                }
                                // Check if list contains just account admin role
                                boolean checkIfAdminRoleExists = false;
-                               if (reqType.equals("DELETE")) {
+                               if (reqType.equals("DELETE") && userRoleList!=null) {
                                        checkIfAdminRoleExists = userRoleList.stream()
                                                        .anyMatch(userRole -> userRole.getRoleId().equals(PortalConstants.ACCOUNT_ADMIN_ROLE_ID));
                                } else {
@@ -1307,10 +1329,10 @@ public class UserRolesCommonServiceImpl  {
                                                if (!app.getId().equals(PortalConstants.PORTAL_APP_ID) && !(checkIfAdminRoleExists
                                                                && reqType.equals("DELETE")) && roleInAppForUserList.size() > 1) {
                                                        EPUser remoteAppUser = null;
-                                                       remoteAppUser = checkIfRemoteUserExits(userId.getOrgUserId(), app,
+                                                       remoteAppUser = checkIfRemoteUserExits(orgUserId, app,
                                                                        applicationsRestClientService);
                                                        if (remoteAppUser == null) {
-                                                               addRemoteUser(roleInAppForUserList, userId.getOrgUserId(), app, mapper, searchService,
+                                                               addRemoteUser(roleInAppForUserList, orgUserId, app, mapper, searchService,
                                                                                applicationsRestClientService);
                                                                reqMessage = "Saved Successfully";
                                                        }
@@ -1342,9 +1364,9 @@ public class UserRolesCommonServiceImpl  {
                                        // If adding just account admin role don't do remote application user call
                                        if(!((roleInAppForUserList.size() == 1 || reqType.equals("DELETE")) && checkIfAdminRoleExists)){
                                        EPUser remoteAppUser = null;
-                                               remoteAppUser = checkIfRemoteUserExits(userId.getOrgUserId(), app, applicationsRestClientService);
+                                               remoteAppUser = checkIfRemoteUserExits(orgUserId, app, applicationsRestClientService);
                                        if (remoteAppUser == null) {
-                                               remoteAppUser = addRemoteUser(roleInAppForUserList, userId.getOrgUserId(), app, mapper, searchService, applicationsRestClientService);
+                                               remoteAppUser = addRemoteUser(roleInAppForUserList, orgUserId, app, mapper, searchService, applicationsRestClientService);
                                                reqMessage = "Saved Successfully";
                                        }
                                                if (remoteAppUser != null) {
@@ -1396,7 +1418,7 @@ public class UserRolesCommonServiceImpl  {
                                logger.error(EELFLoggerDelegate.errorLogger, message, e);
                                result = false;
                                reqMessage = e.getMessage();
-                                if(epRequestIdSize > 0 && !userInfo.isEmpty()){
+                                if(epRequestIdSize > 0 && userInfo!=null && !userInfo.isEmpty()){
                                 updateStatus = "F";
                                 applyChangesToAppRolesRequest(app.getId(), userId.getId(),
                                 updateStatus, epRequestId.get(0));
@@ -1525,9 +1547,21 @@ public class UserRolesCommonServiceImpl  {
                EPApp app = appsService.getApp(appId);
                try {
                        // for ecomp portal app, no need to make a remote call
+                       List<Role> roleList = new ArrayList<>();
                        if (appId == PortalConstants.PORTAL_APP_ID) {           
-
-                               List<Role> roleList = roleService.getAvailableRoles(userId);
+                               if(app.getCentralAuth()){
+                                       List<CentralRole> cenRoleList = externalAccessRolesService.getRolesForApp(app.getUebKey());
+                                       for(CentralRole cenRole : cenRoleList){
+                                               Role role = new Role();
+                                               role.setActive(cenRole.isActive());
+                                               role.setId(cenRole.getId());
+                                               role.setName(cenRole.getName());
+                                               role.setPriority(cenRole.getPriority());
+                                               roleList.add(role);
+                                       }
+                               }else{
+                                       roleList = roleService.getAvailableRoles(userId);
+                               }
                                List<Role> activeRoleList = new ArrayList<Role>();
                                for(Role role: roleList) {
                                        if(role.getActive()) {
@@ -1554,8 +1588,8 @@ public class UserRolesCommonServiceImpl  {
                        EcompRole[] appRoles = null;
                        List<EcompRole> roles = new ArrayList<>();
                        if(app.getCentralAuth()){
-                               //Sync application roles from External Access System
-                               externalAccessRolesService.syncApplicationRolesWithEcompDB(app);
+                               //Sync application functions from External Access System
+                               externalAccessRolesService.syncRoleFunctionFromExternalAccessSystem(app);
                                List<EPRole> applicationRoles = dataAccessService.getList(EPRole.class, " where app_id = "+app.getId()+ " and active_yn = 'Y'", null, null);;
                                for(EPRole role : applicationRoles){
                                        EcompRole ecompRole = new EcompRole();
@@ -1625,12 +1659,14 @@ public class UserRolesCommonServiceImpl  {
                                        
                                         HashMap<Long, EcompRole> appRolesActiveMap =hashMapFromEcompRoles(appRoles);
                                                ArrayList<EcompRole> activeRoles = new ArrayList<EcompRole>();
-                                               for (int i = 0; i < userAppRoles.length; i++) {
-                                                       if (appRolesActiveMap.containsKey(userAppRoles[i].getId())) {
-                                                               EcompRole role = new EcompRole();
-                                                               role.setId(userAppRoles[i].getId());
-                                                               role.setName(userAppRoles[i].getName());
-                                                               activeRoles.add(role);
+                                               if(userAppRoles != null){
+                                                       for (int i = 0; i < userAppRoles.length; i++) {
+                                                               if (appRolesActiveMap.containsKey(userAppRoles[i].getId())) {
+                                                                       EcompRole role = new EcompRole();
+                                                                       role.setId(userAppRoles[i].getId());
+                                                                       role.setName(userAppRoles[i].getName());
+                                                                       activeRoles.add(role);
+                                                               }
                                                        }
                                                }
                                                EcompRole[]     userAppRolesActive = activeRoles.toArray(new EcompRole[activeRoles.size()]);
@@ -1677,7 +1713,8 @@ public class UserRolesCommonServiceImpl  {
                try {
                        logger.error(EELFLoggerDelegate.errorLogger,"Should not be reached here, still the endpoint is yet to be defined");
                        boolean result = postUserRolesToMylogins(userAppRolesData, applicationsRestClientService, userAppRolesData.appId, user.getId());
-                       
+                       logger.debug(EELFLoggerDelegate.debugLogger,"putUserAppRolesRequest: result {}", result);
+                                               
                        params.put("appId", userAppRolesData.appId);
                        EPUserAppRolesRequest epAppRolesRequestData = new EPUserAppRolesRequest();
                        epAppRolesRequestData.setCreatedDate(new Date());