diff --git a/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java b/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java index 830c9234..9ddcf843 100644 --- a/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java +++ b/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java @@ -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 implements CrudManager { LOGGER.debug("Retrieving objects from db of class {}", searchClass.getName()); tx = session.beginTransaction(); CriteriaBuilder builder = session.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = builder.createQuery(searchClass); - Root root = criteriaQuery.from(searchClass); + CriteriaQuery criteriaQuery = builder.createQuery(searchClass); + Root root = criteriaQuery.from(criteriaQuery.getResultType()); Predicate recordPredicate = builder.and( ); diff --git a/HIRS_Utils/src/main/java/hirs/persist/DBDeviceManager.java b/HIRS_Utils/src/main/java/hirs/persist/DBDeviceManager.java index fbc5de9b..4aae1709 100644 --- a/HIRS_Utils/src/main/java/hirs/persist/DBDeviceManager.java +++ b/HIRS_Utils/src/main/java/hirs/persist/DBDeviceManager.java @@ -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 DeviceManager that stores the devices @@ -251,15 +254,23 @@ public class DBDeviceManager extends DBManager 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 criteriaQuery = criteriaBuilder.createQuery(Device.class); + Root 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 query = session.createQuery(criteriaQuery); + List 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"; diff --git a/HIRS_Utils/src/main/java/hirs/persist/DBDeviceStateManager.java b/HIRS_Utils/src/main/java/hirs/persist/DBDeviceStateManager.java index ddb03ce3..1266bba6 100644 --- a/HIRS_Utils/src/main/java/hirs/persist/DBDeviceStateManager.java +++ b/HIRS_Utils/src/main/java/hirs/persist/DBDeviceStateManager.java @@ -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 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(); diff --git a/HIRS_Utils/src/main/java/hirs/persist/DBReportSummaryManager.java b/HIRS_Utils/src/main/java/hirs/persist/DBReportSummaryManager.java index 1a03b919..d01391ba 100755 --- a/HIRS_Utils/src/main/java/hirs/persist/DBReportSummaryManager.java +++ b/HIRS_Utils/src/main/java/hirs/persist/DBReportSummaryManager.java @@ -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 DBReportSummaryManager that stores the @@ -139,15 +145,16 @@ public class DBReportSummaryManager extends DBManager 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 criteriaQuery = criteriaBuilder.createQuery(ReportSummary.class); + Root root = criteriaQuery.from(ReportSummary.class); + Predicate recordPredicate = criteriaBuilder + .and(criteriaBuilder.equal(root.get("clientHostname"), hostname)); + criteriaQuery.select(root).where(recordPredicate).distinct(true); + Query query = session.createQuery(criteriaQuery); + List results = query.getResultList(); + if (results != null) { + reportSummaryList.addAll(results); } tx.commit(); @@ -264,10 +271,14 @@ public class DBReportSummaryManager extends DBManager 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 criteriaQuery = criteriaBuilder.createQuery(ReportSummary.class); + Root root = criteriaQuery.from(ReportSummary.class); + Predicate recordPredicate = criteriaBuilder + .and(criteriaBuilder.equal(root.get("report.id"), id)); + criteriaQuery.select(root).where(recordPredicate); + Query 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 reportSummaryList.add((ReportSummary) o); } } + + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(ReportSummary.class); + Root root = criteriaQuery.from(ReportSummary.class); + Predicate recordPredicate = criteriaBuilder + .exists(); + + criteriaQuery.select(root).where(recordPredicate); + Query query = session.createQuery(criteriaQuery); + List 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 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 criteriaQuery = criteriaBuilder.createQuery(ReportSummary.class); + Root root = criteriaQuery.from(ReportSummary.class); + Predicate recordPredicate = criteriaBuilder + .and(criteriaBuilder.equal(root.get("clientHostname"), hostname)); + criteriaQuery.select(root).where(recordPredicate); + Query 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";