Merge "Portal Spring Boot Development"
authorManoop Talasila <talasila@research.att.com>
Wed, 28 Aug 2019 18:51:51 +0000 (18:51 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 28 Aug 2019 18:51:51 +0000 (18:51 +0000)
63 files changed:
deliveries/Dockerfile.be [new file with mode: 0644]
deliveries/Dockerfile.fe [new file with mode: 0644]
ecomp-portal-BE-common/.gitignore
ecomp-portal-BE-common/pom.xml
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/ExternalAccessRolesController.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/MicroserviceController.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/RoleManageController.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WebAnalyticsExtAppController.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetMSController.java [moved from ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/ConsulClientController.java with 57% similarity]
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogController.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogMarkupController.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/AppsCacheService.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/AppsCacheServiceImple.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthServiceImpl.java [deleted file]
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPAppCommonServiceImpl.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPRoleServiceImpl.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ExternalAccessRolesService.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ExternalAccessRolesServiceImpl.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/MicroserviceProxyServiceImpl.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/PortalAdminServiceImpl.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImpl.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/WidgetMService.java [moved from ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthService.java with 91% similarity]
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/WidgetMServiceImpl.java [new file with mode: 0644]
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/transport/CentralV2User.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/service/sessionmgt/SessionCommunication.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/service/sessionmgt/TimeoutHandler.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/MicroserviceControllerTest.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetMSControllerTest.java [moved from ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/ConsulClientControllerTest.java with 63% similarity]
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetsCatalogControllerTest.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetsCatalogMarkupControllerTest.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/EPRoleServiceImplTest.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/PortalAdminServiceImplTest.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImplTest.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/WidgetMServiceImplTest.java [moved from ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/ConsulHealthServiceImplTest.java with 52% similarity]
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/transport/CentralUserTest.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/transport/CentralV2UserTest.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/service/sessionmgt/SessionCommunicationTest.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/util/EPUserUtilsTest.java
ecomp-portal-BE-common/src/test/java/org/onap/portalapp/validation/DataValidatorTest.java
ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java [new file with mode: 0644]
ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssValidator.java [new file with mode: 0644]
ecomp-portal-DB-common/PortalDDLMySql_2_1_Common.sql
ecomp-portal-DB-common/PortalDDLMySql_2_5_Common.sql [new file with mode: 0644]
ecomp-portal-DB-common/PortalDDLMySql_2_6_Common.sql [new file with mode: 0644]
ecomp-portal-DB-common/PortalDMLMySql_2_5_Common.sql [new file with mode: 0644]
ecomp-portal-DB-common/PortalDMLMySql_2_6_Common.sql [new file with mode: 0644]
ecomp-portal-DB-os/PortalDDLMySql_2_5_OS.sql [new file with mode: 0644]
ecomp-portal-DB-os/PortalDDLMySql_2_6_OS.sql [new file with mode: 0644]
ecomp-portal-DB-os/PortalDMLMySql_2_5_OS.sql [new file with mode: 0644]
ecomp-portal-DB-os/PortalDMLMySql_2_6_OS.sql [new file with mode: 0644]
ecomp-portal-FE-common/client/app/services/users/users.service.js
ecomp-portal-FE-common/client/app/views/header/header.less
ecomp-portal-FE-common/client/app/views/header/header.tpl.html
ecomp-portal-FE-common/client/app/views/role/popup_createedit_role.html
ecomp-portal-FE-common/client/app/views/role/role-list-controller.js
ecomp-portal-FE-common/client/app/views/users/new-user-dialogs/new-user.controller.js
ecomp-portal-FE-common/client/app/views/users/new-user-dialogs/new-user.modal.html
ecomp-portal-FE-common/client/app/views/users/users.tpl.html
ecomp-portal-FE-os/client/configurations/dev.json
ecomp-portal-FE-os/pom.xml
ecomp-portal-widget-ms/widget-ms/pom.xml
ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/StorageServiceImpl.java
pom.xml

diff --git a/deliveries/Dockerfile.be b/deliveries/Dockerfile.be
new file mode 100644 (file)
index 0000000..afc3981
--- /dev/null
@@ -0,0 +1,54 @@
+# Dockerfile for image with ONAP Portal
+ARG BE_BASE_IMAGE=tomcat:8.5.35-jre8-alpine
+FROM ${BE_BASE_IMAGE}
+
+RUN apk add sudo && echo "portal ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
+# Arguments are supplied by build.sh script
+# the defaults below only support testing
+ARG PORTAL_WAR=build/ecompportal-be-os.war
+ARG HTTP_PROXY
+ARG HTTPS_PROXY
+# ARG PORTAL_CERT=truststoreONAPall.jks
+
+# Just variables, never passed in
+ARG PORTALCONTEXT=ONAPPORTAL
+
+ARG TOMCAT=/usr/local/tomcat
+ARG TOMCATHOME=${TOMCAT}
+ARG SERVERXML=${SERVERXML}
+
+ENV http_proxy $HTTP_PROXY
+ENV https_proxy $HTTPS_PROXY
+
+RUN if [ -d /etc/apt ] && [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
+    if [ -d /etc/apt ] && [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi
+
+# Remove manager and sample apps
+RUN rm -rf ${TOMCAT}/webapps/[a-z]*
+RUN mkdir -p /opt
+COPY ${SERVERXML} ${TOMCAT}/conf
+# TODO: ????
+#RUN mv ${TOMCAT} /opt
+
+WORKDIR ${TOMCATHOME}/webapps
+RUN mkdir ${PORTALCONTEXT}
+
+# Portal has many parts
+COPY $PORTAL_WAR ${PORTALCONTEXT}
+RUN cd ${PORTALCONTEXT} && unzip -q *.war && rm *.war
+
+VOLUME ${TOMCATHOME}/logs
+
+RUN addgroup -g 1000 -S portal && adduser -u 1000 -S portal -G portal && chown -R portal:portal . && chmod -R 777 /etc/ssl/certs/java /var/
+
+# Switch back to root
+WORKDIR /
+
+# Define commonly used ENV variables
+ENV PATH $PATH:$JAVA_HOME/bin:${TOMCATHOME}/bin
+# Install the launch script
+COPY start-apache-tomcat.sh /
+
+# Define default command
+ENV TOMCATHOME=$TOMCATHOME
+CMD /start-apache-tomcat.sh -b $TOMCATHOME
diff --git a/deliveries/Dockerfile.fe b/deliveries/Dockerfile.fe
new file mode 100644 (file)
index 0000000..9af10cc
--- /dev/null
@@ -0,0 +1,20 @@
+ARG FE_BASE_IMAGE=httpd:2.4.34-alpine
+FROM ${FE_BASE_IMAGE}
+
+ARG FE_DIR=build/public
+ARG HTTP_PROXY
+ARG HTTPS_PROXY
+# ARG PORTAL_CERT=truststoreONAPall.jks
+
+ARG FECONTEXT=ONAPPORTAL
+
+ENV http_proxy $HTTP_PROXY
+ENV https_proxy $HTTPS_PROXY
+RUN if [ -d /etc/apt ] && [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
+    if [ -d /etc/apt ] && [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi
+
+RUN addgroup -g 1000 -S portal && adduser -u 1000 -S portal -G portal && chown -R portal:portal . && rm /usr/local/apache2/htdocs/index.html
+
+USER portal:portal
+
+COPY ${FE_DIR} /usr/local/apache2/htdocs/${FECONTEXT}
index e92d1a0..297f310 100644 (file)
@@ -6,3 +6,5 @@
 /debug-logs/
 /logs/
 /bin/
+/.apt_generated/
+/.apt_generated_tests/
index 58ae584..66adc61 100644 (file)
         <dependency>
                    <groupId>org.springframework.security</groupId>
                    <artifactId>spring-security-core</artifactId>
-                   <version>${springframework.version}</version>
+                   <version>${springframework.security.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-web</artifactId>
-               <version>${springframework.version}</version>
+               <version>${springframework.security.version}</version>
         </dependency>
            <dependency>
                    <groupId>org.springframework.security</groupId>
                    <artifactId>spring-security-config</artifactId>
-                   <version>${springframework.version}</version>
+                   <version>${springframework.security.version}</version>
            </dependency>
                <dependency>
                <groupId>com.thoughtworks.xstream</groupId>
            <dependency>
                    <groupId>org.onap.music</groupId>
                    <artifactId>MUSIC</artifactId>
-                   <version>2.5.8</version>
+                   <version>2.5.10-SNAPSHOT</version>
                    <exclusions> 
                                <exclusion> 
                                          <groupId>com.sun.jersey</groupId> 
index 46493d8..7d9f297 100644 (file)
@@ -61,6 +61,7 @@ import org.onap.portalapp.portal.logging.aop.EPAuditLog;
 import org.onap.portalapp.portal.logging.aop.EPEELFLoggerAdvice;
 import org.onap.portalapp.portal.logging.logic.EPLogUtil;
 import org.onap.portalapp.portal.service.ExternalAccessRolesService;
+import org.onap.portalsdk.core.service.UserService;
 import org.onap.portalapp.portal.transport.CentralRole;
 import org.onap.portalapp.portal.transport.CentralRoleFunction;
 import org.onap.portalapp.portal.transport.CentralUser;
@@ -113,19 +114,14 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
        private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ExternalAccessRolesController.class);
        private static final DataValidator DATA_VALIDATOR = new DataValidator();
 
+       @Autowired
        private AuditService auditService;
-       private ExternalAccessRolesService externalAccessRolesService;
-       private UserServiceCentalizedImpl userservice;
 
        @Autowired
-       public ExternalAccessRolesController(AuditService auditService,
-               ExternalAccessRolesService externalAccessRolesService,
-               UserServiceCentalizedImpl userservice) {
-               this.auditService = auditService;
-               this.externalAccessRolesService = externalAccessRolesService;
-               this.userservice = userservice;
-       }
+       private ExternalAccessRolesService externalAccessRolesService;
 
+       @Autowired
+       private UserService userservice =  new UserServiceCentalizedImpl();
 
        @ApiOperation(value = "Gets user role for an application.", response = CentralUser.class, responseContainer="List")
        @RequestMapping(value = {
index 2f956cc..3f50772 100644 (file)
@@ -55,7 +55,7 @@ import org.onap.portalapp.portal.domain.WidgetServiceHeaders;
 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.ConsulHealthService;
+import org.onap.portalapp.portal.service.WidgetMService;
 import org.onap.portalapp.portal.service.MicroserviceService;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
 import org.onap.portalsdk.core.util.SystemProperties;
@@ -84,7 +84,7 @@ public class MicroserviceController extends EPRestrictedBaseController {
        RestTemplate template = new RestTemplate();
 
        @Autowired
-       private ConsulHealthService consulHealthService;
+       private WidgetMService widgetMService;
 
        @Autowired
        private MicroserviceService microserviceService;
@@ -153,7 +153,7 @@ public class MicroserviceController extends EPRestrictedBaseController {
                        };
                        // If this service is assoicated with widgets, cannnot be deleted
                        ResponseEntity<List<WidgetCatalog>> ans = template.exchange(
-                                       EcompPortalUtils.widgetMsProtocol() + "://" + consulHealthService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
+                                       EcompPortalUtils.widgetMsProtocol() + "://" + widgetMService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
                                                        + "/widget/microservices/widgetCatalog/service/" + serviceId,
                                        HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), typeRef);
                        List<WidgetCatalog> widgets = ans.getBody();
index 9a525b5..ad16472 100644 (file)
@@ -517,6 +517,7 @@ public class RoleManageController extends EPRestrictedBaseController {
                                return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "Data is not valid", "ERROR");
                        }
                }
+
                EPUser user = EPUserUtils.getUserSession(request);
                boolean saveOrUpdateResponse = false;
                try {
@@ -691,6 +692,7 @@ public class RoleManageController extends EPRestrictedBaseController {
                                return null;
                        }
                }
+
                EPUser user = EPUserUtils.getUserSession(request);
                List<CentralizedApp> applicationsList = null;
                if (adminRolesService.isAccountAdmin(user) || adminRolesService.isSuperAdmin(user)
index f1192f9..a3f4d30 100644 (file)
@@ -55,7 +55,7 @@ import org.onap.portalapp.portal.logging.aop.EPAuditLog;
 import org.onap.portalapp.portal.logging.aop.EPEELFLoggerAdvice;
 import org.onap.portalapp.portal.logging.logic.EPLogUtil;
 import org.onap.portalapp.portal.service.AppsCacheService;
-import org.onap.portalapp.portal.service.ConsulHealthService;
+import org.onap.portalapp.portal.service.WidgetMService;
 import org.onap.portalapp.portal.transport.Analytics;
 import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
@@ -89,7 +89,7 @@ import org.springframework.web.client.AsyncRestTemplate;
 @EPAuditLog
 @NoArgsConstructor
 public class WebAnalyticsExtAppController extends EPRestrictedRESTfulBaseController {
-       private ConsulHealthService consulHealthService;
+       private WidgetMService widgetMService;
        private AppsCacheService appCacheService;
 
        private static final String MACHINE_LEARNING_SERVICE_CTX = "/ml_api";
@@ -102,9 +102,9 @@ public class WebAnalyticsExtAppController extends EPRestrictedRESTfulBaseControl
        private final FailureCallback failureCallback = arg -> logger.error(EELFLoggerDelegate.errorLogger, "storeAuxAnalytics failed", arg);
 
        @Autowired
-       public WebAnalyticsExtAppController(AppsCacheService appCacheService, ConsulHealthService consulHealthService) {
+       public WebAnalyticsExtAppController(AppsCacheService appCacheService, WidgetMService consulHealthService) {
                this.appCacheService = appCacheService;
-               this.consulHealthService = consulHealthService;
+               this.widgetMService = consulHealthService;
        }
 
        /**
@@ -129,8 +129,8 @@ public class WebAnalyticsExtAppController extends EPRestrictedRESTfulBaseControl
                }
                if (app != null) {
                        String restEndPoint = app.getAppRestEndpoint();
-                       if(restEndPoint.contains("/api")) {
-                               version = restEndPoint.substring(restEndPoint.indexOf("/api")+4);
+                       if(restEndPoint.indexOf("/api")!=-1) {
+                               version = restEndPoint.substring(restEndPoint.indexOf("api"));
                        }
                }
                String endPoint = "/storeAnalytics";
@@ -242,7 +242,7 @@ public class WebAnalyticsExtAppController extends EPRestrictedRESTfulBaseControl
                // send it!
                ListenableFuture<ResponseEntity<String>> out = restTemplate.exchange(
                                EcompPortalUtils.widgetMsProtocol() + "://"
-                                               + consulHealthService.getServiceLocation(CONSUL_ML_SERVICE_ID,
+                                               + widgetMService.getServiceLocation(CONSUL_ML_SERVICE_ID,
                                                                SystemProperties.getProperty("microservices.m-learn.local.port"))
                                                + REGISTER_ACTION,
                                HttpMethod.POST, entity, String.class);
  */
 package org.onap.portalapp.portal.controller;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.onap.portalapp.controller.EPRestrictedBaseController;
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
-import org.onap.portalapp.portal.service.ConsulHealthService;
+import org.onap.portalapp.portal.service.WidgetMService;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -54,18 +51,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.orbitz.consul.ConsulException;
-import com.orbitz.consul.model.health.ServiceHealth;
-
-import io.searchbox.client.config.exception.NoServerConfiguredException;
-
 @RestController
 @RequestMapping("/portalApi/consul")
-public class ConsulClientController extends EPRestrictedBaseController {
-       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ConsulClientController.class);
+public class WidgetMSController extends EPRestrictedBaseController {
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetMSController.class);
 
        @Autowired
-       private ConsulHealthService consulHealthService;
+       private WidgetMService widgetMService;
 
        // Get location of a healthy node running our service
        @RequestMapping(value = { "/service/{service}" }, method = RequestMethod.GET, produces = "application/json")
@@ -74,40 +66,14 @@ public class ConsulClientController extends EPRestrictedBaseController {
 
                try {
                        return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Success!",
-                                       consulHealthService.getServiceLocation(service, null));
-               } catch (NoServerConfiguredException e) {
-                       logger.error(logger.errorLogger, "No healthy service exception!");
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.WARN, "Warning!",
-                                       "No healthy service exception!");
-               } catch (ConsulException e) {
-                       logger.error(logger.errorLogger, "Couldn't connect ot consul - Is consul running?");
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Error!",
-                                       "Couldn't connect ot consul - Is consul running?");
-               }
-       }
-
-       @RequestMapping(value = { "/service/healthy/{service}" }, method = RequestMethod.GET, produces = "application/json")
-       public PortalRestResponse<List<ServiceHealth>> getAllHealthyNodes(HttpServletRequest request,
-                       HttpServletResponse response, @PathVariable("service") String service) {
-               try {
-                       return new PortalRestResponse<List<ServiceHealth>>(PortalRestStatusEnum.OK, "Success!",
-                                       consulHealthService.getAllHealthyNodes(service));
-               } catch (ConsulException e) {
-                       logger.error(logger.errorLogger, "Couldn't connect to consul - shouldn't break anything.");
-                       return new PortalRestResponse<List<ServiceHealth>>(PortalRestStatusEnum.ERROR, "Error!", new ArrayList<>());
-               }
-       }
-
-       @RequestMapping(value = { "/service/all/{service}" }, method = RequestMethod.GET, produces = "application/json")
-       public PortalRestResponse<List<ServiceHealth>> getAllNodes(HttpServletRequest request, HttpServletResponse response,
-                       @PathVariable("service") String service) {
-               try {
-                       return new PortalRestResponse<List<ServiceHealth>>(PortalRestStatusEnum.OK, "Success!",
-                                       consulHealthService.getAllNodes(service));
-               } catch (ConsulException e) {
-                       logger.error(logger.errorLogger, "Couldn't connect to consul - shouldn't break anything.");
-                       return new PortalRestResponse<List<ServiceHealth>>(PortalRestStatusEnum.ERROR, "Error!", new ArrayList<>());
+                                       widgetMService.getServiceLocation(service, null));
                }
+                catch (Exception e) {
+                       logger.error(logger.errorLogger, "Couldn't get the service location");
+                       return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Error!",
+                                       "Couldn't get the service location");
+               
+           }
        }
 
 }
index a7ce355..57c73a8 100644 (file)
@@ -60,7 +60,7 @@ import org.onap.portalapp.portal.domain.WidgetServiceHeaders;
 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.ConsulHealthService;
+import org.onap.portalapp.portal.service.WidgetMService;
 import org.onap.portalapp.portal.service.MicroserviceService;
 import org.onap.portalapp.portal.service.WidgetParameterService;
 import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
@@ -108,7 +108,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
        private String whatService = "widgets-service";
 
        @Autowired
-       private ConsulHealthService consulHealthService;
+       private WidgetMService widgetMService;
 
        @Autowired
        private MicroserviceService microserviceService;
@@ -138,7 +138,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
                try {
                        ResponseEntity<List> ans = template.exchange(
                                        EcompPortalUtils.widgetMsProtocol() + "://"
-                                                       + consulHealthService.getServiceLocation(whatService,
+                                                       + widgetMService.getServiceLocation(whatService,
                                                                        SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
                                                        + "/widget/microservices/widgetCatalog/" + loginName,
                                        HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), List.class);
@@ -158,7 +158,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
                try {
                        ResponseEntity<List> ans = template.exchange(
                                        EcompPortalUtils.widgetMsProtocol() + "://"
-                                                       + consulHealthService.getServiceLocation(whatService,
+                                                       + widgetMService.getServiceLocation(whatService,
                                                                        SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
                                                        + "/widget/microservices/widgetCatalog",
                                        HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), List.class);
@@ -177,7 +177,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
        public void updateWidgetCatalog(@RequestBody WidgetCatalog newWidgetCatalog, @PathVariable("widgetId") long widgetId) throws Exception {
                template.exchange(
                                EcompPortalUtils.widgetMsProtocol() + "://"
-                                               + consulHealthService.getServiceLocation(whatService,
+                                               + widgetMService.getServiceLocation(whatService,
                                                                SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
                                                + "/widget/microservices/widgetCatalog/" + widgetId,
                                HttpMethod.PUT, new HttpEntity<>(newWidgetCatalog, WidgetServiceHeaders.getInstance()), String.class);
@@ -187,7 +187,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
        public void deleteOnboardingWidget(@PathVariable("widgetId") long widgetId) throws Exception {
                template.exchange(
                                EcompPortalUtils.widgetMsProtocol() + "://"
-                                               + consulHealthService.getServiceLocation(whatService,
+                                               + widgetMService.getServiceLocation(whatService,
                                                                SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
                                                + "/widget/microservices/widgetCatalog/" + widgetId,
                                HttpMethod.DELETE, new HttpEntity<>(WidgetServiceHeaders.getInstance()), String.class);
@@ -218,7 +218,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
                        multipartRequest.add("widget", request.getParameter("newWidget"));
                        respond = template.postForObject(
                                        EcompPortalUtils.widgetMsProtocol() + "://"
-                                                       + consulHealthService.getServiceLocation(whatService,
+                                                       + widgetMService.getServiceLocation(whatService,
                                                                        SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
                                                        + "/widget/microservices/widgetCatalog/" + widgetId,
                                        new HttpEntity<>(multipartRequest, WidgetServiceHeaders.getInstance()), String.class);
@@ -269,7 +269,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
 
                        respond = template.postForObject(
                                        EcompPortalUtils.widgetMsProtocol() + "://"
-                                                       + consulHealthService.getServiceLocation(whatService,
+                                                       + widgetMService.getServiceLocation(whatService,
                                                                        SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
                                                        + "/widget/microservices/widgetCatalog",
                                        new HttpEntity<>(multipartRequest, WidgetServiceHeaders.getInstance()), String.class);
@@ -291,7 +291,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
        @RequestMapping(value = "/portalApi/microservices/{widgetId}/framework.js", method = RequestMethod.GET)
        public String getWidgetFramework(@PathVariable("widgetId") long widgetId) throws Exception {
                return template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://"
-                               + consulHealthService.getServiceLocation(whatService,
+                               + widgetMService.getServiceLocation(whatService,
                                                SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
                                + "/widget/microservices/" + widgetId + "/framework.js", String.class,
                                WidgetServiceHeaders.getInstance());
@@ -300,7 +300,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
        @RequestMapping(value = "/portalApi/microservices/{widgetId}/controller.js", method = RequestMethod.GET)
        public String getWidgetController(@PathVariable("widgetId") long widgetId) throws Exception {
                return template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://"
-                               + consulHealthService.getServiceLocation(whatService,
+                               + widgetMService.getServiceLocation(whatService,
                                                SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
                                + "/widget/microservices/" + widgetId + "/controller.js", String.class,
                                WidgetServiceHeaders.getInstance());
@@ -309,7 +309,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
        @RequestMapping(value = "/portalApi/microservices/{widgetId}/style.css", method = RequestMethod.GET)
        public String getWidgetCSS(@PathVariable("widgetId") long widgetId) throws Exception {
                return template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://"
-                               + consulHealthService.getServiceLocation(whatService,
+                               + widgetMService.getServiceLocation(whatService,
                                                SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
                                + "/widget/microservices/" + widgetId + "/styles.css", String.class,
                                WidgetServiceHeaders.getInstance());
@@ -323,7 +323,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
                List<WidgetParameterResult> list = new ArrayList<>();
                Long serviceId = template.exchange(
                                EcompPortalUtils.widgetMsProtocol() + "://"
-                                               + consulHealthService.getServiceLocation(whatService,
+                                               + widgetMService.getServiceLocation(whatService,
                                                                SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
                                                + "/widget/microservices/widgetCatalog/parameters/" + widgetId,
                                HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), Long.class).getBody();
@@ -370,7 +370,7 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
                byte[] byteFile = template
                                .exchange(
                                                EcompPortalUtils.widgetMsProtocol() + "://"
-                                                               + consulHealthService.getServiceLocation(whatService,
+                                                               + widgetMService.getServiceLocation(whatService,
                                                                                SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
                                                                + "/widget/microservices/download/" + widgetId,
                                                HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), byte[].class)
index e01c8ee..0c464fb 100644 (file)
@@ -43,7 +43,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.onap.portalapp.controller.EPUnRestrictedBaseController;
 import org.onap.portalapp.portal.domain.WidgetServiceHeaders;
 import org.onap.portalapp.portal.logging.aop.EPAuditLog;
-import org.onap.portalapp.portal.service.ConsulHealthService;
+import org.onap.portalapp.portal.service.WidgetMService;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalsdk.core.util.SystemProperties;
@@ -69,7 +69,7 @@ public class WidgetsCatalogMarkupController extends EPUnRestrictedBaseController
        private final String whatService = "widgets-service";
 
        @Autowired
-       private ConsulHealthService consulHealthService;
+       private WidgetMService widgetMService;
 
        @Bean
        public CommonsMultipartResolver multipartResolver() {
@@ -95,7 +95,7 @@ public class WidgetsCatalogMarkupController extends EPUnRestrictedBaseController
                return template
                                .getForObject(
                                                EcompPortalUtils.widgetMsProtocol() + "://"
-                                                               + consulHealthService.getServiceLocation(whatService,
+                                                               + widgetMService.getServiceLocation(whatService,
                                                                                SystemProperties.getProperty("microservices.widget.local.port"))
                                                                + "/widget/microservices/markup/" + widgetId,
                                                String.class, WidgetServiceHeaders.getInstance());
index b684d3f..2a93556 100644 (file)
 
 package org.onap.portalapp.portal.service;
 
+import java.util.List;
+
 import org.onap.portalapp.portal.domain.EPApp;
+import org.onap.portalapp.portal.transport.OnboardingApp;
 
 public interface AppsCacheService {
        
@@ -59,4 +62,6 @@ public interface AppsCacheService {
        EPApp getAppFromUeb(String appKey);
 
        EPApp getAppFromUeb(String appKey, Integer quickCacheRefresh);
+
+       List<OnboardingApp> getAppsFullList();
 }
index 0fb9290..3a70da8 100644 (file)
  */
 package org.onap.portalapp.portal.service;
 
+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;
 
@@ -51,6 +53,8 @@ import org.onap.portalapp.portal.logging.aop.EPMetricsLog;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalapp.portal.service.AppsCacheService;
 import org.onap.portalapp.portal.service.AppsCacheServiceImple;
+import org.onap.portalapp.portal.transport.OnboardingApp;
+import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
 
 @Service("appsCacheService")
 @org.springframework.context.annotation.Configuration
@@ -133,6 +137,24 @@ public class AppsCacheServiceImple implements AppsCacheService {
                return null;
        }
        
+       @SuppressWarnings("unchecked")
+       @Override
+       public List<OnboardingApp> getAppsFullList() {
+               refreshAppsMap(quickRefreshCacheConf);
+               List<EPApp> appList = new ArrayList<EPApp> (appsMap.values());
+               appList.removeIf(app -> app.getId() == 1);
+               List<EPApp> appsFinalList = appList.stream()
+               .filter(app -> app.getEnabled() == true && app.getOpen() == false).collect(Collectors.toList());
+               
+               List<OnboardingApp> onboardingAppsList = new ArrayList<OnboardingApp>();
+               for (EPApp app : appsFinalList) {
+                       OnboardingApp onboardingApp = new OnboardingApp();
+                       appsService.createOnboardingFromApp(app, onboardingApp);
+                       onboardingAppsList.add(onboardingApp);
+               }
+               return onboardingAppsList;      
+       }
+       
        @Override
        public EPApp getApp(Long appId) {
                refreshAppsMap(quickRefreshCacheConf);
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthServiceImpl.java
deleted file mode 100644 (file)
index a0f0841..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/*-
- * ============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.portalapp.portal.service;
-
-import java.util.List;
-
-import org.onap.portalapp.portal.utils.EcompPortalUtils;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.springframework.stereotype.Component;
-
-import com.ecwid.consul.ConsulException;
-import com.orbitz.consul.Consul;
-import com.orbitz.consul.HealthClient;
-import com.orbitz.consul.model.health.ServiceHealth;
-
-@Component
-public class ConsulHealthServiceImpl implements ConsulHealthService {
-
-       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ConsulHealthServiceImpl.class);
-
-       @Override
-       public String getServiceLocation(String service, String fallbackPortOnLocalHost) {
-
-               List<ServiceHealth> nodes = null;
-
-               try {
-                       Consul consul = Consul.builder().build();
-                       HealthClient healthClient = consul.healthClient();
-                       nodes = healthClient.getHealthyServiceInstances(service).getResponse();
-               } catch (Exception e) {
-                       String localFallbackServiceLocation = EcompPortalUtils.localOrDockerHost() + ":" + fallbackPortOnLocalHost;
-                       logger.debug(EELFLoggerDelegate.debugLogger,
-                                       " problem getting nodes for service {1}. Defaulting to {2}. Exception: {3}", service,
-                                       localFallbackServiceLocation, e.getMessage());
-                       logger.error(EELFLoggerDelegate.errorLogger,
-                                       " problem getting nodes for service {1}. Defaulting to {2}. Exception: {3}", service,
-                                       localFallbackServiceLocation, e);
-                       return localFallbackServiceLocation;
-               }
-
-               if (nodes == null || nodes.size() == 0) {
-                       logger.debug(EELFLoggerDelegate.debugLogger, "No healthy node found in the consul cluster running service " + service
-                                       + ". Defaulting to localhost");
-                       return EcompPortalUtils.localOrDockerHost() + ":" + fallbackPortOnLocalHost;
-               } else {
-                       String locationFromConsul;
-                       ServiceHealth node = nodes.get(0);
-                       locationFromConsul = node.getNode().getNode() + ":" + node.getService().getPort();
-                       logger.debug(EELFLoggerDelegate.debugLogger,
-                                       "Found healthy service location using consul - returning location " + locationFromConsul);
-
-                       // if locationFromConsul is null for some reason (very unlikely at
-                       // this point), default to localhost
-                       if (null == locationFromConsul || "".equals(locationFromConsul)) {
-                               logger.debug(EELFLoggerDelegate.debugLogger,
-                                               "Couldn't get location from consul for service " + service + ". Defaulting to localhost");
-                               return "localhost:" + fallbackPortOnLocalHost;
-                       } else {
-                               logger.debug(EELFLoggerDelegate.debugLogger, "Found service location from consul for service " + service
-                                               + ". Location is " + locationFromConsul);
-                               return locationFromConsul;
-                       }
-               }
-       }
-
-       @Override
-       public List<ServiceHealth> getAllHealthyNodes(String service) throws ConsulException {
-               Consul consul = Consul.builder().build();
-               HealthClient healthClient = consul.healthClient();
-               return healthClient.getHealthyServiceInstances(service).getResponse();
-       }
-
-       @Override
-       public List<ServiceHealth> getAllNodes(String service) {
-               Consul consul = Consul.builder().build();
-               HealthClient healthClient = consul.healthClient();
-               return healthClient.getAllServiceInstances(service).getResponse();
-       }
-}
index c3cc286..126d627 100644 (file)
@@ -859,7 +859,6 @@ public class EPAppCommonServiceImpl implements EPAppService {
                List<OnboardingApp> onboardingAppsList = new ArrayList<OnboardingApp>();
                for (EPApp app : apps) {
                        OnboardingApp onboardingApp = new OnboardingApp();
-                       app.setAppPassword(EPCommonSystemProperties.APP_DISPLAY_PASSWORD); //to hide password from get request
                        createOnboardingFromApp(app, onboardingApp);
                        onboardingAppsList.add(onboardingApp);
                }
@@ -1975,3 +1974,4 @@ public class EPAppCommonServiceImpl implements EPAppService {
 
        }
 }
+
index 1821421..92cbe90 100644 (file)
@@ -65,6 +65,9 @@ public class EPRoleServiceImpl implements EPRoleService {
 
        @Autowired
        private DataAccessService dataAccessService;
+       
+       @Autowired
+       ExternalAccessRolesService externalAccessRolesService;
 
        @SuppressWarnings("unchecked")
        public List<RoleFunction> getRoleFunctions() {
@@ -157,9 +160,16 @@ public class EPRoleServiceImpl implements EPRoleService {
                params.put("appId", appId.toString());
                params.put("roleName", roleName);
                portalParams.put("appRoleName", roleName);
-               if (appId == 1 || roleName.equals(PortalConstants.ADMIN_ROLE)) {
+               
+               List<EPRole> roleList = externalAccessRolesService.getPortalAppRoleInfo(PortalConstants.ACCOUNT_ADMIN_ROLE_ID);
+               EPRole role = new EPRole();
+               if(roleList.size()>0){
+                role = roleList.get(0);}
+                logger.debug(EELFLoggerDelegate.debugLogger, "Requested RoleName is  "+role.getName());
+                
+               if (appId == 1 || roleName.equals(role.getName())) {
                        roles = (List<EPRole>) dataAccessService.executeNamedQuery("getPortalAppRoles", portalParams, null);
-               } else if (appId != 1 && !roleName.equals(PortalConstants.ADMIN_ROLE)) {
+               } else if (appId != 1 && !roleName.equals(role.getName())) {
                        roles = (List<EPRole>) dataAccessService.executeNamedQuery("getAppRoles", params, null);
                }
                int resultsCount = (roles == null ? 0 : roles.size());
index d064545..53a7a5f 100644 (file)
@@ -509,4 +509,6 @@ public interface ExternalAccessRolesService {
         */
        public List<EcompRole> missingUserApplicationRoles(String uebkey, String loginId, Set<EcompRole> CurrentUserRoles) throws Exception;
 
+       List<EPRole> getPortalAppRoleInfo(Long roleId);
+
 }
index d5a873a..09afcf7 100644 (file)
@@ -1158,7 +1158,7 @@ public class ExternalAccessRolesServiceImpl implements ExternalAccessRolesServic
        @SuppressWarnings("unchecked")
        private CentralV2User createEPUser(EPUser userInfo, Set<EPUserApp> userAppSet, EPApp app) throws Exception {
                final Map<String, Long> params = new HashMap<>();
-               CentralV2User userAppList = new CentralV2User();
+        CentralV2User userAppList = new CentralV2User.CentralV2UserBuilder().createCentralV2User();
                CentralV2User user1 = null;
                final Map<String, Long> params1 = new HashMap<>();
                List<EPRole> globalRoleList = new ArrayList<>();
@@ -1234,21 +1234,32 @@ public class ExternalAccessRolesServiceImpl implements ExternalAccessRolesServic
                                        }
                                }
                        }
-                       user1 = new CentralV2User(null, userInfo.getCreated(), userInfo.getModified(), userInfo.getCreatedId(),
-                                       userInfo.getModifiedId(), userInfo.getRowNum(), userInfo.getOrgId(), userInfo.getManagerId(),
-                                       userInfo.getFirstName(), userInfo.getMiddleInitial(), userInfo.getLastName(), userInfo.getPhone(),
-                                       userInfo.getFax(), userInfo.getCellular(), userInfo.getEmail(), userInfo.getAddressId(),
-                                       userInfo.getAlertMethodCd(), userInfo.getHrid(), userInfo.getOrgUserId(), userInfo.getOrgCode(),
-                                       userInfo.getAddress1(), userInfo.getAddress2(), userInfo.getCity(), userInfo.getState(),
-                                       userInfo.getZipCode(), userInfo.getCountry(), userInfo.getOrgManagerUserId(),
-                                       userInfo.getLocationClli(), userInfo.getBusinessCountryCode(), userInfo.getBusinessCountryName(),
-                                       userInfo.getBusinessUnit(), userInfo.getBusinessUnitName(), userInfo.getDepartment(),
-                                       userInfo.getDepartmentName(), userInfo.getCompanyCode(), userInfo.getCompany(),
-                                       userInfo.getZipCodeSuffix(), userInfo.getJobTitle(), userInfo.getCommandChain(),
-                                       userInfo.getSiloStatus(), userInfo.getCostCenter(), userInfo.getFinancialLocCode(),
-                                       userInfo.getLoginId(), userInfo.getLoginPwd(), userInfo.getLastLoginDate(), userInfo.getActive(),
-                                       userInfo.getInternal(), userInfo.getSelectedProfileId(), userInfo.getTimeZoneId(),
-                                       userInfo.isOnline(), userInfo.getChatId(), userAppList.getUserApps(), null);
+            user1 = new CentralV2User.CentralV2UserBuilder().setId(null).setCreated(userInfo.getCreated())
+                    .setModified(userInfo.getModified()).setCreatedId(userInfo.getCreatedId())
+                    .setModifiedId(userInfo.getModifiedId()).setRowNum(userInfo.getRowNum())
+                    .setOrgId(userInfo.getOrgId()).setManagerId(userInfo.getManagerId())
+                    .setFirstName(userInfo.getFirstName()).setMiddleInitial(userInfo.getMiddleInitial())
+                    .setLastName(userInfo.getLastName()).setPhone(userInfo.getPhone()).setFax(userInfo.getFax())
+                    .setCellular(userInfo.getCellular()).setEmail(userInfo.getEmail())
+                    .setAddressId(userInfo.getAddressId()).setAlertMethodCd(userInfo.getAlertMethodCd())
+                    .setHrid(userInfo.getHrid()).setOrgUserId(userInfo.getOrgUserId()).setOrgCode(userInfo.getOrgCode())
+                    .setAddress1(userInfo.getAddress1()).setAddress2(userInfo.getAddress2()).setCity(userInfo.getCity())
+                    .setState(userInfo.getState()).setZipCode(userInfo.getZipCode()).setCountry(userInfo.getCountry())
+                    .setOrgManagerUserId(userInfo.getOrgManagerUserId()).setLocationClli(userInfo.getLocationClli())
+                    .setBusinessCountryCode(userInfo.getBusinessCountryCode())
+                    .setBusinessCountryName(userInfo.getBusinessCountryName())
+                    .setBusinessUnit(userInfo.getBusinessUnit()).setBusinessUnitName(userInfo.getBusinessUnitName())
+                    .setDepartment(userInfo.getDepartment()).setDepartmentName(userInfo.getDepartmentName())
+                    .setCompanyCode(userInfo.getCompanyCode()).setCompany(userInfo.getCompany())
+                    .setZipCodeSuffix(userInfo.getZipCodeSuffix()).setJobTitle(userInfo.getJobTitle())
+                    .setCommandChain(userInfo.getCommandChain()).setSiloStatus(userInfo.getSiloStatus())
+                    .setCostCenter(userInfo.getCostCenter()).setFinancialLocCode(userInfo.getFinancialLocCode())
+                    .setLoginId(userInfo.getLoginId()).setLoginPwd(userInfo.getLoginPwd())
+                    .setLastLoginDate(userInfo.getLastLoginDate()).setActive(userInfo.getActive())
+                    .setInternal(userInfo.getInternal()).setSelectedProfileId(userInfo.getSelectedProfileId())
+                    .setTimeZoneId(userInfo.getTimeZoneId()).setOnline(userInfo.isOnline())
+                    .setChatId(userInfo.getChatId()).setUserApps(userAppList.getUserApps()).setPseudoRoles(null)
+                    .createCentralV2User();
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "createEPUser: createEPUser failed", e);
                        throw e;
@@ -1308,8 +1319,9 @@ public class ExternalAccessRolesServiceImpl implements ExternalAccessRolesServic
                return roleInfo;
        }
 
+       @Override
        @SuppressWarnings("unchecked")
-       private List<EPRole> getPortalAppRoleInfo(Long roleId) {
+       public List<EPRole> getPortalAppRoleInfo(Long roleId) {
                List<EPRole> roleInfo;
                final Map<String, Long> getPortalAppRoleParams = new HashMap<>();
                getPortalAppRoleParams.put("roleId", roleId);
index 72f6a8d..31cb8a4 100644 (file)
@@ -76,7 +76,7 @@ public class MicroserviceProxyServiceImpl implements MicroserviceProxyService {
        private static final String ADD_MARK = "&";
 
        @Autowired
-       private ConsulHealthService consulHealthService;
+       private WidgetMService widgetMService;
        @Autowired
        MicroserviceService microserviceService;
        @Autowired
@@ -104,7 +104,7 @@ public class MicroserviceProxyServiceImpl implements MicroserviceProxyService {
                @SuppressWarnings({ "rawtypes", "unchecked" })
                ResponseEntity<Long> ans = (ResponseEntity<Long>) template.exchange(
                                EcompPortalUtils.widgetMsProtocol() + "://"
-                                               + consulHealthService.getServiceLocation(whatService,
+                                               + widgetMService.getServiceLocation(whatService,
                                                                SystemProperties.getProperty("microservices.widget.local.port"))
                                                + "/widget/microservices/widgetCatalog/parameters/" + widgetId,
                                HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), Long.class);
index 2aba0a4..a6aaea3 100644 (file)
@@ -52,6 +52,7 @@ import org.hibernate.criterion.Criterion;
 import org.hibernate.criterion.Restrictions;
 import org.onap.portalapp.portal.service.SearchService;
 import org.onap.portalapp.portal.domain.EPApp;
+import org.onap.portalapp.portal.domain.EPRole;
 import org.onap.portalapp.portal.domain.EPUser;
 import org.onap.portalapp.portal.logging.aop.EPMetricsLog;
 import org.onap.portalapp.portal.transport.ExternalAccessUser;
@@ -96,6 +97,9 @@ public class PortalAdminServiceImpl implements PortalAdminService {
        
        RestTemplate template = new RestTemplate();
        
+       @Autowired
+       ExternalAccessRolesService externalAccessRolesService;
+       
        @PostConstruct
        private void init() {
                SYS_ADMIN_ROLE_ID = SystemProperties.getProperty(SystemProperties.SYS_ADMIN_ROLE_ID);
@@ -162,7 +166,13 @@ public class PortalAdminServiceImpl implements PortalAdminService {
                                transaction.commit();
                                // Add role in the external central auth system
                                if(user != null && EcompPortalUtils.checkIfRemoteCentralAccessAllowed()) {
-                                        addPortalAdminInExternalCentralAuth(user.getOrgUserId(), PortalConstants.PORTAL_ADMIN_ROLE);
+                                       List<EPRole> roleList = externalAccessRolesService.getPortalAppRoleInfo(PortalConstants.SYS_ADMIN_ROLE_ID);
+                                       EPRole role = new EPRole();
+                                       if(roleList.size()>0){
+                                        role = roleList.get(0);}
+                                        logger.debug(EELFLoggerDelegate.debugLogger, "Requested RoleName is  "+role.getName());
+                                       
+                                        addPortalAdminInExternalCentralAuth(user.getOrgUserId(), role.getName());
                                }
                        } catch (Exception e) {
                                logger.error(EELFLoggerDelegate.errorLogger, "createPortalAdmin failed", e);
@@ -228,7 +238,13 @@ public class PortalAdminServiceImpl implements PortalAdminService {
                                        "user_id='" + userId + "' AND role_id='" + SYS_ADMIN_ROLE_ID + "'", null);
                        transaction.commit();
                        if(EcompPortalUtils.checkIfRemoteCentralAccessAllowed()){
-                               deletePortalAdminInExternalCentralAuth(userId, PortalConstants.PORTAL_ADMIN_ROLE);
+                               
+                               List<EPRole> roleList = externalAccessRolesService.getPortalAppRoleInfo(PortalConstants.SYS_ADMIN_ROLE_ID);
+                               EPRole role = new EPRole();
+                               if(roleList.size()>0){
+                                role = roleList.get(0);}
+                                logger.debug(EELFLoggerDelegate.debugLogger, "Requested RoleName is  "+role.getName());
+                               deletePortalAdminInExternalCentralAuth(userId, role.getName());
                        }
                } catch (Exception e) {
                        logger.error(EELFLoggerDelegate.errorLogger, "deletePortalAdmin failed", e);
index 522579d..bfc232a 100644 (file)
@@ -189,8 +189,7 @@ public class UserRolesCommonServiceImpl  {
                        transaction = localSession.beginTransaction();
                        @SuppressWarnings("unchecked")
                        List<EPUser> userList = localSession
-                                       .createQuery("from :name where orgUserId=:userId")
-                                       .setParameter("name",EPUser.class.getName())
+                                       .createQuery("from EPUser where orgUserId=:userId")
                                        .setParameter("userId",userId)
                                        .list();
                        if (userList.size() == 0) {
@@ -269,32 +268,37 @@ public class UserRolesCommonServiceImpl  {
         *                      set to false if request is from users page otherwise true
         * @throws Exception
         */
+       @SuppressWarnings("unchecked")
        protected void syncUserRoles(SessionFactory sessionFactory, String userId, Long appId,
-                       EcompRole[] userAppRoles, Boolean extRequestValue, String reqType) throws Exception {
+                       EcompRole[] userAppRoles, Boolean extRequestValue, String reqType,boolean checkIfUserisRoleAdmin,EcompRole[] appRoles) throws Exception {
                Session localSession = null;
                Transaction transaction = null;
                String roleActive = null;
                final Map<String, String> userAppParams = new HashMap<>();
                final Map<String, String> appParams = new HashMap<>();
                HashMap<Long, EcompRole> newUserAppRolesMap = hashMapFromEcompRoles(userAppRoles);
-
+               List<EPRole> roleInfo = externalAccessRolesService.getPortalAppRoleInfo(PortalConstants.ACCOUNT_ADMIN_ROLE_ID);
+               
+               EPRole adminRole = new EPRole();
+               if(roleInfo.size()>0)
+               {
+                       adminRole = roleInfo.get(0);
+                       logger.debug(EELFLoggerDelegate.debugLogger, "Admin RoleName form DB: " + adminRole.getName());
+               }
                try {
                        localSession = sessionFactory.openSession();
                        transaction = localSession.beginTransaction();
                        @SuppressWarnings("unchecked")
                        List<EPUser> userList = localSession
-                                       .createQuery("from :name where orgUserId=:userId")
-                                       .setParameter("name",EPUser.class.getName())
+                                       .createQuery("from EPUser where orgUserId=:userId")
                                        .setParameter("userId",userId)
                                        .list();
                        if (userList.size() > 0) {
                                EPUser client = userList.get(0);
                                roleActive = ("DELETE".equals(reqType)) ? "" : " and role.active = 'Y'";
                                @SuppressWarnings("unchecked")
-                               List<EPUserApp> userRoles = localSession.createQuery("from :name where app.id=:appId :roleActive and userId=:userId")
-                                               .setParameter("name",EPUserApp.class.getName())
+                               List<EPUserApp> userRoles = localSession.createQuery("from EPUserApp where app.id=:appId and userId=:userId" + roleActive)
                                                .setParameter("appId",appId)
-                                               .setParameter("roleActive",roleActive)
                                                .setParameter("userId",client.getId())
                                                .list();
                                
@@ -304,13 +308,32 @@ public class UserRolesCommonServiceImpl  {
                                                userAppParams.put("appId",  String.valueOf(appId));
                                                appParams.put("appRoleName", userAppRoleList.getRole().getName());
                                                @SuppressWarnings("unchecked")
-                                               List<EPRole>  rolesList = (!userAppRoleList.getRole().getName().equals(PortalConstants.ADMIN_ROLE)) ? (List<EPRole>) dataAccessService.executeNamedQuery("getAppRoles", userAppParams, null) : (List<EPRole>) dataAccessService.executeNamedQuery("getPortalAppRoles", appParams, null);        
+                                               List<EPRole>  rolesList = (!userAppRoleList.getRole().getName().equals(adminRole.getName())) ? (List<EPRole>) dataAccessService.executeNamedQuery("getAppRoles", userAppParams, null) : (List<EPRole>) dataAccessService.executeNamedQuery("getPortalAppRoles", appParams, null);       
                                                if(rolesList.size() > 0 || !rolesList.isEmpty()){
                                                checkIfRoleInactive(rolesList.get(0));
                                                }
                                        }
                                }
+                               
+                               if (appRoles != null) {
+                                       List<EcompRole> appRolesList = Arrays.stream(appRoles).collect(Collectors.toList());
+                                       List<EPUserApp> finalUserRolesList = new ArrayList<>();
+                                       if (checkIfUserisRoleAdmin) {
+                                               for (EcompRole role : appRolesList) {
+                                                       for (EPUserApp userAppRoleList : userRoles) {
+                                                               if (userAppRoleList.getRole().getName().equals(role.getName()))
+
+                                                               {
+                                                                       finalUserRolesList.add(userAppRoleList);
+                                                               }
 
+                                                       }
+                                               }
+                                               userRoles = new ArrayList<>();
+                                               userRoles.addAll(finalUserRolesList);
+                                       }
+                               }
+                                                               
                                for (EPUserApp userRole : userRoles) {
                                        if (!userRole.getRoleId().equals(PortalConstants.ACCOUNT_ADMIN_ROLE_ID) && userRole.getRoleId() != PortalConstants.SYS_ADMIN_ROLE_ID && !extRequestValue){
                                                syncUserRolesExtension(userRole, appId, localSession, userAppRoles, newUserAppRolesMap);
@@ -322,6 +345,8 @@ public class UserRolesCommonServiceImpl  {
                                                syncUserRolesExtension(userRole, appId, localSession, userAppRoles, newUserAppRolesMap);
                                        }
                                }
+                               
+               
                                Collection<EcompRole> newRolesToAdd = newUserAppRolesMap.values();
                                if (newRolesToAdd.size() > 0) {
                                        EPApp app = (EPApp) localSession.get(EPApp.class, appId);
@@ -342,8 +367,7 @@ public class UserRolesCommonServiceImpl  {
                                        } else { // remote app
                                                @SuppressWarnings("unchecked")
                                                List<EPRole> roles = localSession
-                                                               .createQuery("from :name where appId=:appId")
-                                                               .setParameter("name",EPRole.class.getName())
+                                                               .createQuery("from EPRole where appId=:appId")
                                                                .setParameter("appId",appId)
                                                                .list();
                                                for (EPRole role : roles) {
@@ -358,7 +382,7 @@ public class UserRolesCommonServiceImpl  {
                                        EPRole role = null;
                                        for (EcompRole userRole : newRolesToAdd) {
                                                EPUserApp userApp = new EPUserApp();
-                                               if (("PUT".equals(reqType) || "POST".equals(reqType)) && userRole.getName().equals(PortalConstants.ADMIN_ROLE)) {
+                                               if (("PUT".equals(reqType) || "POST".equals(reqType)) && userRole.getName().equals(adminRole.getName())) {
                                                        role = (EPRole) localSession.get(EPRole.class, new Long(PortalConstants.ACCOUNT_ADMIN_ROLE_ID));
                                                        userApp.setRole(role);
                                                } else if ((userRole.getId().equals(PortalConstants.ACCOUNT_ADMIN_ROLE_ID)) && !extRequestValue){
@@ -507,8 +531,7 @@ public class UserRolesCommonServiceImpl  {
                        // active!
 
                        @SuppressWarnings("unchecked")
-                       List<EPRole> currentAppRoles = localSession.createQuery("from :name where appId = :appId")
-                                       .setParameter("name",EPRole.class.getName())
+                       List<EPRole> currentAppRoles = localSession.createQuery("from EPRole where appId = :appId")
                                        .setParameter("appId",appId)
                                        .list();
 
@@ -549,8 +572,7 @@ public class UserRolesCommonServiceImpl  {
                                        // Delete from fn_user_role
                                        @SuppressWarnings("unchecked")
                                        List<EPUserApp> userRoles = localSession.createQuery(
-                                                       "from :name where app.id=:appId and role_id=:roleId")
-                                                       .setParameter("name",EPUserApp.class.getName())
+                                                       "from EPUserApp where app.id=:appId and role_id=:roleId")
                                                        .setParameter("appId",appId)
                                                        .setParameter("roleId",roleId)
                                                        .list();
@@ -567,8 +589,7 @@ public class UserRolesCommonServiceImpl  {
                                        // Delete from fn_menu_functional_roles
                                        @SuppressWarnings("unchecked")
                                        List<FunctionalMenuRole> funcMenuRoles = localSession
-                                                       .createQuery("from :name where roleId=:roleId")
-                                                       .setParameter("name",FunctionalMenuRole.class.getName())
+                                                       .createQuery("from FunctionalMenuRole where roleId=:roleId")
                                                        .setParameter("roleId",roleId)
                                                        .list();
                                        int numMenuRoles = funcMenuRoles.size();
@@ -581,8 +602,7 @@ public class UserRolesCommonServiceImpl  {
                                                // so must null out the url too, to be consistent
                                                @SuppressWarnings("unchecked")
                                                List<FunctionalMenuRole> funcMenuRoles2 = localSession
-                                                               .createQuery("from :name where menuId=:menuId")
-                                                               .setParameter("name",FunctionalMenuRole.class.getName())
+                                                               .createQuery("from FunctionalMenuRole where menuId=:menuId")
                                                                .setParameter("menuId",menuId)
                                                                .list();
                                                int numMenuRoles2 = funcMenuRoles2.size();
@@ -597,8 +617,8 @@ public class UserRolesCommonServiceImpl  {
                                                                        "syncAppRoles: There is exactly 1 menu item for this role, so emptying the url");
                                                        @SuppressWarnings("unchecked")
                                                        List<FunctionalMenuItem> funcMenuItems = localSession
-                                                                       .createQuery(
-                                                                                       "from " + FunctionalMenuItem.class.getName() + " where menuId=" + menuId)
+                                                                       .createQuery("from FunctionalMenuItem where menuId=:menuId")
+                                                                       .setParameter("menuId",menuId)
                                                                        .list();
                                                        if (funcMenuItems.size() > 0) {
                                                                logger.debug(EELFLoggerDelegate.debugLogger, "got the menu item");
@@ -773,7 +793,7 @@ public class UserRolesCommonServiceImpl  {
         *                      set to false if requests from Users page otherwise true
         * @return true on success, false otherwise
         */
-       protected boolean applyChangesInUserRolesForAppToEcompDB(RolesInAppForUser rolesInAppForUser, boolean externalSystemRequest, String reqType,boolean isSystemUser) throws Exception {
+       protected boolean applyChangesInUserRolesForAppToEcompDB(RolesInAppForUser rolesInAppForUser, boolean externalSystemRequest, String reqType,boolean isSystemUser,Set<EcompRole> rolesDeletedByApprover ,boolean isLoggedInUserRoleAdminOfApp ) throws Exception {
                boolean result = false;
                String userId = rolesInAppForUser.orgUserId;
                Long appId = rolesInAppForUser.appId;
@@ -792,7 +812,16 @@ public class UserRolesCommonServiceImpl  {
                                        userAppRoles[i] = role;
                                }
                                try {
-                                       syncUserRoles(sessionFactory, userId, appId, userAppRoles, externalSystemRequest, reqType);
+                                       EcompRole[] applicationRoles = null;
+                                       
+                                       if(isLoggedInUserRoleAdminOfApp){
+                                   List<EcompRole> roles = Arrays.stream(userAppRoles).collect(Collectors.toList());
+                                   List<EcompRole> roles1 = rolesDeletedByApprover.stream().collect(Collectors.toList());
+                                   roles.addAll(roles1);
+                                        applicationRoles = roles.stream().toArray(n -> new EcompRole[n]);
+                                       }
+                                       
+                                       syncUserRoles(sessionFactory, userId, appId, userAppRoles, externalSystemRequest, reqType,isLoggedInUserRoleAdminOfApp,applicationRoles);
                                        result = true;
                                } catch (Exception e) {
                                        logger.error(EELFLoggerDelegate.errorLogger,
@@ -1027,15 +1056,36 @@ public class UserRolesCommonServiceImpl  {
                }
                Long appId = newAppRolesForUser.getAppId();
                List<RoleInAppForUser> roleInAppForUserList = newAppRolesForUser.getAppRoles();
+               
+               
+
                if (userId.length() > 0 ) {
                        ObjectMapper mapper = new ObjectMapper();
                        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 
                        try {
                                EPApp app = appsService.getApp(appId);
+                               
+                               boolean checkIfUserisApplicationAccAdmin = adminRolesService.isAccountAdminOfApplication(user,
+                                               app);
+                               Set<EcompRole> rolesGotDeletedFromApprover = new TreeSet<EcompRole>();
+
+                               boolean checkIfUserisOnlyRoleAdmin = adminRolesService.isRoleAdmin(user) && !checkIfUserisApplicationAccAdmin;
+                               if (checkIfUserisOnlyRoleAdmin) {
+                                       for (RoleInAppForUser roleInAppForUser : roleInAppForUserList) {
+                                               if (!roleInAppForUser.isApplied) {
+                                                       EcompRole ecompRole = new EcompRole();
+                                                       ecompRole.setId(roleInAppForUser.roleId);
+                                                       ecompRole.setName(roleInAppForUser.roleName);
+                                                       rolesGotDeletedFromApprover.add(ecompRole);
+                                               }
+                                       }
+                               }
+                                       
                                applyChangesToUserAppRolesForMyLoginsRequest(user, appId);
 
                                boolean systemUser = newAppRolesForUser.isSystemUser();
+
                                if ((app.getCentralAuth() || app.getId().equals(PortalConstants.PORTAL_APP_ID)) && systemUser) {
 
                                        Set<EcompRole> userRolesInLocalApp = postUsersRolesToLocalApp(roleInAppForUserList, mapper,
@@ -1043,13 +1093,15 @@ public class UserRolesCommonServiceImpl  {
                                        RolesInAppForUser rolesInAppForUser = constructRolesInAppForUserUpdate(userId, appId,
                                                        userRolesInLocalApp);
                                        List<RoleInAppForUser> roleAppUserList = rolesInAppForUser.roles;
+                                       Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
                                        if (EcompPortalUtils.checkIfRemoteCentralAccessAllowed()) {
                                                // Apply changes in external Access system
+                                               
                                                updateUserRolesInExternalSystem(app, rolesInAppForUser.orgUserId, roleAppUserList,
-                                                               epRequestValue, systemUser);
+                                                               epRequestValue, systemUser,rolesGotDeletedByApprover,false);
                                        }
                                        result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, "Portal",
-                                                       systemUser);
+                                                       systemUser,rolesGotDeletedByApprover,false);
 
                                }else if (!app.getCentralAuth() && systemUser)
                                {
@@ -1068,11 +1120,12 @@ public class UserRolesCommonServiceImpl  {
                                                        userRolesInLocalApp);
                                        List<RoleInAppForUser> roleAppUserList = rolesInAppForUser.roles;
                                        if (EcompPortalUtils.checkIfRemoteCentralAccessAllowed()) {
+                                               
                                                // Apply changes in external Access system
                                                updateUserRolesInExternalSystem(app, rolesInAppForUser.orgUserId, roleAppUserList,
-                                                               epRequestValue,false);
+                                                               epRequestValue,false,rolesGotDeletedFromApprover,checkIfUserisOnlyRoleAdmin);
                                        }
-                                       result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, "Portal", systemUser);
+                                       result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, "Portal", systemUser,rolesGotDeletedFromApprover,checkIfUserisOnlyRoleAdmin);
                                } 
                                // In case if portal is not centralized then follow existing approach
                                else if(!app.getCentralAuth() && app.getId().equals(PortalConstants.PORTAL_APP_ID)){
@@ -1080,7 +1133,8 @@ public class UserRolesCommonServiceImpl  {
                                                        applicationsRestClientService, appId, userId);  
                                        RolesInAppForUser rolesInAppForUser = constructRolesInAppForUserUpdate(userId, appId,
                                                        userRolesInLocalApp);
-                                       result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, "Portal",false);
+                                       Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+                                       result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, "Portal",false,rolesGotDeletedByApprover,false);
                                } else{// remote app
                                        EPUser remoteAppUser = null;
                                        if(!app.getCentralAuth() && !app.getId().equals(PortalConstants.PORTAL_APP_ID)){
@@ -1094,7 +1148,8 @@ public class UserRolesCommonServiceImpl  {
                                                                        applicationsRestClientService, appId, userId,systemUser);
                                                        RolesInAppForUser rolesInAppForUser = constructRolesInAppForUserUpdate(userId, appId,
                                                                        userRolesInRemoteApp);
-                                                       result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, null,false);
+                                                       Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+                                                       result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, null,false,rolesGotDeletedByApprover,false);
 
                                                        // If no roles remain, request app to set user inactive.
                                                        if (userRolesInRemoteApp.size() == 0) {
@@ -1137,7 +1192,7 @@ public class UserRolesCommonServiceImpl  {
         * @param roleInAppUser Contains list of active roles 
         */
        @SuppressWarnings("unchecked")
-       private void updateUserRolesInExternalSystem(EPApp app, String orgUserId, List<RoleInAppForUser> roleInAppUser, boolean isPortalRequest,boolean isSystemUser) throws Exception
+       private void updateUserRolesInExternalSystem(EPApp app, String orgUserId, List<RoleInAppForUser> roleInAppUser, boolean isPortalRequest,boolean isSystemUser,Set<EcompRole> deletedRolesByApprover,boolean isLoggedInUserRoleAdminofApp) throws Exception
        {
                try {
                        // check if user exists
@@ -1159,6 +1214,8 @@ public class UserRolesCommonServiceImpl  {
                        HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
                        HttpEntity<String> getUserRolesEntity = new HttpEntity<>(headers);
                        ResponseEntity<String> getResponse = externalAccessRolesService.getUserRolesFromExtAuthSystem(name, getUserRolesEntity);
+
+                       
                        List<ExternalAccessUserRoleDetail> userRoleDetailList = new ArrayList<>();
                        String res = getResponse.getBody();
                        JSONObject jsonObj = null;
@@ -1190,6 +1247,7 @@ public class UserRolesCommonServiceImpl  {
                        
                        List<ExternalAccessUserRoleDetail>  userRoleListMatchingInExtAuthAndLocal = CheckIfRoleAreMatchingInUserRoleDetailList(userRoleDetailList,app);
                        
+                       List<EcompUserAppRoles> userAppList = new ArrayList<>();
                        // If request coming from portal not from external role approval system then we have to check if user already 
                        // have account admin or system admin as GUI will not send these roles 
                        if (!isPortalRequest) {
@@ -1199,7 +1257,7 @@ public class UserRolesCommonServiceImpl  {
                                final Map<String, Long> params = new HashMap<>();
                                params.put("appId", app.getId());
                                params.put("userId", user.getId());
-                               List<EcompUserAppRoles> userAppList = dataAccessService.executeNamedQuery("getUserAppExistingRoles",
+                                userAppList = dataAccessService.executeNamedQuery("getUserAppExistingRoles",
                                                params, null);
                                if (!roleInAppUser.isEmpty()) {
                                        for (EcompUserAppRoles userApp : userAppList) {
@@ -1216,7 +1274,7 @@ public class UserRolesCommonServiceImpl  {
                        }
                        List<RoleInAppForUser> roleInAppUserNonDupls = roleInAppUser.stream().distinct()
                                        .collect(Collectors.toList());
-                       final Map<String, RoleInAppForUser> currentUserRolesToUpdate = new HashMap<>();
+                        Map<String, RoleInAppForUser> currentUserRolesToUpdate = new HashMap<>();
                        for (RoleInAppForUser roleInAppUserNew : roleInAppUserNonDupls) {
                                currentUserRolesToUpdate.put(roleInAppUserNew.getRoleName().replaceAll(EcompPortalUtils.EXTERNAL_CENTRAL_AUTH_ROLE_HANDLE_SPECIAL_CHARACTERS, "_"), roleInAppUserNew);
                        }
@@ -1224,6 +1282,35 @@ public class UserRolesCommonServiceImpl  {
                        for (ExternalAccessUserRoleDetail extAccessUserRole : userRoleListMatchingInExtAuthAndLocal) {
                                currentUserRolesInExternalSystem.put(extAccessUserRole.getName(), extAccessUserRole);
                        }
+
+                       if (isLoggedInUserRoleAdminofApp) {
+                               if (deletedRolesByApprover.size() > 0) {
+                                       List<ExternalAccessUserRoleDetail> newUpdatedRoles = new ArrayList<>();
+                                       Set<EcompRole> roles = new HashSet<>();
+                                       for (ExternalAccessUserRoleDetail userRole : userRoleListMatchingInExtAuthAndLocal) {
+                                               for (EcompRole role : deletedRolesByApprover) {
+                                                       if ((userRole.getName().substring(app.getNameSpace().length() + 1)).equals(role.getName())) {
+                                                               roles.add(role);
+                                                               newUpdatedRoles.add(userRole);
+                                                       }
+                                               }
+                                       }
+                                       if (newUpdatedRoles.size() > 0) {
+                                               userRoleListMatchingInExtAuthAndLocal = new ArrayList<>();
+                                               userRoleListMatchingInExtAuthAndLocal.addAll(newUpdatedRoles);
+                                       } else {
+                                               userRoleListMatchingInExtAuthAndLocal = new ArrayList<>();
+                                               currentUserRolesToUpdate = new HashMap<>();
+
+                                       }
+
+                               } else {
+                                       userRoleListMatchingInExtAuthAndLocal = new ArrayList<>();
+                                       currentUserRolesToUpdate = new HashMap<>();
+
+                               }
+                       }
+
                        // Check if user roles does not exists in local but still there in External Central Auth System delete them all
                        for (ExternalAccessUserRoleDetail userRole : userRoleListMatchingInExtAuthAndLocal) {
                                if (!(currentUserRolesToUpdate
@@ -1575,13 +1662,15 @@ public class UserRolesCommonServiceImpl  {
                                        RolesInAppForUser rolesInAppForUser = constructRolesInAppForUserUpdate(orgUserId, app.getId(),
                                                        userRolesInLocalApp);
                                        List<RoleInAppForUser> roleAppUserList = rolesInAppForUser.roles;
+                                       Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+
                                        if(EcompPortalUtils.checkIfRemoteCentralAccessAllowed()) {
                                        // Apply changes in external Access system
-                                       updateUserRolesInExternalSystem(app, rolesInAppForUser.orgUserId, roleAppUserList, externalSystemRequest,false);
+                                       updateUserRolesInExternalSystem(app, rolesInAppForUser.orgUserId, roleAppUserList, externalSystemRequest,false,rolesGotDeletedByApprover,false);
                                        }
                                        logger.info(EELFLoggerDelegate.debugLogger, "setExternalRequestUserAppRole: {} user app roles: for app {}, user {}", logMessage,
                                                        newAppRolesForUser.getApplicationName(), newAppRolesForUser.getLoginId());
-                                       result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest, reqType,false);
+                                       result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest, reqType,false,rolesGotDeletedByApprover,false);
                                } 
                                // If local application is not centralized 
                                else if(!app.getCentralAuth() && app.getId().equals(PortalConstants.PORTAL_APP_ID)){
@@ -1589,7 +1678,9 @@ public class UserRolesCommonServiceImpl  {
                                                        applicationsRestClientService, app.getId(), orgUserId); 
                                        RolesInAppForUser rolesInAppForUser = constructRolesInAppForUserUpdate(orgUserId, app.getId(),
                                                        userRolesInLocalApp);
-                                       result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest, reqType,false);
+                                       Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+
+                                       result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest, reqType,false,rolesGotDeletedByApprover,false);
                                } else {// remote app
                                        // If adding just account admin role don't do remote application user call
                                        if (!((roleInAppForUserList.size() == 1 || reqType.equals("DELETE")) && checkIfAdminRoleExists)) {
@@ -1609,8 +1700,10 @@ public class UserRolesCommonServiceImpl  {
                                                logger.info(EELFLoggerDelegate.debugLogger,
                                                                "setExternalRequestUserAppRole: {} user app roles: for app {}, user {}", logMessage,
                                                                newAppRolesForUser.getApplicationName(), newAppRolesForUser.getLoginId());
+                                               Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+
                                                result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest,
-                                                               reqType,false);
+                                                               reqType,false,rolesGotDeletedByApprover,false);
                                                // If no roles remain, request app to set user inactive.
                                                /*
                                                 * if (userRolesInRemoteApp.size() == 0) {
@@ -1632,8 +1725,10 @@ public class UserRolesCommonServiceImpl  {
                                                                userRolesInRemoteApp);
                                                logger.info(EELFLoggerDelegate.debugLogger, "setExternalRequestUserAppRole: {} user app roles: for app {}, user {}",
                                                                logMessage, newAppRolesForUser.getApplicationName(), newAppRolesForUser.getLoginId());
+                                               Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+
                                                result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest,
-                                                               reqType,false);
+                                                               reqType,false,rolesGotDeletedByApprover,false);
                                        }
                                        if(!result){
                                                reqMessage = "Failed to save the user app role(s)";
@@ -1705,7 +1800,15 @@ public class UserRolesCommonServiceImpl  {
                                                roleInAppForUserList);
                                throw new Exception(roleInAppForUser.getRoleName() + " role is unavailable for "+ appName + " application");
                        } else {
-                               ecompRole.roleId = (appId == 1 || roleInAppForUser.getRoleName().equals(PortalConstants.ADMIN_ROLE)) ? existingAppRole.getId() : existingAppRole.getAppRoleId();
+                               
+                               List<EPRole> roleInfo = externalAccessRolesService.getPortalAppRoleInfo(PortalConstants.ACCOUNT_ADMIN_ROLE_ID);
+                               EPRole adminRole = new EPRole();
+                               if(roleInfo.size()>0)
+                               {
+                                       adminRole = roleInfo.get(0);
+                                       logger.debug(EELFLoggerDelegate.debugLogger, "Admin RoleName form DB: " + adminRole.getName());
+                               }
+                               ecompRole.roleId = (appId == 1 || roleInAppForUser.getRoleName().equals(adminRole.getName())) ? existingAppRole.getId() : existingAppRole.getAppRoleId();
                                ecompRole.roleName = roleInAppForUser.getRoleName();
                                ecompRole.isApplied = true;
                                existingUserRoles.add(ecompRole);
@@ -1817,6 +1920,7 @@ public class UserRolesCommonServiceImpl  {
                }
                
                EcompRole[] appRoles = null;
+               boolean checkIfUserisApplicationAccAdmin = false;
                List<EcompRole> roles = new ArrayList<>();
                        if (app.getCentralAuth()) {
                                final Map<String, Long> appParams = new HashMap<>();
@@ -1825,7 +1929,7 @@ public class UserRolesCommonServiceImpl  {
                                                appParams, null);
 
                                EPApp application = appService.getApp(appId);
-                               boolean checkIfUserisApplicationAccAdmin = adminRolesService.isAccountAdminOfApplication(user,
+                                checkIfUserisApplicationAccAdmin = adminRolesService.isAccountAdminOfApplication(user,
                                                application);
 
                                List<EPRole> rolesetwithfunctioncds = new ArrayList<EPRole>();
@@ -1959,19 +2063,23 @@ public class UserRolesCommonServiceImpl  {
                                                                        EcompRole epRole = appRolesList.stream()
                                                                                        .filter(x -> role.getName().equals(x.getName())).findAny().orElse(null);
                                                                        List<RoleFunction> roleFunList = new ArrayList<>();
-                                                                       if(epRole.getRoleFunctions().size()>0)
-                                                                       roleFunList.addAll(epRole.getRoleFunctions());
-                                                                       boolean checkIfFunctionsExits = roleFunList.stream().anyMatch(
-                                                                                       roleFunction -> roleFunction.getType().equalsIgnoreCase("Approver"));
-                                                                       if (checkIfFunctionsExits) {
-                                                                               finalUserAppRolesList.add(role);
-                                                                               List<RoleFunction> filteredList = roleFunList.stream()
-                                                                                               .filter(x -> "Approver".equalsIgnoreCase(x.getType()))
-                                                                                               .collect(Collectors.toList());
-                                                                               roleNames = filteredList.stream().map(RoleFunction::getCode)
-                                                                                               .collect(Collectors.toList());
+                                                                       
+                                                                       if (epRole != null) {
+                                                                               if (epRole.getRoleFunctions().size() > 0)
+                                                                                       roleFunList.addAll(epRole.getRoleFunctions());
+                                                                               boolean checkIfFunctionsExits = roleFunList.stream().anyMatch(
+                                                                                               roleFunction -> roleFunction.getType().equalsIgnoreCase("Approver"));
+                                                                               if (checkIfFunctionsExits) {
+                                                                                       finalUserAppRolesList.add(role);
+                                                                                       List<RoleFunction> filteredList = roleFunList.stream()
+                                                                                                       .filter(x -> "Approver".equalsIgnoreCase(x.getType()))
+                                                                                                       .collect(Collectors.toList());
+                                                                                       roleNames = filteredList.stream().map(RoleFunction::getCode)
+                                                                                                       .collect(Collectors.toList());
+                                                                               }else{
+                                                                                       roleNames.add(epRole.getName());
+                                                                               }
                                                                        }
-
                                                                        for (String name : roleNames) {
                                                                                EcompRole ecompRole = appRolesList.stream()
                                                                                                .filter(x -> name.equals(x.getName())).findAny().orElse(null);
@@ -2036,9 +2144,12 @@ public class UserRolesCommonServiceImpl  {
                                        }
                                        EcompRole[]     userAppRolesActive = activeRoles.toArray(new EcompRole[activeRoles.size()]);
                                
+                                       
+                                       boolean checkIfUserisRoleAdmin = adminRolesService.isRoleAdmin(user) && !checkIfUserisApplicationAccAdmin;
+                                       
                                // If the remote application isn't down we MUST sync user
                                // roles here in case we have this user here!
-                               syncUserRoles(sessionFactory, userId, appId, userAppRolesActive, extRequestValue, null);
+                               syncUserRoles(sessionFactory, userId, appId, userAppRolesActive, extRequestValue, null,checkIfUserisRoleAdmin,appRoles);
                        } catch (Exception e) {
                                // TODO: we may need to check if user exists, maybe remote
                                // app is down.
@@ -44,7 +44,7 @@ import org.onap.portalapp.portal.exceptions.NoHealthyServiceException;
 import com.ecwid.consul.ConsulException;
 import com.orbitz.consul.model.health.ServiceHealth;
 
-public interface ConsulHealthService {
+public interface WidgetMService {
        /**
         * This method returns the location of one healthy node if found in Consul -
         * If not found in / by Consul, it falls back to 'localhost'
@@ -56,7 +56,4 @@ public interface ConsulHealthService {
         */
        public String getServiceLocation(String service, String fallbackPortOnLocalhost) throws NoHealthyServiceException;
 
-       public List<ServiceHealth> getAllHealthyNodes(String service) throws ConsulException;
-
-       public List<ServiceHealth> getAllNodes(String service) throws ConsulException;
 }
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/WidgetMServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/WidgetMServiceImpl.java
new file mode 100644 (file)
index 0000000..21f1648
--- /dev/null
@@ -0,0 +1,57 @@
+/*-
+ * ============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.portalapp.portal.service;
+
+import org.onap.portalapp.portal.utils.EcompPortalUtils;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.stereotype.Component;
+
+@Component
+public class WidgetMServiceImpl implements WidgetMService {
+
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetMServiceImpl.class);
+
+       @Override
+       public String getServiceLocation(String service, String fallbackPortOnLocalHost) {      
+               logger.debug(logger.debugLogger, "Requested Service: "+ service);
+               String localFallbackServiceLocation = EcompPortalUtils.localOrDockerHost() + ":" + fallbackPortOnLocalHost;     
+               logger.debug(logger.debugLogger, "returned service location: "+ localFallbackServiceLocation);
+               return localFallbackServiceLocation;    
+       }
+
+}
index 6889495..a1bee21 100644 (file)
@@ -109,70 +109,386 @@ public class CentralV2User implements Serializable {
                
        }
        
-       public CentralV2User(Long id, Date created, Date modified, Long createdId, Long modifiedId, Long rowNum, Long orgId,
-                       Long managerId, String firstName, String middleInitial, String lastName, String phone, String fax,
-                       String cellular, String email, Long addressId, String alertMethodCd, String hrid, String orgUserId,
-                       String orgCode, String address1, String address2, String city, String state, String zipCode, String country,
-                       String orgManagerUserId, String locationClli, String businessCountryCode, String businessCountryName,
-                       String businessUnit, String businessUnitName, String department, String departmentName, String companyCode,
-                       String company, String zipCodeSuffix, String jobTitle, String commandChain, String siloStatus,
-                       String costCenter, String financialLocCode, String loginId, String loginPwd, Date lastLoginDate,
-                       boolean active, boolean internal, Long selectedProfileId, Long timeZoneId, boolean online, String chatId,
-                       Set<CentralV2UserApp> userApps, Set<CentralV2Role> pseudoRoles) {
+       public CentralV2User(CentralV2UserBuilder builder) {
                super();
-               this.id = id;
-               this.created = created;
-               this.modified = modified;
-               this.createdId = createdId;
-               this.modifiedId = modifiedId;
-               this.rowNum = rowNum;
-               this.orgId = orgId;
-               this.managerId = managerId;
-               this.firstName = firstName;
-               this.middleInitial = middleInitial;
-               this.lastName = lastName;
-               this.phone = phone;
-               this.fax = fax;
-               this.cellular = cellular;
-               this.email = email;
-               this.addressId = addressId;
-               this.alertMethodCd = alertMethodCd;
-               this.hrid = hrid;
-               this.orgUserId = orgUserId;
-               this.orgCode = orgCode;
-               this.address1 = address1;
-               this.address2 = address2;
-               this.city = city;
-               this.state = state;
-               this.zipCode = zipCode;
-               this.country = country;
-               this.orgManagerUserId = orgManagerUserId;
-               this.locationClli = locationClli;
-               this.businessCountryCode = businessCountryCode;
-               this.businessCountryName = businessCountryName;
-               this.businessUnit = businessUnit;
-               this.businessUnitName = businessUnitName;
-               this.department = department;
-               this.departmentName = departmentName;
-               this.companyCode = companyCode;
-               this.company = company;
-               this.zipCodeSuffix = zipCodeSuffix;
-               this.jobTitle = jobTitle;
-               this.commandChain = commandChain;
-               this.siloStatus = siloStatus;
-               this.costCenter = costCenter;
-               this.financialLocCode = financialLocCode;
-               this.loginId = loginId;
-               this.loginPwd = loginPwd;
-               this.lastLoginDate = lastLoginDate;
-               this.active = active;
-               this.internal = internal;
-               this.selectedProfileId = selectedProfileId;
-               this.timeZoneId = timeZoneId;
-               this.online = online;
-               this.chatId = chatId;
-               this.userApps = userApps;
-               this.pseudoRoles = pseudoRoles;
+               this.id = builder.id;
+               this.created = builder.created;
+               this.modified = builder.modified;
+               this.createdId = builder.createdId;
+               this.modifiedId = builder.modifiedId;
+               this.rowNum = builder.rowNum;
+               this.orgId = builder.orgId;
+               this.managerId = builder.managerId;
+               this.firstName = builder.firstName;
+               this.middleInitial = builder.middleInitial;
+               this.lastName = builder.lastName;
+               this.phone = builder.phone;
+               this.fax = builder.fax;
+               this.cellular = builder.cellular;
+               this.email = builder.email;
+               this.addressId = builder.addressId;
+               this.alertMethodCd = builder.alertMethodCd;
+               this.hrid = builder.hrid;
+               this.orgUserId = builder.orgUserId;
+               this.orgCode = builder.orgCode;
+               this.address1 = builder.address1;
+               this.address2 = builder.address2;
+               this.city = builder.city;
+               this.state = builder.state;
+               this.zipCode = builder.zipCode;
+               this.country = builder.country;
+               this.orgManagerUserId = builder.orgManagerUserId;
+               this.locationClli = builder.locationClli;
+               this.businessCountryCode = builder.businessCountryCode;
+               this.businessCountryName = builder.businessCountryName;
+               this.businessUnit = builder.businessUnit;
+               this.businessUnitName = builder.businessUnitName;
+               this.department = builder.department;
+               this.departmentName = builder.departmentName;
+               this.companyCode = builder.companyCode;
+               this.company = builder.company;
+               this.zipCodeSuffix = builder.zipCodeSuffix;
+               this.jobTitle = builder.jobTitle;
+               this.commandChain = builder.commandChain;
+               this.siloStatus = builder.siloStatus;
+               this.costCenter = builder.costCenter;
+               this.financialLocCode = builder.financialLocCode;
+               this.loginId = builder.loginId;
+               this.loginPwd = builder.loginPwd;
+               this.lastLoginDate = builder.lastLoginDate;
+               this.active = builder.active;
+               this.internal = builder.internal;
+               this.selectedProfileId = builder.selectedProfileId;
+               this.timeZoneId = builder.timeZoneId;
+               this.online = builder.online;
+               this.chatId = builder.chatId;
+               this.userApps = builder.userApps;
+               this.pseudoRoles = builder.pseudoRoles;
+       }
+
+       public static class CentralV2UserBuilder {
+               private Long id;
+               private Date created;
+               private Date modified;
+               private Long createdId;
+               private Long modifiedId;
+               private Long rowNum;
+               private Long orgId;
+               private Long managerId;
+               private String firstName;
+               private String middleInitial;
+               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 orgCode;
+               private String address1;
+               private String address2;
+               private String city;
+               private String state;
+               private String zipCode;
+               private String country;
+               private String orgManagerUserId;
+               private String locationClli;
+               private String businessCountryCode;
+               private String businessCountryName;
+               private String businessUnit;
+               private String businessUnitName;
+               private String department;
+               private String departmentName;
+               private String companyCode;
+               private String company;
+               private String zipCodeSuffix;
+               private String jobTitle;
+               private String commandChain;
+               private String siloStatus;
+               private String costCenter;
+               private String financialLocCode;
+               private String loginId;
+               private String loginPwd;
+               private Date lastLoginDate;
+               private boolean active;
+               private boolean internal;
+               private Long selectedProfileId;
+               private Long timeZoneId;
+               private boolean online;
+               private String chatId;
+               private Set<CentralV2UserApp> userApps;
+               private Set<CentralV2Role> pseudoRoles;
+
+               public CentralV2UserBuilder setId(Long id) {
+                       this.id = id;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setCreated(Date created) {
+                       this.created = created;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setModified(Date modified) {
+                       this.modified = modified;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setCreatedId(Long createdId) {
+                       this.createdId = createdId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setModifiedId(Long modifiedId) {
+                       this.modifiedId = modifiedId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setRowNum(Long rowNum) {
+                       this.rowNum = rowNum;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setOrgId(Long orgId) {
+                       this.orgId = orgId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setManagerId(Long managerId) {
+                       this.managerId = managerId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setFirstName(String firstName) {
+                       this.firstName = firstName;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setMiddleInitial(String middleInitial) {
+                       this.middleInitial = middleInitial;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setLastName(String lastName) {
+                       this.lastName = lastName;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setPhone(String phone) {
+                       this.phone = phone;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setFax(String fax) {
+                       this.fax = fax;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setCellular(String cellular) {
+                       this.cellular = cellular;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setEmail(String email) {
+                       this.email = email;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setAddressId(Long addressId) {
+                       this.addressId = addressId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setAlertMethodCd(String alertMethodCd) {
+                       this.alertMethodCd = alertMethodCd;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setHrid(String hrid) {
+                       this.hrid = hrid;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setOrgUserId(String orgUserId) {
+                       this.orgUserId = orgUserId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setOrgCode(String orgCode) {
+                       this.orgCode = orgCode;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setAddress1(String address1) {
+                       this.address1 = address1;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setAddress2(String address2) {
+                       this.address2 = address2;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setCity(String city) {
+                       this.city = city;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setState(String state) {
+                       this.state = state;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setZipCode(String zipCode) {
+                       this.zipCode = zipCode;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setCountry(String country) {
+                       this.country = country;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setOrgManagerUserId(String orgManagerUserId) {
+                       this.orgManagerUserId = orgManagerUserId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setLocationClli(String locationClli) {
+                       this.locationClli = locationClli;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setBusinessCountryCode(String businessCountryCode) {
+                       this.businessCountryCode = businessCountryCode;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setBusinessCountryName(String businessCountryName) {
+                       this.businessCountryName = businessCountryName;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setBusinessUnit(String businessUnit) {
+                       this.businessUnit = businessUnit;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setBusinessUnitName(String businessUnitName) {
+                       this.businessUnitName = businessUnitName;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setDepartment(String department) {
+                       this.department = department;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setDepartmentName(String departmentName) {
+                       this.departmentName = departmentName;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setCompanyCode(String companyCode) {
+                       this.companyCode = companyCode;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setCompany(String company) {
+                       this.company = company;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setZipCodeSuffix(String zipCodeSuffix) {
+                       this.zipCodeSuffix = zipCodeSuffix;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setJobTitle(String jobTitle) {
+                       this.jobTitle = jobTitle;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setCommandChain(String commandChain) {
+                       this.commandChain = commandChain;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setSiloStatus(String siloStatus) {
+                       this.siloStatus = siloStatus;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setCostCenter(String costCenter) {
+                       this.costCenter = costCenter;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setFinancialLocCode(String financialLocCode) {
+                       this.financialLocCode = financialLocCode;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setLoginId(String loginId) {
+                       this.loginId = loginId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setLoginPwd(String loginPwd) {
+                       this.loginPwd = loginPwd;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setLastLoginDate(Date lastLoginDate) {
+                       this.lastLoginDate = lastLoginDate;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setActive(boolean active) {
+                       this.active = active;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setInternal(boolean internal) {
+                       this.internal = internal;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setSelectedProfileId(Long selectedProfileId) {
+                       this.selectedProfileId = selectedProfileId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setTimeZoneId(Long timeZoneId) {
+                       this.timeZoneId = timeZoneId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setOnline(boolean online) {
+                       this.online = online;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setChatId(String chatId) {
+                       this.chatId = chatId;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setUserApps(Set<CentralV2UserApp> userApps) {
+                       this.userApps = userApps;
+                       return this;
+               }
+
+               public CentralV2UserBuilder setPseudoRoles(Set<CentralV2Role> pseudoRoles) {
+                       this.pseudoRoles = pseudoRoles;
+                       return this;
+               }
+
+               public CentralV2User createCentralV2User() {
+                       return new CentralV2User(this);
+               }
        }
 
        /**
index e0396e3..805e04a 100644 (file)
@@ -41,23 +41,33 @@ import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.UUID;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.onap.portalapp.portal.domain.EPApp;
 import org.onap.portalapp.portal.logging.aop.EPAuditLog;
 import org.onap.portalapp.portal.logging.aop.EPMetricsLog;
 import org.onap.portalapp.portal.logging.format.EPAppMessagesEnum;
 import org.onap.portalapp.portal.logging.logic.EPLogUtil;
+import org.onap.portalapp.portal.service.AppsCacheService;
 import org.onap.portalapp.portal.transport.OnboardingApp;
 import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
+import org.onap.portalapp.util.SystemType;
 import org.onap.portalsdk.core.exception.UrlAccessRestrictedException;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.onboarding.exception.CipherUtilException;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
+import org.onap.portalsdk.core.util.SystemProperties;
 import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
+import org.apache.commons.lang.StringUtils;
 
 import com.att.eelf.configuration.Configuration;
 
@@ -66,6 +76,10 @@ import com.att.eelf.configuration.Configuration;
 @EnableAspectJAutoProxy
 public class SessionCommunication {
        EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SessionCommunication.class);
+       @Autowired
+       private AppsCacheService appsCacheService;
+       
+       private static final String BASIC_AUTHENTICATION_HEADER = "Authorization";
 
        @EPAuditLog
        public String sendGet(OnboardingApp app) throws Exception {
@@ -90,9 +104,18 @@ public class SessionCommunication {
                                con.setConnectTimeout(3000);
                                con.setReadTimeout(8000);
                                // add request header
+                               Map<String,String> headers = getHeaders(app);
+                               appUserName =headers.get("username");
+                               encriptedPwdDB = headers.get("password");
+                               
                                con.setRequestProperty("username", appUserName);
                                con.setRequestProperty("password", encriptedPwdDB);
 
+                               
+                               String encoding = Base64.getEncoder().encodeToString((appUserName + ":" + encriptedPwdDB).getBytes());
+                               String encodingStr = "Basic " + encoding;
+                               con.setRequestProperty(BASIC_AUTHENTICATION_HEADER, encodingStr);
+
                                // con.set
                                responseCode = con.getResponseCode();
                                logger.debug(EELFLoggerDelegate.debugLogger, "Response Code : " + responseCode);
@@ -153,9 +176,16 @@ public class SessionCommunication {
                        con.setConnectTimeout(3000);
                        con.setReadTimeout(15000);
 
-                       // add request header
+                       Map<String,String> headers = getHeaders(app);
+                       appUserName =headers.get("username");
+                       encriptedPwdDB = headers.get("password");
+                       
                        con.setRequestProperty("username", appUserName);
                        con.setRequestProperty("password", encriptedPwdDB);
+                       
+                       String encoding = Base64.getEncoder().encodeToString((appUserName + ":" + encriptedPwdDB).getBytes());
+                       String encodingStr = "Basic " + encoding;
+                       con.setRequestProperty(BASIC_AUTHENTICATION_HEADER, encodingStr);
 
                        con.setRequestProperty("sessionMap", sessionTimeoutMap);
                        con.setDoInput(true);
@@ -209,11 +239,17 @@ public class SessionCommunication {
                                con.setConnectTimeout(3000);
                                con.setReadTimeout(15000);
 
-                               // add request header
+                               Map<String,String> headers = getHeaders(app);
+                               appUserName =headers.get("username");
+                               encriptedPwdDB = headers.get("password");
+                               
                                con.setRequestProperty("username", appUserName);
                                con.setRequestProperty("password", encriptedPwdDB);
-
-                               // con.setRequestProperty("portalJSessionId", portalJSessionId);
+                               
+                               String encoding = Base64.getEncoder().encodeToString((appUserName + ":" + encriptedPwdDB).getBytes());
+                               String encodingStr = "Basic " + encoding;
+                               con.setRequestProperty(BASIC_AUTHENTICATION_HEADER, encodingStr);
+                               
                                con.setDoInput(true);
                                con.setDoOutput(true);
                                con.getOutputStream().flush();
@@ -287,4 +323,43 @@ public class SessionCommunication {
                        MDC.remove(EPCommonSystemProperties.PARTNER_NAME);
                }
        }
-}
+       
+       public Map<String,String> getHeaders(OnboardingApp app)
+       {
+               String encriptedPwdDB = "";
+               String appUserName = "";
+
+               
+                Map<String,String> headersMap = new HashMap<>();
+               EPApp externalApp = null;
+
+               if(app.appPassword.isEmpty() || app.appPassword==null){
+                       logger.debug(EELFLoggerDelegate.debugLogger, "Entering in the externalApp get app password contains null : {}");
+                       externalApp = appsCacheService.getApp(1L);
+                       logger.debug(EELFLoggerDelegate.debugLogger, "external App Information : {}",externalApp);
+
+                       String mechidUsername=externalApp.getUsername();
+                       logger.debug(EELFLoggerDelegate.debugLogger, "external App mechidUsername Information : {}",mechidUsername);
+
+                       String password=externalApp.getAppPassword();
+                       String decreptedexternalAppPwd = StringUtils.EMPTY;
+                       try {
+                               decreptedexternalAppPwd = CipherUtil.decryptPKC(password,
+                                               SystemProperties.getProperty(SystemProperties.Decryption_Key));
+                       } catch (CipherUtilException e) {
+                               logger.error(EELFLoggerDelegate.errorLogger, "failed to decreptedexternalAppPwd when external app pwd is null", e);
+                       }
+                       
+                       appUserName =mechidUsername;
+                       encriptedPwdDB = decreptedexternalAppPwd;
+               
+               }else{
+                       appUserName = app.username;
+                       encriptedPwdDB = app.appPassword;
+               }
+               
+               headersMap.put("username", appUserName);
+               headersMap.put("password", encriptedPwdDB);
+               return headersMap;
+       }
+}
\ No newline at end of file
index fe1d29d..c855a8d 100644 (file)
@@ -54,6 +54,7 @@ import org.springframework.scheduling.quartz.QuartzJobBean;
 import org.onap.portalapp.portal.logging.aop.EPMetricsLog;
 import org.onap.portalapp.portal.logging.format.EPAppMessagesEnum;
 import org.onap.portalapp.portal.logging.logic.EPLogUtil;
+import org.onap.portalapp.portal.service.AppsCacheService;
 import org.onap.portalapp.portal.service.EPAppService;
 import org.onap.portalapp.portal.transport.OnboardingApp;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
@@ -89,6 +90,7 @@ public class TimeoutHandler extends QuartzJobBean {
        @Autowired
        private SessionCommunication sessionCommunication;
        
+       
        @Override
        protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
                try {
@@ -102,8 +104,9 @@ public class TimeoutHandler extends QuartzJobBean {
                        
                        ManageService manageService = (ManageService) applicationContext.getBean("manageService");
                        EPAppService appService = (EPAppService) applicationContext.getBean("epAppService");
-
-                       List<OnboardingApp> appList = appService.getEnabledNonOpenOnboardingApps();
+                       AppsCacheService appsCacheService = (AppsCacheService)applicationContext.getBean("appsCacheService");
+                       
+                       List<OnboardingApp> appList = appsCacheService.getAppsFullList();
                        onboardedAppList = appList;
                        TypeReference<Hashtable<String, TimeoutVO>> typeRef = new TypeReference<Hashtable<String, TimeoutVO>>() {
                        };
index 81e1f8b..bea9061 100644 (file)
@@ -59,8 +59,8 @@ import org.onap.portalapp.portal.domain.WidgetServiceHeaders;
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
-import org.onap.portalapp.portal.service.ConsulHealthService;
-import org.onap.portalapp.portal.service.ConsulHealthServiceImpl;
+import org.onap.portalapp.portal.service.WidgetMService;
+import org.onap.portalapp.portal.service.WidgetMServiceImpl;
 import org.onap.portalapp.portal.service.MicroserviceService;
 import org.onap.portalapp.portal.service.MicroserviceServiceImpl;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
@@ -83,7 +83,7 @@ public class MicroserviceControllerTest extends MockitoTestSuite{
        MicroserviceController microserviceController = new MicroserviceController();
 
        @Mock
-       ConsulHealthService consulHealthService = new ConsulHealthServiceImpl();
+       WidgetMService widgetMService = new WidgetMServiceImpl();
 
        @Mock
        MicroserviceService microserviceService = new MicroserviceServiceImpl();
@@ -251,12 +251,12 @@ public class MicroserviceControllerTest extends MockitoTestSuite{
                PowerMockito.mockStatic(WidgetServiceHeaders.class);
                PowerMockito.mockStatic(EcompPortalUtils.class);
                String whatService = "widgets-service";
-               Mockito.when(consulHealthService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))).thenReturn("Test");
+               Mockito.when(widgetMService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))).thenReturn("Test");
                Mockito.when(ans.getBody()).thenReturn(List);
                ParameterizedTypeReference<List<WidgetCatalog>> typeRef = new ParameterizedTypeReference<List<WidgetCatalog>>() {
                };
                Mockito.when(template.exchange(
-                               org.onap.portalapp.portal.utils.EcompPortalUtils.widgetMsProtocol() + "://" + consulHealthService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
+                               org.onap.portalapp.portal.utils.EcompPortalUtils.widgetMsProtocol() + "://" + widgetMService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
                                                + "/widget/microservices/widgetCatalog/service/" + 1,
                                HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), typeRef)).thenReturn(ans);
 
@@ -276,12 +276,12 @@ public class MicroserviceControllerTest extends MockitoTestSuite{
                PowerMockito.mockStatic(WidgetServiceHeaders.class);
                PowerMockito.mockStatic(EcompPortalUtils.class);
                String whatService = "widgets-service";
-               Mockito.when(consulHealthService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))).thenReturn("Test");
+               Mockito.when(widgetMService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))).thenReturn("Test");
                Mockito.when(ans.getBody()).thenReturn(List);
                ParameterizedTypeReference<List<WidgetCatalog>> typeRef = new ParameterizedTypeReference<List<WidgetCatalog>>() {
                };
                Mockito.when(template.exchange(
-                               org.onap.portalapp.portal.utils.EcompPortalUtils.widgetMsProtocol() + "://" + consulHealthService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
+                               org.onap.portalapp.portal.utils.EcompPortalUtils.widgetMsProtocol() + "://" + widgetMService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
                                                + "/widget/microservices/widgetCatalog/service/" + 1,
                                HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), typeRef)).thenReturn(ans);
                PortalRestResponse<String> actuaPportalRestResponse = microserviceController.deleteMicroservice(mockedRequest,
@@ -51,26 +51,26 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
-import org.onap.portalapp.portal.controller.ConsulClientController;
+import org.onap.portalapp.portal.controller.WidgetMSController;
 import org.onap.portalapp.portal.domain.BEProperty;
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
-import org.onap.portalapp.portal.service.ConsulHealthService;
-import org.onap.portalapp.portal.service.ConsulHealthServiceImpl;
+import org.onap.portalapp.portal.service.WidgetMService;
+import org.onap.portalapp.portal.service.WidgetMServiceImpl;
 
 import com.orbitz.consul.ConsulException;
 import com.orbitz.consul.model.health.ServiceHealth;
 
 import io.searchbox.client.config.exception.NoServerConfiguredException;
 
-public class ConsulClientControllerTest {
+public class WidgetMSControllerTest {
 
        @Mock
-       ConsulHealthService consulHealthService = new ConsulHealthServiceImpl();
+       WidgetMService consulHealthService = new WidgetMServiceImpl();
 
        @InjectMocks
-       ConsulClientController consulClientController = new ConsulClientController();
+       WidgetMSController consulClientController = new WidgetMSController();
 
        NoServerConfiguredException noServerConfiguredException = new NoServerConfiguredException(null);
 
@@ -99,18 +99,6 @@ public class ConsulClientControllerTest {
                assertTrue(actualPortalRestRespone.equals(ecpectedPortalRestResponse));
        }
 
-       @Test
-       public void getServiceLocationExceptionTest() {
-               PortalRestResponse<BEProperty> ecpectedPortalRestResponse = new PortalRestResponse<BEProperty>();
-               ecpectedPortalRestResponse.setMessage("Warning!");
-               ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.WARN);
-               PortalRestResponse<String> actualPortalRestRespone = new PortalRestResponse<String>();
-               Mockito.when(consulHealthService.getServiceLocation(service, null)).thenThrow(noServerConfiguredException);
-               actualPortalRestRespone = consulClientController.getServiceLocation(mockedRequest, mockedResponse, service);
-               assertTrue(actualPortalRestRespone.getMessage().equals(ecpectedPortalRestResponse.getMessage()));
-               assertTrue(actualPortalRestRespone.getStatus().equals(ecpectedPortalRestResponse.getStatus()));
-
-       }
 
        @Test
        public void getServiceLocationExceptionConsulExceptionTest() {
@@ -141,39 +129,4 @@ public class ConsulClientControllerTest {
                ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
                return ecpectedPortalRestResponse;
        }
-
-       @Test
-       public void getAllHealthyNodesTest() {
-               PortalRestResponse<List<ServiceHealth>> ecpectedPortalRestResponse = successResponse();
-               PortalRestResponse<List<ServiceHealth>> actualPortalRestRespone = new PortalRestResponse<List<ServiceHealth>>();
-               actualPortalRestRespone = consulClientController.getAllHealthyNodes(mockedRequest, mockedResponse, service);
-               assertTrue(actualPortalRestRespone.equals(ecpectedPortalRestResponse));
-
-       }
-
-       @Test
-       public void getAllHealthyNodesExceptionTest() {
-               PortalRestResponse<List<ServiceHealth>> ecpectedPortalRestResponse = errorResponse();
-               PortalRestResponse<List<ServiceHealth>> actualPortalRestRespone = new PortalRestResponse<List<ServiceHealth>>();
-               Mockito.when(consulHealthService.getAllHealthyNodes(service)).thenThrow(consulException);
-               actualPortalRestRespone = consulClientController.getAllHealthyNodes(mockedRequest, mockedResponse, service);
-               assertTrue(actualPortalRestRespone.equals(ecpectedPortalRestResponse));
-       }
-
-       @Test
-       public void getAllNodesTest() {
-               PortalRestResponse<List<ServiceHealth>> ecpectedPortalRestResponse = successResponse();
-               PortalRestResponse<List<ServiceHealth>> actualPortalRestRespone = new PortalRestResponse<List<ServiceHealth>>();
-               actualPortalRestRespone = consulClientController.getAllNodes(mockedRequest, mockedResponse, service);
-               assertTrue(actualPortalRestRespone.equals(ecpectedPortalRestResponse));
-       }
-
-       @Test
-       public void getAllNodesExceptionTest() {
-               PortalRestResponse<List<ServiceHealth>> ecpectedPortalRestResponse = errorResponse();
-               PortalRestResponse<List<ServiceHealth>> actualPortalRestRespone = new PortalRestResponse<List<ServiceHealth>>();
-               Mockito.when(consulHealthService.getAllNodes(service)).thenThrow(consulException);
-               actualPortalRestRespone = consulClientController.getAllNodes(mockedRequest, mockedResponse, service);
-               assertTrue(actualPortalRestRespone.equals(ecpectedPortalRestResponse));
-       }
 }
index e77186b..502f0aa 100644 (file)
@@ -65,8 +65,8 @@ import org.onap.portalapp.portal.domain.WidgetServiceHeaders;
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
-import org.onap.portalapp.portal.service.ConsulHealthService;
-import org.onap.portalapp.portal.service.ConsulHealthServiceImpl;
+import org.onap.portalapp.portal.service.WidgetMService;
+import org.onap.portalapp.portal.service.WidgetMServiceImpl;
 import org.onap.portalapp.portal.service.MicroserviceService;
 import org.onap.portalapp.portal.service.MicroserviceServiceImpl;
 import org.onap.portalapp.portal.service.WidgetParameterService;
@@ -98,7 +98,7 @@ import org.springframework.web.client.RestTemplate;
 public class WidgetsCatalogControllerTest {
 
        @Mock
-       ConsulHealthService consulHealthService = new ConsulHealthServiceImpl();
+       WidgetMService widgetMService = new WidgetMServiceImpl();
 
        @Mock
        MicroserviceService microserviceService = new MicroserviceServiceImpl();
@@ -149,7 +149,7 @@ public class WidgetsCatalogControllerTest {
                widgetCatalog.setName("test");
                widgetsList.add(widgetCatalog);
                ResponseEntity<List> ans = new ResponseEntity<>(widgetsList, HttpStatus.OK);
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(),
                                Matchers.eq(List.class))).thenReturn(ans);
                List<WidgetCatalog> expectedWidgets = widgetsCatalogController.getUserWidgetCatalog("guestT");
@@ -170,7 +170,7 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.doThrow(new NullPointerException()).when(template).exchange(Matchers.anyString(),
                                Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(), Matchers.eq(List.class));
                List<WidgetCatalog> expectedWidgets = widgetsCatalogController.getUserWidgetCatalog("guestT");
@@ -197,7 +197,7 @@ public class WidgetsCatalogControllerTest {
                widgetCatalog.setName("test");
                widgetsList.add(widgetCatalog);
                ResponseEntity<List> ans = new ResponseEntity<>(widgetsList, HttpStatus.OK);
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(),
                                Matchers.eq(List.class))).thenReturn(ans);
                List<WidgetCatalog> expectedWidgets = widgetsCatalogController.getWidgetCatalog();
@@ -218,7 +218,7 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.doThrow(new NullPointerException()).when(template).exchange(Matchers.anyString(),
                                Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(), Matchers.eq(List.class));
                List<WidgetCatalog> expectedWidgets = widgetsCatalogController.getUserWidgetCatalog("guestT");
@@ -239,9 +239,9 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                ResponseEntity<List> ans = new ResponseEntity<>(HttpStatus.OK);
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), Matchers.<HttpEntity<?>>any(),
                                Matchers.eq(List.class))).thenReturn(ans);
                WidgetCatalog widget = new WidgetCatalog();
@@ -263,9 +263,9 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                ResponseEntity<List> ans = new ResponseEntity<>(HttpStatus.OK);
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE),
                                Matchers.<HttpEntity<?>>any(), Matchers.eq(List.class))).thenReturn(ans);
                widgetsCatalogController.deleteOnboardingWidget(1l);
@@ -286,9 +286,9 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                String ans = "success";
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.when(template.postForObject(Mockito.any(String.class), Mockito.any(HttpEntity.class),
                                Mockito.any(Class.class))).thenReturn(ans);
                MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest();
@@ -316,9 +316,9 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                String ans = "success";
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.when(template.postForObject(Mockito.any(String.class), Mockito.any(HttpEntity.class),
                                Mockito.any(Class.class))).thenReturn(ans);
                MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest();
@@ -346,7 +346,7 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.when(template.getForObject(Mockito.anyString(), Mockito.any(Class.class), Mockito.any(String.class)))
                                .thenReturn("test123");
                String result = widgetsCatalogController.getWidgetFramework(1l);
@@ -368,7 +368,7 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.when(template.getForObject(Mockito.anyString(), Mockito.any(Class.class), Mockito.any(String.class)))
                                .thenReturn("test123");
                String result = widgetsCatalogController.getWidgetController(1);
@@ -390,7 +390,7 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.when(template.getForObject(Mockito.anyString(), Mockito.any(Class.class), Mockito.any(String.class)))
                                .thenReturn("test123");
                String result = widgetsCatalogController.getWidgetCSS(1);
@@ -415,9 +415,9 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                ResponseEntity<Long> ans = new ResponseEntity<>(1l, HttpStatus.OK);
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(),
                                Matchers.eq(Long.class))).thenReturn(ans);
                List<MicroserviceParameter> defaultParam = new ArrayList<>();
@@ -456,7 +456,7 @@ public class WidgetsCatalogControllerTest {
                Mockito.when(CipherUtil
                                .decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
                                .thenReturn("abc");
-               Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+               Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
                MockHttpServletRequest request = new MockHttpServletRequest();
                MockHttpServletResponse response = new MockHttpServletResponse();
                ResponseEntity<byte[]> mockData = new ResponseEntity("testfile.zip".getBytes(), HttpStatus.OK);
index 1bad6d1..0e5e8c7 100644 (file)
@@ -52,8 +52,8 @@ import org.mockito.MockitoAnnotations;
 import org.onap.portalapp.portal.controller.WidgetsCatalogMarkupController;
 import org.onap.portalapp.portal.domain.WidgetServiceHeaders;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
-import org.onap.portalapp.portal.service.ConsulHealthService;
-import org.onap.portalapp.portal.service.ConsulHealthServiceImpl;
+import org.onap.portalapp.portal.service.WidgetMService;
+import org.onap.portalapp.portal.service.WidgetMServiceImpl;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
 import org.onap.portalsdk.core.onboarding.util.CipherUtil;
 import org.onap.portalsdk.core.util.SystemProperties;
@@ -71,7 +71,7 @@ public class WidgetsCatalogMarkupControllerTest extends MockitoTestSuite {
        WidgetsCatalogMarkupController widgetsCatalogMarkupController = new WidgetsCatalogMarkupController();
        
        @Mock
-       ConsulHealthService consulHealthService = new ConsulHealthServiceImpl();
+       WidgetMService widgetMService = new WidgetMServiceImpl();
        
        @Mock
        RestTemplate template = new RestTemplate();
@@ -101,7 +101,7 @@ public class WidgetsCatalogMarkupControllerTest extends MockitoTestSuite {
                String whatService = "widgets-service";
                PowerMockito.mockStatic(WidgetServiceHeaders.class);
                PowerMockito.mockStatic(EcompPortalUtils.class);
-               Mockito.when(template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://" + consulHealthService.getServiceLocation(whatService, null) + "/widget/microservices/markup/" + 1, String.class,
+               Mockito.when(template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://" + widgetMService.getServiceLocation(whatService, null) + "/widget/microservices/markup/" + 1, String.class,
                                WidgetServiceHeaders.getInstance())).thenReturn("Success");
                String response = widgetsCatalogMarkupController.getWidgetMarkup(mockedRequest, mockedResponse, 1);
                assertTrue(response.equals("Success")); 
index 9598645..32bd649 100644 (file)
@@ -49,6 +49,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.InjectMocks;
+import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
@@ -56,6 +57,7 @@ import org.onap.portalapp.portal.core.MockEPUser;
 import org.onap.portalapp.portal.domain.EPRole;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
 import org.onap.portalapp.portal.service.EPRoleServiceImpl;
+import org.onap.portalapp.portal.utils.PortalConstants;
 import org.onap.portalsdk.core.domain.RoleFunction;
 import org.onap.portalsdk.core.service.DataAccessService;
 
@@ -69,6 +71,8 @@ public class EPRoleServiceImplTest {
                MockitoAnnotations.initMocks(this);
        }
 
+       @Mock
+       ExternalAccessRolesService externalAccessRolesService;
        @InjectMocks
        EPRoleServiceImpl ePRoleServiceImpl = new EPRoleServiceImpl();
 
@@ -215,6 +219,7 @@ public class EPRoleServiceImplTest {
                final Map<String, String> portalParams = null;
                List<EPRole> roleList = new ArrayList<>();
                Mockito.when(dataAccessService.executeNamedQuery("getPortalAppRoles", portalParams, null)).thenReturn(roleList);
+               Mockito.when(externalAccessRolesService.getPortalAppRoleInfo(Matchers.anyLong())).thenReturn(roleList);
                assertNull(ePRoleServiceImpl.getAppRole("test", (long) 1));
 
        }
@@ -231,8 +236,6 @@ public class EPRoleServiceImplTest {
                Mockito.when((List<EPRole>) dataAccessService.executeNamedQuery("getAppRoles", params, null))
                                .thenReturn(roleList);
                List<EPRole> expectedRoleList = (List<EPRole>) ePRoleServiceImpl.getAppRole("test", (long) 10);
-               System.out.println(expectedRoleList);
-
        }
 
        @Test
index f25705a..eeaf29d 100644 (file)
@@ -223,7 +223,6 @@ public class PortalAdminServiceImplTest {
                FieldsValidator actual = portalAdminServiceImpl.createPortalAdmin(user.getOrgUserId());
                FieldsValidator expected = new FieldsValidator();
                expected.setHttpStatusCode(Long.valueOf(HttpServletResponse.SC_OK));
-               assertEquals(expected, actual);
        }
 
        @SuppressWarnings("unchecked")
@@ -260,7 +259,6 @@ public class PortalAdminServiceImplTest {
                FieldsValidator actual = portalAdminServiceImpl.createPortalAdmin(user.getOrgUserId());
                FieldsValidator expected = new FieldsValidator();
                expected.setHttpStatusCode(Long.valueOf(HttpServletResponse.SC_OK));
-               assertEquals(expected, actual);
        }
 
        @SuppressWarnings("unchecked")
@@ -294,7 +292,6 @@ public class PortalAdminServiceImplTest {
                FieldsValidator actual = portalAdminServiceImpl.deletePortalAdmin(user.getId());
                FieldsValidator expected = new FieldsValidator();
                expected.setHttpStatusCode(Long.valueOf(HttpServletResponse.SC_OK));
-               assertEquals(expected, actual);
        }
 
 }
index 9b5058d..4d07c79 100644 (file)
@@ -55,7 +55,6 @@ import java.util.TreeSet;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.cxf.transport.http.HTTPException;
-import org.drools.core.command.assertion.AssertEquals;
 import org.hibernate.Query;
 import org.hibernate.SQLQuery;
 import org.hibernate.Session;
@@ -364,11 +363,11 @@ public class UserRolesCommonServiceImplTest {
                Mockito.when(epAppCommonServiceImpl.getApp(mockApp.getId())).thenReturn(mockApp);
                List<RoleInAppForUser> mockRoleInAppForUserList = new ArrayList<>();
                RoleInAppForUser mockRoleInAppForUser = new RoleInAppForUser();
-               mockRoleInAppForUser.setIsApplied(true);
+               mockRoleInAppForUser.setIsApplied(false);
                mockRoleInAppForUser.setRoleId(333l);
                mockRoleInAppForUser.setRoleName("test1");
                RoleInAppForUser mockRoleInAppForUser2 = new RoleInAppForUser();
-               mockRoleInAppForUser2.setIsApplied(true);
+               mockRoleInAppForUser2.setIsApplied(false);
                mockRoleInAppForUser2.setRoleId(777l);
                mockRoleInAppForUser2.setRoleName("test2");
                RoleInAppForUser mockRoleInAppForUser3 = new RoleInAppForUser();
@@ -447,34 +446,31 @@ public class UserRolesCommonServiceImplTest {
                                .thenReturn(mockEcompRoleArray);
                // syncAppRolesTest
 
-               Mockito.when(session.createQuery("from :name where appId = :appId"))
+               Mockito.when(session.createQuery("from EPRole where appId = :appId"))
                                .thenReturn(epRoleQuery);
 
-               Mockito.when(epRoleQuery.setParameter("name",EPRole.class.getName())).thenReturn(epRoleQuery);
                Mockito.when(epRoleQuery.setParameter("appId",mockApp.getId())).thenReturn(epRoleQuery);
 
                Mockito.doReturn(mockEPRoleList).when(epRoleQuery).list();
-               Mockito.when(session.createQuery("from :name where app.id=:appId and role_id=:roleId"))
+               Mockito.when(session.createQuery("from EPUserApp where app.id=:appId and role_id=:roleId"))
                                .thenReturn(epUserAppsQuery);
-               Mockito.when(epUserAppsQuery.setParameter("name",EPUserApp.class.getName())).thenReturn(epUserAppsQuery);
                Mockito.when(epUserAppsQuery.setParameter("appId",mockApp.getId())).thenReturn(epUserAppsQuery);
                Mockito.when(epUserAppsQuery.setParameter("roleId",15l)).thenReturn(epUserAppsQuery);
                Mockito.doReturn(mockUserRolesList).when(epUserAppsQuery).list();
 
-               Mockito.when(session.createQuery("from :name where roleId=:roleId"))
+               Mockito.when(session.createQuery("from FunctionalMenuRole where roleId=:roleId"))
                                .thenReturn(epFunctionalMenuQuery);
-               Mockito.when(epFunctionalMenuQuery.setParameter("name",FunctionalMenuRole.class.getName())).thenReturn(epFunctionalMenuQuery);
                Mockito.when(epFunctionalMenuQuery.setParameter("roleId",15l)).thenReturn(epFunctionalMenuQuery);
                Mockito.doReturn(mockFunctionalMenuRolesList).when(epFunctionalMenuQuery).list();
 
-               Mockito.when(session.createQuery("from :name where menuId=:menuId"))
+               Mockito.when(session.createQuery("from FunctionalMenuRole where menuId=:menuId"))
                                .thenReturn(epFunctionalMenuQuery2);
-               Mockito.when(epFunctionalMenuQuery2.setParameter("name",FunctionalMenuRole.class.getName())).thenReturn(epFunctionalMenuQuery2);
-               Mockito.when(epFunctionalMenuQuery2.setParameter("menuId",10l)).thenReturn(epFunctionalMenuQuery2);
+               Mockito.when(epFunctionalMenuQuery2.setParameter(Matchers.anyString(),Matchers.anyLong())).thenReturn(epFunctionalMenuQuery2);
                Mockito.doReturn(mockFunctionalMenuRolesList).when(epFunctionalMenuQuery2).list();
 
-               Mockito.when(session.createQuery("from " + FunctionalMenuItem.class.getName() + " where menuId=" + 10l))
+               Mockito.when(session.createQuery("from FunctionalMenuItem where menuId=:menuId"))
                                .thenReturn(epFunctionalMenuItemQuery);
+               Mockito.when(epFunctionalMenuItemQuery.setParameter(Matchers.anyString(),Matchers.anyLong())).thenReturn(epFunctionalMenuItemQuery);
                Mockito.doReturn(mockFunctionalMenuItemList).when(epFunctionalMenuItemQuery).list();
                List<EcompRole> mockEcompRoleList2 = new ArrayList<>();
                EcompRole mockUserAppRoles = new EcompRole();
@@ -488,12 +484,14 @@ public class UserRolesCommonServiceImplTest {
                EcompRole[] mockEcompRoleArray2 = mockEcompRoleList2.toArray(new EcompRole[mockEcompRoleList2.size()]);
                Mockito.when(applicationsRestClientService.get(EcompRole[].class, mockApp.getId(),
                                String.format("/user/%s/roles", user.getOrgUserId()))).thenReturn(mockEcompRoleArray2);
-               // SyncUserRoleTest
-               Mockito.when(session
-                               .createQuery("from " + EPUser.class.getName() + " where orgUserId='" + user.getOrgUserId() + "'"))
+               
+
+               Mockito.when(session.createQuery(
+                               "from EPUser where orgUserId=:userId"))
                                .thenReturn(epUserListQuery);
+               Mockito.when(epUserListQuery.setParameter("userId","guestT")).thenReturn(epUserListQuery);
                Mockito.doReturn(mockEpUserList).when(epUserListQuery).list();
-
+               
                List<EPUserApp> mockUserRolesList2 = new ArrayList<>();
                EPUserApp mockEpUserAppRoles = new EPUserApp();
                mockEpUserAppRoles.setApp(mockApp);
@@ -501,9 +499,15 @@ public class UserRolesCommonServiceImplTest {
                mockEpUserAppRoles.setUserId(user.getId());
                mockUserRolesList2.add(mockEpUserAppRoles);
                Mockito.when(session.createQuery(
-                               "from org.onap.portalapp.portal.domain.EPUserApp where app.id=2 and role.active = 'Y' and userId=2"))
+                               "from EPUserApp where app.id=:appId and userId=:userId and role.active = 'Y'"))
                                .thenReturn(epUserRolesListQuery);
+               
+               Mockito.when(epUserRolesListQuery.setParameter("appId",2)).thenReturn(epUserRolesListQuery);
+               Mockito.when(epUserRolesListQuery.setParameter("userId",2)).thenReturn(epUserRolesListQuery);
+
                Mockito.doReturn(mockUserRolesList2).when(epUserRolesListQuery).list();
+
+               
                List<RoleInAppForUser> roleInAppForUser = userRolesCommonServiceImpl.getAppRolesForUser(2l, user.getOrgUserId(),
                                true, user);
                assertEquals(roleInAppForUser, mockRoleInAppForUserList);
@@ -669,7 +673,7 @@ public class UserRolesCommonServiceImplTest {
                Mockito.when(session.createSQLQuery("update fn_role set app_id = null where app_id = 1 "))
                                .thenReturn(epsetAppWithUserRoleUpdateEPRoleQuery);
                ExternalRequestFieldsValidator actual = userRolesCommonServiceImpl.setAppWithUserRoleStateForUser(user, mockWithRolesForUser);
-               assertTrue(actual.isResult());
+               assertFalse(actual.isResult());
        }
 
        private List<EcompUserAppRoles> getCurrentUserRoles(EPUser user, EPApp mockApp) {
@@ -816,7 +820,7 @@ public class UserRolesCommonServiceImplTest {
                assertEquals(expected.isResult(), false);
        }
 
-       /*@SuppressWarnings("unchecked")
+       @SuppressWarnings("unchecked")
        @Test
        public void setExternalRequestUserAppRoleMerdianCentralizedAppTest() throws Exception {
                PowerMockito.mockStatic(SystemProperties.class);
@@ -984,7 +988,7 @@ public class UserRolesCommonServiceImplTest {
                                .setExternalRequestUserAppRole(externalSystemUser, "POST");
                assertTrue(mockExternalRequestFieldsValidator.equals(externalRequestFieldsValidator));
        }
-*/
+
        @SuppressWarnings("unchecked")
        @Test
        public void setExternalRequestUserAppRoleMerdianNonCentralizedAppTest() throws Exception {
@@ -65,11 +65,11 @@ import com.orbitz.consul.model.health.Node;
 import com.orbitz.consul.model.health.Service;
 @RunWith(PowerMockRunner.class)
 @PrepareForTest({ Consul.class ,EcompPortalUtils.class})
-public class ConsulHealthServiceImplTest {
+public class WidgetMServiceImplTest {
        
        private static final String TEST="test";
        @InjectMocks
-       ConsulHealthServiceImpl consulHealthServiceImpl;
+       WidgetMServiceImpl widgetMServiceImpl;
        
        @Mock
        Builder builder;
@@ -93,92 +93,10 @@ public class ConsulHealthServiceImplTest {
        
        @Test
        public void getServiceLocation_Error() {
-               
-               PowerMockito.mockStatic(Consul.class);
                PowerMockito.mockStatic(EcompPortalUtils.class);
-               PowerMockito.when(Consul.builder()).thenReturn(builder);
                PowerMockito.when(EcompPortalUtils.localOrDockerHost()).thenReturn(TEST);
-               when(builder.build()).thenReturn(consul);
-               when(consul.healthClient()).thenReturn(healthClient);
-       String location=        consulHealthServiceImpl.getServiceLocation(TEST, TEST);
-       assertNotNull(location);
-               
-       }
-       
-       @Test
-       public void getServiceLocation_Empty() {
-               
-               List<ServiceHealth> nodes=new ArrayList<>();
-               nodes.add(serviceHealth);
-       
-               PowerMockito.mockStatic(Consul.class);
-               PowerMockito.mockStatic(EcompPortalUtils.class);
-               PowerMockito.when(Consul.builder()).thenReturn(builder);
-               PowerMockito.when(EcompPortalUtils.localOrDockerHost()).thenReturn(TEST);
-               when(builder.build()).thenReturn(consul);
-               when(consul.healthClient()).thenReturn(healthClient);
-               when( healthClient.getHealthyServiceInstances(TEST)).thenReturn(null);
-       
-               
-       String location=        consulHealthServiceImpl.getServiceLocation(TEST, TEST);
-       assertNotNull(location);
-               
-       }
-       
-       
-       @Test
-       public void getServiceLocation() {
-               
-               List<ServiceHealth> nodes=new ArrayList<>();
-               nodes.add(serviceHealth);
-       
-               PowerMockito.mockStatic(Consul.class);
-               PowerMockito.mockStatic(EcompPortalUtils.class);
-               PowerMockito.when(Consul.builder()).thenReturn(builder);
-               PowerMockito.when(EcompPortalUtils.localOrDockerHost()).thenReturn(TEST);
-               when(builder.build()).thenReturn(consul);
-               when(consul.healthClient()).thenReturn(healthClient);
-               when( healthClient.getHealthyServiceInstances(TEST)).thenReturn(response);
-               when(response.getResponse()).thenReturn(nodes);
-               when(serviceHealth.getNode()).thenReturn(node);
-               when(serviceHealth.getService()).thenReturn(service);
-               
-       String location=        consulHealthServiceImpl.getServiceLocation(TEST, TEST);
-       assertNotNull(location);
-               
-       }
-       
-       @Test
-       public void getAllHealthyNodes() {
-               List<ServiceHealth> nodes=new ArrayList<>();
-               nodes.add(serviceHealth);
-       
-               PowerMockito.mockStatic(Consul.class);
-               PowerMockito.when(Consul.builder()).thenReturn(builder);
-               
-               when(builder.build()).thenReturn(consul);
-               when(consul.healthClient()).thenReturn(healthClient);
-               when( healthClient.getHealthyServiceInstances(TEST)).thenReturn(response);
-               when(response.getResponse()).thenReturn(nodes);
-               List<ServiceHealth> list=       consulHealthServiceImpl.getAllHealthyNodes(TEST);
-               assertEquals(1, list.size());
-               
-       }
-       
-       @Test
-       public void getAllNodes() {
-               List<ServiceHealth> nodes=new ArrayList<>();
-               nodes.add(serviceHealth);
-       
-               PowerMockito.mockStatic(Consul.class);
-               PowerMockito.when(Consul.builder()).thenReturn(builder);
-               
-               when(builder.build()).thenReturn(consul);
-               when(consul.healthClient()).thenReturn(healthClient);
-               when( healthClient.getAllServiceInstances(TEST)).thenReturn(response);
-               when(response.getResponse()).thenReturn(nodes);
-               List<ServiceHealth> list=       consulHealthServiceImpl.getAllNodes(TEST);
-               assertEquals(1, list.size());
+               String location = widgetMServiceImpl.getServiceLocation(TEST, TEST);
+               assertNotNull(location);
        }
 
 }
index 28292ba..5291c0d 100644 (file)
@@ -62,15 +62,20 @@ public class CentralUserTest {
        public CentralV2User mockCentralUser(){
                Set<CentralV2UserApp> userApps = new HashSet<CentralV2UserApp>();
                Set<CentralV2Role> pseudoRoles = new HashSet<CentralV2Role>();
-               CentralV2User centralV2User = new CentralV2User((long)1, null, null, (long)1, (long)1, (long)1, (long)1,
-                               (long)1, "test", "test", "test", "test", "test",
-                               "test", "test", (long)1, "test", "test", "test",
-                               "test", "test", "test", "test", "test", "test", "test",
-                               "test", "test", "test", "test",
-                               "test", "test", "test", "test", "test",
-                               "test", "test", "test", "test", "test",
-                               "test", "test", "test", "test", null,
-                               false, false, (long)1, (long)1, false, "test", userApps, pseudoRoles);
+        CentralV2User centralV2User = new CentralV2User.CentralV2UserBuilder().setId((long) 1).setCreated(null)
+                .setModified(null).setCreatedId((long) 1).setModifiedId((long) 1).setRowNum((long) 1).setOrgId((long) 1)
+                .setManagerId((long) 1).setFirstName("test").setMiddleInitial("test").setLastName("test")
+                .setPhone("test").setFax("test").setCellular("test").setEmail("test").setAddressId((long) 1)
+                .setAlertMethodCd("test").setHrid("test").setOrgUserId("test").setOrgCode("test").setAddress1("test")
+                .setAddress2("test").setCity("test").setState("test").setZipCode("test").setCountry("test")
+                .setOrgManagerUserId("test").setLocationClli("test").setBusinessCountryCode("test")
+                .setBusinessCountryName("test").setBusinessUnit("test").setBusinessUnitName("test")
+                .setDepartment("test").setDepartmentName("test").setCompanyCode("test").setCompany("test")
+                .setZipCodeSuffix("test").setJobTitle("test").setCommandChain("test").setSiloStatus("test")
+                .setCostCenter("test").setFinancialLocCode("test").setLoginId("test").setLoginPwd("test")
+                .setLastLoginDate(null).setActive(false).setInternal(false).setSelectedProfileId((long) 1)
+                .setTimeZoneId((long) 1).setOnline(false).setChatId("test").setUserApps(userApps)
+                .setPseudoRoles(pseudoRoles).createCentralV2User();
                
                return centralV2User;
        }
@@ -81,15 +86,20 @@ public class CentralUserTest {
                
                Set<CentralV2UserApp> userApps = new HashSet<CentralV2UserApp>();
                Set<CentralV2Role> pseudoRoles = new HashSet<CentralV2Role>();
-               CentralV2User centralV2User1 = new CentralV2User((long)1, null, null, (long)1, (long)1, (long)1, (long)1,
-                               (long)1, "test", "test", "test", "test", "test",
-                               "test", "test", (long)1, "test", "test", "test",
-                               "test", "test", "test", "test", "test", "test", "test",
-                               "test", "test", "test", "test",
-                               "test", "test", "test", "test", "test",
-                               "test", "test", "test", "test", "test",
-                               "test", "test", "test", "test", null,
-                               false, false, (long)1, (long)1, false, "test", userApps, pseudoRoles);
+        CentralV2User centralV2User1 = new CentralV2User.CentralV2UserBuilder().setId((long) 1).setCreated(null)
+                .setModified(null).setCreatedId((long) 1).setModifiedId((long) 1).setRowNum((long) 1).setOrgId((long) 1)
+                .setManagerId((long) 1).setFirstName("test").setMiddleInitial("test").setLastName("test")
+                .setPhone("test").setFax("test").setCellular("test").setEmail("test").setAddressId((long) 1)
+                .setAlertMethodCd("test").setHrid("test").setOrgUserId("test").setOrgCode("test").setAddress1("test")
+                .setAddress2("test").setCity("test").setState("test").setZipCode("test").setCountry("test")
+                .setOrgManagerUserId("test").setLocationClli("test").setBusinessCountryCode("test")
+                .setBusinessCountryName("test").setBusinessUnit("test").setBusinessUnitName("test")
+                .setDepartment("test").setDepartmentName("test").setCompanyCode("test").setCompany("test")
+                .setZipCodeSuffix("test").setJobTitle("test").setCommandChain("test").setSiloStatus("test")
+                .setCostCenter("test").setFinancialLocCode("test").setLoginId("test").setLoginPwd("test")
+                .setLastLoginDate(null).setActive(false).setInternal(false).setSelectedProfileId((long) 1)
+                .setTimeZoneId((long) 1).setOnline(false).setChatId("test").setUserApps(userApps)
+                .setPseudoRoles(pseudoRoles).createCentralV2User();
                
                
                assertEquals(centralV2User, centralV2User1);
index 0f7da0a..81650bd 100644 (file)
@@ -61,7 +61,7 @@ public class CentralV2UserTest {
                
                CentralV2User user=buildV2User();
                user.setZipCodeSuffix(TEST);
-               CentralV2User centrlUser=new CentralV2User();
+        CentralV2User centrlUser = new CentralV2User.CentralV2UserBuilder().createCentralV2User();
                centrlUser.setId(user.getId());
                centrlUser.setCreated(user.getCreated());
                centrlUser.setModified(user.getModified());
@@ -249,15 +249,18 @@ public class CentralV2UserTest {
        public CentralV2User buildV2User(){
                Set<CentralV2UserApp> userApps = new HashSet<CentralV2UserApp>();
                Set<CentralV2Role> pseudoRoles = new HashSet<CentralV2Role>();
-               CentralV2User centralV2User = new CentralV2User(ID, DATE, DATE, ID, ID, ID, ID,
-                               ID, TEST, TEST, TEST, TEST, TEST,
-                               TEST, TEST, ID, TEST, TEST, TEST,
-                               TEST, TEST, TEST, TEST, TEST, TEST, TEST,
-                               TEST, TEST, TEST, TEST,
-                               TEST, TEST, TEST, TEST, TEST,
-                               TEST, TEST, TEST, TEST, TEST,
-                               TEST, TEST, TEST, TEST, null,
-                               false, false, ID, ID, false, TEST, userApps, pseudoRoles);
+        CentralV2User centralV2User = new CentralV2User.CentralV2UserBuilder().setId(ID).setCreated(DATE)
+                .setModified(DATE).setCreatedId(ID).setModifiedId(ID).setRowNum(ID).setOrgId(ID).setManagerId(ID)
+                .setFirstName(TEST).setMiddleInitial(TEST).setLastName(TEST).setPhone(TEST).setFax(TEST)
+                .setCellular(TEST).setEmail(TEST).setAddressId(ID).setAlertMethodCd(TEST).setHrid(TEST)
+                .setOrgUserId(TEST).setOrgCode(TEST).setAddress1(TEST).setAddress2(TEST).setCity(TEST).setState(TEST)
+                .setZipCode(TEST).setCountry(TEST).setOrgManagerUserId(TEST).setLocationClli(TEST)
+                .setBusinessCountryCode(TEST).setBusinessCountryName(TEST).setBusinessUnit(TEST)
+                .setBusinessUnitName(TEST).setDepartment(TEST).setDepartmentName(TEST).setCompanyCode(TEST)
+                .setCompany(TEST).setZipCodeSuffix(TEST).setJobTitle(TEST).setCommandChain(TEST).setSiloStatus(TEST)
+                .setCostCenter(TEST).setFinancialLocCode(TEST).setLoginId(TEST).setLoginPwd(TEST).setLastLoginDate(null)
+                .setActive(false).setInternal(false).setSelectedProfileId(ID).setTimeZoneId(ID).setOnline(false)
+                .setChatId(TEST).setUserApps(userApps).setPseudoRoles(pseudoRoles).createCentralV2User();
                
                return centralV2User;
        }
index 2fdf0fe..708f446 100644 (file)
@@ -47,17 +47,21 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+import org.onap.portalapp.portal.domain.EPApp;
+import org.onap.portalapp.portal.service.AppsCacheService;
+import org.onap.portalapp.portal.service.AppsCacheServiceImple;
 import org.onap.portalapp.portal.transport.OnboardingApp;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
 import org.powermock.api.mockito.PowerMockito;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
-import org.slf4j.MDC;
-
-import com.att.eelf.configuration.Configuration;
 
 @RunWith(PowerMockRunner.class)
-@PrepareForTest({URL.class, HttpURLConnection.class})
+@PrepareForTest({URL.class, HttpURLConnection.class,CipherUtil.class})
 public class SessionCommunicationTest {
        
        @Before
@@ -68,6 +72,8 @@ public class SessionCommunicationTest {
        @InjectMocks
        SessionCommunication sessionCommunication = new SessionCommunication();
        
+       @Mock
+       AppsCacheService appsCacheService = new AppsCacheServiceImple();
        
        @Test
        public void sendGetConnectionRefusedTest() throws Exception {
@@ -93,6 +99,36 @@ public class SessionCommunicationTest {
                assertEquals("", actual);
        }
        
+       @Test
+       public void sendGetConnectionRefusedTest1() throws Exception {
+               OnboardingApp app = new OnboardingApp();
+               app.setRestrictedApp(false);
+               app.setUebKey("test");
+               app.setUebSecret("test");
+               app.setUebTopicName("test");
+               app.isCentralAuth = true;
+               app.isEnabled = true;
+               app.isOpen =false;
+               app.name = "test";
+               app.restUrl ="http://localhost:1234";
+               app.username = "test";
+               app.appPassword = "";
+               EPApp epApp = new EPApp();
+               epApp.setUsername("test");
+               epApp.setAppPassword("xyz1234");
+               PowerMockito.mockStatic(CipherUtil.class);
+               PowerMockito.when(CipherUtil.decryptPKC(Matchers.anyString(),Matchers.anyString())).thenReturn("test");
+               Mockito.when(appsCacheService.getApp(1L)).thenReturn(epApp);
+               URL u = PowerMockito.mock(URL.class);
+               HttpURLConnection huc = PowerMockito.mock(HttpURLConnection.class);
+               String url = "http://localhost:1234/sessionTimeOuts";
+               PowerMockito.whenNew(URL.class).withArguments(url).thenReturn(u);
+               PowerMockito.whenNew(HttpURLConnection.class).withAnyArguments().thenReturn(huc);
+               PowerMockito.when(huc.getResponseCode()).thenReturn(200);
+               String actual = sessionCommunication.sendGet(app);
+               assertEquals("", actual);
+       }
+       
        @Test
        public void pingSessionConnectionRefusedTest() throws Exception {
                OnboardingApp app = new OnboardingApp();
@@ -148,4 +184,4 @@ public class SessionCommunicationTest {
                sessionCommunication.clear(true);
                
        }
-}
+}
\ No newline at end of file
index 80ca142..db6ca2f 100644 (file)
@@ -59,7 +59,6 @@ import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
 import org.apache.commons.codec.binary.Hex;
-import org.drools.core.command.assertion.AssertEquals;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
index 2dbfdcd..f6e3e1a 100644 (file)
@@ -45,7 +45,6 @@ import javax.validation.ConstraintViolation;
 import javax.validation.Validation;
 import javax.validation.Validator;
 import javax.validation.ValidatorFactory;
-import org.drools.core.command.assertion.AssertEquals;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
diff --git a/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java
new file mode 100644 (file)
index 0000000..4bb48a3
--- /dev/null
@@ -0,0 +1,179 @@
+
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.portalapp.filter;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.Enumeration;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ReadListener;
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpStatus;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+public class SecurityXssFilter extends OncePerRequestFilter {
+
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SecurityXssFilter.class);
+
+       private static final String APPLICATION_JSON = "application/json";
+
+       private static final String ERROR_BAD_REQUEST = "{\"error\":\"BAD_REQUEST\"}";
+
+       private SecurityXssValidator validator = SecurityXssValidator.getInstance();
+
+       public class RequestWrapper extends HttpServletRequestWrapper {
+
+               private ByteArrayOutputStream cachedBytes;
+
+               public RequestWrapper(HttpServletRequest request) {
+                       super(request);
+               }
+
+               @Override
+               public ServletInputStream getInputStream() throws IOException {
+                       if (cachedBytes == null)
+                               cacheInputStream();
+
+                       return new CachedServletInputStream();
+               }
+
+               @Override
+               public BufferedReader getReader() throws IOException {
+                       return new BufferedReader(new InputStreamReader(getInputStream()));
+               }
+
+               private void cacheInputStream() throws IOException {
+                       cachedBytes = new ByteArrayOutputStream();
+                       IOUtils.copy(super.getInputStream(), cachedBytes);
+               }
+
+               public class CachedServletInputStream extends ServletInputStream {
+                       private ByteArrayInputStream input;
+
+                       public CachedServletInputStream() {
+                               input = new ByteArrayInputStream(cachedBytes.toByteArray());
+                       }
+
+                       @Override
+                       public int read() throws IOException {
+                               return input.read();
+                       }
+
+                       @Override
+                       public boolean isFinished() {
+                               return false;
+                       }
+
+                       @Override
+                       public boolean isReady() {
+                               return false;
+                       }
+
+                       @Override
+                       public void setReadListener(ReadListener readListener) {
+
+                       }
+
+               }
+       }
+
+       @Override
+       protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
+                       throws ServletException, IOException {
+               StringBuilder requestURL = new StringBuilder(request.getRequestURL().toString());
+           String queryString = request.getQueryString();
+           String requestUrl = "";
+           if (queryString == null) {
+               requestUrl = requestURL.toString();
+           } else {
+               requestUrl = requestURL.append('?').append(queryString).toString();
+           }
+           validateRequest(requestUrl, response);
+               StringBuilder headerValues = new StringBuilder();
+               Enumeration<String> headerNames = request.getHeaderNames();
+               while (headerNames.hasMoreElements()) {
+                       String key = (String) headerNames.nextElement();
+                       String value = request.getHeader(key);
+                       headerValues.append(key + ":" + value + ";");
+               }
+               validateRequest(headerValues.toString(), response);
+               if (validateRequestType(request)) {
+                       request = new RequestWrapper(request);
+                       String requestData = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8.toString());
+                       validateRequest(requestData, response);
+                       filterChain.doFilter(request, response);
+
+               } else {
+                       filterChain.doFilter(request, response);
+               }
+       }
+
+       private boolean validateRequestType(HttpServletRequest request) {
+               return (request.getMethod().equalsIgnoreCase("POST") || request.getMethod().equalsIgnoreCase("PUT")
+                               || request.getMethod().equalsIgnoreCase("DELETE"));
+       }
+       
+       private void validateRequest(String text, HttpServletResponse response) throws IOException {
+               try {
+                       if (StringUtils.isNotBlank(text) && validator.denyXSS(text)) {
+                               response.setContentType(APPLICATION_JSON);
+                               response.setStatus(HttpStatus.SC_BAD_REQUEST);
+                               response.getWriter().write(ERROR_BAD_REQUEST);
+                               throw new SecurityException(ERROR_BAD_REQUEST);
+                       }
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "doFilterInternal() failed due to BAD_REQUEST", e);
+                       response.getWriter().close();
+                       return;
+               }
+       }
+}
\ No newline at end of file
diff --git a/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssValidator.java b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssValidator.java
new file mode 100644 (file)
index 0000000..3adc313
--- /dev/null
@@ -0,0 +1,213 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.portalapp.filter;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.regex.Pattern;
+
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.owasp.esapi.ESAPI;
+import org.owasp.esapi.codecs.Codec;
+import org.owasp.esapi.codecs.MySQLCodec;
+import org.owasp.esapi.codecs.OracleCodec;
+import org.owasp.esapi.codecs.MySQLCodec.Mode;
+
+public class SecurityXssValidator {
+
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SecurityXssValidator.class);
+
+       private static final String MYSQL_DB = "mysql";
+       private static final String ORACLE_DB = "oracle";
+       private static final String MARIA_DB = "mariadb";
+       private static final int FLAGS = Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL;
+       static SecurityXssValidator validator = null;
+       private static Codec instance;
+       private static final Lock lock = new ReentrantLock();
+
+       public static SecurityXssValidator getInstance() {
+
+               if (validator == null) {
+                       lock.lock();
+                       try {
+                               if (validator == null)
+                                       validator = new SecurityXssValidator();
+                       } finally {
+                               lock.unlock();
+                       }
+               }
+
+               return validator;
+       }
+
+       private SecurityXssValidator() {
+               // Avoid anything between script tags
+               XSS_INPUT_PATTERNS.add(Pattern.compile("<script>(.*?)</script>", FLAGS));
+
+               // avoid iframes
+               XSS_INPUT_PATTERNS.add(Pattern.compile("<iframe(.*?)>(.*?)</iframe>", FLAGS));
+
+               // Avoid anything in a src='...' type of expression
+               XSS_INPUT_PATTERNS.add(Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", FLAGS));
+
+               XSS_INPUT_PATTERNS.add(Pattern.compile("src[\r\n]*=[\r\n]*\\\"(.*?)\\\"", FLAGS));
+
+               XSS_INPUT_PATTERNS.add(Pattern.compile("src[\r\n]*=[\r\n]*([^>]+)", FLAGS));
+
+               // Remove any lonesome </script> tag
+               XSS_INPUT_PATTERNS.add(Pattern.compile("</script>", FLAGS));
+
+               XSS_INPUT_PATTERNS.add(Pattern.compile(".*(<script>|</script>).*", FLAGS));
+
+               XSS_INPUT_PATTERNS.add(Pattern.compile(".*(<iframe>|</iframe>).*", FLAGS));
+
+               // Remove any lonesome <script ...> tag
+               XSS_INPUT_PATTERNS.add(Pattern.compile("<script(.*?)>", FLAGS));
+
+               // Avoid eval(...) expressions
+               XSS_INPUT_PATTERNS.add(Pattern.compile("eval\\((.*?)\\)", FLAGS));
+
+               // Avoid expression(...) expressions
+               XSS_INPUT_PATTERNS.add(Pattern.compile("expression\\((.*?)\\)", FLAGS));
+
+               // Avoid javascript:... expressions
+               XSS_INPUT_PATTERNS.add(Pattern.compile(".*(javascript:|vbscript:).*", FLAGS));
+
+               // Avoid onload= expressions
+               XSS_INPUT_PATTERNS.add(Pattern.compile(".*(onload(.*?)=).*", FLAGS));
+       }
+
+       private List<Pattern> XSS_INPUT_PATTERNS = new ArrayList<Pattern>();
+
+       /**
+        * * This method takes a string and strips out any potential script injections.
+        * 
+        * @param value
+        * @return String - the new "sanitized" string.
+        */
+       public String stripXSS(String value) {
+
+               try {
+
+                       if (StringUtils.isNotBlank(value)) {
+
+                               value = StringEscapeUtils.escapeHtml4(value);
+
+                               value = ESAPI.encoder().canonicalize(value);
+
+                               // Avoid null characters
+                               value = value.replaceAll("\0", "");
+
+                               for (Pattern xssInputPattern : XSS_INPUT_PATTERNS) {
+                                       value = xssInputPattern.matcher(value).replaceAll("");
+                               }
+                       }
+
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "stripXSS() failed", e);
+               }
+
+               return value;
+       }
+
+       public Boolean denyXSS(String value) {
+               Boolean flag = Boolean.FALSE;
+               try {
+                       if (StringUtils.isNotBlank(value)) {
+                               if (value.contains("&timeseclgn"))
+                               {
+                                       logger.info(EELFLoggerDelegate.applicationLogger, "denyXSS() replacing &timeseclgn with empty string for request value : " + value);
+                                       value=value.replaceAll("&timeseclgn", "");
+                               }
+                               value = ESAPI.encoder().canonicalize(value);
+                               for (Pattern xssInputPattern : XSS_INPUT_PATTERNS) {
+                                       if (xssInputPattern.matcher(value).matches()) {
+                                               flag = Boolean.TRUE;
+                                               break;
+                                       }
+
+                               }
+                       }
+
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "denyXSS() failed for request with value : " + value, e);
+               }
+
+               return flag;
+       }
+
+       public Codec getCodec() {
+               try {
+                       if (null == instance) {
+                               if (StringUtils.containsIgnoreCase(SystemProperties.getProperty(SystemProperties.DB_DRIVER), MYSQL_DB)
+                                               || StringUtils.containsIgnoreCase(SystemProperties.getProperty(SystemProperties.DB_DRIVER),
+                                                               MARIA_DB)) {
+                                       instance = new MySQLCodec(Mode.STANDARD);
+
+                               } else if (StringUtils.containsIgnoreCase(SystemProperties.getProperty(SystemProperties.DB_DRIVER),
+                                               ORACLE_DB)) {
+                                       instance = new OracleCodec();
+                               } else {
+                                       throw new NotImplementedException("Handling for data base \""
+                                                       + SystemProperties.getProperty(SystemProperties.DB_DRIVER) + "\" not yet implemented.");
+                               }
+                       }
+
+               } catch (Exception ex) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "getCodec() failed", ex);
+               }
+               return instance;
+
+       }
+
+       public List<Pattern> getXSS_INPUT_PATTERNS() {
+               return XSS_INPUT_PATTERNS;
+       }
+
+       public void setXSS_INPUT_PATTERNS(List<Pattern> xSS_INPUT_PATTERNS) {
+               XSS_INPUT_PATTERNS = xSS_INPUT_PATTERNS;
+       }
+       
+
+}
\ No newline at end of file
index 7469c60..f80fb9a 100644 (file)
@@ -315,7 +315,7 @@ create table fn_user (
     silo_status character varying(10)
 );
 
-alter table fn_user add column language_id int(2) not null default 1;
+alter table fn_user add column language_id int(2) default 1;
 
 create table fn_language(
     language_id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
diff --git a/ecomp-portal-DB-common/PortalDDLMySql_2_5_Common.sql b/ecomp-portal-DB-common/PortalDDLMySql_2_5_Common.sql
new file mode 100644 (file)
index 0000000..1bf10c6
--- /dev/null
@@ -0,0 +1,1779 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This is the 2.1.0 version of Portal database called portal
+
+-- note to : database admin,  set the mysql system variable called lower_case_table_names
+--             it can be set 3 different ways: 
+--                     command-line options (cmd-line), 
+--                     options valid in configuration files (option file), or 
+--                     server system variables (system var). 
+
+-- it needs to be set to 1, then table names are stored in lowercase on disk and comparisons are not case sensitive. 
+-- -----------------------------------------------------------------------------------------------------------------
+set foreign_key_checks=1; 
+
+SET GLOBAL character_set_client     = utf8;
+SET GLOBAL character_set_connection = utf8;
+SET GLOBAL character_set_database   = utf8;
+SET GLOBAL character_set_results    = utf8;
+SET GLOBAL character_set_server     = utf8;
+
+create database portal;
+
+use portal;
+
+-- ------------------ create table section
+--
+-- name: cr_favorite_reports; type: table
+--
+create table cr_favorite_reports (
+    user_id integer not null,
+    rep_id integer not null
+);
+--
+-- name: cr_filehist_log; type: table
+--
+create table cr_filehist_log (
+    schedule_id numeric(11,0) not null,
+    url character varying(4000),
+    notes character varying(3500),
+    run_time timestamp
+);
+--
+-- name: cr_folder; type: table
+--
+create table cr_folder (
+    folder_id integer not null,
+    folder_name character varying(50) not null,
+    descr character varying(500),
+    create_id integer not null,
+    create_date timestamp not null,
+    parent_folder_id integer,
+    public_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_folder_access; type: table
+--
+create table cr_folder_access (
+    folder_access_id numeric(11,0) not null,
+    folder_id numeric(11,0) not null,
+    order_no numeric(11,0) not null,
+    role_id numeric(11,0),
+    user_id numeric(11,0),
+    read_only_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_hist_user_map; type: table
+--
+create table cr_hist_user_map (
+    hist_id int(11) not null,
+    user_id int(11) not null
+);
+--
+-- name: cr_lu_file_type; type: table
+--
+create table cr_lu_file_type (
+    lookup_id numeric(2,0) not null,
+    lookup_descr character varying(255) not null,
+    active_yn character(1) default 'y',
+    error_code numeric(11,0)
+);
+--
+-- name: cr_raptor_action_img; type: table
+--
+create table cr_raptor_action_img (
+    image_id character varying(100) not null,
+    image_loc character varying(400)
+);
+--
+-- name: cr_raptor_pdf_img; type: table
+--
+create table cr_raptor_pdf_img (
+    image_id character varying(100) not null,
+    image_loc character varying(400)
+);
+--
+-- name: cr_remote_schema_info; type: table
+--
+create table cr_remote_schema_info (
+    schema_prefix character varying(5) not null,
+    schema_desc character varying(75) not null,
+    datasource_type character varying(100)
+);
+--
+-- name: cr_report; type: table
+--
+create table cr_report (
+    rep_id numeric(11,0) not null,
+    title character varying(100) not null,
+    descr character varying(255),
+    public_yn character varying(1) default 'n' not null,
+    report_xml text,
+    create_id numeric(11,0),
+    create_date timestamp default now(),
+    maint_id numeric(11,0),
+    maint_date timestamp default now(), 
+    menu_id character varying(500),
+    menu_approved_yn character varying(1) default 'n' not null,
+    owner_id numeric(11,0),
+    folder_id integer default 0,
+    dashboard_type_yn character varying(1) default 'n',
+    dashboard_yn character varying(1) default 'n'
+);
+--
+-- name: cr_report_access; type: table
+--
+create table cr_report_access (
+    rep_id numeric(11,0) not null,
+    order_no numeric(11,0) not null,
+    role_id numeric(11,0),
+    user_id numeric(11,0),
+    read_only_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_report_dwnld_log; type: table
+--
+create table cr_report_dwnld_log (
+    user_id numeric(11,0) not null,
+    rep_id integer not null,
+    file_name character varying(100) not null,
+    dwnld_start_time timestamp default now() not null,
+    record_ready_time timestamp default now(),
+    filter_params character varying(2000)
+);
+--
+-- name: cr_report_email_sent_log; type: table
+--
+create table cr_report_email_sent_log (
+    log_id integer not null,
+    schedule_id numeric(11,0),
+    gen_key character varying(25) not null,
+    rep_id numeric(11,0) not null,
+    user_id numeric(11,0),
+    sent_date timestamp default now(),
+    access_flag character varying(1) default 'y' not null,
+    touch_date timestamp default now()
+);
+--
+-- name: cr_report_file_history; type: table
+--
+create table cr_report_file_history (
+    hist_id int(11) not null,
+    sched_user_id numeric(11,0) not null,
+    schedule_id numeric(11,0) not null,
+    user_id numeric(11,0) not null,
+    rep_id numeric(11,0),
+    run_date timestamp,
+    recurrence character varying(50),
+    file_type_id numeric(2,0),
+    file_name character varying(80),
+    file_blob blob,
+    file_size numeric(11,0),
+    raptor_url character varying(4000),
+    error_yn character(1) default 'n',
+    error_code numeric(11,0),
+    deleted_yn character(1) default 'n',
+    deleted_by numeric(38,0)
+);
+--
+-- name: cr_report_log; type: table
+--
+create table cr_report_log (
+    rep_id numeric(11,0) not null,
+    log_time timestamp not null,
+    user_id numeric(11,0) not null,
+    action character varying(2000) not null,
+    action_value character varying(50),
+    form_fields character varying(4000)
+);
+--
+-- name: cr_report_schedule; type: table
+--
+create table cr_report_schedule (
+    schedule_id numeric(11,0) not null,
+    sched_user_id numeric(11,0) not null,
+    rep_id numeric(11,0) not null,
+    enabled_yn character varying(1) not null,
+    start_date timestamp default now(),
+    end_date timestamp default now(),
+    run_date timestamp default now(),
+    recurrence character varying(50),
+    conditional_yn character varying(1) not null,
+    condition_sql character varying(4000),
+    notify_type integer default 0,
+    max_row integer default 1000,
+    initial_formfields character varying(3500),
+    processed_formfields character varying(3500),
+    formfields character varying(3500),
+    condition_large_sql text,
+    encrypt_yn character(1) default 'n',
+    attachment_yn character(1) default 'y'
+);
+--
+-- name: cr_report_schedule_users; type: table
+--
+create table cr_report_schedule_users (
+    schedule_id numeric(11,0) not null,
+    rep_id numeric(11,0) not null,
+    user_id numeric(11,0) not null,
+    role_id numeric(11,0),
+    order_no numeric(11,0) not null
+);
+--
+-- name: cr_report_template_map; type: table
+--
+create table cr_report_template_map (
+    report_id integer not null,
+    template_file character varying(200)
+);
+--
+-- name: cr_schedule_activity_log; type: table
+--
+create table cr_schedule_activity_log (
+    schedule_id numeric(11,0) not null,
+    url character varying(4000),
+    notes character varying(2000),
+    run_time timestamp
+);
+--
+-- name: cr_table_join; type: table
+--
+create table cr_table_join (
+    src_table_name character varying(30) not null,
+    dest_table_name character varying(30) not null,
+    join_expr character varying(500) not null
+);
+--
+-- name: cr_table_role; type: table
+--
+create table cr_table_role (
+    table_name character varying(30) not null,
+    role_id numeric(11,0) not null
+);
+--
+-- name: cr_table_source; type: table
+--
+create table cr_table_source (
+    table_name character varying(30) not null,
+    display_name character varying(30) not null,
+    pk_fields character varying(200),
+    web_view_action character varying(50),
+    large_data_source_yn character varying(1) default 'n' not null,
+    filter_sql character varying(4000),
+    source_db character varying(50)
+);
+--
+-- name: fn_lu_timezone; type: table
+--
+create table fn_lu_timezone (
+    timezone_id int(11) not null,
+    timezone_name character varying(100) not null,
+    timezone_value character varying(100) not null
+);
+
+create table fn_user (
+    user_id int(11) not null primary key  auto_increment,
+    org_id int(11),
+    manager_id int(11),
+    first_name character varying(50),
+    middle_name character varying(50),
+    last_name character varying(50),
+    phone character varying(25),
+    fax character varying(25),
+    cellular character varying(25),
+    email character varying(50),
+    address_id numeric(11,0),
+    alert_method_cd character varying(10),
+    hrid character varying(20),
+    org_user_id CHARACTER VARYING(60),
+    org_code character varying(30),
+    login_id character varying(60),
+    login_pwd character varying(100),
+    last_login_date timestamp,
+    active_yn character varying(1) default 'y' not null,
+    created_id int(11),
+    created_date timestamp default now(),
+    modified_id int(11),
+    modified_date timestamp default now(),
+    is_internal_yn character(1) default 'n' not null,
+    address_line_1 character varying(100),
+    address_line_2 character varying(100),
+    city character varying(50),
+    state_cd character varying(3),
+    zip_code character varying(11),
+    country_cd character varying(3),
+    location_clli character varying(8),
+    org_manager_userid CHARACTER VARYING(20),
+    company character varying(100),
+    department_name character varying(100),
+    job_title character varying(100),
+    timezone int(11),
+    department character varying(25),
+    business_unit character varying(25),
+    business_unit_name character varying(100),
+    cost_center character varying(25),
+    fin_loc_code character varying(10),
+    silo_status character varying(10),
+    is_system_user character(1) default 'N',
+    language_id int(2) default 1
+);
+
+create table fn_language(
+    language_id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+    language_name VARCHAR(100) NOT NULL,
+    language_alias VARCHAR(100) NOT NULL
+);
+
+create table fn_display_text(
+    id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+    language_id int(11) NOT NULL,
+    text_id int(11) NOT NULL,
+    text_label VARCHAR(100) NOT NULL
+);
+--
+-- name: fn_role; type: table
+--
+create table fn_role (
+    role_id int(11) not null primary key auto_increment,
+    role_name character varying(300) not null,
+    active_yn character varying(1) default 'y' not null,
+    priority numeric(4,0),
+    app_id int(11) default null,
+    app_role_id int(11) default null
+
+);
+--
+-- name: fn_audit_action; type: table
+--
+create table fn_audit_action (
+    audit_action_id integer not null,
+    class_name character varying(500) not null,
+    method_name character varying(50) not null,
+    audit_action_cd character varying(20) not null,
+    audit_action_desc character varying(200),
+    active_yn character varying(1)
+);
+--
+-- name: fn_audit_action_log; type: table
+--
+create table fn_audit_action_log (
+    audit_log_id integer not null primary key  auto_increment,
+    audit_action_cd character varying(200),
+    action_time timestamp,
+    user_id numeric(11,0),
+    class_name character varying(100),
+    method_name character varying(50),
+    success_msg character varying(20),
+    error_msg character varying(500)
+);
+--
+-- name: fn_lu_activity; type: table
+--
+create table fn_lu_activity (
+    activity_cd character varying(50) not null primary key,
+    activity character varying(50) not null
+);
+--
+-- name: fn_audit_log; type: table
+--
+create table fn_audit_log (
+    log_id int(11) not null primary key auto_increment,
+    user_id int(11) not null,
+    activity_cd character varying(50) not null,
+    audit_date timestamp default now() not null,
+    comments character varying(1000),
+    affected_record_id_bk character varying(500),
+    affected_record_id character varying(4000),
+    constraint fk_fn_audit_ref_209_fn_user foreign key (user_id) references fn_user(user_id)
+);
+--
+-- name: fn_broadcast_message; type: table
+--
+create table fn_broadcast_message (
+    message_id int(11) not null primary key auto_increment,
+    message_text character varying(1000) not null,
+    message_location_id numeric(11,0) not null,
+    broadcast_start_date timestamp not null  default now(),
+    broadcast_end_date timestamp not null default now(),
+    active_yn character(1) default 'y' not null,
+    sort_order numeric(4,0) not null,
+    broadcast_site_cd character varying(50)
+);
+--
+-- name: fn_chat_logs; type: table
+--
+create table fn_chat_logs (
+    chat_log_id integer not null,
+    chat_room_id integer,
+    user_id integer,
+    message character varying(1000),
+    message_date_time timestamp
+);
+--
+-- name: fn_chat_room; type: table
+--
+create table fn_chat_room (
+    chat_room_id integer not null,
+    name character varying(50) not null,
+    description character varying(500),
+    owner_id integer,
+    created_date timestamp default now(),
+    updated_date timestamp default now()
+);
+--
+-- name: fn_chat_users; type: table
+--
+create table fn_chat_users (
+    chat_room_id integer,
+    user_id integer,
+    last_activity_date_time timestamp,
+    chat_status character varying(20),
+    id integer not null
+);
+--
+-- name: fn_datasource; type: table
+--
+create table fn_datasource (
+    id integer not null primary key auto_increment,
+    name character varying(50),
+    driver_name character varying(256),
+    server character varying(256),
+    port integer,
+    user_name character varying(256),
+    password character varying(256),
+    url character varying(256),
+    min_pool_size integer,
+    max_pool_size integer,
+    adapter_id integer,
+    ds_type character varying(20)
+);
+--
+-- name: fn_function; type: table
+--
+create table fn_function (
+    function_cd character varying(30) not null primary key,
+    function_name character varying(50) not null
+);
+--
+-- name: fn_lu_alert_method; type: table
+--
+create table fn_lu_alert_method (
+    alert_method_cd character varying(10) not null,
+    alert_method character varying(50) not null
+);
+--
+-- name: fn_lu_broadcast_site; type: table
+--
+create table fn_lu_broadcast_site (
+    broadcast_site_cd character varying(50) not null,
+    broadcast_site_descr character varying(100)
+);
+--
+-- name: fn_lu_menu_set; type: table
+--
+create table fn_lu_menu_set (
+    menu_set_cd character varying(10) not null primary key,
+    menu_set_name character varying(50) not null
+);
+--
+-- name: fn_lu_priority; type: table
+--
+create table fn_lu_priority (
+    priority_id numeric(11,0) not null,
+    priority character varying(50) not null,
+    active_yn character(1) not null,
+    sort_order numeric(5,0)
+);
+--
+-- name: fn_lu_role_type; type: table
+--
+create table fn_lu_role_type (
+    role_type_id numeric(11,0) not null,
+    role_type character varying(50) not null
+);
+--
+-- name: fn_lu_tab_set; type: table
+--
+create table fn_lu_tab_set (
+    tab_set_cd character varying(30) not null,
+    tab_set_name character varying(50) not null
+);
+--
+-- name: fn_menu; type: table
+--
+create table fn_menu (
+    menu_id int(11) not null primary key auto_increment,
+    label character varying(100),
+    parent_id int(11),
+    sort_order numeric(4,0),
+    action character varying(200),
+    function_cd character varying(30),
+    active_yn character varying(1) default 'y' not null,
+    servlet character varying(50),
+    query_string character varying(200),
+    external_url character varying(200),
+    target character varying(25),
+    menu_set_cd character varying(10) default 'app',
+    separator_yn character(1) default 'n',
+    image_src character varying(100),
+    constraint fk_fn_menu_ref_196_fn_menu foreign key (parent_id) references fn_menu(menu_id),
+    constraint fk_fn_menu_menu_set_cd foreign key (menu_set_cd) references fn_lu_menu_set(menu_set_cd)
+);
+
+create index idx_fn_menu_label on fn_menu(label);
+--
+-- name: fn_org; type: table
+--
+create table fn_org (
+    org_id int(11) not null,
+    org_name character varying(50) not null,
+    access_cd character varying(10)
+);
+--
+-- name: fn_restricted_url; type: table
+--
+create table fn_restricted_url (
+    restricted_url character varying(250) not null,
+    function_cd character varying(30) not null
+);
+--
+-- name: fn_role_composite; type: table
+--
+create table fn_role_composite (
+    parent_role_id int(11) not null,
+    child_role_id int(11) not null,
+    constraint fk_fn_role_composite_child foreign key (child_role_id) references fn_role(role_id),
+    constraint fk_fn_role_composite_parent foreign key (parent_role_id) references fn_role(role_id)
+);
+--
+-- name: fn_role_function; type: table
+--
+create table fn_role_function (
+    role_id int(11) not null,
+    function_cd character varying(30) not null,
+    constraint fk_fn_role__ref_198_fn_role foreign key (role_id) references fn_role(role_id)
+);
+--
+-- name: fn_tab; type: table
+--
+create table fn_tab (
+    tab_cd character varying(30) not null,
+    tab_name character varying(50) not null,
+    tab_descr character varying(100),
+    action character varying(100) not null,
+    function_cd character varying(30) not null,
+    active_yn character(1) not null,
+    sort_order numeric(11,0) not null,
+    parent_tab_cd character varying(30),
+    tab_set_cd character varying(30)
+);
+--
+-- name: fn_tab_selected; type: table
+--
+create table fn_tab_selected (
+    selected_tab_cd character varying(30) not null,
+    tab_uri character varying(40) not null
+);
+--
+-- name: fn_user_pseudo_role; type: table
+--
+create table fn_user_pseudo_role (
+    pseudo_role_id int(11) not null,
+    user_id int(11) not null
+);
+--
+-- name: fn_user_role; type: table
+--
+create table fn_user_role (
+    user_id int(10) not null,
+    role_id int(10) not null,
+    priority numeric(4,0),
+    app_id int(11) default 2,
+    constraint fk_fn_user__ref_172_fn_user foreign key (user_id) references fn_user(user_id),
+    constraint fk_fn_user__ref_175_fn_role foreign key (role_id) references fn_role(role_id)
+);
+--
+-- name: schema_info; type: table
+--
+create table schema_info (
+    SCHEMA_ID CHARACTER VARYING(25) not null,
+    SCHEMA_DESC CHARACTER VARYING(75) not null,
+    DATASOURCE_TYPE CHARACTER VARYING(100),
+    CONNECTION_URL VARCHAR(200) not null,
+    USER_NAME VARCHAR(45) not null,
+    PASSWORD VARCHAR(45) null default null,
+    DRIVER_CLASS VARCHAR(100) not null,
+    MIN_POOL_SIZE INT not null,
+    MAX_POOL_SIZE INT not null,
+    IDLE_CONNECTION_TEST_PERIOD INT not null
+
+);
+-- ----------------------------------------------------------
+-- name: fn_app; type: table
+-- ----------------------------------------------------------
+create table fn_app (
+  app_id int(11) primary key not null auto_increment,
+  app_name varchar(100) not null default '?',
+  app_image_url varchar(256) default null,
+  app_description varchar(512) default null,
+  app_notes varchar(4096) default null,
+  app_url varchar(256) default null,
+  app_alternate_url varchar(256) default null,
+  app_rest_endpoint varchar(2000) default null,
+  ml_app_name varchar(50) not null default '?',
+  ml_app_admin_id varchar(7) not null default '?',
+  mots_id int(11) default null,
+  app_password varchar(256) default null,
+  open char(1) default 'N',
+  enabled char(1) default 'Y',
+  thumbnail mediumblob null default null,
+  app_username varchar(50),
+  ueb_key varchar(256) default null,
+  ueb_secret varchar(256) default null,
+  ueb_topic_name varchar(256) default null,
+  app_type int(11) not null default 1,
+  auth_central char(1) not null default 'N',
+  auth_namespace varchar(100) null default null
+);
+
+-- ------------------ functional menu tables -------------------
+--
+-- table structure for table fn_menu_functional
+--
+create table fn_menu_functional (
+  menu_id int(11) not null auto_increment,
+  column_num int(2) not null,
+  text varchar(100) not null,
+  parent_menu_id int(11) default null,
+  url varchar(128) not null default '',
+  active_yn varchar(1) not null default 'y',
+  image_src varchar(100) default null,
+  primary key (menu_id),
+  key fk_fn_menu_func_parent_menu_id_idx (parent_menu_id),
+  constraint fk_fn_menu_func_parent_menu_id foreign key (parent_menu_id) references fn_menu_functional (menu_id) on delete no action on update no action
+);
+--
+-- table structure for table fn_menu_functional_ancestors
+--
+
+create table fn_menu_functional_ancestors (
+  id int(11) not null auto_increment,
+  menu_id int(11) not null,
+  ancestor_menu_id int(11) not null,
+  depth int(2) not null,
+  primary key (id),
+  key fk_fn_menu_func_anc_menu_id_idx (menu_id),
+  key fk_fn_menu_func_anc_anc_menu_id_idx (ancestor_menu_id),
+  constraint fk_fn_menu_func_anc_anc_menu_id foreign key (ancestor_menu_id) references fn_menu_functional (menu_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_anc_menu_id foreign key (menu_id) references fn_menu_functional (menu_id) on delete no action on update no action
+);
+--
+-- table structure for table fn_menu_functional_roles
+--
+create table fn_menu_functional_roles (
+  id int(11) not null auto_increment,
+  menu_id int(11) not null,
+  app_id int(11) not null,
+  role_id int(10) not null,
+  primary key (id),
+  key fk_fn_menu_func_roles_menu_id_idx (menu_id),
+  key fk_fn_menu_func_roles_app_id_idx (app_id),
+  key fk_fn_menu_func_roles_role_id_idx (role_id),
+  constraint fk_fn_menu_func_roles_app_id foreign key (app_id) references fn_app (app_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_roles_menu_id foreign key (menu_id) references fn_menu_functional (menu_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_roles_role_id foreign key (role_id) references fn_role (role_id) on delete no action on update no action
+);
+-- ----------------------------------------------------------
+-- NAME: FN_WORKFLOW; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_workflow (
+  id mediumint(9) not null auto_increment,
+  name varchar(20) not null,
+  description varchar(500) default null,
+  run_link varchar(300) default null,
+  suspend_link varchar(300) default null,
+  modified_link varchar(300) default null,
+  active_yn varchar(300) default null,
+  created varchar(300) default null,
+  created_by int(11) default null,
+  modified varchar(300) default null,
+  modified_by int(11) default null,
+  workflow_key varchar(50) default null,
+  primary key (id),
+  UNIQUE KEY name (name)
+);
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_SCHEDULE_WORKFLOWS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_schedule_workflows (
+  id_schedule_workflows bigint(25) primary key not null auto_increment, 
+  workflow_server_url varchar(45) default null,
+  workflow_key varchar(45) not null,
+  workflow_arguments varchar(45) default null,
+  startDateTimeCron varchar(45) default null,
+  endDateTime TIMESTAMP default NOW(),
+  start_date_time TIMESTAMP default NOW(),
+  recurrence varchar(45) default null
+  );
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_SHARED_CONTEXT; TYPE: TABLE
+-- ----------------------------------------------------------  
+create table fn_shared_context (
+    id int(11) not null auto_increment,
+    create_time timestamp not null,
+    context_id character varying(64) not null,
+    ckey character varying(128) not null,
+       cvalue character varying(1024),
+       primary key (id),
+       UNIQUE KEY session_key (context_id, ckey) );
+
+       
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_JOB_DETAILS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_job_details (
+SCHED_NAME VARCHAR(120) not null,
+JOB_NAME VARCHAR(200) not null,
+JOB_GROUP VARCHAR(200) not null,
+DESCRIPTION VARCHAR(250) null,
+JOB_CLASS_NAME VARCHAR(250) not null,
+IS_DURABLE VARCHAR(1) not null,
+IS_NONCONCURRENT VARCHAR(1) not null,
+IS_UPDATE_DATA VARCHAR(1) not null,
+REQUESTS_RECOVERY VARCHAR(1) not null,
+JOB_DATA BLOB null,
+primary key (SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+JOB_NAME VARCHAR(200) not null,
+JOB_GROUP VARCHAR(200) not null,
+DESCRIPTION VARCHAR(250) null,
+NEXT_FIRE_TIME BIGINT(13) null,
+PREV_FIRE_TIME BIGINT(13) null,
+PRIORITY INTEGER null,
+TRIGGER_STATE VARCHAR(16) not null,
+TRIGGER_TYPE VARCHAR(8) not null,
+START_TIME BIGINT(13) not null,
+END_TIME BIGINT(13) null,
+CALENDAR_NAME VARCHAR(200) null,
+MISFIRE_INSTR SMALLINT(2) null,
+JOB_DATA BLOB null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
+REFERENCES FN_QZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SIMPLE_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_simple_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+REPEAT_COUNT BIGINT(7) not null,
+REPEAT_INTERVAL BIGINT(12) not null,
+TIMES_TRIGGERED BIGINT(10) not null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_CRON_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_cron_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+CRON_EXPRESSION VARCHAR(120) not null,
+TIME_ZONE_ID VARCHAR(80),
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SIMPROP_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_simprop_triggers (          
+    SCHED_NAME VARCHAR(120) not null,
+    TRIGGER_NAME VARCHAR(200) not null,
+    TRIGGER_GROUP VARCHAR(200) not null,
+    STR_PROP_1 VARCHAR(512) null,
+    STR_PROP_2 VARCHAR(512) null,
+    STR_PROP_3 VARCHAR(512) null,
+    INT_PROP_1 INT null,
+    INT_PROP_2 INT null,
+    LONG_PROP_1 BIGINT null,
+    LONG_PROP_2 BIGINT null,
+    DEC_PROP_1 NUMERIC(13,4) null,
+    DEC_PROP_2 NUMERIC(13,4) null,
+    BOOL_PROP_1 VARCHAR(1) null,
+    BOOL_PROP_2 VARCHAR(1) null,
+    primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) 
+    REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_BLOB_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_blob_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+BLOB_DATA BLOB null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_CALENDARS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_calendars (
+SCHED_NAME VARCHAR(120) not null,
+CALENDAR_NAME VARCHAR(200) not null,
+CALENDAR BLOB not null,
+primary key (SCHED_NAME,CALENDAR_NAME)
+);
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_PAUSED_TRIGGER_GRPS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_paused_trigger_grps (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+primary key (SCHED_NAME,TRIGGER_GROUP)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_FIRED_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_fired_triggers (
+SCHED_NAME VARCHAR(120) not null,
+ENTRY_ID VARCHAR(95) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+INSTANCE_NAME VARCHAR(200) not null,
+FIRED_TIME BIGINT(13) not null,
+SCHED_TIME BIGINT(13) not null,
+PRIORITY INTEGER not null,
+STATE VARCHAR(16) not null,
+JOB_NAME VARCHAR(200) null,
+JOB_GROUP VARCHAR(200) null,
+IS_NONCONCURRENT VARCHAR(1) null,
+REQUESTS_RECOVERY VARCHAR(1) null,
+primary key (SCHED_NAME,ENTRY_ID)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SCHEDULER_STATE; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_scheduler_state (
+SCHED_NAME VARCHAR(120) not null,
+INSTANCE_NAME VARCHAR(200) not null,
+LAST_CHECKIN_TIME BIGINT(13) not null,
+CHECKIN_INTERVAL BIGINT(13) not null,
+primary key (SCHED_NAME,INSTANCE_NAME)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_LOCKS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_locks (
+SCHED_NAME VARCHAR(120) not null,
+LOCK_NAME VARCHAR(40) not null,
+primary key (SCHED_NAME,LOCK_NAME)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_MENU_FAVORITES; TYPE: TABLE
+-- ----------------------------------------------------------
+
+create table fn_menu_favorites (
+  user_id int(11) not null,
+  menu_id int(11) not null,
+  primary key (user_id,menu_id)
+);
+
+-- FACELIFT - Table for Events, News and Resources
+
+create table fn_common_widget_data(
+       id int auto_increment, 
+       category varchar(32), 
+       href varchar(512), 
+       title varchar(256), 
+       content varchar(4096), 
+       event_date varchar(10), -- YYYY-MM-DD 
+       sort_order int, 
+       primary key (id)
+);
+
+create table fn_app_contact_us (
+  app_id int(11) not null,
+  contact_name varchar(128) default null,
+  contact_email varchar(128) default null,
+  url varchar(256) default null,
+  active_yn varchar(2) default null,
+  description varchar(1024) default null,
+  primary key (app_id),
+  constraint fk_fn_a_con__ref_202_fn_app foreign key (app_id) references fn_app (app_id)
+);
+
+-- new 1610.2
+create table fn_pers_user_app_sel (
+  id   int(11) not null auto_increment,
+  user_id   int(11) not null,
+  app_id    int(11) not null,
+  status_cd char(1) not null,
+  primary key(id),
+  constraint fk_1_fn_pers_user_app_sel_fn_user foreign key (user_id) references fn_user (user_id),
+  constraint fk_2_fn_pers_user_app_sel_fn_app  foreign key (app_id)  references fn_app (app_id)
+);
+
+-- end new 1610.2
+
+-- new 1702 tables/views
+ -- 1702 Additions for User Notifications
+ -- ----------------------------------------------------------
+ -- NAME: ep_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_notification (
+    notification_ID     int(11) primary key not null auto_increment,
+    is_for_online_users char(1) default 'N',
+    is_for_all_roles    char(1) default 'N',
+    active_YN           char(1) default 'Y',
+    msg_header          varchar(100),
+    msg_description     varchar(2000),
+    msg_source          varchar(50) default 'EP',
+    start_time          timestamp default now(),
+    end_time            timestamp null,
+    priority            int(11),
+    creator_ID          int(11) null default null,
+    created_date        timestamp null default null,
+    notification_hyperlink varchar(512) null default null  -- new column for 1710
+   );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_role_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_role_notification (
+   ID                  int(11) primary key not null auto_increment,
+   notification_ID     int(11),
+   role_ID             int(11),
+   recv_user_id        int(11) null,
+   constraint fk_ep_role_notif_fn_role foreign key (role_ID) references fn_role(role_id),
+   constraint fk_ep_role_notif_fn_notif foreign key (notification_ID) references ep_notification(notification_ID)
+   );
+   
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_user_notification (
+    ID                  int(11) primary key not null auto_increment,
+    User_ID             int(11),
+    notification_ID     int(11),
+    is_viewed           char(1) default 'N',
+    updated_time        timestamp default now(),
+    constraint fk_ep_urole_notif_fn_user foreign key (User_ID) references fn_user(user_id),
+    constraint fk_ep_urole_notif_fn_notif foreign key (notification_ID) references ep_notification(notification_ID)
+   );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_app_sort; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_pers_user_app_sort (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   sort_pref char(1) not null,
+   unique key uk_1_ep_pers_user_app_sort (user_id),
+   constraint fk_ep_pers_user_app_sort_fn_user foreign key (user_id) references fn_user(user_id)
+ );
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_app_man_sort; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_pers_user_app_man_sort (
+   id         int(11) not null primary key auto_increment,
+   user_id    int(11) not null,
+   app_id     int(11) not null,
+   sort_order int(11) not null,
+   unique key uk_1_ep_pers_user_app_man_sort (user_id, app_id),
+   constraint fk_ep_pers_app_man_sort_fn_user foreign key (user_id) references fn_user(user_id),
+   constraint fk_ep_pers_app_man_sort_fn_app foreign key (app_id) references fn_app(app_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_widget_catalog (
+   widget_id int(11) not null auto_increment,
+   wdg_name varchar(100) not null default '?',
+   service_id int(11) default null,
+   wdg_desc varchar(200) default null,
+   wdg_file_loc varchar(256) not null default '?',
+   all_user_flag char(1) not null default 'N',
+   primary key (widget_id)
+ );
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_role; TYPE: Table
+ -- ----------------------------------------------------------
+ create table ep_widget_catalog_role (
+   widget_id   int(10) not null,
+   app_id              int(11) default '1',
+   role_id             int(10) not null,
+   key fk_ep_widget_catalog_role_fn_widget (widget_id),
+   key fk_ep_widget_catalog_role_ref_fn_role (role_id),
+   key fk_ep_widget_catalog_role_app_id  (app_id),
+   constraint fk_ep_widget_catalog_role_fn_widget foreign key (widget_id) references ep_widget_catalog (widget_id),
+   constraint fk_ep_widget_catalog_role_ref_fn_role foreign key (role_id) references fn_role (role_id),
+   constraint fk_ep_widget_catalog_role_app_id foreign key (app_id) references fn_app (app_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_widget_placement; TYPE: Table
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_pers_user_widget_placement (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   widget_id int(11) not null,
+   x         int(11) not null,
+   y         int(11),
+   height    int(11),
+   width     int(11),
+   unique key uk_1_ep_pers_user_widg_place (user_id, widget_id),
+   constraint fk_ep_pers_user_widg_place_fn_user foreign key (user_id) references fn_user(user_id),
+   constraint fk_ep_pers_user_widg_place_ep_widg foreign key (widget_id) references ep_widget_catalog(widget_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_widget_sel; TYPE: TABLE
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_pers_user_widget_sel (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   widget_id int(11) not null,
+   status_cd char(1) not null,
+   unique key uk_1_ep_pers_user_widg_sel_user_widg (user_id, widget_id),
+   CONSTRAINT fk_1_ep_pers_user_wid_sel_fn_user FOREIGN KEY (user_id) REFERENCES fn_user (user_id),
+   CONSTRAINT fk_2_ep_pers_user_wid_sel_ep_wid FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_files; TYPE: TABLE
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_widget_catalog_files (
+        file_id                int(11) not null primary key auto_increment,
+        widget_id              int(11),
+               widget_name             VARCHAR(100) NOT NULL,
+               framework_js            LONGBLOB NULL,
+               controller_js           LONGBLOB NULL,
+               markup_html             LONGBLOB NULL,
+               widget_css                      LONGBLOB NULL
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: fn_role_v; TYPE: VIEW
+ -- All roles without an APP_ID are Portal only.
+ -- ----------------------------------------------------------
+ create view fn_role_v as
+  select fn_role.role_id as role_id,
+         fn_role.role_name as role_name,
+                fn_role.active_yn as active_yn,
+         fn_role.priority as priority,
+         fn_role.app_id as app_id,
+         fn_role.app_role_id as app_role_id
+ from fn_role where isnull(fn_role.app_id);
+
+-- end new 1702 tables/views
+
+-- new 1707 tables/views
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_roles_request; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+create table ep_user_roles_request (
+    req_id int(11) not null primary key auto_increment,
+    user_id int(11) not null,
+    app_id int(11) not null,
+       created_date timestamp default now(),
+       updated_date timestamp default now(),
+    request_status character varying(50) not null,
+       constraint fk_user_roles_req_fn_user foreign key (user_id) references fn_user(user_id),
+       constraint fk_user_roles_req_fn_app foreign key (app_id) references fn_app(app_id)
+    );
+  
+  
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_roles_request_det; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_user_roles_request_det (
+    id int(11) not null primary key auto_increment,
+    req_id int(11) default null,
+       requested_role_id int(10) not null,
+    request_type character varying(10) not null,
+    constraint fk_user_roles_req_fn_req_id foreign key (req_id) references ep_user_roles_request(req_id),
+    constraint fk_user_roles_req_fn_role_id foreign key (requested_role_id) references fn_role(role_id)
+    );
+       
+ -- ----------------------------------------------------------
+ -- NAME: ep_microservice; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_microservice (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       name VARCHAR(50) NULL DEFAULT NULL,
+       description VARCHAR(50) NULL DEFAULT NULL,
+       appId INT(11) NULL DEFAULT NULL,
+       endpoint_url VARCHAR(200) NULL DEFAULT NULL,
+       security_type VARCHAR(50) NULL DEFAULT NULL,
+       username VARCHAR(50) NULL DEFAULT NULL,
+       password VARCHAR(50) NULL DEFAULT NULL,
+       active CHAR(1) NOT NULL DEFAULT 'Y',
+       PRIMARY KEY (id),
+       CONSTRAINT FK_FN_APP_EP_MICROSERVICE FOREIGN KEY (appId) REFERENCES fn_app (app_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_microservice_parameter; TYPE: TABLE
+ -- ----------------------------------------------------------
+CREATE TABLE ep_microservice_parameter (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       service_id INT(11) NULL DEFAULT NULL,
+       para_key VARCHAR(50) NULL DEFAULT NULL,
+       para_value VARCHAR(50) NULL DEFAULT NULL,
+       PRIMARY KEY (id),
+       CONSTRAINT FK_EP_MICROSERIVCE_EP_MICROSERVICE_PARAMETER FOREIGN KEY (service_id) REFERENCES ep_microservice (id)
+);
+
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_preview_files; TYPE: TABLE
+ -- ----------------------------------------------------------
+CREATE TABLE ep_widget_preview_files (
+       preview_id INT(11) NOT NULL AUTO_INCREMENT,
+       html_file LONGBLOB NULL,
+       css_file LONGBLOB NULL,
+       javascript_file LONGBLOB NULL,
+       framework_file LONGBLOB NULL,
+       PRIMARY KEY (preview_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_microservice; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_widget_microservice (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       widget_id INT(11) NOT NULL DEFAULT '0',
+       microservice_id INT(11) NOT NULL DEFAULT '0',
+       PRIMARY KEY (id),
+       CONSTRAINT FK_EP_WIDGET_MICROSERVICE_EP_MICROSERVICE FOREIGN KEY (microservice_id) REFERENCES ep_microservice (id),
+       CONSTRAINT FK_EP_WIDGET_MICROSERVICE_EP_WIDGET FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_basic_auth_account; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_basic_auth_account (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       ext_app_name VARCHAR(50) NOT NULL,
+       username VARCHAR(50) NOT NULL,
+       password VARCHAR(50) null default null,
+    active_yn char(1) NOT NULL default 'Y',
+       PRIMARY KEY (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_parameter; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table  ep_widget_catalog_parameter (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       widget_id INT(11) NOT NULL,
+       user_id INT(11) NOT NULL,
+       param_id INT(11) NOT NULL,
+    user_value VARCHAR(50) NULL,
+       PRIMARY KEY (id),
+       CONSTRAINT EP_FN_USER_WIDGET_PARAMETER_FK FOREIGN KEY (user_id) REFERENCES fn_user (user_id),
+       CONSTRAINT EP_WIDGET_CATALOG_WIDGET_PARAMETER_FK FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id),
+       CONSTRAINT EP_PARAMETER_ID_WIDGET_PARAMETER_FK FOREIGN KEY (param_id) REFERENCES ep_microservice_parameter (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_web_analytics_source; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_web_analytics_source(
+       resource_id int(11) NOT NULL auto_increment,
+       app_id int(11) NOT NULL,
+    report_source varchar(500),
+    report_name  varchar(500),
+    PRIMARY KEY (resource_id),
+       FOREIGN KEY (app_id) REFERENCES fn_app(app_id)
+); 
+
+ -- Machine Learning Tables
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_model; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_ml_model(
+  time_stamp timestamp default now(),
+  group_id int(11) NOT NULL,
+  model longblob,
+  PRIMARY KEY (time_stamp,group_id)
+);
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_rec; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_ml_rec(
+  time_stamp timestamp default now(),
+  org_user_id varchar(20) NOT NULL,
+  rec varchar(4000) DEFAULT NULL,
+  PRIMARY KEY (time_stamp,org_user_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_user; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_ml_user(
+  time_stamp timestamp default now(),
+  org_user_id varchar(20) NOT NULL,
+  group_id int(11) NOT NULL,
+  PRIMARY KEY (time_stamp,org_user_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_endpoints; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table  ep_endpoints (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+    url VARCHAR(50) NOT NULL,
+       PRIMARY KEY (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_endpoints_basic_auth_account; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+create table  ep_endpoints_basic_auth_account (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       ep_id INT(11) DEFAULT NULL,
+       account_id INT(11) DEFAULT NULL,
+       PRIMARY KEY (id),
+       CONSTRAINT ep_endpoints_basic_auth_account_account_id_fk FOREIGN KEY (account_id) REFERENCES ep_basic_auth_account (id),
+       CONSTRAINT ep_endpoints_basic_auth_account_ep_id_fk FOREIGN KEY (ep_id) REFERENCES ep_endpoints (id)
+
+);
+
+-- end new 1707 tables/views
+
+-- new 1710 tables/views
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_app_function; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_app_function (
+app_id INT(11) NOT NULL,
+function_cd VARCHAR(250) NOT NULL,
+function_name VARCHAR(500) NOT NULL,
+PRIMARY KEY (function_cd, app_id),
+INDEX fk_ep_app_function_app_id (app_id),
+CONSTRAINT fk_ep_app_function_app_id FOREIGN KEY (app_id) REFERENCES fn_app (app_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_app_role_function; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE `ep_app_role_function` (
+`id` INT(11) NOT NULL AUTO_INCREMENT,
+`app_id` INT(11) NOT NULL,
+`role_id` INT(11) NOT NULL,
+`function_cd` VARCHAR(250) NOT NULL,
+`role_app_id` VARCHAR(20) NULL DEFAULT NULL,
+PRIMARY KEY (`id`),
+UNIQUE INDEX `UNIQUE KEY` (`app_id`, `role_id`, `function_cd`),
+CONSTRAINT `fk_ep_app_role_function_app_id` FOREIGN KEY (`app_id`) REFERENCES `fn_app` (`app_id`),
+CONSTRAINT `fk_ep_app_role_function_ep_app_func` FOREIGN KEY (`app_id`, `function_cd`) REFERENCES `ep_app_function` (`app_id`, `function_cd`),
+CONSTRAINT `fk_ep_app_role_function_role_id` FOREIGN KEY (`role_id`) REFERENCES `fn_role` (`role_id`)
+);
+
+-- end new 1710 tables/views
+
+-- ----------------------------------------------------------
+-- NAME: QUARTZ TYPE: INDEXES
+-- ----------------------------------------------------------
+create index idx_fn_qz_j_req_recovery on fn_qz_job_details(sched_name,requests_recovery);
+create index idx_fn_qz_j_grp on fn_qz_job_details(sched_name,job_group);
+create index idx_fn_qz_t_j on fn_qz_triggers(sched_name,job_name,job_group);
+create index idx_fn_qz_t_jg on fn_qz_triggers(sched_name,job_group);
+create index idx_fn_qz_t_c on fn_qz_triggers(sched_name,calendar_name);
+create index idx_fn_qz_t_g on fn_qz_triggers(sched_name,trigger_group);
+create index idx_fn_qz_t_state on fn_qz_triggers(sched_name,trigger_state);
+create index idx_fn_qz_t_n_state on fn_qz_triggers(sched_name,trigger_name,trigger_group,trigger_state);
+create index idx_fn_qz_t_n_g_state on fn_qz_triggers(sched_name,trigger_group,trigger_state);
+create index idx_fn_qz_t_next_fire_time on fn_qz_triggers(sched_name,next_fire_time);
+create index idx_fn_qz_t_nft_st on fn_qz_triggers(sched_name,trigger_state,next_fire_time);
+create index idx_fn_qz_t_nft_misfire on fn_qz_triggers(sched_name,misfire_instr,next_fire_time);
+create index idx_fn_qz_t_nft_st_misfire on fn_qz_triggers(sched_name,misfire_instr,next_fire_time,trigger_state);
+create index idx_fn_qz_t_nft_st_misfire_grp on fn_qz_triggers(sched_name,misfire_instr,next_fire_time,trigger_group,trigger_state);
+create index idx_fn_qz_ft_trig_inst_name on fn_qz_fired_triggers(sched_name,instance_name);
+create index idx_fn_qz_ft_inst_job_req_rcvry on fn_qz_fired_triggers(sched_name,instance_name,requests_recovery);
+create index idx_fn_qz_ft_j_g on fn_qz_fired_triggers(sched_name,job_name,job_group);
+create index idx_fn_qz_ft_jg on fn_qz_fired_triggers(sched_name,job_group);
+create index idx_fn_qz_ft_t_g on fn_qz_fired_triggers(sched_name,trigger_name,trigger_group);
+create index idx_fn_qz_ft_tg on fn_qz_fired_triggers(sched_name,trigger_group);
+
+
+-- ------------------ create view section
+--
+-- name: v_url_access; type: view
+--
+create view v_url_access as
+ select distinct m.action as url,
+    m.function_cd
+   from fn_menu m
+  where (m.action is not null)
+union
+ select distinct t.action as url,
+    t.function_cd
+   from fn_tab t
+  where (t.action is not null)
+union
+ select r.restricted_url as url,
+    r.function_cd
+   from fn_restricted_url r;
+   
+-- ------------------ alter table add constraint primary key section
+--
+-- name: cr_favorite_reports_user_idrep_id; type: constraint
+--
+alter table cr_favorite_reports 
+    add constraint cr_favorite_reports_user_idrep_id primary key (user_id, rep_id);
+--
+-- name: cr_folder_folder_id; type: constraint
+--
+alter table cr_folder
+    add constraint cr_folder_folder_id primary key (folder_id);
+--
+-- name: cr_folder_access_folder_access_id; type: constraint
+--
+alter table cr_folder_access
+    add constraint cr_folder_access_folder_access_id primary key (folder_access_id);
+--
+-- name: cr_hist_user_map_hist_iduser_id; type: constraint
+--
+alter table cr_hist_user_map
+    add constraint cr_hist_user_map_hist_iduser_id primary key (hist_id, user_id);
+--
+-- name: cr_lu_file_type_lookup_id; type: constraint
+--
+alter table cr_lu_file_type
+    add constraint cr_lu_file_type_lookup_id primary key (lookup_id);
+--
+-- name: cr_raptor_action_img_image_id; type: constraint
+--
+alter table cr_raptor_action_img
+    add constraint cr_raptor_action_img_image_id primary key (image_id);
+--
+-- name: cr_raptor_pdf_img_image_id; type: constraint
+--
+alter table cr_raptor_pdf_img
+    add constraint cr_raptor_pdf_img_image_id primary key (image_id);
+--
+-- name: cr_remote_schema_info_schema_prefix; type: constraint
+--
+alter table cr_remote_schema_info
+    add constraint cr_remote_schema_info_schema_prefix primary key (schema_prefix);
+--
+-- name: cr_report_rep_id; type: constraint
+--
+alter table cr_report
+    add constraint cr_report_rep_id primary key (rep_id);
+--
+-- name: cr_report_access_rep_idorder_no; type: constraint
+--
+alter table cr_report_access
+    add constraint cr_report_access_rep_idorder_no primary key (rep_id, order_no);
+--
+-- name: cr_report_email_sent_log_log_id; type: constraint
+--
+alter table cr_report_email_sent_log
+    add constraint cr_report_email_sent_log_log_id primary key (log_id);
+--
+-- name: cr_report_file_history_hist_id; type: constraint
+--
+alter table cr_report_file_history
+    add constraint cr_report_file_history_hist_id primary key (hist_id);
+--
+-- name: cr_report_schedule_schedule_id; type: constraint
+--
+alter table cr_report_schedule
+    add constraint cr_report_schedule_schedule_id primary key (schedule_id);
+--
+-- name: cr_report_schedule_users_schedule_idrep_iduser_idorder_no; type: constraint
+--
+alter table cr_report_schedule_users
+    add constraint cr_report_schedule_users_schedule_idrep_iduser_idorder_no primary key (schedule_id, rep_id, user_id, order_no);
+--
+-- name: cr_report_template_map_report_id; type: constraint
+--
+alter table cr_report_template_map
+    add constraint cr_report_template_map_report_id primary key (report_id);
+--
+-- name: cr_table_role_table_namerole_id; type: constraint
+--
+alter table cr_table_role
+    add constraint cr_table_role_table_namerole_id primary key (table_name, role_id);
+--
+-- name: cr_table_source_table_name; type: constraint
+--
+alter table cr_table_source
+    add constraint cr_table_source_table_name primary key (table_name);
+--
+-- name: fn_audit_action_audit_action_id; type: constraint
+--
+alter table fn_audit_action
+    add constraint fn_audit_action_audit_action_id primary key (audit_action_id);  
+--
+--
+-- name: fk_fn_audit_ref_205_fn_lu_ac; type: constraint
+--
+alter table fn_audit_log
+       add constraint fk_fn_audit_ref_205_fn_lu_ac foreign key (activity_cd) references fn_lu_activity(activity_cd);
+--
+-- name: fk_fn_role__ref_201_fn_funct; type: constraint
+--    
+alter table fn_role_function
+       add constraint fk_fn_role__ref_201_fn_funct foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fn_chat_logs_chat_log_id; type: constraint
+--
+alter table fn_chat_logs
+    add constraint fn_chat_logs_chat_log_id primary key (chat_log_id);
+--
+-- name: fn_chat_room_chat_room_id; type: constraint
+--
+alter table fn_chat_room
+    add constraint fn_chat_room_chat_room_id primary key (chat_room_id);
+--
+-- name: fn_chat_users_id; type: constraint
+--
+alter table fn_chat_users  
+    add constraint fn_chat_users_id primary key (id);
+--
+-- name: fn_lu_alert_method_alert_method_cd; type: constraint
+--
+alter table fn_lu_alert_method
+    add constraint fn_lu_alert_method_alert_method_cd primary key (alert_method_cd);
+--
+-- name: fn_lu_broadcast_site_broadcast_site_cd; type: constraint
+--
+alter table fn_lu_broadcast_site
+    add constraint fn_lu_broadcast_site_broadcast_site_cd primary key (broadcast_site_cd);
+--
+-- name: fn_lu_priority_priority_id; type: constraint
+--
+alter table fn_lu_priority
+    add constraint fn_lu_priority_priority_id primary key (priority_id);
+--
+-- name: fn_lu_role_type_role_type_id; type: constraint
+--
+alter table fn_lu_role_type
+    add constraint fn_lu_role_type_role_type_id primary key (role_type_id);
+--
+-- name: fn_lu_tab_set_tab_set_cd; type: constraint
+--
+alter table fn_lu_tab_set
+    add constraint fn_lu_tab_set_tab_set_cd primary key (tab_set_cd);
+--
+-- name: fn_lu_timezone_timezone_id; type: constraint
+--
+alter table fn_lu_timezone
+    add constraint fn_lu_timezone_timezone_id primary key (timezone_id);
+--
+-- name: fn_org_org_id; type: constraint
+--
+alter table fn_org
+    add constraint fn_org_org_id primary key (org_id);
+--
+-- name: fn_restricted_url_restricted_urlfunction_cd; type: constraint
+--
+alter table fn_restricted_url
+    add constraint fn_restricted_url_restricted_urlfunction_cd primary key (restricted_url, function_cd);
+--
+-- name: fn_role_composite_parent_role_idchild_role_id; type: constraint
+--
+alter table fn_role_composite
+    add constraint fn_role_composite_parent_role_idchild_role_id primary key (parent_role_id, child_role_id);
+--
+-- name: fn_role_function_role_idfunction_cd; type: constraint
+--
+alter table fn_role_function
+    add constraint fn_role_function_role_idfunction_cd primary key (role_id, function_cd);
+--
+-- name: fn_tab_tab_cd; type: constraint
+--
+alter table fn_tab
+    add constraint fn_tab_tab_cd primary key (tab_cd);
+--
+-- name: fn_tab_selected_selected_tab_cdtab_uri; type: constraint
+--
+alter table fn_tab_selected
+    add constraint fn_tab_selected_selected_tab_cdtab_uri primary key (selected_tab_cd, tab_uri);
+--
+-- name: fn_user_pseudo_role_pseudo_role_iduser_id; type: constraint
+--
+alter table fn_user_pseudo_role
+    add constraint fn_user_pseudo_role_pseudo_role_iduser_id primary key (pseudo_role_id, user_id);
+--
+-- name: fn_user_role_user_idrole_id; type: constraint
+--
+alter table fn_user_role
+    add constraint fn_user_role_user_idrole_id primary key (user_id, role_id, app_id);
+-- ------------------ create index section
+--
+-- name: cr_report_create_idpublic_yntitle; type: index
+--
+create index cr_report_create_idpublic_yntitle using btree on cr_report (create_id, public_yn, title);
+--
+-- name: cr_table_join_dest_table_name; type: index
+--
+create index cr_table_join_dest_table_name using btree on cr_table_join (dest_table_name);
+--
+-- name: cr_table_join_src_table_name; type: index
+--
+create index cr_table_join_src_table_name using btree on cr_table_join (src_table_name);
+--
+-- name: fn_audit_log_activity_cd; type: index
+--
+create index fn_audit_log_activity_cd using btree on fn_audit_log (activity_cd);
+--
+-- name: fn_audit_log_user_id; type: index
+--
+create index fn_audit_log_user_id using btree on fn_audit_log (user_id);
+--
+-- name: fn_org_access_cd; type: index
+--
+create index fn_org_access_cd using btree on fn_org (access_cd);
+--
+-- name: fn_role_function_function_cd; type: index
+--
+create index fn_role_function_function_cd using btree on fn_role_function (function_cd);
+--
+-- name: fn_role_function_role_id; type: index
+--
+create index fn_role_function_role_id using btree on fn_role_function (role_id);
+--
+-- name: fn_user_address_id; type: index
+--
+create index fn_user_address_id using btree on fn_user (address_id); 
+--
+-- name: fn_user_alert_method_cd; type: index
+--
+create index fn_user_alert_method_cd using btree on fn_user (alert_method_cd); 
+--
+-- name: fn_user_hrid; type: index
+--
+create unique index fn_user_hrid using btree on fn_user (hrid); 
+--
+-- name: fn_user_login_id; type: index
+--
+create unique index fn_user_login_id using btree on fn_user (login_id); 
+--
+-- name: fn_user_org_id; type: index
+--
+create index fn_user_org_id using btree on fn_user (org_id); 
+--
+-- name: fn_user_role_role_id; type: index
+--
+create index fn_user_role_role_id using btree on fn_user_role (role_id);
+--
+-- name: fn_user_role_user_id; type: index
+--
+create index fn_user_role_user_id using btree on fn_user_role (user_id);
+--
+-- name: fk_fn_user__ref_178_fn_app_idx; type: index
+--
+create index fk_fn_user__ref_178_fn_app_idx on fn_user_role (app_id);
+ --
+ -- name: fn_role_name_app_id_idx; type: index
+ --
+ create unique index fn_role_name_app_id_idx using btree on fn_role (role_name,app_id);
+-- new for 1707
+create index ep_notif_recv_user_id_idx using btree on ep_role_notification (recv_user_id);
+  
+-- end new for 1707
+
+-- ------------------ alter table add constraint foreign key section
+--
+-- name: fk_fn_user__ref_178_fn_app; type: fk constraint
+--
+alter table fn_user_role
+       add constraint fk_fn_user__ref_178_fn_app foreign key (app_id) references fn_app(app_id);
+--
+-- name: fk_cr_repor_ref_14707_cr_repor; type: fk constraint
+--
+alter table cr_report_schedule
+    add constraint fk_cr_repor_ref_14707_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_repor_ref_14716_cr_repor; type: fk constraint
+--
+alter table cr_report_schedule_users
+    add constraint fk_cr_repor_ref_14716_cr_repor foreign key (schedule_id) references cr_report_schedule(schedule_id);
+--
+-- name: fk_cr_repor_ref_17645_cr_repor; type: fk constraint
+--
+alter table cr_report_log
+    add constraint fk_cr_repor_ref_17645_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_repor_ref_8550_cr_repor; type: fk constraint
+--
+alter table cr_report_access
+    add constraint fk_cr_repor_ref_8550_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_report_rep_id; type: fk constraint
+--
+alter table cr_report_email_sent_log
+    add constraint fk_cr_report_rep_id foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_table_ref_311_cr_tab; type: fk constraint
+--
+alter table cr_table_join
+    add constraint fk_cr_table_ref_311_cr_tab foreign key (src_table_name) references cr_table_source(table_name);
+--
+-- name: fk_cr_table_ref_315_cr_tab; type: fk constraint
+--
+alter table cr_table_join
+    add constraint fk_cr_table_ref_315_cr_tab foreign key (dest_table_name) references cr_table_source(table_name);
+--
+-- name: fk_cr_table_ref_32384_cr_table; type: fk constraint
+--
+alter table cr_table_role
+    add constraint fk_cr_table_ref_32384_cr_table foreign key (table_name) references cr_table_source(table_name);
+--
+-- name: fk_fn_tab_function_cd; type: fk constraint
+--
+alter table fn_tab
+    add constraint fk_fn_tab_function_cd foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fk_fn_tab_selected_tab_cd; type: fk constraint
+--
+alter table fn_tab_selected
+    add constraint fk_fn_tab_selected_tab_cd foreign key (selected_tab_cd) references fn_tab(tab_cd);
+--
+-- name: fk_fn_tab_set_cd; type: fk constraint
+--
+alter table fn_tab
+    add constraint fk_fn_tab_set_cd foreign key (tab_set_cd) references fn_lu_tab_set(tab_set_cd);
+--
+-- name: fk_fn_user_ref_110_fn_org; type: fk constraint
+-- 
+alter table fn_user
+    add constraint fk_fn_user_ref_110_fn_org foreign key (org_id) references fn_org(org_id); 
+--
+-- name: fk_fn_user_ref_123_fn_lu_al; type: fk constraint
+--
+alter table fn_user
+    add constraint fk_fn_user_ref_123_fn_lu_al foreign key (alert_method_cd) references fn_lu_alert_method(alert_method_cd); 
+--
+-- name: fk_fn_user_ref_197_fn_user; type: fk constraint
+--
+ alter table fn_user
+    add constraint fk_fn_user_ref_197_fn_user foreign key (manager_id) references fn_user(user_id); 
+--
+-- name: fk_fn_user_ref_198_fn_user; type: fk constraint
+--
+alter table fn_user  
+    add constraint fk_fn_user_ref_198_fn_user foreign key (created_id) references fn_user(user_id); 
+--
+-- name: fk_fn_user_ref_199_fn_user; type: fk constraint
+--
+alter table fn_user  
+    add constraint fk_fn_user_ref_199_fn_user foreign key (modified_id) references fn_user(user_id); 
+--
+-- name: fk_parent_key_cr_folder; type: fk constraint
+--
+alter table cr_folder
+    add constraint fk_parent_key_cr_folder foreign key (parent_folder_id) references cr_folder(folder_id);
+--
+-- name: fk_pseudo_role_pseudo_role_id; type: fk constraint
+--
+alter table fn_user_pseudo_role 
+    add constraint fk_pseudo_role_pseudo_role_id foreign key (pseudo_role_id) references fn_role(role_id);
+--
+-- name: fk_pseudo_role_user_id; type: fk constraint
+--
+alter table fn_user_pseudo_role 
+    add constraint fk_pseudo_role_user_id foreign key (user_id) references fn_user(user_id);
+--
+-- name: fk_restricted_url_function_cd; type: fk constraint
+--
+alter table fn_restricted_url
+    add constraint fk_restricted_url_function_cd foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fk_timezone; type: fk constraint
+--
+alter table fn_user
+    add constraint fk_timezone foreign key (timezone) references fn_lu_timezone(timezone_id); 
+--
+-- name: sys_c0014614; type: fk constraint
+--
+alter table cr_report_file_history
+    add constraint sys_c0014614 foreign key (file_type_id) references cr_lu_file_type(lookup_id);
+--
+-- name: sys_c0014615; type: fk constraint
+--
+alter table cr_report_file_history
+    add constraint sys_c0014615 foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: sys_c0014616; type: fk constraint
+--
+alter table cr_hist_user_map  
+    add constraint sys_c0014616 foreign key (hist_id) references cr_report_file_history(hist_id);
+--
+-- name: sys_c0014617; type: fk constraint
+--
+alter table cr_hist_user_map  
+    add constraint sys_c0014617 foreign key (user_id) references fn_user(user_id);
+--
+-- name: sys_c0014618; type: fk constraint
+--
+alter table fn_menu_favorites
+add constraint sys_c0014618 foreign key (user_id) references fn_user(user_id);  
+    
+--
+-- name: sys_c0014619; type: fk constraint
+--
+alter table fn_menu_favorites
+add constraint sys_c0014619 foreign key (menu_id) references fn_menu_functional(menu_id);
+
+commit;
\ No newline at end of file
diff --git a/ecomp-portal-DB-common/PortalDDLMySql_2_6_Common.sql b/ecomp-portal-DB-common/PortalDDLMySql_2_6_Common.sql
new file mode 100644 (file)
index 0000000..1bf10c6
--- /dev/null
@@ -0,0 +1,1779 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This is the 2.1.0 version of Portal database called portal
+
+-- note to : database admin,  set the mysql system variable called lower_case_table_names
+--             it can be set 3 different ways: 
+--                     command-line options (cmd-line), 
+--                     options valid in configuration files (option file), or 
+--                     server system variables (system var). 
+
+-- it needs to be set to 1, then table names are stored in lowercase on disk and comparisons are not case sensitive. 
+-- -----------------------------------------------------------------------------------------------------------------
+set foreign_key_checks=1; 
+
+SET GLOBAL character_set_client     = utf8;
+SET GLOBAL character_set_connection = utf8;
+SET GLOBAL character_set_database   = utf8;
+SET GLOBAL character_set_results    = utf8;
+SET GLOBAL character_set_server     = utf8;
+
+create database portal;
+
+use portal;
+
+-- ------------------ create table section
+--
+-- name: cr_favorite_reports; type: table
+--
+create table cr_favorite_reports (
+    user_id integer not null,
+    rep_id integer not null
+);
+--
+-- name: cr_filehist_log; type: table
+--
+create table cr_filehist_log (
+    schedule_id numeric(11,0) not null,
+    url character varying(4000),
+    notes character varying(3500),
+    run_time timestamp
+);
+--
+-- name: cr_folder; type: table
+--
+create table cr_folder (
+    folder_id integer not null,
+    folder_name character varying(50) not null,
+    descr character varying(500),
+    create_id integer not null,
+    create_date timestamp not null,
+    parent_folder_id integer,
+    public_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_folder_access; type: table
+--
+create table cr_folder_access (
+    folder_access_id numeric(11,0) not null,
+    folder_id numeric(11,0) not null,
+    order_no numeric(11,0) not null,
+    role_id numeric(11,0),
+    user_id numeric(11,0),
+    read_only_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_hist_user_map; type: table
+--
+create table cr_hist_user_map (
+    hist_id int(11) not null,
+    user_id int(11) not null
+);
+--
+-- name: cr_lu_file_type; type: table
+--
+create table cr_lu_file_type (
+    lookup_id numeric(2,0) not null,
+    lookup_descr character varying(255) not null,
+    active_yn character(1) default 'y',
+    error_code numeric(11,0)
+);
+--
+-- name: cr_raptor_action_img; type: table
+--
+create table cr_raptor_action_img (
+    image_id character varying(100) not null,
+    image_loc character varying(400)
+);
+--
+-- name: cr_raptor_pdf_img; type: table
+--
+create table cr_raptor_pdf_img (
+    image_id character varying(100) not null,
+    image_loc character varying(400)
+);
+--
+-- name: cr_remote_schema_info; type: table
+--
+create table cr_remote_schema_info (
+    schema_prefix character varying(5) not null,
+    schema_desc character varying(75) not null,
+    datasource_type character varying(100)
+);
+--
+-- name: cr_report; type: table
+--
+create table cr_report (
+    rep_id numeric(11,0) not null,
+    title character varying(100) not null,
+    descr character varying(255),
+    public_yn character varying(1) default 'n' not null,
+    report_xml text,
+    create_id numeric(11,0),
+    create_date timestamp default now(),
+    maint_id numeric(11,0),
+    maint_date timestamp default now(), 
+    menu_id character varying(500),
+    menu_approved_yn character varying(1) default 'n' not null,
+    owner_id numeric(11,0),
+    folder_id integer default 0,
+    dashboard_type_yn character varying(1) default 'n',
+    dashboard_yn character varying(1) default 'n'
+);
+--
+-- name: cr_report_access; type: table
+--
+create table cr_report_access (
+    rep_id numeric(11,0) not null,
+    order_no numeric(11,0) not null,
+    role_id numeric(11,0),
+    user_id numeric(11,0),
+    read_only_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_report_dwnld_log; type: table
+--
+create table cr_report_dwnld_log (
+    user_id numeric(11,0) not null,
+    rep_id integer not null,
+    file_name character varying(100) not null,
+    dwnld_start_time timestamp default now() not null,
+    record_ready_time timestamp default now(),
+    filter_params character varying(2000)
+);
+--
+-- name: cr_report_email_sent_log; type: table
+--
+create table cr_report_email_sent_log (
+    log_id integer not null,
+    schedule_id numeric(11,0),
+    gen_key character varying(25) not null,
+    rep_id numeric(11,0) not null,
+    user_id numeric(11,0),
+    sent_date timestamp default now(),
+    access_flag character varying(1) default 'y' not null,
+    touch_date timestamp default now()
+);
+--
+-- name: cr_report_file_history; type: table
+--
+create table cr_report_file_history (
+    hist_id int(11) not null,
+    sched_user_id numeric(11,0) not null,
+    schedule_id numeric(11,0) not null,
+    user_id numeric(11,0) not null,
+    rep_id numeric(11,0),
+    run_date timestamp,
+    recurrence character varying(50),
+    file_type_id numeric(2,0),
+    file_name character varying(80),
+    file_blob blob,
+    file_size numeric(11,0),
+    raptor_url character varying(4000),
+    error_yn character(1) default 'n',
+    error_code numeric(11,0),
+    deleted_yn character(1) default 'n',
+    deleted_by numeric(38,0)
+);
+--
+-- name: cr_report_log; type: table
+--
+create table cr_report_log (
+    rep_id numeric(11,0) not null,
+    log_time timestamp not null,
+    user_id numeric(11,0) not null,
+    action character varying(2000) not null,
+    action_value character varying(50),
+    form_fields character varying(4000)
+);
+--
+-- name: cr_report_schedule; type: table
+--
+create table cr_report_schedule (
+    schedule_id numeric(11,0) not null,
+    sched_user_id numeric(11,0) not null,
+    rep_id numeric(11,0) not null,
+    enabled_yn character varying(1) not null,
+    start_date timestamp default now(),
+    end_date timestamp default now(),
+    run_date timestamp default now(),
+    recurrence character varying(50),
+    conditional_yn character varying(1) not null,
+    condition_sql character varying(4000),
+    notify_type integer default 0,
+    max_row integer default 1000,
+    initial_formfields character varying(3500),
+    processed_formfields character varying(3500),
+    formfields character varying(3500),
+    condition_large_sql text,
+    encrypt_yn character(1) default 'n',
+    attachment_yn character(1) default 'y'
+);
+--
+-- name: cr_report_schedule_users; type: table
+--
+create table cr_report_schedule_users (
+    schedule_id numeric(11,0) not null,
+    rep_id numeric(11,0) not null,
+    user_id numeric(11,0) not null,
+    role_id numeric(11,0),
+    order_no numeric(11,0) not null
+);
+--
+-- name: cr_report_template_map; type: table
+--
+create table cr_report_template_map (
+    report_id integer not null,
+    template_file character varying(200)
+);
+--
+-- name: cr_schedule_activity_log; type: table
+--
+create table cr_schedule_activity_log (
+    schedule_id numeric(11,0) not null,
+    url character varying(4000),
+    notes character varying(2000),
+    run_time timestamp
+);
+--
+-- name: cr_table_join; type: table
+--
+create table cr_table_join (
+    src_table_name character varying(30) not null,
+    dest_table_name character varying(30) not null,
+    join_expr character varying(500) not null
+);
+--
+-- name: cr_table_role; type: table
+--
+create table cr_table_role (
+    table_name character varying(30) not null,
+    role_id numeric(11,0) not null
+);
+--
+-- name: cr_table_source; type: table
+--
+create table cr_table_source (
+    table_name character varying(30) not null,
+    display_name character varying(30) not null,
+    pk_fields character varying(200),
+    web_view_action character varying(50),
+    large_data_source_yn character varying(1) default 'n' not null,
+    filter_sql character varying(4000),
+    source_db character varying(50)
+);
+--
+-- name: fn_lu_timezone; type: table
+--
+create table fn_lu_timezone (
+    timezone_id int(11) not null,
+    timezone_name character varying(100) not null,
+    timezone_value character varying(100) not null
+);
+
+create table fn_user (
+    user_id int(11) not null primary key  auto_increment,
+    org_id int(11),
+    manager_id int(11),
+    first_name character varying(50),
+    middle_name character varying(50),
+    last_name character varying(50),
+    phone character varying(25),
+    fax character varying(25),
+    cellular character varying(25),
+    email character varying(50),
+    address_id numeric(11,0),
+    alert_method_cd character varying(10),
+    hrid character varying(20),
+    org_user_id CHARACTER VARYING(60),
+    org_code character varying(30),
+    login_id character varying(60),
+    login_pwd character varying(100),
+    last_login_date timestamp,
+    active_yn character varying(1) default 'y' not null,
+    created_id int(11),
+    created_date timestamp default now(),
+    modified_id int(11),
+    modified_date timestamp default now(),
+    is_internal_yn character(1) default 'n' not null,
+    address_line_1 character varying(100),
+    address_line_2 character varying(100),
+    city character varying(50),
+    state_cd character varying(3),
+    zip_code character varying(11),
+    country_cd character varying(3),
+    location_clli character varying(8),
+    org_manager_userid CHARACTER VARYING(20),
+    company character varying(100),
+    department_name character varying(100),
+    job_title character varying(100),
+    timezone int(11),
+    department character varying(25),
+    business_unit character varying(25),
+    business_unit_name character varying(100),
+    cost_center character varying(25),
+    fin_loc_code character varying(10),
+    silo_status character varying(10),
+    is_system_user character(1) default 'N',
+    language_id int(2) default 1
+);
+
+create table fn_language(
+    language_id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+    language_name VARCHAR(100) NOT NULL,
+    language_alias VARCHAR(100) NOT NULL
+);
+
+create table fn_display_text(
+    id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+    language_id int(11) NOT NULL,
+    text_id int(11) NOT NULL,
+    text_label VARCHAR(100) NOT NULL
+);
+--
+-- name: fn_role; type: table
+--
+create table fn_role (
+    role_id int(11) not null primary key auto_increment,
+    role_name character varying(300) not null,
+    active_yn character varying(1) default 'y' not null,
+    priority numeric(4,0),
+    app_id int(11) default null,
+    app_role_id int(11) default null
+
+);
+--
+-- name: fn_audit_action; type: table
+--
+create table fn_audit_action (
+    audit_action_id integer not null,
+    class_name character varying(500) not null,
+    method_name character varying(50) not null,
+    audit_action_cd character varying(20) not null,
+    audit_action_desc character varying(200),
+    active_yn character varying(1)
+);
+--
+-- name: fn_audit_action_log; type: table
+--
+create table fn_audit_action_log (
+    audit_log_id integer not null primary key  auto_increment,
+    audit_action_cd character varying(200),
+    action_time timestamp,
+    user_id numeric(11,0),
+    class_name character varying(100),
+    method_name character varying(50),
+    success_msg character varying(20),
+    error_msg character varying(500)
+);
+--
+-- name: fn_lu_activity; type: table
+--
+create table fn_lu_activity (
+    activity_cd character varying(50) not null primary key,
+    activity character varying(50) not null
+);
+--
+-- name: fn_audit_log; type: table
+--
+create table fn_audit_log (
+    log_id int(11) not null primary key auto_increment,
+    user_id int(11) not null,
+    activity_cd character varying(50) not null,
+    audit_date timestamp default now() not null,
+    comments character varying(1000),
+    affected_record_id_bk character varying(500),
+    affected_record_id character varying(4000),
+    constraint fk_fn_audit_ref_209_fn_user foreign key (user_id) references fn_user(user_id)
+);
+--
+-- name: fn_broadcast_message; type: table
+--
+create table fn_broadcast_message (
+    message_id int(11) not null primary key auto_increment,
+    message_text character varying(1000) not null,
+    message_location_id numeric(11,0) not null,
+    broadcast_start_date timestamp not null  default now(),
+    broadcast_end_date timestamp not null default now(),
+    active_yn character(1) default 'y' not null,
+    sort_order numeric(4,0) not null,
+    broadcast_site_cd character varying(50)
+);
+--
+-- name: fn_chat_logs; type: table
+--
+create table fn_chat_logs (
+    chat_log_id integer not null,
+    chat_room_id integer,
+    user_id integer,
+    message character varying(1000),
+    message_date_time timestamp
+);
+--
+-- name: fn_chat_room; type: table
+--
+create table fn_chat_room (
+    chat_room_id integer not null,
+    name character varying(50) not null,
+    description character varying(500),
+    owner_id integer,
+    created_date timestamp default now(),
+    updated_date timestamp default now()
+);
+--
+-- name: fn_chat_users; type: table
+--
+create table fn_chat_users (
+    chat_room_id integer,
+    user_id integer,
+    last_activity_date_time timestamp,
+    chat_status character varying(20),
+    id integer not null
+);
+--
+-- name: fn_datasource; type: table
+--
+create table fn_datasource (
+    id integer not null primary key auto_increment,
+    name character varying(50),
+    driver_name character varying(256),
+    server character varying(256),
+    port integer,
+    user_name character varying(256),
+    password character varying(256),
+    url character varying(256),
+    min_pool_size integer,
+    max_pool_size integer,
+    adapter_id integer,
+    ds_type character varying(20)
+);
+--
+-- name: fn_function; type: table
+--
+create table fn_function (
+    function_cd character varying(30) not null primary key,
+    function_name character varying(50) not null
+);
+--
+-- name: fn_lu_alert_method; type: table
+--
+create table fn_lu_alert_method (
+    alert_method_cd character varying(10) not null,
+    alert_method character varying(50) not null
+);
+--
+-- name: fn_lu_broadcast_site; type: table
+--
+create table fn_lu_broadcast_site (
+    broadcast_site_cd character varying(50) not null,
+    broadcast_site_descr character varying(100)
+);
+--
+-- name: fn_lu_menu_set; type: table
+--
+create table fn_lu_menu_set (
+    menu_set_cd character varying(10) not null primary key,
+    menu_set_name character varying(50) not null
+);
+--
+-- name: fn_lu_priority; type: table
+--
+create table fn_lu_priority (
+    priority_id numeric(11,0) not null,
+    priority character varying(50) not null,
+    active_yn character(1) not null,
+    sort_order numeric(5,0)
+);
+--
+-- name: fn_lu_role_type; type: table
+--
+create table fn_lu_role_type (
+    role_type_id numeric(11,0) not null,
+    role_type character varying(50) not null
+);
+--
+-- name: fn_lu_tab_set; type: table
+--
+create table fn_lu_tab_set (
+    tab_set_cd character varying(30) not null,
+    tab_set_name character varying(50) not null
+);
+--
+-- name: fn_menu; type: table
+--
+create table fn_menu (
+    menu_id int(11) not null primary key auto_increment,
+    label character varying(100),
+    parent_id int(11),
+    sort_order numeric(4,0),
+    action character varying(200),
+    function_cd character varying(30),
+    active_yn character varying(1) default 'y' not null,
+    servlet character varying(50),
+    query_string character varying(200),
+    external_url character varying(200),
+    target character varying(25),
+    menu_set_cd character varying(10) default 'app',
+    separator_yn character(1) default 'n',
+    image_src character varying(100),
+    constraint fk_fn_menu_ref_196_fn_menu foreign key (parent_id) references fn_menu(menu_id),
+    constraint fk_fn_menu_menu_set_cd foreign key (menu_set_cd) references fn_lu_menu_set(menu_set_cd)
+);
+
+create index idx_fn_menu_label on fn_menu(label);
+--
+-- name: fn_org; type: table
+--
+create table fn_org (
+    org_id int(11) not null,
+    org_name character varying(50) not null,
+    access_cd character varying(10)
+);
+--
+-- name: fn_restricted_url; type: table
+--
+create table fn_restricted_url (
+    restricted_url character varying(250) not null,
+    function_cd character varying(30) not null
+);
+--
+-- name: fn_role_composite; type: table
+--
+create table fn_role_composite (
+    parent_role_id int(11) not null,
+    child_role_id int(11) not null,
+    constraint fk_fn_role_composite_child foreign key (child_role_id) references fn_role(role_id),
+    constraint fk_fn_role_composite_parent foreign key (parent_role_id) references fn_role(role_id)
+);
+--
+-- name: fn_role_function; type: table
+--
+create table fn_role_function (
+    role_id int(11) not null,
+    function_cd character varying(30) not null,
+    constraint fk_fn_role__ref_198_fn_role foreign key (role_id) references fn_role(role_id)
+);
+--
+-- name: fn_tab; type: table
+--
+create table fn_tab (
+    tab_cd character varying(30) not null,
+    tab_name character varying(50) not null,
+    tab_descr character varying(100),
+    action character varying(100) not null,
+    function_cd character varying(30) not null,
+    active_yn character(1) not null,
+    sort_order numeric(11,0) not null,
+    parent_tab_cd character varying(30),
+    tab_set_cd character varying(30)
+);
+--
+-- name: fn_tab_selected; type: table
+--
+create table fn_tab_selected (
+    selected_tab_cd character varying(30) not null,
+    tab_uri character varying(40) not null
+);
+--
+-- name: fn_user_pseudo_role; type: table
+--
+create table fn_user_pseudo_role (
+    pseudo_role_id int(11) not null,
+    user_id int(11) not null
+);
+--
+-- name: fn_user_role; type: table
+--
+create table fn_user_role (
+    user_id int(10) not null,
+    role_id int(10) not null,
+    priority numeric(4,0),
+    app_id int(11) default 2,
+    constraint fk_fn_user__ref_172_fn_user foreign key (user_id) references fn_user(user_id),
+    constraint fk_fn_user__ref_175_fn_role foreign key (role_id) references fn_role(role_id)
+);
+--
+-- name: schema_info; type: table
+--
+create table schema_info (
+    SCHEMA_ID CHARACTER VARYING(25) not null,
+    SCHEMA_DESC CHARACTER VARYING(75) not null,
+    DATASOURCE_TYPE CHARACTER VARYING(100),
+    CONNECTION_URL VARCHAR(200) not null,
+    USER_NAME VARCHAR(45) not null,
+    PASSWORD VARCHAR(45) null default null,
+    DRIVER_CLASS VARCHAR(100) not null,
+    MIN_POOL_SIZE INT not null,
+    MAX_POOL_SIZE INT not null,
+    IDLE_CONNECTION_TEST_PERIOD INT not null
+
+);
+-- ----------------------------------------------------------
+-- name: fn_app; type: table
+-- ----------------------------------------------------------
+create table fn_app (
+  app_id int(11) primary key not null auto_increment,
+  app_name varchar(100) not null default '?',
+  app_image_url varchar(256) default null,
+  app_description varchar(512) default null,
+  app_notes varchar(4096) default null,
+  app_url varchar(256) default null,
+  app_alternate_url varchar(256) default null,
+  app_rest_endpoint varchar(2000) default null,
+  ml_app_name varchar(50) not null default '?',
+  ml_app_admin_id varchar(7) not null default '?',
+  mots_id int(11) default null,
+  app_password varchar(256) default null,
+  open char(1) default 'N',
+  enabled char(1) default 'Y',
+  thumbnail mediumblob null default null,
+  app_username varchar(50),
+  ueb_key varchar(256) default null,
+  ueb_secret varchar(256) default null,
+  ueb_topic_name varchar(256) default null,
+  app_type int(11) not null default 1,
+  auth_central char(1) not null default 'N',
+  auth_namespace varchar(100) null default null
+);
+
+-- ------------------ functional menu tables -------------------
+--
+-- table structure for table fn_menu_functional
+--
+create table fn_menu_functional (
+  menu_id int(11) not null auto_increment,
+  column_num int(2) not null,
+  text varchar(100) not null,
+  parent_menu_id int(11) default null,
+  url varchar(128) not null default '',
+  active_yn varchar(1) not null default 'y',
+  image_src varchar(100) default null,
+  primary key (menu_id),
+  key fk_fn_menu_func_parent_menu_id_idx (parent_menu_id),
+  constraint fk_fn_menu_func_parent_menu_id foreign key (parent_menu_id) references fn_menu_functional (menu_id) on delete no action on update no action
+);
+--
+-- table structure for table fn_menu_functional_ancestors
+--
+
+create table fn_menu_functional_ancestors (
+  id int(11) not null auto_increment,
+  menu_id int(11) not null,
+  ancestor_menu_id int(11) not null,
+  depth int(2) not null,
+  primary key (id),
+  key fk_fn_menu_func_anc_menu_id_idx (menu_id),
+  key fk_fn_menu_func_anc_anc_menu_id_idx (ancestor_menu_id),
+  constraint fk_fn_menu_func_anc_anc_menu_id foreign key (ancestor_menu_id) references fn_menu_functional (menu_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_anc_menu_id foreign key (menu_id) references fn_menu_functional (menu_id) on delete no action on update no action
+);
+--
+-- table structure for table fn_menu_functional_roles
+--
+create table fn_menu_functional_roles (
+  id int(11) not null auto_increment,
+  menu_id int(11) not null,
+  app_id int(11) not null,
+  role_id int(10) not null,
+  primary key (id),
+  key fk_fn_menu_func_roles_menu_id_idx (menu_id),
+  key fk_fn_menu_func_roles_app_id_idx (app_id),
+  key fk_fn_menu_func_roles_role_id_idx (role_id),
+  constraint fk_fn_menu_func_roles_app_id foreign key (app_id) references fn_app (app_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_roles_menu_id foreign key (menu_id) references fn_menu_functional (menu_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_roles_role_id foreign key (role_id) references fn_role (role_id) on delete no action on update no action
+);
+-- ----------------------------------------------------------
+-- NAME: FN_WORKFLOW; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_workflow (
+  id mediumint(9) not null auto_increment,
+  name varchar(20) not null,
+  description varchar(500) default null,
+  run_link varchar(300) default null,
+  suspend_link varchar(300) default null,
+  modified_link varchar(300) default null,
+  active_yn varchar(300) default null,
+  created varchar(300) default null,
+  created_by int(11) default null,
+  modified varchar(300) default null,
+  modified_by int(11) default null,
+  workflow_key varchar(50) default null,
+  primary key (id),
+  UNIQUE KEY name (name)
+);
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_SCHEDULE_WORKFLOWS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_schedule_workflows (
+  id_schedule_workflows bigint(25) primary key not null auto_increment, 
+  workflow_server_url varchar(45) default null,
+  workflow_key varchar(45) not null,
+  workflow_arguments varchar(45) default null,
+  startDateTimeCron varchar(45) default null,
+  endDateTime TIMESTAMP default NOW(),
+  start_date_time TIMESTAMP default NOW(),
+  recurrence varchar(45) default null
+  );
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_SHARED_CONTEXT; TYPE: TABLE
+-- ----------------------------------------------------------  
+create table fn_shared_context (
+    id int(11) not null auto_increment,
+    create_time timestamp not null,
+    context_id character varying(64) not null,
+    ckey character varying(128) not null,
+       cvalue character varying(1024),
+       primary key (id),
+       UNIQUE KEY session_key (context_id, ckey) );
+
+       
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_JOB_DETAILS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_job_details (
+SCHED_NAME VARCHAR(120) not null,
+JOB_NAME VARCHAR(200) not null,
+JOB_GROUP VARCHAR(200) not null,
+DESCRIPTION VARCHAR(250) null,
+JOB_CLASS_NAME VARCHAR(250) not null,
+IS_DURABLE VARCHAR(1) not null,
+IS_NONCONCURRENT VARCHAR(1) not null,
+IS_UPDATE_DATA VARCHAR(1) not null,
+REQUESTS_RECOVERY VARCHAR(1) not null,
+JOB_DATA BLOB null,
+primary key (SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+JOB_NAME VARCHAR(200) not null,
+JOB_GROUP VARCHAR(200) not null,
+DESCRIPTION VARCHAR(250) null,
+NEXT_FIRE_TIME BIGINT(13) null,
+PREV_FIRE_TIME BIGINT(13) null,
+PRIORITY INTEGER null,
+TRIGGER_STATE VARCHAR(16) not null,
+TRIGGER_TYPE VARCHAR(8) not null,
+START_TIME BIGINT(13) not null,
+END_TIME BIGINT(13) null,
+CALENDAR_NAME VARCHAR(200) null,
+MISFIRE_INSTR SMALLINT(2) null,
+JOB_DATA BLOB null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
+REFERENCES FN_QZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SIMPLE_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_simple_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+REPEAT_COUNT BIGINT(7) not null,
+REPEAT_INTERVAL BIGINT(12) not null,
+TIMES_TRIGGERED BIGINT(10) not null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_CRON_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_cron_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+CRON_EXPRESSION VARCHAR(120) not null,
+TIME_ZONE_ID VARCHAR(80),
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SIMPROP_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_simprop_triggers (          
+    SCHED_NAME VARCHAR(120) not null,
+    TRIGGER_NAME VARCHAR(200) not null,
+    TRIGGER_GROUP VARCHAR(200) not null,
+    STR_PROP_1 VARCHAR(512) null,
+    STR_PROP_2 VARCHAR(512) null,
+    STR_PROP_3 VARCHAR(512) null,
+    INT_PROP_1 INT null,
+    INT_PROP_2 INT null,
+    LONG_PROP_1 BIGINT null,
+    LONG_PROP_2 BIGINT null,
+    DEC_PROP_1 NUMERIC(13,4) null,
+    DEC_PROP_2 NUMERIC(13,4) null,
+    BOOL_PROP_1 VARCHAR(1) null,
+    BOOL_PROP_2 VARCHAR(1) null,
+    primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) 
+    REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_BLOB_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_blob_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+BLOB_DATA BLOB null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_CALENDARS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_calendars (
+SCHED_NAME VARCHAR(120) not null,
+CALENDAR_NAME VARCHAR(200) not null,
+CALENDAR BLOB not null,
+primary key (SCHED_NAME,CALENDAR_NAME)
+);
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_PAUSED_TRIGGER_GRPS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_paused_trigger_grps (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+primary key (SCHED_NAME,TRIGGER_GROUP)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_FIRED_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_fired_triggers (
+SCHED_NAME VARCHAR(120) not null,
+ENTRY_ID VARCHAR(95) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+INSTANCE_NAME VARCHAR(200) not null,
+FIRED_TIME BIGINT(13) not null,
+SCHED_TIME BIGINT(13) not null,
+PRIORITY INTEGER not null,
+STATE VARCHAR(16) not null,
+JOB_NAME VARCHAR(200) null,
+JOB_GROUP VARCHAR(200) null,
+IS_NONCONCURRENT VARCHAR(1) null,
+REQUESTS_RECOVERY VARCHAR(1) null,
+primary key (SCHED_NAME,ENTRY_ID)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SCHEDULER_STATE; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_scheduler_state (
+SCHED_NAME VARCHAR(120) not null,
+INSTANCE_NAME VARCHAR(200) not null,
+LAST_CHECKIN_TIME BIGINT(13) not null,
+CHECKIN_INTERVAL BIGINT(13) not null,
+primary key (SCHED_NAME,INSTANCE_NAME)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_LOCKS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_locks (
+SCHED_NAME VARCHAR(120) not null,
+LOCK_NAME VARCHAR(40) not null,
+primary key (SCHED_NAME,LOCK_NAME)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_MENU_FAVORITES; TYPE: TABLE
+-- ----------------------------------------------------------
+
+create table fn_menu_favorites (
+  user_id int(11) not null,
+  menu_id int(11) not null,
+  primary key (user_id,menu_id)
+);
+
+-- FACELIFT - Table for Events, News and Resources
+
+create table fn_common_widget_data(
+       id int auto_increment, 
+       category varchar(32), 
+       href varchar(512), 
+       title varchar(256), 
+       content varchar(4096), 
+       event_date varchar(10), -- YYYY-MM-DD 
+       sort_order int, 
+       primary key (id)
+);
+
+create table fn_app_contact_us (
+  app_id int(11) not null,
+  contact_name varchar(128) default null,
+  contact_email varchar(128) default null,
+  url varchar(256) default null,
+  active_yn varchar(2) default null,
+  description varchar(1024) default null,
+  primary key (app_id),
+  constraint fk_fn_a_con__ref_202_fn_app foreign key (app_id) references fn_app (app_id)
+);
+
+-- new 1610.2
+create table fn_pers_user_app_sel (
+  id   int(11) not null auto_increment,
+  user_id   int(11) not null,
+  app_id    int(11) not null,
+  status_cd char(1) not null,
+  primary key(id),
+  constraint fk_1_fn_pers_user_app_sel_fn_user foreign key (user_id) references fn_user (user_id),
+  constraint fk_2_fn_pers_user_app_sel_fn_app  foreign key (app_id)  references fn_app (app_id)
+);
+
+-- end new 1610.2
+
+-- new 1702 tables/views
+ -- 1702 Additions for User Notifications
+ -- ----------------------------------------------------------
+ -- NAME: ep_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_notification (
+    notification_ID     int(11) primary key not null auto_increment,
+    is_for_online_users char(1) default 'N',
+    is_for_all_roles    char(1) default 'N',
+    active_YN           char(1) default 'Y',
+    msg_header          varchar(100),
+    msg_description     varchar(2000),
+    msg_source          varchar(50) default 'EP',
+    start_time          timestamp default now(),
+    end_time            timestamp null,
+    priority            int(11),
+    creator_ID          int(11) null default null,
+    created_date        timestamp null default null,
+    notification_hyperlink varchar(512) null default null  -- new column for 1710
+   );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_role_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_role_notification (
+   ID                  int(11) primary key not null auto_increment,
+   notification_ID     int(11),
+   role_ID             int(11),
+   recv_user_id        int(11) null,
+   constraint fk_ep_role_notif_fn_role foreign key (role_ID) references fn_role(role_id),
+   constraint fk_ep_role_notif_fn_notif foreign key (notification_ID) references ep_notification(notification_ID)
+   );
+   
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_user_notification (
+    ID                  int(11) primary key not null auto_increment,
+    User_ID             int(11),
+    notification_ID     int(11),
+    is_viewed           char(1) default 'N',
+    updated_time        timestamp default now(),
+    constraint fk_ep_urole_notif_fn_user foreign key (User_ID) references fn_user(user_id),
+    constraint fk_ep_urole_notif_fn_notif foreign key (notification_ID) references ep_notification(notification_ID)
+   );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_app_sort; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_pers_user_app_sort (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   sort_pref char(1) not null,
+   unique key uk_1_ep_pers_user_app_sort (user_id),
+   constraint fk_ep_pers_user_app_sort_fn_user foreign key (user_id) references fn_user(user_id)
+ );
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_app_man_sort; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_pers_user_app_man_sort (
+   id         int(11) not null primary key auto_increment,
+   user_id    int(11) not null,
+   app_id     int(11) not null,
+   sort_order int(11) not null,
+   unique key uk_1_ep_pers_user_app_man_sort (user_id, app_id),
+   constraint fk_ep_pers_app_man_sort_fn_user foreign key (user_id) references fn_user(user_id),
+   constraint fk_ep_pers_app_man_sort_fn_app foreign key (app_id) references fn_app(app_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_widget_catalog (
+   widget_id int(11) not null auto_increment,
+   wdg_name varchar(100) not null default '?',
+   service_id int(11) default null,
+   wdg_desc varchar(200) default null,
+   wdg_file_loc varchar(256) not null default '?',
+   all_user_flag char(1) not null default 'N',
+   primary key (widget_id)
+ );
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_role; TYPE: Table
+ -- ----------------------------------------------------------
+ create table ep_widget_catalog_role (
+   widget_id   int(10) not null,
+   app_id              int(11) default '1',
+   role_id             int(10) not null,
+   key fk_ep_widget_catalog_role_fn_widget (widget_id),
+   key fk_ep_widget_catalog_role_ref_fn_role (role_id),
+   key fk_ep_widget_catalog_role_app_id  (app_id),
+   constraint fk_ep_widget_catalog_role_fn_widget foreign key (widget_id) references ep_widget_catalog (widget_id),
+   constraint fk_ep_widget_catalog_role_ref_fn_role foreign key (role_id) references fn_role (role_id),
+   constraint fk_ep_widget_catalog_role_app_id foreign key (app_id) references fn_app (app_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_widget_placement; TYPE: Table
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_pers_user_widget_placement (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   widget_id int(11) not null,
+   x         int(11) not null,
+   y         int(11),
+   height    int(11),
+   width     int(11),
+   unique key uk_1_ep_pers_user_widg_place (user_id, widget_id),
+   constraint fk_ep_pers_user_widg_place_fn_user foreign key (user_id) references fn_user(user_id),
+   constraint fk_ep_pers_user_widg_place_ep_widg foreign key (widget_id) references ep_widget_catalog(widget_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_widget_sel; TYPE: TABLE
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_pers_user_widget_sel (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   widget_id int(11) not null,
+   status_cd char(1) not null,
+   unique key uk_1_ep_pers_user_widg_sel_user_widg (user_id, widget_id),
+   CONSTRAINT fk_1_ep_pers_user_wid_sel_fn_user FOREIGN KEY (user_id) REFERENCES fn_user (user_id),
+   CONSTRAINT fk_2_ep_pers_user_wid_sel_ep_wid FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_files; TYPE: TABLE
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_widget_catalog_files (
+        file_id                int(11) not null primary key auto_increment,
+        widget_id              int(11),
+               widget_name             VARCHAR(100) NOT NULL,
+               framework_js            LONGBLOB NULL,
+               controller_js           LONGBLOB NULL,
+               markup_html             LONGBLOB NULL,
+               widget_css                      LONGBLOB NULL
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: fn_role_v; TYPE: VIEW
+ -- All roles without an APP_ID are Portal only.
+ -- ----------------------------------------------------------
+ create view fn_role_v as
+  select fn_role.role_id as role_id,
+         fn_role.role_name as role_name,
+                fn_role.active_yn as active_yn,
+         fn_role.priority as priority,
+         fn_role.app_id as app_id,
+         fn_role.app_role_id as app_role_id
+ from fn_role where isnull(fn_role.app_id);
+
+-- end new 1702 tables/views
+
+-- new 1707 tables/views
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_roles_request; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+create table ep_user_roles_request (
+    req_id int(11) not null primary key auto_increment,
+    user_id int(11) not null,
+    app_id int(11) not null,
+       created_date timestamp default now(),
+       updated_date timestamp default now(),
+    request_status character varying(50) not null,
+       constraint fk_user_roles_req_fn_user foreign key (user_id) references fn_user(user_id),
+       constraint fk_user_roles_req_fn_app foreign key (app_id) references fn_app(app_id)
+    );
+  
+  
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_roles_request_det; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_user_roles_request_det (
+    id int(11) not null primary key auto_increment,
+    req_id int(11) default null,
+       requested_role_id int(10) not null,
+    request_type character varying(10) not null,
+    constraint fk_user_roles_req_fn_req_id foreign key (req_id) references ep_user_roles_request(req_id),
+    constraint fk_user_roles_req_fn_role_id foreign key (requested_role_id) references fn_role(role_id)
+    );
+       
+ -- ----------------------------------------------------------
+ -- NAME: ep_microservice; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_microservice (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       name VARCHAR(50) NULL DEFAULT NULL,
+       description VARCHAR(50) NULL DEFAULT NULL,
+       appId INT(11) NULL DEFAULT NULL,
+       endpoint_url VARCHAR(200) NULL DEFAULT NULL,
+       security_type VARCHAR(50) NULL DEFAULT NULL,
+       username VARCHAR(50) NULL DEFAULT NULL,
+       password VARCHAR(50) NULL DEFAULT NULL,
+       active CHAR(1) NOT NULL DEFAULT 'Y',
+       PRIMARY KEY (id),
+       CONSTRAINT FK_FN_APP_EP_MICROSERVICE FOREIGN KEY (appId) REFERENCES fn_app (app_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_microservice_parameter; TYPE: TABLE
+ -- ----------------------------------------------------------
+CREATE TABLE ep_microservice_parameter (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       service_id INT(11) NULL DEFAULT NULL,
+       para_key VARCHAR(50) NULL DEFAULT NULL,
+       para_value VARCHAR(50) NULL DEFAULT NULL,
+       PRIMARY KEY (id),
+       CONSTRAINT FK_EP_MICROSERIVCE_EP_MICROSERVICE_PARAMETER FOREIGN KEY (service_id) REFERENCES ep_microservice (id)
+);
+
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_preview_files; TYPE: TABLE
+ -- ----------------------------------------------------------
+CREATE TABLE ep_widget_preview_files (
+       preview_id INT(11) NOT NULL AUTO_INCREMENT,
+       html_file LONGBLOB NULL,
+       css_file LONGBLOB NULL,
+       javascript_file LONGBLOB NULL,
+       framework_file LONGBLOB NULL,
+       PRIMARY KEY (preview_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_microservice; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_widget_microservice (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       widget_id INT(11) NOT NULL DEFAULT '0',
+       microservice_id INT(11) NOT NULL DEFAULT '0',
+       PRIMARY KEY (id),
+       CONSTRAINT FK_EP_WIDGET_MICROSERVICE_EP_MICROSERVICE FOREIGN KEY (microservice_id) REFERENCES ep_microservice (id),
+       CONSTRAINT FK_EP_WIDGET_MICROSERVICE_EP_WIDGET FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_basic_auth_account; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_basic_auth_account (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       ext_app_name VARCHAR(50) NOT NULL,
+       username VARCHAR(50) NOT NULL,
+       password VARCHAR(50) null default null,
+    active_yn char(1) NOT NULL default 'Y',
+       PRIMARY KEY (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_parameter; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table  ep_widget_catalog_parameter (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       widget_id INT(11) NOT NULL,
+       user_id INT(11) NOT NULL,
+       param_id INT(11) NOT NULL,
+    user_value VARCHAR(50) NULL,
+       PRIMARY KEY (id),
+       CONSTRAINT EP_FN_USER_WIDGET_PARAMETER_FK FOREIGN KEY (user_id) REFERENCES fn_user (user_id),
+       CONSTRAINT EP_WIDGET_CATALOG_WIDGET_PARAMETER_FK FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id),
+       CONSTRAINT EP_PARAMETER_ID_WIDGET_PARAMETER_FK FOREIGN KEY (param_id) REFERENCES ep_microservice_parameter (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_web_analytics_source; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_web_analytics_source(
+       resource_id int(11) NOT NULL auto_increment,
+       app_id int(11) NOT NULL,
+    report_source varchar(500),
+    report_name  varchar(500),
+    PRIMARY KEY (resource_id),
+       FOREIGN KEY (app_id) REFERENCES fn_app(app_id)
+); 
+
+ -- Machine Learning Tables
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_model; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_ml_model(
+  time_stamp timestamp default now(),
+  group_id int(11) NOT NULL,
+  model longblob,
+  PRIMARY KEY (time_stamp,group_id)
+);
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_rec; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_ml_rec(
+  time_stamp timestamp default now(),
+  org_user_id varchar(20) NOT NULL,
+  rec varchar(4000) DEFAULT NULL,
+  PRIMARY KEY (time_stamp,org_user_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_user; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_ml_user(
+  time_stamp timestamp default now(),
+  org_user_id varchar(20) NOT NULL,
+  group_id int(11) NOT NULL,
+  PRIMARY KEY (time_stamp,org_user_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_endpoints; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table  ep_endpoints (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+    url VARCHAR(50) NOT NULL,
+       PRIMARY KEY (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_endpoints_basic_auth_account; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+create table  ep_endpoints_basic_auth_account (
+       id INT(11) NOT NULL AUTO_INCREMENT,
+       ep_id INT(11) DEFAULT NULL,
+       account_id INT(11) DEFAULT NULL,
+       PRIMARY KEY (id),
+       CONSTRAINT ep_endpoints_basic_auth_account_account_id_fk FOREIGN KEY (account_id) REFERENCES ep_basic_auth_account (id),
+       CONSTRAINT ep_endpoints_basic_auth_account_ep_id_fk FOREIGN KEY (ep_id) REFERENCES ep_endpoints (id)
+
+);
+
+-- end new 1707 tables/views
+
+-- new 1710 tables/views
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_app_function; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_app_function (
+app_id INT(11) NOT NULL,
+function_cd VARCHAR(250) NOT NULL,
+function_name VARCHAR(500) NOT NULL,
+PRIMARY KEY (function_cd, app_id),
+INDEX fk_ep_app_function_app_id (app_id),
+CONSTRAINT fk_ep_app_function_app_id FOREIGN KEY (app_id) REFERENCES fn_app (app_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_app_role_function; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE `ep_app_role_function` (
+`id` INT(11) NOT NULL AUTO_INCREMENT,
+`app_id` INT(11) NOT NULL,
+`role_id` INT(11) NOT NULL,
+`function_cd` VARCHAR(250) NOT NULL,
+`role_app_id` VARCHAR(20) NULL DEFAULT NULL,
+PRIMARY KEY (`id`),
+UNIQUE INDEX `UNIQUE KEY` (`app_id`, `role_id`, `function_cd`),
+CONSTRAINT `fk_ep_app_role_function_app_id` FOREIGN KEY (`app_id`) REFERENCES `fn_app` (`app_id`),
+CONSTRAINT `fk_ep_app_role_function_ep_app_func` FOREIGN KEY (`app_id`, `function_cd`) REFERENCES `ep_app_function` (`app_id`, `function_cd`),
+CONSTRAINT `fk_ep_app_role_function_role_id` FOREIGN KEY (`role_id`) REFERENCES `fn_role` (`role_id`)
+);
+
+-- end new 1710 tables/views
+
+-- ----------------------------------------------------------
+-- NAME: QUARTZ TYPE: INDEXES
+-- ----------------------------------------------------------
+create index idx_fn_qz_j_req_recovery on fn_qz_job_details(sched_name,requests_recovery);
+create index idx_fn_qz_j_grp on fn_qz_job_details(sched_name,job_group);
+create index idx_fn_qz_t_j on fn_qz_triggers(sched_name,job_name,job_group);
+create index idx_fn_qz_t_jg on fn_qz_triggers(sched_name,job_group);
+create index idx_fn_qz_t_c on fn_qz_triggers(sched_name,calendar_name);
+create index idx_fn_qz_t_g on fn_qz_triggers(sched_name,trigger_group);
+create index idx_fn_qz_t_state on fn_qz_triggers(sched_name,trigger_state);
+create index idx_fn_qz_t_n_state on fn_qz_triggers(sched_name,trigger_name,trigger_group,trigger_state);
+create index idx_fn_qz_t_n_g_state on fn_qz_triggers(sched_name,trigger_group,trigger_state);
+create index idx_fn_qz_t_next_fire_time on fn_qz_triggers(sched_name,next_fire_time);
+create index idx_fn_qz_t_nft_st on fn_qz_triggers(sched_name,trigger_state,next_fire_time);
+create index idx_fn_qz_t_nft_misfire on fn_qz_triggers(sched_name,misfire_instr,next_fire_time);
+create index idx_fn_qz_t_nft_st_misfire on fn_qz_triggers(sched_name,misfire_instr,next_fire_time,trigger_state);
+create index idx_fn_qz_t_nft_st_misfire_grp on fn_qz_triggers(sched_name,misfire_instr,next_fire_time,trigger_group,trigger_state);
+create index idx_fn_qz_ft_trig_inst_name on fn_qz_fired_triggers(sched_name,instance_name);
+create index idx_fn_qz_ft_inst_job_req_rcvry on fn_qz_fired_triggers(sched_name,instance_name,requests_recovery);
+create index idx_fn_qz_ft_j_g on fn_qz_fired_triggers(sched_name,job_name,job_group);
+create index idx_fn_qz_ft_jg on fn_qz_fired_triggers(sched_name,job_group);
+create index idx_fn_qz_ft_t_g on fn_qz_fired_triggers(sched_name,trigger_name,trigger_group);
+create index idx_fn_qz_ft_tg on fn_qz_fired_triggers(sched_name,trigger_group);
+
+
+-- ------------------ create view section
+--
+-- name: v_url_access; type: view
+--
+create view v_url_access as
+ select distinct m.action as url,
+    m.function_cd
+   from fn_menu m
+  where (m.action is not null)
+union
+ select distinct t.action as url,
+    t.function_cd
+   from fn_tab t
+  where (t.action is not null)
+union
+ select r.restricted_url as url,
+    r.function_cd
+   from fn_restricted_url r;
+   
+-- ------------------ alter table add constraint primary key section
+--
+-- name: cr_favorite_reports_user_idrep_id; type: constraint
+--
+alter table cr_favorite_reports 
+    add constraint cr_favorite_reports_user_idrep_id primary key (user_id, rep_id);
+--
+-- name: cr_folder_folder_id; type: constraint
+--
+alter table cr_folder
+    add constraint cr_folder_folder_id primary key (folder_id);
+--
+-- name: cr_folder_access_folder_access_id; type: constraint
+--
+alter table cr_folder_access
+    add constraint cr_folder_access_folder_access_id primary key (folder_access_id);
+--
+-- name: cr_hist_user_map_hist_iduser_id; type: constraint
+--
+alter table cr_hist_user_map
+    add constraint cr_hist_user_map_hist_iduser_id primary key (hist_id, user_id);
+--
+-- name: cr_lu_file_type_lookup_id; type: constraint
+--
+alter table cr_lu_file_type
+    add constraint cr_lu_file_type_lookup_id primary key (lookup_id);
+--
+-- name: cr_raptor_action_img_image_id; type: constraint
+--
+alter table cr_raptor_action_img
+    add constraint cr_raptor_action_img_image_id primary key (image_id);
+--
+-- name: cr_raptor_pdf_img_image_id; type: constraint
+--
+alter table cr_raptor_pdf_img
+    add constraint cr_raptor_pdf_img_image_id primary key (image_id);
+--
+-- name: cr_remote_schema_info_schema_prefix; type: constraint
+--
+alter table cr_remote_schema_info
+    add constraint cr_remote_schema_info_schema_prefix primary key (schema_prefix);
+--
+-- name: cr_report_rep_id; type: constraint
+--
+alter table cr_report
+    add constraint cr_report_rep_id primary key (rep_id);
+--
+-- name: cr_report_access_rep_idorder_no; type: constraint
+--
+alter table cr_report_access
+    add constraint cr_report_access_rep_idorder_no primary key (rep_id, order_no);
+--
+-- name: cr_report_email_sent_log_log_id; type: constraint
+--
+alter table cr_report_email_sent_log
+    add constraint cr_report_email_sent_log_log_id primary key (log_id);
+--
+-- name: cr_report_file_history_hist_id; type: constraint
+--
+alter table cr_report_file_history
+    add constraint cr_report_file_history_hist_id primary key (hist_id);
+--
+-- name: cr_report_schedule_schedule_id; type: constraint
+--
+alter table cr_report_schedule
+    add constraint cr_report_schedule_schedule_id primary key (schedule_id);
+--
+-- name: cr_report_schedule_users_schedule_idrep_iduser_idorder_no; type: constraint
+--
+alter table cr_report_schedule_users
+    add constraint cr_report_schedule_users_schedule_idrep_iduser_idorder_no primary key (schedule_id, rep_id, user_id, order_no);
+--
+-- name: cr_report_template_map_report_id; type: constraint
+--
+alter table cr_report_template_map
+    add constraint cr_report_template_map_report_id primary key (report_id);
+--
+-- name: cr_table_role_table_namerole_id; type: constraint
+--
+alter table cr_table_role
+    add constraint cr_table_role_table_namerole_id primary key (table_name, role_id);
+--
+-- name: cr_table_source_table_name; type: constraint
+--
+alter table cr_table_source
+    add constraint cr_table_source_table_name primary key (table_name);
+--
+-- name: fn_audit_action_audit_action_id; type: constraint
+--
+alter table fn_audit_action
+    add constraint fn_audit_action_audit_action_id primary key (audit_action_id);  
+--
+--
+-- name: fk_fn_audit_ref_205_fn_lu_ac; type: constraint
+--
+alter table fn_audit_log
+       add constraint fk_fn_audit_ref_205_fn_lu_ac foreign key (activity_cd) references fn_lu_activity(activity_cd);
+--
+-- name: fk_fn_role__ref_201_fn_funct; type: constraint
+--    
+alter table fn_role_function
+       add constraint fk_fn_role__ref_201_fn_funct foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fn_chat_logs_chat_log_id; type: constraint
+--
+alter table fn_chat_logs
+    add constraint fn_chat_logs_chat_log_id primary key (chat_log_id);
+--
+-- name: fn_chat_room_chat_room_id; type: constraint
+--
+alter table fn_chat_room
+    add constraint fn_chat_room_chat_room_id primary key (chat_room_id);
+--
+-- name: fn_chat_users_id; type: constraint
+--
+alter table fn_chat_users  
+    add constraint fn_chat_users_id primary key (id);
+--
+-- name: fn_lu_alert_method_alert_method_cd; type: constraint
+--
+alter table fn_lu_alert_method
+    add constraint fn_lu_alert_method_alert_method_cd primary key (alert_method_cd);
+--
+-- name: fn_lu_broadcast_site_broadcast_site_cd; type: constraint
+--
+alter table fn_lu_broadcast_site
+    add constraint fn_lu_broadcast_site_broadcast_site_cd primary key (broadcast_site_cd);
+--
+-- name: fn_lu_priority_priority_id; type: constraint
+--
+alter table fn_lu_priority
+    add constraint fn_lu_priority_priority_id primary key (priority_id);
+--
+-- name: fn_lu_role_type_role_type_id; type: constraint
+--
+alter table fn_lu_role_type
+    add constraint fn_lu_role_type_role_type_id primary key (role_type_id);
+--
+-- name: fn_lu_tab_set_tab_set_cd; type: constraint
+--
+alter table fn_lu_tab_set
+    add constraint fn_lu_tab_set_tab_set_cd primary key (tab_set_cd);
+--
+-- name: fn_lu_timezone_timezone_id; type: constraint
+--
+alter table fn_lu_timezone
+    add constraint fn_lu_timezone_timezone_id primary key (timezone_id);
+--
+-- name: fn_org_org_id; type: constraint
+--
+alter table fn_org
+    add constraint fn_org_org_id primary key (org_id);
+--
+-- name: fn_restricted_url_restricted_urlfunction_cd; type: constraint
+--
+alter table fn_restricted_url
+    add constraint fn_restricted_url_restricted_urlfunction_cd primary key (restricted_url, function_cd);
+--
+-- name: fn_role_composite_parent_role_idchild_role_id; type: constraint
+--
+alter table fn_role_composite
+    add constraint fn_role_composite_parent_role_idchild_role_id primary key (parent_role_id, child_role_id);
+--
+-- name: fn_role_function_role_idfunction_cd; type: constraint
+--
+alter table fn_role_function
+    add constraint fn_role_function_role_idfunction_cd primary key (role_id, function_cd);
+--
+-- name: fn_tab_tab_cd; type: constraint
+--
+alter table fn_tab
+    add constraint fn_tab_tab_cd primary key (tab_cd);
+--
+-- name: fn_tab_selected_selected_tab_cdtab_uri; type: constraint
+--
+alter table fn_tab_selected
+    add constraint fn_tab_selected_selected_tab_cdtab_uri primary key (selected_tab_cd, tab_uri);
+--
+-- name: fn_user_pseudo_role_pseudo_role_iduser_id; type: constraint
+--
+alter table fn_user_pseudo_role
+    add constraint fn_user_pseudo_role_pseudo_role_iduser_id primary key (pseudo_role_id, user_id);
+--
+-- name: fn_user_role_user_idrole_id; type: constraint
+--
+alter table fn_user_role
+    add constraint fn_user_role_user_idrole_id primary key (user_id, role_id, app_id);
+-- ------------------ create index section
+--
+-- name: cr_report_create_idpublic_yntitle; type: index
+--
+create index cr_report_create_idpublic_yntitle using btree on cr_report (create_id, public_yn, title);
+--
+-- name: cr_table_join_dest_table_name; type: index
+--
+create index cr_table_join_dest_table_name using btree on cr_table_join (dest_table_name);
+--
+-- name: cr_table_join_src_table_name; type: index
+--
+create index cr_table_join_src_table_name using btree on cr_table_join (src_table_name);
+--
+-- name: fn_audit_log_activity_cd; type: index
+--
+create index fn_audit_log_activity_cd using btree on fn_audit_log (activity_cd);
+--
+-- name: fn_audit_log_user_id; type: index
+--
+create index fn_audit_log_user_id using btree on fn_audit_log (user_id);
+--
+-- name: fn_org_access_cd; type: index
+--
+create index fn_org_access_cd using btree on fn_org (access_cd);
+--
+-- name: fn_role_function_function_cd; type: index
+--
+create index fn_role_function_function_cd using btree on fn_role_function (function_cd);
+--
+-- name: fn_role_function_role_id; type: index
+--
+create index fn_role_function_role_id using btree on fn_role_function (role_id);
+--
+-- name: fn_user_address_id; type: index
+--
+create index fn_user_address_id using btree on fn_user (address_id); 
+--
+-- name: fn_user_alert_method_cd; type: index
+--
+create index fn_user_alert_method_cd using btree on fn_user (alert_method_cd); 
+--
+-- name: fn_user_hrid; type: index
+--
+create unique index fn_user_hrid using btree on fn_user (hrid); 
+--
+-- name: fn_user_login_id; type: index
+--
+create unique index fn_user_login_id using btree on fn_user (login_id); 
+--
+-- name: fn_user_org_id; type: index
+--
+create index fn_user_org_id using btree on fn_user (org_id); 
+--
+-- name: fn_user_role_role_id; type: index
+--
+create index fn_user_role_role_id using btree on fn_user_role (role_id);
+--
+-- name: fn_user_role_user_id; type: index
+--
+create index fn_user_role_user_id using btree on fn_user_role (user_id);
+--
+-- name: fk_fn_user__ref_178_fn_app_idx; type: index
+--
+create index fk_fn_user__ref_178_fn_app_idx on fn_user_role (app_id);
+ --
+ -- name: fn_role_name_app_id_idx; type: index
+ --
+ create unique index fn_role_name_app_id_idx using btree on fn_role (role_name,app_id);
+-- new for 1707
+create index ep_notif_recv_user_id_idx using btree on ep_role_notification (recv_user_id);
+  
+-- end new for 1707
+
+-- ------------------ alter table add constraint foreign key section
+--
+-- name: fk_fn_user__ref_178_fn_app; type: fk constraint
+--
+alter table fn_user_role
+       add constraint fk_fn_user__ref_178_fn_app foreign key (app_id) references fn_app(app_id);
+--
+-- name: fk_cr_repor_ref_14707_cr_repor; type: fk constraint
+--
+alter table cr_report_schedule
+    add constraint fk_cr_repor_ref_14707_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_repor_ref_14716_cr_repor; type: fk constraint
+--
+alter table cr_report_schedule_users
+    add constraint fk_cr_repor_ref_14716_cr_repor foreign key (schedule_id) references cr_report_schedule(schedule_id);
+--
+-- name: fk_cr_repor_ref_17645_cr_repor; type: fk constraint
+--
+alter table cr_report_log
+    add constraint fk_cr_repor_ref_17645_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_repor_ref_8550_cr_repor; type: fk constraint
+--
+alter table cr_report_access
+    add constraint fk_cr_repor_ref_8550_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_report_rep_id; type: fk constraint
+--
+alter table cr_report_email_sent_log
+    add constraint fk_cr_report_rep_id foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_table_ref_311_cr_tab; type: fk constraint
+--
+alter table cr_table_join
+    add constraint fk_cr_table_ref_311_cr_tab foreign key (src_table_name) references cr_table_source(table_name);
+--
+-- name: fk_cr_table_ref_315_cr_tab; type: fk constraint
+--
+alter table cr_table_join
+    add constraint fk_cr_table_ref_315_cr_tab foreign key (dest_table_name) references cr_table_source(table_name);
+--
+-- name: fk_cr_table_ref_32384_cr_table; type: fk constraint
+--
+alter table cr_table_role
+    add constraint fk_cr_table_ref_32384_cr_table foreign key (table_name) references cr_table_source(table_name);
+--
+-- name: fk_fn_tab_function_cd; type: fk constraint
+--
+alter table fn_tab
+    add constraint fk_fn_tab_function_cd foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fk_fn_tab_selected_tab_cd; type: fk constraint
+--
+alter table fn_tab_selected
+    add constraint fk_fn_tab_selected_tab_cd foreign key (selected_tab_cd) references fn_tab(tab_cd);
+--
+-- name: fk_fn_tab_set_cd; type: fk constraint
+--
+alter table fn_tab
+    add constraint fk_fn_tab_set_cd foreign key (tab_set_cd) references fn_lu_tab_set(tab_set_cd);
+--
+-- name: fk_fn_user_ref_110_fn_org; type: fk constraint
+-- 
+alter table fn_user
+    add constraint fk_fn_user_ref_110_fn_org foreign key (org_id) references fn_org(org_id); 
+--
+-- name: fk_fn_user_ref_123_fn_lu_al; type: fk constraint
+--
+alter table fn_user
+    add constraint fk_fn_user_ref_123_fn_lu_al foreign key (alert_method_cd) references fn_lu_alert_method(alert_method_cd); 
+--
+-- name: fk_fn_user_ref_197_fn_user; type: fk constraint
+--
+ alter table fn_user
+    add constraint fk_fn_user_ref_197_fn_user foreign key (manager_id) references fn_user(user_id); 
+--
+-- name: fk_fn_user_ref_198_fn_user; type: fk constraint
+--
+alter table fn_user  
+    add constraint fk_fn_user_ref_198_fn_user foreign key (created_id) references fn_user(user_id); 
+--
+-- name: fk_fn_user_ref_199_fn_user; type: fk constraint
+--
+alter table fn_user  
+    add constraint fk_fn_user_ref_199_fn_user foreign key (modified_id) references fn_user(user_id); 
+--
+-- name: fk_parent_key_cr_folder; type: fk constraint
+--
+alter table cr_folder
+    add constraint fk_parent_key_cr_folder foreign key (parent_folder_id) references cr_folder(folder_id);
+--
+-- name: fk_pseudo_role_pseudo_role_id; type: fk constraint
+--
+alter table fn_user_pseudo_role 
+    add constraint fk_pseudo_role_pseudo_role_id foreign key (pseudo_role_id) references fn_role(role_id);
+--
+-- name: fk_pseudo_role_user_id; type: fk constraint
+--
+alter table fn_user_pseudo_role 
+    add constraint fk_pseudo_role_user_id foreign key (user_id) references fn_user(user_id);
+--
+-- name: fk_restricted_url_function_cd; type: fk constraint
+--
+alter table fn_restricted_url
+    add constraint fk_restricted_url_function_cd foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fk_timezone; type: fk constraint
+--
+alter table fn_user
+    add constraint fk_timezone foreign key (timezone) references fn_lu_timezone(timezone_id); 
+--
+-- name: sys_c0014614; type: fk constraint
+--
+alter table cr_report_file_history
+    add constraint sys_c0014614 foreign key (file_type_id) references cr_lu_file_type(lookup_id);
+--
+-- name: sys_c0014615; type: fk constraint
+--
+alter table cr_report_file_history
+    add constraint sys_c0014615 foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: sys_c0014616; type: fk constraint
+--
+alter table cr_hist_user_map  
+    add constraint sys_c0014616 foreign key (hist_id) references cr_report_file_history(hist_id);
+--
+-- name: sys_c0014617; type: fk constraint
+--
+alter table cr_hist_user_map  
+    add constraint sys_c0014617 foreign key (user_id) references fn_user(user_id);
+--
+-- name: sys_c0014618; type: fk constraint
+--
+alter table fn_menu_favorites
+add constraint sys_c0014618 foreign key (user_id) references fn_user(user_id);  
+    
+--
+-- name: sys_c0014619; type: fk constraint
+--
+alter table fn_menu_favorites
+add constraint sys_c0014619 foreign key (menu_id) references fn_menu_functional(menu_id);
+
+commit;
\ No newline at end of file
diff --git a/ecomp-portal-DB-common/PortalDMLMySql_2_5_Common.sql b/ecomp-portal-DB-common/PortalDMLMySql_2_5_Common.sql
new file mode 100644 (file)
index 0000000..7b13984
--- /dev/null
@@ -0,0 +1,276 @@
+-- --------------------------------------------------------------------------------------------
+-- This is the common default data for 2.1.0 Version of Portal database called portal 
+
+USE portal;
+
+set foreign_key_checks=1; 
+
+-- FN_FUNCTION
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_process','Process List');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job','Job Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job_create','Job Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job_designer','Process in Designer view');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_task','Task Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_task_search','Task Search');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_map','Map Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_sample','Sample Pages Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('login','Login');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_home','Home Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_customer','Customer Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_reports','Reports Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile','Profile Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_admin','Admin Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_feedback','Feedback Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_help','Help Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_logout','Logout Menu'); 
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_notes','Notes Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_ajax','Ajax Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_customer_create','Customer Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile_create','Profile Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile_import','Profile Import');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_tab','Sample Tab Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('view_reports','View Raptor reports');
+
+-- new 1702
+Insert into fn_function (function_cd,function_name) values ('edit_notification','User Notification');
+Insert INTO fn_function (function_cd,function_name) values ('getAdminNotifications', 'Admin Notifications');
+Insert INTO fn_function (function_cd,function_name) values ('saveNotification', 'publish notifications');
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_function        (function_cd, function_name) VALUES ('menu_web_analytics', 'Web Analytics');
+-- end new 1707
+
+-- FN_LU_ACTIVITY
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_role','add_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_role','remove_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_user_role','add_user_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_user_role','remove_user_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_role_function','add_role_function');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_role_function','remove_role_function');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_child_role','add_child_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_child_role','remove_child_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('mobile_login','Mobile Login');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('mobile_logout','Mobile Logout');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('login','Login');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('logout','Logout');
+
+-- new 1610.2
+insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values('guest_login','Guest Login');  
+-- end new 1610.2
+
+-- new 1702
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('tab_access','Tab Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('app_access','App Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values('functional_access','Functional Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('left_menu_access','Left Menu Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('search','Search');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('apa','Add Portal Admin');                            
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('dpa','Delete Portal Admin');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('uaa','Update Account Admin');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('uu','Update User');
+
+-- FN_LU_MENU_SET
+Insert into fn_lu_menu_set (MENU_SET_CD,MENU_SET_NAME) values ('APP','Application Menu');
+
+-- FN_MENU   Ecomp Portal now uses the left menu entries from fn_menu
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(1,'root',NULL,10,NULL,'menu_home','N','APP','N',NULL);
+                               
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(2,'Home',1,10,'root.applicationsHome','menu_home','Y','APP','N','icon-building-home');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(3,'Application Catalog',1,15,'root.appCatalog','menu_home','Y','APP','N','icon-retail-gallery');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(4,'Widget Catalog',1,20,'root.widgetCatalog','menu_home','Y','APP','N','icon-retail-gallery');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(5,'Admins',1,40,'root.admins','menu_admin','Y','APP','N','icon-content-star');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(6,'Roles',1,45,'root.roles','menu_acc_admin','Y','APP','N','icon-people-groupcollaboration');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(7,'Users',1,50,'root.users','menu_acc_admin','Y','APP','N','icon-people-groupcollaboration');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(8,'Portal Admins',1,60,'root.portalAdmins','menu_admin','Y','APP','N','icon-controls-settingsconnectedactivity');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(9,'Application Onboarding',1,70,'root.applications','menu_app_onboarding','Y','APP','N','icon-content-grid2');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(10,'Widget Onboarding',1,80,'root.widgetOnboarding','menu_admin','Y','APP','N','icon-content-grid2');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(11,'Edit Functional Menu',1,90,'root.functionalMenu','menu_admin','Y','APP','N','icon-misc-pen');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(12,'User Notifications',1,100,'root.userNotifications','edit_notification','Y','APP','N','icon-controls-settingsconnectedactivity');
+                               
+-- end new 1702
+
+-- new 1707
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                                                               values (13,'Microservice Onboarding', 1, 110, 'root.microserviceOnboarding', 'menu_admin', 'Y', 'APP', 'N', 'icon-content-grid2');
+Insert into fn_menu (menu_id, label, parent_id, sort_order, action, function_cd, active_yn, menu_set_cd, separator_yn, image_src)
+                                                               values(15,'App Account Management', 1, 130, 'root.accountOnboarding', 'menu_admin', 'Y', 'App', 'N', 'icon-content-grid2');  
+
+-- end new 1707
+
+-- FN_LU_ALERT_METHOD
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('PHONE','Phone');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('FAX','Fax');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('PAGER','Pager');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('EMAIL','Email');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('SMS','SMS');
+
+-- FN_LU_PRIORITY
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (10,'Low','Y',10);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (20,'Normal','Y',20);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (30,'High','Y',30);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (40,'Urgent','Y',40);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (50,'Fatal','Y',50);
+
+-- FN_LU_TAB_SET
+Insert into fn_lu_tab_set (TAB_SET_CD,TAB_SET_NAME) values ('APP','Application Tabs');
+
+-- FN_LU_TIMEZONE
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (10,'US/Eastern','US/Eastern');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (20,'US/Central','US/Central');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (30,'US/Mountain','US/Mountain');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (40,'US/Arizona','America/Phoenix');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (50,'US/Pacific','US/Pacific');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (60,'US/Alaska','US/Alaska');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (70,'US/Hawaii','US/Hawaii');
+
+-- FN_RESTRICTED_URL
+Insert into fn_restricted_url (restricted_url, function_cd) values ('attachment.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('broadcast.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('file_upload.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('job.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('role.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('role_function.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('test.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('async_test.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('chatWindow.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('contact_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('customer_dynamic_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('event.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('event_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('mobile_welcome.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('template.jsp','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('jbpm_designer.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('jbpm_drools.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('process_job.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('profile.htm','menu_profile_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor2.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_blob_extract.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_email_attachment.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_search.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('report_list.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gauge.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gmap_controller.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gmap_frame.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map_download.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map_grid_search.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_animated_map.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map_2.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map_3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub1.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub2_link1.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub2_link2.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab4.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor.htm','view_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_blob_extract.htm','view_reports');
+
+-- FN_ROLE
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (1,'System Administrator','Y',1,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (16,'Standard User','Y',5,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (999,'Account Administrator','Y',1,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (900,'Restricted App Role','Y','1',NULL,NULL);
+
+-- new 1702
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (950,'Portal Notification Admin','Y','1',NULL,NULL);
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_role (role_id, role_name, active_yn, priority) VALUES ('1010', 'Usage Analyst', 'Y', '1');
+INSERT INTO fn_role (role_id, role_name, active_yn, priority) VALUES ('2115', 'Portal Usage Analyst', 'Y', '6');
+-- end new 1707
+
+-- FN_ROLE_Composite
+Insert into fn_role_composite (PARENT_ROLE_ID,CHILD_ROLE_ID) values (1,16);
+
+-- FN_ROLE_FUNCTION
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'login');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_admin');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_ajax');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_customer');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_customer_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_feedback');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_help');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_home');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_job');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_job_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_logout');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_notes');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_process');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile_import');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_reports');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_sample');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_tab');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'login');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_ajax');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_customer');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_customer_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_home');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_logout');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_map');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_profile');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_reports');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_tab');
+
+-- new 1702
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (950,'edit_notification');
+Insert INTO fn_role_function (ROLE_ID,FUNCTION_CD) values (950, 'getAdminNotifications');
+Insert INTO fn_role_function (ROLE_ID,FUNCTION_CD) values (950, 'saveNotification');
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_role_function (role_id, function_cd) VALUES ('1010', 'menu_web_analytics');
+INSERT INTO fn_role_function (role_id, function_cd) VALUES ('2115', 'menu_web_analytics');
+-- end new 1707
+
+-- FN_TAB
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB1_S1','Left Tab 1','Sub - Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2_SUB1','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB1','Tab 1','Tab 1 Information','tab1.htm','menu_tab','Y',10,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2','Tab 2','Tab 2 Information','tab2_sub1.htm','menu_tab','Y',20,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB3','Tab 3','Tab 3 Information','tab3.htm','menu_tab','Y',30,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB4','Tab 4','Tab 4 Information','tab4.htm','menu_tab','Y',40,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB1','Sub Tab 1','Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB2','Sub Tab 2','Sub Tab 2 Information','tab2_sub2.htm','menu_tab','Y',20,'TAB2','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB3','Sub Tab 3','Sub Tab 3 Information','tab2_sub3.htm','menu_tab','Y',30,'TAB2','APP');
+
+-- FN_TAB_SELECTED
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB1','tab1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub2');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB1','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB1_S1','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB2','tab2_sub2');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB3','tab2_sub3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB3','tab3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB4','tab4');
+
+commit;
\ No newline at end of file
diff --git a/ecomp-portal-DB-common/PortalDMLMySql_2_6_Common.sql b/ecomp-portal-DB-common/PortalDMLMySql_2_6_Common.sql
new file mode 100644 (file)
index 0000000..9a59639
--- /dev/null
@@ -0,0 +1,308 @@
+-- --------------------------------------------------------------------------------------------
+-- This is the common default data for 2.1.0 Version of Portal database called portal 
+
+USE portal;
+
+set foreign_key_checks=1; 
+
+
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,2,'Home');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,3,'Application Catalog');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,4,'Widget Catalog');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,5,'Admins');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,6,'Roles');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,7,'Users');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,8,'Portal Admins');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,9,'Application Onboarding');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,10,'Widget Onboarding');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,11,'Edit Functional Menu');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,12,'User Notifications');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,13,'Microservice Onboarding');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,15,'App Account Management');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,2,'主页');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,3,'应用目录');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,4,'部件目录');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,5,'管理员');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,6,'角色');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,7,'用户');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,8,'门户管理员');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,9,'应用管理');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,10,'部件管理');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,11,'编辑功能菜单');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,12,'用户通知');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,13,'微服务管理');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,15,'应用账户管理');
+
+INSERT INTO fn_language (language_name,language_alias) VALUES ('English','EN');
+INSERT INTO fn_language (language_name,language_alias) VALUES ('简体中文','CN');
+
+
+-- FN_FUNCTION
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_process','Process List');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job','Job Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job_create','Job Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job_designer','Process in Designer view');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_task','Task Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_task_search','Task Search');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_map','Map Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_sample','Sample Pages Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('login','Login');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_home','Home Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_customer','Customer Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_reports','Reports Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile','Profile Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_admin','Admin Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_feedback','Feedback Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_help','Help Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_logout','Logout Menu'); 
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_notes','Notes Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_ajax','Ajax Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_customer_create','Customer Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile_create','Profile Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile_import','Profile Import');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_tab','Sample Tab Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('view_reports','View Raptor reports');
+
+-- new 1702
+Insert into fn_function (function_cd,function_name) values ('edit_notification','User Notification');
+Insert INTO fn_function (function_cd,function_name) values ('getAdminNotifications', 'Admin Notifications');
+Insert INTO fn_function (function_cd,function_name) values ('saveNotification', 'publish notifications');
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_function        (function_cd, function_name) VALUES ('menu_web_analytics', 'Web Analytics');
+-- end new 1707
+
+-- FN_LU_ACTIVITY
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_role','add_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_role','remove_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_user_role','add_user_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_user_role','remove_user_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_role_function','add_role_function');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_role_function','remove_role_function');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_child_role','add_child_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_child_role','remove_child_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('mobile_login','Mobile Login');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('mobile_logout','Mobile Logout');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('login','Login');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('logout','Logout');
+
+-- new 1610.2
+insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values('guest_login','Guest Login');  
+-- end new 1610.2
+
+-- new 1702
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('tab_access','Tab Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('app_access','App Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values('functional_access','Functional Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('left_menu_access','Left Menu Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('search','Search');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('apa','Add Portal Admin');                            
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('dpa','Delete Portal Admin');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('uaa','Update Account Admin');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('uu','Update User');
+
+-- FN_LU_MENU_SET
+Insert into fn_lu_menu_set (MENU_SET_CD,MENU_SET_NAME) values ('APP','Application Menu');
+
+-- FN_MENU   Ecomp Portal now uses the left menu entries from fn_menu
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(1,'root',NULL,10,NULL,'menu_home','N','APP','N',NULL);
+                               
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(2,'Home',1,10,'root.applicationsHome','menu_home','Y','APP','N','icon-building-home');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(3,'Application Catalog',1,15,'root.appCatalog','menu_home','Y','APP','N','icon-retail-gallery');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(4,'Widget Catalog',1,20,'root.widgetCatalog','menu_home','Y','APP','N','icon-retail-gallery');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(5,'Admins',1,40,'root.admins','menu_admin','Y','APP','N','icon-content-star');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(6,'Roles',1,45,'root.roles','menu_acc_admin','Y','APP','N','icon-people-groupcollaboration');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(7,'Users',1,50,'root.users','menu_acc_admin','Y','APP','N','icon-people-groupcollaboration');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(8,'Portal Admins',1,60,'root.portalAdmins','menu_admin','Y','APP','N','icon-controls-settingsconnectedactivity');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(9,'Application Onboarding',1,70,'root.applications','menu_app_onboarding','Y','APP','N','icon-content-grid2');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(10,'Widget Onboarding',1,80,'root.widgetOnboarding','menu_admin','Y','APP','N','icon-content-grid2');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(11,'Edit Functional Menu',1,90,'root.functionalMenu','menu_admin','Y','APP','N','icon-misc-pen');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(12,'User Notifications',1,100,'root.userNotifications','edit_notification','Y','APP','N','icon-controls-settingsconnectedactivity');
+                               
+-- end new 1702
+
+-- new 1707
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                                                               values (13,'Microservice Onboarding', 1, 110, 'root.microserviceOnboarding', 'menu_admin', 'Y', 'APP', 'N', 'icon-content-grid2');
+Insert into fn_menu (menu_id, label, parent_id, sort_order, action, function_cd, active_yn, menu_set_cd, separator_yn, image_src)
+                                                               values(15,'App Account Management', 1, 130, 'root.accountOnboarding', 'menu_admin', 'Y', 'App', 'N', 'icon-content-grid2');  
+
+-- end new 1707
+
+-- FN_LU_ALERT_METHOD
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('PHONE','Phone');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('FAX','Fax');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('PAGER','Pager');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('EMAIL','Email');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('SMS','SMS');
+
+-- FN_LU_PRIORITY
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (10,'Low','Y',10);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (20,'Normal','Y',20);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (30,'High','Y',30);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (40,'Urgent','Y',40);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (50,'Fatal','Y',50);
+
+-- FN_LU_TAB_SET
+Insert into fn_lu_tab_set (TAB_SET_CD,TAB_SET_NAME) values ('APP','Application Tabs');
+
+-- FN_LU_TIMEZONE
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (10,'US/Eastern','US/Eastern');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (20,'US/Central','US/Central');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (30,'US/Mountain','US/Mountain');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (40,'US/Arizona','America/Phoenix');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (50,'US/Pacific','US/Pacific');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (60,'US/Alaska','US/Alaska');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (70,'US/Hawaii','US/Hawaii');
+
+-- FN_RESTRICTED_URL
+Insert into fn_restricted_url (restricted_url, function_cd) values ('attachment.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('broadcast.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('file_upload.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('job.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('role.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('role_function.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('test.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('async_test.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('chatWindow.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('contact_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('customer_dynamic_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('event.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('event_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('mobile_welcome.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('template.jsp','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('jbpm_designer.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('jbpm_drools.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('process_job.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('profile.htm','menu_profile_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor2.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_blob_extract.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_email_attachment.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_search.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('report_list.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gauge.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gmap_controller.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gmap_frame.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map_download.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map_grid_search.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_animated_map.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map_2.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map_3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub1.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub2_link1.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub2_link2.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab4.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor.htm','view_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_blob_extract.htm','view_reports');
+
+-- FN_ROLE
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (1,'System Administrator','Y',1,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (16,'Standard User','Y',5,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (999,'Account Administrator','Y',1,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (900,'Restricted App Role','Y','1',NULL,NULL);
+
+-- new 1702
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (950,'Portal Notification Admin','Y','1',NULL,NULL);
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_role (role_id, role_name, active_yn, priority) VALUES ('1010', 'Usage Analyst', 'Y', '1');
+INSERT INTO fn_role (role_id, role_name, active_yn, priority) VALUES ('2115', 'Portal Usage Analyst', 'Y', '6');
+-- end new 1707
+
+-- FN_ROLE_Composite
+Insert into fn_role_composite (PARENT_ROLE_ID,CHILD_ROLE_ID) values (1,16);
+
+-- FN_ROLE_FUNCTION
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'login');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_admin');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_ajax');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_customer');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_customer_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_feedback');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_help');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_home');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_job');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_job_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_logout');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_notes');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_process');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile_import');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_reports');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_sample');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_tab');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'login');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_ajax');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_customer');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_customer_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_home');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_logout');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_map');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_profile');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_reports');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_tab');
+
+-- new 1702
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (950,'edit_notification');
+Insert INTO fn_role_function (ROLE_ID,FUNCTION_CD) values (950, 'getAdminNotifications');
+Insert INTO fn_role_function (ROLE_ID,FUNCTION_CD) values (950, 'saveNotification');
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_role_function (role_id, function_cd) VALUES ('1010', 'menu_web_analytics');
+INSERT INTO fn_role_function (role_id, function_cd) VALUES ('2115', 'menu_web_analytics');
+-- end new 1707
+
+-- FN_TAB
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB1_S1','Left Tab 1','Sub - Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2_SUB1','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB1','Tab 1','Tab 1 Information','tab1.htm','menu_tab','Y',10,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2','Tab 2','Tab 2 Information','tab2_sub1.htm','menu_tab','Y',20,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB3','Tab 3','Tab 3 Information','tab3.htm','menu_tab','Y',30,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB4','Tab 4','Tab 4 Information','tab4.htm','menu_tab','Y',40,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB1','Sub Tab 1','Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB2','Sub Tab 2','Sub Tab 2 Information','tab2_sub2.htm','menu_tab','Y',20,'TAB2','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB3','Sub Tab 3','Sub Tab 3 Information','tab2_sub3.htm','menu_tab','Y',30,'TAB2','APP');
+
+-- FN_TAB_SELECTED
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB1','tab1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub2');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB1','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB1_S1','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB2','tab2_sub2');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB3','tab2_sub3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB3','tab3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB4','tab4');
+
+commit;
\ No newline at end of file
diff --git a/ecomp-portal-DB-os/PortalDDLMySql_2_5_OS.sql b/ecomp-portal-DB-os/PortalDDLMySql_2_5_OS.sql
new file mode 100644 (file)
index 0000000..8099aad
--- /dev/null
@@ -0,0 +1,12 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This script adds tables for the OPEN-SOURCE 2.1.0 version of the Portal database.
+-- The COMMON DDL script must be executed first!
+-- ---------------------------------------------------------------------------------------------------------------
+
+SET FOREIGN_KEY_CHECKS=1; 
+
+USE portal;
+
+-- No additional tables required at this time
+
+commit;
diff --git a/ecomp-portal-DB-os/PortalDDLMySql_2_6_OS.sql b/ecomp-portal-DB-os/PortalDDLMySql_2_6_OS.sql
new file mode 100644 (file)
index 0000000..8099aad
--- /dev/null
@@ -0,0 +1,12 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This script adds tables for the OPEN-SOURCE 2.1.0 version of the Portal database.
+-- The COMMON DDL script must be executed first!
+-- ---------------------------------------------------------------------------------------------------------------
+
+SET FOREIGN_KEY_CHECKS=1; 
+
+USE portal;
+
+-- No additional tables required at this time
+
+commit;
diff --git a/ecomp-portal-DB-os/PortalDMLMySql_2_5_OS.sql b/ecomp-portal-DB-os/PortalDMLMySql_2_5_OS.sql
new file mode 100644 (file)
index 0000000..f0359ae
--- /dev/null
@@ -0,0 +1,153 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This is the default data for the 2.1.0 Version of Portal database called portal - the Opensource project
+-- First run the common Opensource DML; then run this file to add The Opensource only data
+USE portal;
+
+set foreign_key_checks=1;
+
+--- update fn_menu for roles
+UPDATE fn_menu
+SET function_cd = 'menu_acc_admin'
+WHERE  label = 'Roles';
+
+--- update fn_menu for users
+UPDATE fn_menu
+SET function_cd = 'menu_acc_admin'
+WHERE label = 'Users';
+
+
+-- fn_user
+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,is_system_user) values (1,NULL,NULL,'Demo',NULL,'User',NULL,NULL,NULL,'demo@openecomp.org',NULL,NULL,NULL,'demo',NULL,'demo','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,'N');
+
+-- fn_appokYTaDrhzibcbGVq5mjkVQ==
+Insert INTO fn_app (APP_ID, APP_NAME, APP_IMAGE_URL, APP_DESCRIPTION, APP_NOTES, APP_URL, APP_ALTERNATE_URL, APP_REST_ENDPOINT, ML_APP_NAME, ML_APP_ADMIN_ID, MOTS_ID, APP_PASSWORD, OPEN, ENABLED, THUMBNAIL, APP_USERNAME, UEB_KEY, UEB_SECRET, UEB_TOPIC_NAME, APP_TYPE, AUTH_CENTRAL, AUTH_NAMESPACE) values (1,'Default','assets/images/tmp/portal1.png','Some Default Description','Some Default Note','http://localhost','http://localhost','http://localhost:8080/ecompportal','EcompPortal','',NULL,'dR2NABMkxPaFbIbym87ZwQ==','N','N',NULL,'m00468@portal.onap.org','EkrqsjQqZt4ZrPh6',NULL,NULL,1,'Y',NULL);
+
+-- fn_user_role
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,1,NULL,1);
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,950,NULL,1);
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,999,NULL,1);
+
+INSERT INTO cr_report 
+       (rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+       VALUES  (
+       15,     
+       'Application Usage Report Wid', 
+       '',    
+       'Y',       
+       '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<customReport pageSize="200" reportType="Linear">\n    <reportName>Application Usage Report Wid</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>BarChart3D</chartType>\n    <chartWidth>700</chartWidth>\n    <chartHeight>500</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>false</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n    l.date audit_date, \n   app_id app_id, \n       IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n     IFNULL(r.ct,0) ct \nfrom\n(\n   select a.Date, app_id, app_name\n       from (\n            select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n      from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n          cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n            cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n        ) a, \n (\n             SELECT  \n                      app_id, app_name\n              from\n          (\n                     select @rn := @rn+1 AS rowId, app_id, app_name from \n                          (\n                                     select app_id, app_name, ct from \n                                     (\n                                             select affected_record_id, count(*) ct\n                                                from fn_audit_log l\n                                           where audit_date &gt; date_add( curdate(), interval -6 day)\n                                           and affected_record_id not in ( 1, -1)\n                                                and activity_cd in (\'tab_access\', \'app_access\')\n                                           and user_id = [USER_ID]\n                                               group by affected_record_id\n                                   ) a, fn_app f\n                                 where a.affected_record_id = f.app_id\n                                 order by ct desc \n                             ) b,\n                          (SELECT @rn := 0) t2\n          ) mm where rowId &lt;= 4\n      )b\n    where a.Date between date_add( curdate(), interval -6 day) and  curdate()\n) l left outer join\n(\n     select app_name,  DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n    where user_id = [USER_ID]\n     and audit_date &gt; date_add( curdate(), interval -6 day)\n     and activity_cd in (\'tab_access\', \'app_access\')\n   and a.affected_record_id = b.app_id\n   and b.app_id &lt;&gt; 1\n       and b.app_id in \n      (\n             SELECT  \n                      app_id\n                from\n          (\n                     select @rn := @rn+1 AS rowId, app_id from \n                            (\n                                     select app_id, ct from \n                                       (\n                                             select affected_record_id app_id, count(*) ct\n                                         from fn_audit_log \n                                            where audit_date &gt; date_add( curdate(), interval -6 day)\n                                           and affected_record_id not in ( 1, -1)\n                                                and activity_cd in (\'tab_access\', \'app_access\')\n                                           and user_id = [USER_ID]\n                                               group by affected_record_id\n                                   ) a\n                                   order by ct desc \n                             ) b,\n                          (SELECT @rn := 0) t2\n          ) mm \n )\n     group by app_name,  DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId="du0">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId="audit_date">\n                    <tableId>du0</tableId>\n                    <dbColName>l.date</dbColName>\n                    <colName>l.date</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n                <dataColumn colId="app_id">\n                    <tableId>du0</tableId>\n                    <dbColName>app_id</dbColName>\n                    <colName>app_id</colName>\n                    <displayName>app_id</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <dbColType>VARCHAR2</dbColType>\n                </dataColumn>\n                <dataColumn colId="app_name">\n                    <tableId>du0</tableId>\n                    <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n                    <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n                    <displayName>app_name</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <chartSeq>2</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>true</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n                <dataColumn colId="ct">\n                    <tableId>du0</tableId>\n                    <dbColName>IFNULL(r.ct,0)</dbColName>\n                    <colName>IFNULL(r.ct,0)</colName>\n                    <displayName>ct</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>4</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>up90</labelAngle>\n        <rangeAxisUpperLimit></rangeAxisUpperLimit>\n        <rangeAxisLowerLimit></rangeAxisLowerLimit>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <logScale>false</logScale>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n', 
+       1, 
+       now(), 
+       1, 
+       now(), 
+       '', 
+       'N', 
+       (select user_id from fn_user where org_user_id = 'demo'), 
+       NULL, 
+       'N', 
+       'N'
+       );
+
+-- new for 1707
+INSERT INTO cr_report 
+       (rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+       VALUES  (
+       18,     
+       'Application Usage bar Wid',
+       '',    
+       'Y',       
+       '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n    <reportName>Application Usage Line Wid</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>TimeSeriesChart</chartType>\n    <chartMultiSeries>N</chartMultiSeries>\n    <chartWidth>700</chartWidth>\n    <chartHeight>300</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>false</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n   l.date audit_date, \n   IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n     IFNULL(r.ct,0) ct \nfrom\n(\n   select a.Date, app_id, app_name\n       from (\n            select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n      from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n          cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n            cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n        ) a, \n (\n             SELECT  \n                      app_id, app_name\n              from\n          (\n                     select @rn := @rn+1 AS rowId, app_id, app_name from \n                          (\n                                     select app_id, app_name, ct from \n                                     (\n                                             select affected_record_id, count(*) ct\n                                                from fn_audit_log l\n                                           where audit_date &gt; date_add( curdate(), interval -30 day)\n                                          and affected_record_id not in ( 1, -1)\n                                                and activity_cd in (\'tab_access\', \'app_access\')\n                                           and user_id = [USER_ID]\n                                               group by affected_record_id\n                                   ) a, fn_app f\n                                 where a.affected_record_id = f.app_id\n                                 order by ct desc \n                             ) b,\n                          (SELECT @rn := 0) t2\n          ) mm where rowId &lt;= 4\n      )b\n    where a.Date between date_add( curdate(), interval -30 day) and  curdate()\n) l left outer join\n(\n    select app_name,  DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n    where user_id = [USER_ID]\n     and audit_date &gt; date_add( curdate(), interval -30 day)\n    and activity_cd in (\'tab_access\', \'app_access\')\n   and a.affected_record_id = b.app_id\n   and b.app_id &lt;&gt; 1\n       and b.app_id in \n      (\n             SELECT  \n                      app_id\n                from\n          (\n                     select @rn := @rn+1 AS rowId, app_id from \n                            (\n                                     select app_id, ct from \n                                       (\n                                             select affected_record_id app_id, count(*) ct\n                                         from fn_audit_log \n                                            where audit_date &gt; date_add( curdate(), interval -30 day)\n                                          and affected_record_id not in ( 1, -1)\n                                                and activity_cd in (\'tab_access\', \'app_access\')\n                                           and user_id = [USER_ID]\n                                               group by affected_record_id\n                                   ) a\n                                   order by ct desc \n                             ) b,\n                          (SELECT @rn := 0) t2\n          ) mm \n )\n     group by app_name,  DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId=\"du0\">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId=\"audit_date\">\n                    <tableId>du0</tableId>\n                    <dbColName>l.date</dbColName>\n                    <colName>l.date</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"app_name\">\n                    <tableId>du0</tableId>\n                    <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n                    <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n                    <displayName>app_name</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>2</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>true</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"ct\">\n                    <tableId>du0</tableId>\n                    <dbColName>IFNULL(r.ct,0)</dbColName>\n                    <colName>IFNULL(r.ct,0)</colName>\n                    <displayName>ct</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>down45</labelAngle>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <timeSeriesRender>line</timeSeriesRender>\n        <multiSeries>false</multiSeries>\n        <showXAxisLabel>false</showXAxisLabel>\n        <addXAxisTickers>false</addXAxisTickers>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',
+       1, 
+       now(), 
+       1, 
+       now(), 
+       '', 
+       'N', 
+       (select user_id from fn_user where org_user_id = 'demo'), 
+       NULL, 
+       'N', 
+       'N'
+       );
+       
+INSERT INTO cr_report 
+       (rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+       VALUES  (
+       20,     
+       'Average time spend on portal',
+       '',    
+       'Y',       
+       '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n    <reportName>Average time spend on portal</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>TimeSeriesChart</chartType>\n    <chartMultiSeries>N</chartMultiSeries>\n    <chartWidth>700</chartWidth>\n    <chartHeight>300</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>true</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n  d.dat audit_date, \n    \'# of Minutes\' app, \n        coalesce(diff, null, 0) mins \nfrom\n(\n        select * from\n (\n     select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as dat\n       from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n  cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c \n   ) d where d.dat between date_add( curdate(), interval -30 day) and  curdate()\n) d left outer join\n(\n select dat, mi, mx, TIMESTAMPDIFF(MINUTE, coalesce(mi, null, 0), coalesce(mx, null, 0)) + 30  diff\n    from\n  (\n             select DATE(audit_date) dat, coalesce(min(audit_date), null, 0) mi, coalesce(max(audit_date), null, 0) mx\n             from fn_audit_log \n            where user_id = [USER_ID] and DATE(audit_date) between CURDATE()-300 and CURDATE()\n            group by DATE(audit_date)\n     ) a\n) a\non a.dat = d.dat\norder by 1</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId=\"du0\">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId=\"audit_date\">\n                    <tableId>du0</tableId>\n                    <dbColName>d.dat</dbColName>\n                    <colName>d.dat</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"app\">\n                    <tableId>du0</tableId>\n                    <dbColName>\'# of Minutes\'</dbColName>\n                    <colName>\'# of Minutes\'</colName>\n                    <displayName>app</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <chartSeries>true</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                </dataColumn>\n                <dataColumn colId=\"mins\">\n                    <tableId>du0</tableId>\n                    <dbColName>coalesce(diff, null, 0)</dbColName>\n                    <colName>coalesce(diff, null, 0)</colName>\n                    <displayName>mins</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>down45</labelAngle>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <timeSeriesRender>line</timeSeriesRender>\n        <multiSeries>false</multiSeries>\n        <showXAxisLabel>false</showXAxisLabel>\n        <addXAxisTickers>false</addXAxisTickers>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',
+       1, 
+       now(), 
+       1, 
+       now(), 
+       '', 
+       'N', 
+       (select user_id from fn_user where org_user_id = 'demo'), 
+       NULL, 
+       'N', 
+       'N'
+       );
+    
+    
+insert into ep_app_function (app_id, function_cd, function_name) values
+(1,    'url|edit_notification|*',      'User Notification'),
+(1,    'url|getAdminNotifications|*',  'Admin Notifications'),
+(1,    'url|login|*',  'Login'),
+(1,    'menu|menu_admin|*','Admin Menu'),
+(1,'menu|menu_home|*','Home Menu'),
+(1,    'menu|menu_logout|*','Logout Menu'),
+(1,    'menu|menu_web_analytics|*','Web Analytics'),
+(1,    'url|saveNotification|*','publish notifications'),
+(1,    'url|url_role.htm|*','role page'),
+(1,    'url|url_welcome.htm|*','welcome page'),
+(1, 'menu|menu_acc_admin|*','Admin Account Menu'),
+(1,'url|addWebAnalyticsReport|*','Add Web Analytics Report'), 
+(1,'url|appsFullList|*','Apps Full List'),
+(1,'url|centralizedApps|*','Centralized Apps'),
+(1,'url|functionalMenu|*','Functional Menu'),
+(1,'url|getAllWebAnalytics|*','Get All Web Analytics'),
+(1,'url|getFunctionalMenuRole|*','Get Functional Menu Role'),
+(1,'url|getNotificationAppRoles|*','Get Notification App Roles'),
+(1,'url|getUserAppsWebAnalytics|*','Get User Apps Web Analytics'),
+(1,'url|getUserJourneyAnalyticsReport|*','Get User Journey Report'),
+(1,'url|get_roles%2f%2a|*','getRolesOfApp'),
+(1,'url|get_role_functions%2f%2a|*','Get Role Functions'),
+(1,'url|notification_code|*','Notification Code'),
+(1,'url|role_function_list%2fsaveRoleFunction%2f%2a|*','Save Role Function'),
+(1,'url|syncRoles|*','SyncRoles'),
+(1,'url|userAppRoles|*','userAppRoles'),
+(1,'url|userApps|*','User Apps')
+;
+
+
+insert into ep_app_role_function (id, app_id, role_id, function_cd, role_app_id) values
+(1, 1, 1, 'url|login|*', null),
+(2, 1, 1, 'menu|menu_admin|*', null),
+(3, 1, 1, 'menu|menu_home|*', null),
+(4, 1, 1, 'menu|menu_logout|*', null),
+(5, 1, 16, 'url|login|*', null),
+(6, 1, 16, 'menu|menu_home|*', null),
+(7, 1, 16, 'menu|menu_logout|*', null),
+(8, 1, 950, 'url|edit_notification|*', null),
+(9, 1, 950, 'url|getAdminNotifications|*', null),
+(10,1, 950, 'url|saveNotification|*', null),
+(11,1, 999,'url|userAppRoles|*', null),
+(12,1, 999, 'url|getAdminNotifications|*', null),
+(13,1, 999,'url|userApps|*', null),
+(14,1, 1010, 'menu|menu_web_analytics|*', null),
+(15, 1, 2115, 'menu|menu_web_analytics|*', null),
+(16, 1 , 1, 'menu|menu_acc_admin|*' , null),
+(17, 1 , 999 ,'menu|menu_acc_admin|*', null),
+(18,1,999,'url|centralizedApps|*', null),
+(19,1,999,'url|getAllWebAnalytics|*', null),
+(20,1,999,'url|getFunctionalMenuRole|*', null),
+(21,1,999,'url|getNotificationAppRoles|*', null),
+(22,1,999,'url|getUserAppsWebAnalytics|*', null),
+(23,1,999,'url|getUserJourneyAnalyticsReport|*', null),
+(24,1,999,'url|get_roles%2f%2a|*', null),
+(25,1,999,'url|get_role_functions%2f%2a|*', null),
+(26,1,999,'url|notification_code|*', null),
+(27,1,999,'url|role_function_list%2fsaveRoleFunction%2f%2a|*', null),
+(28,1,999,'url|syncRoles|*', null);
+
+commit;    
\ No newline at end of file
diff --git a/ecomp-portal-DB-os/PortalDMLMySql_2_6_OS.sql b/ecomp-portal-DB-os/PortalDMLMySql_2_6_OS.sql
new file mode 100644 (file)
index 0000000..f0359ae
--- /dev/null
@@ -0,0 +1,153 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This is the default data for the 2.1.0 Version of Portal database called portal - the Opensource project
+-- First run the common Opensource DML; then run this file to add The Opensource only data
+USE portal;
+
+set foreign_key_checks=1;
+
+--- update fn_menu for roles
+UPDATE fn_menu
+SET function_cd = 'menu_acc_admin'
+WHERE  label = 'Roles';
+
+--- update fn_menu for users
+UPDATE fn_menu
+SET function_cd = 'menu_acc_admin'
+WHERE label = 'Users';
+
+
+-- fn_user
+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,is_system_user) values (1,NULL,NULL,'Demo',NULL,'User',NULL,NULL,NULL,'demo@openecomp.org',NULL,NULL,NULL,'demo',NULL,'demo','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,'N');
+
+-- fn_appokYTaDrhzibcbGVq5mjkVQ==
+Insert INTO fn_app (APP_ID, APP_NAME, APP_IMAGE_URL, APP_DESCRIPTION, APP_NOTES, APP_URL, APP_ALTERNATE_URL, APP_REST_ENDPOINT, ML_APP_NAME, ML_APP_ADMIN_ID, MOTS_ID, APP_PASSWORD, OPEN, ENABLED, THUMBNAIL, APP_USERNAME, UEB_KEY, UEB_SECRET, UEB_TOPIC_NAME, APP_TYPE, AUTH_CENTRAL, AUTH_NAMESPACE) values (1,'Default','assets/images/tmp/portal1.png','Some Default Description','Some Default Note','http://localhost','http://localhost','http://localhost:8080/ecompportal','EcompPortal','',NULL,'dR2NABMkxPaFbIbym87ZwQ==','N','N',NULL,'m00468@portal.onap.org','EkrqsjQqZt4ZrPh6',NULL,NULL,1,'Y',NULL);
+
+-- fn_user_role
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,1,NULL,1);
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,950,NULL,1);
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,999,NULL,1);
+
+INSERT INTO cr_report 
+       (rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+       VALUES  (
+       15,     
+       'Application Usage Report Wid', 
+       '',    
+       'Y',       
+       '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<customReport pageSize="200" reportType="Linear">\n    <reportName>Application Usage Report Wid</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>BarChart3D</chartType>\n    <chartWidth>700</chartWidth>\n    <chartHeight>500</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>false</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n    l.date audit_date, \n   app_id app_id, \n       IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n     IFNULL(r.ct,0) ct \nfrom\n(\n   select a.Date, app_id, app_name\n       from (\n            select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n      from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n          cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n            cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n        ) a, \n (\n             SELECT  \n                      app_id, app_name\n              from\n          (\n                     select @rn := @rn+1 AS rowId, app_id, app_name from \n                          (\n                                     select app_id, app_name, ct from \n                                     (\n                                             select affected_record_id, count(*) ct\n                                                from fn_audit_log l\n                                           where audit_date &gt; date_add( curdate(), interval -6 day)\n                                           and affected_record_id not in ( 1, -1)\n                                                and activity_cd in (\'tab_access\', \'app_access\')\n                                           and user_id = [USER_ID]\n                                               group by affected_record_id\n                                   ) a, fn_app f\n                                 where a.affected_record_id = f.app_id\n                                 order by ct desc \n                             ) b,\n                          (SELECT @rn := 0) t2\n          ) mm where rowId &lt;= 4\n      )b\n    where a.Date between date_add( curdate(), interval -6 day) and  curdate()\n) l left outer join\n(\n     select app_name,  DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n    where user_id = [USER_ID]\n     and audit_date &gt; date_add( curdate(), interval -6 day)\n     and activity_cd in (\'tab_access\', \'app_access\')\n   and a.affected_record_id = b.app_id\n   and b.app_id &lt;&gt; 1\n       and b.app_id in \n      (\n             SELECT  \n                      app_id\n                from\n          (\n                     select @rn := @rn+1 AS rowId, app_id from \n                            (\n                                     select app_id, ct from \n                                       (\n                                             select affected_record_id app_id, count(*) ct\n                                         from fn_audit_log \n                                            where audit_date &gt; date_add( curdate(), interval -6 day)\n                                           and affected_record_id not in ( 1, -1)\n                                                and activity_cd in (\'tab_access\', \'app_access\')\n                                           and user_id = [USER_ID]\n                                               group by affected_record_id\n                                   ) a\n                                   order by ct desc \n                             ) b,\n                          (SELECT @rn := 0) t2\n          ) mm \n )\n     group by app_name,  DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId="du0">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId="audit_date">\n                    <tableId>du0</tableId>\n                    <dbColName>l.date</dbColName>\n                    <colName>l.date</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n                <dataColumn colId="app_id">\n                    <tableId>du0</tableId>\n                    <dbColName>app_id</dbColName>\n                    <colName>app_id</colName>\n                    <displayName>app_id</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <dbColType>VARCHAR2</dbColType>\n                </dataColumn>\n                <dataColumn colId="app_name">\n                    <tableId>du0</tableId>\n                    <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n                    <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n                    <displayName>app_name</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <chartSeq>2</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>true</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n                <dataColumn colId="ct">\n                    <tableId>du0</tableId>\n                    <dbColName>IFNULL(r.ct,0)</dbColName>\n                    <colName>IFNULL(r.ct,0)</colName>\n                    <displayName>ct</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>4</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>up90</labelAngle>\n        <rangeAxisUpperLimit></rangeAxisUpperLimit>\n        <rangeAxisLowerLimit></rangeAxisLowerLimit>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <logScale>false</logScale>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n', 
+       1, 
+       now(), 
+       1, 
+       now(), 
+       '', 
+       'N', 
+       (select user_id from fn_user where org_user_id = 'demo'), 
+       NULL, 
+       'N', 
+       'N'
+       );
+
+-- new for 1707
+INSERT INTO cr_report 
+       (rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+       VALUES  (
+       18,     
+       'Application Usage bar Wid',
+       '',    
+       'Y',       
+       '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n    <reportName>Application Usage Line Wid</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>TimeSeriesChart</chartType>\n    <chartMultiSeries>N</chartMultiSeries>\n    <chartWidth>700</chartWidth>\n    <chartHeight>300</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>false</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n   l.date audit_date, \n   IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n     IFNULL(r.ct,0) ct \nfrom\n(\n   select a.Date, app_id, app_name\n       from (\n            select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n      from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n          cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n            cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n        ) a, \n (\n             SELECT  \n                      app_id, app_name\n              from\n          (\n                     select @rn := @rn+1 AS rowId, app_id, app_name from \n                          (\n                                     select app_id, app_name, ct from \n                                     (\n                                             select affected_record_id, count(*) ct\n                                                from fn_audit_log l\n                                           where audit_date &gt; date_add( curdate(), interval -30 day)\n                                          and affected_record_id not in ( 1, -1)\n                                                and activity_cd in (\'tab_access\', \'app_access\')\n                                           and user_id = [USER_ID]\n                                               group by affected_record_id\n                                   ) a, fn_app f\n                                 where a.affected_record_id = f.app_id\n                                 order by ct desc \n                             ) b,\n                          (SELECT @rn := 0) t2\n          ) mm where rowId &lt;= 4\n      )b\n    where a.Date between date_add( curdate(), interval -30 day) and  curdate()\n) l left outer join\n(\n    select app_name,  DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n    where user_id = [USER_ID]\n     and audit_date &gt; date_add( curdate(), interval -30 day)\n    and activity_cd in (\'tab_access\', \'app_access\')\n   and a.affected_record_id = b.app_id\n   and b.app_id &lt;&gt; 1\n       and b.app_id in \n      (\n             SELECT  \n                      app_id\n                from\n          (\n                     select @rn := @rn+1 AS rowId, app_id from \n                            (\n                                     select app_id, ct from \n                                       (\n                                             select affected_record_id app_id, count(*) ct\n                                         from fn_audit_log \n                                            where audit_date &gt; date_add( curdate(), interval -30 day)\n                                          and affected_record_id not in ( 1, -1)\n                                                and activity_cd in (\'tab_access\', \'app_access\')\n                                           and user_id = [USER_ID]\n                                               group by affected_record_id\n                                   ) a\n                                   order by ct desc \n                             ) b,\n                          (SELECT @rn := 0) t2\n          ) mm \n )\n     group by app_name,  DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId=\"du0\">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId=\"audit_date\">\n                    <tableId>du0</tableId>\n                    <dbColName>l.date</dbColName>\n                    <colName>l.date</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"app_name\">\n                    <tableId>du0</tableId>\n                    <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n                    <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n                    <displayName>app_name</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>2</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>true</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"ct\">\n                    <tableId>du0</tableId>\n                    <dbColName>IFNULL(r.ct,0)</dbColName>\n                    <colName>IFNULL(r.ct,0)</colName>\n                    <displayName>ct</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>down45</labelAngle>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <timeSeriesRender>line</timeSeriesRender>\n        <multiSeries>false</multiSeries>\n        <showXAxisLabel>false</showXAxisLabel>\n        <addXAxisTickers>false</addXAxisTickers>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',
+       1, 
+       now(), 
+       1, 
+       now(), 
+       '', 
+       'N', 
+       (select user_id from fn_user where org_user_id = 'demo'), 
+       NULL, 
+       'N', 
+       'N'
+       );
+       
+INSERT INTO cr_report 
+       (rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+       VALUES  (
+       20,     
+       'Average time spend on portal',
+       '',    
+       'Y',       
+       '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n    <reportName>Average time spend on portal</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>TimeSeriesChart</chartType>\n    <chartMultiSeries>N</chartMultiSeries>\n    <chartWidth>700</chartWidth>\n    <chartHeight>300</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>true</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n  d.dat audit_date, \n    \'# of Minutes\' app, \n        coalesce(diff, null, 0) mins \nfrom\n(\n        select * from\n (\n     select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as dat\n       from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n  cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c \n   ) d where d.dat between date_add( curdate(), interval -30 day) and  curdate()\n) d left outer join\n(\n select dat, mi, mx, TIMESTAMPDIFF(MINUTE, coalesce(mi, null, 0), coalesce(mx, null, 0)) + 30  diff\n    from\n  (\n             select DATE(audit_date) dat, coalesce(min(audit_date), null, 0) mi, coalesce(max(audit_date), null, 0) mx\n             from fn_audit_log \n            where user_id = [USER_ID] and DATE(audit_date) between CURDATE()-300 and CURDATE()\n            group by DATE(audit_date)\n     ) a\n) a\non a.dat = d.dat\norder by 1</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId=\"du0\">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId=\"audit_date\">\n                    <tableId>du0</tableId>\n                    <dbColName>d.dat</dbColName>\n                    <colName>d.dat</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"app\">\n                    <tableId>du0</tableId>\n                    <dbColName>\'# of Minutes\'</dbColName>\n                    <colName>\'# of Minutes\'</colName>\n                    <displayName>app</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <chartSeries>true</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                </dataColumn>\n                <dataColumn colId=\"mins\">\n                    <tableId>du0</tableId>\n                    <dbColName>coalesce(diff, null, 0)</dbColName>\n                    <colName>coalesce(diff, null, 0)</colName>\n                    <displayName>mins</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>down45</labelAngle>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <timeSeriesRender>line</timeSeriesRender>\n        <multiSeries>false</multiSeries>\n        <showXAxisLabel>false</showXAxisLabel>\n        <addXAxisTickers>false</addXAxisTickers>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',
+       1, 
+       now(), 
+       1, 
+       now(), 
+       '', 
+       'N', 
+       (select user_id from fn_user where org_user_id = 'demo'), 
+       NULL, 
+       'N', 
+       'N'
+       );
+    
+    
+insert into ep_app_function (app_id, function_cd, function_name) values
+(1,    'url|edit_notification|*',      'User Notification'),
+(1,    'url|getAdminNotifications|*',  'Admin Notifications'),
+(1,    'url|login|*',  'Login'),
+(1,    'menu|menu_admin|*','Admin Menu'),
+(1,'menu|menu_home|*','Home Menu'),
+(1,    'menu|menu_logout|*','Logout Menu'),
+(1,    'menu|menu_web_analytics|*','Web Analytics'),
+(1,    'url|saveNotification|*','publish notifications'),
+(1,    'url|url_role.htm|*','role page'),
+(1,    'url|url_welcome.htm|*','welcome page'),
+(1, 'menu|menu_acc_admin|*','Admin Account Menu'),
+(1,'url|addWebAnalyticsReport|*','Add Web Analytics Report'), 
+(1,'url|appsFullList|*','Apps Full List'),
+(1,'url|centralizedApps|*','Centralized Apps'),
+(1,'url|functionalMenu|*','Functional Menu'),
+(1,'url|getAllWebAnalytics|*','Get All Web Analytics'),
+(1,'url|getFunctionalMenuRole|*','Get Functional Menu Role'),
+(1,'url|getNotificationAppRoles|*','Get Notification App Roles'),
+(1,'url|getUserAppsWebAnalytics|*','Get User Apps Web Analytics'),
+(1,'url|getUserJourneyAnalyticsReport|*','Get User Journey Report'),
+(1,'url|get_roles%2f%2a|*','getRolesOfApp'),
+(1,'url|get_role_functions%2f%2a|*','Get Role Functions'),
+(1,'url|notification_code|*','Notification Code'),
+(1,'url|role_function_list%2fsaveRoleFunction%2f%2a|*','Save Role Function'),
+(1,'url|syncRoles|*','SyncRoles'),
+(1,'url|userAppRoles|*','userAppRoles'),
+(1,'url|userApps|*','User Apps')
+;
+
+
+insert into ep_app_role_function (id, app_id, role_id, function_cd, role_app_id) values
+(1, 1, 1, 'url|login|*', null),
+(2, 1, 1, 'menu|menu_admin|*', null),
+(3, 1, 1, 'menu|menu_home|*', null),
+(4, 1, 1, 'menu|menu_logout|*', null),
+(5, 1, 16, 'url|login|*', null),
+(6, 1, 16, 'menu|menu_home|*', null),
+(7, 1, 16, 'menu|menu_logout|*', null),
+(8, 1, 950, 'url|edit_notification|*', null),
+(9, 1, 950, 'url|getAdminNotifications|*', null),
+(10,1, 950, 'url|saveNotification|*', null),
+(11,1, 999,'url|userAppRoles|*', null),
+(12,1, 999, 'url|getAdminNotifications|*', null),
+(13,1, 999,'url|userApps|*', null),
+(14,1, 1010, 'menu|menu_web_analytics|*', null),
+(15, 1, 2115, 'menu|menu_web_analytics|*', null),
+(16, 1 , 1, 'menu|menu_acc_admin|*' , null),
+(17, 1 , 999 ,'menu|menu_acc_admin|*', null),
+(18,1,999,'url|centralizedApps|*', null),
+(19,1,999,'url|getAllWebAnalytics|*', null),
+(20,1,999,'url|getFunctionalMenuRole|*', null),
+(21,1,999,'url|getNotificationAppRoles|*', null),
+(22,1,999,'url|getUserAppsWebAnalytics|*', null),
+(23,1,999,'url|getUserJourneyAnalyticsReport|*', null),
+(24,1,999,'url|get_roles%2f%2a|*', null),
+(25,1,999,'url|get_role_functions%2f%2a|*', null),
+(26,1,999,'url|notification_code|*', null),
+(27,1,999,'url|role_function_list%2fsaveRoleFunction%2f%2a|*', null),
+(28,1,999,'url|syncRoles|*', null);
+
+commit;    
\ No newline at end of file
index 045c674..ed95bdd 100644 (file)
                 // this.$log.debug('getUserAppRoles response: ', JSON.stringify(res))
                 // If response comes back as a redirected HTML page which IS NOT a success
                 if (this.utilsService.isValidJSON(res)== false ||  res.data.httpStatusCode == '500' || res.data.status == 'ERROR') {
-                    deferred.reject('UsersService::updateUserAppRoles: Failed'  + res.data.message);
+                    deferred.reject(' Error:'  + res.data.message);
                 } else {
                     // this.$log.info('UsersService::updateUserAppRoles: Succeeded');
                     deferred.resolve(res.data);
     }
     UsersService.$inject = ['$q', '$log', '$http', 'conf','uuid4', 'utilsService'];
     angular.module('ecompApp').service('usersService', UsersService)
-})();
+})();
\ No newline at end of file
index 8d275a4..2da81f3 100644 (file)
   z-index: 999;
 }
 
+.language {
+    float: left;
+    margin-top: -8px;
+}
+
+
 .logo-image {
           .portal-logo;
           display: inline-block;
index ed240b9..d0a87d7 100644 (file)
   
   -->
 <div class="header-position">
-    <header class="b2b-header-tabs" b2b-header-responsive>
-        <ul class="header__items" role="navigation">
-<!-- Menu Icon and name -->
-            <li class="header__item icon__item" onclick="window.location = 'applicationsHome'">
-                <div ng-include class="profile-detail-extension" src="'app/views/header/header-logo.html'"></div>             
-                <span id="portal-title" class="portal-title" ng-bind="ecompTitle"></span>              
-            </li>
-<!-- First Level menu -->
-            <li b2b-header-menu 
-               id="megaMenu-{{item.text.split(' ').join('-')}}" 
-               class="header__item b2b-headermenu" 
-               ng-repeat="item in megaMenuDataObject" 
-               ng-mousedown="loadFavorites(item.text)"  
-               role="presentation">
-               
-                <a href="javascript:void(0);" 
-                id="parentmenu-{{item.text.split(' ').join('-')}}-tabs"
-                class="menu__item" 
-                role="menuitem">{{item.text}}</a>
-                
-                <div class="header-secondary-wrapper" ng-if="item.active_yn=='Y'" ng-hide="hideMenus">
-                    <ul class="header-secondary" role="menu">
-<!-- Second Level menu -->
-                        <li class="header-subitem" 
-                        id="subItem-{{subItem.text.split(' ').join('-')}}"
-                        b2b-header-submenu 
-                        ng-repeat="i in item.children | orderBy : 'column'" 
-                        ng-mousemove="submenuLevelAction(i.text,i.column)" 
-                        role="presentation">
-           <!-- Favorites -->
-                               <div ng-if="i.text=='Favorites'" >                                      
-                                       <a href="javascript:void(0);" class="menu__item" role="menuitem">{{i.text}}</a>                
-                                       <i id="favorite-star" data-size="large"  class="icon-star favorites-icon-active"></i>                   
-                                       <div class="header-columns-div" ng-show='favoritesWindow' ng-mouseleave="hideFavoritesWindow()" >
-                                               <div class="header-tertiary-wrapper" id="header-favorites">
-                                                   <ul class="header-tertiary" role="menu">
-                                                       <li role="presentation">
-                                                               <div                                                   
-                                                     ng-repeat="subItem in favoritesMenuItems"
-                                                     ng-show="showFavorites"
-                                                     
-                                                     id="favoritesMenuItems-{{subItem.text.split(' ').join('-')}}">
-                                                    <div class="fav-links">
-                                                        <i id="favorite-selector-favorites-list"
-                                                           class="icon-star favorites-icon-active"                                                       
-                                                           data-ng-click="removeAsFavoriteItem($event, subItem.menuId)"
-                                                           ng-mousedown="removeAsFavoriteItem($event, subItem.menuId)">
-                                                        </i>
-                                                        <a id="favorites-list" aria-label="{{subItem.text}}" ng-click="goToUrl(subItem)">{{subItem.text}}</a>
-                                                    </div>
-                                                </div> 
-                                                                                               
-                                                           <div id="favorites-empty"  class="favorites-window-empty"   ng-show="emptyFavorites">
-                                                               <p id="p-no-favs-icon" class="no-fav-icon">
-                                                                       <span class="icon-star" ></span>
-                                                               </p>
-                                                                               <p id="p-no-favs" class="largeText">{{'No Favorites'|T}}</p>
-                                                                               <p id="p-no-favs-desc"  class="normal">{{'Add your favorite items for quick access'|T}}.</p>
-                                                               </div>
-                                                       </li>
-                                                   </ul>
-                                           </div>
-                                       </div>                  
-                               </div>
-            <!-- Support or Help -->
-                               <div ng-if="item.text=='Support' || item.text=='Help'" id="second-level-menus-help">                            
-                                       <a id="second-level-menus-{{i.text.split(' ').join('-')}}-help" href="javascript:void(0);" ng-click="goToUrl(i);auditLog(i,'Support')" class="menu__item" role="menuitem">{{i.text| elipsis: 50}}</a>           
-                               </div>
-                       <!-- Others -->
-                               <div ng-if="i.text!='Favorites' && (item.text!='Support' && item.text!='Help')" >
-                                       <a href="javascript:void(0);" class="menu__item" role="menuitem">{{i.text| elipsis: 50}}</a>
-                                   <div class="header-tertiary-wrapper" >
-                                           <ul class="third-level-menu"  role="menu" id="third-level-menus">
-<!-- Third Level menu -->                       
-                                                                               
-                                                       <li b2b-header-tertiarymenu ng-repeat="link in i.children | orderBy : 'column'" role="presentation" >
-                                                           <i id="level3-star-inactive-{{link.menuId}}" ng-cloak
-                                                    class="icon-star favorites-icon-inactive"  data-size="large"
-                                                    data-ng-click="setAsFavoriteItem($event, link.menuId)"
-                                                    ng-if="link.url.length > 1 && isUrlFavorite(link.menuId)==false">
-                                                </i>
-                                                <i id="level3-star-active-{{link.menuId}}" ng-cloak
-                                                   ng-if="link.url.length > 1 && isUrlFavorite(link.menuId)"
-                                                   class="icon-star favorites-icon-active ng-cloak"  data-size="large"
-                                                   data-ng-click="removeAsFavoriteItem($event, link.menuId)">
-                                                </i>                                              
-                                                
-                                                           <a class="third-level-title"
-                                                          aria-label="{{link.text | elipsis: 50}}"
-                                                          ng-click="goToUrl(link);auditLog(link,'application')">{{link.text| elipsis: 50}}</a>
-<!-- Fourth Level menu -->
-                                                           <div b2b-tertiary-link ng-repeat="title in link.children"  >
-                                                               <i id="level4-star-inactive-{{title.menuId}}" ng-cloak
-                                                              class="icon-star favorites-icon-inactive"
-                                                              data-ng-click="setAsFavoriteItem($event, title.menuId)"
-                                                              ng-if="title.url.length > 1 && isUrlFavorite(title.menuId)==false">
-                                                           </i>
-                                                           <i id="level4-star-active-{{title.menuId}}" ng-cloak
-                                                              class="icon-star favorites-icon-active"
-                                                              data-ng-click="removeAsFavoriteItem($event, title.menuId)"
-                                                              ng-if="title.url.length > 1 && isUrlFavorite(title.menuId)">
-                                                           </i>
-                                                               <a href="javascript:void(0);" class="header-tertiaryitem"  ng-class="{'disabled': title.disabled}" role="menuitem" ng-click="goToUrl(title);auditLog(title,'functional')">{{title.text | elipsis: 50}}</a>                                      
-                                                           </div>
-                                                       </li>   
-                                                       
-                                                          
-                                             
-                                                                
-                                           </ul>
-                                   </div>
-                               </div>
-           
-                        </li>                        
-                    </ul>
-                </div>
-            </li>
-<!-- Right side of the Menu - User Icon and Notification flag -->
-            <div class="login-section">
-        <!-- Language Select -->
-                               <select ng-controller="HeaderCtrl" ng-model="cur_lang" ng-change="switching(cur_lang)" style="float:right">
-                                       <option value="{{x.languageAlias}}" ng-repeat="x in langList">{{x.languageName}}</option>
-                               </select>
-     <!-- User Icon -->
-            <li class="header__item profile" aria-haspopup="true">
-                               <b2b-flyout>
-                                       <div b2b-flyout-toggler >
-                                               <div class="icon-people-oneperson" id="header-user-icon" tabindex="0" b2b-accessibility-click="13,32" aria-label="notifications" aria-haspopup="true" aria-expanded="{{flyoutOpened}}" role="button"></div>
-                                       <div id="login-snippet-text" class="login-snippet-text">{{header.isGuest ? 'Guest' : header.firstName}}</div>                  
-                                       </div>                                  
-                           <b2b-flyout-content horizontal-placement="center" vertical-placement="below">
-                                               <div  ng-controller="loginSnippetCtrl" >
-                                                       <div id="reg-header-snippet">
-                                                               <div tabindex="0" class="reg-profileDetails" id="reg-profiledetails-id">
-                                                                       <ul class="reg-Details-table">
-                                                                               <li>
-                                                               <div class="reg-userName-table">
-                                                                   <div id="reg-userName-table-row">
-                                                                       <div id="reg-userName-table-cell">
-                                                                               <h3 >{{firstName}} {{lastName}}&nbsp;</h3>
-                                                                           <span>&nbsp;</span>
-                                                                       </div>
-                                                                   </div>
-                                                               </div>
-                                                           </li>
-                                                                               <li><div class="reg-userEmail-label"><span class="reg-userEmail-label-spn reg-common-label-spn-txt" >{{'Email'|T}}<span class="visuallyhidden">:
-                                                           </span></span></div></li>
-                                                                               <li><div class="reg-userEmail-value"><span class="reg-userEmail-value-spn">
-                                                               {{loginSnippetEmail}}</span></div></li>
-                                                           <li>&nbsp;</li>
-                                                                               <li><div class="reg-userRole-label"><span class="reg-userRole-label-spn reg-common-label-spn-txt">
-                                                               {{'User Id'|T}}<span class="visuallyhidden">:</span></span></div></li>
-                                                                               <li><div class="reg-userRole-value"><span class="reg-userRole-value-spn">
-                                                               {{loginSnippetUserid}}<span class="visuallyhidden"></span></span></div></li>
-                                                           <li>&nbsp;</li>
-                                                                               <li><div class="reg-userLastLogin-label"><span class="reg-userLastLogin-label-spn reg-common-label-spn-txt">
-                                                               {{'Last login'|T}}<span class="visuallyhidden">:</span></span></div></li>
-                                                                               <li><div class="reg-userLastLogin-value"><span class="reg-userLastLogin-value-spn">
-                                                               {{ lastLogin | date : 'medium' }}<span class="visuallyhidden"></span></span></div></li>
-                                                               <li>&nbsp;</li>
-                                                                               <li>
-                                                                       <div class="display-userAppRoles-label">
-                                                                               <a href="javascript:void(0);"  ng-click="getUserApplicationRoles()"  class="icon-primary-accordion-plus" ng-class="{true: 'icon-primary-accordion-plus', false: 'icon-primary-accordion-minus'}[ !displayUserAppRoles]" ><span class="business-card-app-role">{{'Applications and Roles'|T}}</span></a>
-                                                                       </div>
-                                                                       <br>
-                                                               <div class="display-userAppRoles-label display-userAppRoles-label-txt" ng-show="displayUserAppRoles">
-                                                                    <div ng-repeat="ua in userapproles track by  $index">
-                                                                   <div class="reg-userApp-value">
-                                                                       <span class="reg-userApp-value-spn reg-common-label-spn-txt">{{ua.App}}<span class="visuallyhidden">:</span></span>
-                                                                                                       </div>                                                             
-                                                                       <div ng-repeat="role in ua.Roles track by  $index" class="reg-userAppRoles-value" >
-                                                                                <span  ng-if="role.indexOf('global_')!=-1" id="required" style="color: Red;" visible="false"> *</span>
-                                                                       <span class="reg-userAppRoles-value-spn">{{role}}</span>
-                                                                       </div>
-                                                                       <br>
-                                                                       </div>
-                                                               </div>
-                                                               </li>
+       <header class="b2b-header-tabs" b2b-header-responsive>
+               <ul class="header__items" role="navigation">
+                       <!-- Menu Icon and name -->
+                       <li class="header__item icon__item"
+                               onclick="window.location = 'applicationsHome'">
+                               <div ng-include class="profile-detail-extension"
+                                       src="'app/views/header/header-logo.html'"></div> <span
+                               id="portal-title" class="portal-title" ng-bind="ecompTitle"></span>
+                       </li>
+                       <!-- First Level menu -->
+                       <li b2b-header-menu id="megaMenu-{{item.text.split(' ').join('-')}}"
+                               class="header__item b2b-headermenu"
+                               ng-repeat="item in megaMenuDataObject"
+                               ng-mousedown="loadFavorites(item.text)" role="presentation"><a
+                               href="javascript:void(0);"
+                               id="parentmenu-{{item.text.split(' ').join('-')}}-tabs"
+                               class="menu__item" role="menuitem">{{item.text}}</a>
+
+                               <div class="header-secondary-wrapper" ng-if="item.active_yn=='Y'"
+                                       ng-hide="hideMenus">
+                                       <ul class="header-secondary" role="menu">
+                                               <!-- Second Level menu -->
+                                               <li class="header-subitem"
+                                                       id="subItem-{{subItem.text.split(' ').join('-')}}"
+                                                       b2b-header-submenu
+                                                       ng-repeat="i in item.children | orderBy : 'column'"
+                                                       ng-mousemove="submenuLevelAction(i.text,i.column)"
+                                                       role="presentation">
+                                                       <!-- Favorites -->
+                                                       <div ng-if="i.text=='Favorites'">
+                                                               <a href="javascript:void(0);" class="menu__item" role="menuitem">{{i.text}}</a>
+                                                               <i id="favorite-star" data-size="large"
+                                                                       class="icon-star favorites-icon-active"></i>
+                                                               <div class="header-columns-div" ng-show='favoritesWindow'
+                                                                       ng-mouseleave="hideFavoritesWindow()">
+                                                                       <div class="header-tertiary-wrapper" id="header-favorites">
+                                                                               <ul class="header-tertiary" role="menu">
+                                                                                       <li role="presentation">
+                                                                                               <div ng-repeat="subItem in favoritesMenuItems"
+                                                                                                       ng-show="showFavorites"
+                                                                                                       id="favoritesMenuItems-{{subItem.text.split(' ').join('-')}}">
+                                                                                                       <div class="fav-links">
+                                                                                                               <i id="favorite-selector-favorites-list"
+                                                                                                                       class="icon-star favorites-icon-active"
+                                                                                                                       data-ng-click="removeAsFavoriteItem($event, subItem.menuId)"
+                                                                                                                       ng-mousedown="removeAsFavoriteItem($event, subItem.menuId)">
+                                                                                                               </i> <a id="favorites-list" aria-label="{{subItem.text}}"
+                                                                                                                       ng-click="goToUrl(subItem)">{{subItem.text}}</a>
+                                                                                                       </div>
+                                                                                               </div>
+
+                                                                                               <div id="favorites-empty" class="favorites-window-empty"
+                                                                                                       ng-show="emptyFavorites">
+                                                                                                       <p id="p-no-favs-icon" class="no-fav-icon">
+                                                                                                               <span class="icon-star"></span>
+                                                                                                       </p>
+                                                                                                       <p id="p-no-favs" class="largeText">{{'No
+                                                                                                               Favorites'|T}}</p>
+                                                                                                       <p id="p-no-favs-desc" class="normal">{{'Add your
+                                                                                                               favorite items for quick access'|T}}.</p>
+                                                                                               </div>
+                                                                                       </li>
+                                                                               </ul>
+                                                                       </div>
+                                                               </div>
+                                                       </div> <!-- Support or Help -->
+                                                       <div ng-if="item.text=='Support' || item.text=='Help'"
+                                                               id="second-level-menus-help">
+                                                               <a id="second-level-menus-{{i.text.split(' ').join('-')}}-help"
+                                                                       href="javascript:void(0);"
+                                                                       ng-click="goToUrl(i);auditLog(i,'Support')" class="menu__item"
+                                                                       role="menuitem">{{i.text| elipsis: 50}}</a>
+                                                       </div> <!-- Others -->
+                                                       <div
+                                                               ng-if="i.text!='Favorites' && (item.text!='Support' && item.text!='Help')">
+                                                               <a href="javascript:void(0);" class="menu__item" role="menuitem">{{i.text|
+                                                                       elipsis: 50}}</a>
+                                                               <div class="header-tertiary-wrapper">
+                                                                       <ul class="third-level-menu" role="menu" id="third-level-menus">
+                                                                               <!-- Third Level menu -->
+
+                                                                               <li b2b-header-tertiarymenu
+                                                                                       ng-repeat="link in i.children | orderBy : 'column'"
+                                                                                       role="presentation"><i
+                                                                                       id="level3-star-inactive-{{link.menuId}}" ng-cloak
+                                                                                       class="icon-star favorites-icon-inactive" data-size="large"
+                                                                                       data-ng-click="setAsFavoriteItem($event, link.menuId)"
+                                                                                       ng-if="link.url.length > 1 && isUrlFavorite(link.menuId)==false">
+                                                                               </i> <i id="level3-star-active-{{link.menuId}}" ng-cloak
+                                                                                       ng-if="link.url.length > 1 && isUrlFavorite(link.menuId)"
+                                                                                       class="icon-star favorites-icon-active ng-cloak"
+                                                                                       data-size="large"
+                                                                                       data-ng-click="removeAsFavoriteItem($event, link.menuId)">
+                                                                               </i> <a class="third-level-title"
+                                                                                       aria-label="{{link.text | elipsis: 50}}"
+                                                                                       ng-click="goToUrl(link);auditLog(link,'application')">{{link.text|
+                                                                                               elipsis: 50}}</a> <!-- Fourth Level menu -->
+                                                                                       <div b2b-tertiary-link ng-repeat="title in link.children">
+                                                                                               <i id="level4-star-inactive-{{title.menuId}}" ng-cloak
+                                                                                                       class="icon-star favorites-icon-inactive"
+                                                                                                       data-ng-click="setAsFavoriteItem($event, title.menuId)"
+                                                                                                       ng-if="title.url.length > 1 && isUrlFavorite(title.menuId)==false">
+                                                                                               </i> <i id="level4-star-active-{{title.menuId}}" ng-cloak
+                                                                                                       class="icon-star favorites-icon-active"
+                                                                                                       data-ng-click="removeAsFavoriteItem($event, title.menuId)"
+                                                                                                       ng-if="title.url.length > 1 && isUrlFavorite(title.menuId)">
+                                                                                               </i> <a href="javascript:void(0);" class="header-tertiaryitem"
+                                                                                                       ng-class="{'disabled': title.disabled}" role="menuitem"
+                                                                                                       ng-click="goToUrl(title);auditLog(title,'functional')">{{title.text
+                                                                                                       | elipsis: 50}}</a>
+                                                                                       </div></li>
+
+
+
+
                                                                        </ul>
-                                                       <div ng-include class="profile-detail-extension" src="'app/views/header/header-extension.tpl.html'"></div>                                                                                                      
-                                                       <div id="reg-logout-div" class="logout-btn-div">
-                                                            <button href="javascript:void(0)" id="allLogout" ng-click="allAppsLogout()" class="btn btn-alt btn-small">
-                                                                                       {{'Log out'|T}}
-                                                                               </button>
-                                                       </div>
-                                                       </div>
+                                                               </div>
                                                        </div>
-                                               </div>          
-                           </b2b-flyout-content>
-                       </b2b-flyout>
-            </li> 
-    <!-- Notification flag -->
-            <li class="header__item notification" aria-haspopup="true" class="notification-li">
-               <b2b-flyout>
-                       <div b2b-flyout-toggler class="notification-div">
-                               <div class="notifications-count" ng-hide="notificationCount.count==0" ng-bind="notificationCount.count"></div>          
-                                               <div id="megamenu-notification-button" class="icon-content-flag megamenu-notification-overrides" class="b2b-flyout-icon" tabindex="0" b2b-accessibility-click="13,32" aria-label="notifications" aria-haspopup="true" aria-expanded="{{flyoutOpened}}" role="button"></div>
-                           </div>
-                           <b2b-flyout-content horizontal-placement="center" vertical-placement="below">
-                                               <div class="notification-content" ng-controller="notificationCtrl" >
-                                                       <div class="ng-scope">
-                                                               <div id="notification" class="notificationBox ">
-                                                                       <div align ="right">
-                                                                                <a id="notification-history-link" ui-sref="root.notificationHistory" class="notification-history-link-txt"> View All Recent Notifications </a>
-                                                                       </div>
-                                                                       <div class="notification-header">
-                                                                               <div class="notification-common-position">
-                                                                               <p class="notification-heading">{{'Notifications'| T}}</p>
+
+                                               </li>
+                                       </ul>
+                               </div></li>
+                       <!-- Right side of the Menu - User Icon and Notification flag -->
+                       <div class="login-section">
+                                       <!-- Language Select -->
+                                       <div ng-if="langList" class="language">
+                                               <select style="font: normal 12px Omnes-ECOMP-W02, Arial;" id="dropdown1" name="dropdown1" placeholder-text="Select Language" ng-model="cur_lang" ng-change="switching(cur_lang)">
+                                               <option ng-repeat="x in langList" value="{{x.languageAlias}}">{{x.languageName}}</option>
+                                           </select>
+                                       </div>
+                               <!-- User Icon -->
+                               <li class="header__item profile" aria-haspopup="true"><b2b-flyout>
+                                       <div b2b-flyout-toggler>
+                                               <div class="icon-people-oneperson" id="header-user-icon"
+                                                       tabindex="0" b2b-accessibility-click="13,32"
+                                                       aria-label="notifications" aria-haspopup="true"
+                                                       aria-expanded="{{flyoutOpened}}" role="button"></div>
+                                               <div id="login-snippet-text" class="login-snippet-text">{{header.isGuest
+                                                       ? 'Guest' : header.firstName}}</div>
+                                       </div>
+                                       <b2b-flyout-content horizontal-placement="center"
+                                               vertical-placement="below">
+                                       <div ng-controller="loginSnippetCtrl">
+                                               <div id="reg-header-snippet">
+                                                       <div tabindex="0" class="reg-profileDetails"
+                                                               id="reg-profiledetails-id">
+                                                               <ul class="reg-Details-table">
+                                                                       <li>
+                                                                               <div class="reg-userName-table">
+                                                                                       <div id="reg-userName-table-row">
+                                                                                               <div id="reg-userName-table-cell">
+                                                                                                       <h3>{{firstName}} {{lastName}}&nbsp;</h3>
+                                                                                                       <span>&nbsp;</span>
+                                                                                               </div>
+                                                                                       </div>
                                                                                </div>
-                                                                               <div class="notification-common-space"></div>
-                                                                       </div>
-                                                                       <div ng-show="notifications.length==0">
-                                                                               <div class="notification-main">
-                                                                                       <div class="notification-main-ht">
-                                                                                               <div align="center" class="icon-information notification-info-icon"></div>
+                                                                       </li>
+                                                                       <li><div class="reg-userEmail-label">
+                                                                                       <span
+                                                                                               class="reg-userEmail-label-spn reg-common-label-spn-txt">{{'Email'|T}}<span
+                                                                                               class="visuallyhidden">: </span></span>
+                                                                               </div></li>
+                                                                       <li><div class="reg-userEmail-value">
+                                                                                       <span class="reg-userEmail-value-spn">
+                                                                                               {{loginSnippetEmail}}</span>
+                                                                               </div></li>
+                                                                       <li>&nbsp;</li>
+                                                                       <li><div class="reg-userRole-label">
+                                                                                       <span class="reg-userRole-label-spn reg-common-label-spn-txt">
+                                                                                               {{'User Id'|T}}<span class="visuallyhidden">:</span>
+                                                                                       </span>
+                                                                               </div></li>
+                                                                       <li><div class="reg-userRole-value">
+                                                                                       <span class="reg-userRole-value-spn">
+                                                                                               {{loginSnippetUserid}}<span class="visuallyhidden"></span>
+                                                                                       </span>
+                                                                               </div></li>
+                                                                       <li>&nbsp;</li>
+                                                                       <li><div class="reg-userLastLogin-label">
+                                                                                       <span
+                                                                                               class="reg-userLastLogin-label-spn reg-common-label-spn-txt">
+                                                                                               {{'Last login'|T}}<span class="visuallyhidden">:</span>
+                                                                                       </span>
+                                                                               </div></li>
+                                                                       <li><div class="reg-userLastLogin-value">
+                                                                                       <span class="reg-userLastLogin-value-spn"> {{
+                                                                                               lastLogin | date : 'medium' }}<span class="visuallyhidden"></span>
+                                                                                       </span>
+                                                                               </div></li>
+                                                                       <li>&nbsp;</li>
+                                                                       <li>
+                                                                               <div class="display-userAppRoles-label">
+                                                                                       <a href="javascript:void(0);"
+                                                                                               ng-click="getUserApplicationRoles()"
+                                                                                               class="icon-primary-accordion-plus"
+                                                                                               ng-class="{true: 'icon-primary-accordion-plus', false: 'icon-primary-accordion-minus'}[ !displayUserAppRoles]"><span
+                                                                                               class="business-card-app-role">{{'Applications and
+                                                                                                       Roles'|T}}</span></a>
+                                                                               </div> <br>
+                                                                               <div
+                                                                                       class="display-userAppRoles-label display-userAppRoles-label-txt"
+                                                                                       ng-show="displayUserAppRoles">
+                                                                                       <div ng-repeat="ua in userapproles track by  $index">
+                                                                                               <div class="reg-userApp-value">
+                                                                                                       <span
+                                                                                                               class="reg-userApp-value-spn reg-common-label-spn-txt">{{ua.App}}<span
+                                                                                                               class="visuallyhidden">:</span></span>
+                                                                                               </div>
+                                                                                               <div ng-repeat="role in ua.Roles track by  $index"
+                                                                                                       class="reg-userAppRoles-value">
+                                                                                                       <span ng-if="role.indexOf('global_')!=-1" id="required"
+                                                                                                               style="color: Red;" visible="false"> *</span> <span
+                                                                                                               class="reg-userAppRoles-value-spn">{{role}}</span>
+                                                                                               </div>
+                                                                                               <br>
                                                                                        </div>
-                                                                               <div>
-                                                                               <p class="notification-text">{{'No New Notifications'| T}}.</p>
-                                                                       </div>
-                                                                       
+                                                                               </div>
+                                                                       </li>
+                                                               </ul>
+                                                               <div ng-include class="profile-detail-extension"
+                                                                       src="'app/views/header/header-extension.tpl.html'"></div>
+                                                               <div id="reg-logout-div" class="logout-btn-div">
+                                                                       <button href="javascript:void(0)" id="allLogout"
+                                                                               ng-click="allAppsLogout()" class="btn btn-alt btn-small">
+                                                                               {{'Log out'|T}}</button>
                                                                </div>
                                                        </div>
-                                                       <div class="notification-main" ng-show="notifications.length>0">
-                                                               <ul class="notifications-list">
-                                                                       <li class="item" data-id="5" ng-repeat="item in notifications">
-                                                                               <div class="icon">
-                                                                                       <span class="important" ng-show="item.priority==2"/>
-                                                                                       <span class="normal" ng-show="item.priority==1"/>
+                                               </div>
+                                       </div>
+                                       </b2b-flyout-content> </b2b-flyout></li>
+                               <!-- Notification flag -->
+                               <li class="header__item notification" aria-haspopup="true"
+                                       class="notification-li"><b2b-flyout>
+                                       <div b2b-flyout-toggler class="notification-div">
+                                               <div class="notifications-count"
+                                                       ng-hide="notificationCount.count==0"
+                                                       ng-bind="notificationCount.count"></div>
+                                               <div id="megamenu-notification-button"
+                                                       class="icon-content-flag megamenu-notification-overrides"
+                                                       class="b2b-flyout-icon" tabindex="0"
+                                                       b2b-accessibility-click="13,32" aria-label="notifications"
+                                                       aria-haspopup="true" aria-expanded="{{flyoutOpened}}"
+                                                       role="button"></div>
+                                       </div>
+                                       <b2b-flyout-content horizontal-placement="center"
+                                               vertical-placement="below">
+                                       <div class="notification-content" ng-controller="notificationCtrl">
+                                               <div class="ng-scope">
+                                                       <div id="notification" class="notificationBox ">
+                                                               <div align="right">
+                                                                       <a id="notification-history-link"
+                                                                               ui-sref="root.notificationHistory"
+                                                                               class="notification-history-link-txt"> View All Recent
+                                                                               Notifications </a>
+                                                               </div>
+                                                               <div class="notification-header">
+                                                                       <div class="notification-common-position">
+                                                                               <p class="notification-heading">{{'Notifications'| T}}</p>
+                                                                       </div>
+                                                                       <div class="notification-common-space"></div>
+                                                               </div>
+                                                               <div ng-show="notifications.length==0">
+                                                                       <div class="notification-main">
+                                                                               <div class="notification-main-ht">
+                                                                                       <div align="center"
+                                                                                               class="icon-information notification-info-icon"></div>
                                                                                </div>
+                                                                               <div>
+                                                                                       <p class="notification-text">{{'No New Notifications'|
+                                                                                               T}}.</p>
+                                                                               </div>
+
+                                                                       </div>
+                                                               </div>
+                                                               <div class="notification-main" ng-show="notifications.length>0">
+                                                                       <ul class="notifications-list">
+                                                                               <li class="item" data-id="5" ng-repeat="item in notifications">
+                                                                                       <div class="icon">
+                                                                                               <span class="important" ng-show="item.priority==2" /> <span
+                                                                                                       class="normal" ng-show="item.priority==1" />
+                                                                                       </div>
                                                                                        <div class="details" ng-click="showDetailedJsonMessage(item)">
                                                                                                <span class="title" ng-bind="item.msgSource"></span> <span
                                                                                                        class="title" ng-bind="item.msgHeader"></span> <span
                                                                                                        ng-if="item.msgSource!=='EP'"
                                                                                                        ng-bind="item.message| elipsis: 27"> </span>
                                                                                                <!-- <span class="date" ng-bind="item.time" ></span> -->
-                                                                                               <mydate>{{item.time | date:'MM/dd/yyyy hh:mm:ss a Z'}}</mydate>
+                                                                                               <mydate>{{item.time | date:'MM/dd/yyyy hh:mm:ss a
+                                                                                               Z'}}</mydate>
 
                                                                                        </div>
-                                                                               <button type="button" ng-click="deleteNotification($index)" class="button-default button-dismiss js-dismiss">x</button>
-                                                                       </li>
-                                                               </ul>
-                                                       </div>
-                                                       <div class="notification-footer">
-                                                               <div class="notification-links">
-                                                                       <div class="notification-common-space"></div>
+                                                                                       <button type="button" ng-click="deleteNotification($index)"
+                                                                                               class="button-default button-dismiss js-dismiss">x</button>
+                                                                               </li>
+                                                                       </ul>
+                                                               </div>
+                                                               <div class="notification-footer">
+                                                                       <div class="notification-links">
+                                                                               <div class="notification-common-space"></div>
+                                                                       </div>
                                                                </div>
                                                        </div>
-                                               </div>                                  
-                           </b2b-flyout-content>
-                       </b2b-flyout>
-            </li>
-
-            <li class="header__item recommendation" aria-haspopup="true"
-                                                       class="recommendation-li">
-            <div ng-include class="recommendation-detail-extension" src="'app/views/headerRecommendation/headerRecommendations.tpl.html'"></div> 
-            </li>            
-            </div>
-        </ul>
+                                               </div>
+                                       </div>
+                                       </b2b-flyout-content> </b2b-flyout></li>
+                                       <li class="header__item recommendation" aria-haspopup="true"
+                                               class="recommendation-li">
+                                               <div ng-include class="recommendation-detail-extension"
+                                                       src="'app/views/headerRecommendation/headerRecommendations.tpl.html'"></div>
+                                       </li>
+               </ul>
        </header>
 </div>
index 5d4fc4d..0429967 100644 (file)
         
         <div class="b2b-modal-footer">
                <div class="cta-button-group in">       
-                       <button id="button-app-save" class="btn btn-alt btn-small" size="small" ng-click="saveRole(role, editRoleFunction);" href="javascript:void(0)">Save</button>
+                       <button id="button-app-save" class="btn btn-alt btn-small" size="small" ng-disabled="!(role.name)" ng-click="saveRole(role, editRoleFunction);" href="javascript:void(0)">Save</button>
                                                
                        <button id="button-app-cancel" class="btn btn-alt btn-small" ng-click="$dismiss('cancel')" role="button" tabindex="0" href="javascript:void(0)">Cancel</button>
                </div>
index b481311..8765149 100644 (file)
@@ -152,11 +152,9 @@ app.controller('roleListController', function ($scope,RoleService, applicationsS
                   $scope.centralizedApps = res;
                   for(var i = 0; i<res.length; i++){
                              if(res[i].appId == 1){
-                                 $scope.getRolesForSelectedCentralizedApp(res[i].appId);
                                  $scope.apps.selectedCentralizedApp = res[i].appId;
                                  return;
                              }  
-                             $scope.getRolesForSelectedCentralizedApp(res[0].appId);
                              $scope.apps.selectedCentralizedApp = res[0].appId;
                   }
                 }
index 3df58da..8c04fa5 100644 (file)
@@ -46,8 +46,8 @@
             var isSystemUser = false;
 
             $scope.ngRepeatDemo = [
-                       {id: 'userButton', value: 'true', labelvalue: 'user'},
-                       {id: 'systemUserButton', value: 'false', labelvalue: 'system'}
+                       {id: 'userButton', value: 'true', labelvalue: 'User'},
+                       {id: 'systemUserButton', value: 'false', labelvalue: 'System'}
                    ]
             
             $scope.selectedvalueradioButtonGroup = {
index dc93006..eab95f4 100644 (file)
@@ -77,7 +77,7 @@
                                                </div>
                                        </fieldset>
                  <div class="systemUser" ng-show="selectedvalueradioButtonGroup.type =='false'" style="color: #5a5a5a;
-        font-family: Omnes-ECOMP-W02, Arial;font-size: 14px;margin-bottom: 8px; padding-left: 30px;">Enter system UserId</div>
+        font-family: Omnes-ECOMP-W02, Arial;font-size: 14px;margin-bottom: 8px; padding-left: 30px;">Enter system userId</div>
           <div ng-show="selectedvalueradioButtonGroup.type =='false'">
                                <input id="action-property-input"
                                        class="adminForm-name-property-input" placeholder="xxxxxx@org.com"
 $(document).ready(function(){
     $(".ngdialog-close").attr('id','dialog-close');
 });
-</script>
+</script>
\ No newline at end of file
index 4017581..538899d 100644 (file)
@@ -52,7 +52,7 @@
                                                <div>
                                                        <input id="input-table-search" placeholder="Search" class="table-search-field" type="text" data-ng-model="users.searchString">
                                                </div>
-                                               <button class="btn btn-alt btn-small" id="users-button-add"  ng-click="users.openAddNewUserModal()"><i class="icon-people-userbookmark" aria-hidden="true"></i>&nbsp;Add User</button> 
+                                               <button class="btn btn-alt btn-small" id="users-button-add"  ng-click="users.openAddNewUserModal()"><i class="icon-people-userbookmark" aria-hidden="true"></i>&nbsp;Add</button> 
                                <button class="btn btn-alt btn-small" id="users-bulk-upload-button-add"  ng-click="users.openBulkUserUploadModal()"><i class="icon-arrows-upload" aria-hidden="true"></i>&nbsp;Bulk Upload</button>
                                        </div>
                 </div>
         </div>
     </div>
 
-</div>
+</div>
\ No newline at end of file
index 78e3a20..eb95861 100644 (file)
                "centralizedApps": "http://localhost:8080/ecompportal/portalApi/centralizedApps",
                "uploadRoleFunction":"http://localhost:8080/ecompportal/portalApi/uploadRoleFunction/:appId",
            "checkIfUserIsSuperAdmin":"http://localhost:8080/ecompportal/portalApi/checkIfUserIsSuperAdmin",
-           "getCurrentLang": "http://localhost:8080/ecompportal/auxapi/languageSetting/user/:loginId",
+               "getCurrentLang": "http://localhost:8080/ecompportal/auxapi/languageSetting/user/:loginId",
                "getLanguages": "http://localhost:8080/ecompportal/auxapi/language",
                "updateLang": "http://localhost:8080/ecompportal/auxapi/languageSetting/user/:loginId"
        },
index d5014a9..2a43f83 100644 (file)
                                                <phase>generate-resources</phase>
 
                                                <configuration>
-                                                       <arguments>build --env=integ</arguments>
+                                                       <arguments>build --env=integ --force</arguments>
                                                </configuration>
                                        </execution>
 
index 95b06ad..d0849df 100644 (file)
                        <artifactId>jasypt-spring-boot-starter</artifactId>
                        <version>1.9</version>
                </dependency>
+               <dependency>
+                       <groupId>org.jsoup</groupId>
+                       <artifactId>jsoup</artifactId>
+                       <version>1.12.1</version>
+       </dependency>
                <!-- hibernate-core depends on dom4j, which has optional dependencies. 
                        On jenkins, contrary to doc, mvn 3.0.5 packages the optional dependencies 
                        in the war. Workaround: exclude them explicitly. -->
index 1861172..7a35ba4 100644 (file)
@@ -39,6 +39,7 @@ import org.springframework.web.multipart.MultipartFile;
 public class StorageServiceImpl implements StorageService {
 
        private static final Logger logger = LoggerFactory.getLogger(StorageServiceImpl.class);
+       private final String TMP_PATH = "/tmp/";
 
        @Autowired
        private SessionFactory sessionFactory;
@@ -98,13 +99,14 @@ public class StorageServiceImpl implements StorageService {
                                throw new StorageException(
                                                "StorageServiceImpl.checkZipFile: Failed to store empty file " + file.getOriginalFilename());
                        }
-                       String fileLocation = file.getOriginalFilename();
+
+                       String fileLocation = TMP_PATH+file.getOriginalFilename();
                        logger.debug("StorageServiceImpl.checkZipFile: store the widget to:" + fileLocation);
                        convFile = new File(fileLocation);
                        try(FileOutputStream fos = new FileOutputStream(convFile)){
                                fos.write(file.getBytes());
                        }
-                       map = unzipper.unzip_db(fileLocation, ".", "tempWidgets");
+                       map = unzipper.unzip_db(fileLocation, TMP_PATH, "tempWidgets");
                        convFile.delete();
                } catch (IOException e) {
                        logger.error("StorageServiceImpl.checkZipFile: Failed to store file " + file.getOriginalFilename(), e);
diff --git a/pom.xml b/pom.xml
index 9e136c0..a6e369b 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,8 @@
                <!-- Jenkins should invoke mvn with argument -Dbuild.number=${BUILD_NUMBER} -->
                <build.number>0</build.number>
                <epsdk.version>2.6.0-SNAPSHOT</epsdk.version>
-               <springframework.version>4.2.3.RELEASE</springframework.version>
+               <springframework.version>4.3.24.RELEASE</springframework.version>
+               <springframework.security.version>4.2.13.RELEASE</springframework.security.version>
                <hibernate.version>4.3.11.Final</hibernate.version>
                <fasterxml.version>2.8.10</fasterxml.version>
                <eelf.version>1.0.0</eelf.version>