From 51b9251e3f8e9e0d397af8479f1320108a573a3a Mon Sep 17 00:00:00 2001
From: Cyrus <24922493+cyrus-dev@users.noreply.github.com>
Date: Tue, 31 May 2022 10:17:11 -0400
Subject: [PATCH] Continued changes remove and updating return types and
parameter types
---
...tionCertificateAuthorityConfiguration.java | 1 -
.../RimDatabasePageController.java | 1 -
.../persistence/PersistenceConfiguration.java | 1 -
.../src/main/java/hirs/IMAReportRequest.java | 102 ------
.../src/main/java/hirs/ReportRequest.java | 2 +-
.../java/hirs/persist/AbstractDbManager.java | 131 ++++---
.../main/java/hirs/persist/CrudManager.java | 20 +-
.../hirs/persist/DBCertificateManager.java | 188 +++++++++-
.../src/main/java/hirs/persist/DBManager.java | 74 ++--
.../persist/DBReferenceDigestManager.java | 330 ------------------
.../java/hirs/persist/OrderedListQuerier.java | 4 +-
.../persist/PersistenceConfiguration.java | 15 +-
12 files changed, 298 insertions(+), 571 deletions(-)
delete mode 100755 HIRS_Utils/src/main/java/hirs/IMAReportRequest.java
delete mode 100644 HIRS_Utils/src/main/java/hirs/persist/DBReferenceDigestManager.java
diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/configuration/AttestationCertificateAuthorityConfiguration.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/configuration/AttestationCertificateAuthorityConfiguration.java
index ca2ca74c..20862a55 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/configuration/AttestationCertificateAuthorityConfiguration.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/configuration/AttestationCertificateAuthorityConfiguration.java
@@ -2,7 +2,6 @@ package hirs.attestationca.configuration;
import hirs.persist.DBDeviceGroupManager;
import hirs.persist.DBDeviceManager;
-import hirs.persist.DBReferenceDigestManager;
import hirs.persist.DBReferenceEventManager;
import hirs.persist.DBReferenceManifestManager;
import hirs.persist.DeviceGroupManager;
diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/RimDatabasePageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/RimDatabasePageController.java
index f8cbaa73..0ffc0d23 100644
--- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/RimDatabasePageController.java
+++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/RimDatabasePageController.java
@@ -13,7 +13,6 @@ import hirs.data.persist.SupportReferenceManifest;
import hirs.data.persist.certificate.Certificate;
import hirs.persist.CriteriaModifier;
import hirs.persist.DBManagerException;
-import hirs.persist.DBReferenceDigestManager;
import hirs.persist.DBReferenceEventManager;
import hirs.persist.DBReferenceManifestManager;
import hirs.persist.ReferenceDigestManager;
diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/persistence/PersistenceConfiguration.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/persistence/PersistenceConfiguration.java
index 8c124a20..1eda1f87 100644
--- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/persistence/PersistenceConfiguration.java
+++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/persistence/PersistenceConfiguration.java
@@ -9,7 +9,6 @@ import hirs.persist.DBDeviceGroupManager;
import hirs.persist.DBDeviceManager;
import hirs.persist.DBManager;
import hirs.persist.DBPolicyManager;
-import hirs.persist.DBReferenceDigestManager;
import hirs.persist.DBReferenceEventManager;
import hirs.persist.DBReferenceManifestManager;
import hirs.persist.DeviceGroupManager;
diff --git a/HIRS_Utils/src/main/java/hirs/IMAReportRequest.java b/HIRS_Utils/src/main/java/hirs/IMAReportRequest.java
deleted file mode 100755
index feec2b3f..00000000
--- a/HIRS_Utils/src/main/java/hirs/IMAReportRequest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package hirs;
-
-import static org.apache.logging.log4j.LogManager.getLogger;
-
-import hirs.data.persist.Report;
-
-import javax.xml.bind.annotation.XmlElement;
-
-import org.apache.logging.log4j.Logger;
-
-/**
- * IMAReportRequest
is an immutable class and extends
- * ReportRequest
to specify parameters which define
- * the composition of the IMA report to be generated by the client.
- * For example, IMAReportRequest
specifies whether a full IMA
- * report should be generated and submitted for appraisal or whether a delta
- * report (containing new entries since last full report) should be generated
- * and submitted. If a delta report is being requested, then an index must be
- * provided which is used to inform the client which subset of measurements
- * to include in the report.
- */
-public final class IMAReportRequest implements ReportRequest {
-
- private static final Logger LOGGER = getLogger(IMAReportRequest.class);
-
- @XmlElement
- private final String bootcycleId;
-
- @XmlElement
- private final int index;
-
- /**
- * Default constructor required to enable marshalling and unmarshalling
- * to/from xml.
- */
- public IMAReportRequest() {
- this(null, 0);
- }
-
- /**
- * Creates a new IMAReportRequest
. The boot-cycle ID and index
- * are set. The boot-cycle ID may be null to indicate that it is unknown by
- * the appraiser and a full report should be sent. The index is the index of
- * the new IMA record to send. An index of zero indicates a full report
- * should be sent.
- *
- * If the boot-cycle is null then the index must be zero. Otherwise an
- * IllegalArgumentException
is thrown.
- *
- * @param bootcycleId
- * boot-cycle ID
- * @param i
- * value to use as IMA index
- */
- public IMAReportRequest(final String bootcycleId, final int i) {
- LOGGER.debug("Entering constructor");
- if (i >= 0) {
- index = i;
- } else {
- String msg = "Cannot init IMAReportRequest with index less than 0";
- LOGGER.error(msg);
- throw new IllegalArgumentException(msg);
- }
- if (bootcycleId == null && i != 0) {
- String msg = "null boot-cycle ID must have index of 0";
- LOGGER.error(msg);
- throw new IllegalArgumentException(msg);
- }
- this.bootcycleId = bootcycleId;
- LOGGER.debug("Exiting constructor");
- }
-
- @Override
- public Class extends Report> getReportType() {
- return IMAReport.class;
- }
-
- /**
- * Returns the boot-cycle ID. This is the last boot-cycle ID that was saved
- * by the appraiser. If this is null or different than the boot-cycle ID for
- * the collector then a full report shall be sent.
- *
- * @return boot-cycle ID
- */
- public String getBootcycleId() {
- return bootcycleId;
- }
-
- /**
- * Method returns the IMA index.
- * @return index used to specify start location of measurement entries to
- * include in IMA report
- */
- public int getIMAIndex() {
- return index;
- }
-
- @Override
- public String toString() {
- return String.format("(%s, %d)", bootcycleId, index);
- }
-}
diff --git a/HIRS_Utils/src/main/java/hirs/ReportRequest.java b/HIRS_Utils/src/main/java/hirs/ReportRequest.java
index 6175a624..45a919d2 100755
--- a/HIRS_Utils/src/main/java/hirs/ReportRequest.java
+++ b/HIRS_Utils/src/main/java/hirs/ReportRequest.java
@@ -15,7 +15,7 @@ import javax.xml.bind.annotation.XmlTransient;
* client and submitted to the Appraiser
for processing.
*/
@XmlTransient
-@XmlSeeAlso(value = { IntegrityReportRequest.class, TPMReportRequest.class, IMAReportRequest.class,
+@XmlSeeAlso(value = { IntegrityReportRequest.class, TPMReportRequest.class,
DeviceInfoReportRequest.class })
public interface ReportRequest {
diff --git a/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java b/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java
index 23e3163c..576ed828 100644
--- a/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java
+++ b/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java
@@ -47,19 +47,19 @@ public abstract class AbstractDbManager implements CrudManager {
private static final Logger LOGGER = LogManager.getLogger(AbstractDbManager.class);
private static final int MAX_CLASS_CACHE_ENTRIES = 500;
- private final ArchivableEntity entity;
+ private Class clazz;
private SessionFactory factory;
/**
* Creates a new AbstractDbManager
.
*
- * @param entity Class to search for when doing Hibernate queries,
+ * @param clazz Class to search for when doing Hibernate queries,
* unfortunately class type of T cannot be determined using only T
* @param sessionFactory the session factory to use to interact with the database
*/
- public AbstractDbManager(final ArchivableEntity entity, final SessionFactory sessionFactory) {
- if (entity == null) {
+ public AbstractDbManager(final Class clazz, final SessionFactory sessionFactory) {
+ if (clazz == null) {
LOGGER.error("AbstractDbManager cannot be instantiated with a null class");
throw new IllegalArgumentException(
"AbstractDbManager cannot be instantiated with a null class"
@@ -71,10 +71,15 @@ public abstract class AbstractDbManager implements CrudManager {
"AbstractDbManager cannot be instantiated with a null SessionFactory"
);
}
- this.entity = entity;
+ this.clazz = clazz;
this.factory = sessionFactory;
}
+ @Override
+ public void setClazz(final Class classToSet) {
+ this.clazz = classToSet;
+ }
+
/**
* Return the currently configured database implementation.
*
@@ -119,15 +124,13 @@ public abstract class AbstractDbManager implements CrudManager {
try {
LOGGER.debug("retrieving object from db");
tx = session.beginTransaction();
- Object obj = session.get(entity, id);
- if (obj instanceof hirs.data.persist.ArchivableEntity) {
- hirs.data.persist.ArchivableEntity objectOfTypeT = (hirs.data.persist.ArchivableEntity) obj;
+ Object obj = session.get(clazz, id);
+
+ T objectOfTypeT = (T) obj;
LOGGER.debug("found object, deleting it");
session.delete(objectOfTypeT);
deleted = true;
- } else {
- LOGGER.debug("object not found");
- }
+
tx.commit();
} catch (Exception e) {
final String msg = "unable to retrieve object";
@@ -164,16 +167,16 @@ public abstract class AbstractDbManager implements CrudManager {
Transaction tx = null;
Session session = factory.getCurrentSession();
CriteriaBuilder builder = session.getCriteriaBuilder();
- CriteriaQuery criteria = builder.createQuery(entity);
+ CriteriaQuery criteria = builder.createQuery(clazz);
try {
LOGGER.debug("retrieving object from db");
tx = session.beginTransaction();
- Root myObjectRoot = criteria.from(clazz);
- Join joinObject = myObjectRoot.join("joinObject");
- Object object = session.getSessionFactory().getCurrentSession().createCriteria(clazz)
+ Root myObjectRoot = criteria.from(this.clazz.getClass());
+ Join joinObject = myObjectRoot.join("joinObject");
+ Object object = session.getSessionFactory().getCurrentSession().createCriteria(this.clazz.getClass())
.add(Restrictions.eq("name", name)).uniqueResult();
- if (object instanceof hirs.data.persist.ArchivableEntity) {
- hirs.data.persist.ArchivableEntity objectOfTypeT = (hirs.data.persist.ArchivableEntity) object;
+ if (object instanceof T) {
+ T objectOfTypeT = (T) object;
LOGGER.debug("found object, deleting it");
session.delete(objectOfTypeT);
deleted = true;
@@ -240,28 +243,26 @@ public abstract class AbstractDbManager implements CrudManager {
Transaction tx = null;
Session session = factory.getCurrentSession();
try {
- LOGGER.debug("Deleting instances of class: {}", clazz);
+ LOGGER.debug("Deleting instances of class: {}", this.clazz.getClass());
tx = session.beginTransaction();
CriteriaBuilder builder = session.getCriteriaBuilder();
- CriteriaQuery criteriaQuery = builder.createQuery(clazz);
- Root root = criteriaQuery.from(clazz);
+ CriteriaQuery criteriaQuery = builder.createQuery(this.clazz.getClass());
+ Root root = criteriaQuery.from(this.clazz.getClass());
Predicate recordPredicate = builder.and(
);
criteriaQuery.select(root).where(recordPredicate);
- Query query = session.createQuery(criteriaQuery);
- List results = query.getResultList();
- ArchivableEntity ret = null;
+ Query query = session.createQuery(criteriaQuery);
+ List results = query.getResultList();
+ T ret = null;
if (results != null && !results.isEmpty()) {
ret = results.get(0);
}
- List instances = session.createCriteria(clazz)
+ List instances = session.createCriteria(this.clazz.getClass())
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
for (Object instance : instances) {
- if (instance instanceof ArchivableEntity) {
- session.delete((ArchivableEntity) instance);
+ session.delete((T) instance);
numEntitiesDeleted++;
- }
}
tx.commit();
} catch (Exception e) {
@@ -286,16 +287,16 @@ public abstract class AbstractDbManager implements CrudManager {
* @throws DBManagerException if an error is encountered while performing the query or creating
* the result objects
*/
- protected List doGetWithCriteria(final Collection criteriaCollection)
+ protected List doGetWithCriteria(final Collection criteriaCollection)
throws DBManagerException {
- return doGetWithCriteria(entity, criteriaCollection);
+ return doGetWithCriteria(clazz, criteriaCollection);
}
/**
* Runs a Criteria query using the given collection of Criterion over the
* associated class.
*
- * @param the specific type of class to retrieve
+ * @param clazzToGet the specific type of class to retrieve
* (should extend this class' <T> parameter)
* @param clazzToGet the class of object to retrieve
* @param criteriaCollection the collection of Criterion to apply
@@ -304,8 +305,8 @@ public abstract class AbstractDbManager implements CrudManager {
* @throws DBManagerException if an error is encountered while performing the query or creating
* the result objects
*/
- protected final List doGetWithCriteria(
- final Class clazzToGet,
+ protected final List doGetWithCriteria(
+ final Class clazzToGet,
final Collection criteriaCollection
) throws DBManagerException {
LOGGER.debug("running criteria query over: {}", clazzToGet);
@@ -313,7 +314,7 @@ public abstract class AbstractDbManager implements CrudManager {
LOGGER.debug("null object argument");
throw new NullPointerException("criteria or restrictions");
}
- List ret = new ArrayList<>();
+ List ret = new ArrayList<>();
Transaction tx = null;
Session session = factory.getCurrentSession();
try {
@@ -353,7 +354,7 @@ public abstract class AbstractDbManager implements CrudManager {
* @throws DBManagerException if object has previously been saved or an
* error occurs while trying to save it to the database
*/
- protected ArchivableEntity doSave(final ArchivableEntity object) throws DBManagerException {
+ protected T doSave(final T object) throws DBManagerException {
LOGGER.debug("saving object: {}", object);
if (object == null) {
LOGGER.debug("null object argument");
@@ -366,9 +367,9 @@ public abstract class AbstractDbManager implements CrudManager {
LOGGER.debug("saving object in db");
tx = session.beginTransaction();
final Serializable id = session.save(object);
- Object o = session.get(object.getClass(), id);
+ T o = (T) session.get(object.getClass(), id);
session.getTransaction().commit();
- return (ArchivableEntity) o;
+ return o;
} catch (Exception e) {
final String msg = "unable to save object";
LOGGER.error(msg, e);
@@ -387,7 +388,7 @@ public abstract class AbstractDbManager implements CrudManager {
* @param object object to update
* @throws DBManagerException if unable to update the record
*/
- protected void doUpdate(final ArchivableEntity object) throws DBManagerException {
+ protected void doUpdate(final T object) throws DBManagerException {
LOGGER.debug("updating object");
if (object == null) {
LOGGER.debug("null object argument");
@@ -422,7 +423,7 @@ public abstract class AbstractDbManager implements CrudManager {
* @throws DBManagerException if unable to search the database or recreate
* the Object
*/
- protected ArchivableEntity doGet(final String name) throws DBManagerException {
+ protected T doGet(final String name) throws DBManagerException {
LOGGER.debug("getting object: {}", name);
if (name == null) {
LOGGER.debug("null name argument");
@@ -432,17 +433,17 @@ public abstract class AbstractDbManager implements CrudManager {
Transaction tx = null;
Session session = factory.getCurrentSession();
try {
- LOGGER.debug("retrieving " + entity.toString() + " from db");
+ LOGGER.debug("retrieving " + clazz.toString() + " from db");
tx = session.beginTransaction();
CriteriaBuilder builder = session.getCriteriaBuilder();
- CriteriaQuery criteriaQuery = builder.createQuery(entity);
- Root root = criteriaQuery.from(entity);
+ CriteriaQuery criteriaQuery = builder.createQuery(clazz);
+ Root root = criteriaQuery.from(clazz);
Predicate recordPredicate = builder.and(
builder.equal(root.get("name"), name));
criteriaQuery.select(root).where(recordPredicate);
- Query query = session.createQuery(criteriaQuery);
- List results = query.getResultList();
- ArchivableEntity ret = null;
+ Query query = session.createQuery(criteriaQuery);
+ List results = query.getResultList();
+ T ret = null;
if (results != null && !results.isEmpty()) {
ret = results.get(0);
}
@@ -471,7 +472,7 @@ public abstract class AbstractDbManager implements CrudManager {
* @throws DBManagerException if unable to search the database or recreate
* the Object
*/
- protected ArchivableEntity doGet(final Serializable id) throws DBManagerException {
+ protected T doGet(final Serializable id) throws DBManagerException {
LOGGER.debug("getting object: {}", id);
if (id == null) {
LOGGER.debug("null id argument");
@@ -482,7 +483,7 @@ public abstract class AbstractDbManager implements CrudManager {
try {
LOGGER.debug("retrieving object from db");
tx = session.beginTransaction();
- ArchivableEntity ret = (ArchivableEntity) session.get(entity, id);
+ T ret = (T) session.get(clazz, id);
tx.commit();
return ret;
} catch (Exception e) {
@@ -504,47 +505,45 @@ public abstract class AbstractDbManager implements CrudManager {
* managed. This class argument allows the caller to limit which types of
* T
should be returned.
*
- * @param clazz class type of T
s to search for (may be null to
+ * @param entity class type of T
s to search for (may be null to
* use Class<T>)
* @param additionalRestriction - an added Criterion to use in the query, null for none
* @return list of T
names
* @throws DBManagerException if unable to search the database
*/
- protected List doGetList(final ArchivableEntity entity,
+ protected List doGetList(final T entity,
final Criterion additionalRestriction)
throws DBManagerException {
LOGGER.debug("Getting object list");
- ArchivableEntity searchClass = entity;
if (entity == null) {
LOGGER.debug("entity is null");
- searchClass = this.entity;
+ return new ArrayList<>();
}
- List objects = new ArrayList<>();
+ T searchClass = entity;
+ List objects = new ArrayList<>();
Transaction tx = null;
Session session = factory.getCurrentSession();
try {
- LOGGER.debug("Retrieving objects from db of class {}", searchClass.getName());
+ LOGGER.debug("Retrieving objects from db of class {}", searchClass);
tx = session.beginTransaction();
CriteriaBuilder builder = session.getCriteriaBuilder();
- CriteriaQuery> criteriaQuery = builder.createQuery(searchClass);
- Root> root = criteriaQuery.from(criteriaQuery.getResultType());
+ CriteriaQuery criteriaQuery = builder.createQuery(searchClass);
+ Root root = criteriaQuery.from(criteriaQuery.getResultType());
Predicate recordPredicate = builder.and(
);
criteriaQuery.select(root).where(recordPredicate).distinct(true);
- Query> query = session.createQuery(criteriaQuery);
- List> results = query.getResultList();
+ Query query = session.createQuery(criteriaQuery);
+ List results = query.getResultList();
// Criteria criteria = session.createCriteria(searchClass);
- if (additionalRestriction != null) {
- criteria.add(additionalRestriction);
- }
+// if (additionalRestriction != null) {
+// criteriaQuery.add(additionalRestriction);
+// }
// List list = criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
for (Object o : results) {
- if (o instanceof ArchivableEntity) {
- objects.add((ArchivableEntity) o);
- }
+ objects.add((T) o);
}
tx.commit();
LOGGER.debug("Got {} objects", objects.size());
@@ -580,12 +579,12 @@ public abstract class AbstractDbManager implements CrudManager {
* @throws DBManagerException if unable to create the list
*/
@SuppressWarnings("checkstyle:parameternumber")
- protected FilteredRecordsList doGetOrderedList(final ArchivableEntity clazz,
+ protected FilteredRecordsList doGetOrderedList(final Class clazz,
final String columnToOrder, final boolean ascending, final int firstResult,
final int maxResults, final String search, final Map searchableColumns,
final CriteriaModifier criteriaModifier) throws DBManagerException {
LOGGER.debug("Getting object list");
- ArchivableEntity searchClass = clazz;
+ Class searchClass = clazz;
if (clazz == null) {
LOGGER.debug("clazz is null");
searchClass = this.clazz;
@@ -598,9 +597,9 @@ public abstract class AbstractDbManager implements CrudManager {
}
//Object that will store query values
- FilteredRecordsList aqr = new FilteredRecordsList<>();
+ FilteredRecordsList aqr = new FilteredRecordsList<>();
- List objects = new ArrayList<>();
+ List objects = new ArrayList<>();
Transaction tx = null;
Session session = factory.getCurrentSession();
try {
diff --git a/HIRS_Utils/src/main/java/hirs/persist/CrudManager.java b/HIRS_Utils/src/main/java/hirs/persist/CrudManager.java
index c8f8989d..bc4435d9 100644
--- a/HIRS_Utils/src/main/java/hirs/persist/CrudManager.java
+++ b/HIRS_Utils/src/main/java/hirs/persist/CrudManager.java
@@ -1,6 +1,5 @@
package hirs.persist;
-import hirs.data.persist.AbstractEntity;
import org.hibernate.criterion.Criterion;
import java.io.Serializable;
@@ -10,7 +9,7 @@ import java.util.List;
* Interface defining database CRUD operations (Create, Read, Update, Delete).
* @param the object type, T.
*/
-public interface CrudManager extends OrderedListQuerier {
+public interface CrudManager extends OrderedListQuerier {
/**
*
@@ -27,7 +26,7 @@ public interface CrudManager extends OrderedListQuerier<
* @throws DBManagerException if object has previously been saved or an
* error occurs while trying to save it to the database
*/
- AbstractEntity save(AbstractEntity object) throws DBManagerException;
+ T save(T object) throws DBManagerException;
/**
* Updates an object stored in the database. This updates the database
@@ -36,7 +35,7 @@ public interface CrudManager extends OrderedListQuerier<
* @param object object to update
* @throws DBManagerException if an error occurs while trying to save it to the database
*/
- void update(AbstractEntity object) throws DBManagerException;
+ void update(T object) throws DBManagerException;
/**
* Retrieves the Object
from the database. This searches the
@@ -48,7 +47,7 @@ public interface CrudManager extends OrderedListQuerier<
* @throws DBManagerException if unable to search the database or recreate
* the Object
*/
- AbstractEntity get(String name) throws DBManagerException;
+ T get(String name) throws DBManagerException;
/**
@@ -72,11 +71,12 @@ public interface CrudManager extends OrderedListQuerier<
* managed. This class argument allows the caller to limit which types of
* T
should be returned.
*
+ * @param object class type of T
s to search for (may be null to
+ * use Class)
* @return list of T
names
* @throws DBManagerException if unable to search the database
*/
- List getList()
- throws DBManagerException;
+ List getList(T object) throws DBManagerException;
/**
* Returns a list of all T
s of type clazz
in the database, with an
@@ -86,11 +86,13 @@ public interface CrudManager extends OrderedListQuerier<
* managed. This class argument allows the caller to limit which types of
* T
should be returned.
*
+ * @param object class type of T
s to search for (may be null to
+ * use Class)
* @param additionalRestriction - an added Criterion to use in the query, null for none
* @return list of T
names
* @throws DBManagerException if unable to search the database
*/
- List getList(Criterion additionalRestriction)
+ List getList(T object, Criterion additionalRestriction)
throws DBManagerException;
/**
@@ -119,7 +121,7 @@ public interface CrudManager extends OrderedListQuerier<
* @return true if successfully found and deleted the object
* @throws DBManagerException if unable to delete the object from the database
*/
- boolean delete(T entity) throws DBManagerException;
+ boolean delete(Class entity) throws DBManagerException;
/**
* Deletes all instances of the associated class.
diff --git a/HIRS_Utils/src/main/java/hirs/persist/DBCertificateManager.java b/HIRS_Utils/src/main/java/hirs/persist/DBCertificateManager.java
index 2b021831..df0ea778 100644
--- a/HIRS_Utils/src/main/java/hirs/persist/DBCertificateManager.java
+++ b/HIRS_Utils/src/main/java/hirs/persist/DBCertificateManager.java
@@ -1,23 +1,37 @@
package hirs.persist;
+import hirs.FilteredRecordsList;
import hirs.data.persist.certificate.Certificate;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hibernate.SessionFactory;
+import org.hibernate.StaleObjectStateException;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.exception.LockAcquisitionException;
+import org.springframework.retry.RetryCallback;
+import org.springframework.retry.RetryContext;
+import org.springframework.retry.backoff.FixedBackOffPolicy;
+import org.springframework.retry.policy.SimpleRetryPolicy;
+import org.springframework.retry.support.RetryTemplate;
-import java.util.Collections;
+import java.io.Serializable;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
* This class is used to persist and retrieve {@link Certificate}s into and from a database.
*/
-public class DBCertificateManager extends DBManager
+public class DBCertificateManager extends AbstractDbManager
implements CertificateManager {
private static final Logger LOGGER = LogManager.getLogger(DBCertificateManager.class);
+ // structure for retrying methods in the database
+ private RetryTemplate retryTemplate;
+
/**
* Creates a new {@link DBCertificateManager} that uses the default
* database.
@@ -51,11 +65,11 @@ public class DBCertificateManager extends DBManager
@Override
@SuppressWarnings("unchecked")
public Set get(final CertificateSelector certificateSelector) {
- return new HashSet<>(
- (List) getWithCriteria(
- certificateSelector.getCertificateClass(),
- Collections.singleton(certificateSelector.getCriterion())
- )
+ return new HashSet<>(0
+// (List) getWithCriteria(
+// certificateSelector.getCertificateClass(),
+// Collections.singleton(certificateSelector.getCriterion())
+// )
);
}
@@ -68,4 +82,164 @@ public class DBCertificateManager extends DBManager
public boolean deleteCertificate(final Certificate certificate) {
return delete(certificate);
}
+
+ /**
+ * Saves the Object
in the database. This creates a new
+ * database session and saves the object. If the Object
had
+ * previously been saved then a DBManagerException
is thrown.
+ *
+ * @param object object to save
+ * @return reference to saved object
+ * @throws DBManagerException if object has previously been saved or an
+ * error occurs while trying to save it to the database
+ */
+ @Override
+ public Certificate save(final Certificate object) throws DBManagerException {
+ return retryTemplate.execute(new RetryCallback() {
+ @Override
+ public Certificate doWithRetry(final RetryContext context) throws DBManagerException {
+ return doSave(object);
+ }
+ });
+ }
+
+ /**
+ * Deletes the object from the database. This removes all of the database
+ * entries that stored information with regards to the this object.
+ *
+ * If the object is referenced by any other tables then this will throw a
+ * DBManagerException
.
+ *
+ * @param object instance of the object to delete
+ * @return true if successfully found and deleted the object
+ * @throws DBManagerException if unable to find the baseline or delete it
+ * from the database
+ */
+ public final boolean delete(final Certificate object) throws DBManagerException {
+ return retryTemplate.execute(new RetryCallback() {
+ @Override
+ public Boolean doWithRetry(final RetryContext context) throws DBManagerException {
+ return doDelete(object);
+ }
+ });
+ }
+
+ /**
+ * Updates an object stored in the database. This updates the database
+ * entries to reflect the new values that should be set.
+ *
+ * @param object object to update
+ * @throws DBManagerException if an error occurs while trying to save it to the database
+ */
+ public final void update(final Certificate object) throws DBManagerException {
+ retryTemplate.execute(new RetryCallback() {
+ @Override
+ public Void doWithRetry(final RetryContext context) throws DBManagerException {
+ doUpdate(object);
+ return null;
+ }
+ });
+ }
+
+ @Override
+ public Certificate get(String name) throws DBManagerException {
+ return null;
+ }
+
+ /**
+ * Retrieves the Object
from the database. This searches the
+ * database for an entry whose name matches name
. It then
+ * reconstructs the Object
from the database entry.
+ *
+ * @param id id of the object
+ * @return object if found, otherwise null.
+ * @throws DBManagerException if unable to search the database or recreate
+ * the Object
+ */
+ public final Certificate get(final Serializable id) throws DBManagerException {
+ return retryTemplate.execute(new RetryCallback() {
+ @Override
+ public Certificate doWithRetry(final RetryContext context) throws DBManagerException {
+ return doGet(id);
+ }
+ });
+ }
+
+ @Override
+ public List getList(Certificate object) throws DBManagerException {
+ return null;
+ }
+
+ @Override
+ public List getList(Certificate object, Criterion additionalRestriction) throws DBManagerException {
+ return null;
+ }
+
+ @Override
+ public boolean deleteById(Serializable id) throws DBManagerException {
+ return false;
+ }
+
+ @Override
+ public boolean delete(Class entity) throws DBManagerException {
+ return false;
+ }
+
+ @Override
+ public int deleteAll() {
+ return 0;
+ }
+
+ @Override
+ public boolean archive(String name) throws DBManagerException {
+ return false;
+ }
+
+ @Override
+ public FilteredRecordsList getOrderedList(
+ Class clazz,
+ String columnToOrder,
+ boolean ascending,
+ int firstResult,
+ int maxResults,
+ String search,
+ Map searchableColumns) throws DBManagerException {
+ return null;
+ }
+
+ @Override
+ public FilteredRecordsList getOrderedList(
+ Class clazz,
+ String columnToOrder,
+ boolean ascending, int firstResult,
+ int maxResults, String search,
+ Map searchableColumns, CriteriaModifier criteriaModifier) throws DBManagerException {
+ return null;
+ }
+
+ /**
+ * Set the parameters used to retry database transactions. The retry template will
+ * retry transactions that throw a LockAcquisitionException or StaleObjectStateException.
+ * @param maxTransactionRetryAttempts the maximum number of database transaction attempts
+ * @param retryWaitTimeMilliseconds the transaction retry wait time in milliseconds
+ */
+ public final void setRetryTemplate(final int maxTransactionRetryAttempts,
+ final long retryWaitTimeMilliseconds) {
+ Map, Boolean> exceptionsToRetry = new HashMap<>();
+ exceptionsToRetry.put(LockAcquisitionException.class, true);
+ exceptionsToRetry.put(StaleObjectStateException.class, true);
+
+ SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy(
+ maxTransactionRetryAttempts,
+ exceptionsToRetry,
+ true,
+ false
+ );
+
+ FixedBackOffPolicy backoffPolicy = new FixedBackOffPolicy();
+ backoffPolicy.setBackOffPeriod(retryWaitTimeMilliseconds);
+ this.retryTemplate = new RetryTemplate();
+ this.retryTemplate.setRetryPolicy(retryPolicy);
+ this.retryTemplate.setBackOffPolicy(backoffPolicy);
+ }
}
diff --git a/HIRS_Utils/src/main/java/hirs/persist/DBManager.java b/HIRS_Utils/src/main/java/hirs/persist/DBManager.java
index c8606f10..4d85cf43 100644
--- a/HIRS_Utils/src/main/java/hirs/persist/DBManager.java
+++ b/HIRS_Utils/src/main/java/hirs/persist/DBManager.java
@@ -1,7 +1,6 @@
package hirs.persist;
import hirs.FilteredRecordsList;
-import hirs.data.persist.AbstractEntity;
import hirs.data.persist.ArchivableEntity;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -66,7 +65,7 @@ public class DBManager extends AbstractDbManager {
* @param sessionFactory the session factory to use to connect to the database
* unfortunately class type of T cannot be determined using only T
*/
- public DBManager(final AbstractEntity clazz, final SessionFactory sessionFactory) {
+ public DBManager(final Class clazz, final SessionFactory sessionFactory) {
super(clazz, sessionFactory);
setRetryTemplate(DEFAULT_MAX_RETRY_ATTEMPTS, DEFAULT_RETRY_WAIT_TIME_MS);
}
@@ -115,12 +114,12 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if an error is encountered while performing the query or creating
* the result objects
*/
- public final List getWithCriteria(final Collection criteriaCollection)
+ public final List getWithCriteria(final Collection criteriaCollection)
throws DBManagerException {
return retryTemplate.execute(
- new RetryCallback, DBManagerException>() {
+ new RetryCallback, DBManagerException>() {
@Override
- public List doWithRetry(final RetryContext context)
+ public List doWithRetry(final RetryContext context)
throws DBManagerException {
return doGetWithCriteria(criteriaCollection);
}
@@ -138,13 +137,13 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if an error is encountered while performing the query or creating
* the result objects
*/
- protected final List getWithCriteria(
- final Class clazzToGet,
+ protected final List getWithCriteria(
+ final Class clazzToGet,
final Collection criteriaCollection) throws DBManagerException {
return retryTemplate.execute(
- new RetryCallback, DBManagerException>() {
+ new RetryCallback, DBManagerException>() {
@Override
- public List doWithRetry(final RetryContext context)
+ public List doWithRetry(final RetryContext context)
throws DBManagerException {
return doGetWithCriteria(clazzToGet, criteriaCollection);
}
@@ -178,10 +177,10 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if object has previously been saved or an
* error occurs while trying to save it to the database
*/
- public final AbstractEntity save(final AbstractEntity object) throws DBManagerException {
- return retryTemplate.execute(new RetryCallback() {
+ public final T save(final T object) throws DBManagerException {
+ return retryTemplate.execute(new RetryCallback() {
@Override
- public AbstractEntity doWithRetry(final RetryContext context) throws DBManagerException {
+ public T doWithRetry(final RetryContext context) throws DBManagerException {
return doSave(object);
}
});
@@ -194,7 +193,7 @@ public class DBManager extends AbstractDbManager {
* @param object object to update
* @throws DBManagerException if an error occurs while trying to save it to the database
*/
- public final void update(final AbstractEntity object) throws DBManagerException {
+ public final void update(final T object) throws DBManagerException {
retryTemplate.execute(new RetryCallback() {
@Override
public Void doWithRetry(final RetryContext context) throws DBManagerException {
@@ -214,10 +213,10 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if unable to search the database or recreate
* the Object
*/
- public final ArchivableEntity get(final String name) throws DBManagerException {
- return retryTemplate.execute(new RetryCallback() {
+ public final T get(final String name) throws DBManagerException {
+ return retryTemplate.execute(new RetryCallback() {
@Override
- public ArchivableEntity doWithRetry(final RetryContext context) throws DBManagerException {
+ public T doWithRetry(final RetryContext context) throws DBManagerException {
return doGet(name);
}
});
@@ -233,10 +232,10 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if unable to search the database or recreate
* the Object
*/
- public final AbstractEntity get(final Serializable id) throws DBManagerException {
- return retryTemplate.execute(new RetryCallback() {
+ public final T get(final Serializable id) throws DBManagerException {
+ return retryTemplate.execute(new RetryCallback() {
@Override
- public AbstractEntity doWithRetry(final RetryContext context) throws DBManagerException {
+ public T doWithRetry(final RetryContext context) throws DBManagerException {
return doGet(id);
}
});
@@ -257,12 +256,13 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if unable to search the database or recreate
* the Object
*/
- public final AbstractEntity getAndLoadLazyFields(final String name, final boolean recurse)
+ public final T getAndLoadLazyFields(final String name, final boolean recurse)
throws DBManagerException {
- return retryTemplate.execute(new RetryCallback() {
+ return retryTemplate.execute(new RetryCallback() {
@Override
- public AbstractEntity doWithRetry(final RetryContext context) throws DBManagerException {
- return doGetAndLoadLazyFields(name, recurse);
+ public T doWithRetry(final RetryContext context) throws DBManagerException {
+ return null;
+// return doGetAndLoadLazyFields(name, recurse);
}
});
}
@@ -282,9 +282,10 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if unable to search the database or recreate
* the Object
*/
- public final AbstractEntity getAndLoadLazyFields(final Serializable id, final boolean recurse)
+ public final T getAndLoadLazyFields(final Serializable id, final boolean recurse)
throws DBManagerException {
- return doGetAndLoadLazyFields(id, recurse);
+ return null;
+// return doGetAndLoadLazyFields(id, recurse);
}
/**
@@ -300,7 +301,7 @@ public class DBManager extends AbstractDbManager {
* @return list of T
names
* @throws DBManagerException if unable to search the database
*/
- public List getList(final AbstractEntity entity)
+ public List getList(final T entity)
throws DBManagerException {
return getList(entity, null);
}
@@ -320,11 +321,11 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if unable to search the database
*/
@Override
- public List getList(final AbstractEntity entity, final Criterion additionalRestriction)
+ public List getList(final T entity, final Criterion additionalRestriction)
throws DBManagerException {
- return retryTemplate.execute(new RetryCallback, DBManagerException>() {
+ return retryTemplate.execute(new RetryCallback, DBManagerException>() {
@Override
- public List doWithRetry(final RetryContext context) throws DBManagerException {
+ public List doWithRetry(final RetryContext context) throws DBManagerException {
return doGetList(entity, additionalRestriction);
}
});
@@ -350,7 +351,7 @@ public class DBManager extends AbstractDbManager {
*/
@Override
public final FilteredRecordsList getOrderedList(
- final AbstractEntity clazz, final String columnToOrder,
+ final Class clazz, final String columnToOrder,
final boolean ascending, final int firstResult,
final int maxResults, final String search,
final Map searchableColumns)
@@ -388,17 +389,17 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if unable to create the list
*/
@SuppressWarnings("checkstyle:parameternumber")
- public final FilteredRecordsList getOrderedList(
- final AbstractEntity clazz, final String columnToOrder,
+ public final FilteredRecordsList getOrderedList(
+ final Class clazz, final String columnToOrder,
final boolean ascending, final int firstResult,
final int maxResults, final String search,
final Map searchableColumns, final CriteriaModifier criteriaModifier)
throws DBManagerException {
return retryTemplate.execute(
- new RetryCallback, DBManagerException>() {
+ new RetryCallback, DBManagerException>() {
@Override
- public FilteredRecordsList doWithRetry(final RetryContext context)
+ public FilteredRecordsList doWithRetry(final RetryContext context)
throws DBManagerException {
return doGetOrderedList(clazz, columnToOrder, ascending,
firstResult, maxResults,
@@ -419,7 +420,6 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if unable to find the baseline or delete it
* from the database
*/
-
public final boolean delete(final String name) throws DBManagerException {
return retryTemplate.execute(new RetryCallback() {
@Override
@@ -464,7 +464,7 @@ public class DBManager extends AbstractDbManager {
* @throws DBManagerException if unable to delete the object from the database
*/
@Override
- public final boolean delete(final AbstractEntity object) throws DBManagerException {
+ public final boolean delete(final Class object) throws DBManagerException {
return retryTemplate.execute(new RetryCallback() {
@Override
public Boolean doWithRetry(final RetryContext context) throws DBManagerException {
@@ -489,7 +489,7 @@ public class DBManager extends AbstractDbManager {
return false;
}
- ArchivableEntity target = get(name);
+ T target = get(name);
if (target == null) {
return false;
}
diff --git a/HIRS_Utils/src/main/java/hirs/persist/DBReferenceDigestManager.java b/HIRS_Utils/src/main/java/hirs/persist/DBReferenceDigestManager.java
deleted file mode 100644
index 32b55026..00000000
--- a/HIRS_Utils/src/main/java/hirs/persist/DBReferenceDigestManager.java
+++ /dev/null
@@ -1,330 +0,0 @@
-package hirs.persist;
-
-import hirs.data.persist.ReferenceDigestRecord;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.Transaction;
-import org.hibernate.query.Query;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-/**
- * This class is used to persist and retrieve {@link hirs.data.persist.ReferenceDigestRecord}s into
- * and from the database.
- */
-public class DBReferenceDigestManager extends DBManager
- implements ReferenceDigestManager {
-
- private static final Logger LOGGER = LogManager.getLogger(DBReferenceDigestManager.class);
-
- /**
- * Default Constructor.
- *
- * @param sessionFactory session factory used to access database connections
- */
- public DBReferenceDigestManager(final SessionFactory sessionFactory) {
- super(ReferenceDigestRecord.class, sessionFactory);
- }
-
- @Override
- public ReferenceDigestRecord saveRecord(final ReferenceDigestRecord referenceDigestRecord) {
- LOGGER.debug("saving digest record: {}", referenceDigestRecord);
- try {
- return save(referenceDigestRecord);
- } catch (DBManagerException dbMEx) {
- throw new RuntimeException(dbMEx);
- }
- }
-
- @Override
- public ReferenceDigestRecord getRecord(final ReferenceDigestRecord referenceDigestRecord) {
- LOGGER.debug("Getting record for {}", referenceDigestRecord);
- if (referenceDigestRecord == null) {
- LOGGER.error("null referenceDigestRecord argument");
- return null;
- }
-
- if (referenceDigestRecord.getManufacturer() == null
- || referenceDigestRecord.getModel() == null) {
- LOGGER.error("No reference to get record from db {}", referenceDigestRecord);
- return null;
- }
-
- ReferenceDigestRecord dbRecord = null;
- Transaction transaction = null;
- Session session = getFactory().getCurrentSession();
- try {
- LOGGER.debug("retrieving referenceDigestRecord from db");
- transaction = session.beginTransaction();
- CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
- CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(ReferenceDigestRecord.class);
- Root root = criteriaQuery.from(ReferenceDigestRecord.class);
- Predicate recordPredicate = criteriaBuilder
- .and(criteriaBuilder.equal(root.get("manufacturer"), referenceDigestRecord.getManufacturer()),
- criteriaBuilder.equal(root.get("model"), referenceDigestRecord.getModel()));
- criteriaQuery.select(root).where(recordPredicate);
- Query query = session.createQuery(criteriaQuery);
- List results = query.getResultList();
- if (results != null && !results.isEmpty()) {
- dbRecord = results.get(0);
- }
-// dbRecord = (ReferenceDigestRecord) session.createCriteria(ReferenceDigestRecord.class)
-// .add(Restrictions.eq("manufacturer",
-// referenceDigestRecord.getManufacturer())).add(Restrictions.eq("model",
-// referenceDigestRecord.getModel())).uniqueResult();
- transaction.commit();
- } catch (Exception ex) {
- final String msg = "unable to retrieve object";
- LOGGER.error(msg, ex);
- if (transaction != null) {
- LOGGER.debug("rolling back transaction");
- transaction.rollback();
- }
- throw new DBManagerException(msg, ex);
- }
- return dbRecord;
- }
-
- @Override
- public ReferenceDigestRecord getRecord(final String manufacturer, final String model) {
- LOGGER.debug("Getting record for {} ~ {}", manufacturer, model);
- if (manufacturer == null || model == null) {
- LOGGER.error("No reference to get record from db {} ~ {}", manufacturer, model);
- return null;
- }
-
- ReferenceDigestRecord dbRecord = null;
- Transaction tx = null;
- Session session = getFactory().getCurrentSession();
- try {
- LOGGER.debug("retrieving referenceDigestRecord from db");
- tx = session.beginTransaction();
- CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
- CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(ReferenceDigestRecord.class);
- Root root = criteriaQuery.from(ReferenceDigestRecord.class);
- Predicate recordPredicate = criteriaBuilder
- .and(criteriaBuilder.equal(root.get("manufacturer"), manufacturer),
- criteriaBuilder.equal(root.get("model"), model));
- criteriaQuery.select(root).where(recordPredicate);
- Query query = session.createQuery(criteriaQuery);
- List results = query.getResultList();
- if (results != null && !results.isEmpty()) {
- dbRecord = results.get(0);
- }
-// dbRecord = (ReferenceDigestRecord) session.createCriteria(ReferenceDigestRecord.class)
-// .add(Restrictions.eq("manufacturer",
-// manufacturer)).add(Restrictions.eq("model",
-// model)).uniqueResult();
- tx.commit();
- } catch (Exception ex) {
- final String msg = "unable to retrieve object";
- LOGGER.error(msg, ex);
- if (tx != null) {
- LOGGER.debug("rolling back transaction");
- tx.rollback();
- }
- throw new DBManagerException(msg, ex);
- }
- return dbRecord;
- }
-
- @Override
- public List getRecordsByDeviceName(final String deviceName) {
- LOGGER.debug("Getting record for {}", deviceName);
- if (deviceName == null) {
- LOGGER.error("No deviceName to get record from db");
- return null;
- }
-
- List dbRecords = new ArrayList<>();
- try {
- List dbTempList = super.getList(ReferenceDigestRecord.class);
- for (ReferenceDigestRecord rdr : dbTempList) {
- if (rdr.getDeviceName().equals(deviceName)) {
- dbRecords.add(rdr);
- }
- }
- } catch (DBManagerException dbMEx) {
- throw new RuntimeException(dbMEx);
- }
- return dbRecords;
- }
-
- @Override
- public ReferenceDigestRecord getRecordById(final ReferenceDigestRecord referenceDigestRecord) {
- LOGGER.debug("Getting record for {}", referenceDigestRecord);
- if (referenceDigestRecord == null) {
- LOGGER.error("null referenceDigestRecord argument");
- return null;
- }
-
- if (referenceDigestRecord.getId() == null) {
- LOGGER.error("No id to get record from db {}", referenceDigestRecord);
- return null;
- }
-
- ReferenceDigestRecord dbRecord = null;
- Transaction tx = null;
- Session session = getFactory().getCurrentSession();
- try {
- LOGGER.debug("retrieving referenceDigestRecord from db");
- tx = session.beginTransaction();
- CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
- CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(ReferenceDigestRecord.class);
- Root root = criteriaQuery.from(ReferenceDigestRecord.class);
- Predicate recordPredicate = criteriaBuilder
- .and(criteriaBuilder.equal(root.get("id"), referenceDigestRecord.getId()));
- criteriaQuery.select(root).where(recordPredicate);
- Query query = session.createQuery(criteriaQuery);
- List results = query.getResultList();
- if (results != null && !results.isEmpty()) {
- dbRecord = results.get(0);
- }
-// dbRecord = (ReferenceDigestRecord) session.createCriteria(ReferenceDigestRecord.class)
-// .add(Restrictions.eq("id",
-// referenceDigestRecord.getId())).uniqueResult();
- tx.commit();
- } catch (Exception ex) {
- final String msg = "unable to retrieve object";
- LOGGER.error(msg, ex);
- if (tx != null) {
- LOGGER.debug("rolling back transaction");
- tx.rollback();
- }
- throw new DBManagerException(msg, ex);
- }
- return dbRecord;
- }
-
- @Override
- public ReferenceDigestRecord getRecordBySupportId(final UUID supportId) {
- LOGGER.debug("Getting record for {}", supportId);
- if (supportId == null) {
- LOGGER.error("null supportId argument");
- return null;
- }
-
- ReferenceDigestRecord dbRecord = null;
- Transaction tx = null;
- Session session = getFactory().getCurrentSession();
- try {
- LOGGER.debug("retrieving referenceDigestRecord from db");
- tx = session.beginTransaction();
- CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
- CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(ReferenceDigestRecord.class);
- Root root = criteriaQuery.from(ReferenceDigestRecord.class);
- Predicate recordPredicate = criteriaBuilder
- .and(criteriaBuilder.equal(root.get("supportRim"), supportId));
- criteriaQuery.select(root).where(recordPredicate);
- Query query = session.createQuery(criteriaQuery);
- List results = query.getResultList();
- if (results != null && !results.isEmpty()) {
- dbRecord = results.get(0);
- }
-// dbRecord = (ReferenceDigestRecord) session.createCriteria(ReferenceDigestRecord.class)
-// .add(Restrictions.eq("supportRim", supportId)).uniqueResult();
- tx.commit();
- } catch (Exception ex) {
- final String msg = "unable to retrieve object";
- LOGGER.error(msg, ex);
- if (tx != null) {
- LOGGER.debug("rolling back transaction");
- tx.rollback();
- }
- throw new DBManagerException(msg, ex);
- }
- return dbRecord;
- }
-
- @Override
- public List getRecordsByManufacturer(
- final ReferenceDigestRecord referenceDigestRecord) {
- LOGGER.debug("Getting records by manufacturer for {}", referenceDigestRecord);
- if (referenceDigestRecord == null) {
- LOGGER.error("null referenceDigestRecord argument");
- throw new NullPointerException("null referenceDigestRecord");
- }
- if (referenceDigestRecord.getManufacturer() == null) {
- LOGGER.error("null referenceDigestRecord manufacturer argument");
- throw new NullPointerException("null referenceDigestRecord manufacturer");
- }
-
- List dbRecords = new ArrayList<>();
- String manufacturer = referenceDigestRecord.getManufacturer();
- try {
- List dbTempList = super.getList(ReferenceDigestRecord.class);
- for (ReferenceDigestRecord rdr : dbTempList) {
- if (rdr.getManufacturer().equals(manufacturer)) {
- dbRecords.add(rdr);
- }
- }
- } catch (DBManagerException dbMEx) {
- throw new RuntimeException(dbMEx);
- }
- return dbRecords;
- }
-
- @Override
- public List getRecordsByModel(
- final ReferenceDigestRecord referenceDigestRecord) {
- LOGGER.debug("Getting records by model for {}", referenceDigestRecord);
- if (referenceDigestRecord == null) {
- LOGGER.error("null referenceDigestRecord argument");
- throw new NullPointerException("null referenceDigestRecord");
- }
- if (referenceDigestRecord.getModel() == null) {
- LOGGER.error("null referenceDigestRecord model argument");
- throw new NullPointerException("null referenceDigestRecord model");
- }
-
- List dbRecords = new ArrayList<>();
- String model = referenceDigestRecord.getModel();
- try {
- List dbTempList = super.getList(ReferenceDigestRecord.class);
- for (ReferenceDigestRecord rdr : dbTempList) {
- if (rdr.getModel().equals(model)) {
- dbRecords.add(rdr);
- }
- }
- } catch (DBManagerException dbMEx) {
- throw new RuntimeException(dbMEx);
- }
- return dbRecords;
- }
-
- @Override
- public void updateRecord(final ReferenceDigestRecord referenceDigestRecord) {
- try {
- super.update(referenceDigestRecord);
- } catch (DBManagerException dbMEx) {
- throw new RuntimeException(dbMEx);
- }
- }
-
- /**
- * Remove a ReferenceDigestRecord from the database.
- *
- * @param referenceDigestRecord the referenceDigestRecord to delete
- * @return true if deletion was successful, false otherwise
- */
- @Override
- public boolean deleteRecord(final ReferenceDigestRecord referenceDigestRecord) {
- boolean result = false;
- LOGGER.info(String.format("Deleting reference to %s/%s",
- referenceDigestRecord.getManufacturer(), referenceDigestRecord.getModel()));
- try {
- result = super.delete(referenceDigestRecord);
- } catch (DBManagerException dbMEx) {
- throw new RuntimeException(dbMEx);
- }
- return result;
- }
-}
diff --git a/HIRS_Utils/src/main/java/hirs/persist/OrderedListQuerier.java b/HIRS_Utils/src/main/java/hirs/persist/OrderedListQuerier.java
index d573e42c..cf028cf1 100644
--- a/HIRS_Utils/src/main/java/hirs/persist/OrderedListQuerier.java
+++ b/HIRS_Utils/src/main/java/hirs/persist/OrderedListQuerier.java
@@ -30,7 +30,7 @@ public interface OrderedListQuerier {
* @throws DBManagerException if unable to create the list
*/
FilteredRecordsList getOrderedList(
- Class extends T> clazz, String columnToOrder,
+ Class clazz, String columnToOrder,
boolean ascending, int firstResult,
int maxResults, String search,
Map searchableColumns)
@@ -59,7 +59,7 @@ public interface OrderedListQuerier {
*/
@SuppressWarnings("checkstyle:parameternumber")
FilteredRecordsList getOrderedList(
- Class extends T> clazz, String columnToOrder,
+ Class clazz, String columnToOrder,
boolean ascending, int firstResult,
int maxResults, String search,
Map searchableColumns, CriteriaModifier criteriaModifier)
diff --git a/HIRS_Utils/src/main/java/hirs/persist/PersistenceConfiguration.java b/HIRS_Utils/src/main/java/hirs/persist/PersistenceConfiguration.java
index 59adddf1..783dd4ba 100644
--- a/HIRS_Utils/src/main/java/hirs/persist/PersistenceConfiguration.java
+++ b/HIRS_Utils/src/main/java/hirs/persist/PersistenceConfiguration.java
@@ -113,7 +113,7 @@ public class PersistenceConfiguration {
@Bean
public CertificateManager certificateManager() {
DBCertificateManager manager = new DBCertificateManager(sessionFactory.getObject());
- setDbManagerRetrySettings(manager);
+ manager.setRetryTemplate(maxTransactionRetryAttempts, retryWaitTimeMilliseconds);
return manager;
}
@@ -130,19 +130,6 @@ public class PersistenceConfiguration {
return manager;
}
- /**
- * Creates a {@link ReferenceDigestManager} ready to use.
- *
- * @return {@link ReferenceDigestManager}
- */
- @Bean
- public ReferenceDigestManager referenceDigestManager() {
- DBReferenceDigestManager manager
- = new DBReferenceDigestManager(sessionFactory.getObject());
- setDbManagerRetrySettings(manager);
- return manager;
- }
-
/**
* Creates a {@link ReferenceEventManager} ready to use.
*