Rework Database access classes 69/5369/2
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Thu, 16 Feb 2017 17:31:20 +0000 (09:31 -0800)
committerSébastien Determe <sd378r@intl.att.com>
Fri, 17 Feb 2017 11:57:10 +0000 (11:57 +0000)
The Catalog Db and Requests DB have been reworked to be extendable by
project using MSO opensource.
Useless hibernate cfg.xml file have been removed too.

Change-Id: I15579bde3913c9faf8eded6f92d6b5239cca512c
Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java
mso-api-handlers/mso-requests-db/src/main/resources/hibernate-requests-ajsc.cfg.xml [deleted file]
mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java
mso-catalog-db/src/main/resources/hibernate-catalog-ajsc.cfg.xml [deleted file]

index 8961b26..9abd871 100644 (file)
@@ -39,35 +39,35 @@ import org.hibernate.persister.entity.AbstractEntityPersister;
 
 import org.openecomp.mso.logger.MsoLogger;
 
-public final class RequestsDatabase {
-
-    private static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
-
-    private static final String SOURCE = "source";
-    private static final String START_TIME = "startTime";
-    private static final String REQUEST_TYPE = "requestType";
-    private static final String SERVICE_INSTANCE_ID = "serviceInstanceId";
-    private static final String SERVICE_INSTANCE_NAME = "serviceInstanceName";
-    private static final String VNF_INSTANCE_NAME = "vnfName";
-    private static final String VNF_INSTANCE_ID = "vnfId";
-    private static final String VOLUME_GROUP_INSTANCE_NAME = "volumeGroupName";
-    private static final String VOLUME_GROUP_INSTANCE_ID = "volumeGroupId";
-    private static final String VFMODULE_INSTANCE_NAME = "vfModuleName";
-    private static final String VFMODULE_INSTANCE_ID = "vfModuleId";
-    private static final String NETWORK_INSTANCE_NAME = "networkName";
-    private static final String NETWORK_INSTANCE_ID = "networkId";
-    private static final String GLOBAL_SUBSCRIBER_ID = "globalSubscriberId";
-    private static final String SERVICE_NAME_VERSION_ID = "serviceNameVersionId";
-    private static final String SERVICE_ID = "serviceId";
-    private static final String SERVICE_VERSION = "serviceVersion";
-    private static final String SERVICE_TYPE = "serviceType";
-    private static final String REQUEST_ID = "requestId";
-    private static MockRequestsDatabase mockDB = null;
+public class RequestsDatabase {
+
+    protected static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
+
+    protected static final String         SOURCE                     = "source";
+    protected static final String         START_TIME                 = "startTime";
+    protected static final String         REQUEST_TYPE               = "requestType";
+    protected static final String         SERVICE_INSTANCE_ID        = "serviceInstanceId";
+    protected static final String         SERVICE_INSTANCE_NAME      = "serviceInstanceName";
+    protected static final String         VNF_INSTANCE_NAME          = "vnfName";
+    protected static final String         VNF_INSTANCE_ID            = "vnfId";
+    protected static final String         VOLUME_GROUP_INSTANCE_NAME = "volumeGroupName";
+    protected static final String         VOLUME_GROUP_INSTANCE_ID   = "volumeGroupId";
+    protected static final String         VFMODULE_INSTANCE_NAME     = "vfModuleName";
+    protected static final String         VFMODULE_INSTANCE_ID       = "vfModuleId";
+    protected static final String         NETWORK_INSTANCE_NAME      = "networkName";
+    protected static final String         NETWORK_INSTANCE_ID        = "networkId";
+    protected static final String         GLOBAL_SUBSCRIBER_ID       = "globalSubscriberId";
+    protected static final String         SERVICE_NAME_VERSION_ID    = "serviceNameVersionId";
+    protected static final String         SERVICE_ID                 = "serviceId";
+    protected static final String         SERVICE_VERSION            = "serviceVersion";
+
+    protected static final String         REQUEST_ID                 = "requestId";
+    protected static MockRequestsDatabase mockDB                     = null;
 
     /**
      * Avoids creating an instance of this utility class.
      */
-    private RequestsDatabase () {
+    protected RequestsDatabase () {
     }
 
     public static boolean healthCheck () {
diff --git a/mso-api-handlers/mso-requests-db/src/main/resources/hibernate-requests-ajsc.cfg.xml b/mso-api-handlers/mso-requests-db/src/main/resources/hibernate-requests-ajsc.cfg.xml
deleted file mode 100644 (file)
index 14bd7b5..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ============LICENSE_START=======================================================
-  ECOMP MSO
-  ================================================================================
-  Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-  ================================================================================
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file 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.
-  ============LICENSE_END=========================================================
-  -->
-
-<!DOCTYPE hibernate-configuration PUBLIC
-               "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
-               "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
-<hibernate-configuration>
-          <session-factory>
-        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
-        <property name="hibernate.show_sql">false</property>
-        <property name="hibernate.format_sql">true</property>
-
-        <mapping resource="InfraActiveRequests.hbm.xml"></mapping>
-        <mapping resource="SiteStatus.hbm.xml"></mapping>
-       </session-factory>
-     <!-- <session-factory name="MSORequestsFactory">
-       <property name="connection.url">${REQUESTS_CONNECTION_URL}</property>
-        <property name="connection.username">${REQUESTS_USERNAME}</property>
-        <property name="connection.password">${REQUESTS_PASSWORD}</property>
-        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
-        <property name="hibernate.default_schema">mso_requests</property>
-        <property name="connection.driver_class">org.mariadb.jdbc.Driver</property>
-        <property name="hibernate.current_session_context_class">thread</property>
-        <property name="hibernate.show_sql">false</property>
-        <property name="hibernate.format_sql">true</property>    
-
-         
-        <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
-               <property name="hibernate.c3p0.min_size">${REQUESTS_MIN_POOL_SIZE}</property> 
-               <property name="hibernate.c3p0.max_size">${REQUESTS_MAX_POOL_SIZE}</property> 
-               <property name="hibernate.c3p0.timeout">${REQUESTS_TIMEOUT}</property> 
-               <property name="hibernate.c3p0.max_statements">50</property> 
-               <property name="hibernate.c3p0.idle_test_period">1000</property> 
-               <property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property> 
-               
-  
-
-        <mapping resource="InfraActiveRequests.hbm.xml"></mapping>     
-
-    </session-factory> -->
-</hibernate-configuration>
index 35158a4..70b9618 100644 (file)
@@ -48,21 +48,22 @@ import org.openecomp.mso.logger.MsoLogger;
  */
 public class CatalogDatabase implements Closeable {
 
-    private static final String NETWORK_TYPE = "networkType";
-    private static final String ACTION = "action";
-    private static final String VNF_TYPE = "vnfType";
-    private static final String SERVICE_TYPE = "serviceType";
-    private static final String VNF_COMPONENT_TYPE = "vnfComponentType";
-    private static final String MODEL_NAME = "modelName";
-    private static final String TYPE = "type";
-    private static final String VF_MODULE_ID = "vfModuleId";
-    private static boolean initialized = false;
-    private static SessionFactory sessionFactory;
-    private static ServiceRegistry serviceRegistry;
-
-    private static final MsoLogger LOGGER = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
-
-    private Session session = null;
+    protected static final String NETWORK_TYPE = "networkType";
+    protected static final String ACTION = "action";
+    protected static final String VNF_TYPE = "vnfType";
+    protected static final String SERVICE_TYPE = "serviceType";
+    protected static final String VNF_COMPONENT_TYPE = "vnfComponentType";
+    protected static final String MODEL_NAME = "modelName";
+    protected static final String TYPE = "type";
+    protected static final String VF_MODULE_ID = "vfModuleId";
+    protected static boolean initialized = false;
+    protected static SessionFactory sessionFactory;
+    protected static ServiceRegistry serviceRegistry;
+    protected static final String SERVICE_NAME_VERSION_ID= "serviceNameVersionId";
+    
+    protected static final MsoLogger LOGGER = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
+
+    protected Session session = null;
 
     public CatalogDatabase () {
     }
@@ -387,6 +388,49 @@ public class CatalogDatabase implements Closeable {
         return resultList.get (0);
     }
 
+    /**
+     * Return a Service recipe that matches a given SERVICE_NAME_VERSION_ID
+     * (MODEL_VERSION_ID) and ACTION
+     *
+     * @param modelVersionId
+     * @param action    
+     * @return ServiceRecipe object or null if none found
+     */
+    public ServiceRecipe getServiceRecipe(String modelVersionId,
+                                       String action) {                     
+
+        long startTime = System.currentTimeMillis();
+        LOGGER.debug("Catalog database - get Service recipe with modeVersionId=" + modelVersionId
+                                      + " and action=" + action);
+
+        try {
+                        String hql;
+
+                        hql = "SELECT new ServiceRecipe(SR.id, SR.serviceId, SR.action, SR.description, " +
+                                        "SR.orchestrationUri, SR.serviceParamXSD, case when SR.recipeTimeout is null then 0 else SR.recipeTimeout end, " +
+                                        "case when SR.serviceTimeoutInterim is null then 0 else SR.serviceTimeoutInterim end, SR.created) " +
+                                        "FROM Service as S RIGHT OUTER JOIN S.recipes SR " +
+                                        "WHERE SR.serviceId = S.id AND S.serviceNameVersionId = :serviceNameVersionId AND SR.action = :action";
+                        Query query = getSession().createQuery(hql);
+                        query.setParameter(SERVICE_NAME_VERSION_ID, modelVersionId);
+                        query.setParameter(ACTION, action);
+
+                        @SuppressWarnings("unchecked")
+                        List<ServiceRecipe> recipeResultList = query.list();
+                        if (recipeResultList.isEmpty()) {
+                                LOGGER.debug("Catalog database - recipeResultList is null");
+                                return null;
+                        }
+                        Collections.sort(recipeResultList, new MavenLikeVersioningComparator());
+                        Collections.reverse(recipeResultList);
+                        LOGGER.debug("Catalog database - recipeResultList contains " + recipeResultList.get(0).toString());
+
+                        return recipeResultList.get(0);
+        } finally {
+            LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "CatalogDB", "getServiceRecipe", null);
+        }
+    }
+    
     /**
      * Return a newest version of Service recipe that matches a given SERVICE_ID and ACTION
      *
diff --git a/mso-catalog-db/src/main/resources/hibernate-catalog-ajsc.cfg.xml b/mso-catalog-db/src/main/resources/hibernate-catalog-ajsc.cfg.xml
deleted file mode 100644 (file)
index 7f28a36..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ============LICENSE_START=======================================================
-  ECOMP MSO
-  ================================================================================
-  Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-  ================================================================================
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file 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.
-  ============LICENSE_END=========================================================
-  -->
-
-
-<!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
-
-<hibernate-configuration>
-       <session-factory>
-           <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
-        <property name="hibernate.show_sql">false</property>
-        <property name="hibernate.format_sql">true</property>
-               
-               <mapping resource="VnfResource.hbm.xml"/>
-               <mapping resource="VnfRecipe.hbm.xml"/>
-               <mapping resource="HeatTemplate.hbm.xml"/>
-               <mapping resource="Service.hbm.xml"/>
-               <mapping resource="NetworkResource.hbm.xml"/>
-               <mapping resource="NetworkRecipe.hbm.xml"/>
-               <mapping resource="HeatEnvironment.hbm.xml"/>
-               <mapping resource="HeatNestedTemplate.hbm.xml"/>
-               <mapping resource="VnfComponent.hbm.xml"/>
-               <mapping resource="VnfComponentsRecipe.hbm.xml"/>
-               <mapping resource="VfModule.hbm.xml"/>
-               <mapping resource="VfModuleToHeatFiles.hbm.xml"/>
-        <!--    <property name="connection.url">${CATALOG_CONNECTION_URL}</property>
-        <property name="connection.username">${CATALOG_USERNAME}</property>
-        <property name="connection.password">${CATALOG_PASSWORD}</property> 
-               <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
-               <property name="hibernate.default_schema">mso_catalog</property>
-        <property name="connection.driver_class">org.mariadb.jdbc.Driver</property>
-        <property name="hibernate.current_session_context_class">thread</property>
-        <property name="hibernate.show_sql">false</property>
-        <property name="hibernate.format_sql">true</property>    
-         
-        <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
-               <property name="hibernate.c3p0.min_size">${CATALOG_MIN_POOL_SIZE}</property> 
-               <property name="hibernate.c3p0.max_size">${CATALOG_MAX_POOL_SIZE}</property> 
-               <property name="hibernate.c3p0.timeout">${CATALOG_TIMEOUT}</property> 
-               <property name="hibernate.c3p0.max_statements">50</property> 
-               <property name="hibernate.c3p0.idle_test_period">1000</property> 
-               <property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property> 
-               
-               
-               <mapping resource="VnfResource.hbm.xml"/>
-               <mapping resource="VnfRecipe.hbm.xml"/>
-               <mapping resource="HeatTemplate.hbm.xml"/>
-               <mapping resource="CloudSite.hbm.xml"/>
-               <mapping resource="Service.hbm.xml"/>
-               <mapping resource="NetworkResource.hbm.xml"/>
-               <mapping resource="NetworkRecipe.hbm.xml"/>
-               <mapping resource="HeatEnvironment.hbm.xml"/>
-               <mapping resource="HeatNestedTemplate.hbm.xml"/>
-               <mapping resource="VnfComponent.hbm.xml"/>
-               <mapping resource="VnfComponentsRecipe.hbm.xml"/> -->
-       </session-factory>
-</hibernate-configuration>