Add a new key class which uses @GeneratedValue to base classes
[policy/models.git] / models-dao / src / main / java / org / onap / policy / models / dao / PfDao.java
index eb77be9..8447593 100644 (file)
@@ -27,6 +27,7 @@ import java.util.List;
 import java.util.Map;
 import org.onap.policy.models.base.PfConcept;
 import org.onap.policy.models.base.PfConceptKey;
+import org.onap.policy.models.base.PfGeneratedIdKey;
 import org.onap.policy.models.base.PfModelException;
 import org.onap.policy.models.base.PfReferenceKey;
 import org.onap.policy.models.base.PfReferenceTimestampKey;
@@ -94,6 +95,15 @@ public interface PfDao {
      */
     <T extends PfConcept> void delete(Class<T> someClass, PfTimestampKey timeStampKey);
 
+    /**
+     * Delete an 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 idKey the PfConceptIdKey of the object to delete
+     */
+    <T extends PfConcept> void delete(Class<T> someClass, PfGeneratedIdKey idKey);
+
     /**
      * Create a collection of objects in the database.
      *
@@ -202,6 +212,16 @@ public interface PfDao {
      */
     <T extends PfConcept> T get(Class<T> someClass, PfTimestampKey timestampKey);
 
+    /**
+     * 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 idKey the PfConceptIdKey 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, PfGeneratedIdKey idKey);
+
     /**
      * Get an object from the database, referred to by reference timestamp key.
      *
@@ -251,6 +271,18 @@ public interface PfDao {
      */
     <T extends PfConcept> List<T> getAllVersionsByParent(Class<T> someClass, final String parentKeyName);
 
+    /**
+     * 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 key the key of the PfGeneratedIdKey to get
+     * @param timeStamp the timeStamp of the concepts to get
+     * @return the objects or null if no objects were retrieved
+     */
+    <T extends PfConcept> List<T> getByTimestamp(final Class<T> someClass,
+                                                 final PfGeneratedIdKey key, final Instant timeStamp);
+
     /**
      * Get a concept from the database with the given concept key.
      *