Fix config files to remove outdated configuration for hibernate
[policy/models.git] / models-dao / src / main / java / org / onap / policy / models / dao / PfDao.java
index 380a983..21f3a7f 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019-2021 Nordix Foundation.
+ *  Copyright (C) 2019-2021, 2024 Nordix Foundation.
  *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  *  Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
  * ================================================================================
@@ -36,6 +36,54 @@ import org.onap.policy.models.base.PfTimestampKey;
  * to and from databases using JDBC.
  */
 public interface PfDao {
+    String NAME = "name";
+    String VERSION = "version";
+    String TIMESTAMP = "timeStamp";
+    String PARENT_NAME = "parentname";
+    String PARENT_VERSION = "parentversion";
+    String LOCAL_NAME = "localname";
+
+    String TABLE_TOKEN = "__TABLE__";
+
+    String DELETE_FROM_TABLE = "DELETE FROM __TABLE__ c";
+
+    String SELECT_FROM_TABLE = "SELECT c FROM __TABLE__ c";
+
+    String WHERE = " WHERE ";
+    String AND = " AND ";
+    String ORDER_BY = " ORDER BY c.";
+
+    String NAME_FILTER = "c.key.name = :name";
+    String VERSION_FILTER = "c.key.version = :version";
+    String TIMESTAMP_FILTER = "c.key.timeStamp = :timeStamp";
+    String PARENT_NAME_FILTER = "c.key.parentKeyName = :parentname";
+    String PARENT_VERSION_FILTER = "c.key.parentKeyVersion = :parentversion";
+    String LOCAL_NAME_FILTER = "c.key.localName = :localname";
+
+    String CLONE_ERR_MSG = "Could not clone object of class \"{}\"";
+
+    String DELETE_BY_CONCEPT_KEY =
+        DELETE_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER;
+
+    String DELETE_BY_TIMESTAMP_KEY =
+        DELETE_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER + AND + TIMESTAMP_FILTER;
+
+    String DELETE_BY_REFERENCE_KEY =
+        DELETE_FROM_TABLE + WHERE + PARENT_NAME_FILTER + AND + PARENT_VERSION_FILTER + AND + LOCAL_NAME_FILTER;
+
+    String SELECT_ALL_FOR_PARENT =
+        SELECT_FROM_TABLE + WHERE + PARENT_NAME_FILTER + AND + PARENT_VERSION_FILTER;
+
+    String SELECT_ALL_VERSIONS_FOR_PARENT =
+        SELECT_FROM_TABLE + WHERE + PARENT_NAME_FILTER;
+
+    String SELECT_ALL_VERSIONS = SELECT_FROM_TABLE + WHERE + NAME_FILTER;
+
+    String SELECT_BY_CONCEPT_KEY =
+        SELECT_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER;
+
+    String SELECT_BY_REFERENCE_KEY =
+        SELECT_FROM_TABLE + WHERE + PARENT_NAME_FILTER + AND + PARENT_VERSION_FILTER + AND + LOCAL_NAME_FILTER;
 
     /**
      * Initialize the Policy Framework DAO with the given parameters.
@@ -51,7 +99,7 @@ public interface PfDao {
     void close();
 
     /**
-     * Creates an Policy Framework concept on the database.
+     * Creates a Policy Framework concept on the database.
      *
      * @param <T> the type of the object to create, a subclass of {@link PfConcept}
      * @param obj the object to create
@@ -59,7 +107,7 @@ public interface PfDao {
     <T extends PfConcept> void create(T obj);
 
     /**
-     * Delete an Policy Framework concept on the database.
+     * Delete a Policy Framework concept on the database.
      *
      * @param <T> the type of the object to delete, a subclass of {@link PfConcept}
      * @param obj the object to delete
@@ -67,28 +115,28 @@ public interface PfDao {
     <T extends PfConcept> void delete(T obj);
 
     /**
-     * Delete an Policy Framework concept on the database.
+     * Delete a Policy Framework concept on the database.
      *
-     * @param <T> the type of the object to delete, a subclass of {@link PfConcept}
+     * @param <T>       the type of the object to delete, a subclass of {@link PfConcept}
      * @param someClass the class of the object to delete, a subclass of {@link PfConcept}
-     * @param key the key of the object to delete
+     * @param key       the key of the object to delete
      */
     <T extends PfConcept> void delete(Class<T> someClass, PfConceptKey key);
 
     /**
-     * Delete an Policy Framework concept on the database.
+     * Delete a Policy Framework concept on the database.
      *
-     * @param <T> the type of the object to delete, a subclass of {@link PfConcept}
+     * @param <T>       the type of the object to delete, a subclass of {@link PfConcept}
      * @param someClass the class of the object to delete, a subclass of {@link PfConcept}
-     * @param key the key of the object to delete
+     * @param key       the key of the object to delete
      */
     <T extends PfConcept> void delete(Class<T> someClass, PfReferenceKey key);
 
     /**
-     * Delete an Policy Framework concept on the database.
+     * Delete a Policy Framework concept on the database.
      *
-     * @param <T> the type of the object to delete, a subclass of {@link PfConcept}
-     * @param someClass the class of the object to delete, a subclass of {@link PfConcept}
+     * @param <T>          the type of the object to delete, a subclass of {@link PfConcept}
+     * @param someClass    the class of the object to delete, a subclass of {@link PfConcept}
      * @param timeStampKey the PfTimestampKey of the object to delete
      */
     <T extends PfConcept> void delete(Class<T> someClass, PfTimestampKey timeStampKey);
@@ -96,7 +144,7 @@ public interface PfDao {
     /**
      * Create a collection of objects in the database.
      *
-     * @param <T> the type of the object to create, a subclass of {@link PfConcept}
+     * @param <T>  the type of the object to create, a subclass of {@link PfConcept}
      * @param objs the objects to create
      */
     <T extends PfConcept> void createCollection(Collection<T> objs);
@@ -104,7 +152,7 @@ public interface PfDao {
     /**
      * Delete a collection of objects in the database.
      *
-     * @param <T> the type of the objects to delete, a subclass of {@link PfConcept}
+     * @param <T>  the type of the objects to delete, a subclass of {@link PfConcept}
      * @param objs the objects to delete
      */
     <T extends PfConcept> void deleteCollection(Collection<T> objs);
@@ -112,9 +160,9 @@ public interface PfDao {
     /**
      * Delete a collection of objects in the database referred to by concept key.
      *
-     * @param <T> the type of the objects to delete, a subclass of {@link PfConcept}
+     * @param <T>       the type of the objects to delete, a subclass of {@link PfConcept}
      * @param someClass the class of the objects to delete, a subclass of {@link PfConcept}
-     * @param keys the keys of the objects to delete
+     * @param keys      the keys of the objects to delete
      * @return the number of objects deleted
      */
     <T extends PfConcept> int deleteByConceptKey(Class<T> someClass, Collection<PfConceptKey> keys);
@@ -122,9 +170,9 @@ public interface PfDao {
     /**
      * Delete a collection of objects in the database referred to by reference key.
      *
-     * @param <T> the type of the objects to delete, a subclass of {@link PfConcept}
+     * @param <T>       the type of the objects to delete, a subclass of {@link PfConcept}
      * @param someClass the class of the objects to delete, a subclass of {@link PfConcept}
-     * @param keys the keys of the objects to delete
+     * @param keys      the keys of the objects to delete
      * @return the number of objects deleted
      */
     <T extends PfConcept> int deleteByReferenceKey(Class<T> someClass, Collection<PfReferenceKey> keys);
@@ -132,7 +180,7 @@ public interface PfDao {
     /**
      * Delete all objects of a given class in the database.
      *
-     * @param <T> the type of the objects to delete, a subclass of {@link PfConcept}
+     * @param <T>       the type of the objects to delete, a subclass of {@link PfConcept}
      * @param someClass the class of the objects to delete, a subclass of {@link PfConcept}
      */
     <T extends PfConcept> void deleteAll(Class<T> someClass);
@@ -140,12 +188,12 @@ public interface PfDao {
     /**
      * Get an object from the database, referred to by concept key.
      *
-     * @param <T> the type of the object to get, a subclass of {@link PfConcept}
+     * @param <T>       the type of the object to get, a subclass of {@link PfConcept}
      * @param someClass the class of the object to get, a subclass of {@link PfConcept}, if name is null, all concepts
-     *        of type T are returned, if name is not null and version is null, all versions of that concept matching the
-     *        name are returned.
-     * @param name the name of the object to get, null returns all objects
-     * @param version the version the object to get, null returns all objects for a specified name
+     *                  of type T are returned, if name is not null and version is null, all versions of that concept
+     *                  matching the name are returned.
+     * @param name      the name of the object to get, null returns all objects
+     * @param version   the version the object to get, null returns all objects for a specified name
      * @return the objects that was retrieved from the database
      */
     <T extends PfConcept> List<T> getFiltered(Class<T> someClass, String name, String version);
@@ -153,10 +201,10 @@ public interface PfDao {
     /**
      * Get an object from the database, referred to by concept key.
      *
-     * @param <T> the type of the object to get, a subclass of {@link PfConcept}
-     * @param someClass the class of the object to get, a subclass of {@link PfConcept}, if name is null, all concepts
-     *        of type T are returned, if name is not null and version is null, all versions of that concept matching the
-     *        name are returned.
+     * @param <T>          the type of the object to get, a subclass of {@link PfConcept}
+     * @param someClass    the class of the object to get, a subclass of {@link PfConcept}, if name is null, all
+     *                     concepts of type T are returned, if name is not null and version is null, all versions of
+     *                     that concept matching the name are returned.
      * @param filterParams filter parameters
      * @return the objects that was retrieved from the database
      */
@@ -165,9 +213,9 @@ public interface PfDao {
     /**
      * Get an object from the database, referred to by concept key.
      *
-     * @param <T> the type of the object to get, a subclass of {@link PfConcept}
+     * @param <T>       the type of the object to get, a subclass of {@link PfConcept}
      * @param someClass the class of the object to get, a subclass of {@link PfConcept}
-     * @param key the PfConceptKey of the object to get
+     * @param key       the PfConceptKey of the object to get
      * @return the object that was retrieved from the database
      */
     <T extends PfConcept> T get(Class<T> someClass, PfConceptKey key);
@@ -175,9 +223,9 @@ public interface PfDao {
     /**
      * Get an object from the database, referred to by reference key.
      *
-     * @param <T> the type of the object to get, a subclass of {@link PfConcept}
+     * @param <T>       the type of the object to get, a subclass of {@link PfConcept}
      * @param someClass the class of the object to get, a subclass of {@link PfConcept}
-     * @param key the PfReferenceKey of the object to get
+     * @param key       the PfReferenceKey of the object to get
      * @return the object that was retrieved from the database or null if the object was not retrieved
      */
     <T extends PfConcept> T get(Class<T> someClass, PfReferenceKey key);
@@ -185,8 +233,8 @@ public interface PfDao {
     /**
      * Get an object from the database, referred to by reference key.
      *
-     * @param <T> the type of the object to get, a subclass of {@link PfConcept}
-     * @param someClass the class of the object to get, a subclass of {@link PfConcept}
+     * @param <T>          the type of the object to get, a subclass of {@link PfConcept}
+     * @param someClass    the class of the object to get, a subclass of {@link PfConcept}
      * @param timestampKey the PfTimestampKey of the object to get
      * @return the object that was retrieved from the database or null if the object was not retrieved
      */
@@ -195,9 +243,9 @@ public interface PfDao {
     /**
      * Get an object from the database, referred to by reference timestamp key.
      *
-     * @param <T> the type of the object to get, a subclass of {@link PfConcept}
+     * @param <T>       the type of the object to get, a subclass of {@link PfConcept}
      * @param someClass the class of the object to get, a subclass of {@link PfConcept}
-     * @param key the PfReferenceTimestampKey of the object to get
+     * @param key       the PfReferenceTimestampKey of the object to get
      * @return the object that was retrieved from the database or null if the object was not retrieved
      */
     <T extends PfConcept> T get(Class<T> someClass, PfReferenceTimestampKey key);
@@ -205,7 +253,7 @@ public interface PfDao {
     /**
      * Get all the objects in the database of a given type.
      *
-     * @param <T> the type of the objects to get, a subclass of {@link PfConcept}
+     * @param <T>       the type of the objects to get, a subclass of {@link PfConcept}
      * @param someClass the class of the objects to get, a subclass of {@link PfConcept}
      * @return the objects or null if no objects were retrieved
      */
@@ -214,7 +262,7 @@ public interface PfDao {
     /**
      * Get all the objects in the database of the given type with the given parent concept key.
      *
-     * @param <T> the type of the objects to get, a subclass of {@link PfConcept}
+     * @param <T>       the type of the objects to get, a subclass of {@link PfConcept}
      * @param someClass the class of the objects to get, a subclass of {@link PfConcept}
      * @param parentKey the parent key of the concepts to get
      * @return the all
@@ -224,9 +272,9 @@ public interface PfDao {
     /**
      * Get all the objects in the database of a given type.
      *
-     * @param <T> the type of the objects to get, a subclass of {@link PfConcept}
-     * @param someClass the class of the objects to get, a subclass of {@link PfConcept}
-     * @param orderBy field from class to order results by
+     * @param <T>        the type of the objects to get, a subclass of {@link PfConcept}
+     * @param someClass  the class of the objects to get, a subclass of {@link PfConcept}
+     * @param orderBy    field from class to order results by
      * @param numRecords number of records to be retrieved
      * @return the objects or null if no objects were retrieved
      */
@@ -235,9 +283,9 @@ public interface PfDao {
     /**
      * Get all the objects in the database of a given type.
      *
-     * @param <T> the type of the objects to get, a subclass of {@link PfConcept}
+     * @param <T>       the type of the objects to get, a subclass of {@link PfConcept}
      * @param someClass the class of the objects to get, a subclass of {@link PfConcept}
-     * @param name the name of the concepts for which to get all versions
+     * @param name      the name of the concepts for which to get all versions
      * @return the objects or null if no objects were retrieved
      */
     <T extends PfConcept> List<T> getAllVersions(Class<T> someClass, final String name);
@@ -245,8 +293,8 @@ public interface PfDao {
     /**
      * Get all the objects in the database of a given type.
      *
-     * @param <T> the type of the objects to get, a subclass of {@link PfConcept}
-     * @param someClass the class of the objects to get, a subclass of {@link PfConcept}
+     * @param <T>           the type of the objects to get, a subclass of {@link PfConcept}
+     * @param someClass     the class of the objects to get, a subclass of {@link PfConcept}
      * @param parentKeyName the name of the concepts for which to get all versions
      * @return the objects or null if no objects were retrieved
      */
@@ -255,7 +303,7 @@ public interface PfDao {
     /**
      * Get a concept from the database with the given concept key.
      *
-     * @param <T> the type of the object to get, a subclass of {@link PfConcept}
+     * @param <T>       the type of the object to get, a subclass of {@link PfConcept}
      * @param someClass the class of the object to get, a subclass of {@link PfConcept}
      * @param conceptId the concept key of the concept to get
      * @return the concept that matches the key or null if the concept is not retrieved
@@ -265,7 +313,7 @@ public interface PfDao {
     /**
      * Get a concept from the database with the given reference key.
      *
-     * @param <T> the type of the object to get, a subclass of {@link PfConcept}
+     * @param <T>       the type of the object to get, a subclass of {@link PfConcept}
      * @param someClass the class of the object to get, a subclass of {@link PfConcept}
      * @param conceptId the concept key of the concept to get
      * @return the concept that matches the key or null if the concept is not retrieved
@@ -275,7 +323,7 @@ public interface PfDao {
     /**
      * Get the number of instances of a concept that exist in the database.
      *
-     * @param <T> the type of the object to get, a subclass of {@link PfConcept}
+     * @param <T>       the type of the object to get, a subclass of {@link PfConcept}
      * @param someClass the class of the object to get, a subclass of {@link PfConcept}
      * @return the number of instances of the concept in the database
      */