aboutsummaryrefslogtreecommitdiffstats
path: root/models-dao/src/main
diff options
context:
space:
mode:
authorliamfallon <liam.fallon@est.tech>2019-04-04 12:16:12 +0000
committerliamfallon <liam.fallon@est.tech>2019-04-04 12:16:12 +0000
commitfc297c8a98df155971e2fa485c7724a61b70c69c (patch)
tree4ee7cd37b8535417b467d8680455f87c52d534be /models-dao/src/main
parent162cb586fe139460dd3d0404274e85b3f4ead15b (diff)
Add filter obejcts for concepts
This review: - Fixes the bug in getting policies where the key fields were null - Removes complex version checks from DAO interface - Simplifies provider API by introducing filter objects for searches Issue-ID: POLICY-1095 Change-Id: I5ab7471c03e8b61849e7882ed18541acd627dc39 Signed-off-by: liamfallon <liam.fallon@est.tech>
Diffstat (limited to 'models-dao/src/main')
-rw-r--r--models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java26
-rw-r--r--models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java55
2 files changed, 10 insertions, 71 deletions
diff --git a/models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java b/models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java
index 609afefd4..e635085ff 100644
--- a/models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java
+++ b/models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java
@@ -108,7 +108,7 @@ public interface PfDao {
<T extends PfConcept> int deleteByConceptKey(Class<T> someClass, Collection<PfConceptKey> keys);
/**
- * policypolicypolicy Delete a collection of objects in the database referred to by reference key.
+ * 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 someClass the class of the objects to delete, a subclass of {@link PfConcept}
@@ -132,10 +132,11 @@ public interface PfDao {
* @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 key the key of the object to get
+ * @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, PfConceptKey key);
+ <T extends PfConcept> List<T> getFiltered(Class<T> someClass, String name, String version);
/**
* Get an object from the database, referred to by concept key.
@@ -187,25 +188,6 @@ public interface PfDao {
<T extends PfConcept> List<T> getAllVersions(Class<T> someClass, final String name);
/**
- * Get latest version of 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}
- * @return the objects or null if no objects were retrieved
- */
- <T extends PfConcept> List<T> getLatestVersions(Class<T> someClass);
-
- /**
- * Get latest version of an object 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 conceptName the name of the concept for which to get the latest version
- * @return the objects or null if no objects were retrieved
- */
- <T extends PfConcept> T getLatestVersion(Class<T> someClass, final String conceptName);
-
- /**
* 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}
diff --git a/models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java b/models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java
index f7659b2ce..182017693 100644
--- a/models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java
+++ b/models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java
@@ -67,7 +67,6 @@ public class DefaultPfDao implements PfDao {
private static final String PARENT_NAME_FILTER = "c.key.parentKeyName = :parentname";
private static final String PARENT_VERSION_FILTER = "c.key.parentKeyVersion = :parentversion";
private static final String LOCAL_NAME_FILTER = "c.key.localName = :localname";
- private static final String MAX_VERISON_FILTER = "c.key.version = (SELECT MAX(c.key.version) FROM __TABLE__ c)";
private static final String DELETE_BY_CONCEPT_KEY =
DELETE_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER;
@@ -80,12 +79,6 @@ public class DefaultPfDao implements PfDao {
private static final String SELECT_ALL_VERSIONS = SELECT_FROM_TABLE + WHERE + NAME_FILTER;
- private static final String SELECT_LATEST_VERSION =
- SELECT_FROM_TABLE + WHERE + NAME_FILTER + AND + MAX_VERISON_FILTER;
-
- private static final String SELECT_LATEST_VERSIONS =
- "SELECT c FROM __TABLE__ c WHERE c.key.version = (SELECT MAX(c.key.version) FROM __TABLE__ c)";
-
private static final String SELECT_BY_CONCEPT_KEY =
SELECT_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER;
@@ -307,16 +300,17 @@ public class DefaultPfDao implements PfDao {
}
@Override
- public <T extends PfConcept> List<T> getFiltered(Class<T> someClass, PfConceptKey key) {
- if (key.getName() == null) {
+ public <T extends PfConcept> List<T> getFiltered(final Class<T> someClass, final String name,
+ final String version) {
+ if (name == null) {
return getAll(someClass);
}
- if (key.getVersion() == null) {
- return getAllVersions(someClass, key.getName());
+ if (version == null) {
+ return getAllVersions(someClass, name);
}
- T foundConcept = get(someClass, key);
+ T foundConcept = get(someClass, new PfConceptKey(name, version));
return (foundConcept == null ? Collections.emptyList() : Collections.singletonList(foundConcept));
}
@@ -421,43 +415,6 @@ public class DefaultPfDao implements PfDao {
}
@Override
- public <T extends PfConcept> List<T> getLatestVersions(final Class<T> someClass) {
- if (someClass == null) {
- return Collections.emptyList();
- }
- final EntityManager mg = getEntityManager();
- List<T> ret;
- try {
- // @formatter:off
- return mg.createQuery(setQueryTable(SELECT_LATEST_VERSIONS, someClass), someClass)
- .getResultList();
- // @formatter:on
- } finally {
- mg.close();
- }
- }
-
- @Override
- public <T extends PfConcept> T getLatestVersion(final Class<T> someClass, final String conceptName) {
- if (someClass == null || conceptName == null) {
- return null;
- }
- final EntityManager mg = getEntityManager();
- List<T> ret;
- try {
- // @formatter:off
- ret = mg.createQuery(setQueryTable(SELECT_LATEST_VERSION, someClass), someClass)
- .setParameter(NAME, conceptName)
- .getResultList();
- // @formatter:on
- } finally {
- mg.close();
- }
-
- return getSingleResult(someClass, conceptName, ret);
- }
-
- @Override
public <T extends PfConcept> T getConcept(final Class<T> someClass, final PfConceptKey key) {
if (someClass == null || key == null) {
return null;