Repair search and timeout defects
[portal.git] / ecomp-portal-BE-common / src / main / java / org / openecomp / portalapp / portal / controller / ExternalAccessRolesController.java
index 43e07af..fabf5e1 100644 (file)
@@ -9,14 +9,25 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.openecomp.portalapp.portal.domain.CentralRoleFunction;
 import org.openecomp.portalapp.portal.domain.EPApp;
+import org.openecomp.portalapp.portal.domain.EPUser;
+import org.openecomp.portalapp.portal.domain.EcompAuditLog;
 import org.openecomp.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.openecomp.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 import org.openecomp.portalapp.portal.logging.aop.EPAuditLog;
+import org.openecomp.portalapp.portal.logging.aop.EPEELFLoggerAdvice;
+import org.openecomp.portalapp.portal.logging.logic.EPLogUtil;
 import org.openecomp.portalapp.portal.service.ExternalAccessRolesService;
 import org.openecomp.portalapp.portal.transport.CentralRole;
+import org.openecomp.portalapp.portal.utils.EPCommonSystemProperties;
+import org.openecomp.portalapp.portal.utils.EcompPortalUtils;
+import org.openecomp.portalapp.portal.utils.PortalConstants;
+import org.openecomp.portalsdk.core.domain.AuditLog;
 import org.openecomp.portalsdk.core.domain.Role;
 import org.openecomp.portalsdk.core.domain.RoleFunction;
 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.openecomp.portalsdk.core.service.AuditService;
+import org.openecomp.portalsdk.core.util.SystemProperties;
+import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -37,6 +48,11 @@ import io.swagger.annotations.ApiOperation;
 @EPAuditLog
 public class ExternalAccessRolesController implements BasicAuthenticationController {
 
+       private static final String LOGIN_ID = "LoginId";
+
+       @Autowired
+       private AuditService auditService;
+       
        private static final String UEBKEY = "uebkey";
 
        private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ExternalAccessRolesController.class);
@@ -51,7 +67,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                
                String answer = null;
                try {
-                       answer = externalAccessRolesService.getUser(loginId, request.getHeader(UEBKEY));
+                       answer = externalAccessRolesService.getUserWithRoles(loginId, request.getHeader(UEBKEY));
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "getUser failed", e);
                }
@@ -66,7 +82,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                List<EPApp> applicationList=new ArrayList<>();
                applicationList = externalAccessRolesService.getApp(request.getHeader(UEBKEY));
                EPApp app = applicationList.get(0);
-        externalAccessRolesService.SyncApplicationRolesWithEcompDB(app);
+        externalAccessRolesService.syncApplicationRolesWithEcompDB(app);
                List<CentralRole> answer = null;
                try {
                        answer = externalAccessRolesService.getRolesForApp(request.getHeader(UEBKEY));
@@ -141,7 +157,38 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                         String data = roleFunc;
                        CentralRoleFunction availableRoleFunction = mapper.readValue(data, CentralRoleFunction.class);
                        availableRoleFunction.setAppId(appId);
-                       externalAccessRolesService.saveCentralRoleFunction(availableRoleFunction, requestedApp);
+                       boolean saveOrUpdateResponse = externalAccessRolesService.saveCentralRoleFunction(availableRoleFunction, requestedApp);
+                       if(saveOrUpdateResponse){
+                               EPUser user = externalAccessRolesService.getUser(request.getHeader(LOGIN_ID)).get(0);
+                               EPApp app = externalAccessRolesService.getApp(request.getHeader(UEBKEY)).get(0);
+                               CentralRoleFunction function = externalAccessRolesService.getRoleFunction(availableRoleFunction.getCode(), request.getHeader(UEBKEY));
+                               String activityCode = (function.getCode() == null) ? EcompAuditLog.CD_ACTIVITY_EXTERNAL_AUTH_ADD_FUNCTION: EcompAuditLog.CD_ACTIVITY_EXTERNAL_AUTH_UPDATE_FUNCTION;
+                               logger.info(EELFLoggerDelegate.applicationLogger, "saveRoleFunction: succeeded for app {}, function {}",
+                                               app.getId(), availableRoleFunction.getCode());
+                               AuditLog auditLog = new AuditLog();
+                               auditLog.setUserId(user.getId());
+                               auditLog.setActivityCode(activityCode);
+                               auditLog.setComments(EcompPortalUtils.truncateString("saveRoleFunction role for app:"+app.getId()+" and function:'"+availableRoleFunction.getCode()+"'", PortalConstants.AUDIT_LOG_COMMENT_SIZE));
+                               auditLog.setAffectedRecordId(user.getOrgUserId());
+                               auditService.logActivity(auditLog, null);
+                               MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP,
+                                               EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+                               MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP,
+                                               EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+                               EcompPortalUtils.calculateDateTimeDifferenceForLog(
+                                               MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP),
+                                               MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP));
+                               logger.info(EELFLoggerDelegate.auditLogger,
+                                               EPLogUtil.formatAuditLogMessage("ExternalAccessRolesController.saveRoleFunction",
+                                                               activityCode, String.valueOf(user.getId()),
+                                                               user.getOrgUserId(), availableRoleFunction.getCode()));
+                               MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP);
+                               MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP);
+                               MDC.remove(SystemProperties.MDC_TIMER);
+                       } else{
+                               logger.error(EELFLoggerDelegate.errorLogger, "saveRoleFunction failed");
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to saveRoleFunction for '"+availableRoleFunction.getCode()+"'", "Failed");
+                       }
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "saveRoleFunction failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
@@ -153,13 +200,42 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
        @RequestMapping(value = { "/roleFunction/{code}" }, method = RequestMethod.DELETE, produces = "application/json")
        public  PortalRestResponse<String> deleteRoleFunction(HttpServletRequest request, HttpServletResponse response, @PathVariable("code") String code) throws Exception {
                try {
-                       externalAccessRolesService.deleteCentralRoleFunction(code, request.getHeader(UEBKEY));
+                       EPUser user = externalAccessRolesService.getUser(request.getHeader(LOGIN_ID)).get(0);
+                       EPApp app = externalAccessRolesService.getApp(request.getHeader(UEBKEY)).get(0);
+                       boolean getDelFuncResponse = externalAccessRolesService.deleteCentralRoleFunction(code, app);
+                       if(getDelFuncResponse){
+                               logger.info(EELFLoggerDelegate.applicationLogger, "deleteRoleFunction: succeeded for app {}, role {}",
+                                               app.getId(), code);
+                               AuditLog auditLog = new AuditLog();
+                               auditLog.setUserId(user.getId());
+                               auditLog.setActivityCode(EcompAuditLog.CD_ACTIVITY_EXTERNAL_AUTH_DELETE_FUNCTION);
+                               auditLog.setComments(EcompPortalUtils.truncateString("Deleted function for app:"+app.getId()+" and function code:'"+code+"'", PortalConstants.AUDIT_LOG_COMMENT_SIZE));
+                               auditLog.setAffectedRecordId(user.getOrgUserId());
+                               auditService.logActivity(auditLog, null);
+                               MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP,
+                                               EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+                               MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP,
+                                               EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+                               EcompPortalUtils.calculateDateTimeDifferenceForLog(
+                                               MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP),
+                                               MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP));
+                               logger.info(EELFLoggerDelegate.auditLogger,
+                                               EPLogUtil.formatAuditLogMessage("ExternalAccessRolesController.deleteRoleFunction",
+                                                               EcompAuditLog.CD_ACTIVITY_EXTERNAL_AUTH_DELETE_FUNCTION, String.valueOf(user.getId()),
+                                                               user.getOrgUserId(), code));
+                               MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP);
+                               MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP);
+                               MDC.remove(SystemProperties.MDC_TIMER);
+                       } else{
+                               logger.error(EELFLoggerDelegate.errorLogger, "deleteRoleFunction failed");
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to deleteRoleFunction for '"+code+"'", "Failed");
+                       }
                } catch (HttpClientErrorException e) {
                        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
                        logger.error(EELFLoggerDelegate.errorLogger, "deleteRoleFunction failed", e);
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to deleteRoleFunction", "Failed");
+                       return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "Failed to deleteRoleFunction for '"+code+"'", "Failed");
                }
-               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully Deleted", "Success");
+               return new PortalRestResponse<>(PortalRestStatusEnum.OK, "Successfully Deleted", "Success");
 
        }       
        
@@ -168,7 +244,36 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
        public PortalRestResponse<String> saveRole(HttpServletRequest request, HttpServletResponse response,
                        @RequestBody Role role) throws Exception {
                try {
-                       externalAccessRolesService.saveRoleForApplication(role,request.getHeader(UEBKEY));
+                       EPUser user = externalAccessRolesService.getUser(request.getHeader(LOGIN_ID)).get(0);
+                       EPApp app = externalAccessRolesService.getApp(request.getHeader(UEBKEY)).get(0);
+                       boolean getAddResponse = externalAccessRolesService.saveRoleForApplication(role, request.getHeader(UEBKEY));
+                       if (getAddResponse) {
+                               String activityCode = (role.getId() == null) ? EcompAuditLog.CD_ACTIVITY_EXTERNAL_AUTH_ADD_ROLE
+                                               : EcompAuditLog.CD_ACTIVITY_EXTERNAL_AUTH_UPDATE_ROLE_AND_FUNCTION;
+                               logger.info(EELFLoggerDelegate.applicationLogger, "saveRole: succeeded for app {}, role {}",
+                                               app.getId(), role.getName());
+                               AuditLog auditLog = new AuditLog();
+                               auditLog.setUserId(user.getId());
+                               auditLog.setActivityCode(activityCode);
+                               auditLog.setComments(EcompPortalUtils.truncateString("saveRole role for app:" + app.getId() + " and role:'" + role.getName()+"'", PortalConstants.AUDIT_LOG_COMMENT_SIZE));
+                               auditLog.setAffectedRecordId(user.getOrgUserId());
+                               auditService.logActivity(auditLog, null);
+                               MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP, EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+                               MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP, EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+                               EcompPortalUtils.calculateDateTimeDifferenceForLog(
+                                               MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP),
+                                               MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP));
+                               logger.info(EELFLoggerDelegate.auditLogger,
+                                               EPLogUtil.formatAuditLogMessage("ExternalAccessRolesController.saveRole", activityCode,
+                                                               String.valueOf(user.getId()), user.getOrgUserId(), role.getName()));
+                               MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP);
+                               MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP);
+                               MDC.remove(SystemProperties.MDC_TIMER);
+                       } else {
+                               response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "Failed to saveRole for '"+role.getName()+"'", "Failed");
+
+                       }
                } catch (Exception e) {
                        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
                        logger.error(EELFLoggerDelegate.errorLogger, "saveRole failed", e);
@@ -182,7 +287,36 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
        public  PortalRestResponse<String> deleteRole(HttpServletRequest request, HttpServletResponse response,
                        @PathVariable String code) throws Exception {
                try {
-                       externalAccessRolesService.deleteRoleForApplication(code, request.getHeader(UEBKEY));
+                       boolean deleteResponse = externalAccessRolesService.deleteRoleForApplication(code, request.getHeader(UEBKEY));
+                       if(deleteResponse){
+                               EPUser user = externalAccessRolesService.getUser(request.getHeader(LOGIN_ID)).get(0);
+                               EPApp app = externalAccessRolesService.getApp(request.getHeader(UEBKEY)).get(0);
+                               logger.info(EELFLoggerDelegate.applicationLogger, "deleteRole: succeeded for app {}, role {}",
+                                               app.getId(), code);
+                               AuditLog auditLog = new AuditLog();
+                               auditLog.setUserId(user.getId());
+                               auditLog.setActivityCode(EcompAuditLog.CD_ACTIVITY_EXTERNAL_AUTH_DELETE_ROLE);
+                               auditLog.setComments(EcompPortalUtils.truncateString("Deleted role for app:"+app.getId()+" and role:'"+code+"'", PortalConstants.AUDIT_LOG_COMMENT_SIZE));
+                               auditLog.setAffectedRecordId(user.getOrgUserId());
+                               auditService.logActivity(auditLog, null);
+                               MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP,
+                                               EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+                               MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP,
+                                               EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+                               EcompPortalUtils.calculateDateTimeDifferenceForLog(
+                                               MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP),
+                                               MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP));
+                               logger.info(EELFLoggerDelegate.auditLogger,
+                                               EPLogUtil.formatAuditLogMessage("ExternalAccessRolesController.deleteRole",
+                                                               EcompAuditLog.CD_ACTIVITY_EXTERNAL_AUTH_DELETE_ROLE, String.valueOf(user.getId()),
+                                                               user.getOrgUserId(), code));
+                               MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP);
+                               MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP);
+                               MDC.remove(SystemProperties.MDC_TIMER);
+                       } else{
+                               logger.error(EELFLoggerDelegate.errorLogger, "deleteRole failed");
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to deleteRole for '"+code+"'", "Failed");
+                       }
                } catch (Exception e) {
                        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
                        logger.error(EELFLoggerDelegate.errorLogger, "deleteRole failed", e);
@@ -208,15 +342,23 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
        
        @ApiOperation(value = "deletes user roles for an application.", response = PortalRestResponse.class, responseContainer = "Json")
        @RequestMapping(value = { "/deleteDependcyRoleRecord/{roleId}" }, method = RequestMethod.DELETE, produces = "application/json")
-       public  PortalRestResponse<String> deleteDependcyRoleRecord(HttpServletRequest request, HttpServletResponse response, @PathVariable("roleId") Long roleId) throws Exception {
+       public PortalRestResponse<String> deleteDependencyRoleRecord(HttpServletRequest request, HttpServletResponse response,
+                       @PathVariable("roleId") Long roleId) throws Exception {
                try {
-                       externalAccessRolesService.deleteDependcyRoleRecord(roleId,request.getHeader(UEBKEY), request.getHeader("LoginId"));
+                       boolean deleteResponse = externalAccessRolesService.deleteDependencyRoleRecord(roleId,
+                                       request.getHeader(UEBKEY), request.getHeader(LOGIN_ID));
+                       if (!deleteResponse) {
+                               response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "Failed to deleteDependencyRoleRecord",
+                                               "Failed");
+                       }
                } catch (HttpClientErrorException e) {
                        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
-                       logger.error(EELFLoggerDelegate.errorLogger, "deleteDependcyRoleRecord failed", e);
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to deleteDependcyRoleRecord", "Failed");
+                       logger.error(EELFLoggerDelegate.errorLogger, "deleteDependencyRoleRecord failed", e);
+                       return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "Failed to deleteDependencyRoleRecord",
+                                       "Failed");
                }
-               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully Deleted", "Success");
+               return new PortalRestResponse<>(PortalRestStatusEnum.OK, "Successfully Deleted", "Success");
        }
        
        @ApiOperation(value = "Bulk upload functions for an application.", response = PortalRestResponse.class, responseContainer = "Json")