Fix Reference Key columns persistence issue in db
[policy/models.git] / models-dao / src / main / java / org / onap / policy / models / dao / PfDao.java
index 062ec46..eb77be9 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019-2020 Nordix Foundation.
+ *  Copyright (C) 2019-2021 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 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.
 
 package org.onap.policy.models.dao;
 
+import java.time.Instant;
 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.PfReferenceTimestampKey;
 import org.onap.policy.models.base.PfTimestampKey;
 
 /**
@@ -167,8 +169,8 @@ public interface PfDao {
      * @param getRecordNum Total query count from database
      * @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, String sortOrder, int getRecordNum);
+    <T extends PfConcept> List<T> getFiltered(Class<T> someClass, String name, String version, Instant startTime,
+            Instant endTime, Map<String, Object> filterMap, String sortOrder, int getRecordNum);
 
     /**
      * Get an object from the database, referred to by concept key.
@@ -200,6 +202,16 @@ public interface PfDao {
      */
     <T extends PfConcept> T get(Class<T> someClass, PfTimestampKey timestampKey);
 
+    /**
+     * 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 someClass the class of the object to get, a subclass of {@link PfConcept}
+     * @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);
+
     /**
      * Get all the objects in the database of a given type.
      *
@@ -229,6 +241,16 @@ public interface PfDao {
      */
     <T extends PfConcept> List<T> getAllVersions(Class<T> someClass, final String name);
 
+    /**
+     * 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 parentKeyName 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> getAllVersionsByParent(Class<T> someClass, final String parentKeyName);
+
     /**
      * Get a concept from the database with the given concept key.
      *