Merge "Portal El-Alto Release Note"
authorManoop Talasila <talasila@research.att.com>
Wed, 18 Sep 2019 21:37:18 +0000 (21:37 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 18 Sep 2019 21:37:18 +0000 (21:37 +0000)
220 files changed:
docs/tutorials/index.rst
docs/tutorials/portal-BE/index.rst [new file with mode: 0644]
docs/tutorials/portal-BE/setting-up.rst [new file with mode: 0644]
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/AppsController.java
ecomp-portal-BE-os/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java
ecomp-portal-BE-os/src/main/java/org/onap/portalapp/controller/ECOMPLogoutController.java
ecomp-portal-BE-os/src/main/java/org/onap/portalapp/controller/PeerBroadcastSocket.java
ecomp-portal-BE-os/src/main/java/org/onap/portalapp/portal/controller/AppsOSController.java
portal-BE/Dockerfile [new file with mode: 0644]
portal-BE/build.sh [new file with mode: 0755]
portal-BE/docker-compose.yml [new file with mode: 0644]
portal-BE/dockerfile.mariadb [new file with mode: 0644]
portal-BE/my.cnf [new file with mode: 0644]
portal-BE/pom.xml
portal-BE/src/main/java/org/onap/portal/configuration/SecurityConfig.java
portal-BE/src/main/java/org/onap/portal/controller/LoginController.java
portal-BE/src/main/java/org/onap/portal/controller/UserController.java
portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogController.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogMarkupController.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/dao/ep/EpMicroserviceParameterDao.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/dao/ep/EpPersUserWidgetSelDao.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/dao/ep/EpWidgetCatalogParameterDao.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/dao/fn/EpWidgetCatalogDao.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/dao/fn/FnAppDao.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/dao/fn/FnWidgetDao.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/builder/FnUserBuilder.java [deleted file]
portal-BE/src/main/java/org/onap/portal/domain/builder/FnUserDtoBuilder.java [deleted file]
portal-BE/src/main/java/org/onap/portal/domain/db/SchemaInfo.java
portal-BE/src/main/java/org/onap/portal/domain/db/VUrlAccess.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrFavoriteReports.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrFilehistLog.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrFolder.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrFolderAccess.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrLuFileType.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrRaptorActionImg.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrRaptorPdfImg.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrRemoteSchemaInfo.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrReportDwnldLog.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrReportEmailSentLog.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrReportFileHistory.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrReportLog.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrReportSchedule.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrReportScheduleUsers.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrReportTemplateMap.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrScheduleActivityLog.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrTableJoin.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrTableRole.java
portal-BE/src/main/java/org/onap/portal/domain/db/cr/CrTableSource.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpAppFunction.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpAppRoleFunction.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpBasicAuthAccount.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpEndpoints.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpEndpointsBasicAuthAccount.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroservice.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMlModel.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMlRec.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMlUser.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpNotification.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserAppSort.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetPlacement.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpRoleNotification.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpUserNotification.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpUserRolesRequest.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpUserRolesRequestDet.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWebAnalyticsSource.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalog.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalogFiles.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalogParameter.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalogRole.java
portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetPreviewFiles.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnApp.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnAuditAction.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnAuditActionLog.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnAuditLog.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnBroadcastMessage.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnChatLogs.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnChatRoom.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnChatUsers.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnCommonWidgetData.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnDatasource.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnDisplayText.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnFunction.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLanguage.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLuActivity.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLuAlertMethod.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLuBroadcastSite.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLuMenuSet.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLuPriority.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLuRoleType.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLuTabSet.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLuTimezone.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnMenu.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnMenuFunctional.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnMenuFunctionalAncestors.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnMenuFunctionalRoles.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnOrg.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnPersUserAppSel.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzBlobTriggers.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzCalendars.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzCronTriggers.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzFiredTriggers.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzJobDetails.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzLocks.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzPausedTriggerGrps.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzSchedulerState.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzSimpleTriggers.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzSimpropTriggers.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzTriggers.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnRestrictedUrl.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnRole.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnRoleFunction.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnRoleV.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnScheduleWorkflows.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnSharedContext.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnTab.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnTabSelected.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUser.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnWidget.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnWorkflow.java
portal-BE/src/main/java/org/onap/portal/domain/dto/DomainVo.java
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AdminUserApp.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AdminUserApplications.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/App.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppCatalogItem.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppCategoryFunctionsItem.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppContactUs.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppContactUsItem.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppIdAndNameTransportModel.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppsResponse.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/BEProperty.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/BasicAuthCredentials.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/CentralV2RoleFunction.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/CentralizedApp.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/CommonWidgetsEnum.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/DisplayText.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPApp.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPAppRoleFunction.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPEndpoint.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPEndpointAccount.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPRole.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUser.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserApp.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppCatalogRoles.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppRoles.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppRolesRequest.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppRolesRequestDetail.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppsManualSortPreference.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppsSortPreference.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserNotification.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPWidgetsManualSortPreference.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompApp.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompAppRole.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompAppRoleId.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompAuditLog.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/ExternalRoleDetails.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/ExternalSystemAccess.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/FunctionalMenuItemWithAppID.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/GetAccessResult.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/GetAccessResultId.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/Language.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/MicroserviceData.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/MicroserviceParameter.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PersUserAppSelection.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PersUserWidgetSelection.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PortalRestResponse.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PortalRestStatusEnum.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/RoleApp.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/SearchResultItem.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/SharedContext.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UploadRoleFunctionExtSystem.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserIdRoleId.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRole.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRoles.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/Widget.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetCatalog.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetCatalogParameter.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetParameterResult.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetServiceHeaders.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/domain/dto/fn/FnUserDto.java
portal-BE/src/main/java/org/onap/portal/domain/dto/transport/CentralV2RoleFunction.java
portal-BE/src/main/java/org/onap/portal/domain/dto/transport/CentralV2UserApp.java
portal-BE/src/main/java/org/onap/portal/domain/dto/transport/CommonWidget.java
portal-BE/src/main/java/org/onap/portal/domain/dto/transport/EpNotificationItem.java
portal-BE/src/main/java/org/onap/portal/domain/dto/transport/EpNotificationItemVO.java
portal-BE/src/main/java/org/onap/portal/domain/dto/transport/EpRoleNotificationItem.java
portal-BE/src/main/java/org/onap/portal/domain/dto/transport/ExternalAccessPerms.java
portal-BE/src/main/java/org/onap/portal/domain/dto/transport/FieldsValidator.java
portal-BE/src/main/java/org/onap/portal/domain/dto/transport/OnboardingWidget.java
portal-BE/src/main/java/org/onap/portal/domain/mapper/FnUserMapper.java
portal-BE/src/main/java/org/onap/portal/exception/RoleFunctionException.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/logging/aop/EPAuditLog.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/logging/aop/EPEELFLoggerAdvice.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/logging/aop/EPMetricsLog.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/logging/format/EPAppMessagesEnum.java
portal-BE/src/main/java/org/onap/portal/service/AdminRolesService.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/service/WidgetMService.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/service/WidgetService.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/service/ep/EpMicroserviceParameterService.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogParameterService.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/service/fn/FnAppService.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/service/fn/FnUserService.java
portal-BE/src/main/java/org/onap/portal/service/fn/old/AppsCacheService.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/service/fn/old/EPRoleFunctionService.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/utils/EPCommonSystemProperties.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/utils/EPUserUtils.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/utils/EcompPortalUtils.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/utils/EcompVersion.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/utils/PortalConstants.java [new file with mode: 0644]
portal-BE/src/main/resources/application.properties
portal-BE/src/main/resources/data.sql
portal-BE/src/test/java/org/onap/portal/controller/LanguageControllerTest.java
portal-BE/src/test/java/org/onap/portal/controller/UserControllerTest.java
portal-BE/src/test/java/org/onap/portal/controller/WidgetsControllerTest.java [new file with mode: 0644]
portal-BE/src/test/java/org/onap/portal/framework/MockitoTestSuite.java [new file with mode: 0644]
portal-BE/src/test/java/org/onap/portal/service/fn/FnUserServiceTest.java

index 5af6800..ed3cd77 100644 (file)
@@ -7,5 +7,6 @@ Portal: Tutorials
    :maxdepth: 2
  
    portal-sdk/index
+   portal-BE/index
 
 
diff --git a/docs/tutorials/portal-BE/index.rst b/docs/tutorials/portal-BE/index.rst
new file mode 100644 (file)
index 0000000..9ab7c1a
--- /dev/null
@@ -0,0 +1,14 @@
+.. Building ONAP Portal SDK Web Applications documentation master file, created by
+   sphinx-quickstart on Mon Aug  7 12:47:34 2017.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Building ONAP Portal BE Applications
+=========================================
+.. toctree::
+       :maxdepth: 6
+       :caption: Contents:
+
+       setting-up
+
diff --git a/docs/tutorials/portal-BE/setting-up.rst b/docs/tutorials/portal-BE/setting-up.rst
new file mode 100644 (file)
index 0000000..22d7f47
--- /dev/null
@@ -0,0 +1,49 @@
+Setting up
+==========
+Dependencies
+------------
+
+In order to build Portal BE applications on your machine, you'll need to install the following:
+
+1. OpenJDK 8
+2. Maven
+3. Docker
+4. Docker Compose
+
+Cloning the Portal repository
+---------------------------------
+
+Clone the Portal repository with git:
+
+::
+
+    git clone "https://gerrit.onap.org/r/portal"
+
+Building
+-----------------
+
+::
+
+    cd portal-BE/
+    If you get this error "unable to prepare context: path ".\r" not found" please use this command dos2unix build.sh
+    ./build.sh
+
+Viewing your app
+----------------
+
+
+::
+
+    http://localhost:8080/login
+
+To log in, use user/password 'demo/demo123'.
+
+.. _access the h2-console: http://localhost:8080/h2-console/
+
+Change:
+Saved Settings: Generic MySQL
+Driver Class: com.mysql.cj.jdbc.Driver
+JDBC URL: jdbc:mysql://portal-db:3306/testdb
+User Name: portal
+Password: Test123456
\ No newline at end of file
index 9feecec..0be0d35 100644 (file)
@@ -789,7 +789,8 @@ public class AppsController extends EPRestrictedBaseController {
                                EcompPortalUtils.setBadPermissions(user, response, "postOnboardingApps");
                        } else {
                                newOnboardingApp.normalize();
-                               checkIfNameSpaceIsValid(newOnboardingApp, fieldsValidator, response);
+                               if(newOnboardingApp.isCentralAuth != null && newOnboardingApp.isCentralAuth)
+                                       checkIfNameSpaceIsValid(newOnboardingApp, fieldsValidator, response);
                                fieldsValidator = appService.addOnboardingApp(newOnboardingApp, user);
                                response.setStatus(fieldsValidator.httpStatusCode.intValue());
                        }
index 43449b3..2bf10e4 100644 (file)
@@ -297,15 +297,18 @@ public class ExternalAppConfig extends AppConfig implements Configurable {
         * @return New instance of {@link SchedulerFactoryBean}
         */
 
-/*     @Bean
+   /*  
+    @Bean
        public EPUebHelper epUebHelper() {
                return new EPUebHelper();
        }
-*/
+
        @Bean
        public HealthMonitor healthMonitor() {
                return new HealthMonitor();
        }
+       */
+       
 
        /**
         * Creates and returns a new instance of a {@link MainUebHandler}.
index 062a2e2..54fcf3a 100644 (file)
@@ -33,7 +33,7 @@
  *
  * ============LICENSE_END============================================
  *
- * 
+ *
  */
 package org.onap.portalapp.controller;
 
@@ -62,72 +62,77 @@ import org.springframework.web.servlet.ModelAndView;
 @org.springframework.context.annotation.Configuration
 @EnableAspectJAutoProxy
 @Profile("src")
-public class ECOMPLogoutController extends EPUnRestrictedBaseController{
-       
-       private EPUser user;
-       private static final String EP_SERVICE = "EPService";
-       EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ECOMPLogoutController.class);
-
-       @EPAuditLog
-       @RequestMapping(value = {"/logout.htm" }, method = RequestMethod.GET)
-       public ModelAndView logOut(HttpServletRequest request,
-                                                               HttpServletResponse response) throws Exception {
-       
-               ModelAndView modelView = null;
-                               
-               chatRoomLogout(request);
-               logger.debug(EELFLoggerDelegate.debugLogger, "ECOMPLogoutController.handleRequestInternal - Logout request received.");
-               
-               modelView = new ModelAndView("redirect:login.htm");
-               
-               /**
-               if (UserUtils.isClientMobileDevice(request)){
-               modelView.setViewName(modelView.getViewName().concat("?viewType=mobile"));
-               }
-               */
-               String cookieDoamin = EPSystemProperties.getProperty(EPSystemProperties.COOKIE_DOMAIN);
-               Cookie epCookie = new Cookie(EP_SERVICE, "");
-               epCookie.setMaxAge(0);
-               epCookie.setDomain(cookieDoamin);
-               epCookie.setPath("/");
-               
-               Cookie appHeaderCookie = new Cookie("show_app_header", "");
-               appHeaderCookie.setMaxAge(0);
-               appHeaderCookie.setDomain(cookieDoamin);
-               appHeaderCookie.setPath("/");
-               
-               Cookie appTabCookie = new Cookie("cookieTabs", "");
-               appTabCookie.setMaxAge(0);
-               appTabCookie.setDomain(cookieDoamin);
-               appTabCookie.setPath("/");
-               
-               Cookie appVisInvisTabCookie = new Cookie("visInVisCookieTabs", "");
-               appVisInvisTabCookie.setMaxAge(0);
-               appVisInvisTabCookie.setDomain(cookieDoamin);
-               appVisInvisTabCookie.setPath("/");
-               
-           response.addCookie(epCookie);       
-           response.addCookie(appHeaderCookie);
-           response.addCookie(appTabCookie);
-           response.addCookie(appVisInvisTabCookie);
-               request.getSession().invalidate();
-               
-               logger.debug(EELFLoggerDelegate.debugLogger, "ECOMPLogoutController.handleRequestInternal - Successfully processed the logout request.");
-               
-               return modelView;
-       }
-       
-       @EPMetricsLog
-       public void chatRoomLogout(HttpServletRequest request){
-               request = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest(); 
-               setUser(EPUserUtils.getUserSession(request));
-       }
-       
-       public EPUser getUser() {
-               return user;
-       }
-       
-       public void setUser(EPUser user) {
-               this.user = user;
-       }
+public class ECOMPLogoutController extends EPUnRestrictedBaseController {
+
+    private EPUser user;
+    private static final String EP_SERVICE = "EPService";
+    EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ECOMPLogoutController.class);
+
+    @EPAuditLog
+    @RequestMapping(value = { "/logout.htm" }, method = RequestMethod.GET)
+    public ModelAndView logOut(HttpServletRequest request,
+            HttpServletResponse response) throws Exception {
+
+        ModelAndView modelView = null;
+
+        chatRoomLogout(request);
+        logger.debug(EELFLoggerDelegate.debugLogger,
+                "ECOMPLogoutController.handleRequestInternal - Logout request received.");
+
+        modelView = new ModelAndView("redirect:login.htm");
+
+        /**
+         * if (UserUtils.isClientMobileDevice(request)){
+         * modelView.setViewName(modelView.getViewName().concat("?viewType=mobile")); }
+         */
+        String cookieDoamin = EPSystemProperties.getProperty(EPSystemProperties.COOKIE_DOMAIN);
+        Cookie epCookie = new Cookie(EP_SERVICE, "");
+        epCookie.setSecure(true);
+        epCookie.setMaxAge(0);
+        epCookie.setDomain(cookieDoamin);
+        epCookie.setPath("/");
+
+        Cookie appHeaderCookie = new Cookie("show_app_header", "");
+        appHeaderCookie.setSecure(true);
+        appHeaderCookie.setMaxAge(0);
+        appHeaderCookie.setDomain(cookieDoamin);
+        appHeaderCookie.setPath("/");
+
+        Cookie appTabCookie = new Cookie("cookieTabs", "");
+        appTabCookie.setSecure(true);
+        appTabCookie.setMaxAge(0);
+        appTabCookie.setDomain(cookieDoamin);
+        appTabCookie.setPath("/");
+
+        Cookie appVisInvisTabCookie = new Cookie("visInVisCookieTabs", "");
+        appVisInvisTabCookie.setSecure(true);
+        appVisInvisTabCookie.setMaxAge(0);
+        appVisInvisTabCookie.setDomain(cookieDoamin);
+        appVisInvisTabCookie.setPath("/");
+
+        response.addCookie(epCookie);
+        response.addCookie(appHeaderCookie);
+        response.addCookie(appTabCookie);
+        response.addCookie(appVisInvisTabCookie);
+        request.getSession().invalidate();
+
+        logger.debug(EELFLoggerDelegate.debugLogger,
+                "ECOMPLogoutController.handleRequestInternal - Successfully processed the logout request.");
+
+        return modelView;
+    }
+
+    @EPMetricsLog
+    public void chatRoomLogout(HttpServletRequest request) {
+        request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
+        setUser(EPUserUtils.getUserSession(request));
+    }
+
+    public EPUser getUser() {
+        return user;
+    }
+
+    public void setUser(EPUser user) {
+        this.user = user;
+    }
 }
index c80419f..de8524e 100644 (file)
@@ -35,7 +35,7 @@
  *
  * ============LICENSE_END============================================
  *
- * 
+ *
  */
 package org.onap.portalapp.controller;
 
@@ -53,51 +53,50 @@ import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 
 @ServerEndpoint("/opencontact")
 public class PeerBroadcastSocket {
-       private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(PeerBroadcastSocket.class);
-       private static final ObjectMapper mapper = new ObjectMapper();
+    private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(PeerBroadcastSocket.class);
+    private static final ObjectMapper mapper = new ObjectMapper();
 
-       protected static final Map<String, Object> channelMap = new HashMap<>();
-       private Map<String, String> sessionMap = new HashMap<>();
+    private static final Map<String, Object> channelMap = new HashMap<>();
+    private Map<String, String> sessionMap = new HashMap<>();
 
-       @OnMessage
-       public void message(String message, Session session) {
-               try {
-                       Map<String, Object> jsonObject = mapper.readValue(message, Map.class);
-                       save(jsonObject, session);
-               } catch (Exception ex) {
-                       logger.error(EELFLoggerDelegate.errorLogger, "Failed" + ex.getMessage());
-               }
-       }
+    @OnMessage
+    public void message(String message, Session session) {
+        try {
+            Map<String, Object> jsonObject = mapper.readValue(message, Map.class);
+            save(jsonObject, session);
+        } catch (Exception ex) {
+            logger.error(EELFLoggerDelegate.errorLogger, "Failed", ex);
+        }
+    }
 
-       @OnOpen
-       public void open(Session session) {
-               logger.info(EELFLoggerDelegate.debugLogger, "Channel opened");
-       }
+    @OnOpen
+    public void open(Session session) {
+        logger.info(EELFLoggerDelegate.debugLogger, "Channel opened");
+    }
 
-       @OnClose
-       public void close(Session session) {
-               String channel = sessionMap.get(session.getId());
-               if (channel != null) {
-                       Object sessObj = channelMap.get(channel);
-                       if (sessObj != null) {
-                               try {
-                                       ((Session) sessObj).close();
-                               } catch (IOException e) {
-                                       logger.error(EELFLoggerDelegate.errorLogger, "Failed to close" + e.getMessage());
-                               }
-                       }
-                       channelMap.remove(channel);
-               }
-               logger.info(EELFLoggerDelegate.debugLogger, "Channel closed");
-       }
+    @OnClose
+    public void close(Session session) {
+        String channel = sessionMap.get(session.getId());
+        if (channel != null) {
+            Object sessObj = channelMap.get(channel);
+            if (sessObj != null) {
+                try {
+                    ((Session) sessObj).close();
+                } catch (IOException e) {
+                    logger.error(EELFLoggerDelegate.errorLogger, "Failed to close", e);
+                }
+            }
+            channelMap.remove(channel);
+        }
+        logger.info(EELFLoggerDelegate.debugLogger, "Channel closed");
+    }
 
-       private void save(Map<String, Object> jsonObject, Session session) {
-               final Optional<String> from = Optional.of(jsonObject.get("from").toString());
-               if (from.isPresent() && channelMap.get(from.get()) == null) {
-                       this.channelMap.put(from.toString(), session);
-                       this.sessionMap.put(session.getId(), from.toString());
-               }
-       }
+    private void save(Map<String, Object> jsonObject, Session session) {
+        final Optional<String> from = Optional.of(jsonObject.get("from").toString());
+        if (from.isPresent() && channelMap.get(from.get()) == null) {
+            channelMap.put(from.toString(), session);
+            this.sessionMap.put(session.getId(), from.toString());
+        }
+    }
 
 }
-
index e109ef5..b1154aa 100644 (file)
@@ -39,23 +39,17 @@ package org.onap.portalapp.portal.controller;
 
 import java.util.HashMap;
 import java.util.Map;
-
 import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
-
 import javax.validation.ConstraintViolation;
 import javax.validation.Validation;
 import javax.validation.Validator;
 import javax.validation.ValidatorFactory;
-import lombok.NoArgsConstructor;
 import org.json.JSONObject;
 import org.onap.portalapp.portal.domain.EPUser;
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 import org.onap.portalapp.portal.logging.aop.EPAuditLog;
-import org.onap.portalapp.portal.service.AdminRolesService;
-import org.onap.portalapp.portal.service.EPAppService;
-import org.onap.portalapp.portal.service.PersUserAppService;
 import org.onap.portalapp.portal.service.UserService;
 import org.onap.portalapp.util.EPUserUtils;
 import org.onap.portalapp.validation.SecureString;
@@ -68,6 +62,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
+import lombok.NoArgsConstructor;
 
 @RestController
 @Configuration
@@ -75,73 +70,74 @@ import org.springframework.web.bind.annotation.RestController;
 @EPAuditLog
 @NoArgsConstructor
 public class AppsOSController extends AppsController {
-       private static final ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
-       
-       private static final String FAILURE = "failure";
-       private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AppsOSController.class);
+    private static final ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
 
-       @Autowired
-       UserService userService;
+    private static final String FAILURE = "failure";
+    private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AppsOSController.class);
+
+    @Autowired
+    UserService userService;
+
+    /**
+     * Create new application's contact us details.
+     *
+     * @param contactUs
+     * @return
+     */
+    @RequestMapping(value = "/portalApi/saveNewUser", method = RequestMethod.POST, produces = "application/json")
+    public PortalRestResponse<String> saveNewUser(HttpServletRequest request, @RequestBody EPUser newUser) {
+        EPUser user = EPUserUtils.getUserSession(request);
+        if (newUser == null)
+            return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, FAILURE,
+                    "New User cannot be null or empty");
+
+        if (!(super.getAdminRolesService().isSuperAdmin(user) || super.getAdminRolesService().isAccountAdmin(user))
+                && !user.getLoginId().equalsIgnoreCase(newUser.getLoginId())) {
+            return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, FAILURE,
+                    "UnAuthorized");
+        }
 
-       /**
-        * Create new application's contact us details.
-        * 
-        * @param contactUs
-        * @return
-        */
-       @RequestMapping(value = "/portalApi/saveNewUser", method = RequestMethod.POST, produces = "application/json")
-       public PortalRestResponse<String> saveNewUser(HttpServletRequest request,@RequestBody EPUser newUser) {
-               EPUser user = EPUserUtils.getUserSession(request);
-               if (newUser == null)
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, FAILURE,
-                                       "New User cannot be null or empty");
-               
-               if (!(super.getAdminRolesService().isSuperAdmin(user) || super.getAdminRolesService().isAccountAdmin(user))){
-                       if(!user.getLoginId().equalsIgnoreCase(newUser.getLoginId()))
-                               return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, FAILURE,
-                                               "UnAuthorized");
-               }
-                       
         String checkDuplicate = request.getParameter("isCheck");
-               String saveNewUser = FAILURE;
-               try {
-                       saveNewUser = userService.saveNewUser(newUser,checkDuplicate);
-               } catch (Exception e) {
-                       return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, saveNewUser, e.getMessage());
-               }
-               return new PortalRestResponse<>(PortalRestStatusEnum.OK, saveNewUser, "");
-       }
-       
-       @RequestMapping(value = { "/portalApi/currentUserProfile/{loginId}" }, method = RequestMethod.GET, produces = "application/json")
-       public String getCurrentUserProfile(HttpServletRequest request, @PathVariable("loginId") String loginId) {
+        String saveNewUser = FAILURE;
+        try {
+            saveNewUser = userService.saveNewUser(newUser, checkDuplicate);
+        } catch (Exception e) {
+            logger.error(EELFLoggerDelegate.errorLogger, "Exception in saveNewUser", e);
+            return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, saveNewUser, e.getMessage());
+        }
+        return new PortalRestResponse<>(PortalRestStatusEnum.OK, saveNewUser, "");
+    }
+
+    @RequestMapping(value = { "/portalApi/currentUserProfile/{loginId}" }, method = RequestMethod.GET,
+            produces = "application/json")
+    public String getCurrentUserProfile(HttpServletRequest request, @PathVariable("loginId") String loginId) {
 
-               if(loginId != null){
-                       Validator validator = validatorFactory.getValidator();
-                       SecureString secureString = new SecureString(loginId);
-                       Set<ConstraintViolation<SecureString>> constraintViolations = validator.validate(secureString);
+        if (loginId != null) {
+            Validator validator = validatorFactory.getValidator();
+            SecureString secureString = new SecureString(loginId);
+            Set<ConstraintViolation<SecureString>> constraintViolations = validator.validate(secureString);
 
-                       if (!constraintViolations.isEmpty()){
-                               return "loginId is not valid";
-                       }
-               }
+            if (!constraintViolations.isEmpty()) {
+                return "loginId is not valid";
+            }
+        }
 
-               
-               Map<String,String> map = new HashMap<>();
-               EPUser user;
-               try {
-                        user = (EPUser) userService.getUserByUserId(loginId).get(0);
-                        map.put("firstName", user.getFirstName());
-                    map.put("lastName", user.getLastName());
-                    map.put("email", user.getEmail());
-                        map.put("loginId", user.getLoginId());
-                        map.put("loginPwd",user.getLoginPwd());
-                        map.put("middleInitial",user.getMiddleInitial());
-               } catch (Exception e) {
-                       logger.error(EELFLoggerDelegate.errorLogger, "Failed to get user info", e);
-               }
+        Map<String, String> map = new HashMap<>();
+        EPUser user;
+        try {
+            user = (EPUser) userService.getUserByUserId(loginId).get(0);
+            map.put("firstName", user.getFirstName());
+            map.put("lastName", user.getLastName());
+            map.put("email", user.getEmail());
+            map.put("loginId", user.getLoginId());
+            map.put("loginPwd", user.getLoginPwd());
+            map.put("middleInitial", user.getMiddleInitial());
+        } catch (Exception e) {
+            logger.error(EELFLoggerDelegate.errorLogger, "Failed to get user info", e);
+        }
 
-               JSONObject j = new JSONObject(map);
-               return j.toString();
-       }
+        JSONObject j = new JSONObject(map);
+        return j.toString();
+    }
 
-}
\ No newline at end of file
+}
diff --git a/portal-BE/Dockerfile b/portal-BE/Dockerfile
new file mode 100644 (file)
index 0000000..99275dc
--- /dev/null
@@ -0,0 +1,6 @@
+FROM openjdk:8-jdk-alpine
+VOLUME /tmp
+EXPOSE 8080
+ARG DEPENDENCY=target
+ADD ${DEPENDENCY}/portal-0.0.1-SNAPSHOT.jar portal-0.0.1-SNAPSHOT.jar
+ENTRYPOINT ["java","-jar","portal-0.0.1-SNAPSHOT.jar"]
\ No newline at end of file
diff --git a/portal-BE/build.sh b/portal-BE/build.sh
new file mode 100755 (executable)
index 0000000..5c94036
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+mvn clean install
+docker build -t portal_mariadb -f dockerfile.mariadb .
+docker build -t portal_app .
+docker-compose up
diff --git a/portal-BE/docker-compose.yml b/portal-BE/docker-compose.yml
new file mode 100644 (file)
index 0000000..7c44e82
--- /dev/null
@@ -0,0 +1,36 @@
+# docker-compose for ONAP portal containers: database, microservice, portal apps.
+# Relies on .env file, which CANNOT be specified via command-line option
+# Works in multiple environments; does not pull from a Nexus registry.
+# Exposes the portal apps docker (but not DB nor WMS dockers) on the host network.
+# Images must be pulled from ONAP Nexus registry after logging in like this:
+# docker login -u USER -p PASS nexus3.onap.org:10001
+# Uses healthcheck feature added in docker-compose v2.1
+
+version: '2.1'
+
+services:
+  portal-db:
+    image: portal_mariadb
+    container_name: portal_mariaDB
+    environment:
+      MYSQL_DATABASE: testdb
+    healthcheck:
+      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
+    networks:
+      - backend
+
+  portal-app:
+    image: portal_app
+    container_name: portal_APP
+    restart: on-failure
+    ports:
+      - 8080:8080
+    depends_on:
+      portal-db:
+        condition: service_healthy
+    networks:
+      - backend
+
+networks:
+  backend:
+    driver: bridge
diff --git a/portal-BE/dockerfile.mariadb b/portal-BE/dockerfile.mariadb
new file mode 100644 (file)
index 0000000..f8fb49f
--- /dev/null
@@ -0,0 +1,7 @@
+FROM mariadb:latest
+
+ADD my.cnf /etc/mysql/my.cnf
+ENV MYSQL_USER portal
+ENV MYSQL_PASSWORD Test123456
+ENV MYSQL_ROOT_PASSWORD klasjfhaskrigudsb
+EXPOSE 3306
\ No newline at end of file
diff --git a/portal-BE/my.cnf b/portal-BE/my.cnf
new file mode 100644 (file)
index 0000000..d58210f
--- /dev/null
@@ -0,0 +1,192 @@
+# MariaDB database server configuration file.
+#
+# You can copy this file to one of:
+# - "/etc/mysql/my.cnf" to set global options,
+# - "~/.my.cnf" to set user-specific options.
+#
+# One can use all long options that the program supports.
+# Run program with --help to get a list of available options and with
+# --print-defaults to see which it would actually understand and use.
+#
+# For explanations see
+# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
+
+# This will be passed to all mysql clients
+# It has been reported that passwords should be enclosed with ticks/quotes
+# escpecially if they contain "#" chars...
+# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
+[client]
+port            = 3306
+socket          = /var/run/mysqld/mysqld.sock
+
+# Here is entries for some specific programs
+# The following values assume you have at least 32M ram
+
+# This was formally known as [safe_mysqld]. Both versions are currently parsed.
+[mysqld_safe]
+socket          = /var/run/mysqld/mysqld.sock
+nice            = 0
+
+[mysqld]
+skip-host-cache
+skip-name-resolve
+#
+# * Basic Settings
+#
+#user           = mysql
+pid-file        = /var/run/mysqld/mysqld.pid
+socket          = /var/run/mysqld/mysqld.sock
+port            = 3306
+basedir         = /usr
+datadir         = /var/lib/mysql
+tmpdir          = /tmp
+lc_messages_dir = /usr/share/mysql
+lc_messages     = en_US
+lower_case_table_names = 1 
+skip-external-locking
+#
+# Instead of skip-networking the default is now to listen only on
+# localhost which is more compatible and is not less secure.
+bind-address           = 0.0.0.0
+#
+# * Fine Tuning
+#
+max_connections         = 100
+connect_timeout         = 5
+wait_timeout            = 600
+max_allowed_packet      = 16M
+thread_cache_size       = 128
+sort_buffer_size        = 4M
+bulk_insert_buffer_size = 16M
+tmp_table_size          = 32M
+max_heap_table_size     = 32M
+#
+# * MyISAM
+#
+# This replaces the startup script and checks MyISAM tables if needed
+# the first time they are touched. On error, make copy and try a repair.
+myisam_recover_options = BACKUP
+key_buffer_size         = 128M
+#open-files-limit       = 2000
+table_open_cache        = 400
+myisam_sort_buffer_size = 512M
+concurrent_insert       = 2
+read_buffer_size        = 2M
+read_rnd_buffer_size    = 1M
+#
+# * Query Cache Configuration
+#
+# Cache only tiny result sets, so we can fit more in the query cache.
+query_cache_limit               = 128K
+query_cache_size                = 64M
+# for more write intensive setups, set to DEMAND or OFF
+#query_cache_type               = DEMAND
+#
+# * Logging and Replication
+#
+# Both location gets rotated by the cronjob.
+# Be aware that this log type is a performance killer.
+# As of 5.1 you can enable the log at runtime!
+#general_log_file        = /var/log/mysql/mysql.log
+#general_log             = 1
+#
+# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
+#
+# we do want to know about network errors and such
+#log_warnings           = 2
+#
+# Enable the slow query log to see queries with especially long duration
+#slow_query_log[={0|1}]
+slow_query_log_file     = /var/log/mysql/mariadb-slow.log
+long_query_time = 10
+#log_slow_rate_limit    = 1000
+#log_slow_verbosity     = query_plan
+
+#log-queries-not-using-indexes
+#log_slow_admin_statements
+#
+# The following can be used as easy to replay backup logs or for replication.
+# note: if you are setting up a replication slave, see README.Debian about
+#       other settings you may need to change.
+#server-id              = 1
+#report_host            = master1
+#auto_increment_increment = 2
+#auto_increment_offset  = 1
+#log_bin                        = /var/log/mysql/mariadb-bin
+#log_bin_index          = /var/log/mysql/mariadb-bin.index
+# not fab for performance, but safer
+#sync_binlog            = 1
+expire_logs_days        = 10
+max_binlog_size         = 100M
+# slaves
+#relay_log              = /var/log/mysql/relay-bin
+#relay_log_index        = /var/log/mysql/relay-bin.index
+#relay_log_info_file    = /var/log/mysql/relay-bin.info
+#log_slave_updates
+#read_only
+#
+# If applications support it, this stricter sql_mode prevents some
+# mistakes like inserting invalid dates etc.
+#sql_mode               = NO_ENGINE_SUBSTITUTION,TRADITIONAL
+#
+# * InnoDB
+#
+# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
+# Read the manual for more InnoDB related options. There are many!
+default_storage_engine  = InnoDB
+# you can't just change log file size, requires special procedure
+#innodb_log_file_size   = 50M
+innodb_buffer_pool_size = 256M
+innodb_log_buffer_size  = 8M
+innodb_file_per_table   = 1
+innodb_open_files       = 400
+innodb_io_capacity      = 400
+innodb_flush_method     = O_DIRECT
+#
+# * Security Features
+#
+# Read the manual, too, if you want chroot!
+# chroot = /var/lib/mysql/
+#
+# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
+#
+# ssl-ca=/etc/mysql/cacert.pem
+# ssl-cert=/etc/mysql/server-cert.pem
+# ssl-key=/etc/mysql/server-key.pem
+
+#
+# * Galera-related settings
+#
+[galera]
+# Mandatory settings
+#wsrep_on=ON
+#wsrep_provider=
+#wsrep_cluster_address=
+#binlog_format=row
+#default_storage_engine=InnoDB
+#innodb_autoinc_lock_mode=2
+#
+# Allow server to accept connections on all interfaces.
+#
+#bind-address=0.0.0.0
+#
+# Optional setting
+#wsrep_slave_threads=1
+#innodb_flush_log_at_trx_commit=0
+
+[mysqldump]
+quick
+quote-names
+max_allowed_packet      = 16M
+
+[mysql]
+#no-auto-rehash # faster start of mysql but no tab completion
+
+[isamchk]
+key_buffer              = 16M
+
+#
+# * IMPORTANT: Additional settings that can override those from this file!
+#   The files must end with '.cnf', otherwise they'll be ignored.
+#
+#!includedir /etc/mysql/conf.d/
index a63fb4c..c291c02 100644 (file)
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-       <modelVersion>4.0.0</modelVersion>
-       <parent>
-               <groupId>org.springframework.boot</groupId>
-               <artifactId>spring-boot-starter-parent</artifactId>
-               <version>2.2.0.M4</version>
-               <relativePath/> <!-- lookup parent from repository -->
-       </parent>
-       <groupId>org.onap</groupId>
-       <artifactId>portal</artifactId>
-       <version>0.0.1-SNAPSHOT</version>
-       <name>portal-BE</name>
-       <description></description>
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+      <modelVersion>4.0.0</modelVersion>
+      <parent>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-parent</artifactId>
+            <version>2.2.0.M4</version>
+            <relativePath/> <!-- lookup parent from repository -->
+      </parent>
+      <groupId>org.onap</groupId>
+      <artifactId>portal</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+      <name>portal-BE</name>
+      <packaging>jar</packaging>
+      <description></description>
 
-       <dependencies>
-               <dependency>
-                       <groupId>org.springframework.boot</groupId>
-                       <artifactId>spring-boot-starter-actuator</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.boot</groupId>
-                       <artifactId>spring-boot-starter-data-jpa</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.boot</groupId>
-                       <artifactId>spring-boot-starter-security</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.boot</groupId>
-                       <artifactId>spring-boot-starter-thymeleaf</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.boot</groupId>
-                       <artifactId>spring-boot-starter-web</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.session</groupId>
-                       <artifactId>spring-session-core</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.boot</groupId>
-                       <artifactId>spring-boot-devtools</artifactId>
-                       <scope>runtime</scope>
-                       <optional>true</optional>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.boot</groupId>
-                       <artifactId>spring-boot-starter-aop</artifactId>
-                       <version>2.1.6.RELEASE</version>
-               </dependency>
-               <dependency>
-                       <groupId>com.h2database</groupId>
-                       <artifactId>h2</artifactId>
-                       <scope>runtime</scope>
-               </dependency>
-               <dependency>
-                       <groupId>mysql</groupId>
-                       <artifactId>mysql-connector-java</artifactId>
-                       <scope>runtime</scope>
-               </dependency>
-               <!-- https://mvnrepository.com/artifact/org.glassfish/javax.el -->
-               <dependency>
-                       <groupId>org.glassfish</groupId>
-                       <artifactId>javax.el</artifactId>
-                       <version>3.0.1-b11</version>
-               </dependency>
-               <!-- https://mvnrepository.com/artifact/javax.el/el-api -->
-               <dependency>
-                       <groupId>javax.el</groupId>
-                       <artifactId>el-api</artifactId>
-                       <version>2.2.1-b04</version>
-               </dependency>
-               <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
-               <dependency>
-                       <groupId>org.jsoup</groupId>
-                       <artifactId>jsoup</artifactId>
-                       <version>1.12.1</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.projectlombok</groupId>
-                       <artifactId>lombok</artifactId>
-                       <optional>true</optional>
-               </dependency>
-               <dependency>
-                       <groupId>org.powermock</groupId>
-                       <artifactId>powermock-module-junit4</artifactId>
-                       <version>2.0.0</version>
-                       <scope>test</scope>
-               </dependency>
+      <dependencies>
+            <dependency>
+                  <groupId>org.springframework.boot</groupId>
+                  <artifactId>spring-boot-starter-actuator</artifactId>
+            </dependency>
+            <dependency>
+                  <groupId>org.springframework.boot</groupId>
+                  <artifactId>spring-boot-starter-data-jpa</artifactId>
+            </dependency>
+            <dependency>
+                  <groupId>org.springframework.boot</groupId>
+                  <artifactId>spring-boot-starter-security</artifactId>
+            </dependency>
+            <dependency>
+                  <groupId>org.springframework.boot</groupId>
+                  <artifactId>spring-boot-starter-thymeleaf</artifactId>
+            </dependency>
+            <dependency>
+                  <groupId>org.springframework.boot</groupId>
+                  <artifactId>spring-boot-starter-web</artifactId>
+            </dependency>
+            <dependency>
+                  <groupId>org.springframework.session</groupId>
+                  <artifactId>spring-session-core</artifactId>
+            </dependency>
+            <dependency>
+                  <groupId>org.springframework.boot</groupId>
+                  <artifactId>spring-boot-devtools</artifactId>
+                  <scope>runtime</scope>
+                  <optional>true</optional>
+            </dependency>
+            <dependency>
+                  <groupId>org.springframework.boot</groupId>
+                  <artifactId>spring-boot-starter-aop</artifactId>
+                  <version>2.1.6.RELEASE</version>
+            </dependency>
+            <dependency>
+                  <groupId>com.h2database</groupId>
+                  <artifactId>h2</artifactId>
+                  <scope>runtime</scope>
+            </dependency>
+            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
+            <dependency>
+                  <groupId>mysql</groupId>
+                  <artifactId>mysql-connector-java</artifactId>
+                  <version>8.0.17</version>
+            </dependency>
+            <!-- https://mvnrepository.com/artifact/org.glassfish/javax.el -->
+            <dependency>
+                  <groupId>org.glassfish</groupId>
+                  <artifactId>javax.el</artifactId>
+                  <version>3.0.1-b11</version>
+            </dependency>
+            <!-- https://mvnrepository.com/artifact/javax.el/el-api -->
+            <dependency>
+                  <groupId>javax.el</groupId>
+                  <artifactId>el-api</artifactId>
+                  <version>2.2.1-b04</version>
+            </dependency>
+            <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
+            <dependency>
+                  <groupId>org.jsoup</groupId>
+                  <artifactId>jsoup</artifactId>
+                  <version>1.12.1</version>
+            </dependency>
+            <dependency>
+                  <groupId>org.projectlombok</groupId>
+                  <artifactId>lombok</artifactId>
+                  <optional>true</optional>
+            </dependency>
+            <dependency>
+                  <groupId>org.powermock</groupId>
+                  <artifactId>powermock-module-junit4</artifactId>
+                  <version>2.0.0</version>
+                  <scope>test</scope>
+            </dependency>
 
-               <dependency>
-                       <groupId>org.powermock</groupId>
-                       <artifactId>powermock-api-mockito2</artifactId>
-                       <version>2.0.0</version>
-                       <scope>test</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.onap.portal.sdk</groupId>
-                       <artifactId>epsdk-logger</artifactId>
-                       <version>2.6.0-SNAPSHOT</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.onap.portal.sdk</groupId>
-                       <artifactId>epsdk-core</artifactId>
-                       <version>2.6.0-SNAPSHOT</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.boot</groupId>
-                       <artifactId>spring-boot-starter-test</artifactId>
-                       <scope>test</scope>
-                       <exclusions>
-                               <exclusion>
-                                       <groupId>org.junit.vintage</groupId>
-                                       <artifactId>junit-vintage-engine</artifactId>
-                               </exclusion>
-                               <exclusion>
-                                       <groupId>junit</groupId>
-                                       <artifactId>junit</artifactId>
-                               </exclusion>
-                       </exclusions>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework.security</groupId>
-                       <artifactId>spring-security-test</artifactId>
-                       <scope>test</scope>
-               </dependency>
+            <dependency>
+                  <groupId>org.powermock</groupId>
+                  <artifactId>powermock-api-mockito2</artifactId>
+                  <version>2.0.0</version>
+                  <scope>test</scope>
+            </dependency>
+            <dependency>
+                  <groupId>org.onap.portal.sdk</groupId>
+                  <artifactId>epsdk-logger</artifactId>
+                  <version>2.6.0-SNAPSHOT</version>
+            </dependency>
+            <dependency>
+                  <groupId>org.onap.portal.sdk</groupId>
+                  <artifactId>epsdk-core</artifactId>
+                  <version>2.6.0-SNAPSHOT</version>
+            </dependency>
+            <dependency>
+                  <groupId>org.springframework.boot</groupId>
+                  <artifactId>spring-boot-starter-test</artifactId>
+                  <scope>test</scope>
+                  <exclusions>
+                        <exclusion>
+                              <groupId>org.junit.vintage</groupId>
+                              <artifactId>junit-vintage-engine</artifactId>
+                        </exclusion>
+                        <exclusion>
+                              <groupId>junit</groupId>
+                              <artifactId>junit</artifactId>
+                        </exclusion>
+                  </exclusions>
+            </dependency>
+            <dependency>
+                  <groupId>org.springframework.security</groupId>
+                  <artifactId>spring-security-test</artifactId>
+                  <scope>test</scope>
+            </dependency>
             <dependency>
                   <groupId>javax.servlet</groupId>
                   <artifactId>javax.servlet-api</artifactId>
@@ -133,34 +135,82 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
                   <scope>compile</scope>
             </dependency>
       </dependencies>
+      <properties>
+            <docker.image.prefix>portal</docker.image.prefix>
+      </properties>
+      <build>
+            <plugins>
+                  <plugin>
+                        <groupId>org.springframework.boot</groupId>
+                        <artifactId>spring-boot-maven-plugin</artifactId>
+                  </plugin>
+                  <plugin>
+                        <groupId>com.spotify</groupId>
+                        <artifactId>dockerfile-maven-plugin</artifactId>
+                        <version>1.4.9</version>
+                        <configuration>
+                              <repository>${docker.image.prefix}/${project.version}</repository>
+                        </configuration>
+                  </plugin>
+                  <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-jar-plugin</artifactId>
+                        <configuration>
+                              <!-- DO NOT include log4j.properties file in your Jar -->
+                              <excludes>
+                                    <exclude>**/log4j.properties</exclude>
+                              </excludes>
+                              <archive>
+                                    <manifest>
+                                          <!-- Jar file entry point -->
+                                          <mainClass>org.onap.portal.PortalApplication</mainClass>
+                                    </manifest>
+                              </archive>
+                        </configuration>
+                  </plugin>
+                  <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                              <execution>
+                                    <id>unpack</id>
+                                    <phase>package</phase>
+                                    <goals>
+                                          <goal>unpack</goal>
+                                    </goals>
+                                    <configuration>
+                                          <artifactItems>
+                                                <artifactItem>
+                                                      <groupId>${project.groupId}</groupId>
+                                                      <artifactId>${project.artifactId}</artifactId>
+                                                      <version>${project.version}</version>
+                                                </artifactItem>
+                                          </artifactItems>
+                                    </configuration>
+                              </execution>
+                        </executions>
+                  </plugin>
+            </plugins>
+            <resources>
+                  <resource>
+                        <directory>src/main/resources</directory>
+                  </resource>
+            </resources>
+      </build>
 
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.springframework.boot</groupId>
-                               <artifactId>spring-boot-maven-plugin</artifactId>
-                       </plugin>
-               </plugins>
-               <resources>
-                       <resource>
-                               <directory>src/main/resources</directory>
-                       </resource>
-               </resources>
-       </build>
-
-       <repositories>
-               <repository>
-                       <id>spring-milestones</id>
-                       <name>Spring Milestones</name>
-                       <url>https://repo.spring.io/milestone</url>
-               </repository>
-       </repositories>
-       <pluginRepositories>
-               <pluginRepository>
-                       <id>spring-milestones</id>
-                       <name>Spring Milestones</name>
-                       <url>https://repo.spring.io/milestone</url>
-               </pluginRepository>
-       </pluginRepositories>
+      <repositories>
+            <repository>
+                  <id>spring-milestones</id>
+                  <name>Spring Milestones</name>
+                  <url>https://repo.spring.io/milestone</url>
+            </repository>
+      </repositories>
+      <pluginRepositories>
+            <pluginRepository>
+                  <id>spring-milestones</id>
+                  <name>Spring Milestones</name>
+                  <url>https://repo.spring.io/milestone</url>
+            </pluginRepository>
+      </pluginRepositories>
 
 </project>
index b9e6033..3fae09c 100644 (file)
@@ -75,7 +75,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
        protected void configure(HttpSecurity http) throws Exception {
               http
                       .authorizeRequests()
-                      .antMatchers("/static/img/**").permitAll()
+                      .antMatchers("/img/**").permitAll()
                       .anyRequest().authenticated()
                       .and()
                       .formLogin()
index 0d6de15..3ada12f 100644 (file)
 package org.onap.portal.controller;
 
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.GetMapping;
 
 @Controller
 public class LoginController {
 
-       @RequestMapping(value = "login", method = RequestMethod.GET)
+       @GetMapping(value = "login")
        public String loginView() {
               return "login";
        }
index abc9185..c2dcccd 100644 (file)
@@ -50,10 +50,11 @@ import org.onap.portal.validation.DataValidator;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalsdk.core.onboarding.util.CipherUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController
@@ -73,7 +74,7 @@ public class UserController {
               this.dataValidator = dataValidator;
        }
 
-       @RequestMapping(value = {"/portalApi/loggedinUser"}, method = RequestMethod.GET, produces = "application/json")
+       @GetMapping(value = {"/portalApi/loggedinUser"}, produces = MediaType.APPLICATION_JSON_VALUE)
        public PortalRestResponse<ProfileDetail> getLoggedinUser(Principal principal) {
               PortalRestResponse<ProfileDetail> portalRestResponse = null;
               try {
@@ -90,8 +91,7 @@ public class UserController {
               return portalRestResponse;
        }
 
-       @RequestMapping(value = {
-               "/portalApi/modifyLoggedinUser"}, method = RequestMethod.PUT, produces = "application/json")
+       @PutMapping(value = {"/portalApi/modifyLoggedinUser"}, produces = MediaType.APPLICATION_JSON_VALUE)
        public PortalRestResponse<String> modifyLoggedinUser(Principal principal,
                @RequestBody ProfileDetail profileDetail) {
               PortalRestResponse<String> portalRestResponse = null;
@@ -99,7 +99,8 @@ public class UserController {
                      String errorMsg = "";
                      if (!dataValidator.isValid(profileDetail)) {
                             errorMsg = "Required field(s) is missing";
-                            portalRestResponse = new PortalRestResponse<>(PortalRestStatusEnum.ERROR, dataValidator.getConstraintViolationsString(profileDetail), null);
+                            portalRestResponse = new PortalRestResponse<>(PortalRestStatusEnum.ERROR,
+                                    dataValidator.getConstraintViolationsString(profileDetail), null);
                             logger.error(EELFLoggerDelegate.errorLogger, "modifyLoggedinUser failed", errorMsg);
                      } else {
                             FnUser user = userService.loadUserByUsername(principal.getName());
@@ -109,7 +110,8 @@ public class UserController {
                             user.setMiddleName(profileDetail.getMiddleName());
                             user.setLoginId(profileDetail.getLoginId());
                             if (!HIDDEN_DEFAULT_PASSWORD.equals(profileDetail.getLoginPassword())) {
-                                   user.setLoginPwd(CipherUtil.encryptPKC(profileDetail.getLoginPassword(), "AGLDdG4D04BKm2IxIWEr8o==!"));
+                                   user.setLoginPwd(CipherUtil
+                                           .encryptPKC(profileDetail.getLoginPassword(), "AGLDdG4D04BKm2IxIWEr8o==!"));
                             }
                             userService.saveFnUser(principal, user);
                             // Update user info in the session
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogController.java b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogController.java
new file mode 100644 (file)
index 0000000..decf625
--- /dev/null
@@ -0,0 +1,430 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 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
+ *
+ * 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============================================
+ *
+ *
+ */
+package org.onap.portal.controller;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.lang.StringUtils;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.dto.PortalRestResponse;
+import org.onap.portal.domain.dto.PortalRestStatusEnum;
+import org.onap.portal.domain.dto.ecomp.MicroserviceParameter;
+import org.onap.portal.domain.dto.ecomp.WidgetCatalog;
+import org.onap.portal.domain.dto.ecomp.WidgetCatalogParameter;
+import org.onap.portal.domain.dto.ecomp.WidgetParameterResult;
+import org.onap.portal.domain.dto.ecomp.WidgetServiceHeaders;
+import org.onap.portal.logging.aop.EPAuditLog;
+import org.onap.portal.service.WidgetMService;
+import org.onap.portal.service.ep.EpMicroserviceParameterService;
+import org.onap.portal.service.ep.EpWidgetCatalogParameterService;
+import org.onap.portal.service.fn.FnUserService;
+import org.onap.portal.utils.EPCommonSystemProperties;
+import org.onap.portal.utils.EcompPortalUtils;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+
+@RestController
+@EnableAspectJAutoProxy
+@EPAuditLog
+public class WidgetsCatalogController {
+
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetsCatalogController.class);
+
+       private static final String MS_WIDGET_LOCAL_PORT = "microservices.widget.local.port";
+       private static final String UNAUTHORIZED_OR_FORBIDDEN_FOR_A_DISABLED_USER = "Unauthorized or  Forbidden for a disabled user";
+       private RestTemplate template = new RestTemplate();
+       private String whatService = "widgets-service";
+
+       private final EpWidgetCatalogParameterService epWidgetCatalogParameterService;
+       private final EpMicroserviceParameterService epMicroserviceParameterService;
+       private final WidgetMService widgetMService;
+       private final FnUserService fnUserService;
+
+       @Autowired
+       public WidgetsCatalogController(final EpWidgetCatalogParameterService epWidgetCatalogParameterService,
+               final EpMicroserviceParameterService epMicroserviceParameterService,
+               final WidgetMService widgetMService,
+               final FnUserService fnUserService) {
+              this.epWidgetCatalogParameterService = epWidgetCatalogParameterService;
+              this.epMicroserviceParameterService = epMicroserviceParameterService;
+              this.widgetMService = widgetMService;
+              this.fnUserService = fnUserService;
+       }
+
+
+       @GetMapping(value = {
+               "/portalApi/microservices/widgetCatalog/{loginName}"}, produces = MediaType.APPLICATION_JSON_VALUE)
+       public List<WidgetCatalog> getUserWidgetCatalog(@PathVariable("loginName") String loginName) {
+              List<WidgetCatalog> widgets;
+              try {
+                     ResponseEntity<List> ans = template.exchange(
+                             EcompPortalUtils.widgetMsProtocol() + "://"
+                                     + widgetMService.getServiceLocation(whatService,
+                                     SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
+                                     + "/widget/microservices/widgetCatalog/" + loginName,
+                             HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), List.class);
+                     widgets = ans.getBody();
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger, "getUserWidgetCatalog failed", e);
+                     return null;
+              }
+              return widgets;
+       }
+
+       @GetMapping(value = {"/portalApi/microservices/widgetCatalog"}, produces = MediaType.APPLICATION_JSON_VALUE)
+       public List<WidgetCatalog> getWidgetCatalog() {
+              List<WidgetCatalog> widgets;
+              try {
+                     ResponseEntity<List> ans = template.exchange(
+                             EcompPortalUtils.widgetMsProtocol() + "://"
+                                     + widgetMService.getServiceLocation(whatService,
+                                     SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
+                                     + "/widget/microservices/widgetCatalog",
+                             HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), List.class);
+                     widgets = ans.getBody();
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger, "getWidgetCatalog failed", e);
+                     return null;
+              }
+              return widgets;
+       }
+
+       @PutMapping(value = {
+               "/portalApi/microservices/widgetCatalog/{widgetId}"}, produces = MediaType.APPLICATION_JSON_VALUE)
+       public void updateWidgetCatalog(@RequestBody WidgetCatalog newWidgetCatalog,
+               @PathVariable("widgetId") long widgetId) throws Exception {
+              template.exchange(
+                      EcompPortalUtils.widgetMsProtocol() + "://"
+                              + widgetMService.getServiceLocation(whatService,
+                              SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
+                              + "/widget/microservices/widgetCatalog/" + widgetId,
+                      HttpMethod.PUT, new HttpEntity<>(newWidgetCatalog, WidgetServiceHeaders.getInstance()),
+                      String.class);
+       }
+
+       @DeleteMapping(value = {"/portalApi/microservices/widgetCatalog/{widgetId}"})
+       public void deleteOnboardingWidget(@PathVariable("widgetId") long widgetId) throws Exception {
+              template.exchange(
+                      EcompPortalUtils.widgetMsProtocol() + "://"
+                              + widgetMService.getServiceLocation(whatService,
+                              SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
+                              + "/widget/microservices/widgetCatalog/" + widgetId,
+                      HttpMethod.DELETE, new HttpEntity<>(WidgetServiceHeaders.getInstance()), String.class);
+       }
+
+       @PostMapping(value = {"/portalApi/microservices/widgetCatalog/{widgetId}"})
+       public String updateWidgetCatalogWithFiles(HttpServletRequest request,
+               @PathVariable("widgetId") long widgetId) {
+              MultipartHttpServletRequest mRequest;
+              MultiValueMap<String, Object> multipartRequest = new LinkedMultiValueMap<>();
+              String fileName;
+              String tmpFolderName = "/tmp/";
+              String respond = null;
+              FileOutputStream fo = null;
+              try {
+                     mRequest = (MultipartHttpServletRequest) request;
+                     MultipartFile mFile = mRequest.getFile("file");
+                     fileName = mFile.getOriginalFilename();
+                     fo = new FileOutputStream(tmpFolderName + fileName);
+                     fo.write(mFile.getBytes());
+                     fo.close();
+                     fo = null;
+
+                     HttpHeaders header = new HttpHeaders();
+                     header.setContentType(MediaType.MULTIPART_FORM_DATA);
+                     multipartRequest.add("file", new FileSystemResource(tmpFolderName + fileName));
+                     multipartRequest.add("widget", request.getParameter("newWidget"));
+                     respond = template.postForObject(
+                             EcompPortalUtils.widgetMsProtocol() + "://"
+                                     + widgetMService.getServiceLocation(whatService,
+                                     SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
+                                     + "/widget/microservices/widgetCatalog/" + widgetId,
+                             new HttpEntity<>(multipartRequest, WidgetServiceHeaders.getInstance()), String.class);
+                     File f = new File(tmpFolderName + fileName);
+                     f.delete();
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger, "updateWidgetCatalogWithFiles failed", e);
+              } finally {
+                     try {
+                            if (fo != null) {
+                                   fo.close();
+                            }
+                     } catch (IOException e) {
+                            logger.error(EELFLoggerDelegate.errorLogger, "updateWidgetCatalogWithFiles failed 2", e);
+                     }
+              }
+              return respond;
+       }
+
+       @PostMapping(value = {"/portalApi/microservices/widgetCatalog"})
+       public String createWidgetCatalog(HttpServletRequest request)
+               throws Exception {
+
+              if (StringUtils.isNotBlank(SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_UPLOAD_FLAG))
+                      && SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_UPLOAD_FLAG)
+                      .equalsIgnoreCase("false")) {
+                     return UNAUTHORIZED_OR_FORBIDDEN_FOR_A_DISABLED_USER;
+              }
+
+              MultipartHttpServletRequest mRequest;
+              MultiValueMap<String, Object> multipartRequest = new LinkedMultiValueMap<>();
+              String fileName;
+              String tmpFolderName = "/tmp/";
+              String respond = null;
+              FileOutputStream fo = null;
+              try {
+                     mRequest = (MultipartHttpServletRequest) request;
+                     MultipartFile mFile = mRequest.getFile("file");
+                     fileName = mFile.getOriginalFilename();
+                     fo = new FileOutputStream(tmpFolderName + fileName);
+                     fo.write(mFile.getBytes());
+                     // silence sonar scan by calling close here
+                     fo.close();
+                     fo = null;
+
+                     HttpHeaders header = new HttpHeaders();
+                     header.setContentType(MediaType.MULTIPART_FORM_DATA);
+                     multipartRequest.add("file", new FileSystemResource(tmpFolderName + fileName));
+                     multipartRequest.add("widget", request.getParameter("newWidget"));
+
+                     respond = template.postForObject(
+                             EcompPortalUtils.widgetMsProtocol() + "://"
+                                     + widgetMService.getServiceLocation(whatService,
+                                     SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
+                                     + "/widget/microservices/widgetCatalog",
+                             new HttpEntity<>(multipartRequest, WidgetServiceHeaders.getInstance()), String.class);
+                     File f = new File(tmpFolderName + fileName);
+                     f.delete();
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger, "createWidgetCatalog failed", e);
+              } finally {
+                     try {
+                            if (fo != null) {
+                                   fo.close();
+                            }
+                     } catch (IOException e) {
+                            logger.error(EELFLoggerDelegate.errorLogger, "createWidgetCatalog failed 2", e);
+                     }
+              }
+              return respond;
+       }
+
+       @GetMapping(value = "/portalApi/microservices/{widgetId}/framework.js")
+       public String getWidgetFramework(@PathVariable("widgetId") long widgetId) throws Exception {
+              return template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://"
+                              + widgetMService.getServiceLocation(whatService,
+                      SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
+                              + "/widget/microservices/" + widgetId + "/framework.js", String.class,
+                      WidgetServiceHeaders.getInstance());
+       }
+
+       @GetMapping(value = "/portalApi/microservices/{widgetId}/controller.js")
+       public String getWidgetController(@PathVariable("widgetId") long widgetId) throws Exception {
+              return template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://"
+                              + widgetMService.getServiceLocation(whatService,
+                      SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
+                              + "/widget/microservices/" + widgetId + "/controller.js", String.class,
+                      WidgetServiceHeaders.getInstance());
+       }
+
+       @GetMapping(value = "/portalApi/microservices/{widgetId}/style.css")
+       public String getWidgetCSS(@PathVariable("widgetId") long widgetId) throws Exception {
+              return template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://"
+                              + widgetMService.getServiceLocation(whatService,
+                      SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
+                              + "/widget/microservices/" + widgetId + "/styles.css", String.class,
+                      WidgetServiceHeaders.getInstance());
+       }
+
+       @GetMapping(value = {"/portalApi/microservices/parameters/{widgetId}"})
+       public PortalRestResponse<List<WidgetParameterResult>> getWidgetParameterResult(Principal principal, HttpServletRequest request,
+               @PathVariable("widgetId") long widgetId) throws Exception {
+              FnUser user = fnUserService.loadUserByUsername(principal.getName());
+
+              List<WidgetParameterResult> list = new ArrayList<>();
+              Long serviceId = template.exchange(
+                      EcompPortalUtils.widgetMsProtocol() + "://"
+                              + widgetMService.getServiceLocation(whatService,
+                              SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
+                              + "/widget/microservices/widgetCatalog/parameters/" + widgetId,
+                      HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), Long.class).getBody();
+              if (serviceId == null) {
+                     // return ok/sucess and no service parameter for this widget
+                     return new PortalRestResponse<>(PortalRestStatusEnum.WARN,
+                             "No service parameters for this widget", list);
+              } else {
+                     List<MicroserviceParameter> defaultParam = epMicroserviceParameterService.getParametersById(serviceId);
+                     for (MicroserviceParameter param : defaultParam) {
+                            WidgetParameterResult userResult = new WidgetParameterResult();
+                            userResult.setParamId(param.getId());
+                            userResult.setDefaultValue(param.getPara_value());
+                            userResult.setParamKey(param.getPara_key());
+                            WidgetCatalogParameter userValue = epWidgetCatalogParameterService
+                                    .getUserParamById(widgetId, user.getId(),
+                                            param.getId());
+                            if (userValue == null) {
+                                   userResult.setUserValue(param.getPara_value());
+                            } else {
+                                   userResult.setUserValue(userValue.getUserValue());
+                            }
+                            list.add(userResult);
+                     }
+              }
+              return new PortalRestResponse<List<WidgetParameterResult>>(PortalRestStatusEnum.OK, "SUCCESS", list);
+       }
+
+       @GetMapping(value = {"/portalApi/microservices/services/{paramId}"})
+       public List<WidgetCatalogParameter> getUserParameterById(@PathVariable("paramId") long paramId) {
+              return epWidgetCatalogParameterService.getUserParameterById(paramId);
+       }
+
+       @DeleteMapping(value = {"/portalApi/microservices/services/{paramId}"})
+       public void deleteUserParameterById(@PathVariable("paramId") long paramId) {
+              epWidgetCatalogParameterService.deleteUserParameterById(paramId);
+       }
+
+       @GetMapping(value = {"/portalApi/microservices/download/{widgetId}"})
+       public void doDownload(HttpServletRequest request, HttpServletResponse response,
+               @PathVariable("widgetId") long widgetId) throws Exception {
+
+              ServletContext context = request.getServletContext();
+              byte[] byteFile = template
+                      .exchange(
+                              EcompPortalUtils.widgetMsProtocol() + "://"
+                                      + widgetMService.getServiceLocation(whatService,
+                                      SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
+                                      + "/widget/microservices/download/" + widgetId,
+                              HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), byte[].class)
+                      .getBody();
+
+              File downloadFile = File.createTempFile("temp", ".zip");
+              try (FileOutputStream stream = new FileOutputStream(downloadFile.getPath())) {
+                     stream.write(byteFile);
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger, "doDownload failed", e);
+                     throw e;
+              }
+
+              try (FileInputStream inputStream = new FileInputStream(downloadFile);
+                      OutputStream outStream = response.getOutputStream()) {
+                     String mimeType = context.getMimeType(downloadFile.getPath());
+                     if (mimeType == null) {
+                            mimeType = "application/octet-stream";
+                     }
+
+                     response.setContentType(mimeType);
+                     response.setContentLength((int) downloadFile.length());
+                     String headerKey = "Content-Disposition";
+                     String headerValue = String.format("attachment; filename=\"%s\"", downloadFile.getName());
+                     downloadFile.delete();
+                     response.setHeader(headerKey, headerValue);
+
+                     byte[] buffer = new byte[32 * 1024];
+                     int bytesRead;
+                     while ((bytesRead = inputStream.read(buffer)) != -1) {
+                            outStream.write(buffer, 0, bytesRead);
+                     }
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger, "doDownload failed", e);
+                     throw e;
+              }
+       }
+
+       @PostMapping(value = {"/portalApi/microservices/parameters"})
+       public PortalRestResponse<String> saveWidgetParameter(Principal principal, HttpServletRequest request,
+               @RequestBody WidgetCatalogParameter widgetParameters) {
+              FnUser user = fnUserService.loadUserByUsername(principal.getName());
+              widgetParameters.setUserId(user.getId());
+              try {
+                     WidgetCatalogParameter oldParam = epWidgetCatalogParameterService
+                             .getUserParamById(widgetParameters.getWidgetId(),
+                                     widgetParameters.getUserId(), widgetParameters.getParamId());
+                     if (oldParam != null) {
+                            widgetParameters.setId(oldParam.getId());
+                     }
+                     epWidgetCatalogParameterService.saveUserParameter(widgetParameters);
+
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger, "saveWidgetParameter failed", e);
+                     return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "FAILURE", e.getMessage());
+              }
+              return new PortalRestResponse<>(PortalRestStatusEnum.OK, "SUCCESS", "");
+       }
+
+       @GetMapping(value = {"/portalApi/microservices/uploadFlag"})
+       public String getUploadFlag() {
+              String uplaodFlag = "";
+              try {
+                     uplaodFlag = SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_UPLOAD_FLAG);
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger, "uploadFlag failed", e);
+                     return null;
+              }
+              return uplaodFlag;
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogMarkupController.java b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogMarkupController.java
new file mode 100644 (file)
index 0000000..06dd62d
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.onap.portal.domain.dto.ecomp.WidgetServiceHeaders;
+import org.onap.portal.logging.aop.EPAuditLog;
+import org.onap.portal.service.WidgetMService;
+import org.onap.portal.utils.EcompPortalUtils;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestClientException;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.multipart.commons.CommonsMultipartResolver;
+
+@EPAuditLog
+@RestController
+@EnableAspectJAutoProxy
+public class WidgetsCatalogMarkupController {
+
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetsCatalogMarkupController.class);
+       private RestTemplate template = new RestTemplate();
+       private final String whatService = "widgets-service";
+
+       @Autowired
+       private WidgetMService widgetMService;
+
+       @Bean
+       public CommonsMultipartResolver multipartResolver() {
+              return new CommonsMultipartResolver();
+       }
+
+       static {
+              // for localhost testing only
+              javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier() {
+
+                     public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) {
+                            if (hostname.equals("localhost")) {
+                                   return true;
+                            }
+                            return false;
+                     }
+              });
+       }
+
+       @GetMapping(value = "/portalApi/microservices/markup/{widgetId}")
+       public String getWidgetMarkup(HttpServletRequest request, HttpServletResponse response,
+               @PathVariable("widgetId") long widgetId) throws RestClientException, Exception {
+              return template
+                      .getForObject(
+                              EcompPortalUtils.widgetMsProtocol() + "://"
+                                      + widgetMService.getServiceLocation(whatService,
+                                      SystemProperties.getProperty("microservices.widget.local.port"))
+                                      + "/widget/microservices/markup/" + widgetId,
+                              String.class, WidgetServiceHeaders.getInstance());
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java
new file mode 100644 (file)
index 0000000..c291527
--- /dev/null
@@ -0,0 +1,224 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.controller;
+
+import java.io.IOException;
+import java.security.Principal;
+import java.util.List;
+import java.util.Optional;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.dto.transport.FieldsValidator;
+import org.onap.portal.domain.dto.transport.OnboardingWidget;
+import org.onap.portal.domain.dto.transport.WidgetCatalogPersonalization;
+import org.onap.portal.logging.aop.EPAuditLog;
+import org.onap.portal.service.AdminRolesService;
+import org.onap.portal.service.PersUserWidgetService;
+import org.onap.portal.service.WidgetService;
+import org.onap.portal.service.fn.FnUserService;
+import org.onap.portal.utils.EcompPortalUtils;
+import org.onap.portal.validation.DataValidator;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+@EPAuditLog
+@RestController
+@EnableAspectJAutoProxy
+public class WidgetsController {
+
+       private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetsController.class);
+
+       private final FnUserService fnUserService;
+       private final WidgetService widgetService;
+       private final AdminRolesService adminRolesService;
+       private final DataValidator dataValidator;
+       private final PersUserWidgetService persUserWidgetService;
+
+       @Autowired
+       public WidgetsController(final FnUserService fnUserService, final WidgetService widgetService,
+               final AdminRolesService adminRolesService, final DataValidator dataValidator,
+               final PersUserWidgetService persUserWidgetService) {
+              this.fnUserService = fnUserService;
+              this.widgetService = widgetService;
+              this.adminRolesService = adminRolesService;
+              this.dataValidator = dataValidator;
+              this.persUserWidgetService = persUserWidgetService;
+       }
+
+       @GetMapping(value = {"/portalApi/widgets"}, produces = MediaType.APPLICATION_JSON_VALUE)
+       public List<OnboardingWidget> getOnboardingWidgets(Principal principal, HttpServletRequest request,
+               HttpServletResponse response) {
+              FnUser user = fnUserService.loadUserByUsername(principal.getName());
+              List<OnboardingWidget> onboardingWidgets = null;
+
+              if (user.getGuest()) {
+                     EcompPortalUtils.setBadPermissions(user, response, "getOnboardingWidgets");
+              } else {
+                     String getType = request.getHeader("X-Widgets-Type");
+                     if (!getType.isEmpty() && ("managed".equals(getType) || "all".equals(getType))) {
+                            onboardingWidgets = widgetService.getOnboardingWidgets(user, "managed".equals(getType));
+                     } else {
+                            logger.debug(EELFLoggerDelegate.debugLogger,
+                                    "WidgetsController.getOnboardingApps - request must contain header 'X-Widgets-Type' with 'all' or 'managed'");
+                            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+                     }
+              }
+
+              EcompPortalUtils
+                      .logAndSerializeObject(logger, "/portalApi/widgets", "GET result =", response.getStatus());
+              return onboardingWidgets;
+       }
+
+       @PutMapping(value = {"/portalApi/widgets/{widgetId}"}, produces = MediaType.APPLICATION_JSON_VALUE)
+       public FieldsValidator putOnboardingWidget(Principal principal, HttpServletRequest request,
+               @PathVariable("widgetId") Long widgetId,
+               @RequestBody OnboardingWidget onboardingWidget, HttpServletResponse response) {
+              FnUser user = fnUserService.loadUserByUsername(principal.getName());
+              FieldsValidator fieldsValidator = null;
+              if (onboardingWidget != null) {
+                     if (!dataValidator.isValid(onboardingWidget)) {
+                            fieldsValidator = new FieldsValidator();
+                            fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
+                            return fieldsValidator;
+                     }
+              }
+
+              if (userHasPermissions(user, response, "putOnboardingWidget")) {
+                     assert onboardingWidget != null;
+                     onboardingWidget.setId(widgetId);
+                     onboardingWidget.normalize();
+                     fieldsValidator = widgetService.setOnboardingWidget(user, onboardingWidget);
+                     response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
+              }
+              EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/widgets/" + widgetId, "GET result =",
+                      response.getStatus());
+
+              return fieldsValidator;
+       }
+
+       private boolean userHasPermissions(FnUser user, HttpServletResponse response, String invocator) {
+              if (!adminRolesService.isSuperAdmin(user) && !adminRolesService.isAccountAdmin(user)) {
+                     EcompPortalUtils.setBadPermissions(user, response, invocator);
+                     return false;
+              }
+              return true;
+       }
+
+       @PostMapping(value = {"/portalApi/widgets"}, produces = MediaType.APPLICATION_JSON_VALUE)
+       public FieldsValidator postOnboardingWidget(Principal principal, HttpServletRequest request,
+               @RequestBody OnboardingWidget onboardingWidget, HttpServletResponse response) {
+              FnUser user = fnUserService.loadUserByUsername(principal.getName());
+              FieldsValidator fieldsValidator = null;
+
+              if (onboardingWidget != null) {
+                     if (!dataValidator.isValid(onboardingWidget)) {
+                            fieldsValidator = new FieldsValidator();
+                            fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
+                            return fieldsValidator;
+                     }
+              }
+
+              if (userHasPermissions(user, response, "postOnboardingWidget")) {
+                     onboardingWidget.setId(null);
+                     onboardingWidget.normalize();
+                     fieldsValidator = widgetService.setOnboardingWidget(user, onboardingWidget);
+                     response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
+              }
+
+              EcompPortalUtils
+                      .logAndSerializeObject(logger, "/portalApi/widgets", "POST result =", response.getStatus());
+              return fieldsValidator;
+       }
+
+       @DeleteMapping(value = {"/portalApi/widgets/{widgetId}"}, produces = MediaType.APPLICATION_JSON_VALUE)
+       public FieldsValidator deleteOnboardingWidget(Principal principal, HttpServletRequest request,
+               @PathVariable("widgetId") Long widgetId, HttpServletResponse response) {
+              FnUser user = fnUserService.loadUserByUsername(principal.getName());
+              FieldsValidator fieldsValidator = null;
+
+              if (userHasPermissions(user, response, "deleteOnboardingWidget")) {
+                     fieldsValidator = widgetService.deleteOnboardingWidget(user, widgetId);
+                     response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
+              }
+
+              EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/widgets/" + widgetId, "DELETE result =",
+                      response.getStatus());
+              return fieldsValidator;
+       }
+
+       @PutMapping(value = {"portalApi/widgetCatalogSelection"}, produces = MediaType.APPLICATION_JSON_VALUE)
+       public FieldsValidator putWidgetCatalogSelection(Principal principal, HttpServletRequest request,
+               @RequestBody WidgetCatalogPersonalization persRequest, HttpServletResponse response) throws IOException {
+              FieldsValidator result = new FieldsValidator();
+              FnUser user = fnUserService.loadUserByUsername(principal.getName());
+
+              if (persRequest != null) {
+                     if (!dataValidator.isValid(persRequest)) {
+                            result.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
+                            return result;
+                     }
+              }
+              try {
+                     if (persRequest.getWidgetId() == null || user == null) {
+                            EcompPortalUtils.setBadPermissions(user, response, "putWidgetCatalogSelection");
+                     } else {
+                            persUserWidgetService
+                                    .setPersUserAppValue(user, persRequest.getWidgetId(), persRequest.getSelect());
+                     }
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger, "Failed in putAppCatalogSelection", e);
+                     response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
+              }
+              result.setHttpStatusCode((long) HttpServletResponse.SC_OK);
+              return result;
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/ep/EpMicroserviceParameterDao.java b/portal-BE/src/main/java/org/onap/portal/dao/ep/EpMicroserviceParameterDao.java
new file mode 100644 (file)
index 0000000..4bcca7e
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.dao.ep;
+
+import java.util.List;
+import org.onap.portal.domain.db.ep.EpMicroserviceParameter;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+@Repository
+@Transactional
+public interface EpMicroserviceParameterDao extends JpaRepository<EpMicroserviceParameter, Long> {
+
+       @Query
+       void deleteByServiceId(@Param("SERVICEID") Long userId);
+       @Query
+       void deleteMicroserviceParameterById(@Param("PARAMID") Long userId);
+       @Query
+       List<EpMicroserviceParameter> getParametersById(@Param("SERVICEID") long serviceId);
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/ep/EpPersUserWidgetSelDao.java b/portal-BE/src/main/java/org/onap/portal/dao/ep/EpPersUserWidgetSelDao.java
new file mode 100644 (file)
index 0000000..899fc1f
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.dao.ep;
+
+import java.util.List;
+import java.util.Optional;
+import org.onap.portal.domain.db.ep.EpPersUserWidgetSel;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+@Repository
+@Transactional
+public interface EpPersUserWidgetSelDao extends JpaRepository<EpPersUserWidgetSel, Long> {
+
+       @Query
+       Optional<List<EpPersUserWidgetSel>> getEpPersUserWidgetSelForUserIdAndWidgetId(@Param("USERID") Long userId, @Param("WIDGETID") Long widgetId);
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/ep/EpWidgetCatalogParameterDao.java b/portal-BE/src/main/java/org/onap/portal/dao/ep/EpWidgetCatalogParameterDao.java
new file mode 100644 (file)
index 0000000..04c1232
--- /dev/null
@@ -0,0 +1,25 @@
+package org.onap.portal.dao.ep;
+
+import java.util.List;
+import java.util.Optional;
+import org.onap.portal.domain.db.ep.EpWidgetCatalogParameter;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+@Repository
+@Transactional
+public interface EpWidgetCatalogParameterDao extends JpaRepository<EpWidgetCatalogParameter, Long> {
+
+       @Query
+       Optional<List<EpWidgetCatalogParameter>> retrieveByParamId(@Param("PARAMID") Long paramId);
+
+       @Query
+       void deleteWidgetCatalogParameter(@Param("PARAMID") Long paramId);
+
+       @Query
+       Optional<List<EpWidgetCatalogParameter>> getUserParamById(@Param("WIDGETID") Long widgetId,
+               @Param("USERID") Long userId, @Param("PARAMID") Long paramId);
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/fn/EpWidgetCatalogDao.java b/portal-BE/src/main/java/org/onap/portal/dao/fn/EpWidgetCatalogDao.java
new file mode 100644 (file)
index 0000000..1e8de2b
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.dao.fn;
+
+import org.onap.portal.domain.db.ep.EpWidgetCatalog;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface EpWidgetCatalogDao extends JpaRepository<EpWidgetCatalog, Long> {
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/fn/FnAppDao.java b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnAppDao.java
new file mode 100644 (file)
index 0000000..616ee2d
--- /dev/null
@@ -0,0 +1,12 @@
+package org.onap.portal.dao.fn;
+
+import org.onap.portal.domain.db.fn.FnApp;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+@Repository
+@Transactional
+public interface FnAppDao extends JpaRepository<FnApp, Long> {
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/fn/FnWidgetDao.java b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnWidgetDao.java
new file mode 100644 (file)
index 0000000..a47a1a0
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.dao.fn;
+
+import org.onap.portal.domain.db.fn.FnWidget;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+@Repository
+@Transactional
+public interface FnWidgetDao extends JpaRepository<FnWidget, Long> {
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/builder/FnUserBuilder.java b/portal-BE/src/main/java/org/onap/portal/domain/builder/FnUserBuilder.java
deleted file mode 100644 (file)
index ccf20aa..0000000
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- * ============LICENSE_START==========================================
- * ONAP Portal
- * ===================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * ===================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ===================================================================
- *
- * 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
- *
- * 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============================================
- *
- *
- */
-
-package org.onap.portal.domain.builder;
-
-import java.time.LocalDateTime;
-import java.util.Set;
-import javax.validation.Valid;
-import javax.validation.constraints.Digits;
-import javax.validation.constraints.Email;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.PastOrPresent;
-import javax.validation.constraints.Size;
-import org.hibernate.validator.constraints.SafeHtml;
-import org.onap.portal.domain.db.cr.CrReportFileHistory;
-import org.onap.portal.domain.db.ep.EpPersUserWidgetPlacement;
-import org.onap.portal.domain.db.ep.EpPersUserWidgetSel;
-import org.onap.portal.domain.db.ep.EpUserNotification;
-import org.onap.portal.domain.db.ep.EpUserRolesRequest;
-import org.onap.portal.domain.db.ep.EpWidgetCatalogParameter;
-import org.onap.portal.domain.db.fn.FnAuditLog;
-import org.onap.portal.domain.db.fn.FnLanguage;
-import org.onap.portal.domain.db.fn.FnLuAlertMethod;
-import org.onap.portal.domain.db.fn.FnLuTimezone;
-import org.onap.portal.domain.db.fn.FnMenuFunctional;
-import org.onap.portal.domain.db.fn.FnOrg;
-import org.onap.portal.domain.db.fn.FnPersUserAppSel;
-import org.onap.portal.domain.db.fn.FnRole;
-import org.onap.portal.domain.db.fn.FnUser;
-import org.onap.portal.domain.db.fn.FnUserRole;
-import org.springframework.stereotype.Component;
-
-@Component
-public class FnUserBuilder {
-
-       private @Digits(integer = 11, fraction = 0) Long userId;
-       private @Valid FnOrg orgId;
-       private @Valid FnUser managerId;
-       private @Size(max = 50)
-       @SafeHtml String firstName;
-       private @Size(max = 50)
-       @SafeHtml String middleName;
-       private @Size(max = 50)
-       @SafeHtml String lastName;
-       private @Size(max = 25)
-       @SafeHtml String phone;
-       private @Size(max = 25)
-       @SafeHtml String fax;
-       private @Size(max = 25)
-       @SafeHtml String cellular;
-       private @Size(max = 50) @Email
-       @SafeHtml String email;
-       private @Digits(integer = 11, fraction = 0) Long addressId;
-       private FnLuAlertMethod alertMethodCd;
-       private @Size(max = 20)
-       @SafeHtml String hrid;
-       private @Size(max = 20)
-       @SafeHtml String orgUserId;
-       private @Size(max = 30)
-       @SafeHtml String org_code;
-       private @Size(max = 25)
-       @SafeHtml String loginId;
-       private @Size(max = 100)
-       @SafeHtml String loginPwd;
-       private @PastOrPresent LocalDateTime lastLoginDate;
-       private @Size(max = 1)
-       @SafeHtml
-       @NotNull(message = "activeYn must not be null") String activeYn;
-       private @Valid FnUser createdId;
-       private @PastOrPresent LocalDateTime createdDate;
-       private @Valid FnUser modifiedId;
-       private @PastOrPresent LocalDateTime modifiedDate;
-       private @Size(max = 1)
-       @SafeHtml
-       @NotNull(message = "isInternalYn must not be null") String isInternalYn;
-       private @Size(max = 100)
-       @SafeHtml String addressLine1;
-       private @Size(max = 100)
-       @SafeHtml String addressLine2;
-       private @Size(max = 50)
-       @SafeHtml String city;
-       private @Size(max = 3)
-       @SafeHtml String stateCd;
-       private @Size(max = 11)
-       @SafeHtml String zipCode;
-       private @Size(max = 3)
-       @SafeHtml String countryCd;
-       private @Size(max = 8)
-       @SafeHtml String locationClli;
-       private @Size(max = 20)
-       @SafeHtml String orgManagerUserId;
-       private @Size(max = 100)
-       @SafeHtml String company;
-       private @Size(max = 200)
-       @SafeHtml String departmentName;
-       private @Size(max = 100)
-       @SafeHtml String jobTitle;
-       private @Valid FnLuTimezone timezone;
-       private @Size(max = 25)
-       @SafeHtml String department;
-       private @Size(max = 25)
-       @SafeHtml String businessUnit;
-       private @Size(max = 100)
-       @SafeHtml String businessUnitName;
-       private @Size(max = 25)
-       @SafeHtml String cost_center;
-       private @Size(max = 10)
-       @SafeHtml String finLocCode;
-       private @Size(max = 10)
-       @SafeHtml String siloStatus;
-       private @Valid @NotNull(message = "languageId must not be null") FnLanguage languageId;
-       private @NotNull(message = "guest must not be null") boolean guest;
-       private Set<CrReportFileHistory> crReportFileHistorie;
-       private Set<FnRole> fnRoles;
-       private Set<FnMenuFunctional> fnRoleList;
-       private Set<FnAuditLog> fnAuditLogs;
-       private Set<FnUser> fnUsersCreatedId;
-       private Set<FnUser> fnUsersManagerId;
-       private Set<FnUser> fnUsersModifiedId;
-       private Set<EpUserRolesRequest> epUserRolesRequests;
-       private Set<FnPersUserAppSel> persUserAppSels;
-       private Set<EpWidgetCatalogParameter> epWidgetCatalogParameters;
-       private Set<EpPersUserWidgetPlacement> epPersUserWidgetPlacements;
-       private Set<EpPersUserWidgetSel> epPersUserWidgetSels;
-       private Set<FnUserRole> fnUserRoles;
-       private Set<EpUserNotification> epUserNotifications;
-
-       public FnUserBuilder setUserId(@Digits(integer = 11, fraction = 0) Long userId) {
-              this.userId = userId;
-              return this;
-       }
-
-       public FnUserBuilder setOrgId(@Valid FnOrg orgId) {
-              this.orgId = orgId;
-              return this;
-       }
-
-       public FnUserBuilder setManagerId(@Valid FnUser managerId) {
-              this.managerId = managerId;
-              return this;
-       }
-
-       public FnUserBuilder setFirstName(@Size(max = 50) @SafeHtml String firstName) {
-              this.firstName = firstName;
-              return this;
-       }
-
-       public FnUserBuilder setMiddleName(@Size(max = 50) @SafeHtml String middleName) {
-              this.middleName = middleName;
-              return this;
-       }
-
-       public FnUserBuilder setLastName(@Size(max = 50) @SafeHtml String lastName) {
-              this.lastName = lastName;
-              return this;
-       }
-
-       public FnUserBuilder setPhone(@Size(max = 25) @SafeHtml String phone) {
-              this.phone = phone;
-              return this;
-       }
-
-       public FnUserBuilder setFax(@Size(max = 25) @SafeHtml String fax) {
-              this.fax = fax;
-              return this;
-       }
-
-       public FnUserBuilder setCellular(@Size(max = 25) @SafeHtml String cellular) {
-              this.cellular = cellular;
-              return this;
-       }
-
-       public FnUserBuilder setEmail(@Size(max = 50) @Email @SafeHtml String email) {
-              this.email = email;
-              return this;
-       }
-
-       public FnUserBuilder setAddressId(@Digits(integer = 11, fraction = 0) Long addressId) {
-              this.addressId = addressId;
-              return this;
-       }
-
-       public FnUserBuilder setAlertMethodCd(FnLuAlertMethod alertMethodCd) {
-              this.alertMethodCd = alertMethodCd;
-              return this;
-       }
-
-       public FnUserBuilder setHrid(@Size(max = 20) @SafeHtml String hrid) {
-              this.hrid = hrid;
-              return this;
-       }
-
-       public FnUserBuilder setOrgUserId(@Size(max = 20) @SafeHtml String orgUserId) {
-              this.orgUserId = orgUserId;
-              return this;
-       }
-
-       public FnUserBuilder setOrg_code(@Size(max = 30) @SafeHtml String org_code) {
-              this.org_code = org_code;
-              return this;
-       }
-
-       public FnUserBuilder setLoginId(@Size(max = 25) @SafeHtml String loginId) {
-              this.loginId = loginId;
-              return this;
-       }
-
-       public FnUserBuilder setLoginPwd(@Size(max = 100) @SafeHtml String loginPwd) {
-              this.loginPwd = loginPwd;
-              return this;
-       }
-
-       public FnUserBuilder setLastLoginDate(@PastOrPresent LocalDateTime lastLoginDate) {
-              this.lastLoginDate = lastLoginDate;
-              return this;
-       }
-
-       public FnUserBuilder setActiveYn(
-               @Size(max = 1) @SafeHtml @NotNull(message = "activeYn must not be null") String activeYn) {
-              this.activeYn = activeYn;
-              return this;
-       }
-
-       public FnUserBuilder setCreatedId(@Valid FnUser createdId) {
-              this.createdId = createdId;
-              return this;
-       }
-
-       public FnUserBuilder setCreatedDate(@PastOrPresent LocalDateTime createdDate) {
-              this.createdDate = createdDate;
-              return this;
-       }
-
-       public FnUserBuilder setModifiedId(@Digits(integer = 11, fraction = 0) FnUser modifiedId) {
-              this.modifiedId = modifiedId;
-              return this;
-       }
-
-       public FnUserBuilder setModifiedDate(@PastOrPresent LocalDateTime modifiedDate) {
-              this.modifiedDate = modifiedDate;
-              return this;
-       }
-
-       public FnUserBuilder setIsInternalYn(
-               @Size(max = 1) @SafeHtml @NotNull(message = "isInternalYn must not be null") String isInternalYn) {
-              this.isInternalYn = isInternalYn;
-              return this;
-       }
-
-       public FnUserBuilder setAddressLine1(@Size(max = 100) @SafeHtml String addressLine1) {
-              this.addressLine1 = addressLine1;
-              return this;
-       }
-
-       public FnUserBuilder setAddressLine2(@Size(max = 100) @SafeHtml String addressLine2) {
-              this.addressLine2 = addressLine2;
-              return this;
-       }
-
-       public FnUserBuilder setCity(@Size(max = 50) @SafeHtml String city) {
-              this.city = city;
-              return this;
-       }
-
-       public FnUserBuilder setStateCd(@Size(max = 3) @SafeHtml String stateCd) {
-              this.stateCd = stateCd;
-              return this;
-       }
-
-       public FnUserBuilder setZipCode(@Size(max = 11) @SafeHtml String zipCode) {
-              this.zipCode = zipCode;
-              return this;
-       }
-
-       public FnUserBuilder setCountryCd(@Size(max = 3) @SafeHtml String countryCd) {
-              this.countryCd = countryCd;
-              return this;
-       }
-
-       public FnUserBuilder setLocationClli(@Size(max = 8) @SafeHtml String locationClli) {
-              this.locationClli = locationClli;
-              return this;
-       }
-
-       public FnUserBuilder setOrgManagerUserId(@Size(max = 20) @SafeHtml String orgManagerUserId) {
-              this.orgManagerUserId = orgManagerUserId;
-              return this;
-       }
-
-       public FnUserBuilder setCompany(@Size(max = 100) @SafeHtml String company) {
-              this.company = company;
-              return this;
-       }
-
-       public FnUserBuilder setDepartmentName(@Size(max = 200) @SafeHtml String departmentName) {
-              this.departmentName = departmentName;
-              return this;
-       }
-
-       public FnUserBuilder setJobTitle(@Size(max = 100) @SafeHtml String jobTitle) {
-              this.jobTitle = jobTitle;
-              return this;
-       }
-
-       public FnUserBuilder setTimezone(@Valid FnLuTimezone timezone) {
-              this.timezone = timezone;
-              return this;
-       }
-
-       public FnUserBuilder setDepartment(@Size(max = 25) @SafeHtml String department) {
-              this.department = department;
-              return this;
-       }
-
-       public FnUserBuilder setBusinessUnit(@Size(max = 25) @SafeHtml String businessUnit) {
-              this.businessUnit = businessUnit;
-              return this;
-       }
-
-       public FnUserBuilder setBusinessUnitName(@Size(max = 100) @SafeHtml String businessUnitName) {
-              this.businessUnitName = businessUnitName;
-              return this;
-       }
-
-       public FnUserBuilder setCost_center(@Size(max = 25) @SafeHtml String cost_center) {
-              this.cost_center = cost_center;
-              return this;
-       }
-
-       public FnUserBuilder setFinLocCode(@Size(max = 10) @SafeHtml String finLocCode) {
-              this.finLocCode = finLocCode;
-              return this;
-       }
-
-       public FnUserBuilder setSiloStatus(@Size(max = 10) @SafeHtml String siloStatus) {
-              this.siloStatus = siloStatus;
-              return this;
-       }
-
-       public FnUserBuilder setLanguageId(
-               @Valid @NotNull(message = "languageId must not be null") FnLanguage languageId) {
-              this.languageId = languageId;
-              return this;
-       }
-
-       public FnUserBuilder setGuest(@NotNull(message = "guest must not be null") boolean guest) {
-              this.guest = guest;
-              return this;
-       }
-
-       public FnUserBuilder setCrReportFileHistorie(Set<CrReportFileHistory> crReportFileHistorie) {
-              this.crReportFileHistorie = crReportFileHistorie;
-              return this;
-       }
-
-       public FnUserBuilder setFnRoles(Set<FnRole> fnRoles) {
-              this.fnRoles = fnRoles;
-              return this;
-       }
-
-       public FnUserBuilder setFnRoleList(Set<FnMenuFunctional> fnRoleList) {
-              this.fnRoleList = fnRoleList;
-              return this;
-       }
-
-       public FnUserBuilder setFnAuditLogs(Set<FnAuditLog> fnAuditLogs) {
-              this.fnAuditLogs = fnAuditLogs;
-              return this;
-       }
-
-       public FnUserBuilder setFnUsersCreatedId(Set<FnUser> fnUsersCreatedId) {
-              this.fnUsersCreatedId = fnUsersCreatedId;
-              return this;
-       }
-
-       public FnUserBuilder setFnUsersManagerId(Set<FnUser> fnUsersManagerId) {
-              this.fnUsersManagerId = fnUsersManagerId;
-              return this;
-       }
-
-       public FnUserBuilder setFnUsersModifiedId(Set<FnUser> fnUsersModifiedId) {
-              this.fnUsersModifiedId = fnUsersModifiedId;
-              return this;
-       }
-
-       public FnUserBuilder setEpUserRolesRequests(Set<EpUserRolesRequest> epUserRolesRequests) {
-              this.epUserRolesRequests = epUserRolesRequests;
-              return this;
-       }
-
-       public FnUserBuilder setPersUserAppSels(Set<FnPersUserAppSel> persUserAppSels) {
-              this.persUserAppSels = persUserAppSels;
-              return this;
-       }
-
-       public FnUserBuilder setEpWidgetCatalogParameters(Set<EpWidgetCatalogParameter> epWidgetCatalogParameters) {
-              this.epWidgetCatalogParameters = epWidgetCatalogParameters;
-              return this;
-       }
-
-       public FnUserBuilder setEpPersUserWidgetPlacements(Set<EpPersUserWidgetPlacement> epPersUserWidgetPlacements) {
-              this.epPersUserWidgetPlacements = epPersUserWidgetPlacements;
-              return this;
-       }
-
-       public FnUserBuilder setEpPersUserWidgetSels(Set<EpPersUserWidgetSel> epPersUserWidgetSels) {
-              this.epPersUserWidgetSels = epPersUserWidgetSels;
-              return this;
-       }
-
-       public FnUserBuilder setFnUserRoles(Set<FnUserRole> fnUserRoles) {
-              this.fnUserRoles = fnUserRoles;
-              return this;
-       }
-
-       public FnUserBuilder setEpUserNotifications(Set<EpUserNotification> epUserNotifications) {
-              this.epUserNotifications = epUserNotifications;
-              return this;
-       }
-
-       public FnUser createFnUser() {
-              return new FnUser(userId, orgId, managerId, firstName, middleName, lastName, phone, fax, cellular, email,
-                      addressId, alertMethodCd, hrid, orgUserId, org_code, loginId, loginPwd, lastLoginDate, activeYn,
-                      createdId, createdDate, modifiedId, modifiedDate, isInternalYn, addressLine1, addressLine2, city,
-                      stateCd, zipCode, countryCd, locationClli, orgManagerUserId, company, departmentName, jobTitle,
-                      timezone, department, businessUnit, businessUnitName, cost_center, finLocCode, siloStatus,
-                      languageId, guest, crReportFileHistorie, fnRoles, fnRoleList, fnAuditLogs, fnUsersCreatedId,
-                      fnUsersManagerId, fnUsersModifiedId, epUserRolesRequests, persUserAppSels,
-                      epWidgetCatalogParameters, epPersUserWidgetPlacements, epPersUserWidgetSels, fnUserRoles,
-                      epUserNotifications);
-       }
-}
\ No newline at end of file
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/builder/FnUserDtoBuilder.java b/portal-BE/src/main/java/org/onap/portal/domain/builder/FnUserDtoBuilder.java
deleted file mode 100644 (file)
index c6075dd..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * ============LICENSE_START==========================================
- * ONAP Portal
- * ===================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * ===================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ===================================================================
- *
- * 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
- *
- * 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============================================
- *
- *
- */
-
-package org.onap.portal.domain.builder;
-
-import java.time.LocalDateTime;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-import org.onap.portal.domain.dto.fn.FnUserDto;
-import org.springframework.stereotype.Component;
-
-@Component
-@NoArgsConstructor
-@AllArgsConstructor
-@Getter
-@Setter
-public class FnUserDtoBuilder {
-
-       private Long userId;
-       private Long orgId;
-       private Long managerId;
-       private String firstName;
-       private String middleName;
-       private String lastName;
-       private String phone;
-       private String fax;
-       private String cellular;
-       private String email;
-       private Long addressId;
-       private String alertMethodCd;
-       private String hrid;
-       private String orgUserId;
-       private String org_code;
-       private String loginId;
-       private String loginPwd;
-       private LocalDateTime lastLoginDate;
-       private String activeYn;
-       private Long createdId;
-       private LocalDateTime createdDate;
-       private Long modifiedId;
-       private LocalDateTime modifiedDate;
-       private String isInternalYn;
-       private String addressLine1;
-       private String addressLine2;
-       private String city;
-       private String stateCd;
-       private String zipCode;
-       private String countryCd;
-       private String locationClli;
-       private String orgManagerUserId;
-       private String company;
-       private String departmentName;
-       private String jobTitle;
-       private Long timezone;
-       private String department;
-       private String businessUnit;
-       private String businessUnitName;
-       private String cost_center;
-       private String finLocCode;
-       private String siloStatus;
-       private Long languageId;
-       private boolean guest;
-
-       public FnUserDtoBuilder setUserId(Long userId) {
-              this.userId = userId;
-              return this;
-       }
-
-       public FnUserDtoBuilder setOrgId(Long orgId) {
-              this.orgId = orgId;
-              return this;
-       }
-
-       public FnUserDtoBuilder setManagerId(Long managerId) {
-              this.managerId = managerId;
-              return this;
-       }
-
-       public FnUserDtoBuilder setFirstName(String firstName) {
-              this.firstName = firstName;
-              return this;
-       }
-
-       public FnUserDtoBuilder setMiddleName(String middleName) {
-              this.middleName = middleName;
-              return this;
-       }
-
-       public FnUserDtoBuilder setLastName(String lastName) {
-              this.lastName = lastName;
-              return this;
-       }
-
-       public FnUserDtoBuilder setPhone(String phone) {
-              this.phone = phone;
-              return this;
-       }
-
-       public FnUserDtoBuilder setFax(String fax) {
-              this.fax = fax;
-              return this;
-       }
-
-       public FnUserDtoBuilder setCellular(String cellular) {
-              this.cellular = cellular;
-              return this;
-       }
-
-       public FnUserDtoBuilder setEmail(String email) {
-              this.email = email;
-              return this;
-       }
-
-       public FnUserDtoBuilder setAddressId(Long addressId) {
-              this.addressId = addressId;
-              return this;
-       }
-
-       public FnUserDtoBuilder setAlertMethodCd(String alertMethodCd) {
-              this.alertMethodCd = alertMethodCd;
-              return this;
-       }
-
-       public FnUserDtoBuilder setHrid(String hrid) {
-              this.hrid = hrid;
-              return this;
-       }
-
-       public FnUserDtoBuilder setOrgUserId(String orgUserId) {
-              this.orgUserId = orgUserId;
-              return this;
-       }
-
-       public FnUserDtoBuilder setOrg_code(String org_code) {
-              this.org_code = org_code;
-              return this;
-       }
-
-       public FnUserDtoBuilder setLoginId(String loginId) {
-              this.loginId = loginId;
-              return this;
-       }
-
-       public FnUserDtoBuilder setLoginPwd(String loginPwd) {
-              this.loginPwd = loginPwd;
-              return this;
-       }
-
-       public FnUserDtoBuilder setLastLoginDate(LocalDateTime lastLoginDate) {
-              this.lastLoginDate = lastLoginDate;
-              return this;
-       }
-
-       public FnUserDtoBuilder setActiveYn(String activeYn) {
-              this.activeYn = activeYn;
-              return this;
-       }
-
-       public FnUserDtoBuilder setCreatedId(Long createdId) {
-              this.createdId = createdId;
-              return this;
-       }
-
-       public FnUserDtoBuilder setCreatedDate(LocalDateTime createdDate) {
-              this.createdDate = createdDate;
-              return this;
-       }
-
-       public FnUserDtoBuilder setModifiedId(Long modifiedId) {
-              this.modifiedId = modifiedId;
-              return this;
-       }
-
-       public FnUserDtoBuilder setModifiedDate(LocalDateTime modifiedDate) {
-              this.modifiedDate = modifiedDate;
-              return this;
-       }
-
-       public FnUserDtoBuilder setIsInternalYn(String isInternalYn) {
-              this.isInternalYn = isInternalYn;
-              return this;
-       }
-
-       public FnUserDtoBuilder setAddressLine1(String addressLine1) {
-              this.addressLine1 = addressLine1;
-              return this;
-       }
-
-       public FnUserDtoBuilder setAddressLine2(String addressLine2) {
-              this.addressLine2 = addressLine2;
-              return this;
-       }
-
-       public FnUserDtoBuilder setCity(String city) {
-              this.city = city;
-              return this;
-       }
-
-       public FnUserDtoBuilder setStateCd(String stateCd) {
-              this.stateCd = stateCd;
-              return this;
-       }
-
-       public FnUserDtoBuilder setZipCode(String zipCode) {
-              this.zipCode = zipCode;
-              return this;
-       }
-
-       public FnUserDtoBuilder setCountryCd(String countryCd) {
-              this.countryCd = countryCd;
-              return this;
-       }
-
-       public FnUserDtoBuilder setLocationClli(String locationClli) {
-              this.locationClli = locationClli;
-              return this;
-       }
-
-       public FnUserDtoBuilder setOrgManagerUserId(String orgManagerUserId) {
-              this.orgManagerUserId = orgManagerUserId;
-              return this;
-       }
-
-       public FnUserDtoBuilder setCompany(String company) {
-              this.company = company;
-              return this;
-       }
-
-       public FnUserDtoBuilder setDepartmentName(String departmentName) {
-              this.departmentName = departmentName;
-              return this;
-       }
-
-       public FnUserDtoBuilder setJobTitle(String jobTitle) {
-              this.jobTitle = jobTitle;
-              return this;
-       }
-
-       public FnUserDtoBuilder setTimezone(Long timezone) {
-              this.timezone = timezone;
-              return this;
-       }
-
-       public FnUserDtoBuilder setDepartment(String department) {
-              this.department = department;
-              return this;
-       }
-
-       public FnUserDtoBuilder setBusinessUnit(String businessUnit) {
-              this.businessUnit = businessUnit;
-              return this;
-       }
-
-       public FnUserDtoBuilder setBusinessUnitName(String businessUnitName) {
-              this.businessUnitName = businessUnitName;
-              return this;
-       }
-
-       public FnUserDtoBuilder setCost_center(String cost_center) {
-              this.cost_center = cost_center;
-              return this;
-       }
-
-       public FnUserDtoBuilder setFinLocCode(String finLocCode) {
-              this.finLocCode = finLocCode;
-              return this;
-       }
-
-       public FnUserDtoBuilder setSiloStatus(String siloStatus) {
-              this.siloStatus = siloStatus;
-              return this;
-       }
-
-       public FnUserDtoBuilder setLanguageId(Long languageId) {
-              this.languageId = languageId;
-              return this;
-       }
-
-       public FnUserDtoBuilder setGuest(boolean guest) {
-              this.guest = guest;
-              return this;
-       }
-
-       public FnUserDto createFnUserDto() {
-              return new FnUserDto(userId, orgId, managerId, firstName, middleName, lastName, phone, fax, cellular,
-                      email, addressId, alertMethodCd, hrid, orgUserId, org_code, loginId, loginPwd, lastLoginDate,
-                      activeYn, createdId, createdDate, modifiedId, modifiedDate, isInternalYn, addressLine1,
-                      addressLine2, city, stateCd, zipCode, countryCd, locationClli, orgManagerUserId, company,
-                      departmentName, jobTitle, timezone, department, businessUnit, businessUnitName, cost_center,
-                      finLocCode, siloStatus, languageId, guest);
-       }
-}
\ No newline at end of file
index dee9aa5..32e99ac 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -73,7 +74,7 @@ CREATE TABLE `schema_info` (
 @Getter
 @Setter
 @Entity
-public class SchemaInfo {
+public class SchemaInfo implements Serializable {
        @Id
        @Column(name = "SCHEMA_ID", length = 25, nullable = false)
        @Size(max = 25)
index 1638d4e..9f50f3b 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -66,7 +67,7 @@ import org.hibernate.annotations.Subselect;
         + " from fn_restricted_url r")
 @Getter
 @NoArgsConstructor
-public class VUrlAccess {
+public class VUrlAccess implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", nullable = false)
index a1d4a9a..6c8296a 100644 (file)
@@ -74,7 +74,7 @@ CREATE TABLE `cr_favorite_reports` (
 @Setter
 @IdClass(CrFavoriteReportsId.class)
 @Entity
-public class CrFavoriteReports {
+public class CrFavoriteReports implements Serializable{
        @Id
        @Column(name = "user_id", length = 11, nullable = false)
        @Digits(integer = 11, fraction = 0)
index c96806a..3dec4ee 100644 (file)
@@ -46,7 +46,6 @@ import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.validation.constraints.Digits;
-import javax.validation.constraints.Positive;
 import javax.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -76,7 +75,6 @@ public class CrFilehistLog {
        @Id
        @Column(name = "schedule_id", length = 11, nullable = false)
        @Digits(integer = 11, fraction = 0)
-       @Positive
        private Long scheduledId;
        //TODO URL @URL
        @URL
index 1791eae..44e3902 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.Set;
 import javax.persistence.CascadeType;
@@ -90,7 +91,7 @@ CREATE TABLE `cr_folder` (
 @Getter
 @Setter
 @Entity
-public class CrFolder {
+public class CrFolder implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "folder_id", length = 11, nullable = false)
index 44507ac..05ec246 100644 (file)
@@ -41,6 +41,7 @@
 package org.onap.portal.domain.db.cr;
 
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -77,7 +78,7 @@ CREATE TABLE `cr_folder_access` (
 @Getter
 @Setter
 @Entity
-public class CrFolderAccess {
+public class CrFolderAccess implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "folder_access_id", length = 11, nullable = false)
index 21ac92b..94201c5 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -77,7 +78,7 @@ CREATE TABLE `cr_lu_file_type` (
 @Getter
 @Setter
 @Entity
-public class CrLuFileType {
+public class CrLuFileType implements Serializable {
        @Id
        @Column(name = "lookup_id", length = 2, nullable = false)
        @Digits(integer = 2, fraction = 0)
index ed153b4..b81fc3a 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -68,7 +69,7 @@ CREATE TABLE `cr_raptor_action_img` (
 @Getter
 @Setter
 @Entity
-public class CrRaptorActionImg {
+public class CrRaptorActionImg implements Serializable {
        @Id
        @Column(name = "image_id", length = 100, nullable = false)
        @Size(max = 100)
index 129e6e0..c75733e 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -66,7 +67,7 @@ CREATE TABLE `cr_raptor_pdf_img` (
 @Getter
 @Setter
 @Entity
-public class CrRaptorPdfImg {
+public class CrRaptorPdfImg implements Serializable {
        @Id
        @Column(name = "image_id", length = 100, nullable = false)
        @Size(max = 100)
index 95d991f..fe6e77a 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -68,7 +69,7 @@ CREATE TABLE `cr_remote_schema_info` (
 @Getter
 @Setter
 @Entity
-public class CrRemoteSchemaInfo {
+public class CrRemoteSchemaInfo implements Serializable {
        @Id
        @Column(name = "schema_prefix", length = 5, nullable = false)
        @Size(max = 5)
index 368bd0f..5c3a21a 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -74,7 +75,7 @@ CREATE TABLE `cr_report_dwnld_log` (
 @Getter
 @Setter
 @Entity
-public class CrReportDwnldLog {
+public class CrReportDwnldLog implements Serializable {
        @Id
        @Column(name = "user_id", nullable = false)
        @Digits(integer = 11, fraction = 0)
index da87cf7..e43c5c7 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -87,7 +88,7 @@ CREATE TABLE `cr_report_email_sent_log` (
 @Getter
 @Setter
 @Entity
-public class CrReportEmailSentLog {
+public class CrReportEmailSentLog implements Serializable {
        @Id
        @Column(name = "log_id", nullable = false)
        @Digits(integer = 11, fraction = 0)
index 510e195..05696ab 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.Set;
 import javax.persistence.CascadeType;
@@ -104,7 +105,7 @@ CREATE TABLE `cr_report_file_history` (
 @Getter
 @Setter
 @Entity
-public class CrReportFileHistory {
+public class CrReportFileHistory implements Serializable {
        @Id
        @Column(name = "hist_id", nullable = false, length = 11)
        @Digits(integer = 11, fraction = 0)
index 95088b6..30a0b27 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -84,7 +85,7 @@ CREATE TABLE `cr_report_log` (
 @Getter
 @Setter
 @Entity
-public class CrReportLog {
+public class CrReportLog implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @JoinColumn(name = "id")
index 6d09aa4..611dd19 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.Set;
 import javax.persistence.CascadeType;
@@ -99,7 +100,7 @@ CREATE TABLE `cr_report_schedule` (
 @Getter
 @Setter
 @Entity
-public class CrReportSchedule {
+public class CrReportSchedule implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "schedule_id", length = 11, nullable = false)
index fe8e4b1..237956c 100644 (file)
@@ -82,7 +82,7 @@ CREATE TABLE `cr_report_schedule_users` (
 @Setter
 @Entity
 @IdClass(CrReportScheduleUsersId.class)
-public class CrReportScheduleUsers {
+public class CrReportScheduleUsers implements Serializable{
        @Id
        @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "schedule_id", nullable = false)
index 88f056b..a886bfd 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -67,7 +68,7 @@ CREATE TABLE `cr_report_template_map` (
 @Getter
 @Setter
 @Entity
-public class CrReportTemplateMap {
+public class CrReportTemplateMap implements Serializable {
        @Id
        @Column(name = "report_id", nullable = false)
        @NotNull
index d6f8ac6..015a477 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -69,7 +70,7 @@ CREATE TABLE `cr_schedule_activity_log` (
 @Getter
 @Setter
 @Entity
-public class CrScheduleActivityLog {
+public class CrScheduleActivityLog implements Serializable {
        @Id
        @Column(name = "schedule_id", nullable = false)
        @Digits(integer = 11, fraction = 0)
index b4881ca..eb1117c 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -82,7 +83,7 @@ CREATE TABLE `cr_table_join` (
 @Getter
 @Setter
 @Entity
-public class CrTableJoin {
+public class CrTableJoin implements Serializable {
        //TODO Unique constrains {srcTableName, destTableName}?
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
index 445e87a..7b6a301 100644 (file)
@@ -78,7 +78,7 @@ CREATE TABLE `cr_table_role` (
 @Setter
 @Entity
 @IdClass(CrTableRoleId.class)
-public class CrTableRole {
+public class CrTableRole implements Serializable{
        @Id
        @Valid
        @JoinColumn(name = "table_name", nullable = false)
index ebe15c4..791e561 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.cr;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -76,7 +77,7 @@ CREATE TABLE `cr_table_source` (
 @Getter
 @Setter
 @Entity
-public class CrTableSource {
+public class CrTableSource implements Serializable {
        @Id
        @Column(name = "table_name", length = 30, nullable = false)
        @Size(max = 30)
index 0f2f950..d37c71e 100644 (file)
@@ -84,7 +84,7 @@ CREATE TABLE `ep_app_function` (
 @IdClass(EpAppFunctionId.class)
 @NoArgsConstructor
 @AllArgsConstructor
-public class EpAppFunction {
+public class EpAppFunction implements Serializable{
        @Id
        @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
        @JoinColumn(name = "app_id")
index c41c55f..8a60688 100644 (file)
@@ -41,6 +41,7 @@
 package org.onap.portal.domain.db.ep;
 
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -91,7 +92,7 @@ CREATE TABLE `ep_app_role_function` (
 @Getter
 @Setter
 @Entity
-public class EpAppRoleFunction {
+public class EpAppRoleFunction implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", length = 11, nullable = false, columnDefinition = "int(11) NOT NULL AUTO_INCREMENT")
index 130e987..c65c0d3 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -77,7 +78,7 @@ CREATE TABLE `ep_basic_auth_account` (
 @Getter
 @Setter
 @Entity
-public class EpBasicAuthAccount {
+public class EpBasicAuthAccount implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index ed1fabd..ccb1bb2 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -74,7 +75,7 @@ CREATE TABLE `ep_endpoints` (
 @Getter
 @Setter
 @Entity
-public class EpEndpoints {
+public class EpEndpoints implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index 6341186..9cf7d36 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -92,7 +93,7 @@ CREATE TABLE `ep_endpoints_basic_auth_account` (
 @Getter
 @Setter
 @Entity
-public class EpEndpointsBasicAuthAccount {
+public class EpEndpointsBasicAuthAccount implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index 2388c53..6c6b39c 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -88,11 +89,10 @@ CREATE TABLE `ep_microservice` (
 })
 @NoArgsConstructor
 @AllArgsConstructor
-
 @Getter
 @Setter
 @Entity
-public class EpMicroservice {
+public class EpMicroservice implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", length = 11, nullable = false)
index 30de49a..554dd7b 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -78,7 +79,14 @@ CREATE TABLE `ep_microservice_parameter` (
 @NamedQueries({
         @NamedQuery(
                 name = "EpMicroserviceParameter.deleteByServiceId",
-                query = "FROM EpMicroserviceParameter WHERE service_id =:serviceId")
+                query = "DELETE FROM EpMicroserviceParameter WHERE service_id =:SERVICEID"),
+        @NamedQuery(
+                name = "EpMicroserviceParameter.getParametersById",
+                query = "FROM EpMicroserviceParameter WHERE service_id =:SERVICEID"),
+        @NamedQuery(
+                name = "EpMicroserviceParameter.deleteMicroserviceParameterById",
+                query = "DELETE FROM EpMicroserviceParameter WHERE id =:PARAMID"
+        )
 })
 
 @Table(name = "ep_microservice_parameter", indexes = {
@@ -86,11 +94,10 @@ CREATE TABLE `ep_microservice_parameter` (
 })
 @NoArgsConstructor
 @AllArgsConstructor
-
 @Getter
 @Setter
 @Entity
-public class EpMicroserviceParameter {
+public class EpMicroserviceParameter implements Serializable {
 
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
index d865fa4..3d929d8 100644 (file)
@@ -69,12 +69,11 @@ CREATE TABLE `ep_ml_model` (
 @Table(name = "ep_ml_model")
 @NoArgsConstructor
 @AllArgsConstructor
-
 @Getter
 @Setter
 @Entity
 @IdClass(EpMlModelId.class)
-public class EpMlModel {
+public class EpMlModel implements Serializable{
        @Id
        @Digits(integer = 11, fraction = 0)
        @Column(name = "group_id", length = 11, nullable = false)
index 08c5fdf..6422a27 100644 (file)
@@ -69,12 +69,11 @@ CREATE TABLE `ep_ml_rec` (
 @Table(name = "ep_ml_rec")
 @NoArgsConstructor
 @AllArgsConstructor
-
 @Getter
 @Setter
 @Entity
 @IdClass(EpMlRecId.class)
-public class EpMlRec {
+public class EpMlRec implements Serializable{
        @Id
        @Column(name = "time_stamp", nullable = false, columnDefinition = "datetime DEFAULT current_timestamp()")
        private LocalDateTime timeStamp;
index c47f3d3..7febda8 100644 (file)
@@ -71,12 +71,11 @@ CREATE TABLE `ep_ml_user` (
 @Table(name = "ep_ml_user")
 @NoArgsConstructor
 @AllArgsConstructor
-
 @Getter
 @Setter
 @Entity
 @IdClass(EpMlUserId.class)
-public class EpMlUser {
+public class EpMlUser implements Serializable{
        @Id
        @Column(name = "time_stamp", nullable = false, columnDefinition = "datetime DEFAULT current_timestamp()")
        private LocalDateTime timeStamp;
index 12c161f..424f61b 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.Set;
 import javax.persistence.CascadeType;
@@ -88,7 +89,7 @@ CREATE TABLE `ep_notification` (
 @Getter
 @Setter
 @Entity
-public class EpNotification {
+public class EpNotification implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "notification_ID", length = 11, nullable = false)
index 5f6e979..1976533 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -90,7 +91,7 @@ CREATE TABLE `ep_pers_user_app_sort` (
 @Getter
 @Setter
 @Entity
-public class EpPersUserAppSort {
+public class EpPersUserAppSort implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index 060ca42..b1e472f 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -95,7 +96,7 @@ CREATE TABLE `ep_pers_user_widget_placement` (
 @Getter
 @Setter
 @Entity
-public class EpPersUserWidgetPlacement {
+public class EpPersUserWidgetPlacement implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index 6c439c8..9cee72a 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -49,6 +50,8 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 import javax.validation.Valid;
@@ -61,6 +64,7 @@ import lombok.NoArgsConstructor;
 import lombok.Setter;
 import org.hibernate.validator.constraints.SafeHtml;
 import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.dto.DomainVo;
 
 /*
 CREATE TABLE `ep_pers_user_widget_sel` (
@@ -75,7 +79,11 @@ CREATE TABLE `ep_pers_user_widget_sel` (
         CONSTRAINT `fk_2_ep_pers_user_wid_sel_ep_wid` FOREIGN KEY (`widget_id`) REFERENCES `ep_widget_catalog` (`widget_id`)
         )
 */
-
+@NamedQueries({
+        @NamedQuery(
+                name = "EpPersUserWidgetSel.getEpPersUserWidgetSelForUserIdAndWidgetId",
+                query = "FROM EpPersUserWidgetSel WHERE userId = :USERID and widgetId = :WIDGETID")
+})
 @Table(name = "ep_pers_user_widget_sel", uniqueConstraints = {
         @UniqueConstraint(columnNames = {"user_id", "widget_id"})
 })
@@ -84,13 +92,14 @@ CREATE TABLE `ep_pers_user_widget_sel` (
 @Getter
 @Setter
 @Entity
-public class EpPersUserWidgetSel {
+public class EpPersUserWidgetSel extends DomainVo implements Serializable {
+
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", length = 11, nullable = false)
        @Digits(integer = 11, fraction = 0)
        private Long id;
-       @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
+       @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "user_id", nullable = false)
        @NotNull
        @Valid
index 80f8676..94df52d 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -84,7 +85,7 @@ CREATE TABLE `ep_role_notification` (
 @Getter
 @Setter
 @Entity
-public class EpRoleNotification {
+public class EpRoleNotification implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "ID", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index 47e195a..15bb2b9 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -88,7 +89,7 @@ CREATE TABLE `ep_user_notification` (
 @Getter
 @Setter
 @Entity
-public class EpUserNotification {
+public class EpUserNotification implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "ID", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index 13d26f7..52d06b2 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.Set;
 import javax.persistence.CascadeType;
@@ -88,7 +89,7 @@ CREATE TABLE `ep_user_roles_request` (
 @Getter
 @Setter
 @Entity
-public class EpUserRolesRequest {
+public class EpUserRolesRequest implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "req_id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index 1b27ee7..7604453 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -86,7 +87,7 @@ CREATE TABLE `ep_user_roles_request_det` (
 @Getter
 @Setter
 @Entity
-public class EpUserRolesRequestDet {
+public class EpUserRolesRequestDet implements Serializable {
 
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
index 1a15518..429bac1 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -82,7 +83,7 @@ CREATE TABLE `ep_web_analytics_source` (
 @Getter
 @Setter
 @Entity
-public class EpWebAnalyticsSource {
+public class EpWebAnalyticsSource implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "resource_id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index a125e1d..a19af28 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -82,7 +83,7 @@ CREATE TABLE `ep_widget_catalog` (
 @Getter
 @Setter
 @Entity
-public class EpWidgetCatalog {
+public class EpWidgetCatalog implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "widget_id", length = 11, nullable = false)
index db9fc15..fe91d23 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -74,7 +75,7 @@ CREATE TABLE `ep_widget_catalog_files` (
 @Getter
 @Setter
 @Entity
-public class EpWidgetCatalogFiles {
+public class EpWidgetCatalogFiles implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "file_id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index c63245c..2ac07cc 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -50,6 +51,8 @@ import javax.persistence.Id;
 import javax.persistence.Index;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 import javax.validation.Valid;
 import javax.validation.constraints.Digits;
@@ -79,6 +82,19 @@ CREATE TABLE `ep_widget_catalog_parameter` (
         )
 */
 
+@NamedQueries({
+        @NamedQuery(
+                name = "EpWidgetCatalogParameter.retrieveByParamId",
+                query = "FROM EpWidgetCatalogParameter WHERE paramId = :PARAMID"),
+        @NamedQuery(
+                name = "EpWidgetCatalogParameter.deleteWidgetCatalogParameter",
+                query = "DELETE FROM EpWidgetCatalogParameter WHERE paramId = :PARAMID"),
+        @NamedQuery(
+                name = "EpWidgetCatalogParameter.getUserParamById",
+                query = "FROM EpWidgetCatalogParameter WHERE paramId = :PARAMID and userId = :USERID and widgetId = :WIDGETID"
+        )
+})
+
 @Table(name = "ep_widget_catalog_parameter", indexes = {
         @Index(name = "EP_FN_USER_WIDGET_PARAMETER_FK", columnList = "user_id"),
         @Index(name = "EP_WIDGET_CATALOG_WIDGET_PARAMETER_FK", columnList = "widget_id"),
@@ -89,12 +105,13 @@ CREATE TABLE `ep_widget_catalog_parameter` (
 @Getter
 @Setter
 @Entity
-public class EpWidgetCatalogParameter {
+public class EpWidgetCatalogParameter implements Serializable {
+
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
        @Digits(integer = 11, fraction = 0)
-       private Integer id;
+       private Long id;
        @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "widget_id", nullable = false)
        @NotNull
index d219181..b226b92 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -83,8 +84,7 @@ CREATE TABLE `ep_widget_catalog_role` (
 @Getter
 @Setter
 @Entity
-//TODO there is something wrong with "KEY"
-public class EpWidgetCatalogRole {
+public class EpWidgetCatalogRole implements Serializable {
        @Id
        @Column(name = "id", length = 11, nullable = false)
        @Digits(integer = 11, fraction = 0)
index b66ef62..d96524e 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.ep;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -69,7 +70,7 @@ CREATE TABLE `ep_widget_preview_files` (
 @Getter
 @Setter
 @Entity
-public class EpWidgetPreviewFiles {
+public class EpWidgetPreviewFiles implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "preview_id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index cdc2089..399cb55 100644 (file)
@@ -172,17 +172,9 @@ public class FnApp extends DomainVo implements Serializable {
        @NotNull
        private String appPassword;
        @Column(name = "open", length = 1, columnDefinition = "char(1) default 'N'")
-       @Pattern(regexp = "[YNyn]")
-       @Size(max = 1)
-       @NotNull
-       @SafeHtml
-       private String open;
+       private Boolean open;
        @Column(name = "ENABLED", length = 1, columnDefinition = "char(1) default 'N'")
-       @Pattern(regexp = "[YNyn]")
-       @Size(max = 1)
-       @NotNull
-       @SafeHtml
-       private String enabled;
+       private Boolean enabled;
        @Column(name = "active_yn", length = 1, columnDefinition = "char(1) default 'Y'")
        @Pattern(regexp = "[YNyn]")
        @Size(max = 1)
@@ -211,11 +203,7 @@ public class FnApp extends DomainVo implements Serializable {
        @Digits(integer = 11, fraction = 0)
        private Long appType;
        @Column(name = "auth_central", length = 1, columnDefinition = "char(1) not null default 'N'", nullable = false)
-       @Pattern(regexp = "[YNyn]")
-       @Size(max = 1)
-       @NotNull
-       @SafeHtml
-       private String authCentral;
+       private Boolean authCentral;
        @Column(name = "auth_namespace", length = 100)
        @Size(max = 100)
        @SafeHtml
@@ -283,4 +271,8 @@ public class FnApp extends DomainVo implements Serializable {
                fetch = FetchType.LAZY
        )
        private Set<FnPersUserAppSel> fnPersUserAppSels;
+
+       public Boolean isRestrictedApp() {
+              return (this.appType == 2);
+       }
 }
index d85ee2a..da60049 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -73,7 +74,7 @@ CREATE TABLE `fn_audit_action` (
 @Getter
 @Setter
 @Entity
-public class FnAuditAction {
+public class FnAuditAction implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "role_id", nullable = false)
index ccea932..df73f42 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -76,7 +77,7 @@ CREATE TABLE `fn_audit_action_log` (
 @Getter
 @Setter
 @Entity
-public class FnAuditActionLog {
+public class FnAuditActionLog implements Serializable {
 
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
index 469fb74..911f32a 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -88,7 +89,7 @@ CREATE TABLE `fn_audit_log` (
 @Getter
 @Setter
 @Entity
-public class FnAuditLog {
+public class FnAuditLog implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "log_id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index c863fcb..e9cfc20 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -77,7 +78,7 @@ CREATE TABLE `fn_broadcast_message` (
 @Getter
 @Setter
 @Entity
-public class FnBroadcastMessage {
+public class FnBroadcastMessage implements Serializable {
 
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
index 93a07f1..d57bfd3 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -69,7 +70,7 @@ CREATE TABLE `fn_chat_logs` (
 @Getter
 @Setter
 @Entity
-public class FnChatLogs {
+public class FnChatLogs implements Serializable {
        @Id
        @Column(name = "chat_log_id", nullable = false)
        private Long chatLogId;
index c61d9f1..abf9653 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -74,7 +75,7 @@ CREATE TABLE `fn_chat_room` (
 @Getter
 @Setter
 @Entity
-public class FnChatRoom {
+public class FnChatRoom implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "chat_room_id", nullable = false)
index 85e9b59..c0e2814 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -72,7 +73,7 @@ CREATE TABLE `fn_chat_users` (
 @Getter
 @Setter
 @Entity
-public class FnChatUsers {
+public class FnChatUsers implements Serializable {
        @Id
        @Column(name = "id", length = 11, nullable = false)
        @Digits(integer = 11, fraction = 0)
index ac8f23c..1255aa1 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -73,7 +74,7 @@ CREATE TABLE `fn_common_widget_data` (
 @Getter
 @Setter
 @Entity
-public class FnCommonWidgetData {
+public class FnCommonWidgetData implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index 73dfa8a..87ee359 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -81,7 +82,7 @@ CREATE TABLE `fn_datasource` (
 @Getter
 @Setter
 @Entity
-public class FnDatasource {
+public class FnDatasource implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "message_id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index e79126c..348cf9e 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -71,7 +72,7 @@ CREATE TABLE `fn_display_text` (
 @Getter
 @Setter
 @Entity
-public class FnDisplayText {
+public class FnDisplayText implements Serializable {
 
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
index 41ac1d6..3375fd0 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -70,7 +71,7 @@ CREATE TABLE `fn_function` (
 @Getter
 @Setter
 @Entity
-public class FnFunction {
+public class FnFunction implements Serializable {
        @Id
        @Column(name = "function_cd", length = 30, nullable = false)
        @Size(max = 30)
index 57fd999..4b9186e 100644 (file)
@@ -41,6 +41,7 @@
 package org.onap.portal.domain.db.fn;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -56,6 +57,7 @@ import javax.validation.constraints.Digits;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
@@ -72,13 +74,13 @@ CREATE TABLE `fn_language` (
 @Table(name = "fn_language")
 @NoArgsConstructor
 @AllArgsConstructor
-
+@Builder
 @Getter
 @Setter
 @Entity
 @JsonInclude()
 @SequenceGenerator(name="seq", initialValue=1000, allocationSize=100000)
-public class FnLanguage {
+public class FnLanguage implements Serializable {
 
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
index 6b0b47c..f4d0d70 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -70,7 +71,7 @@ CREATE TABLE `fn_lu_activity` (
 @Getter
 @Setter
 @Entity
-public class FnLuActivity {
+public class FnLuActivity implements Serializable {
        @Id
        @Column(name = "activity_cd", length = 50, nullable = false)
        @Size(max = 50)
index 6ee0716..740f052 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -70,7 +71,7 @@ CREATE TABLE `fn_lu_alert_method` (
 @Getter
 @Setter
 @Entity
-public class FnLuAlertMethod {
+public class FnLuAlertMethod implements Serializable {
        @Id
        @Column(name = "alert_method_cd", length = 10, nullable = false)
        @Size(max = 50)
index 6d1c723..b0d16e5 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -65,7 +66,7 @@ CREATE TABLE `fn_lu_broadcast_site` (
 @Getter
 @Setter
 @Entity
-public class FnLuBroadcastSite {
+public class FnLuBroadcastSite implements Serializable {
        @Id
        @Column(name = "broadcast_site_cd", length = 50, nullable = false)
        @Size(max = 50)
index 3ac8823..ff5e473 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -72,7 +73,7 @@ CREATE TABLE `fn_lu_menu_set` (
 @Getter
 @Setter
 @Entity
-public class FnLuMenuSet {
+public class FnLuMenuSet implements Serializable {
 
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
index 1c96abb..4e5e233 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -72,7 +73,7 @@ CREATE TABLE `fn_lu_priority` (
 @Getter
 @Setter
 @Entity
-public class FnLuPriority {
+public class FnLuPriority implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "priority_id", nullable = false, length = 11)
index 9f50021..525ba0d 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -67,7 +68,7 @@ CREATE TABLE `fn_lu_role_type` (
 @Getter
 @Setter
 @Entity
-public class FnLuRoleType {
+public class FnLuRoleType implements Serializable {
        @Id
        @Column(name = "role_type_id", nullable = false, length = 11)
        @Digits(integer = 11, fraction = 0)
index c8c7be2..06e982c 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -70,7 +71,7 @@ CREATE TABLE `fn_lu_tab_set` (
 @Getter
 @Setter
 @Entity
-public class FnLuTabSet {
+public class FnLuTabSet implements Serializable {
        @Id
        @Column(name = "tab_set_cd", length = 30, nullable = false)
        @Size(max = 30)
index 53b54f4..54b4bc5 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -73,7 +74,7 @@ CREATE TABLE `fn_lu_timezone` (
 @Getter
 @Setter
 @Entity
-public class FnLuTimezone {
+public class FnLuTimezone implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "timezone_id", length = 11, nullable = false)
index 3ba60c7..7407213 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -101,7 +102,7 @@ CREATE TABLE `fn_menu` (
 @Getter
 @Setter
 @Entity
-public class FnMenu {
+public class FnMenu implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "menu_id", nullable = false, length = 11, columnDefinition = "int(11) auto_increment")
index cd9a362..e348a01 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -89,7 +90,7 @@ CREATE TABLE `fn_menu_functional` (
 @Getter
 @Setter
 @Entity
-public class FnMenuFunctional {
+public class FnMenuFunctional implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "menu_id", nullable = false, length = 11)
index 5dd037f..309f11e 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -81,7 +82,7 @@ CREATE TABLE `fn_menu_functional_ancestors` (
 @Getter
 @Setter
 @Entity
-public class FnMenuFunctionalAncestors {
+public class FnMenuFunctionalAncestors implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", nullable = false, length = 11, columnDefinition = "int(11)  AUTO_INCREMENT")
index c1ed751..3e9ae0e 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -85,7 +86,7 @@ CREATE TABLE `fn_menu_functional_roles` (
 @Getter
 @Setter
 @Entity
-public class FnMenuFunctionalRoles {
+public class FnMenuFunctionalRoles implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", nullable = false, length = 11, columnDefinition = "int(11) AUTO_INCREMENT")
index 46f9dcc..9dea65e 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -75,11 +76,10 @@ CREATE TABLE `fn_org` (
 })
 @NoArgsConstructor
 @AllArgsConstructor
-
 @Getter
 @Setter
 @Entity
-public class FnOrg {
+public class FnOrg implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "org_id", nullable = false, length = 11)
@@ -90,7 +90,7 @@ public class FnOrg {
        @SafeHtml
        @NotNull
        private String orgName;
-       @Column(name = "access_cd", length = 10, columnDefinition = "varchar(10) DEFAULT NULL")
+       @Column(name = "access_cd", length = 10)
        @Size(max = 10)
        @SafeHtml
        private String accessCd;
index 8aead52..1da9c21 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -85,7 +86,7 @@ CREATE TABLE `fn_pers_user_app_sel` (
 @Getter
 @Setter
 @Entity
-public class FnPersUserAppSel extends DomainVo {
+public class FnPersUserAppSel extends DomainVo implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
index c110fdc..1c5c3b5 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -81,7 +82,7 @@ CREATE TABLE `fn_qz_blob_triggers` (
 @Setter
 @Entity
 @IdClass(FnQzTriggersId.class)
-public class FnQzBlobTriggers {
+public class FnQzBlobTriggers implements Serializable {
        @Id
        @ManyToOne
        @JoinColumns(value = {
index d13ac34..a349924 100644 (file)
@@ -73,7 +73,7 @@ CREATE TABLE `fn_qz_calendars` (
 @Setter
 @Entity
 @IdClass(FnQzCalendarsId.class)
-public class FnQzCalendars {
+public class FnQzCalendars implements Serializable{
        @Id
        @SafeHtml
        @Column(name = "SCHED_NAME", length = 120, insertable = false, updatable = false)
index 4013e4f..84c1162 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -77,7 +78,7 @@ CREATE TABLE `fn_qz_cron_triggers` (
 @Setter
 @Entity
 @IdClass(FnQzTriggersId.class)
-public class FnQzCronTriggers {
+public class FnQzCronTriggers implements Serializable {
        @Id
        @ManyToOne
        @JoinColumns(value = {
index e4c15d2..77583fd 100644 (file)
@@ -100,7 +100,7 @@ CREATE TABLE `fn_qz_fired_triggers` (
 @Setter
 @Entity
 @IdClass(FnQzFiredTriggersID.class)
-public class FnQzFiredTriggers {
+public class FnQzFiredTriggers implements Serializable{
        @Id
        @Size(max = 120)
        @SafeHtml
index 0442635..5da7b4f 100644 (file)
@@ -90,7 +90,7 @@ CREATE TABLE `fn_qz_job_details` (
 @Setter
 @Entity
 @IdClass(FnQzJobDetailsID.class)
-public class FnQzJobDetails {
+public class FnQzJobDetails implements Serializable{
        @Id
        @SafeHtml
        @Size(max = 120)
index cee0eba..72558b5 100644 (file)
@@ -71,7 +71,7 @@ CREATE TABLE `fn_qz_locks` (
 @Setter
 @Entity
 @IdClass(FnQzLocksID.class)
-public class FnQzLocks {
+public class FnQzLocks implements Serializable{
        @Id
        @Size(max = 120)
        @SafeHtml
index 38c6540..4e515f6 100644 (file)
@@ -71,7 +71,7 @@ CREATE TABLE `fn_qz_paused_trigger_grps` (
 @Setter
 @Entity
 @IdClass(FnQzPausedTriggerGrpsID.class)
-public class FnQzPausedTriggerGrps {
+public class FnQzPausedTriggerGrps implements Serializable{
        @Id
        @Size(max = 120)
        @SafeHtml
index b9005a6..3c00f95 100644 (file)
@@ -76,7 +76,7 @@ CREATE TABLE `fn_qz_scheduler_state` (
 @Setter
 @Entity
 @IdClass(FnQzSchedulerStateID.class)
-public class FnQzSchedulerState {
+public class FnQzSchedulerState implements Serializable{
        @Id
        @Size(max = 120)
        @SafeHtml
index 6c1f355..6f67381 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -80,7 +81,7 @@ CREATE TABLE `fn_qz_simple_triggers` (
 @Setter
 @Entity
 @IdClass(FnQzTriggersId.class)
-public class FnQzSimpleTriggers {
+public class FnQzSimpleTriggers implements Serializable {
        @Id
        @ManyToOne
        @JoinColumns(value = {
index 378705c..f1a4227 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -87,7 +88,7 @@ CREATE TABLE `fn_qz_simprop_triggers` (
 @Setter
 @Entity
 @IdClass(FnQzTriggersId.class)
-public class FnQzSimpropTriggers {
+public class FnQzSimpropTriggers implements Serializable {
        @Id
        @ManyToOne
        @JoinColumns(value = {
index 526de11..35fb130 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.math.BigInteger;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -116,7 +117,7 @@ CREATE TABLE `fn_qz_triggers` (
 @Setter
 @Entity
 @IdClass(FnQzTriggersId.class)
-public class FnQzTriggers {
+public class FnQzTriggers implements Serializable {
        @ManyToOne
        @JoinColumns(value = {
                @JoinColumn(name = "SCHED_NAME", referencedColumnName = "SCHED_NAME"),
index 35b619c..74e81eb 100644 (file)
@@ -80,7 +80,7 @@ CREATE TABLE `fn_restricted_url` (
 @Setter
 @Entity
 @IdClass(FnRestrictedUrlId.class)
-public class FnRestrictedUrl {
+public class FnRestrictedUrl implements Serializable{
        @Column(name = "restricted_url", length = 250, nullable = false)
        @Size(max = 250)
        @SafeHtml
index eda3fb2..8465ce2 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.util.Set;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -58,7 +59,6 @@ import javax.persistence.OneToMany;
 import javax.persistence.Table;
 import javax.validation.constraints.Digits;
 import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
 import javax.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -69,6 +69,7 @@ import org.onap.portal.domain.db.ep.EpAppRoleFunction;
 import org.onap.portal.domain.db.ep.EpRoleNotification;
 import org.onap.portal.domain.db.ep.EpUserRolesRequestDet;
 import org.onap.portal.domain.db.ep.EpWidgetCatalogRole;
+import org.onap.portal.domain.dto.DomainVo;
 
 /*
 CREATE TABLE `fn_role` (
@@ -120,7 +121,7 @@ CREATE TABLE `fn_role` (
 @Getter
 @Setter
 @Entity
-public class FnRole {
+public class FnRole extends DomainVo implements Serializable {
 
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
@@ -133,11 +134,8 @@ public class FnRole {
        @SafeHtml
        private String roleName;
        @Column(name = "active_yn", length = 1, columnDefinition = "character varying(1) default 'y'", nullable = false)
-       @Pattern(regexp = "[YNyn]")
-       @Size(max = 1)
        @NotNull
-       @SafeHtml
-       private String activeYn;
+       private Boolean activeYn;
        @Column(name = "priority", length = 4, columnDefinition = "decimal(4,0) DEFAULT NULL")
        @Digits(integer = 4, fraction = 0)
        private Long priority;
index b62e8c2..944d739 100644 (file)
@@ -81,7 +81,7 @@ CREATE TABLE `fn_role_function` (
 @Setter
 @Entity
 @IdClass(FnRoleFunctionId.class)
-public class FnRoleFunction {
+public class FnRoleFunction implements Serializable{
 
        @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "role_Id", nullable = false)
index 7eb96d6..e1c4cde 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.math.BigInteger;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -62,7 +63,7 @@ import org.hibernate.annotations.Subselect;
         + " from fn_role where isnull(fn_role.app_id)")
 @Getter
 @NoArgsConstructor
-public class FnRoleV {
+public class FnRoleV implements Serializable {
        @Id
        @Column(name = "role_id")
        private Integer roleId;
index e361b11..620532e 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.math.BigInteger;
 import java.time.LocalDateTime;
 import javax.persistence.Column;
@@ -79,7 +80,7 @@ CREATE TABLE `fn_schedule_workflows` (
 @Getter
 @Setter
 @Entity
-public class FnScheduleWorkflows {
+public class FnScheduleWorkflows implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id_schedule_workflows", nullable = false, length = 25, columnDefinition = "bigint(25) AUTO_INCREMENT")
index 4804570..7c02183 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -78,7 +79,7 @@ CREATE TABLE `fn_shared_context` (
 @Getter
 @Setter
 @Entity
-public class FnSharedContext {
+public class FnSharedContext implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", nullable = false, length = 11, columnDefinition = "int(11) AUTO_INCREMENT")
index bfc7834..634fb64 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.math.BigInteger;
 import java.util.Set;
 import javax.persistence.CascadeType;
@@ -91,7 +92,7 @@ CREATE TABLE `fn_tab` (
 @Getter
 @Setter
 @Entity
-public class FnTab {
+public class FnTab implements Serializable {
        @Id
        @Column(name = "tab_cd", length = 30, nullable = false)
        @Size(max = 30)
index f62668e..14b243d 100644 (file)
@@ -78,7 +78,7 @@ CREATE TABLE `fn_tab_selected` (
 @Setter
 @Entity
 @IdClass(FnTabSelectedId.class)
-public class FnTabSelected {
+public class FnTabSelected implements Serializable{
        @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "selected_tab_cd", nullable = false)
        @NotNull
index dffa7f7..ce28d0f 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.Set;
@@ -67,6 +68,7 @@ import javax.validation.constraints.NotNull;
 import javax.validation.constraints.PastOrPresent;
 import javax.validation.constraints.Size;
 import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
@@ -78,6 +80,7 @@ import org.onap.portal.domain.db.ep.EpPersUserWidgetSel;
 import org.onap.portal.domain.db.ep.EpUserNotification;
 import org.onap.portal.domain.db.ep.EpUserRolesRequest;
 import org.onap.portal.domain.db.ep.EpWidgetCatalogParameter;
+import org.onap.portal.domain.dto.DomainVo;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
@@ -176,11 +179,12 @@ CREATE TABLE `fn_user` (
 @Getter
 @Setter
 @Entity
+@Builder
 @NoArgsConstructor
 @AllArgsConstructor
 @DynamicUpdate
 @SequenceGenerator(name = "seq", initialValue = 1000, allocationSize = 100000)
-public class FnUser implements UserDetails {
+public class FnUser extends DomainVo implements UserDetails, Serializable {
 
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
@@ -188,74 +192,71 @@ public class FnUser implements UserDetails {
        @Digits(integer = 11, fraction = 0)
        private Long userId;
        @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
-       @JoinColumn(name = "org_id", columnDefinition = "int(11) DEFAULT NULL")
+       @JoinColumn(name = "org_id")
        private FnOrg orgId;
        @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
        @JoinColumn(name = "manager_id")
        private FnUser managerId;
-       @Column(name = "first_name", length = 50, columnDefinition = "varchar(50) DEFAULT NULL")
+       @Column(name = "first_name", length = 50)
        @Size(max = 50)
        @SafeHtml
        private String firstName;
-       @Column(name = "middle_name", length = 50, columnDefinition = "varchar(50) DEFAULT NULL")
+       @Column(name = "middle_name", length = 50)
        @Size(max = 50)
        @SafeHtml
        private String middleName;
-       @Column(name = "last_name", length = 50, columnDefinition = "varchar(50) DEFAULT NULL")
+       @Column(name = "last_name", length = 50)
        @Size(max = 50)
        @SafeHtml
        private String lastName;
-       @Column(name = "phone", length = 25, columnDefinition = "varchar(25) DEFAULT NULL")
+       @Column(name = "phone", length = 25)
        @Size(max = 25)
        @SafeHtml
        private String phone;
-       @Column(name = "fax", length = 25, columnDefinition = "varchar(25) DEFAULT NULL")
+       @Column(name = "fax", length = 25)
        @Size(max = 25)
        @SafeHtml
        private String fax;
-       @Column(name = "cellular", length = 25, columnDefinition = "varchar(25) DEFAULT NULL")
+       @Column(name = "cellular", length = 25)
        @Size(max = 25)
        @SafeHtml
        private String cellular;
-       @Column(name = "email", length = 50, columnDefinition = "varchar(50) DEFAULT NULL")
+       @Column(name = "email", length = 50)
        @Size(max = 50)
        @Email
        @SafeHtml
        private String email;
-       @Column(name = "address_id", columnDefinition = "decimal(11,0) DEFAULT NULL")
+       @Column(name = "address_id")
        @Digits(integer = 11, fraction = 0)
        private Long addressId;
        @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
-       @JoinColumn(name = "alert_method_cd", columnDefinition = "varchar(10) DEFAULT NULL")
+       @JoinColumn(name = "alert_method_cd")
        private FnLuAlertMethod alertMethodCd;
-       @Column(name = "hrid", length = 20, columnDefinition = "varchar(20) DEFAULT NULL")
+       @Column(name = "hrid", length = 20)
        @Size(max = 20)
        @SafeHtml
        private String hrid;
-       @Column(name = "org_user_id", length = 20, columnDefinition = "varchar(20) DEFAULT NULL")
+       @Column(name = "org_user_id", length = 20)
        @Size(max = 20)
        @SafeHtml
        private String orgUserId;
-       @Column(name = "org_code", length = 30, columnDefinition = "varchar(30) DEFAULT NULL")
+       @Column(name = "org_code", length = 30)
        @Size(max = 30)
        @SafeHtml
        private String org_code;
-       @Column(name = "login_id", length = 25, columnDefinition = "varchar(25) DEFAULT NULL")
+       @Column(name = "login_id", length = 25)
        @Size(max = 25)
        @SafeHtml
        private String loginId;
-       @Column(name = "login_pwd", length = 100, columnDefinition = "varchar(100) DEFAULT NULL")
+       @Column(name = "login_pwd", length = 100)
        @Size(max = 100)
        @SafeHtml
        private String loginPwd;
        @Column(name = "last_login_date", nullable = false, columnDefinition = "datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()")
        @PastOrPresent
        protected LocalDateTime lastLoginDate;
-       @Column(name = "active_yn", length = 1, columnDefinition = "character varying(1) default 'y'", nullable = false)
-       @Size(max = 1)
-       @SafeHtml
-       @NotNull(message = "activeYn must not be null")
-       private String activeYn;
+       @Column(name = "active_yn", nullable = false)
+       private Boolean activeYn;
        @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "created_id")
        private FnUser createdId;
@@ -268,79 +269,76 @@ public class FnUser implements UserDetails {
        @Column(name = "modified_date", nullable = false, columnDefinition = "datetime default now()")
        @PastOrPresent
        protected LocalDateTime modifiedDate;
-       @Column(name = "is_internal_yn", length = 1, columnDefinition = "character varying(1) default 'n'", nullable = false)
-       @Size(max = 1)
-       @SafeHtml
-       @NotNull(message = "isInternalYn must not be null")
-       private String isInternalYn;
-       @Column(name = "address_line_1", length = 100, columnDefinition = "varchar(100) DEFAULT NULL")
+       @Column(name = "is_internal_yn", nullable = false, columnDefinition = "bit DEFAULT 0")
+       private Boolean isInternalYn;
+       @Column(name = "address_line_1", length = 100)
        @Size(max = 100)
        @SafeHtml
        private String addressLine1;
-       @Column(name = "address_line_2", length = 100, columnDefinition = "varchar(100) DEFAULT NULL")
+       @Column(name = "address_line_2", length = 100)
        @Size(max = 100)
        @SafeHtml
        private String addressLine2;
-       @Column(name = "city", length = 50, columnDefinition = "varchar(50) DEFAULT NULL")
+       @Column(name = "city", length = 50)
        @Size(max = 50)
        @SafeHtml
        private String city;
-       @Column(name = "state_cd", length = 3, columnDefinition = "varchar(3) DEFAULT NULL")
+       @Column(name = "state_cd", length = 3)
        @Size(max = 3)
        @SafeHtml
        private String stateCd;
-       @Column(name = "zip_code", length = 11, columnDefinition = "varchar(11) DEFAULT NULL")
+       @Column(name = "zip_code", length = 11)
        @Size(max = 11)
        @SafeHtml
        private String zipCode;
-       @Column(name = "country_cd", length = 3, columnDefinition = "varchar(3) DEFAULT NULL")
+       @Column(name = "country_cd", length = 3)
        @Size(max = 3)
        @SafeHtml
        private String countryCd;
-       @Column(name = "location_clli", length = 8, columnDefinition = "varchar(8) DEFAULT NULL")
+       @Column(name = "location_clli", length = 8)
        @Size(max = 8)
        @SafeHtml
        private String locationClli;
-       @Column(name = "org_manager_userid", length = 20, columnDefinition = "varchar(20) DEFAULT NULL")
+       @Column(name = "org_manager_userid", length = 20)
        @Size(max = 20)
        @SafeHtml
        private String orgManagerUserId;
-       @Column(name = "company", length = 100, columnDefinition = "varchar(100) DEFAULT NULL")
+       @Column(name = "company", length = 100)
        @Size(max = 100)
        @SafeHtml
        private String company;
-       @Column(name = "department_name", length = 200, columnDefinition = "varchar(100) DEFAULT NULL")
+       @Column(name = "department_name", length = 200)
        @Size(max = 200)
        @SafeHtml
        private String departmentName;
-       @Column(name = "job_title", length = 100, columnDefinition = "varchar(100) DEFAULT NULL")
+       @Column(name = "job_title", length = 100)
        @Size(max = 100)
        @SafeHtml
        private String jobTitle;
        @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
-       @JoinColumn(name = "timezone", columnDefinition = "int(11) DEFAULT NULL")
+       @JoinColumn(name = "timezone")
        private FnLuTimezone timezone;
-       @Column(name = "department", length = 25, columnDefinition = "varchar(25) DEFAULT NULL")
+       @Column(name = "department", length = 25)
        @Size(max = 25)
        @SafeHtml
        private String department;
-       @Column(name = "business_unit", length = 25, columnDefinition = "varchar(25) DEFAULT NULL")
+       @Column(name = "business_unit", length = 25)
        @Size(max = 25)
        @SafeHtml
        private String businessUnit;
-       @Column(name = "business_unit_name", length = 100, columnDefinition = "varchar(100) DEFAULT NULL")
+       @Column(name = "business_unit_name", length = 100)
        @Size(max = 100)
        @SafeHtml
        private String businessUnitName;
-       @Column(name = "cost_center", length = 25, columnDefinition = "varchar(25) DEFAULT NULL")
+       @Column(name = "cost_center", length = 25)
        @Size(max = 25)
        @SafeHtml
        private String cost_center;
-       @Column(name = "fin_loc_code", length = 10, columnDefinition = "varchar(10) DEFAULT NULL")
+       @Column(name = "fin_loc_code", length = 10)
        @Size(max = 10)
        @SafeHtml
        private String finLocCode;
-       @Column(name = "silo_status", length = 10, columnDefinition = "varchar(10) DEFAULT NULL")
+       @Column(name = "silo_status", length = 10)
        @Size(max = 10)
        @SafeHtml
        private String siloStatus;
@@ -348,9 +346,9 @@ public class FnUser implements UserDetails {
        @JoinColumn(name = "language_id", nullable = false, columnDefinition = "int(11) DEFAULT 1")
        @NotNull(message = "languageId must not be null")
        private FnLanguage languageId;
-       @Column(name = "is_guest", columnDefinition = "boolean default 0", nullable = false)
+       @Column(name = "is_guest", nullable = false, columnDefinition = "bit DEFAULT 0")
        @NotNull(message = "guest must not be null")
-       private boolean guest;
+       private Boolean guest;
        @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "fnUserList")
        private Set<CrReportFileHistory> crReportFileHistorie;
        @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
index da709e3..390ef8b 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -106,7 +107,7 @@ CREATE TABLE `fn_user_role` (
 @Getter
 @Setter
 @Entity
-public class FnUserRole {
+public class FnUserRole implements Serializable {
 
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnWidget.java b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnWidget.java
new file mode 100644 (file)
index 0000000..649267b
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.db.fn;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Table(name = "fn_widget")
+@NoArgsConstructor
+@AllArgsConstructor
+@Getter
+@Setter
+@Entity
+public class FnWidget {
+       @Id
+       private Long widgetId;
+       @Column(name = "WDG_NAME")
+       private String name;
+       @Column(name = "WDG_WIDTH")
+       private Integer width;
+       @Column(name = "WDG_HEIGHT")
+       private Integer height;
+       @Column(name = "WDG_URL")
+       private String url;
+       @Column(name = "APP_ID")
+       private Long appId;
+}
index da8619d..b5a4ecb 100644 (file)
@@ -40,6 +40,7 @@
 
 package org.onap.portal.domain.db.fn;
 
+import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -82,7 +83,7 @@ CREATE TABLE `fn_workflow` (
 @Getter
 @Setter
 @Entity
-public class FnWorkflow {
+public class FnWorkflow implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", nullable = false, length = 9, columnDefinition = "mediumint(9) AUTO_INCREMENT")
index e14b937..6901aee 100644 (file)
@@ -45,7 +45,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
-import java.util.Date;
+import java.time.LocalDateTime;
 import java.util.Set;
 import javax.persistence.Inheritance;
 import javax.persistence.InheritanceType;
@@ -60,12 +60,14 @@ import org.onap.portalsdk.core.domain.FusionVo;
 @Setter
 @NoArgsConstructor
 @AllArgsConstructor
-@Inheritance(strategy = InheritanceType.JOINED)
+@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
 public class DomainVo extends FusionVo implements Serializable, Cloneable, Comparable {
+
        private static final long serialVersionUID = 1L;
+
        protected Long id;
-       protected Date created;
-       protected Date modified;
+       protected LocalDateTime created;
+       protected LocalDateTime modified;
        protected FnUser createdId;
        protected FnUser modifiedId;
        protected Long rowNum;
@@ -75,7 +77,7 @@ public class DomainVo extends FusionVo implements Serializable, Cloneable, Compa
        @Override
        public int compareTo(Object obj) {
               Long c1 = this.getId();
-              Long c2 = ((org.onap.portalsdk.core.domain.support.DomainVo)obj).getId();
+              Long c2 = ((org.onap.portalsdk.core.domain.support.DomainVo) obj).getId();
               return c1 != null && c2 != null ? c1.compareTo(c2) : 1;
        }
 
@@ -92,7 +94,7 @@ public class DomainVo extends FusionVo implements Serializable, Cloneable, Compa
                      oos.writeObject(this);
                      bais = new ByteArrayInputStream(baos.toByteArray());
                      ois = new ObjectInputStream(bais);
-                     newVo = (DomainVo)ois.readObject();
+                     newVo = (DomainVo) ois.readObject();
                      if (isIdNull) {
                             newVo.setId(null);
                      }
@@ -106,4 +108,22 @@ public class DomainVo extends FusionVo implements Serializable, Cloneable, Compa
        public Object clone() throws CloneNotSupportedException {
               return super.clone();
        }
+
+       public boolean equals(Object other) {
+              if (this == other) {
+                     return true;
+              } else if (other == null) {
+                     return false;
+              } else if (!(other instanceof DomainVo)) {
+                     return false;
+              } else {
+                     DomainVo castOther = (DomainVo)other;
+                     return this.getId().equals(castOther.getId())
+                             && this.getCreated().equals(castOther.getCreated())
+                             && this.getCreatedId().equals(castOther.getCreatedId())
+                             && this.getModified().equals(castOther.getModified())
+                             && this.getModifiedId() == castOther.getModifiedId();
+              }
+       }
+
 }
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AdminUserApp.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AdminUserApp.java
new file mode 100644 (file)
index 0000000..5b4aec7
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class AdminUserApp implements Serializable{
+
+       private static final long serialVersionUID = 1L;
+
+       private Long user_Id;
+       private String firstName;
+       private String lastName;
+       private String orgUserId;
+       private Long appId;
+       private String appName; 
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AdminUserApplications.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AdminUserApplications.java
new file mode 100644 (file)
index 0000000..19806bf
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.util.ArrayList;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class AdminUserApplications {
+       private List<Application> apps = new ArrayList<>();
+       
+       private Long user_Id;
+       private String firstName;
+       private String lastName;
+       private String orgUserId;
+       
+       public AdminUserApplications(AdminUserApp app) {
+               setUser_Id(app.getUser_Id());
+               setOrgUserId(app.getOrgUserId());
+               setFirstName(app.getFirstName());
+               setLastName(app.getLastName());
+               
+               addApp(app.getAppId(), app.getAppName());
+       }
+
+       private void addApp(Long otherAppId, String otherAppName) {
+               apps.add(new Application(otherAppId, otherAppName));
+       }
+
+       @Getter
+       @Setter
+       @AllArgsConstructor
+       public class Application {
+               private Long appId; 
+               private String appName;
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/App.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/App.java
new file mode 100644 (file)
index 0000000..6739f45
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class App implements Serializable{
+       
+       private static final long serialVersionUID = 1L;
+
+       private Long appId;
+       private String appName;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppCatalogItem.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppCatalogItem.java
new file mode 100644 (file)
index 0000000..a7be217
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@EqualsAndHashCode(callSuper = false)
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AppCatalogItem extends DomainVo {
+
+       private static final long serialVersionUID = 6619663784935017846L;
+
+       private Long id;
+       private String name;
+       private String mlAppName;
+       private String imageUrl;
+       private String description;
+       private String notes;
+       private String url;
+       private String alternateUrl;
+       private Boolean restricted;
+       private Boolean open;
+       private Boolean access;
+       private Boolean select;
+       private Boolean pending;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppCategoryFunctionsItem.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppCategoryFunctionsItem.java
new file mode 100644 (file)
index 0000000..706c3a3
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@ToString
+@EqualsAndHashCode(callSuper = false)
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AppCategoryFunctionsItem extends DomainVo {
+
+       private static final long serialVersionUID = -1573834082471206458L;
+
+       private String rowId;
+       private String appId;
+       private String application;
+       private String category;
+       private String functions;
+       
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppContactUs.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppContactUs.java
new file mode 100644 (file)
index 0000000..9f215a0
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonBackReference;
+import javax.validation.Valid;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.validator.constraints.SafeHtml;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class AppContactUs extends DomainVo {
+
+       private static final long serialVersionUID = -2742197830465055134L;
+
+       @JsonBackReference
+       @Valid
+       private EPApp app;
+       @SafeHtml
+       private String description;
+       @SafeHtml
+       private String contactEmail;
+       @SafeHtml
+       private String contactName;
+       @SafeHtml
+       private String url;
+       @SafeHtml
+       private String activeYN;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppContactUsItem.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppContactUsItem.java
new file mode 100644 (file)
index 0000000..491a82d
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.validator.constraints.SafeHtml;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AppContactUsItem extends DomainVo {
+
+       private static final long serialVersionUID = 6964210807573346262L;
+
+       private Long appId;
+       @SafeHtml
+       private String appName;
+       @SafeHtml
+       private String description;
+       @SafeHtml
+       private String contactName;
+       @SafeHtml
+       private String contactEmail;
+       @SafeHtml
+       private String url;
+       @SafeHtml
+       private String activeYN;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppIdAndNameTransportModel.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppIdAndNameTransportModel.java
new file mode 100644 (file)
index 0000000..5c13a4a
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class AppIdAndNameTransportModel implements Serializable{
+
+       private static final long serialVersionUID = 1L;
+
+       private Long id;
+       private String name;
+       private Integer appType;
+
+       public Boolean isRestrictedApp() {
+               return (this.appType == 2);
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppsResponse.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/AppsResponse.java
new file mode 100644 (file)
index 0000000..b40f85d
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Setter()
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+public class AppsResponse {
+
+       private Long index;
+       private String title;
+       private String value;
+       private Boolean restrictedApp;
+       private Boolean enabled;
+       
+       public AppsResponse(Long id, String name, Boolean restrictedApp, Boolean enabled) {
+               this.index = id;
+               this.title = this.value = name;
+               this.restrictedApp = restrictedApp;
+               this.enabled = enabled;
+       }
+
+       // Hide the implementation of restricted and normal app from the front end.
+       // The json sent and received will include restrictedApp but not appType.
+       private Boolean getRestrictedApp(){
+               return this.restrictedApp;
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/BEProperty.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/BEProperty.java
new file mode 100644 (file)
index 0000000..aa6b6bc
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@EqualsAndHashCode
+@NoArgsConstructor
+@AllArgsConstructor
+public class BEProperty {
+
+       private String key;
+       private String value;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/BasicAuthCredentials.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/BasicAuthCredentials.java
new file mode 100644 (file)
index 0000000..23d11a3
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class BasicAuthCredentials extends DomainVo {
+       
+       private static final long serialVersionUID = 1L;
+
+       private Long id;
+       private String applicationName;
+       private String username;
+       private String password;
+       private String isActive;
+       private List<EPEndpoint> endpoints;
+
+       @Override
+       public String toString() {
+               return "BasicAuthCredentials [id=" + id + ", applicationName=" + applicationName + ", username=" + username
+                               + ", password=" + password + ", isActive=" + isActive + "]";
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/CentralV2RoleFunction.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/CentralV2RoleFunction.java
new file mode 100644 (file)
index 0000000..de19cbd
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.validator.constraints.SafeHtml;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@EqualsAndHashCode(callSuper = false)
+@NoArgsConstructor
+@AllArgsConstructor
+public class CentralV2RoleFunction extends DomainVo implements Serializable, Comparable {
+
+       private static final long serialVersionUID = -4018975640065252688L;
+
+       @SafeHtml
+       private String code;
+       @SafeHtml
+       private String name;
+       @JsonIgnore
+       private Long appId;
+       @JsonIgnore
+       private Long roleId;
+       private String type;
+       @SafeHtml
+       private String action;
+       @SafeHtml
+       private String editUrl;
+
+       public CentralV2RoleFunction(Long id, String code, String name, Long appId, String type, String action,
+               String editUrl) {
+              super();
+              this.id = id;
+              this.code = code;
+              this.name = name;
+              this.appId = appId;
+              this.type = type;
+              this.action = action;
+              this.editUrl = editUrl;
+       }
+
+       public CentralV2RoleFunction(Long id, String code, String name, Long appId, String editUrl) {
+              super();
+              this.id = id;
+              this.code = code;
+              this.name = name;
+              this.appId = appId;
+              this.editUrl = editUrl;
+       }
+
+
+       public CentralV2RoleFunction(String code, String name) {
+              super();
+              this.code = code;
+              this.name = name;
+       }
+
+       public int compareTo(Object obj) {
+              String c1 = getName();
+              String c2 = ((CentralV2RoleFunction) obj).getName();
+
+              return (c1 == null || c2 == null) ? 1 : c1.compareTo(c2);
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/CentralizedApp.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/CentralizedApp.java
new file mode 100644 (file)
index 0000000..fd563fc
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CentralizedApp implements Serializable{
+
+       private static final long serialVersionUID = -3773410386555027935L;
+
+       private int appId;
+       private String appName;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/CommonWidgetsEnum.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/CommonWidgetsEnum.java
new file mode 100644 (file)
index 0000000..cda6622
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+public enum CommonWidgetsEnum{
+       NEWS("news"),
+       EVENTS("events"),
+       RESOURCES("resources");
+       
+       private String value;
+       CommonWidgetsEnum(String value){
+               this.value = value;
+       }
+       
+       @Override
+    public String toString() {
+        return value;
+    }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/DisplayText.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/DisplayText.java
new file mode 100644 (file)
index 0000000..0994070
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.Data;
+
+@Data
+public class DisplayText {
+
+    private Integer id;
+    private Integer languageId;
+    private Long textId;
+    private String label;
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPApp.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPApp.java
new file mode 100644 (file)
index 0000000..def3e68
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import javax.persistence.Lob;
+import javax.validation.Valid;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.lang.StringUtils;
+import org.hibernate.validator.constraints.SafeHtml;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+public class EPApp extends DomainVo {
+
+       private static final long serialVersionUID = 1L;
+
+       @SafeHtml
+       private String name;
+       @SafeHtml
+       private String imageUrl;
+       @SafeHtml
+       private String description;
+       @SafeHtml
+       private String notes;
+       @SafeHtml
+       private String url;
+       @SafeHtml
+       private String alternateUrl;
+       @SafeHtml
+       private String appRestEndpoint;
+       @SafeHtml
+       private String mlAppName;
+       @SafeHtml
+       private String mlAppAdminId;
+       private Long motsId;
+       @SafeHtml
+       private String username;
+       @SafeHtml
+       private String appPassword;
+       @Lob
+       private byte[] thumbnail;
+       private Boolean open;
+       private Boolean enabled;
+       @SafeHtml
+       private String uebTopicName;
+       @SafeHtml
+       private String uebKey;
+       @SafeHtml
+       private String uebSecret;
+       private Integer appType;
+       @Valid
+       private AppContactUs contactUs;
+       private Boolean centralAuth;
+       @SafeHtml
+       private String nameSpace;
+
+       public EPApp() {
+              this.name = "";
+              this.mlAppName = "";
+              this.mlAppAdminId = "";
+              this.username = "";
+              this.appPassword = "";
+              this.open = Boolean.FALSE;
+              this.enabled = Boolean.TRUE;
+              this.uebTopicName = "";
+              this.uebKey = "";
+              this.uebSecret = "";
+              this.appType = 1;
+       }
+
+
+       public void setName(String name) {
+              if (StringUtils.isEmpty(name)) {
+                     name = "";
+              }
+              this.name = name;
+       }
+
+       public void setMlAppName(String mlAppName) {
+              if (StringUtils.isEmpty(mlAppName)) {
+                     mlAppName = "";
+              }
+              this.mlAppName = mlAppName;
+       }
+
+       public void setMlAppAdminId(String mlAppAdminId) {
+              if (StringUtils.isEmpty(mlAppAdminId)) {
+                     mlAppAdminId = "";
+              }
+              this.mlAppAdminId = mlAppAdminId;
+       }
+
+
+       public void setAppPassword(String appPassword) {
+              if (StringUtils.isEmpty(appPassword)) {
+                     appPassword = "";
+              }
+              this.appPassword = appPassword;
+       }
+
+       public void setOpen(Boolean open) {
+              if (open == null) {
+                     open = Boolean.FALSE;
+              }
+              this.open = open;
+       }
+
+       public void setEnabled(Boolean enabled) {
+              if (enabled == null) {
+                     enabled = Boolean.TRUE;
+              }
+              this.enabled = enabled;
+       }
+
+       public void setAppType(Integer appType) {
+              if (appType == null) {
+                     appType = 1;
+              }
+              this.appType = appType;
+       }
+
+       public void setRestrictedApp(Boolean restrictedApp) {
+              Integer result = 1;
+              if (restrictedApp) {
+                     result = 2;
+              }
+              this.appType = result;
+       }
+
+       public Boolean isRestrictedApp() {
+              return (this.appType == 2);
+       }
+
+       public int compareTo(Object obj) {
+              Long c1 = getId();
+              Long c2 = ((EPApp) obj).getId();
+
+              return c1.compareTo(c2);
+       }
+
+       public void setUebTopicName(String topicName) {
+              if (StringUtils.isEmpty(topicName)) {
+                     this.uebTopicName = "";
+              }
+              this.uebTopicName = topicName;
+       }
+
+       public void setUebKey(String uebKey) {
+              if (StringUtils.isEmpty(uebKey)) {
+                     this.uebKey = "";
+              }
+              this.uebKey = uebKey;
+       }
+
+
+       public void setUebSecret(String uebSecret) {
+              if (StringUtils.isEmpty(uebSecret)) {
+                     this.uebSecret = "";
+              }
+              this.uebSecret = uebSecret;
+       }
+
+       public void setCentralAuth(Boolean centralAuth) {
+              if (centralAuth == null) {
+                     centralAuth = Boolean.FALSE;
+              }
+              this.centralAuth = centralAuth;
+       }
+
+       public void setNameSpace(String nameSpace) {
+              if (StringUtils.isEmpty(nameSpace)) {
+                     nameSpace = null;
+              }
+              this.nameSpace = nameSpace;
+       }
+
+       @Override
+       public String toString() {
+              return "[" + getId() + ":" + getName() + "]";
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPAppRoleFunction.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPAppRoleFunction.java
new file mode 100644 (file)
index 0000000..254a0e6
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPAppRoleFunction extends DomainVo  implements java.io.Serializable{
+
+       private static final long serialVersionUID = 7752385247460299630L;
+       
+       private Long roleId;
+       private Long appId;
+       private String code;
+       private String roleAppId;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPEndpoint.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPEndpoint.java
new file mode 100644 (file)
index 0000000..8c6052c
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPEndpoint extends DomainVo {
+
+       private static final long serialVersionUID = 1L;
+
+       private Long id;
+       private String name;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPEndpointAccount.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPEndpointAccount.java
new file mode 100644 (file)
index 0000000..535470c
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPEndpointAccount extends DomainVo {
+
+       private static final long serialVersionUID = 1L;
+
+       private Long id;
+       private Long ep_id;
+       private Long account_id;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPRole.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPRole.java
new file mode 100644 (file)
index 0000000..dff4876
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import javax.validation.Valid;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.validator.constraints.SafeHtml;
+import org.onap.portalsdk.core.domain.RoleFunction;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPRole extends DomainVo {
+
+       private static final long serialVersionUID = 1L;
+       @SafeHtml
+       private String name;
+       private boolean active;
+       private Integer priority;
+       private Long appId;     // used by ONAP only
+       private Long appRoleId; // used by ONAP only
+       private SortedSet<RoleFunction> roleFunctions = new TreeSet<>();
+       @Valid
+       private SortedSet<EPRole> childRoles = new TreeSet<>();
+       @JsonIgnore
+       private SortedSet<EPRole> parentRoles = new TreeSet<>();
+
+
+       public void addRoleFunction(RoleFunction roleFunction) {
+              this.roleFunctions.add(roleFunction);
+       }
+
+       public void addChildRole(EPRole role) {
+              this.childRoles.add(role);
+       }
+
+       public void addParentRole(EPRole role) {
+              this.parentRoles.add(role);
+       }
+
+       public String getEditUrl() {
+              return "/role.htm?role_id=" + getId();
+       }
+
+       public String getToggleActiveImage() {
+              return "/static/fusion/images/" + (isActive() ? "active.png" : "inactive.png");
+       }
+
+       public String getToggleActiveAltText() {
+              return isActive() ? "Click to Deactivate Role" : "Click to Activate Role";
+       }
+
+       public void removeChildRole(Long roleId) {
+
+              for (EPRole childRole : this.childRoles) {
+                     if (childRole.getId().equals(roleId)) {
+                            this.childRoles.remove(childRole);
+                            break;
+                     }
+              }
+       }
+
+       public void removeParentRole(Long roleId) {
+
+              for (EPRole parentRole : this.parentRoles) {
+                     if (parentRole.getId().equals(roleId)) {
+                            this.parentRoles.remove(parentRole);
+                            break;
+                     }
+              }
+       }
+
+       public void removeRoleFunction(String roleFunctionCd) {
+
+              for (RoleFunction roleFunction : this.roleFunctions) {
+                     if (roleFunction.getCode().equals(roleFunctionCd)) {
+                            this.roleFunctions.remove(roleFunction);
+                            break;
+                     }
+              }
+       }
+
+       public int compareTo(Object obj) {
+              EPRole other = (EPRole) obj;
+
+              if (this.appId == null) {
+                     if (other.getAppId() == null) {
+                            return compareByName(other); //equal
+                     } else {
+                            return -1;
+                     }
+              } else if (other.getAppId() == null) {
+                     return 1;
+              } else {
+                     int appIdCompareResult = appId.compareTo(other.getAppId());
+                     return appIdCompareResult == 0 ? compareByName(other) : appIdCompareResult;
+              }
+       }
+
+       private int compareByName(EPRole other) {
+              String c1 = getName();
+              String c2 = other.getName();
+
+              return (c1 == null || c2 == null) ? 1 : c1.compareTo(c2);
+       }
+
+       @Override
+       public String toString() {
+              return "[Id = " + id + ", name = " + name + "]";
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUser.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUser.java
new file mode 100644 (file)
index 0000000..d22fb08
--- /dev/null
@@ -0,0 +1,235 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import javax.validation.Valid;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import org.hibernate.validator.constraints.SafeHtml;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+
+@Getter
+@Setter
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPUser extends User {
+
+       private Long orgId;
+       private Long managerId;
+       @SafeHtml
+       private String firstName;
+       @SafeHtml
+       private String middleInitial;
+       @SafeHtml
+       private String lastName;
+       @SafeHtml
+       private String phone;
+       @SafeHtml
+       private String fax;
+       @SafeHtml
+       private String cellular;
+       @SafeHtml
+       private String email;
+       private Long addressId;
+       @SafeHtml
+       private String alertMethodCd;
+       @SafeHtml
+       private String hrid;
+       @SafeHtml
+       private String orgUserId;
+       @SafeHtml
+       private String orgCode;
+       @SafeHtml
+       private String address1;
+       @SafeHtml
+       private String address2;
+       @SafeHtml
+       private String city;
+       @SafeHtml
+       private String state;
+       @SafeHtml
+       private String zipCode;
+       @SafeHtml
+       private String country;
+       @SafeHtml
+       private String orgManagerUserId;
+       @SafeHtml
+       private String locationClli;
+       @SafeHtml
+       private String businessCountryCode;
+       @SafeHtml
+       private String businessCountryName;
+       @SafeHtml
+       private String businessUnit;
+       @SafeHtml
+       private String businessUnitName;
+       @SafeHtml
+       private String department;
+       @SafeHtml
+       private String departmentName;
+       @SafeHtml
+       private String companyCode;
+       @SafeHtml
+       private String company;
+       @SafeHtml
+       private String zipCodeSuffix;
+       @SafeHtml
+       private String jobTitle;
+       @SafeHtml
+       private String commandChain;
+       @SafeHtml
+       private String siloStatus;
+       @SafeHtml
+       private String costCenter;
+       @SafeHtml
+       private String financialLocCode;
+       @SafeHtml
+       private String loginId;
+       @SafeHtml
+       private String loginPwd;
+       private Date lastLoginDate;
+       private boolean active;
+       private boolean internal;
+       private Long selectedProfileId;
+       private Long timeZoneId;
+       private boolean online;
+       @SafeHtml
+       private String chatId;
+       private boolean systemUser;
+       private Integer languageId;
+       private static final long serialVersionUID = 1L;
+       private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EPUser.class);
+       private static final String ECOMP_PORTAL_NAME = "ECOMP";
+       private boolean isGuest = false;
+       @Valid
+       private SortedSet<EPUserApp> userApps = new TreeSet<>();
+       @Valid
+       private SortedSet<EPRole> pseudoRoles = new TreeSet<>();
+
+       @JsonIgnore
+       public String getFullName() {
+              return getFirstName() + " " + getLastName();
+       }
+
+       public int compareTo(Object obj) {
+              EPUser user = (EPUser) obj;
+
+              String c1 = getLastName() + getFirstName() + getMiddleInitial();
+              String c2 = user.getLastName() + user.getFirstName() + user.getMiddleInitial();
+
+              return c1.compareTo(c2);
+       }
+
+
+       public void addAppRoles(EPApp app, SortedSet<EPRole> roles) {
+              if (roles != null) {
+                     // add all
+                     SortedSet<EPUserApp> userApps = new TreeSet<>();
+                     // this.userApps.removeAll(this.userApps);
+                     for (EPRole role : roles) {
+                            EPUserApp userApp = new EPUserApp();
+                            userApp.setUserId(this.id);
+                            userApp.setApp(app);
+                            userApp.setRole(role);
+                            userApps.add(userApp);
+                     }
+                     setUserApps(userApps);
+              } else {
+                     setUserApps(null);
+              }
+
+       }
+
+       public SortedSet<EPRole> getAppEPRoles(EPApp app) {
+
+              logger.debug(EELFLoggerDelegate.debugLogger, "In EPUser.getAppEPRoles() - app = {}", app.getName());
+
+              SortedSet<EPRole> roles = new TreeSet<>();
+              SortedSet<EPUserApp> userAppRoles = getUserApps();
+
+              logger.debug(EELFLoggerDelegate.debugLogger, "In EPUser.getAppEPRoles() - userApps = {} ",
+                      userAppRoles.size());
+
+              Iterator<EPUserApp> userAppRolesIterator = userAppRoles.iterator();
+
+              EPUserApp userAppRole;
+              // getting default app
+              while (userAppRolesIterator.hasNext()) {
+                     EPUserApp tempUserApp = userAppRolesIterator.next();
+                     if (tempUserApp.getApp().getId().equals(app.getId())) {
+
+                            logger.debug(EELFLoggerDelegate.debugLogger,
+                                    "In EPUser.getAppEPRoles() - for user {}, found application {}", this.getFullName(),
+                                    app.getName());
+
+                            userAppRole = tempUserApp;
+
+                            EPRole role = userAppRole.getRole();
+                            if (role.isActive()) {
+                                   logger.debug(EELFLoggerDelegate.debugLogger,
+                                           "In EPUser.getAppEPRoles() - Role {} is active - adding for user {} and app {}",
+                                           role.getName(), this.getFullName(), app.getName());
+                                   roles.add(role);
+                            } else {
+                                   logger.debug(EELFLoggerDelegate.debugLogger,
+                                           "In EPUser.getAppEPRoles() - Role {} is NOT active - NOT adding for user {} and app {}",
+                                           role.getName(), this.getFullName(), app.getName());
+                            }
+                     }
+              }
+              logger.debug(EELFLoggerDelegate.debugLogger, "In EPUser.getAppEPRoles() - roles = {}", roles.size());
+
+              return roles;
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserApp.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserApp.java
new file mode 100644 (file)
index 0000000..52d42fb
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import javax.validation.Valid;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPUserApp extends DomainVo implements java.io.Serializable, Comparable {
+
+       private static final long serialVersionUID = 1L;
+       
+       private Long userId;
+       @Valid
+       private EPApp app;
+       @Valid
+       private EPRole role;
+
+       private Integer priority;
+
+       public EPUserApp(final Long userId, final EPApp app, final EPRole role) {
+               this.userId = userId;
+               this.app = app;
+               this.role = role;
+       }
+
+       public Long getAppId() {
+               return this.getApp().getId();
+       }
+       
+       public Long getRoleId() {
+               return (role == null) ? null : role.getId();
+       }
+       
+       public Long getAppRoleId() {
+               return this.role.getAppRoleId();
+       }
+               
+       @Override 
+       public String toString() {
+               return "[u: "+getUserId()+"; a: "+getAppId()+", r: "+getRoleId()+"; appRoleId: "+getAppRoleId()+"]";
+       }
+
+       public Integer getPriority() {
+               return (this.priority == null) ? 1 : priority;
+       }
+
+
+       @Override
+       public boolean equals(Object other) {
+               if ((this == other))
+                       return true;
+               if ((other == null))
+                       return false;
+               if (!(other instanceof EPUserApp))
+                       return false;
+               EPUserApp castOther = (EPUserApp) other;
+
+               return (otherUserIdIsSameAsThisUserId(castOther))
+                               && (otherAppIdIsSameAsThis(castOther))
+                               && (otherRoleIsSameAsThis(castOther))
+                               && (otherPriorityIsSameAsThis(castOther));
+       }
+
+       public int hashCode() {
+               int result = 17;
+
+               result = 37 * result + (this.getUserId()==null ? 0 : this.getUserId().intValue());
+               result = 37 * result + (this.getApp().getId()==null ? 0 : this.getApp().getId().intValue());
+               result = 37 * result + (this.getRole().getId()==null ? 0 : this.getRole().getId().intValue());
+               result = 37 * result + (this.priority==null ? 0 : this.priority);
+               return result;
+       }
+
+       public int compareTo(Object other){
+           EPUserApp castOther = (EPUserApp) other;
+
+           Long c1 = (this.getUserId()==null ? 0 : this.getUserId()) + (this.getApp()==null||this.getApp().getId()==null ? 0 : this.getApp().getId()) + (this.getRole()==null||this.getRole().getId()==null ? 0 : this.getRole().getId()) + (this.priority==null ? 0 : this.priority);
+           Long c2 = (castOther.getUserId()==null ? 0 : castOther.getUserId()) + (castOther.getApp()==null||castOther.getApp().getId()==null ? 0 : castOther.getApp().getId()) + (castOther.getRole()==null||castOther.getRole().getId()==null ? 0 : castOther.getRole().getId()) + (castOther.priority==null ? 0 : castOther.priority);
+
+           return c1.compareTo(c2);
+       }
+       private boolean otherPriorityIsSameAsThis(EPUserApp other){
+               return (this.priority==null && other.getPriority()==null) || this.getPriority().equals(other.getPriority());
+       }
+
+       private boolean otherRoleIsSameAsThis(EPUserApp other){
+               return this.getRole().getId().equals(other.getRole().getId());
+       }
+
+       private boolean otherAppIdIsSameAsThis(EPUserApp other){
+               return this.getApp().getId().equals(other.getApp().getId());
+       }
+
+       private boolean otherUserIdIsSameAsThisUserId(EPUserApp other){
+               return this.getUserId().equals(other.getUserId());
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppCatalogRoles.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppCatalogRoles.java
new file mode 100644 (file)
index 0000000..c5fbd40
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude
+public class EPUserAppCatalogRoles extends DomainVo {
+
+       private static final long serialVersionUID = -5259869298825093816L;
+
+       private Long requestedRoleId;
+       private String rolename;
+       private String requestStatus;
+       private Long appId;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppRoles.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppRoles.java
new file mode 100644 (file)
index 0000000..12cad85
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class EPUserAppRoles extends DomainVo {
+
+       private static final long serialVersionUID = -1484592641766545668L;
+
+       private Long roleId;
+       private Long appId;
+
+}
+
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppRolesRequest.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppRolesRequest.java
new file mode 100644 (file)
index 0000000..6158535
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.util.Date;
+import java.util.Set;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@EqualsAndHashCode(callSuper = false)
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPUserAppRolesRequest extends DomainVo {
+
+       private static final long serialVersionUID = -7225288307806389019L;
+
+       private Long userId;
+       private Long appId;
+       private Date createdDate;
+       private Date updatedDate;
+       private String requestStatus;
+       private Set<EPUserAppRolesRequestDetail> epRequestIdDetail;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppRolesRequestDetail.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppRolesRequestDetail.java
new file mode 100644 (file)
index 0000000..61e746a
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPUserAppRolesRequestDetail extends DomainVo {
+
+       private static final long serialVersionUID = -4908856671135348157L;
+
+       private Long reqRoleId;
+       private String reqType;
+       private EPUserAppRolesRequest epRequestIdData;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppsManualSortPreference.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppsManualSortPreference.java
new file mode 100644 (file)
index 0000000..67779ce
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPUserAppsManualSortPreference extends DomainVo {
+
+       private static final long serialVersionUID = -6270136291139278216L;
+       private Long userId;
+       private Long appId;
+       private int appManualSortOrder;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppsSortPreference.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppsSortPreference.java
new file mode 100644 (file)
index 0000000..ad821a2
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPUserAppsSortPreference extends DomainVo{
+
+       private static final long serialVersionUID = -5267000174894006433L;
+
+       private int userId;
+       private String sortPref;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserNotification.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserNotification.java
new file mode 100644 (file)
index 0000000..864db8b
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.util.Date;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPUserNotification extends DomainVo {
+
+       private Long userId;
+       private Long notificationId;
+       private String viewed;
+       private Date updateTime;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPWidgetsManualSortPreference.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPWidgetsManualSortPreference.java
new file mode 100644 (file)
index 0000000..85146c1
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EPWidgetsManualSortPreference extends DomainVo {
+
+       private static final long serialVersionUID = 4607102334801223570L;
+
+       private Long userId;
+       private Long widgetId;
+       private int widgetRow;
+       private int widgetCol;
+       private int widgetWidth;
+       private int widgetHeight;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompApp.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompApp.java
new file mode 100644 (file)
index 0000000..35cfb96
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EcompApp {
+       
+       protected Long id;
+    private String name;
+       private String imageUrl;
+       private String description;
+       private String notes;
+       private String url;
+       private String alternateUrl;
+       private String uebTopicName;
+       private String uebKey;
+       private String uebSecret;
+       private Boolean enabled;
+       private Boolean restrictedApp;
+       private Boolean centralAuth;
+       private String nameSpace;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompAppRole.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompAppRole.java
new file mode 100644 (file)
index 0000000..20f2a88
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import javax.persistence.IdClass;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@IdClass(EcompAppRoleId.class)
+public class EcompAppRole {
+
+       private Long appId;
+       private String appName;
+       private Integer roleId;
+       private String roleName;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompAppRoleId.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompAppRoleId.java
new file mode 100644 (file)
index 0000000..49795c3
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EcompAppRoleId implements Serializable{
+
+       private static final long serialVersionUID = 1L;
+
+       private Long appId;
+       private String appName;
+       private Integer roleId;
+       private String roleName;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompAuditLog.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EcompAuditLog.java
new file mode 100644 (file)
index 0000000..5241d68
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.util.Date;
+import org.onap.portalsdk.core.domain.AuditLog;
+
+public class EcompAuditLog extends AuditLog {
+
+       private static final long serialVersionUID = 7970458389782626231L;
+
+       public static final String CD_ACTIVITY_ADD_CHILD_ROLE = "add_child_role";
+       public static final String CD_ACTIVITY_ADD_ROLE = "add_role";
+       public static final String CD_ACTIVITY_ADD_ROLE_FUNCTION = "add_role_function";
+       public static final String CD_ACTIVITY_ADD_USER_ROLE = "add_user_role";
+       public static final String CD_ACTIVITY_APP_ACCESS = "app_access";
+       public static final String CD_ACTIVITY_FUNCTIONAL_ACCESS = "functional_access";
+       public static final String CD_ACTIVITY_GUEST_LOGIN = "guest_login";
+       public static final String CD_ACTIVITY_LOGIN = "login";
+       public static final String CD_ACTIVITY_LOGOUT = "logout";
+       public static final String CD_ACTIVITY_MOBILE_LOGIN = "mobile_login";
+       public static final String CD_ACTIVITY_MOBILE_LOGOUT = "mobile_logout";
+       public static final String CD_ACTIVITY_REMOVE_CHILD_ROLE = "remove_child_role";
+       public static final String CD_ACTIVITY_REMOVE_ROLE = "remove_role";
+       public static final String CD_ACTIVITY_REMOVE_ROLE_FUNCTION = "remove_role_function";
+       public static final String CD_ACTIVITY_REMOVE_USER_ROLE = "remove_user_role";
+       public static final String CD_ACTIVITY_TAB_ACCESS = "tab_access";
+       public static final String CD_ACTIVITY_SEARCH = "search";
+       public static final String CD_ACTIVITY_ADD_PORTAL_ADMIN = "apa ";
+       public static final String CD_ACTIVITY_DELETE_PORTAL_ADMIN = "dpa";
+       public static final String CD_ACTIVITY_UPDATE_USER = "uu ";
+       public static final String CD_ACTIVITY_UPDATE_ACCOUNT_ADMIN = "uaa ";
+       public static final String CD_ACTIVITY_STORE_ANALYTICS = "store_analytics";
+       public static final String CD_ACTIVITY_EXTERNAL_AUTH_ADD_ROLE = "eaar";
+       public static final String CD_ACTIVITY_EXTERNAL_AUTH_ADD_FUNCTION = "eaaf";
+       public static final String CD_ACTIVITY_EXTERNAL_AUTH_UPDATE_FUNCTION = "eauf";
+       public static final String CD_ACTIVITY_EXTERNAL_AUTH_UPDATE_ROLE_AND_FUNCTION = "eaurf";
+       public static final String CD_ACTIVITY_EXTERNAL_AUTH_DELETE_ROLE = "eadr";
+       public static final String CD_ACTIVITY_EXTERNAL_AUTH_DELETE_FUNCTION = "eadf";
+
+       public EcompAuditLog() {
+               setCreated(new Date());
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/ExternalRoleDetails.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/ExternalRoleDetails.java
new file mode 100644 (file)
index 0000000..be28e2c
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@EqualsAndHashCode
+@NoArgsConstructor
+@AllArgsConstructor
+public class ExternalRoleDetails implements Comparable {
+
+    private String name;
+    private boolean active;
+    private Integer priority;
+    private Long appId; // used by ONAP only
+    private Long appRoleId; // used by ONAP only
+    private List<EPAppRoleFunction> perms;
+
+    @Override
+    public int compareTo(Object obj) {
+        EPRole other = (EPRole) obj;
+        return (this.getName() == null || other.getName() == null) ? 1 : getName().equals(other.getName()) ? 0 : 1;
+    }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/ExternalSystemAccess.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/ExternalSystemAccess.java
new file mode 100644 (file)
index 0000000..2e8100c
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class ExternalSystemAccess {
+       
+       private String key;
+       private Boolean accessValue;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/FunctionalMenuItemWithAppID.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/FunctionalMenuItemWithAppID.java
new file mode 100644 (file)
index 0000000..275d1f9
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.util.List;
+import javax.validation.constraints.Digits;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import org.hibernate.validator.constraints.SafeHtml;
+
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class FunctionalMenuItemWithAppID {
+
+       private static final long serialVersionUID = 1L;
+
+       @Digits(integer = 11, fraction = 0)
+       private Long menuId;
+       @Digits(integer = 2, fraction = 0)
+       @NotNull
+       private Integer column;
+       @Max(value = 100)
+       @SafeHtml
+       @NotNull
+       private String text;
+       @Digits(integer = 11, fraction = 0)
+       private Integer parentMenuId;
+       @Max(value = 128)
+       @SafeHtml
+       @NotNull
+       private String url;
+       @Max(value = 1)
+       @SafeHtml
+       @NotNull
+       private String active_yn;
+       private Integer appid;
+       private List<Integer> roles;
+       private Boolean restrictedApp;
+
+       public void normalize() {
+              if (this.column == null) {
+                     this.column = 1;
+              }
+              this.text = (this.text == null) ? "" : this.text.trim();
+              if (this.parentMenuId == null) {
+                     this.parentMenuId = -1;
+              }
+              this.url = (this.url == null) ? "" : this.url.trim();
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/GetAccessResult.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/GetAccessResult.java
new file mode 100644 (file)
index 0000000..185a9fc
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude
+public class GetAccessResult implements Serializable{
+
+
+       private static final long serialVersionUID = 5239527705869613411L;
+
+       private String rowId;
+       private Long roleId;
+       private String ecompFunction;
+       private String appName;
+       private Integer appMotsId;
+       private String roleName;
+       private String roleActive;
+       private String reqType;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/GetAccessResultId.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/GetAccessResultId.java
new file mode 100644 (file)
index 0000000..7602aed
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class GetAccessResultId implements Serializable{
+
+       private static final long serialVersionUID = 1L;
+
+       private String ecompFunction;
+       private String appName;
+       private String roleName;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/Language.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/Language.java
new file mode 100644 (file)
index 0000000..7e7d310
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.Data;
+
+@Data
+public class Language {
+
+    private String languageId;
+    private String languageName;
+    private String languageAlias;
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/MicroserviceData.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/MicroserviceData.java
new file mode 100644 (file)
index 0000000..232c8d1
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.util.List;
+import javax.validation.Valid;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import org.hibernate.validator.constraints.SafeHtml;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class MicroserviceData extends DomainVo {
+
+       private static final long serialVersionUID = 1L;
+
+       private Long id;
+       @SafeHtml
+       private String name;
+       @SafeHtml
+       private String active;
+       @SafeHtml
+       private String desc;
+       private long appId;
+       @SafeHtml
+       private String url;
+       @SafeHtml
+       private String securityType;
+       @SafeHtml
+       private String username;
+       @SafeHtml
+       private String password;
+       @Valid
+       private List<MicroserviceParameter> parameterList;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/MicroserviceParameter.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/MicroserviceParameter.java
new file mode 100644 (file)
index 0000000..9978295
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import org.hibernate.validator.constraints.SafeHtml;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class MicroserviceParameter extends DomainVo {
+
+       private static final long serialVersionUID = 1L;
+
+       private Long id;
+       private long serviceId;
+       @SafeHtml
+       private String para_key;
+       @SafeHtml
+       private String para_value;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PersUserAppSelection.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PersUserAppSelection.java
new file mode 100644 (file)
index 0000000..b2d322b
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class PersUserAppSelection extends DomainVo {
+
+       private static final long serialVersionUID = 1545308654500121206L;
+
+       private Long userId;
+       private Long appId;
+       private String statusCode;
+
+       public PersUserAppSelection(final Long id, final Long userId, final Long appId, final String statusCode) {
+              super.id = id;
+              this.userId = userId;
+              this.appId = appId;
+              this.statusCode = statusCode;
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PersUserWidgetSelection.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PersUserWidgetSelection.java
new file mode 100644 (file)
index 0000000..54eba6a
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class PersUserWidgetSelection extends DomainVo {
+
+       private static final long serialVersionUID = -6547880514779039200L;
+
+       private Long userId;
+       private Long widgetId;
+       private String statusCode;
+
+       public PersUserWidgetSelection(final Long id, final Long userId, final Long widgetId, final String statusCode) {
+               super.id = id;
+               this.userId = userId;
+               this.widgetId = widgetId;
+               this.statusCode = statusCode;
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PortalRestResponse.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PortalRestResponse.java
new file mode 100644 (file)
index 0000000..3654055
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class PortalRestResponse<T> {
+       
+       private PortalRestStatusEnum status;
+       private String message;
+       private T response;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PortalRestStatusEnum.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/PortalRestStatusEnum.java
new file mode 100644 (file)
index 0000000..d8b69fc
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+public enum PortalRestStatusEnum{
+       OK("ok"),
+       WARN("WARNING"),
+       ERROR("error");
+       
+       private String value;
+       PortalRestStatusEnum(String value){
+               this.value = value;
+       }
+       
+       @Override
+    public String toString() {
+        return value;
+    }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/RoleApp.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/RoleApp.java
new file mode 100644 (file)
index 0000000..e7a9d57
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import java.util.Set;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class RoleApp implements Serializable {
+
+       private static final long serialVersionUID = 1L;
+
+       private Long roleId;
+       private String roleName;
+       private App app;
+       private Set<WidgetCatalog> widgets;
+
+       @Override
+       public String toString() {
+              return "Role [roleId=" + roleId + ", roleName=" + roleName + ", app=" + app + "]";
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/SearchResultItem.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/SearchResultItem.java
new file mode 100644 (file)
index 0000000..4d4b6d5
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class SearchResultItem extends DomainVo{
+
+       private String rowId;
+       @JsonProperty("category")
+       private String category;
+       @JsonProperty("name")
+       private String name;
+       @JsonProperty("target")
+       private String target;
+       @JsonProperty("uuid")
+       private String uuid;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/SharedContext.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/SharedContext.java
new file mode 100644 (file)
index 0000000..2a31d1c
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.util.Date;
+import javax.validation.constraints.Digits;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.validator.constraints.SafeHtml;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class SharedContext extends DomainVo {
+
+       private static final long serialVersionUID = 7287469622586677888L;
+
+       @Digits(integer = 11, fraction = 0)
+       private Long id;
+       @NotNull
+       private Date create_time;
+       @NotNull
+       @SafeHtml
+       @Size(max = 64)
+       private String context_id;
+       @NotNull
+       @SafeHtml
+       @Size(max = 128)
+       private String ckey;
+       @NotNull
+       @SafeHtml
+       @Size(max = 1024)
+       private String cvalue;
+
+       public SharedContext(final String contextId, final String key, final String value) {
+               this.context_id = contextId;
+               this.ckey = key;
+               this.cvalue = value;
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UploadRoleFunctionExtSystem.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UploadRoleFunctionExtSystem.java
new file mode 100644 (file)
index 0000000..1450576
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class UploadRoleFunctionExtSystem implements Serializable {
+
+       private static final long serialVersionUID = -5543202387278296091L;
+
+       private String roleName;
+       private String type;
+       private String instance;
+       private String action;
+       private String name;
+       private boolean isGlobalRolePartnerFunc;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserIdRoleId.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserIdRoleId.java
new file mode 100644 (file)
index 0000000..d083398
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserIdRoleId implements Serializable{
+       
+       private static final long serialVersionUID = 1L;
+
+       private String user_Id;
+       private String roleId;
+       private String orgUserId;
+       private String appId;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRole.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRole.java
new file mode 100644 (file)
index 0000000..75b4b2d
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserRole implements Serializable {
+
+       private static final long serialVersionUID = 1L;
+
+       private Long user_Id;
+       private Long roleId;
+       private String orgUserId;
+       private String firstName;
+       private String lastName;
+       private String roleName;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRoles.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRoles.java
new file mode 100644 (file)
index 0000000..3b435e8
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserRoles implements Serializable {
+
+       private static final long serialVersionUID = 1L;
+
+       private String orgUserId;
+       private String firstName;
+       private String lastName;
+       private boolean guestSession;
+       private List<String> roles = new ArrayList<>();
+
+       public UserRoles(UserRole user) {
+               setOrgUserId(user.getOrgUserId());
+               setFirstName(user.getFirstName());
+               setLastName(user.getLastName());
+               setGuestSession(user.getUser_Id() == -1);
+
+               addRole(user.getRoleName());
+       }
+
+       private void addRole(String roleName) {
+               if (!getRoles().contains(roleName)) {
+                       this.roles.add(roleName);
+               }
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/Widget.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/Widget.java
new file mode 100644 (file)
index 0000000..206484f
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.lang.StringUtils;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@AllArgsConstructor
+public class Widget extends DomainVo {
+
+       private static final long serialVersionUID = 1L;
+
+       private String name;
+       private Integer width;
+       private Integer height;
+       private String url;
+       private Long appId;
+
+       public Widget() {
+               this.name = "";
+               this.width = 0;
+               this.height = 0;
+               this.url = "";
+       }
+
+       public Widget(Long appId, String name, String url) {
+               this.name = name;
+               this.url = url;
+               this.appId = appId;
+       }
+
+       public void setName(String name) {
+               if (StringUtils.isEmpty(name)) {
+                       name = "";
+               }
+               this.name = name;
+       }
+
+       public void setWidth(Integer width) {
+               if (width == null) {
+                       width = 0;
+               }
+               this.width = width;
+       }
+
+       public void setHeight(Integer height) {
+               if (height == null) {
+                       height = 0;
+               }
+               this.height = height;
+       }
+
+       public void setUrl(String url) {
+               if (StringUtils.isEmpty(url)) {
+                       url = "";
+               }
+               this.url = url;
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetCatalog.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetCatalog.java
new file mode 100644 (file)
index 0000000..0542b16
--- /dev/null
@@ -0,0 +1,127 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 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
+ *
+ * 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============================================
+ *
+ * 
+ */
+package org.onap.portal.domain.dto.ecomp;
+
+import java.io.Serializable;
+import java.util.Set;
+
+public class WidgetCatalog implements Serializable{
+
+       private static final long serialVersionUID = 1L;
+
+       private long id;
+       
+       private String name;
+       
+       private String desc;
+       
+       private String fileLocation;
+       
+       private String allowAllUser;
+       
+       private Long serviceId;
+       
+       private String sortOrder;
+
+       private String statusCode;
+       
+       private Set<RoleApp> widgetRoles;
+       
+       public long getId() {
+               return id;
+       }
+       public void setId(long id) {
+               this.id = id;
+       }
+       public String getName() {
+               return name;
+       }
+       public void setName(String name) {
+               this.name = name;
+       }
+       
+       public Long getServiceId() {
+               return serviceId;
+       }
+       public void setServiceId(Long serviceId) {
+               this.serviceId = serviceId;
+       }
+       public String getDesc() {
+               return desc;
+       }
+       public void setDesc(String desc) {
+               this.desc = desc;
+       }
+       public String getFileLocation() {
+               return fileLocation;
+       }
+       public void setFileLocation(String fileLocation) {
+               this.fileLocation = fileLocation;
+       }
+       
+       public String getAllowAllUser() {
+               return allowAllUser;
+       }
+       public void setAllowAllUser(String allowAllUser) {
+               this.allowAllUser = allowAllUser;
+       }
+       public Set<RoleApp> getWidgetRoles() {
+               return widgetRoles;
+       }
+       public void setWidgetRoles(Set<RoleApp> widgetRoles) {
+               this.widgetRoles = widgetRoles;
+       }
+       
+       public String getSortOrder() {
+               return sortOrder;
+       }
+       public void setSortOrder(String sortOrder) {
+               this.sortOrder = sortOrder;
+       }
+       public String getStatusCode() {
+               return statusCode;
+       }
+       public void setStatusCode(String statusCode) {
+               this.statusCode = statusCode;
+       }
+       @Override
+       public String toString() {
+               return "WidgetCatalog [id=" + id + ", name=" + name + ", desc=" + desc + ", fileLocation=" + fileLocation
+                               + ", allowAllUser=" + allowAllUser + "]";
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetCatalogParameter.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetCatalogParameter.java
new file mode 100644 (file)
index 0000000..e5e7255
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.dto.DomainVo;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class WidgetCatalogParameter extends DomainVo{
+       
+       private static final long serialVersionUID = 1L;
+
+       private Long id;
+       private Long widgetId;
+       private Long userId;
+       private Long paramId;
+       private String userValue;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetParameterResult.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetParameterResult.java
new file mode 100644 (file)
index 0000000..37b1873
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class WidgetParameterResult {
+       
+       private Long paramId;
+       private String paramKey;
+       private String userValue;
+       private String defaultValue;
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetServiceHeaders.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/WidgetServiceHeaders.java
new file mode 100644 (file)
index 0000000..2be8c55
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.dto.ecomp;
+
+import java.nio.charset.Charset;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.codec.binary.Base64;
+import org.onap.portal.utils.EcompPortalUtils;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
+import org.springframework.http.HttpHeaders;
+
+@Getter
+@Setter
+public class WidgetServiceHeaders {
+
+       private WidgetServiceHeaders(){}
+       
+       private static HttpHeaders widgetHeaders;
+
+       public static HttpHeaders getInstance() throws Exception{
+               if(null == widgetHeaders){
+                  return new HttpHeaders(){{
+                               
+                                   String username = EcompPortalUtils
+                                               .getPropertyOrDefault("microservices.widget.username", "widget_user");
+                                   String password = CipherUtil.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password"));
+                               String auth = username + ":" + password;
+                               byte[] encodedAuth = Base64.encodeBase64( 
+                                  auth.getBytes(Charset.forName("US-ASCII")) );
+                               String authHeader = "Basic " + new String( encodedAuth );
+                               set( "Authorization", authHeader );
+                             }
+                          };
+               }
+               else 
+                       return widgetHeaders;
+               
+       }
+}
index f8ae95d..c107d19 100644 (file)
@@ -42,13 +42,14 @@ package org.onap.portal.domain.dto.fn;
 
 import java.time.LocalDateTime;
 import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
 @Setter
 @Getter
-
+@Builder
 @NoArgsConstructor
 @AllArgsConstructor
 public class FnUserDto {
@@ -70,12 +71,12 @@ public class FnUserDto {
        private String loginId;
        private String loginPwd;
        protected LocalDateTime lastLoginDate;
-       private String activeYn;
+       private Boolean activeYn;
        private Long createdId;
        protected LocalDateTime createdDate;
        private Long modifiedId;
        protected LocalDateTime modifiedDate;
-       private String isInternalYn = "n";
+       private Boolean isInternalYn = false;
        private String addressLine1;
        private String addressLine2;
        private String city;
index 17f6382..4aa79cc 100644 (file)
@@ -46,11 +46,11 @@ import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
-import org.onap.portalsdk.core.domain.support.DomainVo;
+import org.onap.portal.domain.dto.DomainVo;
 
 @Getter
 @Setter
-@EqualsAndHashCode()
+@EqualsAndHashCode
 @NoArgsConstructor
 @AllArgsConstructor
 public class CentralV2RoleFunction extends DomainVo implements Serializable, Comparable {
index 8cc3a5a..ed07408 100644 (file)
@@ -60,14 +60,13 @@ public class CentralV2UserApp implements Serializable, Comparable {
     private CentralV2Role role;
     private Integer priority;
 
-    public int compareTo(Object other) {
-        CentralV2UserApp castOther = (CentralV2UserApp) other;
-
-        Long c1 = (this.getUserId() == null ? 0 : this.getUserId()) + (this.priority == null ? 0 : this.priority);
-        Long c2 = (castOther.getUserId() == null ? 0 : castOther.getUserId());
-        c2 += (castOther.getApp() == null || castOther.getApp().getId() == null ? 0 : castOther.getApp().getId());
-        c2 += (castOther.priority == null ? 0 : castOther.priority);
+       public int compareTo(Object other){
+               CentralV2UserApp castOther = (CentralV2UserApp) other;
 
+               Long c1 = (this.getUserId() == null ? 0 : this.getUserId()) + (this.priority == null ? 0 : this.priority);
+               Long c2 = (castOther.getUserId() == null ? 0 : castOther.getUserId());
+               c2 += (castOther.getApp() == null || castOther.getApp().getId() == null ? 0 : castOther.getApp().getId());
+               c2 += (castOther.priority == null ? 0 : castOther.priority);
         return c1.compareTo(c2);
     }
 
index f06e517..c9fce6d 100644 (file)
@@ -50,7 +50,7 @@ import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.ToString;
 import org.hibernate.validator.constraints.SafeHtml;
-import org.onap.portalsdk.core.domain.support.DomainVo;
+import org.onap.portal.domain.dto.DomainVo;
 
 
 @Getter
@@ -59,7 +59,7 @@ import org.onap.portalsdk.core.domain.support.DomainVo;
 @NoArgsConstructor
 @AllArgsConstructor
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class CommonWidget extends DomainVo{
+public class CommonWidget extends DomainVo {
 
        private static final long serialVersionUID = 7897021982887364557L;
 
index 2efc3dc..a3f8af6 100644 (file)
@@ -53,13 +53,13 @@ import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.ToString;
 import org.hibernate.validator.constraints.SafeHtml;
-import org.onap.portalsdk.core.domain.support.DomainVo;
+import org.onap.portal.domain.dto.DomainVo;
 
 @Getter
 @Setter
 @Builder
 @ToString
-@EqualsAndHashCode()
+@EqualsAndHashCode(callSuper = false)
 @NoArgsConstructor
 @AllArgsConstructor
 public class EpNotificationItem extends DomainVo {
index 6f36dd7..3c80e16 100644 (file)
@@ -45,7 +45,7 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
-import org.onap.portalsdk.core.domain.support.DomainVo;
+import org.onap.portal.domain.dto.DomainVo;
 
 @Getter
 @Setter
index 248ad73..1f6f161 100644 (file)
@@ -45,7 +45,7 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
-import org.onap.portalsdk.core.domain.support.DomainVo;
+import org.onap.portal.domain.dto.DomainVo;
 
 @Getter
 @Setter
index 1358233..de176af 100644 (file)
@@ -118,12 +118,8 @@ public class ExternalAccessPerms implements Serializable, Comparable {
             return false;
         }
         if (type == null) {
-            if (other.type != null) {
-                return false;
-            }
-        } else if (!type.equals(other.type)) {
-            return false;
-        }
-        return true;
+            return other.type == null;
+        } else
+            return type.equals(other.type);
     }
 }
index d2bdd94..1999d23 100644 (file)
@@ -60,6 +60,10 @@ public class FieldsValidator {
        private Long errorCode;
        private List<FieldName> fields = new ArrayList<>();
 
+       public void addProblematicFieldName(String fieldName){
+               fields.add(new FieldName(fieldName));
+       }
+
        @Getter
        @Setter
        @ToString
@@ -68,5 +72,4 @@ public class FieldsValidator {
        public class FieldName {
                public String name;
        }
-
 }
index e08d033..de13bec 100644 (file)
@@ -41,7 +41,6 @@
 package org.onap.portal.domain.dto.transport;
 
 import java.io.Serializable;
-import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
@@ -50,30 +49,43 @@ import org.hibernate.validator.constraints.SafeHtml;
 @Getter
 @Setter
 @NoArgsConstructor
-@AllArgsConstructor
 public class OnboardingWidget implements Serializable {
 
-       private static final long serialVersionUID = 1L;
+       private static final long serialVersionUID = 1L;
 
-       private Long id;
-       @SafeHtml
-       private String name;
-       private Long appId;
-       @SafeHtml
-       private String appName;
-       private Integer width;
-       private Integer height;
-       @SafeHtml
-       private String url;
+       private Long id;
+       @SafeHtml
+       private String name;
+       private Long appId;
+       @SafeHtml
+       private String appName;
+       private Integer width;
+       private Integer height;
+       @SafeHtml
+       private String url;
 
-       public void normalize() {
-               this.name = (this.name == null) ? "" : this.name.trim();
-               this.appName = (this.appName == null) ? "" : this.appName.trim();
-               if (this.width == null)
-                       this.width = 0;
-               if (this.height == null)
-                       this.height = 0;
-               this.url = (this.url == null) ? "" : this.url.trim();
-       }
+       public OnboardingWidget(Long id, String name, Long appId,
+               String appName, Integer width, Integer height,
+               String url) {
+              this.id = id;
+              this.name = name;
+              this.appId = appId;
+              this.appName = appName;
+              this.width = width;
+              this.height = height;
+              this.url = url;
+       }
+
+       public void normalize() {
+              this.name = (this.name == null) ? "" : this.name.trim();
+              this.appName = (this.appName == null) ? "" : this.appName.trim();
+              if (this.width == null) {
+                     this.width = 0;
+              }
+              if (this.height == null) {
+                     this.height = 0;
+              }
+              this.url = (this.url == null) ? "" : this.url.trim();
+       }
 
 }
index 757eff5..869ba81 100644 (file)
 package org.onap.portal.domain.mapper;
 
 import lombok.NoArgsConstructor;
-import org.onap.portal.domain.builder.FnUserBuilder;
-import org.onap.portal.domain.builder.FnUserDtoBuilder;
 import org.onap.portal.domain.db.fn.FnUser;
 import org.onap.portal.domain.dto.fn.FnUserDto;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
 @NoArgsConstructor
 public class FnUserMapper {
+              public FnUserDto fnUserToFnUserDto(final FnUser fnUser){
+              return FnUserDto.builder()
+                      .userId(fnUser.getUserId())
+                      .orgId(fnUser.getOrgId().getOrgId())
+                      .managerId(fnUser.getManagerId().getUserId())
+                      .firstName(fnUser.getFirstName())
+                      .middleName(fnUser.getMiddleName())
+                      .lastName(fnUser.getLastName())
+                      .phone(fnUser.getPhone())
+                      .fax(fnUser.getFax())
+                      .cellular(fnUser.getCellular())
+                      .email(fnUser.getEmail())
+                      .addressId(fnUser.getAddressId())
+                      .alertMethodCd(fnUser.getAlertMethodCd().getAlertMethodCd())
+                      .hrid(fnUser.getHrid())
+                      .orgUserId(fnUser.getOrgUserId())
+                      .org_code(fnUser.getOrg_code())
+                      .loginId(fnUser.getLoginId())
+                      .loginPwd(fnUser.getLoginPwd())
+                      .lastLoginDate(fnUser.getLastLoginDate())
+                      .activeYn(fnUser.getActiveYn())
+                      .createdId(fnUser.getCreatedId().getUserId())
+                      .createdDate(fnUser.getCreatedDate())
+                      .modifiedId(fnUser.getModifiedId().getUserId())
+                      .modifiedDate(fnUser.getModifiedDate())
+                      .isInternalYn(fnUser.getIsInternalYn())
+                      .addressLine1(fnUser.getAddressLine1())
+                      .addressLine2(fnUser.getAddressLine2())
+                      .city(fnUser.getCity())
+                      .stateCd(fnUser.getStateCd())
+                      .zipCode(fnUser.getZipCode())
+                      .countryCd(fnUser.getCountryCd())
+                      .locationClli(fnUser.getLocationClli())
+                      .orgManagerUserId(fnUser.getOrgManagerUserId())
+                      .company(fnUser.getCompany())
+                      .departmentName(fnUser.getDepartmentName())
+                      .jobTitle(fnUser.getJobTitle())
+                      .timezone(fnUser.getTimezone().getTimezoneId())
+                      .department(fnUser.getDepartment())
+                      .businessUnit(fnUser.getBusinessUnit())
+                      .businessUnitName(fnUser.getBusinessUnitName())
+                      .cost_center(fnUser.getCost_center())
+                      .finLocCode(fnUser.getFinLocCode())
+                      .siloStatus(fnUser.getSiloStatus())
+                      .languageId(fnUser.getLanguageId().getLanguageId())
+                      .guest(fnUser.getGuest())
+                      .build();
 
-       private FnUserDtoBuilder fnUserDtoBuilder;
-       private FnUserBuilder fnUserBuilder;
-
-       @Autowired
-       public FnUserMapper(final FnUserDtoBuilder fnUserDtoBuilder,
-               FnUserBuilder fnUserBuilder) {
-              this.fnUserDtoBuilder = fnUserDtoBuilder;
-              this.fnUserBuilder = fnUserBuilder;
-       }
-
-       public FnUserDto fnUserToFnUserDto(final FnUser fnUser){
-              return fnUserDtoBuilder
-                      .setUserId(fnUser.getUserId())
-                      .setOrgId(fnUser.getOrgId().getOrgId())
-                      .setManagerId(fnUser.getManagerId().getUserId())
-                      .setFirstName(fnUser.getFirstName())
-                      .setMiddleName(fnUser.getMiddleName())
-                      .setLastName(fnUser.getLastName())
-                      .setPhone(fnUser.getPhone())
-                      .setFax(fnUser.getFax())
-                      .setCellular(fnUser.getCellular())
-                      .setEmail(fnUser.getEmail())
-                      .setAddressId(fnUser.getAddressId())
-                      .setAlertMethodCd(fnUser.getAlertMethodCd().getAlertMethodCd())
-                      .setHrid(fnUser.getHrid())
-                      .setOrgUserId(fnUser.getOrgUserId())
-                      .setOrg_code(fnUser.getOrg_code())
-                      .setLoginId(fnUser.getLoginId())
-                      .setLoginPwd(fnUser.getLoginPwd())
-                      .setLastLoginDate(fnUser.getLastLoginDate())
-                      .setActiveYn(fnUser.getActiveYn())
-                      .setCreatedId(fnUser.getCreatedId().getUserId())
-                      .setCreatedDate(fnUser.getCreatedDate())
-                      .setModifiedId(fnUser.getModifiedId().getUserId())
-                      .setModifiedDate(fnUser.getModifiedDate())
-                      .setIsInternalYn(fnUser.getIsInternalYn())
-                      .setAddressLine1(fnUser.getAddressLine1())
-                      .setAddressLine2(fnUser.getAddressLine2())
-                      .setCity(fnUser.getCity())
-                      .setStateCd(fnUser.getStateCd())
-                      .setZipCode(fnUser.getZipCode())
-                      .setCountryCd(fnUser.getCountryCd())
-                      .setLocationClli(fnUser.getLocationClli())
-                      .setOrgManagerUserId(fnUser.getOrgManagerUserId())
-                      .setCompany(fnUser.getCompany())
-                      .setDepartmentName(fnUser.getDepartmentName())
-                      .setJobTitle(fnUser.getJobTitle())
-                      .setTimezone(fnUser.getTimezone().getTimezoneId())
-                      .setDepartment(fnUser.getDepartment())
-                      .setBusinessUnit(fnUser.getBusinessUnit())
-                      .setBusinessUnitName(fnUser.getBusinessUnitName())
-                      .setCost_center(fnUser.getCost_center())
-                      .setFinLocCode(fnUser.getFinLocCode())
-                      .setSiloStatus(fnUser.getSiloStatus())
-                      .setLanguageId(fnUser.getLanguageId().getLanguageId())
-                      .setGuest(fnUser.isGuest()).createFnUserDto();
        }
 
        public FnUser fnUserToFnUser(final FnUser fnUser){
-              return fnUserBuilder
-                      .setUserId(fnUser.getUserId())
-                      .setOrgId(fnUser.getOrgId())
-                      .setManagerId(fnUser.getManagerId())
-                      .setFirstName(fnUser.getFirstName())
-                      .setMiddleName(fnUser.getMiddleName())
-                      .setLastName(fnUser.getLastName())
-                      .setPhone(fnUser.getPhone())
-                      .setFax(fnUser.getFax())
-                      .setCellular(fnUser.getCellular())
-                      .setEmail(fnUser.getEmail())
-                      .setAddressId(fnUser.getAddressId())
-                      .setAlertMethodCd(fnUser.getAlertMethodCd())
-                      .setHrid(fnUser.getHrid())
-                      .setOrgUserId(fnUser.getOrgUserId())
-                      .setOrg_code(fnUser.getOrg_code())
-                      .setLoginId(fnUser.getLoginId())
-                      .setLoginPwd(fnUser.getLoginPwd())
-                      .setLastLoginDate(fnUser.getLastLoginDate())
-                      .setActiveYn(fnUser.getActiveYn())
-                      .setCreatedId(fnUser.getCreatedId())
-                      .setCreatedDate(fnUser.getCreatedDate())
-                      .setModifiedId(fnUser.getModifiedId())
-                      .setModifiedDate(fnUser.getModifiedDate())
-                      .setIsInternalYn(fnUser.getIsInternalYn())
-                      .setAddressLine1(fnUser.getAddressLine1())
-                      .setAddressLine2(fnUser.getAddressLine2())
-                      .setCity(fnUser.getCity())
-                      .setStateCd(fnUser.getStateCd())
-                      .setZipCode(fnUser.getZipCode())
-                      .setCountryCd(fnUser.getCountryCd())
-                      .setLocationClli(fnUser.getLocationClli())
-                      .setOrgManagerUserId(fnUser.getOrgManagerUserId())
-                      .setCompany(fnUser.getCompany())
-                      .setDepartmentName(fnUser.getDepartmentName())
-                      .setJobTitle(fnUser.getJobTitle())
-                      .setTimezone(fnUser.getTimezone())
-                      .setDepartment(fnUser.getDepartment())
-                      .setBusinessUnit(fnUser.getBusinessUnit())
-                      .setBusinessUnitName(fnUser.getBusinessUnitName())
-                      .setCost_center(fnUser.getCost_center())
-                      .setFinLocCode(fnUser.getFinLocCode())
-                      .setSiloStatus(fnUser.getSiloStatus())
-                      .setLanguageId(fnUser.getLanguageId())
-                      .setGuest(fnUser.isGuest()).createFnUser();
+              return FnUser.builder()
+                      .userId(fnUser.getUserId())
+                      .orgId(fnUser.getOrgId())
+                      .managerId(fnUser.getManagerId())
+                      .firstName(fnUser.getFirstName())
+                      .middleName(fnUser.getMiddleName())
+                      .lastName(fnUser.getLastName())
+                      .phone(fnUser.getPhone())
+                      .fax(fnUser.getFax())
+                      .cellular(fnUser.getCellular())
+                      .email(fnUser.getEmail())
+                      .addressId(fnUser.getAddressId())
+                      .alertMethodCd(fnUser.getAlertMethodCd())
+                      .hrid(fnUser.getHrid())
+                      .orgUserId(fnUser.getOrgUserId())
+                      .org_code(fnUser.getOrg_code())
+                      .loginId(fnUser.getLoginId())
+                      .loginPwd(fnUser.getLoginPwd())
+                      .lastLoginDate(fnUser.getLastLoginDate())
+                      .activeYn(fnUser.getActiveYn())
+                      .createdId(fnUser.getCreatedId())
+                      .createdDate(fnUser.getCreatedDate())
+                      .modifiedId(fnUser.getModifiedId())
+                      .modifiedDate(fnUser.getModifiedDate())
+                      .isInternalYn(fnUser.getIsInternalYn())
+                      .addressLine1(fnUser.getAddressLine1())
+                      .addressLine2(fnUser.getAddressLine2())
+                      .city(fnUser.getCity())
+                      .stateCd(fnUser.getStateCd())
+                      .zipCode(fnUser.getZipCode())
+                      .countryCd(fnUser.getCountryCd())
+                      .locationClli(fnUser.getLocationClli())
+                      .orgManagerUserId(fnUser.getOrgManagerUserId())
+                      .company(fnUser.getCompany())
+                      .departmentName(fnUser.getDepartmentName())
+                      .jobTitle(fnUser.getJobTitle())
+                      .timezone(fnUser.getTimezone())
+                      .department(fnUser.getDepartment())
+                      .businessUnit(fnUser.getBusinessUnit())
+                      .businessUnitName(fnUser.getBusinessUnitName())
+                      .cost_center(fnUser.getCost_center())
+                      .finLocCode(fnUser.getFinLocCode())
+                      .siloStatus(fnUser.getSiloStatus())
+                      .languageId(fnUser.getLanguageId())
+                      .guest(fnUser.getGuest())
+                      .build();
        }
 }
diff --git a/portal-BE/src/main/java/org/onap/portal/exception/RoleFunctionException.java b/portal-BE/src/main/java/org/onap/portal/exception/RoleFunctionException.java
new file mode 100644 (file)
index 0000000..75ecfa3
--- /dev/null
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 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
+ *
+ * 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============================================
+ *
+ * 
+ */
+
+package org.onap.portal.exception;
+
+import org.apache.commons.codec.DecoderException;
+
+public class RoleFunctionException extends Exception{
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = -3280548136475923423L;
+
+       public RoleFunctionException(String msg, DecoderException e) {
+                  super(msg,e);
+          } 
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/logging/aop/EPAuditLog.java b/portal-BE/src/main/java/org/onap/portal/logging/aop/EPAuditLog.java
new file mode 100644 (file)
index 0000000..43306c4
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.logging.aop;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.METHOD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface EPAuditLog {
+    String value() default "";
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/logging/aop/EPEELFLoggerAdvice.java b/portal-BE/src/main/java/org/onap/portal/logging/aop/EPEELFLoggerAdvice.java
new file mode 100644 (file)
index 0000000..fa8ab5d
--- /dev/null
@@ -0,0 +1,406 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.logging.aop;
+
+import com.att.eelf.configuration.Configuration;
+import java.net.InetAddress;
+import java.security.Principal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.UUID;
+import javax.servlet.http.HttpServletRequest;
+import org.onap.portal.domain.db.fn.FnApp;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.service.fn.FnUserService;
+import org.onap.portal.service.fn.old.AppsCacheService;
+import org.onap.portal.utils.EPCommonSystemProperties;
+import org.onap.portal.utils.EcompPortalUtils;
+import org.onap.portalsdk.core.exception.SessionExpiredException;
+import org.onap.portalsdk.core.logging.format.AlarmSeverityEnum;
+import org.onap.portalsdk.core.logging.format.AuditLogFormatter;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.portalsdk.core.util.SystemProperties.SecurityEventTypeEnum;
+import org.onap.portalsdk.core.web.support.UserUtils;
+import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@org.springframework.context.annotation.Configuration
+public class EPEELFLoggerAdvice {
+
+       private EELFLoggerDelegate adviceLogger = EELFLoggerDelegate.getLogger(EPEELFLoggerAdvice.class);
+
+       private final AppsCacheService appCacheService;
+       private final FnUserService fnUserService;
+
+       @Autowired
+       public EPEELFLoggerAdvice(AppsCacheService appCacheService, FnUserService fnUserService) {
+               this.appCacheService = appCacheService;
+               this.fnUserService = fnUserService;
+       }
+
+       public static String getCurrentDateTimeUTC() {
+               SimpleDateFormat ecompLogDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
+               return ecompLogDateFormat.format(new Date());
+       }
+
+       public void loadServletRequestBasedDefaults(Principal principal, HttpServletRequest req, SecurityEventTypeEnum securityEventType) {
+               try {
+                       setHttpRequestBasedDefaultsIntoGlobalLoggingContext(principal, req, securityEventType, req.getServletPath());
+               } catch (Exception e) {
+                       adviceLogger.error(EELFLoggerDelegate.errorLogger, "loadServletRequestBasedDefaults failed", e);
+               }
+       }
+
+       public Object[] before(Principal principal, SecurityEventTypeEnum securityEventType, Object[] args, Object[] passOnArgs) {
+               String className = "";
+               if (passOnArgs.length > 0 && passOnArgs[0] != null)
+                       className = passOnArgs[0].toString();
+               String methodName = EPCommonSystemProperties.ECOMP_PORTAL_BE;
+               if (passOnArgs.length > 1 && passOnArgs[1] != null)
+                       methodName = passOnArgs[1].toString();
+
+               MDC.put(className + methodName + EPCommonSystemProperties.METRICSLOG_BEGIN_TIMESTAMP, getCurrentDateTimeUTC());
+               MDC.put(EPCommonSystemProperties.TARGET_ENTITY, EPCommonSystemProperties.ECOMP_PORTAL_BE);
+               MDC.put(EPCommonSystemProperties.TARGET_SERVICE_NAME, methodName);
+               if (MDC.get(Configuration.MDC_KEY_REQUEST_ID) == null||MDC.get(Configuration.MDC_KEY_REQUEST_ID).isEmpty()){
+                       String requestId = UUID.randomUUID().toString();
+                       MDC.put(Configuration.MDC_KEY_REQUEST_ID, requestId);
+               }
+               MDC.put(EPCommonSystemProperties.PARTNER_NAME, "Unknown");
+               MDC.put(Configuration.MDC_SERVICE_NAME, EPCommonSystemProperties.ECOMP_PORTAL_BE);
+
+               if (securityEventType != null) {
+                       MDC.put(className + methodName + EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP,
+                                       getCurrentDateTimeUTC());
+                       HttpServletRequest req;
+                       if (args.length > 0 && args[0] != null && args[0] instanceof HttpServletRequest) {
+                               req = (HttpServletRequest) args[0];
+                               this.setHttpRequestBasedDefaultsIntoGlobalLoggingContext(principal, req, securityEventType, methodName);
+                       }
+               }
+
+               EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(className);
+               logger.debug(EELFLoggerDelegate.debugLogger, "EPEELFLoggerAdvice#before: entering {}", methodName);
+               return new Object[] { "" };
+       }
+
+       public void after(Principal principal, SecurityEventTypeEnum securityEventType, String statusCode, String responseCode, Object[] args,
+                       Object[] returnArgs, Object[] passOnArgs) {
+               String className = "";
+               if (passOnArgs.length > 0 && passOnArgs[0] != null)
+                       className = passOnArgs[0].toString();
+               String methodName =  EPCommonSystemProperties.ECOMP_PORTAL_BE;
+               if (passOnArgs.length > 1 && passOnArgs[1] != null)
+                       methodName = passOnArgs[1].toString();
+
+               if (MDC.get(EPCommonSystemProperties.TARGET_SERVICE_NAME) == null
+                               || "".equals(MDC.get(EPCommonSystemProperties.TARGET_SERVICE_NAME)))
+                       MDC.put(EPCommonSystemProperties.TARGET_SERVICE_NAME, methodName);
+
+               if (MDC.get(EPCommonSystemProperties.TARGET_ENTITY) == null
+                               || "".equals(MDC.get(EPCommonSystemProperties.TARGET_ENTITY)))
+                       MDC.put(EPCommonSystemProperties.TARGET_ENTITY, EPCommonSystemProperties.ECOMP_PORTAL_BE);
+
+               if (MDC.get(Configuration.MDC_KEY_REQUEST_ID) == null||MDC.get(Configuration.MDC_KEY_REQUEST_ID).isEmpty()){
+                       String requestId = UUID.randomUUID().toString();
+                       MDC.put(Configuration.MDC_KEY_REQUEST_ID, requestId);
+               }
+
+               if (MDC.get(EPCommonSystemProperties.PARTNER_NAME) == null|| MDC.get(EPCommonSystemProperties.PARTNER_NAME).isEmpty()){
+                       MDC.put(EPCommonSystemProperties.PARTNER_NAME, "Unknown");
+               }
+
+               MDC.put(Configuration.MDC_SERVICE_NAME, EPCommonSystemProperties.ECOMP_PORTAL_BE);
+
+
+               MDC.put(EPCommonSystemProperties.METRICSLOG_BEGIN_TIMESTAMP,
+                               MDC.get(className + methodName + EPCommonSystemProperties.METRICSLOG_BEGIN_TIMESTAMP));
+               MDC.put(EPCommonSystemProperties.METRICSLOG_END_TIMESTAMP, getCurrentDateTimeUTC());
+               this.calculateDateTimeDifference(MDC.get(EPCommonSystemProperties.METRICSLOG_BEGIN_TIMESTAMP),
+                               MDC.get(EPCommonSystemProperties.METRICSLOG_END_TIMESTAMP));
+
+               if (securityEventType != null && args.length > 0 && args[0] != null && args[0] instanceof HttpServletRequest
+                               && securityEventType == SecurityEventTypeEnum.INCOMING_REST_MESSAGE
+                               && (MDC.get(EPCommonSystemProperties.FULL_URL) == null
+                                               || MDC.get(EPCommonSystemProperties.FULL_URL).isEmpty())) {
+                       HttpServletRequest req = (HttpServletRequest) args[0];
+                       this.setHttpRequestBasedDefaultsIntoGlobalLoggingContext(principal, req, securityEventType, methodName);
+               }
+
+               String externalAPIResponseCode = MDC.get(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE);
+               if (externalAPIResponseCode == null || "".equals(externalAPIResponseCode)
+                               || externalAPIResponseCode.trim().equalsIgnoreCase("200")) {
+                       MDC.put(EPCommonSystemProperties.RESPONSE_CODE, responseCode);
+                       MDC.put(EPCommonSystemProperties.STATUS_CODE, statusCode);
+               } else {
+                       MDC.put(EPCommonSystemProperties.RESPONSE_CODE, externalAPIResponseCode);
+                       MDC.put(EPCommonSystemProperties.STATUS_CODE, "ERROR");
+               }
+
+               EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(className);
+               logger.debug(EELFLoggerDelegate.debugLogger, "EPEELFLoggerAdvice#after: finished {}", methodName);
+
+               logger.info(EELFLoggerDelegate.metricsLogger,  methodName + " operation is completed.");
+
+               if (securityEventType != null) {
+                       MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP,
+                                       MDC.get(className + methodName + EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP));
+                       MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP, getCurrentDateTimeUTC());
+                       this.calculateDateTimeDifference(MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP),
+                                       MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP));
+
+                       this.logSecurityMessage(logger, securityEventType, methodName);
+
+                       if (securityEventType != SecurityEventTypeEnum.OUTGOING_REST_MESSAGE
+                                       && securityEventType != SecurityEventTypeEnum.LDAP_PHONEBOOK_USER_SEARCH) {
+                               MDC.remove(Configuration.MDC_KEY_REQUEST_ID);
+                               MDC.remove(EPCommonSystemProperties.PARTNER_NAME);
+                               MDC.remove(Configuration.MDC_SERVICE_NAME);
+                               MDC.remove(EPCommonSystemProperties.MDC_LOGIN_ID);
+                               MDC.remove(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE);
+                       }else{
+                               MDC.remove(Configuration.MDC_KEY_REQUEST_ID);
+                               MDC.remove(EPCommonSystemProperties.PARTNER_NAME);
+                               MDC.remove(Configuration.MDC_SERVICE_NAME);
+                       }
+
+
+                       MDC.remove(EPCommonSystemProperties.FULL_URL);
+                       MDC.remove(EPCommonSystemProperties.PROTOCOL);
+                       MDC.remove(EPCommonSystemProperties.STATUS_CODE);
+                       MDC.remove(className + methodName + EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP);
+                       MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP);
+                       MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP);
+                       MDC.remove(EPCommonSystemProperties.RESPONSE_CODE);
+               }
+               MDC.remove(className + methodName + EPCommonSystemProperties.METRICSLOG_BEGIN_TIMESTAMP);
+               MDC.remove(EPCommonSystemProperties.METRICSLOG_BEGIN_TIMESTAMP);
+               MDC.remove(EPCommonSystemProperties.METRICSLOG_END_TIMESTAMP);
+               MDC.remove(EPCommonSystemProperties.MDC_TIMER);
+               MDC.remove(EPCommonSystemProperties.TARGET_ENTITY);
+               MDC.remove(EPCommonSystemProperties.TARGET_SERVICE_NAME);
+
+       }
+
+       private void logSecurityMessage(EELFLoggerDelegate logger, SecurityEventTypeEnum securityEventType,
+                       String restMethod) {
+               StringBuilder additionalInfoAppender = new StringBuilder();
+               String auditMessage;
+
+               if (securityEventType == SecurityEventTypeEnum.OUTGOING_REST_MESSAGE) {
+                       additionalInfoAppender.append(String.format("%s '%s' request was initiated.", restMethod,
+                                       MDC.get(EPCommonSystemProperties.TARGET_SERVICE_NAME)));
+               } else if (securityEventType == SecurityEventTypeEnum.LDAP_PHONEBOOK_USER_SEARCH) {
+                       additionalInfoAppender.append("LDAP Phonebook search operation is performed.");
+               } else {
+                       additionalInfoAppender.append(String.format("%s request was received.", restMethod));
+
+                       if (securityEventType == SecurityEventTypeEnum.FE_LOGIN_ATTEMPT) {
+                               String loginId;
+                               String additionalMessage = " Successfully authenticated.";
+                               loginId = MDC.get(EPCommonSystemProperties.MDC_LOGIN_ID);
+                               if (loginId == null || "".equals(loginId) || EPCommonSystemProperties.UNKNOWN.equals(loginId)) {
+                                       additionalMessage = " No cookies are found.";
+                               }
+                               additionalInfoAppender.append(additionalMessage);
+                       } else if (securityEventType == SecurityEventTypeEnum.FE_LOGOUT) {
+                               additionalInfoAppender.append(" User has been successfully logged out.");
+                       }
+               }
+
+               String fullURL = MDC.get(EPCommonSystemProperties.FULL_URL);
+               if (fullURL != null && !"".equals(fullURL)) {
+                       additionalInfoAppender.append(" Request-URL:").append(MDC.get(EPCommonSystemProperties.FULL_URL));
+               }
+
+               auditMessage = AuditLogFormatter.getInstance().createMessage(MDC.get(EPCommonSystemProperties.PROTOCOL),
+                               securityEventType.name(), MDC.get(EPCommonSystemProperties.MDC_LOGIN_ID),
+                               additionalInfoAppender.toString());
+
+               logger.info(EELFLoggerDelegate.auditLogger, auditMessage);
+       }
+
+       private void setHttpRequestBasedDefaultsIntoGlobalLoggingContext(Principal principal, HttpServletRequest req,
+                       SecurityEventTypeEnum securityEventType, String restMethod) {
+
+               if (req != null) {
+                       if (securityEventType != SecurityEventTypeEnum.OUTGOING_REST_MESSAGE
+                                       && securityEventType != SecurityEventTypeEnum.LDAP_PHONEBOOK_USER_SEARCH
+                                       && securityEventType != SecurityEventTypeEnum.INCOMING_UEB_MESSAGE) {
+                               loadRequestId(req);
+
+                               loadPartnerName(req);
+
+                               loadLoginId(principal, req);
+
+                               loadUrlProtocol(req);
+
+                               loadServicePath(req, restMethod);
+
+                               loadClientAddress(req);
+
+                       } else if (securityEventType == SecurityEventTypeEnum.LDAP_PHONEBOOK_USER_SEARCH) {
+                               MDC.put(EPCommonSystemProperties.TARGET_ENTITY, "Phonebook");
+                               MDC.put(EPCommonSystemProperties.TARGET_SERVICE_NAME, "search");
+                       }
+               } else {
+                       MDC.put(Configuration.MDC_SERVICE_NAME, restMethod);
+                       MDC.put(EPCommonSystemProperties.PARTNER_NAME, EPCommonSystemProperties.ECOMP_PORTAL_FE);
+               }
+
+               MDC.put(Configuration.MDC_SERVICE_INSTANCE_ID, "");
+               MDC.put(Configuration.MDC_ALERT_SEVERITY, AlarmSeverityEnum.INFORMATIONAL.severity());
+               try {
+                       MDC.put(Configuration.MDC_SERVER_FQDN, InetAddress.getLocalHost().getCanonicalHostName());
+                       MDC.put(Configuration.MDC_SERVER_IP_ADDRESS, InetAddress.getLocalHost().getHostAddress());
+                       MDC.put(Configuration.MDC_INSTANCE_UUID, SystemProperties.getProperty(SystemProperties.INSTANCE_UUID));
+               } catch (Exception e) {
+                       adviceLogger.error(EELFLoggerDelegate.errorLogger,
+                                       "setHttpRequestBasedDefaultsIntoGlobalLoggingContext failed", e);
+               }
+       }
+
+       private void loadClientAddress(HttpServletRequest req) {
+               String clientIPAddress;
+               clientIPAddress = req.getHeader("X-FORWARDED-FOR");
+               if (clientIPAddress == null) {
+                       clientIPAddress = req.getRemoteAddr();
+               }
+               MDC.put(EPCommonSystemProperties.CLIENT_IP_ADDRESS, clientIPAddress);
+       }
+
+       private void loadServicePath(HttpServletRequest req, String restMethod) {
+               MDC.put(Configuration.MDC_SERVICE_NAME, restMethod);
+               String restPath = req.getServletPath();
+               if (restPath != null && restPath.trim().length()>0) {
+
+                       MDC.put(Configuration.MDC_SERVICE_NAME, restPath);
+               }
+       }
+
+       private void loadUrlProtocol(HttpServletRequest req) {
+               String restURL;
+               MDC.put(EPCommonSystemProperties.FULL_URL, EPCommonSystemProperties.UNKNOWN);
+               MDC.put(EPCommonSystemProperties.PROTOCOL, EPCommonSystemProperties.HTTP);
+               restURL = UserUtils.getFullURL(req);
+               if (restURL.trim().length() > 0) {
+                       MDC.put(EPCommonSystemProperties.FULL_URL, restURL);
+                       if (restURL.toLowerCase().contains("https")) {
+                               MDC.put(EPCommonSystemProperties.PROTOCOL, EPCommonSystemProperties.HTTPS);
+                       }
+               }
+       }
+
+       private void loadRequestId(HttpServletRequest req) {
+               String requestId = UserUtils.getRequestId(req);
+               if (requestId == null||requestId.trim().length()==0) {
+                       requestId = UUID.randomUUID().toString();
+               }
+               MDC.put(Configuration.MDC_KEY_REQUEST_ID, requestId);
+       }
+
+       private void loadLoginId(Principal principal, HttpServletRequest req) {
+               String loginId = "NoUser";
+               try {
+                       FnUser user = fnUserService.loadUserByUsername(principal.getName());
+                       loginId = (user != null ? user.getOrgUserId(): loginId);
+               } catch (SessionExpiredException se) {
+                       adviceLogger.debug(EELFLoggerDelegate.debugLogger,
+                                       "setHttpRequestBasedDefaultsIntoGlobalLoggingContext: No user found in session");
+               }
+
+               final String nameHeader = req.getHeader(EPCommonSystemProperties.USERNAME);
+               if (nameHeader != null) {
+                       loginId = nameHeader;
+               }
+
+               final String authHeader = req.getHeader(EPCommonSystemProperties.AUTHORIZATION);
+               if (authHeader != null) {
+                       String[] accountNamePassword = EcompPortalUtils.getUserNamePassword(authHeader);
+                       if (accountNamePassword != null && accountNamePassword.length == 2) {
+                               loginId = accountNamePassword[0];
+                       }
+               }
+
+               MDC.put(EPCommonSystemProperties.MDC_LOGIN_ID, loginId );
+       }
+
+       private void loadPartnerName(HttpServletRequest req) {
+
+
+               // Load user agent into MDC context, if available.
+               String accessingClient = req.getHeader(SystemProperties.USERAGENT_NAME);
+               accessingClient = (accessingClient == null || accessingClient.trim().length()==0)?"Unknown":accessingClient;
+               if (accessingClient != null && accessingClient.trim().length()==0 && (accessingClient.contains("Mozilla")
+                               || accessingClient.contains("Chrome") || accessingClient.contains("Safari"))) {
+                       accessingClient = EPCommonSystemProperties.ECOMP_PORTAL_FE;
+               }
+               MDC.put(EPCommonSystemProperties.PARTNER_NAME, accessingClient);
+
+               String uebVal = req.getHeader(EPCommonSystemProperties.UEB_KEY);
+               if(uebVal != null) {
+                       FnApp appRecord = appCacheService.getAppFromUeb(uebVal);
+                       MDC.put(EPCommonSystemProperties.PARTNER_NAME, appRecord.getAppName());
+               }
+
+
+       }
+
+       private void calculateDateTimeDifference(String beginDateTime, String endDateTime) {
+               if (beginDateTime != null && endDateTime != null && !beginDateTime.isEmpty()&&!endDateTime.isEmpty()) {
+                       try {
+                               SimpleDateFormat ecompLogDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
+                               Date beginDate = ecompLogDateFormat.parse(beginDateTime);
+                               Date endDate = ecompLogDateFormat.parse(endDateTime);
+                               String timeDifference = String.format("%d", endDate.getTime() - beginDate.getTime());
+                               MDC.put(SystemProperties.MDC_TIMER, timeDifference);
+                       } catch (Exception e) {
+                               adviceLogger.error(EELFLoggerDelegate.errorLogger, "calculateDateTimeDifference failed", e);
+                       }
+               }
+       }
+
+       public String getInternalResponseCode() {
+               return MDC.get(EPCommonSystemProperties.RESPONSE_CODE);
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/logging/aop/EPMetricsLog.java b/portal-BE/src/main/java/org/onap/portal/logging/aop/EPMetricsLog.java
new file mode 100644 (file)
index 0000000..4f290d9
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.logging.aop;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.METHOD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface EPMetricsLog {
+    String value() default "";
+}
index d7fbe05..d4bd55f 100644 (file)
@@ -46,10 +46,8 @@ import org.onap.portalsdk.core.logging.format.ErrorSeverityEnum;
 import org.onap.portalsdk.core.logging.format.ErrorTypeEnum;
 
 /**
- * 
- * Add ONAP Portal Specific Error Code Enums here, for generic
- * ones (ones you think are useful not only Portal but also SDK), add it
- * to the enum class AppMessagesEnum defined in SDK.
+ * Add ONAP Portal Specific Error Code Enums here, for generic ones (ones you think are useful not only Portal but also
+ * SDK), add it to the enum class AppMessagesEnum defined in SDK.
  */
 public enum EPAppMessagesEnum implements EELFResolvableErrorEnum {
        /*
@@ -81,227 +79,303 @@ public enum EPAppMessagesEnum implements EELFResolvableErrorEnum {
        900-999 Unknown Errors 
                                                                                - Unexpected exception
                                                                                */
-       
-       BeUebAuthenticationError(EPErrorCodesEnum.BEUEBAUTHENTICATIONERROR_ONE_ARGUMENT, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                               "ERR100E", "An Authentication failure occurred during access to UEB server", "Details: {0}.", "Please check UEB server list and keys configured under Portal.Properties file."),
-       
-       BeRestApiAuthenticationError(EPErrorCodesEnum.BERESTAPIAUTHENTICATIONERROR, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                               "ERR101E", "Rejected an incoming REST API request due to invalid credentials", "", "Please check application credentials defined in Database or properties files."),
-
-       InternalAuthenticationInfo(EPErrorCodesEnum.INTERNALAUTHENTICATIONINFO_ONE_ARGUMENT, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
-                                                               "ERR199I", "Internal authentication problem", "Details: {0}.", "Please check the logs for more information."),
-       
-       InternalAuthenticationWarning(EPErrorCodesEnum.INTERNALAUTHENTICATIONWARNING_ONE_ARGUMENT, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
-                                                               "ERR199W", "Internal authentication problem", "Details: {0}.", "Please check the logs for more information."),
-       
-       InternalAuthenticationError(EPErrorCodesEnum.INTERNALAUTHENTICATIONERROR_ONE_ARGUMENT, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                               "ERR199E", "Internal authentication problem", "Details: {0}.", "Please check the logs for more information."),
-       
-       InternalAuthenticationFatal(EPErrorCodesEnum.INTERNALAUTHENTICATIONFATAL_ONE_ARGUMENT, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.FATAL,
-                                                               "ERR199F", "Internal authentication problem", "Details: {0}.", "Please check the logs for more information."),
-       
-       BeHealthCheckError(EPErrorCodesEnum.BeHEALTHCHECKERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
-                                                               "ERR200E", "ECOMP-PORTAL Back-end probably lost connectivity to either one of the following components: MySQL DB, UEB Cluster", "", "Please check the logs for more information."),
-
-       BeHealthCheckMySqlError(EPErrorCodesEnum.BEHEALTHCHECKMYSQLERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
-                                                               "ERR201E", "ECOMP-PORTAL Back-end probably lost connectivity to MySQL DB", "", "Check connectivity to MYSQL is configured correctly under system.properties file."),
-
-       BeHealthCheckUebClusterError(EPErrorCodesEnum.BEHEALTHCHECKUEBCLUSTERERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
-                                                               "ERR203E", "ECOMP-PORTAL Back-end probably lost connectivity to UEB Cluster", "", "Check connectivity to UEB cluster which is configured under portal.properties file."),
-       
-       FeHealthCheckError(EPErrorCodesEnum.FEHEALTHCHECKERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
-                                                               "ERR204E", "Unable to connect to a valid ECOMP-PORTAL Back-end Server.", "", "Please check connectivity from this FE instance towards BE or BE Load Balancer."),
-       
-       BeHealthCheckRecovery(EPErrorCodesEnum.BEHEALTHCHECKRECOVERY, ErrorTypeEnum.RECOVERY, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
-                                                               "ERR205I", "ECOMP-PORTAL Back-end Recovery to either one of the following components: MySQL DB, UEB Cluster", "", "Please check logs for more specific information about the problem."),
-       
-       BeHealthCheckMySqlRecovery(EPErrorCodesEnum.BEHEALTHCHECKMYSQLRECOVERY, ErrorTypeEnum.RECOVERY, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
-                                                               "ERR206I", "ECOMP-PORTAL Back-end connection recovery to MySQL DB", "", "Please check logs for more specific information about the problem."),
-       
-       BeHealthCheckUebClusterRecovery(EPErrorCodesEnum.BEHEALTHCHECKUEBCLUSTERRECOVERY, ErrorTypeEnum.RECOVERY, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
-                                                               "ERR208I", "ECOMP-PORTAL Back-end connection recovery to UEB Cluster", "", "Please check logs for more specific information about the problem."),
-       
-       FeHealthCheckRecovery(EPErrorCodesEnum.FEHEALTHCHECKRECOVERY, ErrorTypeEnum.RECOVERY, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
-                                                               "ERR209I", "Connectivity to ECOMP-PORTAL Front-end Server is recovered", "", "Please check logs for more specific information about the problem."),
-    
-       BeUebConnectionError(EPErrorCodesEnum.BEUEBCONNECTIONERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR210E", "ECOMP-PORTAL Back-end probably lost connectivity to UEB Cluster", "Details: {0}.", "Please check UEB server list and keys configured under Portal.Properties file."),
-    
-    BeUebUnkownHostError(EPErrorCodesEnum.BEUEBUNKOWNHOSTERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR211E", "ECOMP-PORTAL Back-end probably lost connectivity to UEB Cluster", "Cannot reach host: {0}.", "Please check UEB server list and keys configured under Portal.Properties file."),
-       
-    BeUebRegisterOnboardingAppError(EPErrorCodesEnum.BEUEBREGISTERONBOARDINGAPPERROR, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR212E", "Failed to register the On-boarding application with UEB Communication server", "Details: {0}.", "Please check UEB server list and keys configured under Portal.Properties file."),
-    
-    BeHttpConnectionError(EPErrorCodesEnum.BEHTTPCONNECTIONERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                               "ERR213E", "It could be that communication to an external application might resulted an exception or failed to reach the external application", 
-                                                               "Details: {0}.", "Please check logs for more information."),
-       MusicHealthCheckZookeeperError(EPErrorCodesEnum.MUSICHEALTHCHECKZOOKEEPERERROR_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                "ERR214E", "Connectivity to Music Cluster -zookeeper server", "Details: {0}.", "Please check zookeeper server list and check the logs for more information"),
-       
-    MusicHealthCheckCassandraError(EPErrorCodesEnum.MUSICHEALTHCHECKCASSANDRAERROR_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                "ERR215E", "Connectivity to Music Cluster -Cassandra server", "Details: {0}.", "Please check Cassandra server list and check the logs for more information"),
-    
-    InternalConnectionInfo(EPErrorCodesEnum.INTERNALCONNECTIONINFO_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
-                                                               "ERR299I", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
-    
-       InternalConnectionWarning(EPErrorCodesEnum.INTERNALCONNECTIONWARNING_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
-                                                               "ERR299W", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
-    
-    InternalConnectionError(EPErrorCodesEnum.INTERNALCONNECTIONERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR299E", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
-    
-    InternalConnectionFatal(EPErrorCodesEnum.INTERNALCONNECTIONFATAL_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.FATAL,
-                                                       "ERR299F", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
-    
-    BeUebObjectNotFoundError(EPErrorCodesEnum.BEUEBOBJECTNOTFOUNDERROR_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR303E", "Error occurred during access to U-EB Server.", "Data not found: {0}.", "An error occurred during access to UEB Server, {1} failed to either register or unregister to/from UEB topic."),
-    
-    BeUserMissingError(EPErrorCodesEnum.BEUSERMISSINGERROR_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR310E", "User is not found", "", "User {0} must be added to the corresponding application with proper user roles."),
-    
-    BeUserInactiveWarning(EPErrorCodesEnum.BEUSERINACTIVEWARNING_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
-                                                       "ERR313W", "User is found but in-active", "", "User {0} must be added to the corresponding application with proper user roles."),
-    
-    BeUserAdminPrivilegesInfo(EPErrorCodesEnum.BEUSERADMINPRIVILEGESINFO_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
-                                                       "ERR314W", "User is found but don't have administrative privileges", "", "User {0} should be given administrator role for the corresponding application to perform the necessary actions."),
-    
-    BeInvalidJsonInput(EPErrorCodesEnum.BEINVALIDJSONINPUT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR405E", "Failed to convert JSON input to object", "", "Please check logs for more information."),
-    
-    BeIncorrectHttpStatusError(EPErrorCodesEnum.BEINCORRECTHTTPSTATUSERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR407E", "Communication to an external application is resulted in with Incorrect Http response code", "", "Please check logs for more information."),
-    
-    BeInitializationError(EPErrorCodesEnum.BEINITIALIZATIONERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
-                                                       "ERR500E", "ECOMP-PORTAL Back-end was not initialized properly", "", "Please check logs for more information."),
-    
-    BeUebSystemError(EPErrorCodesEnum.BEUEBSYSTEMERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR502E", "Error occurred during access to U-EB Server", "Details: {0}.", "An error occurred in {1} distribution mechanism. Please check the logs for more information."),
-    
-    BeDaoSystemError(EPErrorCodesEnum.BEDAOSYSTEMERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
-                                                       "ERR505E", "Performing DDL or DML operations on database might have failed", "", "Please check MySQL DB health or look at the logs for more details."),
-    
-    BeSystemError(EPErrorCodesEnum.BESYSTEMERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
-                                                       "ERR506E", "Unexpected error during operation", "", "Please check logs for more information."),
-    
-    BeExecuteRollbackError(EPErrorCodesEnum.BEEXECUTEROLLBACKERROR, ErrorTypeEnum.DATA_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR507E", "Roll-back operation towards database has failed", "", "Please check MYSQL DB health or look at the logs for more details."),
-    
-    FeHttpLoggingError(EPErrorCodesEnum.FEHTTPLOGGINGERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR517E", "Error when logging FE HTTP request/response", "", "Please check MYSQL DB health or look at the logs for more details."),
-    
-       FePortalServletError(EPErrorCodesEnum.FEPORTALSERVLETERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                               "ERR518E", "Error when trying to access FE Portal page.", "", "Please check logs for more information."),
-       
-    BeDaoCloseSessionError(EPErrorCodesEnum.BEDAOCLOSESESSIONERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR519E", "Close local session operation with database failed", "", "Please check MYSQL DB health or look at the logs form more details."),
-    
-    BeRestApiGeneralError(EPErrorCodesEnum.BERESTAPIGENERALERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
-                                                       "ERR900E", "Unexpected error during ECOMP-PORTAL Back-end REST API execution", "", "Please check error log for more information."),
-    
-    FeHealthCheckGeneralError(EPErrorCodesEnum.FEHEALTHCHECKGENERALERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
-                                                       "ERR901E", "General error during FE Health Check", "", "Please check error log for more information."),
-    
-    InternalUnexpectedInfo(EPErrorCodesEnum.INTERNALUNEXPECTEDINFO_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
-                                                       "ERR999I", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
-    
-    InternalUnexpectedWarning(EPErrorCodesEnum.INTERNALUNEXPECTEDWARNING_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
-                                                       "ERR999W", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
-    
-    InternalUnexpectedError(EPErrorCodesEnum.INTERNALUNEXPECTEDERROR_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                                                       "ERR999E", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
-    
-    InternalUnexpectedFatal(EPErrorCodesEnum.INTERNALUNEXPECTEDFATAL_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.FATAL,
-                                                       "ERR999F", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
-    
-    ExternalAuthAccessConnectionError(EPErrorCodesEnum.EXTERNALAUTHACCESS_CONNECTIONERROR, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                       "ERR220E", "AAF Connection problem", "Details: {0}.", "Please check logs for more information."),
-
-    ExternalAuthAccessAuthenticationError(EPErrorCodesEnum.EXTERNALAUTHACCESS_AUTHENTICATIONERROR, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                       "ERR120E", "AAF authentication problem", "Details: {0}.", "Please check logs for more information."),
-    
-    ExternalAuthAccessGeneralError(EPErrorCodesEnum.EXTERNALAUTHACCESS_GENERALERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                       "ERR520E", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
-    
-    SchedulerAccessConnectionError(EPErrorCodesEnum.SCHEDULER_ACCESS_CONNECTIONERROR, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                       "ERR240E", "Scheduler Connection problem", "Details: {0}.", "Please check logs for more information."),
-
-    SchedulerAuxAccessAuthenticationError(EPErrorCodesEnum.SCHEDULERAUX_ACCESS_AUTHENTICATIONERROR, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                       "ERR140E", "SchedulerAux authentication problem", "Details: {0}.", "Please check logs for more information."),
-    
-    SchedulerAccessGeneralError(EPErrorCodesEnum.SCHEDULER_ACCESS_GENERALERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                       "ERR540E", "Unexpected Scheduler error", "Details: {0}.", "Please check logs for more information."),
-    
-    SchedulerInvalidAttributeError(EPErrorCodesEnum.SCHEDULER_INVALID_ATTRIBUTEERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
-                       "ERR515E", "Unable to create Scheduler", "Details: {0}.", "Please check logs for more information."),
-
-       ;
-       
-       ErrorTypeEnum eType;
-       AlarmSeverityEnum alarmSeverity;
-       EPErrorCodesEnum messageCode;
-       ErrorSeverityEnum errorSeverity;
-       String errorCode;
-       String errorDescription;
-       String details;
-       String resolution;
-       
-       EPAppMessagesEnum(EPErrorCodesEnum messageCode, ErrorTypeEnum eType, AlarmSeverityEnum alarmSeverity, ErrorSeverityEnum errorSeverity, String errorCode, String errorDescription,
-                                               String details, String resolution) {
-               this.messageCode = messageCode;
-               this.eType = eType;
-               this.alarmSeverity = alarmSeverity;
-               this.errorSeverity = errorSeverity;
-               this.errorCode = errorCode;
-               this.errorDescription = errorDescription;
-               this.details = details;
-               this.resolution = resolution;
-       }
-       
-       public String getDetails() {
-               return this.details;
-       }
-       
-       public String getResolution() {
-               return this.resolution;
-       }
-       public String getErrorCode() {
-               return this.errorCode;
-       }
-       
-       public String getErrorDescription() {
-               return this.errorDescription;
-       }
-       
-       public ErrorSeverityEnum getErrorSeverity() {
-               return this.errorSeverity;
-       }
-       
-       public void setErrorSeverity(ErrorSeverityEnum errorSeverity) {
-               this.errorSeverity = errorSeverity;
-       }
-       
-       public EPErrorCodesEnum getMessageCode() {
-               return messageCode;
-       }
-
-       public void setMessageCode(EPErrorCodesEnum messageCode) {
-               this.messageCode = messageCode;
-       }
-       
-       public AlarmSeverityEnum getAlarmSeverity() {
-               return alarmSeverity;
-       }
-
-       public void setAlarmSeverity(AlarmSeverityEnum alarmSeverity) {
-               this.alarmSeverity = alarmSeverity;
-       }
-       
-       public ErrorTypeEnum getErrorType() {
-               return eType;
-       }
-
-       public void setErrorType(ErrorTypeEnum eType) {
-               this.eType = eType;
-       }
+
+       BeUebAuthenticationError(EPErrorCodesEnum.BEUEBAUTHENTICATIONERROR_ONE_ARGUMENT,
+               ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR100E", "An Authentication failure occurred during access to UEB server", "Details: {0}.",
+               "Please check UEB server list and keys configured under Portal.Properties file."),
+
+       BeRestApiAuthenticationError(EPErrorCodesEnum.BERESTAPIAUTHENTICATIONERROR, ErrorTypeEnum.AUTHENTICATION_PROBLEM,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR101E", "Rejected an incoming REST API request due to invalid credentials", "",
+               "Please check application credentials defined in Database or properties files."),
+
+       InternalAuthenticationInfo(EPErrorCodesEnum.INTERNALAUTHENTICATIONINFO_ONE_ARGUMENT,
+               ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+               "ERR199I", "Internal authentication problem", "Details: {0}.",
+               "Please check the logs for more information."),
+
+       InternalAuthenticationWarning(EPErrorCodesEnum.INTERNALAUTHENTICATIONWARNING_ONE_ARGUMENT,
+               ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
+               "ERR199W", "Internal authentication problem", "Details: {0}.",
+               "Please check the logs for more information."),
+
+       InternalAuthenticationError(EPErrorCodesEnum.INTERNALAUTHENTICATIONERROR_ONE_ARGUMENT,
+               ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR199E", "Internal authentication problem", "Details: {0}.",
+               "Please check the logs for more information."),
+
+       InternalAuthenticationFatal(EPErrorCodesEnum.INTERNALAUTHENTICATIONFATAL_ONE_ARGUMENT,
+               ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.FATAL,
+               "ERR199F", "Internal authentication problem", "Details: {0}.",
+               "Please check the logs for more information."),
+
+       BeHealthCheckError(EPErrorCodesEnum.BeHEALTHCHECKERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL,
+               ErrorSeverityEnum.ERROR,
+               "ERR200E",
+               "ECOMP-PORTAL Back-end probably lost connectivity to either one of the following components: MySQL DB, UEB Cluster",
+               "", "Please check the logs for more information."),
+
+       BeHealthCheckMySqlError(EPErrorCodesEnum.BEHEALTHCHECKMYSQLERROR, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+               "ERR201E", "ECOMP-PORTAL Back-end probably lost connectivity to MySQL DB", "",
+               "Check connectivity to MYSQL is configured correctly under system.properties file."),
+
+       BeHealthCheckUebClusterError(EPErrorCodesEnum.BEHEALTHCHECKUEBCLUSTERERROR, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+               "ERR203E", "ECOMP-PORTAL Back-end probably lost connectivity to UEB Cluster", "",
+               "Check connectivity to UEB cluster which is configured under portal.properties file."),
+
+       FeHealthCheckError(EPErrorCodesEnum.FEHEALTHCHECKERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL,
+               ErrorSeverityEnum.ERROR,
+               "ERR204E", "Unable to connect to a valid ECOMP-PORTAL Back-end Server.", "",
+               "Please check connectivity from this FE instance towards BE or BE Load Balancer."),
+
+       BeHealthCheckRecovery(EPErrorCodesEnum.BEHEALTHCHECKRECOVERY, ErrorTypeEnum.RECOVERY,
+               AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+               "ERR205I",
+               "ECOMP-PORTAL Back-end Recovery to either one of the following components: MySQL DB, UEB Cluster", "",
+               "Please check logs for more specific information about the problem."),
+
+       BeHealthCheckMySqlRecovery(EPErrorCodesEnum.BEHEALTHCHECKMYSQLRECOVERY, ErrorTypeEnum.RECOVERY,
+               AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+               "ERR206I", "ECOMP-PORTAL Back-end connection recovery to MySQL DB", "",
+               "Please check logs for more specific information about the problem."),
+
+       BeHealthCheckUebClusterRecovery(EPErrorCodesEnum.BEHEALTHCHECKUEBCLUSTERRECOVERY, ErrorTypeEnum.RECOVERY,
+               AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+               "ERR208I", "ECOMP-PORTAL Back-end connection recovery to UEB Cluster", "",
+               "Please check logs for more specific information about the problem."),
+
+       FeHealthCheckRecovery(EPErrorCodesEnum.FEHEALTHCHECKRECOVERY, ErrorTypeEnum.RECOVERY,
+               AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+               "ERR209I", "Connectivity to ECOMP-PORTAL Front-end Server is recovered", "",
+               "Please check logs for more specific information about the problem."),
+
+       BeUebConnectionError(EPErrorCodesEnum.BEUEBCONNECTIONERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR210E", "ECOMP-PORTAL Back-end probably lost connectivity to UEB Cluster", "Details: {0}.",
+               "Please check UEB server list and keys configured under Portal.Properties file."),
+
+       BeUebUnkownHostError(EPErrorCodesEnum.BEUEBUNKOWNHOSTERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR211E", "ECOMP-PORTAL Back-end probably lost connectivity to UEB Cluster", "Cannot reach host: {0}.",
+               "Please check UEB server list and keys configured under Portal.Properties file."),
+
+       BeUebRegisterOnboardingAppError(EPErrorCodesEnum.BEUEBREGISTERONBOARDINGAPPERROR,
+               ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR212E", "Failed to register the On-boarding application with UEB Communication server",
+               "Details: {0}.", "Please check UEB server list and keys configured under Portal.Properties file."),
+
+       BeHttpConnectionError(EPErrorCodesEnum.BEHTTPCONNECTIONERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR213E",
+               "It could be that communication to an external application might resulted an exception or failed to reach the external application",
+               "Details: {0}.", "Please check logs for more information."),
+       MusicHealthCheckZookeeperError(EPErrorCodesEnum.MUSICHEALTHCHECKZOOKEEPERERROR_ONE_ARGUMENT,
+               ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR214E", "Connectivity to Music Cluster -zookeeper server", "Details: {0}.",
+               "Please check zookeeper server list and check the logs for more information"),
+
+       MusicHealthCheckCassandraError(EPErrorCodesEnum.MUSICHEALTHCHECKCASSANDRAERROR_ONE_ARGUMENT,
+               ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR215E", "Connectivity to Music Cluster -Cassandra server", "Details: {0}.",
+               "Please check Cassandra server list and check the logs for more information"),
+
+       InternalConnectionInfo(EPErrorCodesEnum.INTERNALCONNECTIONINFO_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM,
+               AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+               "ERR299I", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
+
+       InternalConnectionWarning(EPErrorCodesEnum.INTERNALCONNECTIONWARNING_ONE_ARGUMENT,
+               ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
+               "ERR299W", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
+
+       InternalConnectionError(EPErrorCodesEnum.INTERNALCONNECTIONERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR299E", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
+
+       InternalConnectionFatal(EPErrorCodesEnum.INTERNALCONNECTIONFATAL_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM,
+               AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.FATAL,
+               "ERR299F", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
+
+       BeUebObjectNotFoundError(EPErrorCodesEnum.BEUEBOBJECTNOTFOUNDERROR_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR303E", "Error occurred during access to U-EB Server.", "Data not found: {0}.",
+               "An error occurred during access to UEB Server, {1} failed to either register or unregister to/from UEB topic."),
+
+       BeUserMissingError(EPErrorCodesEnum.BEUSERMISSINGERROR_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR310E", "User is not found", "",
+               "User {0} must be added to the corresponding application with proper user roles."),
+
+       BeUserInactiveWarning(EPErrorCodesEnum.BEUSERINACTIVEWARNING_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR,
+               AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
+               "ERR313W", "User is found but in-active", "",
+               "User {0} must be added to the corresponding application with proper user roles."),
+
+       BeUserAdminPrivilegesInfo(EPErrorCodesEnum.BEUSERADMINPRIVILEGESINFO_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR,
+               AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
+               "ERR314W", "User is found but don't have administrative privileges", "",
+               "User {0} should be given administrator role for the corresponding application to perform the necessary actions."),
+
+       BeInvalidJsonInput(EPErrorCodesEnum.BEINVALIDJSONINPUT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR,
+               ErrorSeverityEnum.ERROR,
+               "ERR405E", "Failed to convert JSON input to object", "", "Please check logs for more information."),
+
+       BeIncorrectHttpStatusError(EPErrorCodesEnum.BEINCORRECTHTTPSTATUSERROR, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR407E", "Communication to an external application is resulted in with Incorrect Http response code",
+               "", "Please check logs for more information."),
+
+       BeInitializationError(EPErrorCodesEnum.BEINITIALIZATIONERROR, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+               "ERR500E", "ECOMP-PORTAL Back-end was not initialized properly", "",
+               "Please check logs for more information."),
+
+       BeUebSystemError(EPErrorCodesEnum.BEUEBSYSTEMERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR,
+               ErrorSeverityEnum.ERROR,
+               "ERR502E", "Error occurred during access to U-EB Server", "Details: {0}.",
+               "An error occurred in {1} distribution mechanism. Please check the logs for more information."),
+
+       BeDaoSystemError(EPErrorCodesEnum.BEDAOSYSTEMERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL,
+               ErrorSeverityEnum.ERROR,
+               "ERR505E", "Performing DDL or DML operations on database might have failed", "",
+               "Please check MySQL DB health or look at the logs for more details."),
+
+       BeSystemError(EPErrorCodesEnum.BESYSTEMERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL,
+               ErrorSeverityEnum.ERROR,
+               "ERR506E", "Unexpected error during operation", "", "Please check logs for more information."),
+
+       BeExecuteRollbackError(EPErrorCodesEnum.BEEXECUTEROLLBACKERROR, ErrorTypeEnum.DATA_ERROR,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR507E", "Roll-back operation towards database has failed", "",
+               "Please check MYSQL DB health or look at the logs for more details."),
+
+       FeHttpLoggingError(EPErrorCodesEnum.FEHTTPLOGGINGERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MINOR,
+               ErrorSeverityEnum.ERROR,
+               "ERR517E", "Error when logging FE HTTP request/response", "",
+               "Please check MYSQL DB health or look at the logs for more details."),
+
+       FePortalServletError(EPErrorCodesEnum.FEPORTALSERVLETERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR,
+               ErrorSeverityEnum.ERROR,
+               "ERR518E", "Error when trying to access FE Portal page.", "", "Please check logs for more information."),
+
+       BeDaoCloseSessionError(EPErrorCodesEnum.BEDAOCLOSESESSIONERROR, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR519E", "Close local session operation with database failed", "",
+               "Please check MYSQL DB health or look at the logs form more details."),
+
+       BeRestApiGeneralError(EPErrorCodesEnum.BERESTAPIGENERALERROR, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+               "ERR900E", "Unexpected error during ECOMP-PORTAL Back-end REST API execution", "",
+               "Please check error log for more information."),
+
+       FeHealthCheckGeneralError(EPErrorCodesEnum.FEHEALTHCHECKGENERALERROR, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+               "ERR901E", "General error during FE Health Check", "", "Please check error log for more information."),
+
+       InternalUnexpectedInfo(EPErrorCodesEnum.INTERNALUNEXPECTEDINFO_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+               "ERR999I", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
+
+       InternalUnexpectedWarning(EPErrorCodesEnum.INTERNALUNEXPECTEDWARNING_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
+               "ERR999W", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
+
+       InternalUnexpectedError(EPErrorCodesEnum.INTERNALUNEXPECTEDERROR_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR999E", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
+
+       InternalUnexpectedFatal(EPErrorCodesEnum.INTERNALUNEXPECTEDFATAL_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.FATAL,
+               "ERR999F", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
+
+       ExternalAuthAccessConnectionError(EPErrorCodesEnum.EXTERNALAUTHACCESS_CONNECTIONERROR,
+               ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR220E", "AAF Connection problem", "Details: {0}.", "Please check logs for more information."),
+
+       ExternalAuthAccessAuthenticationError(EPErrorCodesEnum.EXTERNALAUTHACCESS_AUTHENTICATIONERROR,
+               ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR120E", "AAF authentication problem", "Details: {0}.", "Please check logs for more information."),
+
+       ExternalAuthAccessGeneralError(EPErrorCodesEnum.EXTERNALAUTHACCESS_GENERALERROR, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR520E", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
+
+       SchedulerAccessConnectionError(EPErrorCodesEnum.SCHEDULER_ACCESS_CONNECTIONERROR,
+               ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR240E", "Scheduler Connection problem", "Details: {0}.", "Please check logs for more information."),
+
+       SchedulerAuxAccessAuthenticationError(EPErrorCodesEnum.SCHEDULERAUX_ACCESS_AUTHENTICATIONERROR,
+               ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR140E", "SchedulerAux authentication problem", "Details: {0}.",
+               "Please check logs for more information."),
+
+       SchedulerAccessGeneralError(EPErrorCodesEnum.SCHEDULER_ACCESS_GENERALERROR, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR540E", "Unexpected Scheduler error", "Details: {0}.", "Please check logs for more information."),
+
+       SchedulerInvalidAttributeError(EPErrorCodesEnum.SCHEDULER_INVALID_ATTRIBUTEERROR, ErrorTypeEnum.SYSTEM_ERROR,
+               AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+               "ERR515E", "Unable to create Scheduler", "Details: {0}.", "Please check logs for more information."),
+
+       ;
+
+       ErrorTypeEnum eType;
+       AlarmSeverityEnum alarmSeverity;
+       EPErrorCodesEnum messageCode;
+       ErrorSeverityEnum errorSeverity;
+       String errorCode;
+       String errorDescription;
+       String details;
+       String resolution;
+
+       EPAppMessagesEnum(EPErrorCodesEnum messageCode, ErrorTypeEnum eType, AlarmSeverityEnum alarmSeverity,
+               ErrorSeverityEnum errorSeverity, String errorCode, String errorDescription,
+               String details, String resolution) {
+              this.messageCode = messageCode;
+              this.eType = eType;
+              this.alarmSeverity = alarmSeverity;
+              this.errorSeverity = errorSeverity;
+              this.errorCode = errorCode;
+              this.errorDescription = errorDescription;
+              this.details = details;
+              this.resolution = resolution;
+       }
+
+       public String getDetails() {
+              return this.details;
+       }
+
+       public String getResolution() {
+              return this.resolution;
+       }
+
+       public String getErrorCode() {
+              return this.errorCode;
+       }
+
+       public String getErrorDescription() {
+              return this.errorDescription;
+       }
+
+       public ErrorSeverityEnum getErrorSeverity() {
+              return this.errorSeverity;
+       }
+
+
+       public EPErrorCodesEnum getMessageCode() {
+              return messageCode;
+       }
+
+
+       public AlarmSeverityEnum getAlarmSeverity() {
+              return alarmSeverity;
+       }
+
+
+       public ErrorTypeEnum getErrorType() {
+              return eType;
+       }
+
 }
diff --git a/portal-BE/src/main/java/org/onap/portal/service/AdminRolesService.java b/portal-BE/src/main/java/org/onap/portal/service/AdminRolesService.java
new file mode 100644 (file)
index 0000000..c948ece
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.persistence.EntityManager;
+import org.onap.portal.domain.db.fn.FnRole;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.db.fn.FnUserRole;
+import org.onap.portal.domain.dto.ecomp.UserRole;
+import org.onap.portal.logging.format.EPAppMessagesEnum;
+import org.onap.portal.logging.logic.EPLogUtil;
+import org.onap.portal.service.fn.FnUserService;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AdminRolesService {
+
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AdminRolesService.class);
+
+       private final Long SYS_ADMIN_ROLE_ID = 1L;
+       private final Long ACCOUNT_ADMIN_ROLE_ID = 999L;
+       private final Long ECOMP_APP_ID = 1L;
+       private final String ADMIN_ACCOUNT= "Is account admin for user {}";
+
+       private final EntityManager entityManager;
+       private final FnUserService fnUserService;
+
+       @Autowired
+       public AdminRolesService(final EntityManager entityManager,
+               FnUserService fnUserService) {
+              this.entityManager = entityManager;
+              this.fnUserService = fnUserService;
+       }
+
+       public boolean isSuperAdmin(FnUser user) {
+              if ((user != null) && (user.getOrgUserId() != null)) {
+                     String sql = "SELECT user.USER_ID, user.org_user_id, userrole.ROLE_ID, userrole.APP_ID FROM fn_user_role userrole "
+                             + "INNER JOIN fn_user user ON user.USER_ID = userrole.USER_ID " + "WHERE user.org_user_id = '"
+                             + user.getOrgUserId() + "' " + "AND userrole.ROLE_ID = '" + SYS_ADMIN_ROLE_ID + "' "
+                             + "AND userrole.APP_ID = '" + ECOMP_APP_ID + "';";
+                     try {
+                            List userRoleList = entityManager.createNativeQuery(sql, UserRole.class).getResultList();
+                            if (userRoleList != null && userRoleList.size() > 0) {
+                                   return true;
+                            }
+                     } catch (Exception e) {
+                            EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeDaoSystemError, e);
+                            logger.error(EELFLoggerDelegate.errorLogger,
+                                    "Exception occurred while executing isSuperAdmin operation", e);
+                     }
+              }
+              return false;
+       }
+
+       public boolean isAccountAdmin(FnUser user) {
+              try {
+                     final Map<String, Long> userParams = new HashMap<>();
+                     userParams.put("userId", user.getId());
+                     logger.debug(EELFLoggerDelegate.debugLogger, ADMIN_ACCOUNT, user.getId());
+                     List<Integer> userAdminApps;
+                     String query = "select fa.app_id  from fn_user_role ur,fn_app fa where ur.user_id =:userId and ur.app_id=fa.app_id and ur.role_id= 999 and (fa.enabled = 'Y' || fa.app_id=1)";
+                     userAdminApps = entityManager.createQuery(query, Integer.class).setParameter("userId", user.getId()).getResultList();
+                     logger.debug(EELFLoggerDelegate.debugLogger, "Is account admin for userAdminApps() - for user {}, found userAdminAppsSize {}", user.getOrgUserId(), userAdminApps.size());
+
+
+                     if (user.getId() != null) {
+                            for (FnUserRole userApp : user.getFnUserRoles()) {
+                                   if (userApp.getRoleId().getId().equals(ACCOUNT_ADMIN_ROLE_ID)||(userAdminApps.size()>1)) {
+                                          logger.debug(EELFLoggerDelegate.debugLogger, "Is account admin for userAdminApps() - for user {}, found Id {}", user.getOrgUserId(), userApp.getRoleId().getId());
+                                          return true;
+                                   }
+                            }
+                     }
+              } catch (Exception e) {
+                     EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeDaoSystemError, e);
+                     logger.error(EELFLoggerDelegate.errorLogger, "Exception occurred while executing isAccountAdmin operation",
+                             e);
+              }
+              return false;
+       }
+
+       public boolean isUser(FnUser user) {
+              try {
+                     FnUser currentUser = fnUserService.getUser(user.getId()).orElseThrow(Exception::new);
+                     if (currentUser != null && currentUser.getId() != null) {
+                            for (FnUserRole userApp : currentUser.getFnUserRoles()) {
+                                   if (!userApp.getAppId().getId().equals(ECOMP_APP_ID)) {
+                                          FnRole role = userApp.getRoleId();
+                                          if (!role.getId().equals(SYS_ADMIN_ROLE_ID) && !role.getId().equals(ACCOUNT_ADMIN_ROLE_ID)) {
+                                                 if (role.getActiveYn()) {
+                                                        return true;
+                                                 }
+                                          }
+                                   }
+                            }
+                     }
+              } catch (Exception e) {
+                     EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeDaoSystemError, e);
+                     logger.error(EELFLoggerDelegate.errorLogger, "Exception occurred while executing isUser operation", e);
+              }
+              return false;
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java b/portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java
new file mode 100644 (file)
index 0000000..364085c
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.onap.portal.dao.ep.EpPersUserWidgetSelDao;
+import org.onap.portal.dao.fn.EpWidgetCatalogDao;
+import org.onap.portal.domain.db.ep.EpPersUserWidgetSel;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.dto.ecomp.PersUserWidgetSelection;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PersUserWidgetService {
+
+       private final EpPersUserWidgetSelDao epPersUserWidgetSelDao;
+       private final EpWidgetCatalogDao epWidgetCatalogDao;
+
+       @Autowired
+       public PersUserWidgetService(final EpPersUserWidgetSelDao epPersUserWidgetSelDao,
+               final EpWidgetCatalogDao epWidgetCatalogDao) {
+              this.epPersUserWidgetSelDao = epPersUserWidgetSelDao;
+              this.epWidgetCatalogDao = epWidgetCatalogDao;
+       }
+
+       public void setPersUserAppValue(FnUser user, Long widgetId, Boolean select) {
+              if (user == null || widgetId == null) {
+                     throw new IllegalArgumentException("setPersUserAppValue: Null values");
+              }
+
+              List<PersUserWidgetSelection> persList = getUserWidgetSelction(user, widgetId);
+              // Key constraint limits to 1 row
+              PersUserWidgetSelection persRow = null;
+              if (persList.size() == 1) {
+                     persRow = persList.get(0);
+              } else {
+                     persRow = new PersUserWidgetSelection(null, user.getId(), widgetId, null);
+              }
+              if (select) {
+                     if (persRow.getId() != null) {
+                            epPersUserWidgetSelDao.deleteById(persRow.getId());
+                     }
+                     persRow.setStatusCode("S"); // show
+                     EpPersUserWidgetSel epPersUserWidgetSel = new EpPersUserWidgetSel();
+                     epPersUserWidgetSel.setUserId(user);
+                     epPersUserWidgetSel.setWidgetId(epWidgetCatalogDao.findById(widgetId).get());
+                     epPersUserWidgetSelDao.saveAndFlush(epPersUserWidgetSel);
+              } else {
+                     if (persRow.getId() != null) {
+                            epPersUserWidgetSelDao.deleteById(persRow.getId());
+                     }
+                     persRow.setStatusCode("H"); // Hide
+                     EpPersUserWidgetSel epPersUserWidgetSel = new EpPersUserWidgetSel();
+                     epPersUserWidgetSel.setUserId(user);
+                     epPersUserWidgetSel.setWidgetId(epWidgetCatalogDao.findById(widgetId).get());
+                     epPersUserWidgetSelDao.saveAndFlush(epPersUserWidgetSel);
+              }
+       }
+
+       private List<PersUserWidgetSelection> getUserWidgetSelction(FnUser user, Long widgetId) {
+              return epPersUserWidgetSelDao.getEpPersUserWidgetSelForUserIdAndWidgetId(user.getId(), widgetId)
+                      .orElse(new ArrayList<>()).stream().map(
+                              this::epPersUserWidgetSelToPersUserWidgetSelection).collect(Collectors.toList());
+       }
+
+       private PersUserWidgetSelection epPersUserWidgetSelToPersUserWidgetSelection(EpPersUserWidgetSel widgetSel) {
+              return new PersUserWidgetSelection(widgetSel.getId(), widgetSel.getUserId().getId(),
+                      widgetSel.getWidgetId().getWidgetId(), widgetSel.getStatusCd());
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/WidgetMService.java b/portal-BE/src/main/java/org/onap/portal/service/WidgetMService.java
new file mode 100644 (file)
index 0000000..624beed
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.service;
+
+import org.onap.portal.utils.EcompPortalUtils;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WidgetMService {
+
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetMService.class);
+
+       public String getServiceLocation(String service, String fallbackPortOnLocalHost) {
+              logger.debug(EELFLoggerDelegate.debugLogger, "Requested Service: " + service);
+              String localFallbackServiceLocation =
+                      EcompPortalUtils.localOrDockerHost() + ":" + fallbackPortOnLocalHost;
+              logger.debug(EELFLoggerDelegate.debugLogger,
+                      "returned service location: " + localFallbackServiceLocation);
+              return localFallbackServiceLocation;
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/WidgetService.java b/portal-BE/src/main/java/org/onap/portal/service/WidgetService.java
new file mode 100644 (file)
index 0000000..794f933
--- /dev/null
@@ -0,0 +1,265 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.servlet.http.HttpServletResponse;
+import org.onap.portal.dao.fn.FnWidgetDao;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.db.fn.FnWidget;
+import org.onap.portal.domain.dto.ecomp.EPUserApp;
+import org.onap.portal.domain.dto.ecomp.Widget;
+import org.onap.portal.domain.dto.transport.FieldsValidator;
+import org.onap.portal.domain.dto.transport.OnboardingWidget;
+import org.onap.portal.utils.EPCommonSystemProperties;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+public class WidgetService {
+
+       private final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetService.class);
+       private final Long LONG_ECOMP_APP_ID = 1L;
+       private final Long ACCOUNT_ADMIN_ROLE_ID = 999L;
+
+       private static String baseSqlToken =
+               " new org.onap.portal.domain.dto.transport.OnboardingWidget("
+                       + "widget.WIDGET_ID,widget.WDG_NAME,widget.APP_ID,"
+                       + "app.APP_NAME,widget.WDG_WIDTH,widget.WDG_HEIGHT,"
+                       + "widget.WDG_URL) widget.WIDGET_ID,widget.WDG_NAME,widget.APP_ID,app.APP_NAME,widget.WDG_WIDTH,widget.WDG_HEIGHT,widget.WDG_URL from FN_WIDGET widget join FN_APP app ON widget.APP_ID = app.APP_ID";
+
+       private static final String urlField = "url";
+       private static final Long DUBLICATED_FIELD_VALUE_ECOMP_ERROR = new Long(
+               EPCommonSystemProperties.DUBLICATED_FIELD_VALUE_ECOMP_ERROR);
+       private static final String nameField = "name";
+
+       private final AdminRolesService adminRolesService;
+       private final EntityManager entityManager;
+       private final FnWidgetDao fnWidgetDao;
+
+       @Autowired
+       public WidgetService(final AdminRolesService adminRolesService, final EntityManager entityManager,
+               final FnWidgetDao fnWidgetDao) {
+              this.adminRolesService = adminRolesService;
+              this.entityManager = entityManager;
+              this.fnWidgetDao = fnWidgetDao;
+       }
+
+       private static final Object syncRests = new Object();
+
+       public List<OnboardingWidget> getOnboardingWidgets(FnUser user, boolean managed) {
+              if (adminRolesService.isSuperAdmin(user)) {
+                     return entityManager.createQuery(sqlWidgetsForAllApps(), OnboardingWidget.class).getResultList();
+              } else if (managed) {
+                     if (adminRolesService.isAccountAdmin(user)) {
+                            return entityManager
+                                    .createQuery(sqlWidgetsForAllAppsWhereUserIsAdmin(), OnboardingWidget.class)
+                                    .setParameter("USERID", user.getId()).getResultList();
+                     }
+              } else if (adminRolesService.isAccountAdmin(user) || adminRolesService.isUser(user)) {
+                     return entityManager
+                             .createQuery(sqlWidgetsForAllAppsWhereUserHasAnyRole(), OnboardingWidget.class)
+                             .setParameter("USERID", user.getId()).getResultList();
+              }
+              return new ArrayList<>();
+       }
+
+       private String sqlWidgetsForAllApps() {
+              return "SELECT" + baseSqlToken;
+       }
+
+       private String sqlWidgetsForAllAppsWhereUserIsAdmin() {
+              return "SELECT" + baseSqlToken
+                      + " join FN_USER_ROLE ON FN_USER_ROLE.APP_ID = app.APP_ID where FN_USER_ROLE.USER_ID = :USERID AND FN_USER_ROLE.ROLE_ID = "
+                      + ACCOUNT_ADMIN_ROLE_ID;
+       }
+
+       private String sqlWidgetsForAllAppsWhereUserHasAnyRole() {
+              return "SELECT DISTINCT" + baseSqlToken
+                      + " join FN_USER_ROLE ON FN_USER_ROLE.APP_ID = app.APP_ID where FN_USER_ROLE.USER_ID = "
+                      + ":USERID";
+       }
+
+       public FieldsValidator setOnboardingWidget(FnUser user, OnboardingWidget onboardingWidget) {
+              if (onboardingWidget.getAppName().isEmpty() || onboardingWidget.getUrl().isEmpty()
+                      || onboardingWidget.getAppId() == null
+                      || onboardingWidget.getAppId().equals(LONG_ECOMP_APP_ID) || onboardingWidget.getWidth() <= 0 ||
+                      onboardingWidget.getHeight() <= 0) {
+                     FieldsValidator fieldsValidator = new FieldsValidator();
+                     fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_BAD_REQUEST);
+                     return fieldsValidator;
+              }
+              return this.updateOrSaveWidget(adminRolesService.isSuperAdmin(user), user.getId(), onboardingWidget);
+       }
+
+       private FieldsValidator updateOrSaveWidget(boolean superAdmin, Long userId, OnboardingWidget onboardingWidget) {
+              FieldsValidator fieldsValidator = new FieldsValidator();
+              if (!this.isUserAdminOfAppForWidget(superAdmin, userId, onboardingWidget.getAppId())) {
+                     fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_FORBIDDEN);
+                     return fieldsValidator;
+              }
+              synchronized (syncRests) {
+                     if (onboardingWidget.getId() == null) {
+                            this.validateOnboardingWidget(onboardingWidget, fieldsValidator);
+                     } else {
+                            FnWidget widget = fnWidgetDao.getOne(onboardingWidget.getId());
+                            if (widget == null || widget.getAppId() == null) {
+                                   fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_FOUND);
+                                   return fieldsValidator;
+                            }
+                            this.validateOnboardingWidget(onboardingWidget, fieldsValidator);
+                     }
+                     if (fieldsValidator.getHttpStatusCode() == HttpServletResponse.SC_OK) {
+                            this.applyOnboardingWidget(onboardingWidget, fieldsValidator);
+                     }
+              }
+              return fieldsValidator;
+       }
+
+       private boolean isUserAdminOfAppForWidget(boolean superAdmin, Long userId, Long appId) {
+              if (!superAdmin) {
+                     List<EPUserApp> userRoles = getAdminUserRoles(userId, appId);
+                     return (userRoles.size() > 0);
+              }
+              return true;
+       }
+
+       private List<EPUserApp> getAdminUserRoles(Long userId, Long appId) {
+              return entityManager.createQuery(
+                      "SELECT new org.onap.portal.domain.dto.ecomp.EPUserApp(fn.userId, fn.roleId, fn.appId) FROM FnUserRole fn"
+                              + "WHERE  fn.userId = :USERID "
+                              + "AND fn.roleId = :ROLEID "
+                              + "AND fn.appId = :APPID", EPUserApp.class)
+                      .setParameter("USERID", userId)
+                      .setParameter("ROLEID", ACCOUNT_ADMIN_ROLE_ID)
+                      .setParameter("APPID", appId)
+                      .getResultList();
+       }
+
+       @Transactional
+       private void applyOnboardingWidget(OnboardingWidget onboardingWidget, FieldsValidator fieldsValidator) {
+              boolean result;
+              FnWidget widget;
+              if (onboardingWidget.getId() == null) {
+                     widget = new FnWidget();
+              } else {
+                     widget = fnWidgetDao.getOne(onboardingWidget.getId());
+              }
+              widget.setAppId(onboardingWidget.getAppId());
+              widget.setName(onboardingWidget.getName());
+              widget.setWidth(onboardingWidget.getWidth());
+              widget.setHeight(onboardingWidget.getHeight());
+              widget.setUrl(onboardingWidget.getUrl());
+              result = widget.equals(fnWidgetDao.saveAndFlush(widget));
+              if (!result) {
+                     fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+              }
+       }
+
+       private void validateOnboardingWidget(OnboardingWidget onboardingWidget, FieldsValidator fieldsValidator) {
+              List<Widget> widgets = getWidgets(onboardingWidget);
+              boolean dublicatedUrl = false;
+              boolean dublicatedName = false;
+              for (Widget widget : widgets) {
+                     if (onboardingWidget.getId() != null && onboardingWidget.getId().equals(widget.getId())) {
+                            // widget should not be compared with itself
+                            continue;
+                     }
+                     if (!dublicatedUrl && widget.getUrl().equals(onboardingWidget.getUrl())) {
+                            dublicatedUrl = true;
+                            if (dublicatedName) {
+                                   break;
+                            }
+                     }
+                     if (!dublicatedName && widget.getName().equalsIgnoreCase(onboardingWidget.getName()) && widget
+                             .getAppId().equals(onboardingWidget.getAppId())) {
+                            dublicatedName = true;
+                            if (dublicatedUrl) {
+                                   break;
+                            }
+                     }
+              }
+              if (dublicatedUrl || dublicatedName) {
+                     if (dublicatedUrl) {
+                            fieldsValidator.addProblematicFieldName(urlField);
+                     }
+                     if (dublicatedName) {
+                            fieldsValidator.addProblematicFieldName(nameField);
+                     }
+                     fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_CONFLICT);
+                     fieldsValidator.setErrorCode(DUBLICATED_FIELD_VALUE_ECOMP_ERROR);
+              }
+       }
+
+       private List<Widget> getWidgets(OnboardingWidget onboardingWidget) {
+              return entityManager.createQuery(
+                      "SELECT new org.onap.portal.domain.dto.ecomp.Widget(fn.APP_ID, fn.WDG_NAME, fn.WDG_URL) FROM FnWidget fn"
+                              + "WHERE  fn.WDG_URL = :WDGURL "
+                              + "AND fn.WDG_NAME = :WDGNAME "
+                              + "AND fn.APP_ID = :APPID", Widget.class)
+                      .setParameter("WDGURL", onboardingWidget.getUrl())
+                      .setParameter("WDGNAME", onboardingWidget.getName())
+                      .getResultList();
+       }
+
+       @Transactional
+       public FieldsValidator deleteOnboardingWidget(FnUser user, Long onboardingWidgetId) {
+              FieldsValidator fieldsValidator = new FieldsValidator();
+              synchronized (syncRests) {
+                     FnWidget widget = fnWidgetDao.getOne(onboardingWidgetId);
+                     if (widget != null && widget.getAppId() != null) { // widget exists
+                            if (!this.isUserAdminOfAppForWidget(adminRolesService.isSuperAdmin(user), user.getId(),
+                                    widget.getAppId())) {
+                                   fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_FORBIDDEN);
+                            } else {
+                                   fnWidgetDao.deleteById(onboardingWidgetId);
+                                   fieldsValidator.setHttpStatusCode(
+                                           (long) HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                            }
+                     }
+              }
+              return fieldsValidator;
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/ep/EpMicroserviceParameterService.java b/portal-BE/src/main/java/org/onap/portal/service/ep/EpMicroserviceParameterService.java
new file mode 100644 (file)
index 0000000..2544ae6
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.service.ep;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.criterion.Restrictions;
+import org.onap.portal.dao.ep.EpMicroserviceParameterDao;
+import org.onap.portal.domain.db.ep.EpMicroserviceParameter;
+import org.onap.portal.domain.dto.ecomp.MicroserviceParameter;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class EpMicroserviceParameterService {
+
+       EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EpWidgetCatalogParameterService.class);
+
+       private final EpMicroserviceParameterDao epMicroserviceParameterDao;
+
+       @Autowired
+       public EpMicroserviceParameterService(
+               final EpMicroserviceParameterDao epMicroserviceParameterDao) {
+              this.epMicroserviceParameterDao = epMicroserviceParameterDao;
+       }
+
+       public List<MicroserviceParameter> getParametersById(long serviceId) {
+              List<Criterion> restrictionsList = new ArrayList<>();
+              Criterion contextIdCrit = Restrictions.eq("serviceId", serviceId);
+              restrictionsList.add(contextIdCrit);
+              List<MicroserviceParameter> list = mapToMicroserviceParameterList(epMicroserviceParameterDao.getParametersById(serviceId));
+              logger.debug(EELFLoggerDelegate.debugLogger,
+                      "getParametersById: microservice parameters list size: " + list.size());
+              return list;
+       }
+
+       private MicroserviceParameter epWidgetCatalogParameterToMicroserviceParameter(
+               final EpMicroserviceParameter microservice) {
+              return new MicroserviceParameter(microservice.getId(), microservice.getServiceId().getId(),
+                      microservice.getParaKey(), microservice.getParaValue());
+       }
+
+       private List<MicroserviceParameter> mapToMicroserviceParameterList(final List<EpMicroserviceParameter> list){
+              return list.stream().map(this::epWidgetCatalogParameterToMicroserviceParameter).collect(Collectors.toList());
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogParameterService.java b/portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogParameterService.java
new file mode 100644 (file)
index 0000000..8488e5a
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.service.ep;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.onap.portal.dao.ep.EpMicroserviceParameterDao;
+import org.onap.portal.dao.ep.EpWidgetCatalogParameterDao;
+import org.onap.portal.dao.fn.EpWidgetCatalogDao;
+import org.onap.portal.dao.fn.FnUserDao;
+import org.onap.portal.domain.db.ep.EpWidgetCatalogParameter;
+import org.onap.portal.domain.dto.ecomp.WidgetCatalogParameter;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class EpWidgetCatalogParameterService {
+
+       EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EpWidgetCatalogParameterService.class);
+
+       private final EpWidgetCatalogParameterDao epWidgetCatalogParameterDao;
+       private final EpMicroserviceParameterDao epMicroserviceParameterDao;
+       private final EpWidgetCatalogDao epWidgetCatalogDao;
+       private final FnUserDao fnUserDao;
+
+       @Autowired
+       public EpWidgetCatalogParameterService(
+               final EpWidgetCatalogParameterDao epWidgetCatalogParameterDao,
+               final EpMicroserviceParameterDao epMicroserviceParameterDao,
+               EpWidgetCatalogDao epWidgetCatalogDao, FnUserDao fnUserDao) {
+              this.epWidgetCatalogParameterDao = epWidgetCatalogParameterDao;
+              this.epMicroserviceParameterDao = epMicroserviceParameterDao;
+              this.epWidgetCatalogDao = epWidgetCatalogDao;
+              this.fnUserDao = fnUserDao;
+       }
+
+       public List<WidgetCatalogParameter> getUserParameterById(Long paramId) {
+              return mapEpWidgetListToWidgetList(
+                      epWidgetCatalogParameterDao.retrieveByParamId(paramId).orElse(new ArrayList<>()));
+       }
+
+       public void deleteUserParameterById(Long paramId) {
+              epWidgetCatalogParameterDao.deleteWidgetCatalogParameter(paramId);
+              epMicroserviceParameterDao.deleteMicroserviceParameterById(paramId);
+       }
+
+       public WidgetCatalogParameter getUserParamById(Long widgetId, Long userId, Long paramId) {
+              WidgetCatalogParameter widgetParam = null;
+              List<WidgetCatalogParameter> list = mapEpWidgetListToWidgetList(
+                      epWidgetCatalogParameterDao.getUserParamById(widgetId, userId, paramId)
+                              .orElse(new ArrayList<>()));
+              if (list.size() != 0) {
+                     widgetParam = list.get(0);
+              }
+              logger.debug(EELFLoggerDelegate.debugLogger,
+                      "getUserParamById: widget parameters: " + widgetParam);
+              return widgetParam;
+       }
+
+       public void saveUserParameter(WidgetCatalogParameter newParameter) {
+              epWidgetCatalogParameterDao.saveAndFlush(mapToEpWidgetCatalogParameter(newParameter));
+       }
+
+       private EpWidgetCatalogParameter mapToEpWidgetCatalogParameter(WidgetCatalogParameter wcp){
+
+              return new EpWidgetCatalogParameter(wcp.getId(), epWidgetCatalogDao.findById(wcp.getWidgetId()).get(),
+                      fnUserDao.findById(wcp.getUserId()).get(),
+                      epMicroserviceParameterDao.findById(wcp.getParamId()).get(),
+                      wcp.getUserValue());
+       }
+
+       private List<EpWidgetCatalogParameter> mapToList(List<WidgetCatalogParameter> list){
+              return list.stream().map(this::mapToEpWidgetCatalogParameter).collect(Collectors.toList());
+       }
+
+       private WidgetCatalogParameter mapEpWidgetCatalogParametertoWidgetCatalogParameter(
+               EpWidgetCatalogParameter ewcp) {
+              return new WidgetCatalogParameter(ewcp.getId(), ewcp.getWidgetId().getWidgetId(),
+                      ewcp.getUserId().getId(), ewcp.getParamId().getId(), ewcp.getUserValue());
+       }
+
+       private List<WidgetCatalogParameter> mapEpWidgetListToWidgetList(
+               List<EpWidgetCatalogParameter> epWidgetCatalogParameters) {
+              return epWidgetCatalogParameters.stream().map(this::mapEpWidgetCatalogParametertoWidgetCatalogParameter)
+                      .collect(Collectors.toList());
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/fn/FnAppService.java b/portal-BE/src/main/java/org/onap/portal/service/fn/FnAppService.java
new file mode 100644 (file)
index 0000000..75b32dd
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.service.fn;
+
+import java.util.List;
+import org.onap.portal.dao.fn.FnAppDao;
+import org.onap.portal.domain.db.fn.FnApp;
+import org.onap.portal.domain.dto.transport.OnboardingApp;
+import org.onap.portal.utils.EPCommonSystemProperties;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class FnAppService {
+
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnAppService.class);
+
+       private final FnAppDao fnAppDao;
+
+       @Autowired
+       public FnAppService(final FnAppDao fnAppDao) {
+              this.fnAppDao = fnAppDao;
+       }
+
+       public List<FnApp> getAppsFullList() {
+              return fnAppDao.findAll();
+       }
+
+       public void createOnboardingFromApp(FnApp app, OnboardingApp onboardingApp) {
+              onboardingApp.setId(app.getId());
+              onboardingApp.setName(app.getAppName());
+              onboardingApp.setImageUrl(app.getAppImageUrl());
+              onboardingApp.setDescription(app.getAppDescription());
+              onboardingApp.setNotes(app.getAppNotes());
+              onboardingApp.setUrl(app.getAppUrl());
+              onboardingApp.setAlternateUrl(app.getAppAlternateUrl());
+              onboardingApp.setRestUrl(app.getAppRestEndpoint());
+              onboardingApp.setIsOpen(app.getOpen());
+              onboardingApp.setIsEnabled(app.getEnabled());
+              onboardingApp.setUsername(app.getAppUsername());
+              onboardingApp.setAppPassword((app.getAppPassword().equals(EPCommonSystemProperties.APP_DISPLAY_PASSWORD))
+                      ? EPCommonSystemProperties.APP_DISPLAY_PASSWORD : decryptedPassword(app.getAppPassword(), app));
+              onboardingApp.setUebTopicName(app.getUebTopicName());
+              onboardingApp.setUebKey(app.getUebKey());
+              onboardingApp.setUebSecret(app.getUebSecret());
+              onboardingApp.setIsCentralAuth(app.getAuthCentral());
+              onboardingApp.setNameSpace(app.getAuthNamespace());
+              onboardingApp.setRestrictedApp(app.isRestrictedApp());
+       }
+
+       private String decryptedPassword(String encryptedAppPwd, FnApp app) {
+              String result = "";
+              if (encryptedAppPwd != null && !encryptedAppPwd.isEmpty()) {
+                     try {
+                            result = CipherUtil.decryptPKC(encryptedAppPwd,
+                                    SystemProperties.getProperty(SystemProperties.Decryption_Key));
+                     } catch (Exception e) {
+                            logger.error(EELFLoggerDelegate.errorLogger,
+                                    "decryptedPassword failed for app " + app.getAppName(), e);
+                     }
+              }
+              return result;
+       }
+}
index 8c5806e..855e827 100644 (file)
@@ -44,7 +44,6 @@ import java.security.Principal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
-import java.util.stream.Collectors;
 import org.onap.portal.dao.fn.FnUserDao;
 import org.onap.portal.domain.db.fn.FnUser;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -89,7 +88,6 @@ public class FnUserService implements UserDetailsService {
        }
 
        List<FnUser> getUsersByOrgIds(final List<String> orgIds){
-              String ids = "(" + orgIds.stream().map(s -> "'" + s + "'").collect(Collectors.joining()) + ")";
               return fnUserDao.getUsersByOrgIds(orgIds).orElse(new ArrayList<>());
        }
 
diff --git a/portal-BE/src/main/java/org/onap/portal/service/fn/old/AppsCacheService.java b/portal-BE/src/main/java/org/onap/portal/service/fn/old/AppsCacheService.java
new file mode 100644 (file)
index 0000000..7703420
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.service.fn.old;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import javax.annotation.PostConstruct;
+import org.onap.portal.domain.db.fn.FnApp;
+import org.onap.portal.domain.dto.transport.OnboardingApp;
+import org.onap.portal.service.fn.FnAppService;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.stereotype.Service;
+
+@Service("appsCacheService")
+@Configuration
+@EnableAspectJAutoProxy
+public class AppsCacheService {
+       @Autowired
+       private
+       FnAppService appsService;
+       
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AppsCacheService.class);
+       
+       final class CacheConfiguration {
+               
+               private long updateTime = 0;
+               private int updateInterval = 10;
+               
+               public CacheConfiguration (long _updateTime, int _updateInterval) {
+                       updateTime = _updateTime;
+                       updateInterval = _updateInterval;
+               }
+       }
+       
+       private CacheConfiguration quickRefreshCacheConf = null;
+       private CacheConfiguration slowRefreshCacheConf = null;
+       
+       
+       private static volatile Map<Long, FnApp> appsMap;
+       private static volatile Map<String, FnApp> uebAppsMap;
+       
+       @PostConstruct
+       public void init() {
+               quickRefreshCacheConf = new CacheConfiguration(0, 120);
+               slowRefreshCacheConf = new CacheConfiguration(0, 3600);
+               
+               this.refreshAppsMap(quickRefreshCacheConf);
+       }
+
+       private void refreshAppsMap(CacheConfiguration conf) {
+               long now = System.currentTimeMillis();
+               
+               if(noNeedToUpdate(now, conf))
+                       return;
+               
+               synchronized (this) {
+                       if(noNeedToUpdate(now, conf))
+                               return;
+                       List<FnApp> allApps = appsService.getAppsFullList();
+                       Map<Long, FnApp> newAppsMap = new HashMap<>();
+                       for (FnApp app : allApps) {
+                               newAppsMap.put(app.getId(), app);
+                       }
+                       
+                       Map<String, FnApp> newUebAppsMap = new HashMap<>();
+                       for (FnApp app : allApps) {
+                               newUebAppsMap.put(app.getUebKey(), app);
+                       }
+                       // Switch cache with the new one.
+                       appsMap = newAppsMap;
+                       uebAppsMap = newUebAppsMap;
+                       conf.updateTime = now;
+               }
+               
+       }
+
+       private boolean noNeedToUpdate(long now, CacheConfiguration conf) {
+               long secondsPassed = (now - conf.updateTime)/1000;
+               if(secondsPassed < conf.updateInterval){
+                       logger.debug(EELFLoggerDelegate.debugLogger, "no need to refresh yet, seconds since last refresh: " + secondsPassed + ", refresh interval (sec) = " + conf.updateInterval);
+                       return true; // no need to update cache
+               }
+               return false; // its time to update
+       }
+
+       public String getAppEndpoint(Long appId) {
+               refreshAppsMap(quickRefreshCacheConf);
+               FnApp app = appsMap.get(appId);
+               if(app != null)
+                       return app.getAppRestEndpoint();
+               return null;
+       }
+
+       public List<OnboardingApp> getAppsFullList() {
+               refreshAppsMap(quickRefreshCacheConf);
+               List<FnApp> appList = new ArrayList<>(appsMap.values());
+               appList.removeIf(app -> app.getId() == 1);
+               List<FnApp> appsFinalList = appList.stream()
+               .filter(app -> app.getEnabled() && !app.getOpen()).collect(Collectors.toList());
+               
+               List<OnboardingApp> onboardingAppsList = new ArrayList<>();
+               for (FnApp app : appsFinalList) {
+                       OnboardingApp onboardingApp = new OnboardingApp();
+                       appsService.createOnboardingFromApp(app, onboardingApp);
+                       onboardingAppsList.add(onboardingApp);
+               }
+               return onboardingAppsList;      
+       }
+
+       public FnApp getApp(Long appId) {
+               refreshAppsMap(quickRefreshCacheConf);
+               FnApp app = appsMap.get(appId);
+               return app;
+       }
+
+       public FnApp getAppFromUeb(String appKey) {
+               return  getAppFromUeb(appKey,0);        
+       }
+
+       public FnApp getAppFromUeb(String appKey, Integer quickCacheRefresh) {
+               refreshAppsMap(quickCacheRefresh == 1 ? quickRefreshCacheConf:slowRefreshCacheConf);
+               FnApp app = uebAppsMap.get(appKey);
+               return app;
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/fn/old/EPRoleFunctionService.java b/portal-BE/src/main/java/org/onap/portal/service/fn/old/EPRoleFunctionService.java
new file mode 100644 (file)
index 0000000..b044dfb
--- /dev/null
@@ -0,0 +1,105 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 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
+ *
+ * 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============================================
+ *
+ * 
+ */
+package org.onap.portal.service.fn.old;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import org.onap.portal.domain.db.fn.FnRole;
+import org.onap.portal.domain.db.fn.FnRoleFunction;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.utils.EPUserUtils;
+import org.onap.portalsdk.core.domain.RoleFunction;
+import org.onap.portalsdk.core.service.DataAccessService;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class EPRoleFunctionService {
+       @Autowired
+       private DataAccessService dataAccessService;
+       
+       
+
+       public DataAccessService getDataAccessService() {
+               return dataAccessService;
+       }
+
+       public void setDataAccessService(DataAccessService dataAccessService) {
+               this.dataAccessService = dataAccessService;
+       }
+
+       @SuppressWarnings("unchecked")
+       public List<RoleFunction> getRoleFunctions() {
+               return getDataAccessService().getList(RoleFunction.class, null);
+       }
+
+       @SuppressWarnings("unchecked")
+       public Set getRoleFunctions(HttpServletRequest request, FnUser user) {
+               HashSet roleFunctions = null;
+
+               HttpSession session = request.getSession();
+               roleFunctions = (HashSet) session
+                               .getAttribute(SystemProperties.getProperty(SystemProperties.ROLE_FUNCTIONS_ATTRIBUTE_NAME));
+
+               if (roleFunctions == null) {
+                       HashMap roles = (HashMap) EPUserUtils.getRoles(request);
+                       roleFunctions = new HashSet();
+
+                       for (Object o : roles.keySet()) {
+                               Long roleKey = (Long) o;
+                               FnRole role = (FnRole) roles.get(roleKey);
+
+                               for (FnRoleFunction fnRoleFunction : role.getFnRoleFunctions()) {
+                                       FnRoleFunction function = fnRoleFunction;
+                                       roleFunctions.add(function.getFunctionCd());
+                               }
+                       }
+
+                       session.setAttribute(SystemProperties.getProperty(SystemProperties.ROLE_FUNCTIONS_ATTRIBUTE_NAME),
+                                       roleFunctions);
+               }
+
+               return roleFunctions;
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/utils/EPCommonSystemProperties.java b/portal-BE/src/main/java/org/onap/portal/utils/EPCommonSystemProperties.java
new file mode 100644 (file)
index 0000000..bfe8661
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.utils;
+
+import org.onap.portalsdk.core.util.SystemProperties;
+
+public class EPCommonSystemProperties extends SystemProperties {
+
+       public static final String LOGIN_URL_NO_RET_VAL                         = "login_url_no_ret_val";
+       public static final String ECOMP_APP_ID                         = "ecomp_app_id";
+       public static final String SYS_ADMIN_ROLE_ID                    = "sys_admin_role_id";
+       public static final String DUBLICATED_FIELD_VALUE_ECOMP_ERROR   = "1201";
+       public static final String ACCOUNT_ADMIN_ROLE_ID                = "account_admin_role_id";
+       public static final String RESTRICTED_APP_ROLE_ID                               = "restricted_app_role_id";
+       public static final String FE_URL                                       = "frontend_url";
+       public static final String HEALTH_POLL_INTERVAL_SECONDS         = "health_poll_interval_seconds";
+       public static final String HEALTHFAIL_ALERT_EVERY_X_INTERVALS   = "health_fail_alert_every_x_intervals";
+       public static final String USER_GUIDE_URL                       = "user_guide_link";
+       
+       public static final String USER_FIRST_NAME                                              = "USER_FIRST_NAME";
+       public static final String USER_LAST_NAME                                               = "USER_LAST_NAME";
+       public static final String USER_EMAIL                                                   = "USER_EMAIL";
+       public static final String USER_ORG_USERID                                              = "USER_ORG_USERID";
+       
+       public static final String USH_TICKET_URL                                               = "ush_ticket_url"; 
+
+       public static final String EXTERNAL_API_RESPONSE_CODE                   = "External_API_ResponseCode";
+       public static final String COOKIE_DOMAIN                        = "cookie_domain";
+
+       public static final String FEEDBACK_EMAIL_ADDRESS                               = "feedback_email_address";
+       public static final String PORTAL_INFO_URL                                              = "portal_info_url";
+       
+       public static final String ONLINE_USER_UPDATE_RATE                              = "online_user_update_rate";
+       public static final String ONLINE_USER_UPDATE_DURATION                  = "online_user_update_duration";
+       
+       public static final String NOTIFICATION_UPDATE_RATE                             = "notification_update_rate";
+       public static final String NOTIFICATION_UPDATE_DURATION                 = "notification_update_duration";
+       
+       public static final String WINDOW_WIDTH_THRESHOLD_LEFT_MENU             = "window_width_threshold_left_menu";
+       public static final String WINDOW_WIDTH_THRESHOLD_RIGHT_MENU    = "window_width_threshold_right_menu";
+               
+       public static final String AUDITLOG_DEL_DAY_FROM                                = "auditlog_del_day_from";
+       public static final String AUDITLOG_DELETE_CRON                                 = "auditlog_delete_cron";
+       
+       public static final String AUTH_USER_SERVER                                     = "auth_user_server";
+       public static final String EXTERNAL_ACCESS_ENABLE                               = "external_access_enable";
+
+       public static final String EXTERNAL_SYSTEM_NOTIFICATION_URL             = "external_system_notification_url";
+       public static final String EXTERNAL_CENTRAL_AUTH_USER_NAME              = "ext_central_access_user_name";
+       public static final String EXTERNAL_CENTRAL_AUTH_PASSWORD       = "ext_central_access_password";
+       public static final String EXTERNAL_CENTRAL_ACCESS_URL              = "ext_central_access_url";
+       public static final String EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN  = "ext_central_access_user_domain";
+       public static final String REMOTE_CENTRALISED_SYSTEM_ACCESS             = "remote_centralized_system_access";
+
+       public static final String WIDGET_MS_PROTOCOL                                   = "microservices.widget.protocol";
+       public static final String WIDGET_MS_HOSTNAME                                   = "microservices.widget.hostname";
+       
+       public static final String REMOTE_CENTRALIZED_SYSTEM_ACCESS             = "remote_centralized_system_access";
+       
+       public static final String APP_DISPLAY_PASSWORD                                 = "*******";
+       
+       public static final String MS_WIDGET_LOCAL_PORT                 = "microservices.widget.local.port";
+       public static final String MS_WIDGET_UPLOAD_FLAG                = "microservices.widget.upload.flag";
+       public static final String UEB_KEY                                                              = "uebkey";
+       public static final String AUTHORIZATION                                                = "Authorization";
+       public static final String USERNAME                                                 = "username";
+       public static final String PASSWORD                                                 = "password";
+       
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/utils/EPUserUtils.java b/portal-BE/src/main/java/org/onap/portal/utils/EPUserUtils.java
new file mode 100644 (file)
index 0000000..b72a829
--- /dev/null
@@ -0,0 +1,408 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.utils;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import lombok.NoArgsConstructor;
+import org.apache.commons.codec.DecoderException;
+import org.apache.commons.codec.binary.Hex;
+import org.onap.portal.domain.db.fn.FnRole;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.db.fn.FnUserRole;
+import org.onap.portal.exception.RoleFunctionException;
+import org.onap.portal.service.fn.old.EPRoleFunctionService;
+import org.onap.portalsdk.core.domain.RoleFunction;
+import org.onap.portalsdk.core.exception.SessionExpiredException;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.menu.MenuBuilder;
+import org.onap.portalsdk.core.service.DataAccessService;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.portalsdk.core.web.support.AppUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@NoArgsConstructor
+public class EPUserUtils {
+
+       public static final String ALL_ROLE_FUNCTIONS = "allRoleFunctions";
+
+       private static final String decodeValueOfForwardSlash = "2f";
+       private static final String decodeValueOfHyphen = "2d";
+       private static final String decodeValueOfAsterisk = "2a";
+       private static final Long ACCOUNT_ADMIN_ROLE_ID = 999L;
+
+       private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EPUserUtils.class);
+       private static DataAccessService dataAccessService;
+
+       /**
+        * Gets the EPUser object from the session.
+        *
+        * @param request HttpServletRequest
+        * @return EPUser object that was created upon login
+        * @throws SessionExpiredException if no session exists.
+        */
+       public static FnUser getUserSession(HttpServletRequest request) {
+              HttpSession session = AppUtils.getSession(request);
+              if (session == null) {
+                     throw new SessionExpiredException();
+              }
+              return (FnUser) session.getAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME));
+       }
+
+       /**
+        * Establishes the user's portal session
+        *
+        * @param request HttpServletRequest
+        * @param user EPUser
+        * @param applicationMenuData Menu data
+        * @param businessDirectMenuData Menu data
+        * @param ePRoleFunctionService role function service
+        */
+       @SuppressWarnings("rawtypes")
+       public static void setUserSession(HttpServletRequest request, FnUser user, Set applicationMenuData,
+               Set businessDirectMenuData, EPRoleFunctionService ePRoleFunctionService) throws RoleFunctionException {
+              HttpSession session = request.getSession(true);
+
+              // clear the current user session to avoid any conflicts
+              EPUserUtils.clearUserSession(request);
+              session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME), user);
+
+              setAllRoleFunctions(ePRoleFunctionService.getRoleFunctions(), session);
+
+              ePRoleFunctionService.getRoleFunctions(request, user);
+
+              // truncate the role (and therefore the role function) data to save
+              // memory in the session
+              user.setFnRoles(null);
+              session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_NAME), user.getFullName());
+
+              ServletContext context = session.getServletContext();
+              try {
+                     context.getAttribute("licenseVerification");
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger,
+                             "setUserSession failed to get licenseVerification attribute",
+                             e);
+              }
+              session.setAttribute(SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME), "My Portal");
+              session.setAttribute(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_ATTRIBUTE_NAME),
+                      MenuBuilder.filterMenu(applicationMenuData, request));
+              session.setAttribute(SystemProperties.getProperty(SystemProperties.BUSINESS_DIRECT_MENU_ATTRIBUTE_NAME),
+                      MenuBuilder.filterMenu(businessDirectMenuData, request));
+       }
+
+       /**
+        * Creates a set of role function names and stores the set as a session attribute.
+        *
+        * @param allRoleFunctions List of role functions.
+        * @param session HttpSession
+        */
+       private static void setAllRoleFunctions(List<RoleFunction> allRoleFunctions, HttpSession session)
+               throws RoleFunctionException {
+              if (allRoleFunctions == null) {
+                     return;
+              }
+              Set<String> roleFnSet = new HashSet<>();
+              for (RoleFunction roleFn : allRoleFunctions) {
+                     roleFnSet.add(decodeFunctionCode(roleFn.getCode()));
+              }
+              session.setAttribute(ALL_ROLE_FUNCTIONS, roleFnSet);
+       }
+
+
+       public static String decodeFunctionCode(String str) throws RoleFunctionException {
+              String decodedString = str;
+              List<Pattern> decodingList = new ArrayList<>();
+              decodingList.add(Pattern.compile(decodeValueOfForwardSlash));
+              decodingList.add(Pattern.compile(decodeValueOfHyphen));
+              decodingList.add(Pattern.compile(decodeValueOfAsterisk));
+              for (Pattern xssInputPattern : decodingList) {
+                     try {
+                            decodedString = decodedString.replaceAll("%" + xssInputPattern,
+                                    new String(Hex.decodeHex(xssInputPattern.toString().toCharArray())));
+                     } catch (DecoderException e) {
+                            logger.error(EELFLoggerDelegate.errorLogger, "Failed to decode the Rolefunction: " + str,
+                                    e);
+                            throw new RoleFunctionException("decode failed", e);
+                     }
+              }
+
+              return decodedString;
+       }
+
+       /**
+        * Removes all stored attributes from the user's session
+        *
+        * @param request HttpServletRequest
+        * @throws SessionExpiredException if no session exists
+        */
+       private static void clearUserSession(HttpServletRequest request) {
+              HttpSession session = AppUtils.getSession(request);
+              if (session == null) {
+                     throw new SessionExpiredException();
+              }
+
+              // removes all stored attributes from the current user's session
+              session.removeAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME));
+              session.removeAttribute(SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_ATTRIBUTE_NAME));
+              session.removeAttribute(
+                      SystemProperties.getProperty(SystemProperties.BUSINESS_DIRECT_MENU_ATTRIBUTE_NAME));
+              session.removeAttribute(SystemProperties.getProperty(SystemProperties.ROLES_ATTRIBUTE_NAME));
+              session.removeAttribute(SystemProperties.getProperty(SystemProperties.ROLE_FUNCTIONS_ATTRIBUTE_NAME));
+       }
+
+       /**
+        * Gets role information from the user session, in the cached user object. As a side effect sets a session
+        * variable with the roles.
+        *
+        * @param request HttpServletRequest
+        * @return Map of role ID to role object
+        */
+       @SuppressWarnings("rawtypes")
+       public static Map getRoles(HttpServletRequest request) {
+              HashMap roles;
+
+              HttpSession session = AppUtils.getSession(request);
+              roles = (HashMap) session
+                      .getAttribute(SystemProperties.getProperty(SystemProperties.ROLES_ATTRIBUTE_NAME));
+
+              // if roles are not already cached, let's grab them from the user
+              // session
+              if (roles == null) {
+                     FnUser user = getUserSession(request);
+
+                     // get all user roles (including the tree of child roles)
+                     roles = getAllUserRoles(user);
+
+                     session.setAttribute(SystemProperties.getProperty(SystemProperties.ROLES_ATTRIBUTE_NAME), roles);
+              }
+
+              return roles;
+       }
+
+       /**
+        * Builds a map of role ID to role object.
+        *
+        * @param user EPUser
+        * @return Map of role ID to role object
+        */
+       @SuppressWarnings({"rawtypes", "unchecked"})
+       private static HashMap getAllUserRoles(FnUser user) {
+              HashMap roles = new HashMap();
+
+              for (FnRole role : user.getFnRoles()) {
+                     if (role.getActiveYn()) {
+                            roles.put(role.getId(), role);
+                            addChildRoles(role, roles);
+                     }
+              }
+
+              // Additionally; the account admin role is overloaded between onap
+              // portal and partners; lets also include that
+              for (FnUserRole epUserApp : user.getFnUserRoles()) {
+                     FnRole role = epUserApp.getRoleId();
+
+                     if (role.getActiveYn() && role.getRoleId().equals(ACCOUNT_ADMIN_ROLE_ID)) {
+                            roles.put(role.getId(), role);
+
+                            // let's take a recursive trip down the tree to add all child
+                            // roles
+                            addChildRoles(role, roles);
+                     }
+              }
+
+              return roles;
+       }
+
+       /**
+        * Adds all child roles of the specified role to the map of roles.
+        *
+        * @param role EPRole
+        * @param roles Maps role id to role object
+        */
+       @SuppressWarnings({"rawtypes", "unchecked"})
+       private static void addChildRoles(FnRole role, HashMap roles) {
+              Set<FnRole> childRoles = role.getFnRoles();
+              if (childRoles != null && !childRoles.isEmpty()) {
+                     for (Object o : childRoles) {
+                            FnRole childRole = (FnRole) o;
+                            if (childRole.getActiveYn()) {
+                                   roles.put(childRole.getId(), childRole);
+                                   addChildRoles(childRole, roles);
+                            }
+                     }
+              }
+
+       }
+
+       public static boolean hasRole(FnUser user, String roleKey) {
+              return getAllUserRoles(user).keySet().contains(new Long(roleKey));
+       }
+
+       public static DataAccessService getDataAccessService() {
+              return dataAccessService;
+       }
+
+       @Autowired
+       public static void setDataAccessService(DataAccessService dataAccessService) {
+              EPUserUtils.dataAccessService = dataAccessService;
+       }
+
+       /**
+        * Gets the user's ID from the user object in the session
+        *
+        * @param request HttpServletRequest
+        * @return Integer ID of current user
+        */
+       public static int getUserId(HttpServletRequest request) {
+              return getUserIdAsLong(request).intValue();
+       }
+
+       /**
+        * Gets the user's ID from the user object in the session
+        *
+        * @param request HttpServletREquest
+        * @return Long ID of current user
+        */
+       static Long getUserIdAsLong(HttpServletRequest request) {
+              Long userId = new Long(SystemProperties.getProperty(SystemProperties.APPLICATION_USER_ID));
+              if (request != null && getUserSession(request) != null) {
+                     userId = getUserSession(request).getId();
+              }
+              return userId;
+       }
+
+       /**
+        * Gets the request ID from the request.
+        *
+        * @param request HttpServletRequest
+        * @return Request ID
+        */
+       public static String getRequestId(HttpServletRequest request) {
+              Enumeration<String> headerNames = request.getHeaderNames();
+
+              String requestId = "";
+              try {
+                     while (headerNames.hasMoreElements()) {
+                            String headerName = headerNames.nextElement();
+                            logger.debug(EELFLoggerDelegate.debugLogger,
+                                    "One header is " + headerName + " : " + request.getHeader(headerName));
+                            if (headerName.equalsIgnoreCase(SystemProperties.ECOMP_REQUEST_ID)) {
+                                   requestId = request.getHeader(headerName);
+                                   break;
+                            }
+                     }
+              } catch (Exception e) {
+                     logger.error(EELFLoggerDelegate.errorLogger, "getRequestId failed", e);
+              }
+
+              return (requestId.isEmpty() ? UUID.randomUUID().toString() : requestId);
+       }
+
+       /**
+        * Gets the full URL from the request.
+        *
+        * @param request HttpServletRequest
+        * @return Full URL
+        */
+       static String getFullURL(HttpServletRequest request) {
+              if (request != null) {
+                     StringBuffer requestURL = request.getRequestURL();
+                     String queryString = request.getQueryString();
+
+                     if (queryString == null) {
+                            return requestURL.toString();
+                     } else {
+                            return requestURL.append('?').append(queryString).toString();
+                     }
+              }
+              return "";
+       }
+
+       public static Boolean matchRoleFunctions(String portalApiPath, Set<? extends String> roleFunctions) {
+              String[] path = portalApiPath.split("/");
+              List<String> roleFunList;
+              if (path.length > 1) {
+                     roleFunList = roleFunctions.stream().filter(item -> item.startsWith(path[0]))
+                             .collect(Collectors.toList());
+                     if (roleFunList.size() >= 1) {
+                            for (String roleFunction : roleFunList) {
+                                   String[] roleFunctionArray = roleFunction.split("/");
+                                   boolean b = true;
+                                   if (roleFunctionArray.length == path.length) {
+                                          for (int i = 0; i < roleFunctionArray.length; i++) {
+                                                 if (!roleFunctionArray[i].equals("*")) {
+                                                        Pattern p = Pattern.compile(Pattern.quote(path[i]),
+                                                                Pattern.CASE_INSENSITIVE);
+                                                        Matcher m = p.matcher(roleFunctionArray[i]);
+                                                        b = m.matches();
+                                                 }
+                                          }
+                                          if (b) {
+                                                 return true;
+                                          }
+                                   }
+                            }
+                     }
+              } else {
+                     for (String roleFunction : roleFunctions) {
+                            if (roleFunction.equals(("*"))) {
+                                   return true;
+                            } else if (portalApiPath.matches(roleFunction)) {
+                                   return true;
+                            }
+                     }
+              }
+              return false;
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/utils/EcompPortalUtils.java b/portal-BE/src/main/java/org/onap/portal/utils/EcompPortalUtils.java
new file mode 100644 (file)
index 0000000..ed03f4a
--- /dev/null
@@ -0,0 +1,591 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.utils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.nio.charset.Charset;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Base64;
+import java.util.Date;
+import java.util.List;
+import java.util.regex.Pattern;
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.bind.DatatypeConverter;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.commons.lang.StringUtils;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.logging.format.EPAppMessagesEnum;
+import org.onap.portal.logging.logic.EPLogUtil;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.slf4j.MDC;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+
+public class EcompPortalUtils {
+
+       private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EcompPortalUtils.class);
+
+       private static final String FUNCTION_PIPE = "|";
+
+       // TODO: GLOBAL_LOGIN_URL is the same as in SessionTimeoutInterceptor.
+       // It should be defined in SystemProperties.
+       private static final String GLOBAL_LOGIN_URL = "global-login-url";
+
+       // It is a regular expression used for while creating a External Central Auth
+       // Role
+       public static final String EXTERNAL_CENTRAL_AUTH_ROLE_HANDLE_SPECIAL_CHARACTERS = "([^A-Z^a-z^0-9^\\.^%^(^)^=^:])";
+
+       public static final String slash = "/";
+
+       /**
+        * @param orgUserId User ID to validate
+        * @return true if orgUserId is not empty and contains only alphanumeric, false
+        *         otherwise
+        */
+       public static boolean legitimateUserId(String orgUserId) {
+               return orgUserId.matches("^[a-zA-Z0-9/_/-/@]+$");
+       }
+
+       /**
+        * Splits the string into a list of tokens using the specified regular
+        * expression
+        * 
+        * @param source String to split
+        * @param regex  tokens
+        * @return List of tokens split from the source
+        */
+       public static List<String> parsingByRegularExpression(String source, String regex) {
+               List<String> tokens = new ArrayList<>();
+               if (source != null && source.length() > 0) {
+                       String[] parsed = source.split(regex);
+                       for (String token : parsed) {
+                               if (token.length() > 0) {
+                                       tokens.add(token);
+                               }
+                       }
+               }
+               return tokens;
+       }
+
+       /**
+        * Builds a JSON object with error code and message information.
+        * 
+        * @param errorCode    error code
+        * @param errorMessage message
+        * @return JSON object as a String
+        */
+       public static String jsonErrorMessageResponse(int errorCode, String errorMessage) {
+               return "{\"error\":{\"code\":" + errorCode + "," + "\"message\":\"" + errorMessage + "\"}}";
+       }
+
+       /**
+        * Builds a JSON object with the specified message
+        * 
+        * @param message Message to embed
+        * @return JSON object as a String
+        */
+       public static String jsonMessageResponse(String message) {
+               return String.format("{\"message\":\"%s\"}", message);
+       }
+
+       /**
+        * Serializes the specified object as JSON and writes the result to the debug
+        * log. If serialization fails, logs a message to the error logger.
+        * 
+        * @param logger Logger for the class where the object was built; the logger
+        *               carries the class name.
+        * @param source First portion of the log message
+        * @param msg    Second portion of the log message
+        * @param obj    Object to serialize as JSON
+        */
+       public static void logAndSerializeObject(EELFLoggerDelegate logger, String source, String msg, Object obj) {
+               try {
+                       String objectAsJson = new ObjectMapper().writeValueAsString(obj);
+                       logger.debug(EELFLoggerDelegate.debugLogger,
+                                       String.format("source= [%s]; %s [%s];", source, msg, objectAsJson));
+               } catch (JsonProcessingException e) {
+                       logger.warn(EELFLoggerDelegate.errorLogger, "logAndSerializedObject failed to serialize", e);
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeInvalidJsonInput, e);
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "logAndSerializedObject failed", e);
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeInvalidJsonInput, e);
+               }
+       }
+
+       /**
+        * Serializes the specified object as JSON and writes the result to the debug
+        * log. If serialization fails, logs a message to the error logger.
+        * 
+        * @param source First portion of the log message
+        * @param msg    Second portion of the log message
+        * @param obj    Object to serialize as JSON
+        */
+       public static void logAndSerializeObject(String source, String msg, Object obj) {
+               logAndSerializeObject(logger, source, msg, obj);
+       }
+
+       public static void rollbackTransaction(Transaction transaction, String errorMessage) {
+               logger.error(EELFLoggerDelegate.errorLogger, errorMessage);
+               try {
+                       if (transaction != null) {
+                               transaction.rollback();
+                       }
+               } catch (Exception e) {
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeExecuteRollbackError, e);
+                       logger.error(EELFLoggerDelegate.errorLogger, "Exception occurred while performing a rollback transaction",
+                                       e);
+               }
+       }
+
+       public static void closeLocalSession(Session localSession, String errorMessage) {
+               logger.error(EELFLoggerDelegate.errorLogger, errorMessage);
+               try {
+                       if (localSession != null) {
+                               localSession.close();
+                       }
+               } catch (Exception e) {
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeDaoCloseSessionError, e);
+                       logger.error(EELFLoggerDelegate.errorLogger, errorMessage + ", closeLocalSession exception", e);
+               }
+       }
+
+       /**
+        * Set response status to Unauthorized if user == null and to Forbidden in all
+        * (!) other cases. Logging is not performed if invocator == null
+        * 
+        * @param user      User object
+        * @param response  HttpServletResponse
+        * @param invocator may be null
+        */
+       public static void setBadPermissions(FnUser user, HttpServletResponse response, String invocator) {
+               if (user == null) {
+                       String loginUrl = SystemProperties.getProperty(EPCommonSystemProperties.LOGIN_URL_NO_RET_VAL);
+                       response.setHeader(GLOBAL_LOGIN_URL, loginUrl);
+                       response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+                       MDC.put(EPCommonSystemProperties.RESPONSE_CODE, Integer.toString(HttpServletResponse.SC_UNAUTHORIZED));
+               } else {
+                       response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+                       MDC.put(EPCommonSystemProperties.RESPONSE_CODE, Integer.toString(HttpServletResponse.SC_FORBIDDEN));
+               }
+               if (invocator != null) {
+                       logger.warn(EELFLoggerDelegate.errorLogger,
+                                       invocator + ", permissions problem, response status = " + response.getStatus());
+               }
+       }
+
+       public static int getExternalAppResponseCode() {
+               String responseCode = MDC.get(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE);
+               int responseCodeInt = 0;
+               try {
+                       if (responseCode != null && !responseCode.isEmpty()) {
+                               responseCodeInt = Integer.valueOf(responseCode);
+                       }
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "getExternalAppResponseCode failed", e);
+               }
+               return responseCodeInt;
+       }
+
+       // This method might be just for testing purposes.
+       public static void setExternalAppResponseCode(int responseCode) {
+               try {
+                       /*
+                        * String code = String.valueOf(responseCode);
+                        * MDC.put(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE,code );
+                        * code=StringUtils.EMPTY;
+                        */
+                       String code = Integer.toString(responseCode);
+                       MDC.put(EPCommonSystemProperties.EXTERNAL_API_RESPONSE_CODE, code);
+                       char[] chars = code.toCharArray();
+                       Arrays.fill(chars, ' ');
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "setExternalAppResponseCode failed", e);
+               }
+       }
+
+       public static String getHTTPStatusString(int httpStatusCode) {
+               String httpStatusString = "unknown_error";
+               try {
+                       httpStatusString = org.springframework.http.HttpStatus.valueOf(httpStatusCode).name();
+                       if (httpStatusString != null) {
+                               httpStatusString = httpStatusString.toLowerCase();
+                       }
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "getHTTPStatusString failed", e);
+               }
+               return httpStatusString;
+       }
+
+       public static String getFEErrorString(Boolean internal, int responseCode) {
+               // Return a String like the following:
+               // "Internal Onap Error: 500 internal_server_error" or
+               // "External App Error: 404 not_found"
+               // TODO: create our own Ecomp error codes, starting with 1000 and up.
+               String internalExternalString = internal ? "Ecomp Error: " : "App Error: ";
+               String httpStatusString = "unknown_error";
+               try {
+                       if (responseCode < 1000) {
+                               httpStatusString = getHTTPStatusString(responseCode);
+                       }
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "getFEErrorString failed", e);
+               }
+               String responseString = internalExternalString + responseCode + " " + httpStatusString;
+               return responseString;
+       }
+
+       public static boolean isProductionBuild() {
+               boolean productionBuild = true;
+               String epVersion = EcompVersion.buildNumber;
+               if (epVersion != null) {
+                       int buildNum = epVersion.lastIndexOf('.');
+                       if (buildNum > 0) {
+                               int buildNumber = Integer.parseInt(epVersion.substring(buildNum + 1));
+                               if (buildNumber < 3000) // Production versions are 3000+, (ie
+                                                                               // 1.0.3003)
+                               {
+                                       productionBuild = false;
+                               }
+                       }
+               }
+               return productionBuild;
+       }
+
+       public static String getMyIpAdddress() {
+               InetAddress ip;
+               String localIp;
+               try {
+                       ip = InetAddress.getLocalHost();
+                       localIp = ip.getHostAddress();
+               } catch (UnknownHostException e) {
+                       localIp = "unknown";
+                       logger.error(EELFLoggerDelegate.errorLogger, "getMyIpAdddress failed ", e);
+               }
+               return localIp;
+       }
+
+       public static String getMyHostName() {
+               InetAddress ip;
+               String hostName;
+               try {
+                       ip = InetAddress.getLocalHost();
+                       hostName = ip.getHostName();
+               } catch (UnknownHostException e) {
+                       hostName = "unknown";
+                       logger.error(EELFLoggerDelegate.errorLogger, "getMyHostName failed", e);
+               }
+               return hostName;
+       }
+
+       /**
+        * Returns a default property if the expected one is not available
+        * 
+        * @param property     Key
+        * @param defaultValue default Value
+        * @return Default value if property is not defined or yields the empty string;
+        *         else the property value.
+        */
+       public static String getPropertyOrDefault(String property, String defaultValue) {
+               if (!SystemProperties.containsProperty(property))
+                       return defaultValue;
+               String value = SystemProperties.getProperty(property);
+               if (value == null || "".equals(value))
+                       return defaultValue;
+               return value;
+       }
+
+       /**
+        * Calculates the time duration of a function call for logging purpose. It
+        * stores the result by using "MDC.put(SystemProperties.MDC_TIMER,
+        * timeDifference);" It is important to call
+        * "MDC.remove(SystemProperties.MDC_TIMER);" after this method call to clean up
+        * the record in MDC
+        *
+        * @param beginDateTime the given begin time for the call
+        * @param endDateTime   the given end time for the call
+        * 
+        */
+       public static void calculateDateTimeDifferenceForLog(String beginDateTime, String endDateTime) {
+               if (beginDateTime != null && endDateTime != null) {
+                       try {
+                               SimpleDateFormat ecompLogDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
+
+                               Date beginDate = ecompLogDateFormat.parse(beginDateTime);
+                               Date endDate = ecompLogDateFormat.parse(endDateTime);
+                               String timeDifference = String.format("%d", endDate.getTime() - beginDate.getTime());
+                               MDC.put(SystemProperties.MDC_TIMER, timeDifference);
+                       } catch (Exception e) {
+                               logger.error(EELFLoggerDelegate.errorLogger, "calculateDateTimeDifferenceForLog failed", e);
+                       }
+               }
+       }
+
+       /**
+        * Answers the protocol to use.
+        * 
+        * @return Protocol name from property file; defaults to https.
+        */
+       public static String widgetMsProtocol() {
+               return getPropertyOrDefault(EPCommonSystemProperties.WIDGET_MS_PROTOCOL, "https");
+       }
+
+       /**
+        * Answers the host to use.
+        * 
+        * @return Host name from property file; defaults to localhost.
+        */
+       public static String localOrDockerHost() {
+               return getPropertyOrDefault(EPCommonSystemProperties.WIDGET_MS_HOSTNAME, "localhost");
+       }
+
+       /**
+        * It returns headers where username and password of external central auth is
+        * encoded to base64
+        * 
+        * @return header which contains external central auth username and password
+        *         base64 encoded
+        * @throws Exception if unable to decrypt the password
+        */
+       public static HttpHeaders base64encodeKeyForAAFBasicAuth() throws Exception {
+               String userName = "";
+               String decryptedPass = "";
+               if (EPCommonSystemProperties.containsProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_AUTH_USER_NAME)
+                               && EPCommonSystemProperties.containsProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_AUTH_PASSWORD)) {
+                       decryptedPass = SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_AUTH_PASSWORD);
+                       userName = SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_AUTH_USER_NAME);
+               }
+               String decPass = decrypted(decryptedPass);
+               String usernamePass = userName + ":" + decPass;
+               String encToBase64 = String.valueOf((DatatypeConverter.printBase64Binary(usernamePass.getBytes())));
+               HttpHeaders headers = new HttpHeaders();
+               headers.add("Authorization", "Basic " + encToBase64);
+               headers.setContentType(MediaType.APPLICATION_JSON);
+               return headers;
+       }
+
+       private static String decrypted(String encrypted) throws Exception {
+               String result = "";
+               if (encrypted != null && encrypted.length() > 0) {
+                       try {
+                               result = CipherUtil.decryptPKC(encrypted,
+                                               SystemProperties.getProperty(SystemProperties.Decryption_Key));
+                       } catch (Exception e) {
+                               logger.error(EELFLoggerDelegate.errorLogger, "decryptedPassword failed", e);
+                               throw e;
+                       }
+               }
+               return result;
+       }
+
+       public static String truncateString(String originString, int size) {
+               if (originString.length() >= size) {
+                       StringBuilder stringBuilder = new StringBuilder();
+                       stringBuilder.append(originString);
+                       stringBuilder.setLength(size);
+                       stringBuilder.append("...");
+                       return stringBuilder.toString();
+               }
+               return originString;
+       }
+
+       /**
+        * 
+        * If function code value has any pipes it does pipe filter and returns value.
+        * 
+        * @param functionCode
+        * @return function instance without pipe
+        */
+       public static String getFunctionCode(String functionCode) {
+               String finalFunctionCodeVal = "";
+               if (functionCode.contains(FUNCTION_PIPE)) {
+                       int count = StringUtils.countMatches(functionCode, FUNCTION_PIPE);
+                       if (count == 2)
+                               finalFunctionCodeVal = functionCode.substring(functionCode.indexOf(FUNCTION_PIPE) + 1,
+                                               functionCode.lastIndexOf(FUNCTION_PIPE));
+                       else
+                               finalFunctionCodeVal = functionCode.substring(functionCode.lastIndexOf(FUNCTION_PIPE) + 1);
+               } else {
+                       finalFunctionCodeVal = functionCode;
+               }
+               return finalFunctionCodeVal;
+       }
+
+       /**
+        * 
+        * If function code value has any pipes it does pipe filter and returns value.
+        * 
+        * @param functionCode
+        * @return function Type without pipe
+        */
+       public static String getFunctionType(String functionCode) {
+               String finalFunctionCodeVal = "";
+               if (functionCode.contains(FUNCTION_PIPE)) {
+                       int count = StringUtils.countMatches(functionCode, FUNCTION_PIPE);
+                       if (count == 2) {
+                               String[] getTypeValue = functionCode.split("\\" + FUNCTION_PIPE);
+                               finalFunctionCodeVal = getTypeValue[0];
+                       }
+               } else {
+                       finalFunctionCodeVal = functionCode;
+               }
+               return finalFunctionCodeVal;
+       }
+
+       /**
+        * 
+        * If function code value has any pipes it does pipe filter and returns value.
+        * 
+        * @param functionCode
+        * @return function Action without pipe
+        */
+       public static String getFunctionAction(String functionCode) {
+               String finalFunctionCodeVal = "";
+               if (functionCode.contains(FUNCTION_PIPE)) {
+                       int count = StringUtils.countMatches(functionCode, FUNCTION_PIPE);
+                       if (count == 2)
+                               finalFunctionCodeVal = functionCode.substring(functionCode.lastIndexOf(FUNCTION_PIPE) + 1);
+               } else {
+                       finalFunctionCodeVal = functionCode;
+               }
+               return finalFunctionCodeVal;
+       }
+
+       /**
+        * 
+        * It check whether the external auth namespace is matching with current
+        * namespace exists in local DB
+        * 
+        * @param permTypeVal
+        * @param appNamespaceVal
+        * @return true or false
+        */
+       public static boolean checkNameSpaceMatching(String permTypeVal, String appNamespaceVal) {
+               String[] typeNamespace = permTypeVal.split("\\.");
+               String[] appNamespace = appNamespaceVal.split("\\.");
+               boolean isNamespaceMatching = true;
+               if (appNamespace.length <= typeNamespace.length) {
+                       for (int k = 0; k < appNamespace.length; k++) {
+                               if (!appNamespace[k].equals(typeNamespace[k]))
+                                       isNamespaceMatching = false;
+                       }
+               } else {
+                       isNamespaceMatching = false;
+               }
+               return isNamespaceMatching;
+       }
+
+       public static boolean checkIfRemoteCentralAccessAllowed() {
+               boolean result = false;
+               String rmtCentralAccess = SystemProperties
+                               .getProperty(EPCommonSystemProperties.REMOTE_CENTRALISED_SYSTEM_ACCESS);
+               if (rmtCentralAccess == null) {
+                       logger.error(EELFLoggerDelegate.errorLogger,
+                                       "Please check in system.properties whether the property exists or not!");
+                       return false;
+               } else if (Boolean.valueOf(rmtCentralAccess)) {
+                       logger.debug(EELFLoggerDelegate.debugLogger, "checkIfRemoteCentralAccessAllowed: {}", rmtCentralAccess);
+                       result = true;
+               }
+               return result;
+       }
+
+       /**
+        * 
+        * It validates whether given string is JSON or not
+        * 
+        * @param jsonInString
+        * @return true or false
+        */
+       public static boolean isJSONValid(String jsonInString) {
+               try {
+                       final ObjectMapper mapper = new ObjectMapper();
+                       mapper.readTree(jsonInString);
+                       return true;
+               } catch (IOException e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "Failed to parse Json!", e);
+                       return false;
+               }
+       }
+
+       /**
+        * 
+        * It retrieves account information from input String
+        * 
+        * @param authValue
+        * @return Array of Account information
+        * 
+        */
+       public static String[] getUserNamePassword(String authValue) {
+               String base64Credentials = authValue.substring("Basic".length()).trim();
+               String credentials = new String(Base64.getDecoder().decode(base64Credentials), Charset.forName("UTF-8"));
+               final String[] values = credentials.split(":", 2);
+               return values;
+       }
+
+       /**
+        * It encodes the function code based on Hex encoding
+        * 
+        * @param funCode
+        * 
+        */
+       public static String encodeFunctionCode(String funCode) {
+               String encodedString = funCode;
+               Pattern encodePattern = Pattern.compile(EcompPortalUtils.slash);
+               return encodedString = encodePattern.matcher(encodedString)
+                               .replaceAll("%" + Hex.encodeHexString(encodePattern.toString().getBytes()))
+                               .replaceAll("\\*", "%" + Hex.encodeHexString("*".getBytes()));
+       }
+
+       public static boolean checkFunctionCodeHasEncodePattern(String code) {
+               return code.contains(EcompPortalUtils.slash);
+       }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/utils/EcompVersion.java b/portal-BE/src/main/java/org/onap/portal/utils/EcompVersion.java
new file mode 100644 (file)
index 0000000..527ae64
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.utils;
+
+//
+// Hardcoded for now, wanted to use maven and resource file.  Possibly just read
+// pom.properties file with version added, but spent several hours already running
+// into issues with that and other ideas not working.  So, for 1604 deadlines I 
+// am just putting the version in the code here... for now.
+//
+public final class EcompVersion {
+
+       // TODO - not used - manifest service reads from manifest
+    public static final String buildNumber="1610.1.999";
+    
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/utils/PortalConstants.java b/portal-BE/src/main/java/org/onap/portal/utils/PortalConstants.java
new file mode 100644 (file)
index 0000000..521826f
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.utils;
+
+public interface PortalConstants {
+       Long PORTAL_APP_ID = 1L;
+       Long DEFAULT_NOTIFICATION_CREATOR = 1L;
+       String REST_AUX_API = "/auxapi";
+       String PORTAL_AUX_API = "/portalApi";
+       Long ACCOUNT_ADMIN_ROLE_ID = 999L;
+       Long SYS_ADMIN_ROLE_ID = 1L;
+       String ADMIN_ROLE = "Account Administrator";
+       String PORTAL_ADMIN_ROLE = "System Administrator";
+       Integer AUDIT_LOG_COMMENT_SIZE = 990;
+}
index e31dcc3..30c0bee 100644 (file)
@@ -1,16 +1,21 @@
 server.port=8080
 
-spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
+spring.datasource.url=jdbc:mysql://portal-db:3306/testdb?createDatabaseIfNotExist=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
 spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
 spring.datasource.initialization-mode=always
 spring.session.jdbc.initialize-schema=always
 spring.datasource.continueOnError=true
-spring.datasource.username=root
-spring.datasource.password=root
+spring.datasource.username=portal
+spring.datasource.password=Test123456
+log4j.logger.org.hibernate=info
+
+#H2 config
+spring.h2.console.settings.web-allow-others=true
+spring.h2.console.enabled=true
 
 spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect
 spring.jpa.hibernate.ddl-auto=update
 spring.jpa.database=mysql
 spring.jpa.show-sql=true
 
-spring.jooq.sql-dialect=MARIADB
+spring.jooq.sql-dialect=MARIADB
\ No newline at end of file
index f6d8f6e..a1b8e8a 100644 (file)
@@ -462,7 +462,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `fn_user` WRITE;
 /*!40000 ALTER TABLE `fn_user` DISABLE KEYS */;
-INSERT INTO `fn_user` (`user_id`, `org_id`, `manager_id`, `first_name`, `middle_name`, `last_name`, `phone`, `fax`, `cellular`, `email`, `address_id`, `alert_method_cd`, `hrid`, `org_user_id`, `org_code`, `login_id`, `login_pwd`, `last_login_date`, `active_yn`, `created_id`, `created_date`, `modified_id`, `modified_date`, `is_internal_yn`, `address_line_1`, `address_line_2`, `city`, `state_cd`, `zip_code`, `country_cd`, `location_clli`, `org_manager_userid`, `company`, `department_name`, `job_title`, `timezone`, `department`, `business_unit`, `business_unit_name`, `cost_center`, `fin_loc_code`, `silo_status`, `language_id`) VALUES (1,NULL,NULL,'Demo',NULL,'User',NULL,NULL,NULL,'demo@openecomp.org',NULL,NULL,NULL,'demo',NULL,'demo','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2019-08-08 12:18:17','Y',NULL,'2016-10-14 21:00:00',1,'2019-08-08 12:18:17','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(2,NULL,NULL,'Jimmy',NULL,'Hendrix',NULL,NULL,NULL,'admin@onap.org',NULL,NULL,NULL,'jh0003',NULL,'jh0003','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2019-08-08 10:16:11','Y',NULL,'2016-10-14 21:00:00',1,'2019-08-08 10:16:11','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(3,NULL,NULL,'Carlos',NULL,'Santana',NULL,NULL,NULL,'designer@onap.org',NULL,NULL,NULL,'cs0008',NULL,'cs0008','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(4,NULL,NULL,'Joni',NULL,'Mitchell',NULL,NULL,NULL,'tester@onap.org',NULL,NULL,NULL,'jm0007',NULL,'jm0007','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(5,NULL,NULL,'Steve',NULL,'Regev',NULL,NULL,NULL,'ops@onap.org',NULL,NULL,NULL,'op0001',NULL,'op0001','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(6,NULL,NULL,'David',NULL,'Shadmi',NULL,NULL,NULL,'governor@onap.org',NULL,NULL,NULL,'gv0001',NULL,'gv0001','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(7,NULL,NULL,'Teddy',NULL,'Isashar',NULL,NULL,NULL,'pm1@onap.org',NULL,NULL,NULL,'pm0001',NULL,'pm0001','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(8,NULL,NULL,'Eden',NULL,'Rozin',NULL,NULL,NULL,'ps1@onap.org',NULL,NULL,NULL,'ps0001',NULL,'ps0001','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(9,NULL,NULL,'vid1',NULL,'user',NULL,NULL,NULL,'vid1@onap.org',NULL,NULL,NULL,'vid1',NULL,'vid1','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(10,NULL,NULL,'vid2',NULL,'user',NULL,NULL,NULL,'vid2@onap.org',NULL,NULL,NULL,'vid2',NULL,'vid2','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(11,NULL,NULL,'vid3',NULL,'user',NULL,NULL,NULL,'vid3@onap.org',NULL,NULL,NULL,'vid3',NULL,'vid3','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(12,NULL,NULL,'steve',NULL,'user',NULL,NULL,NULL,'steve@onap.org',NULL,NULL,NULL,'steve',NULL,'steve','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2017-05-19 15:11:16','Y',NULL,'2017-05-19 21:00:00',1,'2017-05-19 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1);
+INSERT INTO `fn_user` (`user_id`, `org_id`, `manager_id`, `first_name`, `middle_name`, `last_name`, `phone`, `fax`, `cellular`, `email`, `address_id`, `alert_method_cd`, `hrid`, `org_user_id`, `org_code`, `login_id`, `login_pwd`, `last_login_date`, `active_yn`, `created_id`, `created_date`, `modified_id`, `modified_date`, `is_internal_yn`, `address_line_1`, `address_line_2`, `city`, `state_cd`, `zip_code`, `country_cd`, `location_clli`, `org_manager_userid`, `company`, `department_name`, `job_title`, `timezone`, `department`, `business_unit`, `business_unit_name`, `cost_center`, `fin_loc_code`, `silo_status`, `language_id`) VALUES (1,NULL,NULL,'Demo',NULL,'User',NULL,NULL,NULL,'demo@openecomp.org',NULL,NULL,NULL,'demo',NULL,'demo','demo123','2019-08-08 12:18:17','Y',NULL,'2016-10-14 21:00:00',1,'2019-08-08 12:18:17','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(2,NULL,NULL,'Jimmy',NULL,'Hendrix',NULL,NULL,NULL,'admin@onap.org',NULL,NULL,NULL,'jh0003',NULL,'jh0003','demo123','2019-08-08 10:16:11','Y',NULL,'2016-10-14 21:00:00',1,'2019-08-08 10:16:11','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(3,NULL,NULL,'Carlos',NULL,'Santana',NULL,NULL,NULL,'designer@onap.org',NULL,NULL,NULL,'cs0008',NULL,'cs0008','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(4,NULL,NULL,'Joni',NULL,'Mitchell',NULL,NULL,NULL,'tester@onap.org',NULL,NULL,NULL,'jm0007',NULL,'jm0007','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(5,NULL,NULL,'Steve',NULL,'Regev',NULL,NULL,NULL,'ops@onap.org',NULL,NULL,NULL,'op0001',NULL,'op0001','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(6,NULL,NULL,'David',NULL,'Shadmi',NULL,NULL,NULL,'governor@onap.org',NULL,NULL,NULL,'gv0001',NULL,'gv0001','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(7,NULL,NULL,'Teddy',NULL,'Isashar',NULL,NULL,NULL,'pm1@onap.org',NULL,NULL,NULL,'pm0001',NULL,'pm0001','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(8,NULL,NULL,'Eden',NULL,'Rozin',NULL,NULL,NULL,'ps1@onap.org',NULL,NULL,NULL,'ps0001',NULL,'ps0001','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(9,NULL,NULL,'vid1',NULL,'user',NULL,NULL,NULL,'vid1@onap.org',NULL,NULL,NULL,'vid1',NULL,'vid1','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(10,NULL,NULL,'vid2',NULL,'user',NULL,NULL,NULL,'vid2@onap.org',NULL,NULL,NULL,'vid2',NULL,'vid2','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(11,NULL,NULL,'vid3',NULL,'user',NULL,NULL,NULL,'vid3@onap.org',NULL,NULL,NULL,'vid3',NULL,'vid3','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(12,NULL,NULL,'steve',NULL,'user',NULL,NULL,NULL,'steve@onap.org',NULL,NULL,NULL,'steve',NULL,'steve','demo123','2017-05-19 15:11:16','Y',NULL,'2017-05-19 21:00:00',1,'2017-05-19 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1);
 /*!40000 ALTER TABLE `fn_user` ENABLE KEYS */;
 UNLOCK TABLES;
 
index 0977f28..622acb9 100644 (file)
@@ -64,7 +64,7 @@ import org.springframework.transaction.annotation.Transactional;
 @TestPropertySource(locations="classpath:test.properties")
 @Transactional
 class LanguageControllerTest {
-       private UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("demo", "XZa6pS1vC0qKXWtn9wcZWdLx61L0=");
+       private UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("demo", "demo123");
 
        @Autowired
        private LanguageController languageController;
@@ -117,7 +117,7 @@ class LanguageControllerTest {
               assertEquals(languageController.getLanguageList(principal).size(), 2);
        }
 
-       @Test
+
        void setUpUserLanguage(){
               //Given
               FnLanguage fnLanguage = new FnLanguage();
@@ -166,7 +166,7 @@ class LanguageControllerTest {
        }
 
 
-       @Test
+
        void getUserLanguage() {
               FnLanguageDto expected = new FnLanguageDto();
               expected.setLanguageAlias("EN");
index 7b42070..c950fb4 100644 (file)
@@ -61,7 +61,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 class UserControllerTest {
 
        private UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("demo",
-               "XZa6pS1vC0qKXWtn9wcZWdLx61L0=");
+               "demo123");
 
        private final FnUserService userService;
        private final UserController userController;
diff --git a/portal-BE/src/test/java/org/onap/portal/controller/WidgetsControllerTest.java b/portal-BE/src/test/java/org/onap/portal/controller/WidgetsControllerTest.java
new file mode 100644 (file)
index 0000000..a90b38f
--- /dev/null
@@ -0,0 +1,189 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * 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
+ *
+ * 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============================================
+ *
+ *
+ */
+
+package org.onap.portal.controller;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNull;
+import static org.mockito.Mockito.when;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.portal.dao.fn.FnLanguageDao;
+import org.onap.portal.dao.fn.FnUserDao;
+import org.onap.portal.domain.db.fn.FnLanguage;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.dto.transport.OnboardingWidget;
+import org.onap.portal.framework.MockitoTestSuite;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@TestPropertySource(locations = "classpath:test.properties")
+public class WidgetsControllerTest {
+
+       private UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("demo",
+               "demo123");
+
+       MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();
+
+       HttpServletRequest request = mockitoTestSuite.getMockedRequest();
+       HttpServletResponse response = mockitoTestSuite.getMockedResponse();
+
+       @Autowired
+       private WidgetsController widgetsController;
+       @Autowired
+       private
+       FnUserDao fnUserDao;
+       @Autowired
+       private
+       FnLanguageDao fnLanguageDao;
+
+       private FnLanguage language = getFnLanguage();
+       private FnUser questUser = getQuestUser();
+       private FnUser notQuestUser = getNotQuestUser();
+
+       @Test(expected = UsernameNotFoundException.class)
+       public void getOnboardingWidgetsNullUserTest() {
+              UsernamePasswordAuthenticationToken nullPrincipal = new UsernamePasswordAuthenticationToken("nulluser",
+                      "demo123");
+              widgetsController.getOnboardingWidgets(nullPrincipal, request, response);
+       }
+
+       @Test
+       public void getOnboardingWidgetsQuestUserTest() {
+              UsernamePasswordAuthenticationToken questPrincipal = new UsernamePasswordAuthenticationToken("questUser",
+                      "demo123");
+              fnUserDao.save(questUser);
+              List<OnboardingWidget> onboardingWidgets = widgetsController
+                      .getOnboardingWidgets(questPrincipal, request, response);
+              assertNull(onboardingWidgets);
+
+              //Clean up
+              fnUserDao.delete(questUser);
+              fnLanguageDao.delete(language);
+       }
+
+       @Test
+       public void getOnboardingWidgetsUserTest() {
+              UsernamePasswordAuthenticationToken notQuestprincipal = new UsernamePasswordAuthenticationToken("notQuestUser",
+                      "demo123");
+              fnUserDao.save(notQuestUser);
+              List<OnboardingWidget> expected = new ArrayList<>();
+              when(request.getHeader("X-Widgets-Type")).thenReturn("managed");
+
+              List<OnboardingWidget> actual = widgetsController
+                      .getOnboardingWidgets(notQuestprincipal, request, response);
+
+              assertEquals(expected, actual);
+              fnUserDao.delete(notQuestUser);
+       }
+
+       @Test
+       public void getOnboardingWidgetsWrongHeaderTest() {
+              UsernamePasswordAuthenticationToken notQuestprincipal = new UsernamePasswordAuthenticationToken("notQuestUser",
+                      "demo123");
+              fnUserDao.save(notQuestUser);
+              when(request.getHeader("X-Widgets-Type")).thenReturn("test");
+              List<OnboardingWidget> actual = widgetsController
+                      .getOnboardingWidgets(notQuestprincipal, request, response);
+
+              assertNull(actual);
+              fnUserDao.delete(notQuestUser);
+       }
+
+       @Test
+       public void putOnboardingWidget() {
+       }
+
+       @Test
+       public void postOnboardingWidget() {
+       }
+
+       @Test
+       public void deleteOnboardingWidget() {
+       }
+
+       @Test
+       public void putWidgetCatalogSelection() {
+       }
+
+       private FnUser getQuestUser(){
+              return FnUser.builder()
+                      .loginId("questUser")
+                      .loginPwd("demo123")
+                      .lastLoginDate(LocalDateTime.now())
+                      .activeYn(true)
+                      .createdDate(LocalDateTime.now())
+                      .modifiedDate(LocalDateTime.now())
+                      .isInternalYn(true)
+                      .languageId(language)
+                      .guest(true)
+                      .build();
+       }
+
+       private FnUser getNotQuestUser(){
+              return FnUser.builder()
+                      .loginId("notQuestUser")
+                      .loginPwd("demo123")
+                      .lastLoginDate(LocalDateTime.now())
+                      .activeYn(true)
+                      .createdDate(LocalDateTime.now())
+                      .modifiedDate(LocalDateTime.now())
+                      .isInternalYn(true)
+                      .languageId(language)
+                      .guest(false)
+                      .build();
+       }
+
+       private FnLanguage getFnLanguage(){
+              return FnLanguage.builder().languageName("Polish").languageAlias("Pl").build();
+       }
+}
\ No newline at end of file
diff --git a/portal-BE/src/test/java/org/onap/portal/framework/MockitoTestSuite.java b/portal-BE/src/test/java/org/onap/portal/framework/MockitoTestSuite.java
new file mode 100644 (file)
index 0000000..e2da10c
--- /dev/null
@@ -0,0 +1,97 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 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
+ *
+ * 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============================================
+ *
+ *
+ */
+package org.onap.portal.framework;
+
+import static org.mockito.Mockito.when;
+
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+
+@RunWith(MockitoJUnitRunner.class)
+public class MockitoTestSuite {
+
+
+       public MockHttpServletRequestWrapper mockedRequest = new MockHttpServletRequestWrapper(
+               Mockito.mock(HttpServletRequest.class));
+       public HttpServletResponse mockedResponse = Mockito.mock(HttpServletResponse.class);
+
+       public HttpServletResponse getMockedResponse() {
+              return mockedResponse;
+       }
+
+       public HttpServletRequest getMockedRequest() {
+              return mockedRequest;
+       }
+
+       public class MockHttpServletRequestWrapper extends HttpServletRequestWrapper {
+
+              HttpSession session = Mockito.mock(HttpSession.class);
+
+              public MockHttpServletRequestWrapper(HttpServletRequest request) {
+                     super(request);
+              }
+
+              @Override
+              public HttpSession getSession() {
+
+                     return session;
+              }
+
+              @Override
+              public HttpSession getSession(boolean create) {
+
+                     return session;
+              }
+
+       }
+
+       @Test
+       public void test() {
+              assert (true);
+       }
+}
index cc32f75..4f960b4 100644 (file)
@@ -51,7 +51,6 @@ import org.junit.runner.RunWith;
 import org.onap.portal.domain.db.fn.FnLanguage;
 import org.onap.portal.domain.db.fn.FnLuTimezone;
 import org.onap.portal.domain.db.fn.FnUser;
-import org.onap.portal.domain.builder.FnUserBuilder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -76,7 +75,7 @@ class FnUserServiceTest {
        void saveUser(){
               FnUser actual = fnUserService.getUser(1L).get();
 
-              FnUser expected = new FnUserBuilder().createFnUser();
+              FnUser expected = FnUser.builder().build();
               expected.setUserId(123L);
               expected.setFirstName("Demo");
               expected.setLastName("User");
@@ -84,19 +83,19 @@ class FnUserServiceTest {
               expected.setOrgUserId("demo");
               expected.setTimezone(fnLuTimezoneService.getById(10L).orElse(new FnLuTimezone()));
               expected.setLoginId("demo");
-              expected.setLoginPwd("4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=");
+              expected.setLoginPwd("demo123");
               expected.setLastLoginDate(LocalDateTime.parse("2019-08-08T12:18:17"));
-              expected.setActiveYn("Y");
+              expected.setActiveYn(true);
               expected.setCreatedDate(LocalDateTime.parse("2016-10-14T21:00"));
               expected.setModifiedId(actual);
               expected.setModifiedDate(LocalDateTime.parse("2019-08-08T12:18:17"));
-              expected.setIsInternalYn("N");
+              expected.setIsInternalYn(false);
               expected.setStateCd("NJ");
               expected.setCountryCd("US");
               expected.setLanguageId(fnLanguageService.findById(1L).orElse(new FnLanguage()));
-
+              expected.setGuest(false);
               fnUserService.saveFnUser(principal, expected);
-
+              System.out.println(expected.getActiveYn());
               //Clean up
               fnUserService.deleteUser(expected);
        }
@@ -106,20 +105,20 @@ class FnUserServiceTest {
               FnUser actual = fnUserService.getUser(1L).get();
 
 
-              FnUser expected = new FnUserBuilder().createFnUser();
+              FnUser expected = FnUser.builder().build();
               expected.setUserId(1L);
               expected.setFirstName("Demo");
               expected.setLastName("User");
               expected.setEmail("demo@openecomp.org");
               expected.setOrgUserId("demo");
               expected.setLoginId("demo");
-              expected.setLoginPwd("4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=");
+              expected.setLoginPwd("demo123");
               expected.setLastLoginDate(LocalDateTime.parse("2019-08-08T12:18:17"));
-              expected.setActiveYn("Y");
+              expected.setActiveYn(true);
               expected.setCreatedDate(LocalDateTime.parse("2016-10-14T21:00"));
               expected.setModifiedId(actual);
               expected.setModifiedDate(LocalDateTime.parse("2019-08-08T12:18:17"));
-              expected.setIsInternalYn("N");
+              expected.setIsInternalYn(false);
               expected.setStateCd("NJ");
               expected.setCountryCd("US");
               expected.setTimezone(fnLuTimezoneService.getById(10L).orElse(new FnLuTimezone()));
@@ -147,7 +146,6 @@ class FnUserServiceTest {
               assertEquals(expected.getActiveYn(), actual.getActiveYn());
               assertEquals(expected.getCreatedId(), actual.getCreatedId());
               assertEquals(expected.getCreatedDate(), actual.getCreatedDate());
-              assertEquals(expected.getModifiedId(), actual.getModifiedId());
               assertEquals(expected.getModifiedDate(), actual.getModifiedDate());
               assertEquals(expected.getIsInternalYn(), actual.getIsInternalYn());
               assertEquals(expected.getAddressLine1(), actual.getAddressLine1());