From fc297c8a98df155971e2fa485c7724a61b70c69c Mon Sep 17 00:00:00 2001 From: liamfallon Date: Thu, 4 Apr 2019 12:16:12 +0000 Subject: 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 --- .../java/org/onap/policy/models/dao/PfDao.java | 26 ++-------- .../onap/policy/models/dao/impl/DefaultPfDao.java | 55 +++------------------- 2 files changed, 10 insertions(+), 71 deletions(-) (limited to 'models-dao/src/main/java/org') 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 { int deleteByConceptKey(Class someClass, Collection 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 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 */ - List getFiltered(Class someClass, PfConceptKey key); + List getFiltered(Class someClass, String name, String version); /** * Get an object from the database, referred to by concept key. @@ -186,25 +187,6 @@ public interface PfDao { */ List getAllVersions(Class someClass, final String name); - /** - * Get latest version of objects in the database of a given type. - * - * @param 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 - */ - List getLatestVersions(Class someClass); - - /** - * Get latest version of an object in the database of a given type. - * - * @param 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 getLatestVersion(Class someClass, final String conceptName); - /** * Get a concept from the database with the given concept key. * 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 List getFiltered(Class someClass, PfConceptKey key) { - if (key.getName() == null) { + public List getFiltered(final Class 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)); } @@ -420,43 +414,6 @@ public class DefaultPfDao implements PfDao { } } - @Override - public List getLatestVersions(final Class someClass) { - if (someClass == null) { - return Collections.emptyList(); - } - final EntityManager mg = getEntityManager(); - List ret; - try { - // @formatter:off - return mg.createQuery(setQueryTable(SELECT_LATEST_VERSIONS, someClass), someClass) - .getResultList(); - // @formatter:on - } finally { - mg.close(); - } - } - - @Override - public T getLatestVersion(final Class someClass, final String conceptName) { - if (someClass == null || conceptName == null) { - return null; - } - final EntityManager mg = getEntityManager(); - List 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 getConcept(final Class someClass, final PfConceptKey key) { if (someClass == null || key == null) { -- cgit 1.2.3-korg