pdp statistics database provider implementation
[policy/models.git] / models-dao / src / main / java / org / onap / policy / models / dao / PfDao.java
index e635085..692aa08 100644 (file)
 package org.onap.policy.models.dao;
 
 import java.util.Collection;
+import java.util.Date;
 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.PfModelException;
 import org.onap.policy.models.base.PfReferenceKey;
+import org.onap.policy.models.base.PfTimestampKey;
 
 /**
  * The Interface PfDao describes the DAO interface for reading and writing Policy Framework {@link PfConcept} concepts
@@ -81,6 +83,15 @@ public interface PfDao {
      */
     <T extends PfConcept> void delete(Class<T> someClass, PfReferenceKey key);
 
+    /**
+     * 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 timeStampKey the PfTimestampKey of the object to delete
+     */
+    <T extends PfConcept> void delete(Class<T> someClass, PfTimestampKey timeStampKey);
+
     /**
      * Create a collection of objects in the database.
      *
@@ -138,12 +149,31 @@ public interface PfDao {
      */
     <T extends PfConcept> List<T> getFiltered(Class<T> someClass, String name, String version);
 
+    /**
+     * 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 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
+     * @param startTime the start timeStamp to filter from database, filter rule: startTime <= filteredRecord timeStamp
+     *        <= endTime. null for ignore start time.
+     * @param endTime the end timeStamp to filter from database, filter rule: startTime <= filteredRecord timeStamp <=
+     *        endTime. null for ignore end time
+     * @filterMap Map store extra key/value used to filter from database, can be null.
+     * @return the objects that was retrieved from the database
+     */
+    <T extends PfConcept> List<T> getFiltered(Class<T> someClass, String name, String version, Date startTime,
+            Date endTime, Map<String, Object> filterMap);
+
     /**
      * 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}
-     * @param key the key 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);
@@ -153,11 +183,21 @@ public interface PfDao {
      *
      * @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 key 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);
 
+    /**
+     * 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 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
+     */
+    <T extends PfConcept> T get(Class<T> someClass, PfTimestampKey timestampKey);
+
     /**
      * Get all the objects in the database of a given type.
      *