diff options
author | liamfallon <liam.fallon@est.tech> | 2019-04-04 12:16:12 +0000 |
---|---|---|
committer | liamfallon <liam.fallon@est.tech> | 2019-04-04 12:16:12 +0000 |
commit | fc297c8a98df155971e2fa485c7724a61b70c69c (patch) | |
tree | 4ee7cd37b8535417b467d8680455f87c52d534be /models-dao/src/main/java | |
parent | 162cb586fe139460dd3d0404274e85b3f4ead15b (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/java')
-rw-r--r-- | models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java | 26 | ||||
-rw-r--r-- | models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java | 55 |
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; |