From d84744112fc95ec8b2cc204c77829fec8726006d Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Thu, 16 Feb 2017 09:31:20 -0800 Subject: Rework Database access classes 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) --- .../openecomp/mso/requestsdb/RequestsDatabase.java | 50 +++++++-------- .../main/resources/hibernate-requests-ajsc.cfg.xml | 59 ----------------- .../openecomp/mso/db/catalog/CatalogDatabase.java | 74 ++++++++++++++++----- .../main/resources/hibernate-catalog-ajsc.cfg.xml | 75 ---------------------- 4 files changed, 84 insertions(+), 174 deletions(-) delete mode 100644 mso-api-handlers/mso-requests-db/src/main/resources/hibernate-requests-ajsc.cfg.xml delete mode 100644 mso-catalog-db/src/main/resources/hibernate-catalog-ajsc.cfg.xml diff --git a/mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java b/mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java index 8961b26a80..9abd871b5f 100644 --- a/mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java +++ b/mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java @@ -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 index 14bd7b5e69..0000000000 --- a/mso-api-handlers/mso-requests-db/src/main/resources/hibernate-requests-ajsc.cfg.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - org.hibernate.dialect.MySQL5Dialect - false - true - - - - - - diff --git a/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java b/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java index 35158a46b4..70b9618265 100644 --- a/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java +++ b/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java @@ -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 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 index 7f28a36346..0000000000 --- a/mso-catalog-db/src/main/resources/hibernate-catalog-ajsc.cfg.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - org.hibernate.dialect.MySQL5Dialect - false - true - - - - - - - - - - - - - - - - -- cgit 1.2.3-korg