Some additional changes and attempts to deal with generics.

This commit is contained in:
Cyrus 2022-04-26 15:56:35 -04:00
parent 6fa7874a5b
commit cbf1b0aaa8
4 changed files with 108 additions and 48 deletions

View File

@ -4,7 +4,6 @@ import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import hirs.FilteredRecordsList;
import hirs.data.persist.ReferenceDigestValue;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@ -762,8 +761,8 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
LOGGER.debug("Retrieving objects from db of class {}", searchClass.getName());
tx = session.beginTransaction();
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<T> criteriaQuery = builder.createQuery(searchClass);
Root<T> root = criteriaQuery.from(searchClass);
CriteriaQuery<?> criteriaQuery = builder.createQuery(searchClass);
Root<?> root = criteriaQuery.from(criteriaQuery.getResultType());
Predicate recordPredicate = builder.and(
);

View File

@ -3,16 +3,6 @@ package hirs.persist;
import hirs.FilteredRecordsList;
import hirs.data.persist.Device;
import hirs.data.persist.DeviceGroup;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hibernate.Criteria;
@ -20,7 +10,20 @@ import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.hibernate.query.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* This class defines a <code>DeviceManager</code> that stores the devices
@ -251,15 +254,23 @@ public class DBDeviceManager extends DBManager<Device> implements
LOGGER.debug("retrieving defaults devices from db");
tx = session.beginTransaction();
List list = session.createCriteria(Device.class).createAlias("deviceGroup", "group")
.add(Restrictions.eq("group.name", DeviceGroup.DEFAULT_GROUP))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.list();
for (Object o : list) {
if (o instanceof Device) {
devices.add((Device) o);
}
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<Device> criteriaQuery = criteriaBuilder.createQuery(Device.class);
Root<Device> root = criteriaQuery.from(Device.class);
root.join("group.name", JoinType.LEFT).alias("group");
Predicate recordPredicate = criteriaBuilder
.and(criteriaBuilder.equal(root.get("group.name"), DeviceGroup.DEFAULT_GROUP));
criteriaQuery.select(root).where(recordPredicate).distinct(true);
Query<Device> query = session.createQuery(criteriaQuery);
List<Device> results = query.getResultList();
if (results != null) {
devices.addAll(results);
}
// List list = session.createCriteria(Device.class).createAlias("deviceGroup", "group")
// .add(Restrictions.eq("group.name", DeviceGroup.DEFAULT_GROUP))
// .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
// .list();
tx.commit();
} catch (HibernateException e) {
final String msg = "unable to retrieve default devices";

View File

@ -8,7 +8,12 @@ import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
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.List;
@ -77,6 +82,16 @@ public class DBDeviceStateManager extends DBManager<DeviceState> implements Devi
try {
LOGGER.debug("retrieving state from db");
tx = session.beginTransaction();
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<?> criteriaQuery = builder.createQuery(DeviceState.class);
Root<?> root = criteriaQuery.from();
Predicate recordPredicate = builder.and(
);
criteriaQuery.select(root).where(recordPredicate).distinct(true);
Query<?> query = session.createQuery(criteriaQuery);
List<?> results = query.getResultList();
ret = (DeviceState) session.createCriteria(clazz)
.add(Restrictions.eq("device", device)).uniqueResult();
tx.commit();

View File

@ -1,15 +1,8 @@
package hirs.persist;
import hirs.FilteredRecordsList;
import static org.apache.logging.log4j.LogManager.getLogger;
import hirs.data.persist.ReportSummary;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Session;
@ -21,6 +14,19 @@ import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.Subqueries;
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 javax.persistence.criteria.Subquery;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import static org.apache.logging.log4j.LogManager.getLogger;
/**
* This class defines a <code>DBReportSummaryManager</code> that stores the
@ -139,15 +145,16 @@ public class DBReportSummaryManager extends DBManager<ReportSummary>
try {
LOGGER.debug("retrieving objects from db");
tx = session.beginTransaction();
List list = session.createCriteria(ReportSummary.class)
.add(Restrictions.eq("clientHostname", hostname))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.list();
for (Object o : list) {
if (o instanceof ReportSummary) {
reportSummaryList.add((ReportSummary) o);
}
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<ReportSummary> criteriaQuery = criteriaBuilder.createQuery(ReportSummary.class);
Root<ReportSummary> root = criteriaQuery.from(ReportSummary.class);
Predicate recordPredicate = criteriaBuilder
.and(criteriaBuilder.equal(root.get("clientHostname"), hostname));
criteriaQuery.select(root).where(recordPredicate).distinct(true);
Query<ReportSummary> query = session.createQuery(criteriaQuery);
List<ReportSummary> results = query.getResultList();
if (results != null) {
reportSummaryList.addAll(results);
}
tx.commit();
@ -264,10 +271,14 @@ public class DBReportSummaryManager extends DBManager<ReportSummary>
try {
LOGGER.debug("retrieving objects from db");
tx = session.beginTransaction();
object = (ReportSummary) session
.createCriteria(ReportSummary.class)
.add(Restrictions.eq("report.id", id))
.uniqueResult();
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<ReportSummary> criteriaQuery = criteriaBuilder.createQuery(ReportSummary.class);
Root<ReportSummary> root = criteriaQuery.from(ReportSummary.class);
Predicate recordPredicate = criteriaBuilder
.and(criteriaBuilder.equal(root.get("report.id"), id));
criteriaQuery.select(root).where(recordPredicate);
Query<ReportSummary> query = session.createQuery(criteriaQuery);
object = query.uniqueResult();
tx.commit();
} catch (Exception e) {
final String msg = "unable to retrieve query list";
@ -347,6 +358,19 @@ public class DBReportSummaryManager extends DBManager<ReportSummary>
reportSummaryList.add((ReportSummary) o);
}
}
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<ReportSummary> criteriaQuery = criteriaBuilder.createQuery(ReportSummary.class);
Root<ReportSummary> root = criteriaQuery.from(ReportSummary.class);
Predicate recordPredicate = criteriaBuilder
.exists();
criteriaQuery.select(root).where(recordPredicate);
Query<ReportSummary> query = session.createQuery(criteriaQuery);
List<ReportSummary> results = query.getResultList();
if (results != null) {
reportSummaryList.addAll(results);
}
tx.commit();
} catch (Exception e) {
final String msg = "unable to retrieve query list";
@ -422,12 +446,23 @@ public class DBReportSummaryManager extends DBManager<ReportSummary>
LOGGER.debug("retrieving objects from db");
tx = session.beginTransaction();
//Returns a ReportSummary based on the timestamp and hostname
object = (ReportSummary) session.createCriteria(ReportSummary.class)
.addOrder(order)
.add(Restrictions.eq("clientHostname", hostname))
.setFirstResult(firstResult)
.setMaxResults(uniqueResult)
.uniqueResult();
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<ReportSummary> criteriaQuery = criteriaBuilder.createQuery(ReportSummary.class);
Root<ReportSummary> root = criteriaQuery.from(ReportSummary.class);
Predicate recordPredicate = criteriaBuilder
.and(criteriaBuilder.equal(root.get("clientHostname"), hostname));
criteriaQuery.select(root).where(recordPredicate);
Query<ReportSummary> query = session.createQuery(criteriaQuery);
query.setFirstResult(firstResult);
query.setMaxResults(uniqueResult);
object = query.getSingleResult();
// object = (ReportSummary) session.createCriteria(ReportSummary.class)
// .addOrder(order)
// .add(Restrictions.eq("clientHostname", hostname))
// .setFirstResult(firstResult)
// .setMaxResults(uniqueResult)
// .uniqueResult();
tx.commit();
} catch (Exception e) {
final String msg = "unable to retrieve query list";