From e3601cae7bd10bd488269ab315ce0926abc9803f Mon Sep 17 00:00:00 2001 From: Hiroki Terashima Date: Mon, 29 Sep 2025 16:23:44 -0700 Subject: [PATCH 1/4] Move getCriteriaBuilder() from child classes to parent (AbstractHibernateDao). Inject SessionFactory to AbstractHibernateDao --- .../achievement/HibernateAchievementDao.java | 4 +- .../wise5/impl/HibernateAnnotationDao.java | 10 +- .../impl/HibernateStudentAttendanceDao.java | 21 ++-- .../impl/HibernateAclSidDao.java | 5 +- .../impl/HibernateAclTargetObjectDao.java | 20 ++-- .../HibernateAclTargetObjectIdentityDao.java | 10 +- .../impl/HibernateGrantedAuthorityDao.java | 19 ++-- .../impl/HibernateUserDetailsDao.java | 6 -- .../portal/dao/impl/AbstractHibernateDao.java | 27 +++-- .../newsitem/impl/HibernateNewsItemDao.java | 8 +- .../impl/HibernateNotificationDao.java | 6 -- .../peergroup/impl/HibernatePeerGroupDao.java | 6 -- .../impl/HibernatePeerGroupingDao.java | 6 -- .../impl/HibernatePortalStatisticsDao.java | 6 -- .../dao/project/impl/HibernateProjectDao.java | 33 +++--- .../dao/project/impl/HibernateTagDao.java | 6 -- .../portal/dao/run/impl/HibernateRunDao.java | 7 -- .../impl/HibernateVLEStatisticsDao.java | 10 +- .../status/impl/HibernateRunStatusDao.java | 7 -- .../impl/HibernateStudentStatusDao.java | 8 +- .../dao/user/impl/HibernateUserDao.java | 100 ++++++++---------- .../usertags/impl/HibernateUserTagsDao.java | 6 -- .../dao/work/impl/HibernateEventDao.java | 40 +++---- .../work/impl/HibernateNotebookItemDao.java | 32 ++---- .../work/impl/HibernateStudentAssetDao.java | 10 +- .../work/impl/HibernateStudentWorkDao.java | 18 +--- .../workgroup/impl/HibernateWorkgroupDao.java | 6 -- 27 files changed, 144 insertions(+), 293 deletions(-) diff --git a/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java b/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java index 2b32f9019a..a791337bb7 100644 --- a/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java +++ b/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java @@ -34,7 +34,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.domain.run.Run; @@ -56,8 +55,7 @@ public class HibernateAchievementDao extends AbstractHibernateDao @SuppressWarnings("unchecked") public List getAchievementsByParams(Integer id, Run run, Workgroup workgroup, String achievementId, String type) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Achievement.class); Root achievementRoot = cq.from(Achievement.class); List predicates = new ArrayList<>(); diff --git a/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java b/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java index f4f37aca2c..17b4595794 100644 --- a/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java +++ b/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java @@ -12,7 +12,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.annotation.wise5.AnnotationDao; import org.wise.portal.dao.impl.AbstractHibernateDao; @@ -47,8 +46,7 @@ protected Class getDataObjectClass() { public List getAnnotationsByParams(Integer id, Run run, Group period, Workgroup fromWorkgroup, Workgroup toWorkgroup, String nodeId, String componentId, StudentWork studentWork, String localNotebookItemId, NotebookItem notebookItem, String type) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Annotation.class); Root annotationRoot = cq.from(Annotation.class); List predicates = new ArrayList<>(); @@ -95,8 +93,7 @@ public List getAnnotations(Run run, String nodeId, String componentI } public List getAnnotations(Run run, Group period, String nodeId, String componentId) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Annotation.class); Root annotationRoot = cq.from(Annotation.class); Root runImplRoot = cq.from(RunImpl.class); @@ -117,8 +114,7 @@ public List getAnnotations(Run run, Group period, String nodeId, Str public List getAnnotationsToWorkgroups(Set workgroups, String nodeId, String componentId) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Annotation.class); Root annotationRoot = cq.from(Annotation.class); List predicates = new ArrayList(); diff --git a/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java b/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java index a048afce6d..e532f46510 100644 --- a/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java +++ b/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java @@ -36,7 +36,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import org.wise.portal.dao.attendance.StudentAttendanceDao; @@ -50,12 +49,11 @@ public class HibernateStudentAttendanceDao extends AbstractHibernateDao getStudentAttendanceByRunId(Long runId) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(StudentAttendanceImpl.class); Root studentAttendanceRoot = cq.from(StudentAttendanceImpl.class); cq.select(studentAttendanceRoot).where(cb.equal(studentAttendanceRoot.get("runId"), runId)) @@ -66,11 +64,10 @@ public List getStudentAttendanceByRunId(Long runId) { @SuppressWarnings("unchecked") @Override - @Transactional(readOnly=true) - public List getStudentAttendanceByRunIdAndPeriod( - Long runId, int lookBackNumDays) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + @Transactional(readOnly = true) + public List getStudentAttendanceByRunIdAndPeriod(Long runId, + int lookBackNumDays) { + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(StudentAttendanceImpl.class); Root studentAttendanceRoot = cq.from(StudentAttendanceImpl.class); List predicates = new ArrayList<>(); @@ -81,8 +78,8 @@ public List getStudentAttendanceByRunIdAndPeriod( this.roundDownCalendar(c, Calendar.SECOND); this.roundDownCalendar(c, Calendar.MILLISECOND); Date compareDate = c.getTime(); - predicates.add( - cb.greaterThanOrEqualTo(studentAttendanceRoot.get("loginTimestamp"), compareDate)); + predicates + .add(cb.greaterThanOrEqualTo(studentAttendanceRoot.get("loginTimestamp"), compareDate)); predicates.add(cb.equal(studentAttendanceRoot.get("runId"), runId)); cq.select(studentAttendanceRoot).where(predicates.toArray(new Predicate[predicates.size()])) .orderBy(cb.desc(studentAttendanceRoot.get("loginTimestamp"))); diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java index 715452135d..71b9a994aa 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java @@ -21,14 +21,12 @@ package org.wise.portal.dao.authentication.impl; import javax.persistence.EntityManager; -import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.authentication.AclSidDao; import org.wise.portal.dao.impl.AbstractHibernateDao; @@ -62,8 +60,7 @@ protected String getFindAllQuery() { } public MutableAclSid retrieveBySidName(String sidName) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(PersistentAclSid.class); Root persistentAclSidRoot = cq.from(PersistentAclSid.class); cq.select(persistentAclSidRoot).where(cb.equal(persistentAclSidRoot.get("sidName"), sidName)); diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java index bc09cddf96..28829d311c 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java @@ -21,14 +21,12 @@ package org.wise.portal.dao.authentication.impl; import javax.persistence.EntityManager; -import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.authentication.AclTargetObjectDao; import org.wise.portal.dao.impl.AbstractHibernateDao; @@ -43,15 +41,14 @@ * @author Cynick Young */ @Repository -public class HibernateAclTargetObjectDao extends - AbstractHibernateDao implements - AclTargetObjectDao { +public class HibernateAclTargetObjectDao extends AbstractHibernateDao + implements AclTargetObjectDao { private static final String FIND_ALL_QUERY = "from PersistentAclTargetObject"; @PersistenceContext private EntityManager entityManager; - + @Override protected Class getDataObjectClass() { return PersistentAclTargetObject.class; @@ -63,13 +60,12 @@ protected String getFindAllQuery() { } public MutableAclTargetObject retrieveByClassname(String classname) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(PersistentAclTargetObject.class); - Root persistentAclTargetObjectRoot = - cq.from(PersistentAclTargetObject.class); - cq.select(persistentAclTargetObjectRoot).where( - cb.equal(persistentAclTargetObjectRoot.get("classname"), classname)); + Root persistentAclTargetObjectRoot = cq + .from(PersistentAclTargetObject.class); + cq.select(persistentAclTargetObjectRoot) + .where(cb.equal(persistentAclTargetObjectRoot.get("classname"), classname)); TypedQuery query = entityManager.createQuery(cq); return query.getResultStream().findFirst().orElse(null); } diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java index be8d4d8f7d..064e8ed18f 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java @@ -3,7 +3,7 @@ * * This software is distributed under the GNU General Public License, v3, * or (at your option) any later version. - * + * * Permission is hereby granted, without written agreement and without license * or royalty fees, to use, copy, modify, and distribute this software and its * documentation for any purpose, provided that the above copyright notice and @@ -31,7 +31,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.security.acls.model.ObjectIdentity; import org.springframework.stereotype.Repository; import org.wise.portal.dao.authentication.AclTargetObjectIdentityDao; @@ -43,7 +42,7 @@ * This class is not being used. Tried to implement Hibernate versions of the acl * services and became bogged down, so went back to jdbc versions. Keeping this * class around in case we want to try again later. - * + * * @author Cynick Young */ @Repository @@ -57,8 +56,7 @@ public class HibernateAclTargetObjectIdentityDao private static final String FIND_ALL_QUERY = "from PersistentAclTargetObjectIdentity"; public MutableAclTargetObjectIdentity retrieveByObjectIdentity(ObjectIdentity objectIdentity) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb .createQuery(PersistentAclTargetObjectIdentity.class); Root persistentAclTargetObjectIdentityRoot = cq @@ -97,4 +95,4 @@ protected Class getDataObjectClass() { protected String getFindAllQuery() { return FIND_ALL_QUERY; } -} \ No newline at end of file +} diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java index 38b5b24d12..4bbafba2bd 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java @@ -21,14 +21,12 @@ package org.wise.portal.dao.authentication.impl; import javax.persistence.EntityManager; -import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.authentication.GrantedAuthorityDao; import org.wise.portal.dao.impl.AbstractHibernateDao; @@ -42,9 +40,8 @@ * @author Cynick Young */ @Repository -public class HibernateGrantedAuthorityDao extends - AbstractHibernateDao implements - GrantedAuthorityDao { +public class HibernateGrantedAuthorityDao extends AbstractHibernateDao + implements GrantedAuthorityDao { @PersistenceContext private EntityManager entityManager; @@ -52,13 +49,12 @@ public class HibernateGrantedAuthorityDao extends private static final String FIND_ALL_QUERY = "from PersistentGrantedAuthority"; public MutableGrantedAuthority retrieveByName(String authority) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(PersistentGrantedAuthority.class); - Root persistentGrantedAuthorityRoot = - cq.from(PersistentGrantedAuthority.class); - cq.select(persistentGrantedAuthorityRoot).where( - cb.equal(persistentGrantedAuthorityRoot.get("authority"), authority)); + Root persistentGrantedAuthorityRoot = cq + .from(PersistentGrantedAuthority.class); + cq.select(persistentGrantedAuthorityRoot) + .where(cb.equal(persistentGrantedAuthorityRoot.get("authority"), authority)); TypedQuery query = entityManager.createQuery(cq); return query.getResultStream().findFirst().orElse(null); } @@ -66,6 +62,7 @@ public MutableGrantedAuthority retrieveByName(String authority) { public boolean hasRole(String authority) { return (this.retrieveByName(authority) != null); } + @Override protected String getFindAllQuery() { return FIND_ALL_QUERY; diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java index 61196c1e08..b3bdc73ddb 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java @@ -29,7 +29,6 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.authentication.UserDetailsDao; import org.wise.portal.dao.impl.AbstractHibernateDao; @@ -53,11 +52,6 @@ public class HibernateUserDetailsDao extends AbstractHibernateDao cq = cb.createQuery(PersistentUserDetails.class); diff --git a/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java b/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java index 2c4d9d7791..9f7ee5cdce 100644 --- a/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java +++ b/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2008-2017 Regents of the University of California (Regents). + * Copyright (c) 2008-2022 Regents of the University of California (Regents). * Created by WISE, Graduate School of Education, University of California, Berkeley. * * This software is distributed under the GNU General Public License, v3, @@ -26,8 +26,10 @@ import java.io.Serializable; import java.util.List; +import javax.annotation.Resource; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; +import javax.persistence.criteria.CriteriaBuilder; import org.hibernate.Session; import org.hibernate.SessionFactory; @@ -39,19 +41,19 @@ /** * @author Cynick Young + * @author Hiroki Terashima */ -public abstract class AbstractHibernateDao extends HibernateDaoSupport - implements SimpleDao { +public abstract class AbstractHibernateDao extends HibernateDaoSupport implements SimpleDao { @PersistenceContext private EntityManager entityManager; + @Resource + protected SessionFactory sessionFactory; + @Autowired @Transactional public void init() { - entityManager = entityManager.getEntityManagerFactory().createEntityManager(); - Session session = (Session) entityManager.unwrap(Session.class); - SessionFactory sessionFactory = session.getSessionFactory(); setSessionFactory(sessionFactory); } @@ -75,11 +77,11 @@ public T getById(Serializable id) throws ObjectNotFoundException { T object = null; try { if (id instanceof Integer) { - object = (T) this.getHibernateTemplate().get( - this.getDataObjectClass(), Integer.valueOf(id.toString())); + object = (T) this.getHibernateTemplate().get(this.getDataObjectClass(), + Integer.valueOf(id.toString())); } else { - object = (T) this.getHibernateTemplate().get( - this.getDataObjectClass(), Long.valueOf(id.toString())); + object = (T) this.getHibernateTemplate().get(this.getDataObjectClass(), + Long.valueOf(id.toString())); } } catch (NumberFormatException e) { return null; @@ -91,6 +93,11 @@ public T getById(Serializable id) throws ObjectNotFoundException { return object; } + protected CriteriaBuilder getCriteriaBuilder() { + Session session = sessionFactory.getCurrentSession(); + return session.getCriteriaBuilder(); + } + /** * Gets a string that will perform a query to retrieve all available objects * from the persistent data store. diff --git a/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java b/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java index a497c8456a..01b674abba 100644 --- a/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java +++ b/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java @@ -32,7 +32,6 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.dao.newsitem.NewsItemDao; @@ -44,7 +43,7 @@ */ @Repository public class HibernateNewsItemDao extends AbstractHibernateDao - implements NewsItemDao{ + implements NewsItemDao { @PersistenceContext private EntityManager entityManager; @@ -61,11 +60,6 @@ protected Class getDataObjectClass() { return NewsItemImpl.class; } - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - @Override @SuppressWarnings("unchecked") public List getListByType(String type) { diff --git a/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java b/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java index 65256949a4..0c62c12310 100644 --- a/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java +++ b/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java @@ -34,7 +34,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.dao.notification.NotificationDao; @@ -54,11 +53,6 @@ public class HibernateNotificationDao extends AbstractHibernateDao @PersistenceContext private EntityManager entityManager; - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java b/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java index 24d91c92ed..c207797a64 100644 --- a/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java +++ b/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java @@ -36,7 +36,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.dao.peergroup.PeerGroupDao; @@ -140,9 +139,4 @@ public List getWorkgroupsInPeerGroup(PeerGrouping peerGrouping, Group List resultList = query.getResultList(); return (List) (Object) resultList; } - - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } } diff --git a/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java b/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java index a545d72a15..69cf78c628 100644 --- a/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java +++ b/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java @@ -34,7 +34,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.dao.peergrouping.PeerGroupingDao; @@ -74,9 +73,4 @@ public PeerGrouping getByTag(Run run, String tag) { TypedQuery query = entityManager.createQuery(cq); return (PeerGroupingImpl) query.getResultStream().findFirst().orElse(null); } - - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } } diff --git a/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java b/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java index b17a827ddf..1d8d164757 100644 --- a/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java +++ b/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java @@ -32,7 +32,6 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.dao.portal.PortalStatisticsDao; @@ -46,11 +45,6 @@ public class HibernatePortalStatisticsDao extends AbstractHibernateDao getDataObjectClass() { return null; diff --git a/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java b/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java index 2a8ad95c3e..9182d488d9 100644 --- a/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java +++ b/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java @@ -38,7 +38,6 @@ import javax.persistence.criteria.Root; import javax.persistence.criteria.Subquery; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import org.wise.portal.dao.ObjectNotFoundException; @@ -55,8 +54,8 @@ * @author Hiroki Terashima */ @Repository -public class HibernateProjectDao extends AbstractHibernateDao implements - ProjectDao { +public class HibernateProjectDao extends AbstractHibernateDao + implements ProjectDao { @PersistenceContext private EntityManager entityManager; @@ -77,22 +76,16 @@ public Project createEmptyProject() { return new ProjectImpl(); } - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - @SuppressWarnings("unchecked") public List getSharedProjectsWithoutRun(User user) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(ProjectImpl.class); Root projectRoot = cq.from(ProjectImpl.class); Root userRoot = cq.from(UserImpl.class); Subquery runProjectIds = getRunProjectIds(cq); List predicates = new ArrayList<>(); predicates.add(cb.equal(userRoot.get("id"), user.getId())); - predicates.add(cb.isMember(userRoot.get("id"), projectRoot.>get("sharedowners"))); + predicates.add(cb.isMember(userRoot.get("id"), projectRoot.> get("sharedowners"))); predicates.add(cb.not(projectRoot.get("id").in(runProjectIds))); cq.select(projectRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); @@ -115,7 +108,7 @@ public List getProjectListByUAR(User user, String role) { Root userRoot = cq.from(UserImpl.class); List predicates = new ArrayList<>(); predicates.add(cb.equal(userRoot.get("id"), user.getId())); - predicates.add(cb.isMember(userRoot, projectRoot.>get(role))); + predicates.add(cb.isMember(userRoot, projectRoot.> get(role))); cq.select(projectRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); List projectResultList = query.getResultList(); @@ -143,7 +136,7 @@ public Project getById(Serializable id) throws ObjectNotFoundException { TypedQuery query = entityManager.createQuery(cq); try { return query.setMaxResults(1).getSingleResult(); - } catch(NoResultException e) { + } catch (NoResultException e) { throw new ObjectNotFoundException((Long) id, ProjectImpl.class); } } @@ -168,7 +161,7 @@ public List getProjectListByTagNames(Set tagNames) { Root projectRoot = cq.from(ProjectImpl.class); Root tagRoot = cq.from(TagImpl.class); cq.select(projectRoot).where(cb.and(tagRoot.get("name").in(tagNames), - cb.isMember(tagRoot, projectRoot.>get("tags")))).distinct(true); + cb.isMember(tagRoot, projectRoot.> get("tags")))).distinct(true); TypedQuery query = entityManager.createQuery(cq); List projectResultList = query.getResultList(); return (List) (Object) projectResultList; @@ -180,8 +173,8 @@ public List getProjectListByAuthorName(String authorName) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(ProjectImpl.class); Root projectRoot = cq.from(ProjectImpl.class); - cq.select(projectRoot).where(cb.like( - projectRoot.get("owner").get("userDetails").get("username"), "%" + authorName + "%")); + cq.select(projectRoot).where(cb + .like(projectRoot.get("owner").get("userDetails").get("username"), "%" + authorName + "%")); TypedQuery query = entityManager.createQuery(cq); List projectResultList = query.getResultList(); return (List) (Object) projectResultList; @@ -212,8 +205,7 @@ public List getProjectCopies(Long parentProjectId) { @SuppressWarnings("unchecked") public List getProjectsWithoutRuns(User user) { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(ProjectImpl.class); Root projectRoot = cq.from(ProjectImpl.class); Root userRoot = cq.from(UserImpl.class); @@ -230,8 +222,7 @@ public List getProjectsWithoutRuns(User user) { @SuppressWarnings("unchecked") public List getAllSharedProjects() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - CriteriaBuilder cb = session.getCriteriaBuilder(); + CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(ProjectImpl.class); Root projectRoot = cq.from(ProjectImpl.class); cq.select(projectRoot).where(cb.isNotEmpty(projectRoot.get("sharedowners"))); @@ -245,7 +236,7 @@ public long getMaxProjectId() { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Long.class); Root runRoot = cq.from(ProjectImpl.class); - cq.select(cb.max(runRoot.get("id"))); + cq.select(cb.max(runRoot. get("id"))); TypedQuery query = entityManager.createQuery(cq); try { return query.getSingleResult(); diff --git a/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java b/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java index 4543dd0964..0256f17a26 100644 --- a/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java +++ b/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java @@ -32,7 +32,6 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.ObjectNotFoundException; import org.wise.portal.dao.impl.AbstractHibernateDao; @@ -62,11 +61,6 @@ protected String getFindAllQuery() { return HibernateTagDao.FIND_ALL_QUERY; } - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - /** * @see org.wise.portal.dao.project.TagDao#getTagByName(java.lang.String) */ diff --git a/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java b/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java index f3250ab8fb..4c886f98c2 100644 --- a/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java +++ b/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java @@ -37,12 +37,10 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.ObjectNotFoundException; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.dao.run.RunDao; -import org.wise.portal.domain.group.Group; import org.wise.portal.domain.group.impl.PersistentGroup; import org.wise.portal.domain.run.Run; import org.wise.portal.domain.run.impl.RunImpl; @@ -74,11 +72,6 @@ protected Class getDataObjectClass() { return RunImpl.class; } - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - public Run retrieveByRunCode(String runcode) throws ObjectNotFoundException { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(RunImpl.class); diff --git a/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java b/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java index 3303d781d8..1db10dd463 100644 --- a/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java +++ b/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java @@ -32,7 +32,6 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import org.wise.portal.dao.ObjectNotFoundException; @@ -47,11 +46,6 @@ public class HibernateVLEStatisticsDao extends AbstractHibernateDao getVLEStatistics() { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(VLEStatistics.class); @@ -89,7 +83,7 @@ public List getVLEStatistics() { return query.getResultList(); } - @Transactional(readOnly=true) + @Transactional(readOnly = true) public VLEStatistics getLatestVLEStatistics() { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(VLEStatistics.class); diff --git a/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java b/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java index b814dbb4c1..8331be31b9 100644 --- a/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java +++ b/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java @@ -24,14 +24,12 @@ package org.wise.portal.dao.status.impl; import javax.persistence.EntityManager; -import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import org.wise.portal.dao.impl.AbstractHibernateDao; @@ -45,11 +43,6 @@ public class HibernateRunStatusDao extends AbstractHibernateDao @PersistenceContext private EntityManager entityManager; - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java b/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java index d19577fcc6..f13c0caab3 100644 --- a/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java +++ b/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java @@ -32,7 +32,6 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import org.wise.portal.dao.impl.AbstractHibernateDao; @@ -42,15 +41,10 @@ @Repository public class HibernateStudentStatusDao extends AbstractHibernateDao implements StudentStatusDao { - + @PersistenceContext private EntityManager entityManager; - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java b/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java index 0bee5f3cee..73fdfb92b1 100644 --- a/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java +++ b/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java @@ -33,7 +33,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; @@ -66,11 +65,6 @@ protected Class getDataObjectClass() { return UserImpl.class; } - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - public User retrieveByUserDetails(UserDetails userDetails) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(UserImpl.class); @@ -103,8 +97,8 @@ public List retrieveByEmailAddress(String emailAddress) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(UserImpl.class); Root userRoot = cq.from(UserImpl.class); - cq.select(userRoot).where( - cb.equal(userRoot.get("userDetails").get("emailAddress"), emailAddress)); + cq.select(userRoot) + .where(cb.equal(userRoot.get("userDetails").get("emailAddress"), emailAddress)); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); } @@ -113,8 +107,8 @@ public User retrieveByGoogleUserId(String googleUserId) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(UserImpl.class); Root userRoot = cq.from(UserImpl.class); - cq.select(userRoot).where( - cb.equal(userRoot.get("userDetails").get("googleUserId"), googleUserId)); + cq.select(userRoot) + .where(cb.equal(userRoot.get("userDetails").get("googleUserId"), googleUserId)); TypedQuery query = entityManager.createQuery(cq); return query.getResultStream().findFirst().orElse(null); } @@ -136,8 +130,8 @@ public List retrieveAllTeachers() { Root userRoot = cq.from(UserImpl.class); Root teacherUserDetailsRoot = cq.from(TeacherUserDetails.class); List predicates = new ArrayList<>(); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); @@ -150,8 +144,8 @@ public User retrieveTeacherById(Long id) { Root teacherUserDetailsRoot = cq.from(TeacherUserDetails.class); List predicates = new ArrayList<>(); predicates.add(cb.equal(userRoot.get("id"), id)); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return query.getResultStream().findFirst().orElse(null); @@ -202,8 +196,8 @@ private List retrieveTeachersByFieldValue(String field, String value) { Root teacherUserDetailsRoot = cq.from(TeacherUserDetails.class); List predicates = new ArrayList<>(); predicates.add(cb.equal(teacherUserDetailsRoot.get(field), value)); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); @@ -217,8 +211,8 @@ public List retrieveTeachersBySchoolLevel(String schoolLevel) { Root teacherUserDetailsRoot = cq.from(TeacherUserDetails.class); List predicates = new ArrayList<>(); predicates.add(cb.equal(teacherUserDetailsRoot.get("schoollevel"), getLevel(schoolLevel))); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); @@ -240,8 +234,8 @@ public List retrieveAllStudents() { Root userRoot = cq.from(UserImpl.class); Root studentUserDetailsRoot = cq.from(StudentUserDetails.class); List predicates = new ArrayList<>(); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); @@ -254,8 +248,8 @@ public User retrieveStudentById(Long id) { Root studentUserDetailsRoot = cq.from(StudentUserDetails.class); List predicates = new ArrayList<>(); predicates.add(cb.equal(userRoot.get("id"), id)); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return query.getResultStream().findFirst().orElse(null); @@ -282,8 +276,8 @@ private List retrieveStudentsByFieldValue(String field, String value) { Root studentUserDetailsRoot = cq.from(StudentUserDetails.class); List predicates = new ArrayList<>(); predicates.add(cb.equal(studentUserDetailsRoot.get(field), value)); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); @@ -296,10 +290,10 @@ public List retrieveStudentsByGender(String gender) { Root userRoot = cq.from(UserImpl.class); Root studentUserDetailsRoot = cq.from(StudentUserDetails.class); List predicates = new ArrayList<>(); - predicates.add(cb.equal( - studentUserDetailsRoot.get("gender"), Gender.valueOf(gender.toUpperCase()))); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); + predicates + .add(cb.equal(studentUserDetailsRoot.get("gender"), Gender.valueOf(gender.toUpperCase()))); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); @@ -313,16 +307,14 @@ public List retrieveStudentsByNameAndBirthday(String firstName, String las Root userRoot = cq.from(UserImpl.class); Root studentUserDetailsRoot = cq.from(StudentUserDetails.class); List predicates = new ArrayList<>(); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); predicates.add(cb.equal(studentUserDetailsRoot.get("firstname"), firstName)); predicates.add(cb.equal(studentUserDetailsRoot.get("lastname"), lastName)); predicates.add(cb.equal( - cb.function("MONTH", Integer.class, studentUserDetailsRoot.get("birthday")), - birthMonth)); + cb.function("MONTH", Integer.class, studentUserDetailsRoot.get("birthday")), birthMonth)); predicates.add(cb.equal( - cb.function("DAY", Integer.class, studentUserDetailsRoot.get("birthday")), - birthDay)); + cb.function("DAY", Integer.class, studentUserDetailsRoot.get("birthday")), birthDay)); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); @@ -335,8 +327,8 @@ public List retrieveTeachersByName(String firstName, String lastName) { Root userRoot = cq.from(UserImpl.class); Root teacherUserDetailsRoot = cq.from(TeacherUserDetails.class); List predicates = new ArrayList<>(); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); predicates.add(cb.equal(teacherUserDetailsRoot.get("firstname"), firstName)); predicates.add(cb.equal(teacherUserDetailsRoot.get("lastname"), lastName)); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); @@ -352,8 +344,8 @@ public User retrieveByResetPasswordKey(String resetPasswordKey) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(UserImpl.class); Root userRoot = cq.from(UserImpl.class); - cq.select(userRoot).where( - cb.equal(userRoot.get("userDetails").get("resetPasswordKey"), resetPasswordKey)); + cq.select(userRoot) + .where(cb.equal(userRoot.get("userDetails").get("resetPasswordKey"), resetPasswordKey)); TypedQuery query = entityManager.createQuery(cq); return query.getResultStream().findFirst().orElse(null); } @@ -375,16 +367,16 @@ public List retrieveUsersJoinedSinceYesterday(String userType) { Date compareDate = getCompareDate("sinceYesterday"); if ("student".equals(userType)) { Root studentUserDetailsRoot = cq.from(StudentUserDetails.class); - predicates.add( - cb.greaterThanOrEqualTo(studentUserDetailsRoot.get("signupdate"), compareDate)); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); + predicates + .add(cb.greaterThanOrEqualTo(studentUserDetailsRoot.get("signupdate"), compareDate)); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); } else if ("teacher".equals(userType)) { Root teacherUserDetailsRoot = cq.from(TeacherUserDetails.class); - predicates.add( - cb.greaterThanOrEqualTo(teacherUserDetailsRoot.get("signupdate"), compareDate)); - predicates.add(cb.equal( - userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); + predicates + .add(cb.greaterThanOrEqualTo(teacherUserDetailsRoot.get("signupdate"), compareDate)); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); } cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); @@ -419,10 +411,10 @@ public List retrieveTeacherUsersWhoLoggedInRecently(String when) { Root teacherUserDetailsRoot = cq.from(TeacherUserDetails.class); List predicates = new ArrayList<>(); Date compareDate = getCompareDate(when); - predicates.add( - cb.greaterThanOrEqualTo(teacherUserDetailsRoot.get("lastLoginTime"), compareDate)); - predicates.add( - cb.equal(userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); + predicates + .add(cb.greaterThanOrEqualTo(teacherUserDetailsRoot.get("lastLoginTime"), compareDate)); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), teacherUserDetailsRoot.get("id"))); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); @@ -456,10 +448,10 @@ public List retrieveStudentUsersWhoLoggedInRecently(String when) { Root studentUserDetailsRoot = cq.from(StudentUserDetails.class); List predicates = new ArrayList<>(); Date compareDate = getCompareDate(when); - predicates.add( - cb.greaterThanOrEqualTo(studentUserDetailsRoot.get("lastLoginTime"), compareDate)); - predicates.add( - cb.equal(userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); + predicates + .add(cb.greaterThanOrEqualTo(studentUserDetailsRoot.get("lastLoginTime"), compareDate)); + predicates + .add(cb.equal(userRoot.get("userDetails").get("id"), studentUserDetailsRoot.get("id"))); cq.select(userRoot).where(predicates.toArray(new Predicate[predicates.size()])); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); diff --git a/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java b/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java index f22b3d44d4..47c74095a9 100644 --- a/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java +++ b/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java @@ -11,7 +11,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.dao.usertags.UserTagsDao; @@ -75,9 +74,4 @@ public UserTag get(User user, String text) { List tagsResultList = query.getResultList(); return tagsResultList.isEmpty() ? null : tagsResultList.get(0); } - - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } } diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java index b1f73d4d76..82a5ab277b 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java @@ -34,7 +34,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.json.JSONException; import org.json.JSONObject; import org.springframework.stereotype.Repository; @@ -50,18 +49,11 @@ * @author Hiroki Terashima */ @Repository -public class HibernateEventDao extends AbstractHibernateDao - implements EventDao { +public class HibernateEventDao extends AbstractHibernateDao implements EventDao { @PersistenceContext private EntityManager entityManager; - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory() - .getCurrentSession(); - return session.getCriteriaBuilder(); - } - @Override protected String getFindAllQuery() { return null; @@ -74,18 +66,15 @@ protected Class getDataObjectClass() { @Override @SuppressWarnings("unchecked") - public List getEventsByParams(Integer id, Run run, Group period, - Workgroup workgroup, String nodeId, String componentId, - String componentType, String context, String category, String event, - List components) { + public List getEventsByParams(Integer id, Run run, Group period, Workgroup workgroup, + String nodeId, String componentId, String componentType, String context, String category, + String event, List components) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Event.class); Root eventRoot = cq.from(Event.class); - List predicates = getEventsByParamsPredicates(cb, eventRoot, id, - run, period, workgroup, nodeId, componentId, componentType, context, - category, event, components); - cq.select(eventRoot) - .where(predicates.toArray(new Predicate[predicates.size()])) + List predicates = getEventsByParamsPredicates(cb, eventRoot, id, run, period, + workgroup, nodeId, componentId, componentType, context, category, event, components); + cq.select(eventRoot).where(predicates.toArray(new Predicate[predicates.size()])) .orderBy(cb.asc(eventRoot.get("serverSaveTime"))); TypedQuery query = entityManager.createQuery(cq); return (List) (Object) query.getResultList(); @@ -144,9 +133,8 @@ boolean isTeacherEvent(Event event) { return user != null && user.isTeacher(); } - private List getEventsByParamsPredicates(CriteriaBuilder cb, - Root eventRoot, Integer id, Run run, Group period, - Workgroup workgroup, String nodeId, String componentId, + private List getEventsByParamsPredicates(CriteriaBuilder cb, Root eventRoot, + Integer id, Run run, Group period, Workgroup workgroup, String nodeId, String componentId, String componentType, String context, String category, String event, List components) { List predicates = new ArrayList<>(); @@ -188,8 +176,7 @@ private List getEventsByParamsPredicates(CriteriaBuilder cb, Predicate nodeIdPredicate = null; Predicate componentIdPredicate = null; if (component.has("nodeId")) { - nodeIdPredicate = cb.equal(eventRoot.get("nodeId"), - component.getString("nodeId")); + nodeIdPredicate = cb.equal(eventRoot.get("nodeId"), component.getString("nodeId")); } else { nodeIdPredicate = cb.isNull(eventRoot.get("nodeId")); } @@ -199,14 +186,13 @@ private List getEventsByParamsPredicates(CriteriaBuilder cb, } else { componentIdPredicate = cb.isNull(eventRoot.get("componentId")); } - componentsPredicates - .add(cb.and(nodeIdPredicate, componentIdPredicate)); + componentsPredicates.add(cb.and(nodeIdPredicate, componentIdPredicate)); } catch (JSONException e) { e.printStackTrace(); } } - predicates.add(cb.or(componentsPredicates - .toArray(new Predicate[componentsPredicates.size()]))); + predicates + .add(cb.or(componentsPredicates.toArray(new Predicate[componentsPredicates.size()]))); } return predicates; } diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java index 7375f23000..ff6931940f 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java @@ -12,7 +12,6 @@ import javax.persistence.criteria.Root; import javax.persistence.criteria.Subquery; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.dao.work.NotebookItemDao; @@ -26,16 +25,11 @@ */ @Repository public class HibernateNotebookItemDao extends AbstractHibernateDao - implements NotebookItemDao { + implements NotebookItemDao { @PersistenceContext private EntityManager entityManager; - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - @Override protected String getFindAllQuery() { return null; @@ -57,8 +51,7 @@ public List getNotebookItemListByParams(Integer id, Run run, Group subPredicates.add(cb.equal(subNotebookItemRoot.get("run"), run)); subPredicates.add(cb.isNull(subNotebookItemRoot.get("groups"))); if (workgroup != null) { - subPredicates.add( - cb.equal(subNotebookItemRoot.get("workgroup"), workgroup)); + subPredicates.add(cb.equal(subNotebookItemRoot.get("workgroup"), workgroup)); } if (period != null) { subPredicates.add(cb.equal(subNotebookItemRoot.get("period"), period)); @@ -72,7 +65,7 @@ public List getNotebookItemListByParams(Integer id, Run run, Group subQuery.select(cb.max(subNotebookItemRoot.get("id"))) .where(subPredicates.toArray(new Predicate[subPredicates.size()])) .groupBy(subNotebookItemRoot.get("workgroup").get("id"), - subNotebookItemRoot.get("localNotebookItemId")); + subNotebookItemRoot.get("localNotebookItemId")); Root notebookItemRoot = cq.from(NotebookItem.class); cq.select(notebookItemRoot).where(cb.in(notebookItemRoot.get("id")).value(subQuery)); TypedQuery query = entityManager.createQuery(cq); @@ -90,7 +83,7 @@ public List getNotebookItemByGroup(Integer runId, String groupName subQuery.select(cb.max(subNotebookItemRoot.get("id"))) .where(subPredicates.toArray(new Predicate[subPredicates.size()])) .groupBy(subNotebookItemRoot.get("workgroup").get("id"), - subNotebookItemRoot.get("localNotebookItemId")); + subNotebookItemRoot.get("localNotebookItemId")); Root notebookItemRoot = cq.from(NotebookItem.class); cq.select(notebookItemRoot).where(cb.in(notebookItemRoot.get("id")).value(subQuery)); TypedQuery query = entityManager.createQuery(cq); @@ -101,9 +94,8 @@ public List getNotebookItemsExport(Run run) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(NotebookItem.class); Root notebookItemRoot = cq.from(NotebookItem.class); - cq.select(notebookItemRoot).where(cb.equal(notebookItemRoot.get("run"), run)) - .orderBy(cb.asc(notebookItemRoot.get("workgroup").get("id")), - cb.asc(notebookItemRoot.get("id"))); + cq.select(notebookItemRoot).where(cb.equal(notebookItemRoot.get("run"), run)).orderBy( + cb.asc(notebookItemRoot.get("workgroup").get("id")), cb.asc(notebookItemRoot.get("id"))); TypedQuery query = entityManager.createQuery(cq); return (List) query.getResultList(); } @@ -116,9 +108,8 @@ public List getLatestNotebookItemsExport(Run run) { List predicates = new ArrayList<>(); predicates.add(cb.equal(notebookItemRoot.get("run"), run)); predicates.add(notebookItemRoot.get("id").in(latestNotebookItemIds)); - cq.select(notebookItemRoot).where(predicates.toArray(new Predicate[predicates.size()])) - .orderBy(cb.asc(notebookItemRoot.get("workgroup").get("id")), - cb.asc(notebookItemRoot.get("id"))); + cq.select(notebookItemRoot).where(predicates.toArray(new Predicate[predicates.size()])).orderBy( + cb.asc(notebookItemRoot.get("workgroup").get("id")), cb.asc(notebookItemRoot.get("id"))); TypedQuery query = entityManager.createQuery(cq); return (List) query.getResultList(); } @@ -126,9 +117,8 @@ public List getLatestNotebookItemsExport(Run run) { private Subquery getLatestNotebookItemIds(CriteriaBuilder cb, CriteriaQuery cq) { Subquery notebookItemSubquery = cq.subquery(Long.class); Root notebookItemRoot = notebookItemSubquery.from(NotebookItem.class); - notebookItemSubquery.select(cb.max(notebookItemRoot.get("id"))) - .groupBy(notebookItemRoot.get("workgroup").get("id"), - notebookItemRoot.get("localNotebookItemId")); - return notebookItemSubquery; + notebookItemSubquery.select(cb.max(notebookItemRoot.get("id"))).groupBy( + notebookItemRoot.get("workgroup").get("id"), notebookItemRoot.get("localNotebookItemId")); + return notebookItemSubquery; } } diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java index d4600a50b8..1c6632063d 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java @@ -34,7 +34,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.dao.work.StudentAssetDao; @@ -52,7 +51,7 @@ public class HibernateStudentAssetDao extends AbstractHibernateDao @PersistenceContext private EntityManager entityManager; - + @Override protected String getFindAllQuery() { return null; @@ -63,17 +62,12 @@ protected Class getDataObjectClass() { return StudentAsset.class; } - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - @Override public List getStudentAssetListByParams(Integer id, Run run, Group period, Workgroup workgroup, String nodeId, String componentId, String componentType, Boolean isReferenced) { CriteriaBuilder cb = getCriteriaBuilder(); - CriteriaQuery cq = cb.createQuery(StudentAsset.class); + CriteriaQuery cq = cb.createQuery(StudentAsset.class); Root studentAssetRoot = cq.from(StudentAsset.class); List predicates = new ArrayList<>(); if (id != null) { diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java index 4b0e64e46d..5a7882a3d4 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java @@ -34,9 +34,6 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import javax.persistence.criteria.Subquery; - -import org.hibernate.Session; import org.json.JSONException; import org.json.JSONObject; import org.springframework.stereotype.Repository; @@ -60,11 +57,6 @@ public class HibernateStudentWorkDao extends AbstractHibernateDao @PersistenceContext private EntityManager entityManager; - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - @Override protected String getFindAllQuery() { return null; @@ -102,7 +94,7 @@ public List getWorkForComponentByPeriod(Run run, Group period, Stri predicates.add(cb.equal(studentWorkRoot.get("nodeId"), nodeId)); predicates.add(cb.equal(studentWorkRoot.get("componentId"), componentId)); cq.select(studentWorkRoot).where(predicates.toArray(new Predicate[predicates.size()])) - .orderBy(cb.asc(studentWorkRoot.get("serverSaveTime"))); + .orderBy(cb.asc(studentWorkRoot.get("serverSaveTime"))); TypedQuery query = entityManager.createQuery(cq); return (List) query.getResultList(); } @@ -118,7 +110,7 @@ public List getWorkForComponentByWorkgroup(Workgroup workgroup, Str predicates.add(cb.equal(studentWorkRoot.get("nodeId"), nodeId)); predicates.add(cb.equal(studentWorkRoot.get("componentId"), componentId)); cq.select(studentWorkRoot).where(predicates.toArray(new Predicate[predicates.size()])) - .orderBy(cb.asc(studentWorkRoot.get("serverSaveTime"))); + .orderBy(cb.asc(studentWorkRoot.get("serverSaveTime"))); TypedQuery query = entityManager.createQuery(cq); return (List) query.getResultList(); } @@ -133,11 +125,11 @@ public List getStudentWork(PeerGroup peerGroup, String nodeId, Stri predicates.add(cb.equal(studentWorkRoot.get("nodeId"), nodeId)); predicates.add(cb.equal(studentWorkRoot.get("componentId"), componentId)); cq.select(studentWorkRoot).where(predicates.toArray(new Predicate[predicates.size()])) - .orderBy(cb.asc(studentWorkRoot.get("serverSaveTime"))); + .orderBy(cb.asc(studentWorkRoot.get("serverSaveTime"))); TypedQuery query = entityManager.createQuery(cq); return (List) query.getResultList(); } - + @Override public List getStudentWork(Set workgroups, String nodeId, String componentId) { @@ -149,7 +141,7 @@ public List getStudentWork(Set workgroups, String nodeId predicates.add(cb.equal(studentWorkRoot.get("nodeId"), nodeId)); predicates.add(cb.equal(studentWorkRoot.get("componentId"), componentId)); cq.select(studentWorkRoot).where(predicates.toArray(new Predicate[predicates.size()])) - .orderBy(cb.asc(studentWorkRoot.get("serverSaveTime"))); + .orderBy(cb.asc(studentWorkRoot.get("serverSaveTime"))); TypedQuery query = entityManager.createQuery(cq); return (List) query.getResultList(); } diff --git a/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java b/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java index 9e640b8e08..b311554da5 100644 --- a/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java +++ b/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java @@ -35,7 +35,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.hibernate.Session; import org.springframework.stereotype.Repository; import org.wise.portal.dao.impl.AbstractHibernateDao; import org.wise.portal.dao.workgroup.WorkgroupDao; @@ -57,11 +56,6 @@ public class HibernateWorkgroupDao extends AbstractHibernateDao @PersistenceContext private EntityManager entityManager; - private CriteriaBuilder getCriteriaBuilder() { - Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession(); - return session.getCriteriaBuilder(); - } - private static final String FIND_ALL_QUERY = "from WorkgroupImpl"; @Override From 258beb54937c137187f8dcce582f04c72487c1f2 Mon Sep 17 00:00:00 2001 From: Hiroki Terashima Date: Mon, 29 Sep 2025 16:48:04 -0700 Subject: [PATCH 2/4] Child Dao classes now use the EntityManager of parent (AbstractHibernateDao) --- .../wise/portal/dao/achievement/HibernateAchievementDao.java | 5 ----- .../dao/annotation/wise5/impl/HibernateAnnotationDao.java | 5 ----- .../dao/attendance/impl/HibernateStudentAttendanceDao.java | 5 ----- .../portal/dao/authentication/impl/HibernateAclSidDao.java | 5 ----- .../dao/authentication/impl/HibernateAclTargetObjectDao.java | 5 ----- .../impl/HibernateAclTargetObjectIdentityDao.java | 5 ----- .../authentication/impl/HibernateGrantedAuthorityDao.java | 5 ----- .../dao/authentication/impl/HibernateUserDetailsDao.java | 5 ----- .../java/org/wise/portal/dao/impl/AbstractHibernateDao.java | 2 +- .../wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java | 5 ----- .../dao/notification/impl/HibernateNotificationDao.java | 5 ----- .../portal/dao/peergroup/impl/HibernatePeerGroupDao.java | 5 ----- .../dao/peergrouping/impl/HibernatePeerGroupingDao.java | 5 ----- .../portal/dao/portal/impl/HibernatePortalStatisticsDao.java | 5 ----- .../wise/portal/dao/project/impl/HibernateProjectDao.java | 5 ----- .../org/wise/portal/dao/project/impl/HibernateTagDao.java | 5 ----- .../java/org/wise/portal/dao/run/impl/HibernateRunDao.java | 5 ----- .../dao/statistics/impl/HibernateVLEStatisticsDao.java | 5 ----- .../wise/portal/dao/status/impl/HibernateRunStatusDao.java | 5 ----- .../portal/dao/status/impl/HibernateStudentStatusDao.java | 5 ----- .../java/org/wise/portal/dao/user/impl/HibernateUserDao.java | 5 ----- .../wise/portal/dao/usertags/impl/HibernateUserTagsDao.java | 5 ----- .../org/wise/portal/dao/work/impl/HibernateEventDao.java | 5 ----- .../wise/portal/dao/work/impl/HibernateNotebookItemDao.java | 5 ----- .../wise/portal/dao/work/impl/HibernateStudentAssetDao.java | 5 ----- .../wise/portal/dao/work/impl/HibernateStudentWorkDao.java | 5 ----- .../portal/dao/workgroup/impl/HibernateWorkgroupDao.java | 5 ----- 27 files changed, 1 insertion(+), 131 deletions(-) diff --git a/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java b/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java index a791337bb7..b6a5b9d3e1 100644 --- a/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java +++ b/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java @@ -26,8 +26,6 @@ import java.util.ArrayList; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -48,9 +46,6 @@ public class HibernateAchievementDao extends AbstractHibernateDao implements AchievementDao { - @PersistenceContext - private EntityManager entityManager; - @Override @SuppressWarnings("unchecked") public List getAchievementsByParams(Integer id, Run run, Workgroup workgroup, diff --git a/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java b/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java index 17b4595794..c24e9aa3a8 100644 --- a/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java +++ b/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java @@ -4,8 +4,6 @@ import java.util.List; import java.util.Set; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -28,9 +26,6 @@ public class HibernateAnnotationDao extends AbstractHibernateDao implements AnnotationDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java b/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java index e532f46510..34d12fd0a7 100644 --- a/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java +++ b/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java @@ -28,8 +28,6 @@ import java.util.Date; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -47,9 +45,6 @@ public class HibernateStudentAttendanceDao extends AbstractHibernateDao implements StudentAttendanceDao { - @PersistenceContext - private EntityManager entityManager; - @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List getStudentAttendanceByRunId(Long runId) { diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java index 71b9a994aa..1430ca977b 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java @@ -20,8 +20,6 @@ */ package org.wise.portal.dao.authentication.impl; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -44,9 +42,6 @@ public class HibernateAclSidDao extends AbstractHibernateDao implements AclSidDao { - @PersistenceContext - private EntityManager entityManager; - private static final String FIND_ALL_QUERY = "from PersistentAclSid"; @Override diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java index 28829d311c..01283f3ab0 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java @@ -20,8 +20,6 @@ */ package org.wise.portal.dao.authentication.impl; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -46,9 +44,6 @@ public class HibernateAclTargetObjectDao extends AbstractHibernateDao getDataObjectClass() { return PersistentAclTargetObject.class; diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java index 064e8ed18f..83fb891a01 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java @@ -23,8 +23,6 @@ import java.util.ArrayList; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -50,9 +48,6 @@ public class HibernateAclTargetObjectIdentityDao extends AbstractHibernateDao implements AclTargetObjectIdentityDao { - @PersistenceContext - private EntityManager entityManager; - private static final String FIND_ALL_QUERY = "from PersistentAclTargetObjectIdentity"; public MutableAclTargetObjectIdentity retrieveByObjectIdentity(ObjectIdentity objectIdentity) { diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java index 4bbafba2bd..07789f8a91 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java @@ -20,8 +20,6 @@ */ package org.wise.portal.dao.authentication.impl; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -43,9 +41,6 @@ public class HibernateGrantedAuthorityDao extends AbstractHibernateDao implements GrantedAuthorityDao { - @PersistenceContext - private EntityManager entityManager; - private static final String FIND_ALL_QUERY = "from PersistentGrantedAuthority"; public MutableGrantedAuthority retrieveByName(String authority) { diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java index b3bdc73ddb..d79d031cb4 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java @@ -22,8 +22,6 @@ import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -47,9 +45,6 @@ public class HibernateUserDetailsDao extends AbstractHibernateDao implements UserDetailsDao { - @PersistenceContext - private EntityManager entityManager; - private static final String FIND_ALL_QUERY = "from PersistentUserDetails"; public PersistentUserDetails retrieveByName(String username) { diff --git a/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java b/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java index 9f7ee5cdce..0244398c64 100644 --- a/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java +++ b/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java @@ -46,7 +46,7 @@ public abstract class AbstractHibernateDao extends HibernateDaoSupport implements SimpleDao { @PersistenceContext - private EntityManager entityManager; + protected EntityManager entityManager; @Resource protected SessionFactory sessionFactory; diff --git a/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java b/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java index 01b674abba..79bdcf4b51 100644 --- a/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java +++ b/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java @@ -25,8 +25,6 @@ import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -45,9 +43,6 @@ public class HibernateNewsItemDao extends AbstractHibernateDao implements NewsItemDao { - @PersistenceContext - private EntityManager entityManager; - private static final String FIND_ALL_QUERY = "from NewsItemImpl order by id desc"; @Override diff --git a/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java b/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java index 0c62c12310..16c878add8 100644 --- a/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java +++ b/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java @@ -26,8 +26,6 @@ import java.util.ArrayList; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -50,9 +48,6 @@ public class HibernateNotificationDao extends AbstractHibernateDao implements NotificationDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java b/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java index c207797a64..bb3f51dc4a 100644 --- a/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java +++ b/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java @@ -27,9 +27,7 @@ import java.util.List; import java.util.Set; -import javax.persistence.EntityManager; import javax.persistence.LockModeType; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -55,9 +53,6 @@ public class HibernatePeerGroupDao extends AbstractHibernateDao implements PeerGroupDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return "from PeerGroupImpl"; diff --git a/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java b/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java index 69cf78c628..018590426a 100644 --- a/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java +++ b/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java @@ -26,8 +26,6 @@ import java.util.ArrayList; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -48,9 +46,6 @@ public class HibernatePeerGroupingDao extends AbstractHibernateDao implements PeerGroupingDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return "from PeerGroupingImpl"; diff --git a/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java b/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java index 1d8d164757..b101df5999 100644 --- a/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java +++ b/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java @@ -25,8 +25,6 @@ import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -42,9 +40,6 @@ public class HibernatePortalStatisticsDao extends AbstractHibernateDao implements PortalStatisticsDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected Class getDataObjectClass() { return null; diff --git a/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java b/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java index 9182d488d9..84085c2c94 100644 --- a/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java +++ b/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java @@ -28,9 +28,7 @@ import java.util.List; import java.util.Set; -import javax.persistence.EntityManager; import javax.persistence.NoResultException; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -57,9 +55,6 @@ public class HibernateProjectDao extends AbstractHibernateDao implements ProjectDao { - @PersistenceContext - private EntityManager entityManager; - private static final String FIND_ALL_QUERY = "from ProjectImpl"; @Override diff --git a/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java b/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java index 0256f17a26..5042f28bb9 100644 --- a/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java +++ b/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java @@ -25,8 +25,6 @@ import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -48,9 +46,6 @@ public class HibernateTagDao extends AbstractHibernateDao implements TagDao private static final String FIND_ALL_QUERY = "from TagImpl"; - @PersistenceContext - private EntityManager entityManager; - @Override protected Class getDataObjectClass() { return TagImpl.class; diff --git a/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java b/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java index 4c886f98c2..65f2d79680 100644 --- a/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java +++ b/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java @@ -29,8 +29,6 @@ import java.util.List; import java.util.Set; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -57,9 +55,6 @@ @Repository public class HibernateRunDao extends AbstractHibernateDao implements RunDao { - @PersistenceContext - private EntityManager entityManager; - private static final String FIND_ALL_QUERY = "from RunImpl"; @Override diff --git a/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java b/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java index 1db10dd463..5c979e838d 100644 --- a/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java +++ b/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java @@ -25,8 +25,6 @@ import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -43,9 +41,6 @@ public class HibernateVLEStatisticsDao extends AbstractHibernateDao implements VLEStatisticsDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java b/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java index 8331be31b9..cf07dec5ad 100644 --- a/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java +++ b/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java @@ -23,8 +23,6 @@ */ package org.wise.portal.dao.status.impl; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -40,9 +38,6 @@ public class HibernateRunStatusDao extends AbstractHibernateDao implements RunStatusDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java b/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java index f13c0caab3..40450fdbef 100644 --- a/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java +++ b/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java @@ -25,8 +25,6 @@ import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -42,9 +40,6 @@ public class HibernateStudentStatusDao extends AbstractHibernateDao implements StudentStatusDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java b/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java index 73fdfb92b1..ed0768219f 100644 --- a/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java +++ b/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java @@ -25,8 +25,6 @@ import java.util.Date; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -50,9 +48,6 @@ @Repository public class HibernateUserDao extends AbstractHibernateDao implements UserDao { - @PersistenceContext - private EntityManager entityManager; - private static final String FIND_ALL_QUERY = "from UserImpl"; @Override diff --git a/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java b/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java index 47c74095a9..4b41fcda1b 100644 --- a/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java +++ b/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java @@ -3,8 +3,6 @@ import java.util.ArrayList; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -22,9 +20,6 @@ public class HibernateUserTagsDao extends AbstractHibernateDao implements UserTagsDao { - @PersistenceContext - private EntityManager entityManager; - private static final String FIND_ALL_QUERY = "from TagsImpl"; @Override diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java index 82a5ab277b..5904225f3b 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java @@ -26,8 +26,6 @@ import java.util.ArrayList; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -51,9 +49,6 @@ @Repository public class HibernateEventDao extends AbstractHibernateDao implements EventDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java index ff6931940f..096cd1638b 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java @@ -3,8 +3,6 @@ import java.util.ArrayList; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -27,9 +25,6 @@ public class HibernateNotebookItemDao extends AbstractHibernateDao implements NotebookItemDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java index 1c6632063d..1e3c9aa5f8 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java @@ -26,8 +26,6 @@ import java.util.ArrayList; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -49,9 +47,6 @@ public class HibernateStudentAssetDao extends AbstractHibernateDao implements StudentAssetDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java index 5a7882a3d4..27236c39e2 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java @@ -27,8 +27,6 @@ import java.util.List; import java.util.Set; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -54,9 +52,6 @@ public class HibernateStudentWorkDao extends AbstractHibernateDao implements StudentWorkDao { - @PersistenceContext - private EntityManager entityManager; - @Override protected String getFindAllQuery() { return null; diff --git a/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java b/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java index b311554da5..1dde0e40b6 100644 --- a/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java +++ b/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java @@ -27,8 +27,6 @@ import java.util.List; import java.util.Set; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -53,9 +51,6 @@ public class HibernateWorkgroupDao extends AbstractHibernateDao implements WorkgroupDao { - @PersistenceContext - private EntityManager entityManager; - private static final String FIND_ALL_QUERY = "from WorkgroupImpl"; @Override From e3a460adee5c9d66d8b347c0e19a88c52eb76778 Mon Sep 17 00:00:00 2001 From: Hiroki Terashima Date: Tue, 30 Sep 2025 09:18:07 -0700 Subject: [PATCH 3/4] Remove HibernateTemplate dependency from AbstractHibernateDao --- .../achievement/HibernateAchievementDao.java | 5 ---- .../wise5/impl/HibernateAnnotationDao.java | 5 ---- .../impl/HibernateStudentAttendanceDao.java | 5 ---- .../impl/HibernateAclEntryDao.java | 14 ++------- .../impl/HibernateAclSidDao.java | 7 ----- .../impl/HibernateAclTargetObjectDao.java | 7 ----- .../HibernateAclTargetObjectIdentityDao.java | 7 ----- .../impl/HibernateGrantedAuthorityDao.java | 7 ----- .../impl/HibernateUserDetailsDao.java | 7 ----- .../dao/group/impl/HibernateGroupDao.java | 13 +------- .../portal/dao/impl/AbstractHibernateDao.java | 30 +++++++------------ .../newsitem/impl/HibernateNewsItemDao.java | 7 ----- .../impl/HibernateNotificationDao.java | 5 ---- .../peergroup/impl/HibernatePeerGroupDao.java | 5 ---- .../impl/HibernatePeerGroupingDao.java | 5 ---- .../dao/portal/impl/HibernatePortalDao.java | 13 -------- .../impl/HibernatePortalStatisticsDao.java | 5 ---- .../dao/project/impl/HibernateProjectDao.java | 19 ------------ .../dao/project/impl/HibernateTagDao.java | 7 ----- .../portal/dao/run/impl/HibernateRunDao.java | 7 ----- .../impl/HibernateVLEStatisticsDao.java | 5 ---- .../status/impl/HibernateRunStatusDao.java | 5 ---- .../impl/HibernateStudentStatusDao.java | 5 ---- .../dao/user/impl/HibernateUserDao.java | 7 ----- .../usertags/impl/HibernateUserTagsDao.java | 7 ----- .../dao/work/impl/HibernateEventDao.java | 5 ---- .../work/impl/HibernateNotebookItemDao.java | 5 ---- .../work/impl/HibernateStudentAssetDao.java | 5 ---- .../work/impl/HibernateStudentWorkDao.java | 5 ---- .../workgroup/impl/HibernateWorkgroupDao.java | 7 ----- .../admin/FindProjectRunsController.java | 5 ++-- .../wise/portal/service/run/RunService.java | 8 ----- .../service/run/impl/RunServiceImpl.java | 7 ----- .../service/run/impl/RunServiceImplTest.java | 10 ------- 34 files changed, 17 insertions(+), 249 deletions(-) diff --git a/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java b/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java index b6a5b9d3e1..cd7fdce396 100644 --- a/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java +++ b/src/main/java/org/wise/portal/dao/achievement/HibernateAchievementDao.java @@ -75,11 +75,6 @@ public List getAchievementsByParams(Integer id, Run run, Workgroup return (List) (Object) query.getResultList(); } - @Override - protected String getFindAllQuery() { - return null; - } - @Override protected Class getDataObjectClass() { return Achievement.class; diff --git a/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java b/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java index c24e9aa3a8..8f8a929578 100644 --- a/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java +++ b/src/main/java/org/wise/portal/dao/annotation/wise5/impl/HibernateAnnotationDao.java @@ -26,11 +26,6 @@ public class HibernateAnnotationDao extends AbstractHibernateDao implements AnnotationDao { - @Override - protected String getFindAllQuery() { - return null; - } - @Override protected Class getDataObjectClass() { return null; diff --git a/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java b/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java index 34d12fd0a7..d82c7745a3 100644 --- a/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java +++ b/src/main/java/org/wise/portal/dao/attendance/impl/HibernateStudentAttendanceDao.java @@ -90,9 +90,4 @@ private void roundDownCalendar(Calendar c, int timeUnit) { protected Class getDataObjectClass() { return null; } - - @Override - protected String getFindAllQuery() { - return null; - } } diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclEntryDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclEntryDao.java index fa9edb979d..86a0c711b8 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclEntryDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclEntryDao.java @@ -32,10 +32,8 @@ * @author Cynick Young */ @Repository -public class HibernateAclEntryDao extends AbstractHibernateDao implements - AclEntryDao { - - private static final String FIND_ALL_QUERY = "from PersistentAclEntry"; +public class HibernateAclEntryDao extends AbstractHibernateDao + implements AclEntryDao { /** * @see org.wise.portal.dao.impl.AbstractHibernateDao#getDataObjectClass() @@ -44,12 +42,4 @@ public class HibernateAclEntryDao extends AbstractHibernateDao getDataObjectClass() { return PersistentAclEntry.class; } - - /** - * @see org.wise.portal.dao.impl.AbstractHibernateDao#getFindAllQuery() - */ - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } } diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java index 1430ca977b..4a1efb1bbb 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclSidDao.java @@ -42,18 +42,11 @@ public class HibernateAclSidDao extends AbstractHibernateDao implements AclSidDao { - private static final String FIND_ALL_QUERY = "from PersistentAclSid"; - @Override protected Class getDataObjectClass() { return PersistentAclSid.class; } - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } - public MutableAclSid retrieveBySidName(String sidName) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(PersistentAclSid.class); diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java index 01283f3ab0..b2a122999c 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectDao.java @@ -42,18 +42,11 @@ public class HibernateAclTargetObjectDao extends AbstractHibernateDao implements AclTargetObjectDao { - private static final String FIND_ALL_QUERY = "from PersistentAclTargetObject"; - @Override protected Class getDataObjectClass() { return PersistentAclTargetObject.class; } - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } - public MutableAclTargetObject retrieveByClassname(String classname) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(PersistentAclTargetObject.class); diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java index 83fb891a01..be8abef90b 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateAclTargetObjectIdentityDao.java @@ -48,8 +48,6 @@ public class HibernateAclTargetObjectIdentityDao extends AbstractHibernateDao implements AclTargetObjectIdentityDao { - private static final String FIND_ALL_QUERY = "from PersistentAclTargetObjectIdentity"; - public MutableAclTargetObjectIdentity retrieveByObjectIdentity(ObjectIdentity objectIdentity) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb @@ -85,9 +83,4 @@ public MutableAclTargetObjectIdentity[] findChildren(ObjectIdentity parentIdenti protected Class getDataObjectClass() { return PersistentAclTargetObjectIdentity.class; } - - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } } diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java index 07789f8a91..a1da37e8db 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateGrantedAuthorityDao.java @@ -41,8 +41,6 @@ public class HibernateGrantedAuthorityDao extends AbstractHibernateDao implements GrantedAuthorityDao { - private static final String FIND_ALL_QUERY = "from PersistentGrantedAuthority"; - public MutableGrantedAuthority retrieveByName(String authority) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(PersistentGrantedAuthority.class); @@ -58,11 +56,6 @@ public boolean hasRole(String authority) { return (this.retrieveByName(authority) != null); } - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } - @Override protected Class getDataObjectClass() { return PersistentGrantedAuthority.class; diff --git a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java index d79d031cb4..36e3c3026b 100644 --- a/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java +++ b/src/main/java/org/wise/portal/dao/authentication/impl/HibernateUserDetailsDao.java @@ -45,8 +45,6 @@ public class HibernateUserDetailsDao extends AbstractHibernateDao implements UserDetailsDao { - private static final String FIND_ALL_QUERY = "from PersistentUserDetails"; - public PersistentUserDetails retrieveByName(String username) { CriteriaBuilder cb = getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(PersistentUserDetails.class); @@ -103,11 +101,6 @@ public boolean hasUsername(String username) { return this.retrieveByName(username) != null; } - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } - @Override protected Class getDataObjectClass() { return PersistentUserDetails.class; diff --git a/src/main/java/org/wise/portal/dao/group/impl/HibernateGroupDao.java b/src/main/java/org/wise/portal/dao/group/impl/HibernateGroupDao.java index b72a1c13eb..47921f08d9 100644 --- a/src/main/java/org/wise/portal/dao/group/impl/HibernateGroupDao.java +++ b/src/main/java/org/wise/portal/dao/group/impl/HibernateGroupDao.java @@ -33,18 +33,7 @@ * @author Hiroki Terashima */ @Repository -public class HibernateGroupDao extends AbstractHibernateDao implements - GroupDao { - - private static final String FIND_ALL_QUERY = "from PersistentGroup"; - - /** - * @see org.wise.portal.dao.impl.AbstractHibernateDao#getFindAllQuery() - */ - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } +public class HibernateGroupDao extends AbstractHibernateDao implements GroupDao { /** * @see org.wise.portal.dao.impl.AbstractHibernateDao#getDataObjectClass() diff --git a/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java b/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java index 0244398c64..2c0c532564 100644 --- a/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java +++ b/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java @@ -30,8 +30,8 @@ import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; -import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate5.support.HibernateDaoSupport; @@ -49,7 +49,7 @@ public abstract class AbstractHibernateDao extends HibernateDaoSupport implem protected EntityManager entityManager; @Resource - protected SessionFactory sessionFactory; + private SessionFactory sessionFactory; @Autowired @Transactional @@ -59,28 +59,30 @@ public void init() { @Transactional public void delete(T object) { - this.getHibernateTemplate().delete(object); + sessionFactory.getCurrentSession().delete(object); } @Transactional public void save(T object) { - this.getHibernateTemplate().saveOrUpdate(object); + sessionFactory.getCurrentSession().saveOrUpdate(object); } @SuppressWarnings("unchecked") public List getList() { - return (List) this.getHibernateTemplate().find(this.getFindAllQuery()); + CriteriaBuilder cb = getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(getDataObjectClass()); + cq.from(getDataObjectClass()); + return sessionFactory.getCurrentSession().createQuery(cq).getResultList(); } - @SuppressWarnings("unchecked") public T getById(Serializable id) throws ObjectNotFoundException { T object = null; try { if (id instanceof Integer) { - object = (T) this.getHibernateTemplate().get(this.getDataObjectClass(), + object = sessionFactory.getCurrentSession().get(this.getDataObjectClass(), Integer.valueOf(id.toString())); } else { - object = (T) this.getHibernateTemplate().get(this.getDataObjectClass(), + object = sessionFactory.getCurrentSession().get(this.getDataObjectClass(), Long.valueOf(id.toString())); } } catch (NumberFormatException e) { @@ -94,18 +96,8 @@ public T getById(Serializable id) throws ObjectNotFoundException { } protected CriteriaBuilder getCriteriaBuilder() { - Session session = sessionFactory.getCurrentSession(); - return session.getCriteriaBuilder(); + return sessionFactory.getCurrentSession().getCriteriaBuilder(); } - /** - * Gets a string that will perform a query to retrieve all available objects - * from the persistent data store. - * - * @return String query - */ - protected abstract String getFindAllQuery(); - protected abstract Class getDataObjectClass(); - } diff --git a/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java b/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java index 79bdcf4b51..464a31da18 100644 --- a/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java +++ b/src/main/java/org/wise/portal/dao/newsitem/impl/HibernateNewsItemDao.java @@ -43,13 +43,6 @@ public class HibernateNewsItemDao extends AbstractHibernateDao implements NewsItemDao { - private static final String FIND_ALL_QUERY = "from NewsItemImpl order by id desc"; - - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } - @Override protected Class getDataObjectClass() { return NewsItemImpl.class; diff --git a/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java b/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java index 16c878add8..7bccf918c5 100644 --- a/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java +++ b/src/main/java/org/wise/portal/dao/notification/impl/HibernateNotificationDao.java @@ -48,11 +48,6 @@ public class HibernateNotificationDao extends AbstractHibernateDao implements NotificationDao { - @Override - protected String getFindAllQuery() { - return null; - } - @Override protected Class getDataObjectClass() { return Notification.class; diff --git a/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java b/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java index bb3f51dc4a..3a98e28c5b 100644 --- a/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java +++ b/src/main/java/org/wise/portal/dao/peergroup/impl/HibernatePeerGroupDao.java @@ -53,11 +53,6 @@ public class HibernatePeerGroupDao extends AbstractHibernateDao implements PeerGroupDao { - @Override - protected String getFindAllQuery() { - return "from PeerGroupImpl"; - } - @Override protected Class getDataObjectClass() { return PeerGroupImpl.class; diff --git a/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java b/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java index 018590426a..f9b5f42327 100644 --- a/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java +++ b/src/main/java/org/wise/portal/dao/peergrouping/impl/HibernatePeerGroupingDao.java @@ -46,11 +46,6 @@ public class HibernatePeerGroupingDao extends AbstractHibernateDao implements PeerGroupingDao { - @Override - protected String getFindAllQuery() { - return "from PeerGroupingImpl"; - } - @Override protected Class getDataObjectClass() { return PeerGroupingImpl.class; diff --git a/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalDao.java b/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalDao.java index 1b7f3f80a0..2950388574 100644 --- a/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalDao.java +++ b/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalDao.java @@ -35,21 +35,8 @@ @Repository public class HibernatePortalDao extends AbstractHibernateDao implements PortalDao { - private static final String FIND_ALL_QUERY = "from PortalImpl"; - - /** - * @see org.wise.portal.dao.impl.AbstractHibernateDao#getDataObjectClass() - */ @Override protected Class getDataObjectClass() { return PortalImpl.class; } - - /** - * @see org.wise.portal.dao.impl.AbstractHibernateDao#getFindAllQuery() - */ - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } } diff --git a/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java b/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java index b101df5999..8fe1c83aa4 100644 --- a/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java +++ b/src/main/java/org/wise/portal/dao/portal/impl/HibernatePortalStatisticsDao.java @@ -45,11 +45,6 @@ protected Class getDataObjectClass() { return null; } - @Override - protected String getFindAllQuery() { - return null; - } - @SuppressWarnings("unchecked") public List getAllPortalStatistics() { CriteriaBuilder cb = getCriteriaBuilder(); diff --git a/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java b/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java index 84085c2c94..45d2439060 100644 --- a/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java +++ b/src/main/java/org/wise/portal/dao/project/impl/HibernateProjectDao.java @@ -55,13 +55,6 @@ public class HibernateProjectDao extends AbstractHibernateDao implements ProjectDao { - private static final String FIND_ALL_QUERY = "from ProjectImpl"; - - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } - @Override protected Class getDataObjectClass() { return ProjectImpl.class; @@ -110,18 +103,6 @@ public List getProjectListByUAR(User user, String role) { return (List) (Object) projectResultList; } - @SuppressWarnings("unchecked") - @Override - public List getList() { - CriteriaBuilder cb = getCriteriaBuilder(); - CriteriaQuery cq = cb.createQuery(ProjectImpl.class); - Root projectRoot = cq.from(ProjectImpl.class); - cq.select(projectRoot); - TypedQuery query = entityManager.createQuery(cq); - List projectResultList = query.getResultList(); - return (List) (Object) projectResultList; - } - @Override public Project getById(Serializable id) throws ObjectNotFoundException { CriteriaBuilder cb = getCriteriaBuilder(); diff --git a/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java b/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java index 5042f28bb9..03150a51b7 100644 --- a/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java +++ b/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java @@ -44,18 +44,11 @@ @Repository public class HibernateTagDao extends AbstractHibernateDao implements TagDao { - private static final String FIND_ALL_QUERY = "from TagImpl"; - @Override protected Class getDataObjectClass() { return TagImpl.class; } - @Override - protected String getFindAllQuery() { - return HibernateTagDao.FIND_ALL_QUERY; - } - /** * @see org.wise.portal.dao.project.TagDao#getTagByName(java.lang.String) */ diff --git a/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java b/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java index 65f2d79680..e546ae2a37 100644 --- a/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java +++ b/src/main/java/org/wise/portal/dao/run/impl/HibernateRunDao.java @@ -55,13 +55,6 @@ @Repository public class HibernateRunDao extends AbstractHibernateDao implements RunDao { - private static final String FIND_ALL_QUERY = "from RunImpl"; - - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } - @Override protected Class getDataObjectClass() { return RunImpl.class; diff --git a/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java b/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java index 5c979e838d..8ee2807530 100644 --- a/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java +++ b/src/main/java/org/wise/portal/dao/statistics/impl/HibernateVLEStatisticsDao.java @@ -41,11 +41,6 @@ public class HibernateVLEStatisticsDao extends AbstractHibernateDao implements VLEStatisticsDao { - @Override - protected String getFindAllQuery() { - return null; - } - @Override protected Class getDataObjectClass() { return null; diff --git a/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java b/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java index cf07dec5ad..c775bc71da 100644 --- a/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java +++ b/src/main/java/org/wise/portal/dao/status/impl/HibernateRunStatusDao.java @@ -38,11 +38,6 @@ public class HibernateRunStatusDao extends AbstractHibernateDao implements RunStatusDao { - @Override - protected String getFindAllQuery() { - return null; - } - @Override protected Class getDataObjectClass() { return null; diff --git a/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java b/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java index 40450fdbef..c2ad58f92b 100644 --- a/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java +++ b/src/main/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDao.java @@ -40,11 +40,6 @@ public class HibernateStudentStatusDao extends AbstractHibernateDao implements StudentStatusDao { - @Override - protected String getFindAllQuery() { - return null; - } - @Override protected Class getDataObjectClass() { return null; diff --git a/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java b/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java index ed0768219f..6a97b31d53 100644 --- a/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java +++ b/src/main/java/org/wise/portal/dao/user/impl/HibernateUserDao.java @@ -48,13 +48,6 @@ @Repository public class HibernateUserDao extends AbstractHibernateDao implements UserDao { - private static final String FIND_ALL_QUERY = "from UserImpl"; - - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } - @Override protected Class getDataObjectClass() { return UserImpl.class; diff --git a/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java b/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java index 4b41fcda1b..5ed73e5c0d 100644 --- a/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java +++ b/src/main/java/org/wise/portal/dao/usertags/impl/HibernateUserTagsDao.java @@ -20,13 +20,6 @@ public class HibernateUserTagsDao extends AbstractHibernateDao implements UserTagsDao { - private static final String FIND_ALL_QUERY = "from TagsImpl"; - - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } - @Override protected Class getDataObjectClass() { return UserTag.class; diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java index 5904225f3b..35dad70c21 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateEventDao.java @@ -49,11 +49,6 @@ @Repository public class HibernateEventDao extends AbstractHibernateDao implements EventDao { - @Override - protected String getFindAllQuery() { - return null; - } - @Override protected Class getDataObjectClass() { return Event.class; diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java index 096cd1638b..8e90c930c3 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateNotebookItemDao.java @@ -25,11 +25,6 @@ public class HibernateNotebookItemDao extends AbstractHibernateDao implements NotebookItemDao { - @Override - protected String getFindAllQuery() { - return null; - } - @Override protected Class getDataObjectClass() { return NotebookItem.class; diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java index 1e3c9aa5f8..9a2278f16e 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentAssetDao.java @@ -47,11 +47,6 @@ public class HibernateStudentAssetDao extends AbstractHibernateDao implements StudentAssetDao { - @Override - protected String getFindAllQuery() { - return null; - } - @Override protected Class getDataObjectClass() { return StudentAsset.class; diff --git a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java index 27236c39e2..79e3e9ff9a 100644 --- a/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java +++ b/src/main/java/org/wise/portal/dao/work/impl/HibernateStudentWorkDao.java @@ -52,11 +52,6 @@ public class HibernateStudentWorkDao extends AbstractHibernateDao implements StudentWorkDao { - @Override - protected String getFindAllQuery() { - return null; - } - @Override protected Class getDataObjectClass() { return StudentWork.class; diff --git a/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java b/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java index 1dde0e40b6..495806f941 100644 --- a/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java +++ b/src/main/java/org/wise/portal/dao/workgroup/impl/HibernateWorkgroupDao.java @@ -51,18 +51,11 @@ public class HibernateWorkgroupDao extends AbstractHibernateDao implements WorkgroupDao { - private static final String FIND_ALL_QUERY = "from WorkgroupImpl"; - @Override protected Class getDataObjectClass() { return WorkgroupImpl.class; } - @Override - protected String getFindAllQuery() { - return FIND_ALL_QUERY; - } - @SuppressWarnings("unchecked") public List getListByRunAndUser(Run run, User user) { CriteriaBuilder cb = getCriteriaBuilder(); diff --git a/src/main/java/org/wise/portal/presentation/web/controllers/admin/FindProjectRunsController.java b/src/main/java/org/wise/portal/presentation/web/controllers/admin/FindProjectRunsController.java index 0863cbf80b..d622f83e07 100644 --- a/src/main/java/org/wise/portal/presentation/web/controllers/admin/FindProjectRunsController.java +++ b/src/main/java/org/wise/portal/presentation/web/controllers/admin/FindProjectRunsController.java @@ -66,6 +66,7 @@ protected String findRun( if ("runId".equals(runLookupType)) { runList = getRunListByRunId(Long.parseLong(runLookupValue)); } else if ("projectId".equals(runLookupType)) { + // can be re-written using JPA? runList = getRunListByProjectId(Long.parseLong(runLookupValue)); } else if ("teacherUsername".equals(runLookupType)) { runList = getRunListByUsername(runLookupValue); @@ -88,7 +89,7 @@ private List getRunListByProjectId(Long projectId) { List runList = new ArrayList(); List run_list = runService.getAllRunList(); List projectCopies = projectService.getProjectCopies(projectId); - for (Run run: run_list) { + for (Run run : run_list) { if (run.getProject().getId().equals(projectId)) { runList.add(run); } else { @@ -124,7 +125,7 @@ private List getRunListByRunId(Long runId) { if (run != null) { runList.add(run); } - } catch(ObjectNotFoundException e) { + } catch (ObjectNotFoundException e) { e.printStackTrace(); } return runList; diff --git a/src/main/java/org/wise/portal/service/run/RunService.java b/src/main/java/org/wise/portal/service/run/RunService.java index e16c739989..ddb1302b02 100644 --- a/src/main/java/org/wise/portal/service/run/RunService.java +++ b/src/main/java/org/wise/portal/service/run/RunService.java @@ -89,14 +89,6 @@ Run createRun(Long projectId, User user, Set periodNames, boolean isSurv */ void startRun(Run run); - /** - * Retrieves a list of Run - * - * @return List of Run - */ - @Secured({ "ROLE_USER", "AFTER_ACL_COLLECTION_READ" }) - List getRunList(); - /** * Retrieves a list of Run that the specified user owns * diff --git a/src/main/java/org/wise/portal/service/run/impl/RunServiceImpl.java b/src/main/java/org/wise/portal/service/run/impl/RunServiceImpl.java index 0a7b473928..70f5dae547 100644 --- a/src/main/java/org/wise/portal/service/run/impl/RunServiceImpl.java +++ b/src/main/java/org/wise/portal/service/run/impl/RunServiceImpl.java @@ -125,13 +125,6 @@ public class RunServiceImpl implements RunService { @Autowired private PeerGroupingService peerGroupingService; - @Transactional(readOnly = true) - public List getRunList() { - // for some reason, runDao.getList returns all runs, when it should - // only return runs with the right privileges according to Acegi. - return runDao.getList(); - } - @Transactional(readOnly = true) public List getRunList(User user) { return runDao.getRunListByUser(user); diff --git a/src/test/java/org/wise/portal/service/run/impl/RunServiceImplTest.java b/src/test/java/org/wise/portal/service/run/impl/RunServiceImplTest.java index 29d17ebf48..8ebff6aa11 100644 --- a/src/test/java/org/wise/portal/service/run/impl/RunServiceImplTest.java +++ b/src/test/java/org/wise/portal/service/run/impl/RunServiceImplTest.java @@ -130,16 +130,6 @@ public void tearDown() { runParameters = null; } - @Test - public void getRunList_OneRunInDB_ShouldReturnOneRun() { - List expectedList = new LinkedList(); - expectedList.add(new RunImpl()); - expect(runDao.getList()).andReturn(expectedList); - replay(runDao); - assertEquals(expectedList, runService.getRunList()); - verify(runDao); - } - @Test public void getRunList_User_ShouldReturnRunsAccessibleByUser() { User user = new UserImpl(); From 4af434b72f39c4e8c91e858f5eb35bff2fe8636a Mon Sep 17 00:00:00 2001 From: Hiroki Terashima Date: Tue, 30 Sep 2025 14:36:18 -0700 Subject: [PATCH 4/4] Remove HibernateFlusher and HibernateDaoSupport dependency from unit tests --- .../portal/dao/impl/AbstractHibernateDao.java | 12 +- .../dao/project/impl/HibernateTagDao.java | 28 +- .../admin/FindProjectRunsController.java | 1 - .../dao/AbstractTransactionalDaoTests.java | 173 ++-- .../HibernateStudentUserDetailsDaoTest.java | 721 +++++++++-------- .../HibernateTeacherUserDetailsDaoTest.java | 740 +++++++++--------- .../dao/group/impl/HibernateGroupDaoTest.java | 24 +- .../project/impl/HibernateProjectDaoTest.java | 4 +- .../dao/run/impl/HibernateRunDaoTest.java | 4 +- .../impl/HibernateRunStatusDaoTest.java | 6 +- .../impl/HibernateStudentStatusDaoTest.java | 2 +- .../dao/work/impl/HibernateEventDaoTest.java | 2 +- .../junit/AbstractTransactionalDbTests.java | 13 +- .../wise/portal/junit/HibernateFlusher.java | 32 - 14 files changed, 842 insertions(+), 920 deletions(-) delete mode 100644 src/test/java/org/wise/portal/junit/HibernateFlusher.java diff --git a/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java b/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java index 2c0c532564..06a35de780 100644 --- a/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java +++ b/src/main/java/org/wise/portal/dao/impl/AbstractHibernateDao.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2008-2022 Regents of the University of California (Regents). + * Copyright (c) 2008-2025 Regents of the University of California (Regents). * Created by WISE, Graduate School of Education, University of California, Berkeley. * * This software is distributed under the GNU General Public License, v3, @@ -33,8 +33,6 @@ import javax.persistence.criteria.CriteriaQuery; import org.hibernate.SessionFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.orm.hibernate5.support.HibernateDaoSupport; import org.springframework.transaction.annotation.Transactional; import org.wise.portal.dao.ObjectNotFoundException; import org.wise.portal.dao.SimpleDao; @@ -43,7 +41,7 @@ * @author Cynick Young * @author Hiroki Terashima */ -public abstract class AbstractHibernateDao extends HibernateDaoSupport implements SimpleDao { +public abstract class AbstractHibernateDao implements SimpleDao { @PersistenceContext protected EntityManager entityManager; @@ -51,12 +49,6 @@ public abstract class AbstractHibernateDao extends HibernateDaoSupport implem @Resource private SessionFactory sessionFactory; - @Autowired - @Transactional - public void init() { - setSessionFactory(sessionFactory); - } - @Transactional public void delete(T object) { sessionFactory.getCurrentSession().delete(object); diff --git a/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java b/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java index 03150a51b7..27b3592706 100644 --- a/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java +++ b/src/main/java/org/wise/portal/dao/project/impl/HibernateTagDao.java @@ -24,6 +24,7 @@ package org.wise.portal.dao.project.impl; import java.util.List; +import java.util.Set; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; @@ -36,6 +37,7 @@ import org.wise.portal.dao.project.TagDao; import org.wise.portal.domain.Tag; import org.wise.portal.domain.impl.TagImpl; +import org.wise.portal.domain.project.impl.ProjectImpl; import org.wise.portal.domain.run.Run; /** @@ -54,9 +56,12 @@ protected Class getDataObjectClass() { */ @SuppressWarnings("unchecked") public Tag getTagByName(String name) { - List tags = (List) this.getHibernateTemplate() - .find("select tag from TagImpl tag where tag.name='" + name + "'"); - + CriteriaBuilder cb = getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(TagImpl.class); + Root tagRoot = cq.from(TagImpl.class); + cq.select(tagRoot).where(cb.equal(tagRoot.get("name"), name)); + TypedQuery query = entityManager.createQuery(cq); + List tags = query.getResultList(); if (tags.size() == 0) { return null; } else { @@ -64,16 +69,15 @@ public Tag getTagByName(String name) { } } - /** - * - * @param tagId - */ - @SuppressWarnings("unchecked") public void removeIfOrphaned(Integer tagId) { - List projects = (List) this.getHibernateTemplate() - .find("select project from ProjectImpl project inner join project.tags tag where tag.id=" - + tagId); - + CriteriaBuilder cb = getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(ProjectImpl.class); + Root projectRoot = cq.from(ProjectImpl.class); + Root tagRoot = cq.from(TagImpl.class); + cq.select(projectRoot).where(cb.and(cb.equal(tagRoot.get("id"), tagId), + cb.isMember(tagRoot, projectRoot.> get("tags")))).distinct(true); + TypedQuery query = entityManager.createQuery(cq); + List projects = query.getResultList(); if (projects.size() == 0) { try { Tag tag = this.getById(tagId); diff --git a/src/main/java/org/wise/portal/presentation/web/controllers/admin/FindProjectRunsController.java b/src/main/java/org/wise/portal/presentation/web/controllers/admin/FindProjectRunsController.java index d622f83e07..f86767870e 100644 --- a/src/main/java/org/wise/portal/presentation/web/controllers/admin/FindProjectRunsController.java +++ b/src/main/java/org/wise/portal/presentation/web/controllers/admin/FindProjectRunsController.java @@ -66,7 +66,6 @@ protected String findRun( if ("runId".equals(runLookupType)) { runList = getRunListByRunId(Long.parseLong(runLookupValue)); } else if ("projectId".equals(runLookupType)) { - // can be re-written using JPA? runList = getRunListByProjectId(Long.parseLong(runLookupValue)); } else if ("teacherUsername".equals(runLookupType)) { runList = getRunListByUsername(runLookupValue); diff --git a/src/test/java/org/wise/portal/dao/AbstractTransactionalDaoTests.java b/src/test/java/org/wise/portal/dao/AbstractTransactionalDaoTests.java index d9ed993339..e6ea0b4383 100644 --- a/src/test/java/org/wise/portal/dao/AbstractTransactionalDaoTests.java +++ b/src/test/java/org/wise/portal/dao/AbstractTransactionalDaoTests.java @@ -30,91 +30,90 @@ * @author Cynick Young */ public abstract class AbstractTransactionalDaoTests, OBJECT extends Persistable> - extends AbstractTransactionalDbTests { - - protected DAO dao; - - protected OBJECT dataObject; - - private static final Long NON_EXISTENT_PK = new Long(666); - - /** - * Test method for - * {@link org.wise.portal.dao.impl.AbstractHibernateDao#delete(java.lang.Object)}. - */ - public void testDelete() { - this.verifyDataStoreIsEmpty(); - - // save and delete the data object using dao - this.dao.save(this.dataObject); - this.dao.delete(this.dataObject); - - // * NOTE * must flush to test delete - // see http://forum.springframework.org/showthread.php?t=18263 for - // explanation - this.toilet.flush(); - - this.verifyDataStoreIsEmpty(); - } - - /** - * Test method for - * {@link org.wise.portal.dao.impl.AbstractHibernateDao#save(java.lang.Object)}. - */ - public abstract void testSave(); - - /** - * Test method for - * {@link org.wise.portal.dao.impl.AbstractHibernateDao#getList()}. - */ - public void testGetList() { - this.verifyDataStoreIsEmpty(); - List actualList = this.dao.getList(); - assertTrue(actualList.isEmpty()); - - this.dao.save(this.dataObject); - List expectedList = this.retrieveDataObjectListFromDb(); - assertEquals(1, expectedList.size()); - - actualList = this.dao.getList(); - assertEquals(1, actualList.size()); - assertEquals(this.dataObject, actualList.get(0)); - } - - /** - * Test method for - * {@link org.wise.portal.dao.impl.AbstractHibernateDao#getById(java.lang.Long)}. - */ - public void testGetById() throws Exception { - this.verifyDataStoreIsEmpty(); - try { - this.dao.getById(NON_EXISTENT_PK); - fail("Expected ObjectNotFoundException"); - } catch (ObjectNotFoundException e) { - - } - this.dao.save(this.dataObject); - List actualList = this.dao.getList(); - OBJECT actualObject = actualList.get(0); - - assertTrue(this.dataObject.getId() instanceof Long); - assertEquals(actualObject, this.dao.getById((Long) this.dataObject - .getId())); - } - - protected final void verifyDataStoreIsEmpty() { - assertTrue(retrieveDataObjectListFromDb().isEmpty()); - } - - protected abstract List retrieveDataObjectListFromDb(); - - /** - * @see org.springframework.test.AbstractTransactionalSpringContextTests#onTearDownAfterTransaction() - */ - @Override - protected void onTearDownAfterTransaction() throws Exception { - super.onTearDownAfterTransaction(); - this.dao = null; - this.dataObject = null; - } + extends AbstractTransactionalDbTests { + + protected DAO dao; + + protected OBJECT dataObject; + + private static final Long NON_EXISTENT_PK = new Long(666); + + /** + * Test method for + * {@link org.wise.portal.dao.impl.AbstractHibernateDao#delete(java.lang.Object)}. + */ + public void testDelete() { + this.verifyDataStoreIsEmpty(); + + // save and delete the data object using dao + this.dao.save(this.dataObject); + this.dao.delete(this.dataObject); + + // * NOTE * must flush to test delete + // see http://forum.springframework.org/showthread.php?t=18263 for + // explanation + this.flush(); + + this.verifyDataStoreIsEmpty(); + } + + /** + * Test method for + * {@link org.wise.portal.dao.impl.AbstractHibernateDao#save(java.lang.Object)}. + */ + public abstract void testSave(); + + /** + * Test method for + * {@link org.wise.portal.dao.impl.AbstractHibernateDao#getList()}. + */ + public void testGetList() { + this.verifyDataStoreIsEmpty(); + List actualList = this.dao.getList(); + assertTrue(actualList.isEmpty()); + + this.dao.save(this.dataObject); + List expectedList = this.retrieveDataObjectListFromDb(); + assertEquals(1, expectedList.size()); + + actualList = this.dao.getList(); + assertEquals(1, actualList.size()); + assertEquals(this.dataObject, actualList.get(0)); + } + + /** + * Test method for + * {@link org.wise.portal.dao.impl.AbstractHibernateDao#getById(java.lang.Long)}. + */ + public void testGetById() throws Exception { + this.verifyDataStoreIsEmpty(); + try { + this.dao.getById(NON_EXISTENT_PK); + fail("Expected ObjectNotFoundException"); + } catch (ObjectNotFoundException e) { + + } + this.dao.save(this.dataObject); + List actualList = this.dao.getList(); + OBJECT actualObject = actualList.get(0); + + assertTrue(this.dataObject.getId() instanceof Long); + assertEquals(actualObject, this.dao.getById((Long) this.dataObject.getId())); + } + + protected final void verifyDataStoreIsEmpty() { + assertTrue(retrieveDataObjectListFromDb().isEmpty()); + } + + protected abstract List retrieveDataObjectListFromDb(); + + /** + * @see org.springframework.test.AbstractTransactionalSpringContextTests#onTearDownAfterTransaction() + */ + @Override + protected void onTearDownAfterTransaction() throws Exception { + super.onTearDownAfterTransaction(); + this.dao = null; + this.dataObject = null; + } } diff --git a/src/test/java/org/wise/portal/dao/authentication/impl/HibernateStudentUserDetailsDaoTest.java b/src/test/java/org/wise/portal/dao/authentication/impl/HibernateStudentUserDetailsDaoTest.java index 9ad2bab37d..27df45134e 100644 --- a/src/test/java/org/wise/portal/dao/authentication/impl/HibernateStudentUserDetailsDaoTest.java +++ b/src/test/java/org/wise/portal/dao/authentication/impl/HibernateStudentUserDetailsDaoTest.java @@ -41,387 +41,374 @@ /** * Test class for HibernateUserDetailsDao using StudentUserDetails Domain Object - * + * * @author Hiroki Terashima - * + * * @version $Id: HibernateStudentUserDetailsDaoTest.java 230 2007-03-25 * 01:10:39Z hiroki $ */ -public class HibernateStudentUserDetailsDaoTest extends - AbstractTransactionalDbTests { +public class HibernateStudentUserDetailsDaoTest extends AbstractTransactionalDbTests { + + private static final Integer DEFAULT_NUMBEROFLOGINS = new Integer(3); + + private static final String DEFAULT_ROLE_1 = "default_role_1"; - private static final Integer DEFAULT_NUMBEROFLOGINS = new Integer(3); + private static final String DEFAULT_ROLE_2 = "default_role_2"; - private static final String DEFAULT_ROLE_1 = "default_role_1"; + private static final String DEFAULT_ROLE_3 = "default_role_3"; - private static final String DEFAULT_ROLE_2 = "default_role_2"; + private static final String DEFAULT_USERNAME = "HirokiT619"; - private static final String DEFAULT_ROLE_3 = "default_role_3"; + private static final String DEFAULT_PASSWORD = "my secret"; - private static final String DEFAULT_USERNAME = "HirokiT619"; + private static final String DEFAULT_EMAIL = "billy@bob.com"; - private static final String DEFAULT_PASSWORD = "my secret"; + private static final String DEFAULT_FIRSTNAME = "Hiroki"; - private static final String DEFAULT_EMAIL = "billy@bob.com"; + private static final String DEFAULT_LASTNAME = "Terashima"; - private static final String DEFAULT_FIRSTNAME = "Hiroki"; + private static final Date DEFAULT_SIGNUPDATE = Calendar.getInstance().getTime(); - private static final String DEFAULT_LASTNAME = "Terashima"; + private static final String USERNAME_NOT_IN_DB = "blah"; - private static final Date DEFAULT_SIGNUPDATE = Calendar.getInstance() - .getTime(); + private static final Gender DEFAULT_GENDER = Gender.MALE; - private static final String USERNAME_NOT_IN_DB = "blah"; + private static final Date DEFAULT_BIRTHDAY = new Date(123456); + + private static final String DEFAULT_ACCOUNT_QUESTION = "what is your middle name"; - private static final Gender DEFAULT_GENDER = Gender.MALE; - - private static final Date DEFAULT_BIRTHDAY = new Date(123456); - - private static final String DEFAULT_ACCOUNT_QUESTION = "what is your middle name"; - - private static final String DEFAULT_ACCOUNT_ANSWER = "john"; - - private MutableGrantedAuthority role1; - - private MutableGrantedAuthority role2; - - private MutableGrantedAuthority role3; - - private StudentUserDetails defaultUserDetails; - - private HibernateGrantedAuthorityDao authorityDao; - - private HibernateUserDetailsDao userDetailsDao; - - /** - * @param authorityDao - * the authorityDao to set - */ - public void setAuthorityDao(HibernateGrantedAuthorityDao authorityDao) { - this.authorityDao = authorityDao; - } - - /** - * @param userDetailsDao - * the userDetailsDao to set - */ - public void setUserDetailsDao(HibernateUserDetailsDao userDetailsDao) { - this.userDetailsDao = userDetailsDao; - } - - /** - * @param defaultUserDetails - * the defaultUserDetails to set - */ - public void setDefaultUserDetails(StudentUserDetails defaultUserDetails) { - this.defaultUserDetails = defaultUserDetails; - } - - /** - * @param role3 - * the role3 to set - */ - public void setRole3(MutableGrantedAuthority role3) { - this.role3 = role3; - } - - /** - * @param role1 - * the role1 to set - */ - public void setRole1(MutableGrantedAuthority role1) { - this.role1 = role1; - } - - /** - * @param role2 - * the role2 to set - */ - public void setRole2(MutableGrantedAuthority role2) { - this.role2 = role2; - } - - /** - * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onSetUpBeforeTransaction() - */ - @Override - protected void onSetUpBeforeTransaction() throws Exception { - super.onSetUpBeforeTransaction(); - - this.role1.setAuthority(DEFAULT_ROLE_1); - this.role2.setAuthority(DEFAULT_ROLE_2); - this.role3.setAuthority(DEFAULT_ROLE_3); - - this.defaultUserDetails.setUsername(DEFAULT_USERNAME); - this.defaultUserDetails.setPassword(DEFAULT_PASSWORD); - this.defaultUserDetails.setEmailAddress(DEFAULT_EMAIL); - this.defaultUserDetails.setAuthorities(new GrantedAuthority[] { - this.role1, this.role2, this.role3 }); - this.defaultUserDetails.setFirstname(DEFAULT_FIRSTNAME); - this.defaultUserDetails.setLastname(DEFAULT_LASTNAME); - this.defaultUserDetails.setSignupdate(DEFAULT_SIGNUPDATE); - this.defaultUserDetails.setGender(DEFAULT_GENDER); - this.defaultUserDetails.setBirthday(DEFAULT_BIRTHDAY); - this.defaultUserDetails.setNumberOfLogins(DEFAULT_NUMBEROFLOGINS); - this.defaultUserDetails.setAccountQuestion(DEFAULT_ACCOUNT_QUESTION); - this.defaultUserDetails.setAccountAnswer(DEFAULT_ACCOUNT_ANSWER); - } - - /** - * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onSetUpInTransaction() - */ - @Override - protected void onSetUpInTransaction() throws Exception { - super.onSetUpInTransaction(); - this.authorityDao.save(this.role1); - this.authorityDao.save(this.role2); - this.authorityDao.save(this.role3); - } - - /** - * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onTearDownAfterTransaction() - */ - @Override - protected void onTearDownAfterTransaction() throws Exception { - super.onTearDownAfterTransaction(); - this.role1 = null; - this.role2 = null; - this.role3 = null; - this.defaultUserDetails = null; - } - - public void testSave() { - verifyUserandJoinTablesAreEmpty(); - - this.userDetailsDao.save(this.defaultUserDetails); - // flush is required to cascade the join table for some reason - this.toilet.flush(); - - // verify data store contains saved data using direct jdbc retrieval - // (not dao) - assertEquals(1, retrieveUsersTableFromDb().size()); - assertEquals(3, retrieveUsersRolesTableFromDb().size()); - List actualList = retrieveUserDetailsListFromDb(); - assertEquals(3, actualList.size()); - - List defaultRolesList = new LinkedList(); - defaultRolesList.add(DEFAULT_ROLE_1); - defaultRolesList.add(DEFAULT_ROLE_2); - defaultRolesList.add(DEFAULT_ROLE_3); - - for (int i = 0; i < actualList.size(); i++) { - Map actualUserDetailsMap = (Map) actualList.get(i); - // *NOTE* the keys in the map are all in UPPERCASE! - String actualValue = (String) actualUserDetailsMap - .get(PersistentUserDetails.COLUMN_NAME_USERNAME - .toUpperCase()); - assertEquals(DEFAULT_USERNAME, actualValue); - actualValue = (String) actualUserDetailsMap - .get(PersistentUserDetails.COLUMN_NAME_PASSWORD - .toUpperCase()); - assertEquals(DEFAULT_PASSWORD, actualValue); - actualValue = (String) actualUserDetailsMap - .get(PersistentUserDetails.COLUMN_NAME_EMAIL_ADDRESS - .toUpperCase()); - assertEquals(DEFAULT_EMAIL, actualValue); - actualValue = (String) actualUserDetailsMap - .get(StudentUserDetails.COLUMN_NAME_FIRSTNAME.toUpperCase()); - assertEquals(DEFAULT_FIRSTNAME, actualValue); - actualValue = (String) actualUserDetailsMap - .get(StudentUserDetails.COLUMN_NAME_LASTNAME.toUpperCase()); - assertEquals(DEFAULT_LASTNAME, actualValue); - actualValue = String.valueOf(actualUserDetailsMap - .get(StudentUserDetails.COLUMN_NAME_GENDER.toUpperCase())); - assertEquals(String.valueOf(DEFAULT_GENDER.ordinal()), actualValue); - long actualTime = ((java.sql.Timestamp) actualUserDetailsMap - .get(StudentUserDetails.COLUMN_NAME_BIRTHDAY)).getTime(); - assertEquals(DEFAULT_BIRTHDAY.getTime(), actualTime); - actualValue = (String) actualUserDetailsMap - .get(PersistentGrantedAuthority.COLUMN_NAME_ROLE - .toUpperCase()); - assertTrue(defaultRolesList.contains(actualValue)); - defaultRolesList.remove(actualValue); - actualValue = (String) actualUserDetailsMap - .get(StudentUserDetails.COLUMN_NAME_ACCOUNTQUESTION - .toUpperCase()); - assertEquals(DEFAULT_ACCOUNT_QUESTION, actualValue); - actualValue = (String) actualUserDetailsMap - .get(StudentUserDetails.COLUMN_NAME_ACCOUNTANSWER - .toUpperCase()); - assertEquals(DEFAULT_ACCOUNT_ANSWER, actualValue); - } - - StudentUserDetails duplicateUserDetails = (StudentUserDetails) this.applicationContext - .getBean("studentUserDetails"); - duplicateUserDetails.setUsername(DEFAULT_USERNAME); - duplicateUserDetails.setPassword(DEFAULT_PASSWORD); - try { - this.userDetailsDao.save(duplicateUserDetails); - fail("DataIntegrityViolationException expected"); - } catch (DataIntegrityViolationException expected) { - } - - StudentUserDetails emptyUserDetails = (StudentUserDetails) this.applicationContext - .getBean("studentUserDetails"); - try { - this.userDetailsDao.save(emptyUserDetails); - fail("expected DataIntegrityViolationException"); - } catch (DataIntegrityViolationException expected) { - } - - StudentUserDetails partiallyEmptyUserDetails = (StudentUserDetails) this.applicationContext - .getBean("studentUserDetails"); - partiallyEmptyUserDetails.setUsername(DEFAULT_USERNAME); - try { - this.userDetailsDao.save(partiallyEmptyUserDetails); - fail("expected DataIntegrityViolationException"); - } catch (DataIntegrityViolationException expected) { - } - - partiallyEmptyUserDetails = (StudentUserDetails) this.applicationContext - .getBean("studentUserDetails"); - partiallyEmptyUserDetails.setPassword(DEFAULT_PASSWORD); - try { - this.userDetailsDao.save(partiallyEmptyUserDetails); - fail("expected DataIntegrityViolationException"); - } catch (DataIntegrityViolationException expected) { - } - } - - public void testEmptySignupdate() { - verifyUserandJoinTablesAreEmpty(); - - this.defaultUserDetails.setSignupdate(null); - - try { - this.userDetailsDao.save(this.defaultUserDetails); - fail("expected DataIntegrityViolationException"); - } catch (DataIntegrityViolationException expected) { - } - } - - public void testDelete() { - this.verifyUserandJoinTablesAreEmpty(); - - this.userDetailsDao.save(this.defaultUserDetails); - // flush is required to cascade the join table for some reason - this.toilet.flush(); - - this.userDetailsDao.delete(this.defaultUserDetails); - this.toilet.flush(); - - this.verifyUserandJoinTablesAreEmpty(); - - List actualList = this.retrieveRolesTableFromDb(); - assertEquals(3, actualList.size()); - - List defaultRolesList = new LinkedList(); - defaultRolesList.add(DEFAULT_ROLE_1); - defaultRolesList.add(DEFAULT_ROLE_2); - defaultRolesList.add(DEFAULT_ROLE_3); - - for (int i = 0; i < actualList.size(); i++) { - Map actualRolesMap = (Map) actualList.get(i); - // *NOTE* the keys in the map are all in UPPERCASE! - String actualValue = (String) actualRolesMap - .get(PersistentGrantedAuthority.COLUMN_NAME_ROLE - .toUpperCase()); - assertTrue(defaultRolesList.contains(actualValue)); - defaultRolesList.remove(actualValue); - } - } - - public void testRetrieveByUsername() { - this.verifyUserandJoinTablesAreEmpty(); - - this.userDetailsDao.save(this.defaultUserDetails); - // flush is required to cascade the join table for some reason - this.toilet.flush(); - - // get user details record from persistent store and confirm it is - // complete - StudentUserDetails userDetails = (StudentUserDetails) this.userDetailsDao - .retrieveByName(DEFAULT_USERNAME); - - assertEquals(DEFAULT_USERNAME, userDetails.getUsername()); - assertEquals(DEFAULT_PASSWORD, userDetails.getPassword()); - assertEquals(DEFAULT_EMAIL, userDetails.getEmailAddress()); - assertEquals(DEFAULT_FIRSTNAME, userDetails.getFirstname()); - assertEquals(DEFAULT_LASTNAME, userDetails.getLastname()); - - List defaultRolesList = new LinkedList(); - defaultRolesList.add(DEFAULT_ROLE_1); - defaultRolesList.add(DEFAULT_ROLE_2); - defaultRolesList.add(DEFAULT_ROLE_3); - - Collection grantedAuthorities = userDetails.getAuthorities(); - for (GrantedAuthority grantedAuthority : grantedAuthorities) { - String role = grantedAuthority.getAuthority(); - assertTrue(defaultRolesList.contains(role)); - defaultRolesList.remove(role); - } - - // choose random non-existent user name and try to retrieve - assertNull(this.userDetailsDao.retrieveByName(USERNAME_NOT_IN_DB)); - } - - public void testHasUsername() { - this.userDetailsDao.save(this.defaultUserDetails); - assertTrue(this.userDetailsDao.hasUsername(DEFAULT_USERNAME)); - assertFalse(this.userDetailsDao.hasUsername(USERNAME_NOT_IN_DB)); - } - - public void testGetById() throws Exception { - this.userDetailsDao.save(this.defaultUserDetails); - StudentUserDetails userDetails = (StudentUserDetails) this.userDetailsDao - .getById(this.defaultUserDetails.getId()); - assertNotNull(userDetails); - assertEquals(userDetails.getUsername(), DEFAULT_USERNAME); - - Long userIdNotInDb = new Long(100); - try { - userDetails = (StudentUserDetails) this.userDetailsDao - .getById(userIdNotInDb); - fail("Expected ObjectNotFoundException"); - } catch (ObjectNotFoundException e) { - } - } - - private void verifyUserandJoinTablesAreEmpty() { - assertTrue(this.retrieveUserDetailsListFromDb().isEmpty()); - assertTrue(this.retrieveUsersRolesTableFromDb().isEmpty()); - } - - private List retrieveUserDetailsListFromDb() { - return this.jdbcTemplate.queryForList("SELECT * FROM " - + PersistentUserDetails.DATA_STORE_NAME + ", " - + StudentUserDetails.DATA_STORE_NAME + ", " - + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME - + ", " + PersistentGrantedAuthority.DATA_STORE_NAME + " WHERE " - + PersistentUserDetails.DATA_STORE_NAME + ".id = " - + StudentUserDetails.DATA_STORE_NAME + ".id " + "AND " - + StudentUserDetails.DATA_STORE_NAME + ".id = " - + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME + "." - + PersistentUserDetails.USER_DETAILS_JOIN_COLUMN_NAME + " AND " - + PersistentGrantedAuthority.DATA_STORE_NAME + ".id = " - + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME + "." - + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_COLUMN_NAME, - (Object[]) null); - } - - private List retrieveUsersTableFromDb() { - return this.jdbcTemplate.queryForList("select * from " - + PersistentUserDetails.DATA_STORE_NAME, (Object[]) null); - } - - private List retrieveRolesTableFromDb() { - return this.jdbcTemplate.queryForList("SELECT * FROM " - + PersistentGrantedAuthority.DATA_STORE_NAME, (Object[]) null); - } - - private List retrieveUsersRolesTableFromDb() { - return this.jdbcTemplate.queryForList("SELECT * FROM " - + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME, - (Object[]) null); - } + private static final String DEFAULT_ACCOUNT_ANSWER = "john"; + + private MutableGrantedAuthority role1; + + private MutableGrantedAuthority role2; + + private MutableGrantedAuthority role3; + + private StudentUserDetails defaultUserDetails; + + private HibernateGrantedAuthorityDao authorityDao; + + private HibernateUserDetailsDao userDetailsDao; + + /** + * @param authorityDao + * the authorityDao to set + */ + public void setAuthorityDao(HibernateGrantedAuthorityDao authorityDao) { + this.authorityDao = authorityDao; + } + + /** + * @param userDetailsDao + * the userDetailsDao to set + */ + public void setUserDetailsDao(HibernateUserDetailsDao userDetailsDao) { + this.userDetailsDao = userDetailsDao; + } + + /** + * @param defaultUserDetails + * the defaultUserDetails to set + */ + public void setDefaultUserDetails(StudentUserDetails defaultUserDetails) { + this.defaultUserDetails = defaultUserDetails; + } + + /** + * @param role3 + * the role3 to set + */ + public void setRole3(MutableGrantedAuthority role3) { + this.role3 = role3; + } + + /** + * @param role1 + * the role1 to set + */ + public void setRole1(MutableGrantedAuthority role1) { + this.role1 = role1; + } + + /** + * @param role2 + * the role2 to set + */ + public void setRole2(MutableGrantedAuthority role2) { + this.role2 = role2; + } + + /** + * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onSetUpBeforeTransaction() + */ + @Override + protected void onSetUpBeforeTransaction() throws Exception { + super.onSetUpBeforeTransaction(); + + this.role1.setAuthority(DEFAULT_ROLE_1); + this.role2.setAuthority(DEFAULT_ROLE_2); + this.role3.setAuthority(DEFAULT_ROLE_3); + + this.defaultUserDetails.setUsername(DEFAULT_USERNAME); + this.defaultUserDetails.setPassword(DEFAULT_PASSWORD); + this.defaultUserDetails.setEmailAddress(DEFAULT_EMAIL); + this.defaultUserDetails + .setAuthorities(new GrantedAuthority[] { this.role1, this.role2, this.role3 }); + this.defaultUserDetails.setFirstname(DEFAULT_FIRSTNAME); + this.defaultUserDetails.setLastname(DEFAULT_LASTNAME); + this.defaultUserDetails.setSignupdate(DEFAULT_SIGNUPDATE); + this.defaultUserDetails.setGender(DEFAULT_GENDER); + this.defaultUserDetails.setBirthday(DEFAULT_BIRTHDAY); + this.defaultUserDetails.setNumberOfLogins(DEFAULT_NUMBEROFLOGINS); + this.defaultUserDetails.setAccountQuestion(DEFAULT_ACCOUNT_QUESTION); + this.defaultUserDetails.setAccountAnswer(DEFAULT_ACCOUNT_ANSWER); + } + + /** + * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onSetUpInTransaction() + */ + @Override + protected void onSetUpInTransaction() throws Exception { + super.onSetUpInTransaction(); + this.authorityDao.save(this.role1); + this.authorityDao.save(this.role2); + this.authorityDao.save(this.role3); + } + + /** + * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onTearDownAfterTransaction() + */ + @Override + protected void onTearDownAfterTransaction() throws Exception { + super.onTearDownAfterTransaction(); + this.role1 = null; + this.role2 = null; + this.role3 = null; + this.defaultUserDetails = null; + } + + public void testSave() { + verifyUserandJoinTablesAreEmpty(); + + this.userDetailsDao.save(this.defaultUserDetails); + // flush is required to cascade the join table for some reason + flush(); + + // verify data store contains saved data using direct jdbc retrieval + // (not dao) + assertEquals(1, retrieveUsersTableFromDb().size()); + assertEquals(3, retrieveUsersRolesTableFromDb().size()); + List actualList = retrieveUserDetailsListFromDb(); + assertEquals(3, actualList.size()); + + List defaultRolesList = new LinkedList(); + defaultRolesList.add(DEFAULT_ROLE_1); + defaultRolesList.add(DEFAULT_ROLE_2); + defaultRolesList.add(DEFAULT_ROLE_3); + + for (int i = 0; i < actualList.size(); i++) { + Map actualUserDetailsMap = (Map) actualList.get(i); + // *NOTE* the keys in the map are all in UPPERCASE! + String actualValue = (String) actualUserDetailsMap + .get(PersistentUserDetails.COLUMN_NAME_USERNAME.toUpperCase()); + assertEquals(DEFAULT_USERNAME, actualValue); + actualValue = (String) actualUserDetailsMap + .get(PersistentUserDetails.COLUMN_NAME_PASSWORD.toUpperCase()); + assertEquals(DEFAULT_PASSWORD, actualValue); + actualValue = (String) actualUserDetailsMap + .get(PersistentUserDetails.COLUMN_NAME_EMAIL_ADDRESS.toUpperCase()); + assertEquals(DEFAULT_EMAIL, actualValue); + actualValue = (String) actualUserDetailsMap + .get(StudentUserDetails.COLUMN_NAME_FIRSTNAME.toUpperCase()); + assertEquals(DEFAULT_FIRSTNAME, actualValue); + actualValue = (String) actualUserDetailsMap + .get(StudentUserDetails.COLUMN_NAME_LASTNAME.toUpperCase()); + assertEquals(DEFAULT_LASTNAME, actualValue); + actualValue = String + .valueOf(actualUserDetailsMap.get(StudentUserDetails.COLUMN_NAME_GENDER.toUpperCase())); + assertEquals(String.valueOf(DEFAULT_GENDER.ordinal()), actualValue); + long actualTime = ((java.sql.Timestamp) actualUserDetailsMap + .get(StudentUserDetails.COLUMN_NAME_BIRTHDAY)).getTime(); + assertEquals(DEFAULT_BIRTHDAY.getTime(), actualTime); + actualValue = (String) actualUserDetailsMap + .get(PersistentGrantedAuthority.COLUMN_NAME_ROLE.toUpperCase()); + assertTrue(defaultRolesList.contains(actualValue)); + defaultRolesList.remove(actualValue); + actualValue = (String) actualUserDetailsMap + .get(StudentUserDetails.COLUMN_NAME_ACCOUNTQUESTION.toUpperCase()); + assertEquals(DEFAULT_ACCOUNT_QUESTION, actualValue); + actualValue = (String) actualUserDetailsMap + .get(StudentUserDetails.COLUMN_NAME_ACCOUNTANSWER.toUpperCase()); + assertEquals(DEFAULT_ACCOUNT_ANSWER, actualValue); + } + + StudentUserDetails duplicateUserDetails = (StudentUserDetails) this.applicationContext + .getBean("studentUserDetails"); + duplicateUserDetails.setUsername(DEFAULT_USERNAME); + duplicateUserDetails.setPassword(DEFAULT_PASSWORD); + try { + this.userDetailsDao.save(duplicateUserDetails); + fail("DataIntegrityViolationException expected"); + } catch (DataIntegrityViolationException expected) { + } + + StudentUserDetails emptyUserDetails = (StudentUserDetails) this.applicationContext + .getBean("studentUserDetails"); + try { + this.userDetailsDao.save(emptyUserDetails); + fail("expected DataIntegrityViolationException"); + } catch (DataIntegrityViolationException expected) { + } + + StudentUserDetails partiallyEmptyUserDetails = (StudentUserDetails) this.applicationContext + .getBean("studentUserDetails"); + partiallyEmptyUserDetails.setUsername(DEFAULT_USERNAME); + try { + this.userDetailsDao.save(partiallyEmptyUserDetails); + fail("expected DataIntegrityViolationException"); + } catch (DataIntegrityViolationException expected) { + } + + partiallyEmptyUserDetails = (StudentUserDetails) this.applicationContext + .getBean("studentUserDetails"); + partiallyEmptyUserDetails.setPassword(DEFAULT_PASSWORD); + try { + this.userDetailsDao.save(partiallyEmptyUserDetails); + fail("expected DataIntegrityViolationException"); + } catch (DataIntegrityViolationException expected) { + } + } + + public void testEmptySignupdate() { + verifyUserandJoinTablesAreEmpty(); + + this.defaultUserDetails.setSignupdate(null); + + try { + this.userDetailsDao.save(this.defaultUserDetails); + fail("expected DataIntegrityViolationException"); + } catch (DataIntegrityViolationException expected) { + } + } + + public void testDelete() { + this.verifyUserandJoinTablesAreEmpty(); + + this.userDetailsDao.save(this.defaultUserDetails); + // flush is required to cascade the join table for some reason + this.flush(); + + this.userDetailsDao.delete(this.defaultUserDetails); + this.flush(); + + this.verifyUserandJoinTablesAreEmpty(); + + List actualList = this.retrieveRolesTableFromDb(); + assertEquals(3, actualList.size()); + + List defaultRolesList = new LinkedList(); + defaultRolesList.add(DEFAULT_ROLE_1); + defaultRolesList.add(DEFAULT_ROLE_2); + defaultRolesList.add(DEFAULT_ROLE_3); + + for (int i = 0; i < actualList.size(); i++) { + Map actualRolesMap = (Map) actualList.get(i); + // *NOTE* the keys in the map are all in UPPERCASE! + String actualValue = (String) actualRolesMap + .get(PersistentGrantedAuthority.COLUMN_NAME_ROLE.toUpperCase()); + assertTrue(defaultRolesList.contains(actualValue)); + defaultRolesList.remove(actualValue); + } + } + + public void testRetrieveByUsername() { + this.verifyUserandJoinTablesAreEmpty(); + + this.userDetailsDao.save(this.defaultUserDetails); + // flush is required to cascade the join table for some reason + this.flush(); + + // get user details record from persistent store and confirm it is + // complete + StudentUserDetails userDetails = (StudentUserDetails) this.userDetailsDao + .retrieveByName(DEFAULT_USERNAME); + + assertEquals(DEFAULT_USERNAME, userDetails.getUsername()); + assertEquals(DEFAULT_PASSWORD, userDetails.getPassword()); + assertEquals(DEFAULT_EMAIL, userDetails.getEmailAddress()); + assertEquals(DEFAULT_FIRSTNAME, userDetails.getFirstname()); + assertEquals(DEFAULT_LASTNAME, userDetails.getLastname()); + + List defaultRolesList = new LinkedList(); + defaultRolesList.add(DEFAULT_ROLE_1); + defaultRolesList.add(DEFAULT_ROLE_2); + defaultRolesList.add(DEFAULT_ROLE_3); + + Collection grantedAuthorities = userDetails.getAuthorities(); + for (GrantedAuthority grantedAuthority : grantedAuthorities) { + String role = grantedAuthority.getAuthority(); + assertTrue(defaultRolesList.contains(role)); + defaultRolesList.remove(role); + } + + // choose random non-existent user name and try to retrieve + assertNull(this.userDetailsDao.retrieveByName(USERNAME_NOT_IN_DB)); + } + + public void testHasUsername() { + this.userDetailsDao.save(this.defaultUserDetails); + assertTrue(this.userDetailsDao.hasUsername(DEFAULT_USERNAME)); + assertFalse(this.userDetailsDao.hasUsername(USERNAME_NOT_IN_DB)); + } + + public void testGetById() throws Exception { + this.userDetailsDao.save(this.defaultUserDetails); + StudentUserDetails userDetails = (StudentUserDetails) this.userDetailsDao + .getById(this.defaultUserDetails.getId()); + assertNotNull(userDetails); + assertEquals(userDetails.getUsername(), DEFAULT_USERNAME); + + Long userIdNotInDb = new Long(100); + try { + userDetails = (StudentUserDetails) this.userDetailsDao.getById(userIdNotInDb); + fail("Expected ObjectNotFoundException"); + } catch (ObjectNotFoundException e) { + } + } + + private void verifyUserandJoinTablesAreEmpty() { + assertTrue(this.retrieveUserDetailsListFromDb().isEmpty()); + assertTrue(this.retrieveUsersRolesTableFromDb().isEmpty()); + } + + private List retrieveUserDetailsListFromDb() { + return this.jdbcTemplate.queryForList("SELECT * FROM " + PersistentUserDetails.DATA_STORE_NAME + + ", " + StudentUserDetails.DATA_STORE_NAME + ", " + + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME + ", " + + PersistentGrantedAuthority.DATA_STORE_NAME + " WHERE " + + PersistentUserDetails.DATA_STORE_NAME + ".id = " + StudentUserDetails.DATA_STORE_NAME + + ".id " + "AND " + StudentUserDetails.DATA_STORE_NAME + ".id = " + + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME + "." + + PersistentUserDetails.USER_DETAILS_JOIN_COLUMN_NAME + " AND " + + PersistentGrantedAuthority.DATA_STORE_NAME + ".id = " + + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME + "." + + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_COLUMN_NAME, (Object[]) null); + } + + private List retrieveUsersTableFromDb() { + return this.jdbcTemplate.queryForList("select * from " + PersistentUserDetails.DATA_STORE_NAME, + (Object[]) null); + } + + private List retrieveRolesTableFromDb() { + return this.jdbcTemplate.queryForList( + "SELECT * FROM " + PersistentGrantedAuthority.DATA_STORE_NAME, (Object[]) null); + } + + private List retrieveUsersRolesTableFromDb() { + return this.jdbcTemplate.queryForList( + "SELECT * FROM " + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME, + (Object[]) null); + } } diff --git a/src/test/java/org/wise/portal/dao/authentication/impl/HibernateTeacherUserDetailsDaoTest.java b/src/test/java/org/wise/portal/dao/authentication/impl/HibernateTeacherUserDetailsDaoTest.java index 8088ee3385..f041912188 100644 --- a/src/test/java/org/wise/portal/dao/authentication/impl/HibernateTeacherUserDetailsDaoTest.java +++ b/src/test/java/org/wise/portal/dao/authentication/impl/HibernateTeacherUserDetailsDaoTest.java @@ -41,404 +41,388 @@ /** * Test class for HibernateUserDetailsDao using StudentUserDetails Domain Object - * + * * @author Hiroki Terashima - * + * * @version $Id: HibernateTeacherUserDetailsDaoTest.java 232 2007-03-28 * 07:06:14Z hiroki $ - * + * */ -public class HibernateTeacherUserDetailsDaoTest extends - AbstractTransactionalDbTests { +public class HibernateTeacherUserDetailsDaoTest extends AbstractTransactionalDbTests { + + private static final String DEFAULT_ROLE_1 = "default_role_1"; + + private static final String DEFAULT_ROLE_2 = "default_role_2"; - private static final String DEFAULT_ROLE_1 = "default_role_1"; + private static final String DEFAULT_ROLE_3 = "default_role_3"; - private static final String DEFAULT_ROLE_2 = "default_role_2"; + private static final String DEFAULT_USERNAME = "HirokiT619"; - private static final String DEFAULT_ROLE_3 = "default_role_3"; + private static final String DEFAULT_PASSWORD = "my secret"; - private static final String DEFAULT_USERNAME = "HirokiT619"; + private static final String DEFAULT_EMAIL = "billy@bob.com"; - private static final String DEFAULT_PASSWORD = "my secret"; + private static final String DEFAULT_FIRSTNAME = "Hiroki"; - private static final String DEFAULT_EMAIL = "billy@bob.com"; + private static final String DEFAULT_LASTNAME = "Terashima"; - private static final String DEFAULT_FIRSTNAME = "Hiroki"; + private static final Date DEFAULT_SIGNUPDATE = Calendar.getInstance().getTime(); - private static final String DEFAULT_LASTNAME = "Terashima"; + private static final String DEFAULT_CITY = "Huntington Beach"; - private static final Date DEFAULT_SIGNUPDATE = Calendar.getInstance() - .getTime(); + private static final String USERNAME_NOT_IN_DB = "blah"; - private static final String DEFAULT_CITY = "Huntington Beach"; + private static final String DEFAULT_STATE = "CA"; - private static final String USERNAME_NOT_IN_DB = "blah"; + private static final String DEFAULT_COUNTRY = "U.S.A."; - private static final String DEFAULT_STATE = "CA"; + private static final String[] DEFAULT_CURRICULUMSUBJECTS = { "Biology", "Chemistry" }; - private static final String DEFAULT_COUNTRY = "U.S.A."; + private static final Schoollevel DEFAULT_SCHOOLLEVEL = Schoollevel.MIDDLE_SCHOOL; - private static final String[] DEFAULT_CURRICULUMSUBJECTS = { "Biology", - "Chemistry" }; + private static final String DEFAULT_SCHOOLNAME = "Dwyer Middle School"; - private static final Schoollevel DEFAULT_SCHOOLLEVEL = Schoollevel.MIDDLE_SCHOOL; + private MutableGrantedAuthority role1; - private static final String DEFAULT_SCHOOLNAME = "Dwyer Middle School"; - - private MutableGrantedAuthority role1; + private MutableGrantedAuthority role2; - private MutableGrantedAuthority role2; - - private MutableGrantedAuthority role3; - - private TeacherUserDetails defaultUserDetails; - - private HibernateGrantedAuthorityDao authorityDao; - - private HibernateUserDetailsDao userDetailsDao; - - private Integer DEFAULT_NUMBEROFLOGINS = new Integer(7); - - /** - * @param authorityDao - * the authorityDao to set - */ - public void setAuthorityDao(HibernateGrantedAuthorityDao authorityDao) { - this.authorityDao = authorityDao; - } - - /** - * @param userDetailsDao - * the userDetailsDao to set - */ - public void setUserDetailsDao(HibernateUserDetailsDao userDetailsDao) { - this.userDetailsDao = userDetailsDao; - } - - /** - * @param defaultUserDetails - * the defaultUserDetails to set - */ - public void setDefaultUserDetails(TeacherUserDetails defaultUserDetails) { - this.defaultUserDetails = defaultUserDetails; - } - - /** - * @param role3 - * the role3 to set - */ - public void setRole3(MutableGrantedAuthority role3) { - this.role3 = role3; - } - - /** - * @param role1 - * the role1 to set - */ - public void setRole1(MutableGrantedAuthority role1) { - this.role1 = role1; - } - - /** - * @param role2 - * the role2 to set - */ - public void setRole2(MutableGrantedAuthority role2) { - this.role2 = role2; - } - - /** - * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onSetUpBeforeTransaction() - */ - @Override - protected void onSetUpBeforeTransaction() throws Exception { - super.onSetUpBeforeTransaction(); - - this.role1.setAuthority(DEFAULT_ROLE_1); - this.role2.setAuthority(DEFAULT_ROLE_2); - this.role3.setAuthority(DEFAULT_ROLE_3); - - this.defaultUserDetails.setUsername(DEFAULT_USERNAME); - this.defaultUserDetails.setPassword(DEFAULT_PASSWORD); - this.defaultUserDetails.setEmailAddress(DEFAULT_EMAIL); - this.defaultUserDetails.setAuthorities(new GrantedAuthority[] { - this.role1, this.role2, this.role3 }); - this.defaultUserDetails.setFirstname(DEFAULT_FIRSTNAME); - this.defaultUserDetails.setLastname(DEFAULT_LASTNAME); - this.defaultUserDetails.setSignupdate(DEFAULT_SIGNUPDATE); - this.defaultUserDetails.setCity(DEFAULT_CITY); - this.defaultUserDetails.setState(DEFAULT_STATE); - this.defaultUserDetails.setCountry(DEFAULT_COUNTRY); - this.defaultUserDetails - .setCurriculumsubjects(DEFAULT_CURRICULUMSUBJECTS); - this.defaultUserDetails.setSchoollevel(DEFAULT_SCHOOLLEVEL); - this.defaultUserDetails.setSchoolname(DEFAULT_SCHOOLNAME); - this.defaultUserDetails.setNumberOfLogins(DEFAULT_NUMBEROFLOGINS); - } - - /** - * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onSetUpInTransaction() - */ - @Override - protected void onSetUpInTransaction() throws Exception { - super.onSetUpInTransaction(); - this.authorityDao.save(this.role1); - this.authorityDao.save(this.role2); - this.authorityDao.save(this.role3); - } - - /** - * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onTearDownAfterTransaction() - */ - @Override - protected void onTearDownAfterTransaction() throws Exception { - super.onTearDownAfterTransaction(); - this.role1 = null; - this.role2 = null; - this.role3 = null; - this.defaultUserDetails = null; - } - - public void testSave() { - verifyUserandJoinTablesAreEmpty(); - - this.userDetailsDao.save(this.defaultUserDetails); - // flush is required to cascade the join table for some reason - this.toilet.flush(); - - // verify data store contains saved data using direct jdbc retrieval - // (not dao) - assertEquals(1, retrieveUsersTableFromDb().size()); - assertEquals(3, retrieveUsersRolesTableFromDb().size()); - List actualList = retrieveUserDetailsListFromDb(); - assertEquals(3, actualList.size()); - - List defaultRolesList = new LinkedList(); - defaultRolesList.add(DEFAULT_ROLE_1); - defaultRolesList.add(DEFAULT_ROLE_2); - defaultRolesList.add(DEFAULT_ROLE_3); - - for (int i = 0; i < actualList.size(); i++) { - Map actualUserDetailsMap = (Map) actualList.get(i); - // *NOTE* the keys in the map are all in UPPERCASE! - String actualValue = (String) actualUserDetailsMap - .get(PersistentUserDetails.COLUMN_NAME_USERNAME - .toUpperCase()); - assertEquals(DEFAULT_USERNAME, actualValue); - actualValue = (String) actualUserDetailsMap - .get(PersistentUserDetails.COLUMN_NAME_PASSWORD - .toUpperCase()); - assertEquals(DEFAULT_PASSWORD, actualValue); - actualValue = (String) actualUserDetailsMap - .get(PersistentUserDetails.COLUMN_NAME_EMAIL_ADDRESS - .toUpperCase()); - assertEquals(DEFAULT_EMAIL, actualValue); - actualValue = (String) actualUserDetailsMap - .get(TeacherUserDetails.COLUMN_NAME_FIRSTNAME.toUpperCase()); - assertEquals(DEFAULT_FIRSTNAME, actualValue); - actualValue = (String) actualUserDetailsMap - .get(TeacherUserDetails.COLUMN_NAME_LASTNAME.toUpperCase()); - assertEquals(DEFAULT_LASTNAME, actualValue); - actualValue = (String) actualUserDetailsMap - .get(TeacherUserDetails.COLUMN_NAME_CITY.toUpperCase()); - assertEquals(DEFAULT_CITY, actualValue); - actualValue = (String) actualUserDetailsMap - .get(TeacherUserDetails.COLUMN_NAME_COUNTRY.toUpperCase()); - assertEquals(DEFAULT_COUNTRY, actualValue); - actualValue = String.valueOf(actualUserDetailsMap - .get(TeacherUserDetails.COLUMN_NAME_SCHOOLLEVEL - .toUpperCase())); - assertEquals(String.valueOf(DEFAULT_SCHOOLLEVEL.ordinal()), - actualValue); - actualValue = (String) actualUserDetailsMap - .get(TeacherUserDetails.COLUMN_NAME_SCHOOLNAME - .toUpperCase()); - assertEquals(DEFAULT_SCHOOLNAME, actualValue); - - // TODO HT: varBinary (JDBC type) -> String [] (Java) - // String[] actualStrings = (String[]) actualUserDetailsMap - // .get(TeacherUserDetails.COLUMN_NAME_CURRICULUMSUBJECTS.toUpperCase()); - // assertEquals(DEFAULT_CURRICULUMSUBJECTS, actualStrings); - - actualValue = (String) actualUserDetailsMap - .get(PersistentGrantedAuthority.COLUMN_NAME_ROLE - .toUpperCase()); - assertTrue(defaultRolesList.contains(actualValue)); - defaultRolesList.remove(actualValue); - } - - TeacherUserDetails duplicateUserDetails = (TeacherUserDetails) this.applicationContext - .getBean("teacherUserDetails"); - duplicateUserDetails.setUsername(DEFAULT_USERNAME); - duplicateUserDetails.setPassword(DEFAULT_PASSWORD); - try { - this.userDetailsDao.save(duplicateUserDetails); - fail("DataIntegrityViolationException expected"); - } catch (DataIntegrityViolationException expected) { - } - - TeacherUserDetails emptyUserDetails = (TeacherUserDetails) this.applicationContext - .getBean("teacherUserDetails"); - try { - this.userDetailsDao.save(emptyUserDetails); - fail("expected DataIntegrityViolationException"); - } catch (DataIntegrityViolationException expected) { - } - - TeacherUserDetails partiallyEmptyUserDetails = (TeacherUserDetails) this.applicationContext - .getBean("teacherUserDetails"); - partiallyEmptyUserDetails.setUsername(DEFAULT_USERNAME); - try { - this.userDetailsDao.save(partiallyEmptyUserDetails); - fail("expected DataIntegrityViolationException"); - } catch (DataIntegrityViolationException expected) { - } - - partiallyEmptyUserDetails = (TeacherUserDetails) this.applicationContext - .getBean("teacherUserDetails"); - partiallyEmptyUserDetails.setPassword(DEFAULT_PASSWORD); - try { - this.userDetailsDao.save(partiallyEmptyUserDetails); - fail("expected DataIntegrityViolationException"); - } catch (DataIntegrityViolationException expected) { - } - } - - public void testEmptySignupdate() { - verifyUserandJoinTablesAreEmpty(); - - this.defaultUserDetails.setSignupdate(null); - - try { - this.userDetailsDao.save(this.defaultUserDetails); - fail("expected DataIntegrityViolationException"); - } catch (DataIntegrityViolationException expected) { - } - } - - public void testDelete() { - this.verifyUserandJoinTablesAreEmpty(); - - this.userDetailsDao.save(this.defaultUserDetails); - // flush is required to cascade the join table for some reason - this.toilet.flush(); - - this.userDetailsDao.delete(this.defaultUserDetails); - this.toilet.flush(); - - this.verifyUserandJoinTablesAreEmpty(); - - List actualList = this.retrieveRolesTableFromDb(); - assertEquals(3, actualList.size()); - - List defaultRolesList = new LinkedList(); - defaultRolesList.add(DEFAULT_ROLE_1); - defaultRolesList.add(DEFAULT_ROLE_2); - defaultRolesList.add(DEFAULT_ROLE_3); - - for (int i = 0; i < actualList.size(); i++) { - Map actualRolesMap = (Map) actualList.get(i); - // *NOTE* the keys in the map are all in UPPERCASE! - String actualValue = (String) actualRolesMap - .get(PersistentGrantedAuthority.COLUMN_NAME_ROLE - .toUpperCase()); - assertTrue(defaultRolesList.contains(actualValue)); - defaultRolesList.remove(actualValue); - } - } - - public void testRetrieveByUsername() { - this.verifyUserandJoinTablesAreEmpty(); - - this.userDetailsDao.save(this.defaultUserDetails); - // flush is required to cascade the join table for some reason - this.toilet.flush(); - - // get user details record from persistent store and confirm it is - // complete - TeacherUserDetails userDetails = (TeacherUserDetails) this.userDetailsDao - .retrieveByName(DEFAULT_USERNAME); - - assertEquals(DEFAULT_USERNAME, userDetails.getUsername()); - assertEquals(DEFAULT_PASSWORD, userDetails.getPassword()); - assertEquals(DEFAULT_EMAIL, userDetails.getEmailAddress()); - assertEquals(DEFAULT_FIRSTNAME, userDetails.getFirstname()); - assertEquals(DEFAULT_LASTNAME, userDetails.getLastname()); - - List defaultRolesList = new LinkedList(); - defaultRolesList.add(DEFAULT_ROLE_1); - defaultRolesList.add(DEFAULT_ROLE_2); - defaultRolesList.add(DEFAULT_ROLE_3); - - Collection grantedAuthorities = userDetails.getAuthorities(); - for (GrantedAuthority grantedAuthority : grantedAuthorities) { - String role = grantedAuthority.getAuthority(); - assertTrue(defaultRolesList.contains(role)); - defaultRolesList.remove(role); - } - - // choose random non-existent user name and try to retrieve - assertNull(this.userDetailsDao.retrieveByName(USERNAME_NOT_IN_DB)); - } - - public void testHasUsername() { - this.userDetailsDao.save(this.defaultUserDetails); - assertTrue(this.userDetailsDao.hasUsername(DEFAULT_USERNAME)); - assertFalse(this.userDetailsDao.hasUsername(USERNAME_NOT_IN_DB)); - } - - public void testGetById() throws Exception { - this.userDetailsDao.save(this.defaultUserDetails); - TeacherUserDetails userDetails = (TeacherUserDetails) this.userDetailsDao - .getById(this.defaultUserDetails.getId()); - assertNotNull(userDetails); - assertEquals(userDetails.getUsername(), DEFAULT_USERNAME); - - Long userIdNotInDb = new Long(100); - try { - userDetails = (TeacherUserDetails) this.userDetailsDao - .getById(userIdNotInDb); - fail("Expected ObjectNotFoundException"); - } catch (ObjectNotFoundException e) { - } - } - - private void verifyUserandJoinTablesAreEmpty() { - assertTrue(this.retrieveUserDetailsListFromDb().isEmpty()); - assertTrue(this.retrieveUsersRolesTableFromDb().isEmpty()); - } - - private List retrieveUserDetailsListFromDb() { - return this.jdbcTemplate.queryForList("SELECT * FROM " - + PersistentUserDetails.DATA_STORE_NAME + ", " - + TeacherUserDetails.DATA_STORE_NAME + ", " - + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME - + ", " + PersistentGrantedAuthority.DATA_STORE_NAME + " WHERE " - + PersistentUserDetails.DATA_STORE_NAME + ".id = " - + TeacherUserDetails.DATA_STORE_NAME + ".id " + "AND " - + TeacherUserDetails.DATA_STORE_NAME + ".id = " - + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME + "." - + PersistentUserDetails.USER_DETAILS_JOIN_COLUMN_NAME + " AND " - + PersistentGrantedAuthority.DATA_STORE_NAME + ".id = " - + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME + "." - + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_COLUMN_NAME, - (Object[]) null); - } - - private List retrieveUsersTableFromDb() { - return this.jdbcTemplate.queryForList("SELECT * FROM " - + PersistentUserDetails.DATA_STORE_NAME, (Object[]) null); - } - - private List retrieveRolesTableFromDb() { - return this.jdbcTemplate.queryForList("SELECT * FROM " - + PersistentGrantedAuthority.DATA_STORE_NAME, (Object[]) null); - } - - private List retrieveUsersRolesTableFromDb() { - return this.jdbcTemplate.queryForList("SELECT * FROM " - + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME, - (Object[]) null); - } + private MutableGrantedAuthority role3; + + private TeacherUserDetails defaultUserDetails; + + private HibernateGrantedAuthorityDao authorityDao; + + private HibernateUserDetailsDao userDetailsDao; + + private Integer DEFAULT_NUMBEROFLOGINS = new Integer(7); + + /** + * @param authorityDao + * the authorityDao to set + */ + public void setAuthorityDao(HibernateGrantedAuthorityDao authorityDao) { + this.authorityDao = authorityDao; + } + + /** + * @param userDetailsDao + * the userDetailsDao to set + */ + public void setUserDetailsDao(HibernateUserDetailsDao userDetailsDao) { + this.userDetailsDao = userDetailsDao; + } + + /** + * @param defaultUserDetails + * the defaultUserDetails to set + */ + public void setDefaultUserDetails(TeacherUserDetails defaultUserDetails) { + this.defaultUserDetails = defaultUserDetails; + } + + /** + * @param role3 + * the role3 to set + */ + public void setRole3(MutableGrantedAuthority role3) { + this.role3 = role3; + } + + /** + * @param role1 + * the role1 to set + */ + public void setRole1(MutableGrantedAuthority role1) { + this.role1 = role1; + } + + /** + * @param role2 + * the role2 to set + */ + public void setRole2(MutableGrantedAuthority role2) { + this.role2 = role2; + } + + /** + * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onSetUpBeforeTransaction() + */ + @Override + protected void onSetUpBeforeTransaction() throws Exception { + super.onSetUpBeforeTransaction(); + + this.role1.setAuthority(DEFAULT_ROLE_1); + this.role2.setAuthority(DEFAULT_ROLE_2); + this.role3.setAuthority(DEFAULT_ROLE_3); + + this.defaultUserDetails.setUsername(DEFAULT_USERNAME); + this.defaultUserDetails.setPassword(DEFAULT_PASSWORD); + this.defaultUserDetails.setEmailAddress(DEFAULT_EMAIL); + this.defaultUserDetails + .setAuthorities(new GrantedAuthority[] { this.role1, this.role2, this.role3 }); + this.defaultUserDetails.setFirstname(DEFAULT_FIRSTNAME); + this.defaultUserDetails.setLastname(DEFAULT_LASTNAME); + this.defaultUserDetails.setSignupdate(DEFAULT_SIGNUPDATE); + this.defaultUserDetails.setCity(DEFAULT_CITY); + this.defaultUserDetails.setState(DEFAULT_STATE); + this.defaultUserDetails.setCountry(DEFAULT_COUNTRY); + this.defaultUserDetails.setCurriculumsubjects(DEFAULT_CURRICULUMSUBJECTS); + this.defaultUserDetails.setSchoollevel(DEFAULT_SCHOOLLEVEL); + this.defaultUserDetails.setSchoolname(DEFAULT_SCHOOLNAME); + this.defaultUserDetails.setNumberOfLogins(DEFAULT_NUMBEROFLOGINS); + } + + /** + * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onSetUpInTransaction() + */ + @Override + protected void onSetUpInTransaction() throws Exception { + super.onSetUpInTransaction(); + this.authorityDao.save(this.role1); + this.authorityDao.save(this.role2); + this.authorityDao.save(this.role3); + } + + /** + * @see net.sf.sail.webapp.junit.AbstractTransactionalDbTests#onTearDownAfterTransaction() + */ + @Override + protected void onTearDownAfterTransaction() throws Exception { + super.onTearDownAfterTransaction(); + this.role1 = null; + this.role2 = null; + this.role3 = null; + this.defaultUserDetails = null; + } + + public void testSave() { + verifyUserandJoinTablesAreEmpty(); + + this.userDetailsDao.save(this.defaultUserDetails); + // flush is required to cascade the join table for some reason + this.flush(); + + // verify data store contains saved data using direct jdbc retrieval + // (not dao) + assertEquals(1, retrieveUsersTableFromDb().size()); + assertEquals(3, retrieveUsersRolesTableFromDb().size()); + List actualList = retrieveUserDetailsListFromDb(); + assertEquals(3, actualList.size()); + + List defaultRolesList = new LinkedList(); + defaultRolesList.add(DEFAULT_ROLE_1); + defaultRolesList.add(DEFAULT_ROLE_2); + defaultRolesList.add(DEFAULT_ROLE_3); + + for (int i = 0; i < actualList.size(); i++) { + Map actualUserDetailsMap = (Map) actualList.get(i); + // *NOTE* the keys in the map are all in UPPERCASE! + String actualValue = (String) actualUserDetailsMap + .get(PersistentUserDetails.COLUMN_NAME_USERNAME.toUpperCase()); + assertEquals(DEFAULT_USERNAME, actualValue); + actualValue = (String) actualUserDetailsMap + .get(PersistentUserDetails.COLUMN_NAME_PASSWORD.toUpperCase()); + assertEquals(DEFAULT_PASSWORD, actualValue); + actualValue = (String) actualUserDetailsMap + .get(PersistentUserDetails.COLUMN_NAME_EMAIL_ADDRESS.toUpperCase()); + assertEquals(DEFAULT_EMAIL, actualValue); + actualValue = (String) actualUserDetailsMap + .get(TeacherUserDetails.COLUMN_NAME_FIRSTNAME.toUpperCase()); + assertEquals(DEFAULT_FIRSTNAME, actualValue); + actualValue = (String) actualUserDetailsMap + .get(TeacherUserDetails.COLUMN_NAME_LASTNAME.toUpperCase()); + assertEquals(DEFAULT_LASTNAME, actualValue); + actualValue = (String) actualUserDetailsMap + .get(TeacherUserDetails.COLUMN_NAME_CITY.toUpperCase()); + assertEquals(DEFAULT_CITY, actualValue); + actualValue = (String) actualUserDetailsMap + .get(TeacherUserDetails.COLUMN_NAME_COUNTRY.toUpperCase()); + assertEquals(DEFAULT_COUNTRY, actualValue); + actualValue = String.valueOf( + actualUserDetailsMap.get(TeacherUserDetails.COLUMN_NAME_SCHOOLLEVEL.toUpperCase())); + assertEquals(String.valueOf(DEFAULT_SCHOOLLEVEL.ordinal()), actualValue); + actualValue = (String) actualUserDetailsMap + .get(TeacherUserDetails.COLUMN_NAME_SCHOOLNAME.toUpperCase()); + assertEquals(DEFAULT_SCHOOLNAME, actualValue); + + // TODO HT: varBinary (JDBC type) -> String [] (Java) + // String[] actualStrings = (String[]) actualUserDetailsMap + // .get(TeacherUserDetails.COLUMN_NAME_CURRICULUMSUBJECTS.toUpperCase()); + // assertEquals(DEFAULT_CURRICULUMSUBJECTS, actualStrings); + + actualValue = (String) actualUserDetailsMap + .get(PersistentGrantedAuthority.COLUMN_NAME_ROLE.toUpperCase()); + assertTrue(defaultRolesList.contains(actualValue)); + defaultRolesList.remove(actualValue); + } + + TeacherUserDetails duplicateUserDetails = (TeacherUserDetails) this.applicationContext + .getBean("teacherUserDetails"); + duplicateUserDetails.setUsername(DEFAULT_USERNAME); + duplicateUserDetails.setPassword(DEFAULT_PASSWORD); + try { + this.userDetailsDao.save(duplicateUserDetails); + fail("DataIntegrityViolationException expected"); + } catch (DataIntegrityViolationException expected) { + } + + TeacherUserDetails emptyUserDetails = (TeacherUserDetails) this.applicationContext + .getBean("teacherUserDetails"); + try { + this.userDetailsDao.save(emptyUserDetails); + fail("expected DataIntegrityViolationException"); + } catch (DataIntegrityViolationException expected) { + } + + TeacherUserDetails partiallyEmptyUserDetails = (TeacherUserDetails) this.applicationContext + .getBean("teacherUserDetails"); + partiallyEmptyUserDetails.setUsername(DEFAULT_USERNAME); + try { + this.userDetailsDao.save(partiallyEmptyUserDetails); + fail("expected DataIntegrityViolationException"); + } catch (DataIntegrityViolationException expected) { + } + + partiallyEmptyUserDetails = (TeacherUserDetails) this.applicationContext + .getBean("teacherUserDetails"); + partiallyEmptyUserDetails.setPassword(DEFAULT_PASSWORD); + try { + this.userDetailsDao.save(partiallyEmptyUserDetails); + fail("expected DataIntegrityViolationException"); + } catch (DataIntegrityViolationException expected) { + } + } + + public void testEmptySignupdate() { + verifyUserandJoinTablesAreEmpty(); + + this.defaultUserDetails.setSignupdate(null); + + try { + this.userDetailsDao.save(this.defaultUserDetails); + fail("expected DataIntegrityViolationException"); + } catch (DataIntegrityViolationException expected) { + } + } + + public void testDelete() { + this.verifyUserandJoinTablesAreEmpty(); + + this.userDetailsDao.save(this.defaultUserDetails); + // flush is required to cascade the join table for some reason + this.flush(); + + this.userDetailsDao.delete(this.defaultUserDetails); + this.flush(); + + this.verifyUserandJoinTablesAreEmpty(); + + List actualList = this.retrieveRolesTableFromDb(); + assertEquals(3, actualList.size()); + + List defaultRolesList = new LinkedList(); + defaultRolesList.add(DEFAULT_ROLE_1); + defaultRolesList.add(DEFAULT_ROLE_2); + defaultRolesList.add(DEFAULT_ROLE_3); + + for (int i = 0; i < actualList.size(); i++) { + Map actualRolesMap = (Map) actualList.get(i); + // *NOTE* the keys in the map are all in UPPERCASE! + String actualValue = (String) actualRolesMap + .get(PersistentGrantedAuthority.COLUMN_NAME_ROLE.toUpperCase()); + assertTrue(defaultRolesList.contains(actualValue)); + defaultRolesList.remove(actualValue); + } + } + + public void testRetrieveByUsername() { + this.verifyUserandJoinTablesAreEmpty(); + + this.userDetailsDao.save(this.defaultUserDetails); + // flush is required to cascade the join table for some reason + this.flush(); + + // get user details record from persistent store and confirm it is + // complete + TeacherUserDetails userDetails = (TeacherUserDetails) this.userDetailsDao + .retrieveByName(DEFAULT_USERNAME); + + assertEquals(DEFAULT_USERNAME, userDetails.getUsername()); + assertEquals(DEFAULT_PASSWORD, userDetails.getPassword()); + assertEquals(DEFAULT_EMAIL, userDetails.getEmailAddress()); + assertEquals(DEFAULT_FIRSTNAME, userDetails.getFirstname()); + assertEquals(DEFAULT_LASTNAME, userDetails.getLastname()); + + List defaultRolesList = new LinkedList(); + defaultRolesList.add(DEFAULT_ROLE_1); + defaultRolesList.add(DEFAULT_ROLE_2); + defaultRolesList.add(DEFAULT_ROLE_3); + + Collection grantedAuthorities = userDetails.getAuthorities(); + for (GrantedAuthority grantedAuthority : grantedAuthorities) { + String role = grantedAuthority.getAuthority(); + assertTrue(defaultRolesList.contains(role)); + defaultRolesList.remove(role); + } + + // choose random non-existent user name and try to retrieve + assertNull(this.userDetailsDao.retrieveByName(USERNAME_NOT_IN_DB)); + } + + public void testHasUsername() { + this.userDetailsDao.save(this.defaultUserDetails); + assertTrue(this.userDetailsDao.hasUsername(DEFAULT_USERNAME)); + assertFalse(this.userDetailsDao.hasUsername(USERNAME_NOT_IN_DB)); + } + + public void testGetById() throws Exception { + this.userDetailsDao.save(this.defaultUserDetails); + TeacherUserDetails userDetails = (TeacherUserDetails) this.userDetailsDao + .getById(this.defaultUserDetails.getId()); + assertNotNull(userDetails); + assertEquals(userDetails.getUsername(), DEFAULT_USERNAME); + + Long userIdNotInDb = new Long(100); + try { + userDetails = (TeacherUserDetails) this.userDetailsDao.getById(userIdNotInDb); + fail("Expected ObjectNotFoundException"); + } catch (ObjectNotFoundException e) { + } + } + + private void verifyUserandJoinTablesAreEmpty() { + assertTrue(this.retrieveUserDetailsListFromDb().isEmpty()); + assertTrue(this.retrieveUsersRolesTableFromDb().isEmpty()); + } + + private List retrieveUserDetailsListFromDb() { + return this.jdbcTemplate.queryForList("SELECT * FROM " + PersistentUserDetails.DATA_STORE_NAME + + ", " + TeacherUserDetails.DATA_STORE_NAME + ", " + + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME + ", " + + PersistentGrantedAuthority.DATA_STORE_NAME + " WHERE " + + PersistentUserDetails.DATA_STORE_NAME + ".id = " + TeacherUserDetails.DATA_STORE_NAME + + ".id " + "AND " + TeacherUserDetails.DATA_STORE_NAME + ".id = " + + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME + "." + + PersistentUserDetails.USER_DETAILS_JOIN_COLUMN_NAME + " AND " + + PersistentGrantedAuthority.DATA_STORE_NAME + ".id = " + + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME + "." + + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_COLUMN_NAME, (Object[]) null); + } + + private List retrieveUsersTableFromDb() { + return this.jdbcTemplate.queryForList("SELECT * FROM " + PersistentUserDetails.DATA_STORE_NAME, + (Object[]) null); + } + + private List retrieveRolesTableFromDb() { + return this.jdbcTemplate.queryForList( + "SELECT * FROM " + PersistentGrantedAuthority.DATA_STORE_NAME, (Object[]) null); + } + + private List retrieveUsersRolesTableFromDb() { + return this.jdbcTemplate.queryForList( + "SELECT * FROM " + PersistentUserDetails.GRANTED_AUTHORITY_JOIN_TABLE_NAME, + (Object[]) null); + } } diff --git a/src/test/java/org/wise/portal/dao/group/impl/HibernateGroupDaoTest.java b/src/test/java/org/wise/portal/dao/group/impl/HibernateGroupDaoTest.java index b886560110..fc15fab65b 100644 --- a/src/test/java/org/wise/portal/dao/group/impl/HibernateGroupDaoTest.java +++ b/src/test/java/org/wise/portal/dao/group/impl/HibernateGroupDaoTest.java @@ -136,7 +136,7 @@ public void testSave_NoMembers_NoParent() { ROOT_GROUP_NAME = "new name"; this.rootGroup.setName(ROOT_GROUP_NAME); this.groupDao.save(this.rootGroup); - this.toilet.flush(); + this.flush(); actualGroupList = retrieveAllGroupsListFromDb(); assertEquals(1, actualGroupList.size()); @@ -180,7 +180,7 @@ public void testSave_NoMembers_Parent() { rootParentGroup3.setName(ROOT_GROUP_NAME); this.groupDao.save(intermediateGroup3); - this.toilet.flush(); // need to flush the toilet to force cascade + this.flush(); // need to flush to force cascade actualList = this.retrieveAllGroupsListFromDb(); assertEquals(4, actualList.size()); checkRootGroupIsValid(); // make sure Root node name changed @@ -200,8 +200,7 @@ public void testSave_Leaf_Group1() { leafGroup0.addMember(user1); this.groupDao.save(leafGroup0); - this.toilet.flush(); // need to flush the toilet to force group - // members to be saved. + this.flush(); // need to flush to force group members to be saved. List actualList = this.retrieveAllGroupsListFromDb(); assertEquals(2, actualList.size()); List actualGroupMembersList = retrieveGroupsWithMembers(); @@ -212,8 +211,7 @@ public void testSave_Leaf_Group1() { leafGroup0.addMember(user2); this.groupDao.save(leafGroup0); - this.toilet.flush(); // need to flush the toilet to force group - // members to be saved. + this.flush(); // need to flush to force group members to be saved. actualList = this.retrieveAllGroupsListFromDb(); assertEquals(2, actualList.size()); actualGroupMembersList = retrieveGroupsWithMembers(); @@ -231,7 +229,7 @@ public void testSave_Leaf_Group2() { // the root node will be saved along with the intermediate node Group intermediateGroup0 = intermediateGroups.get(0); this.groupDao.save(intermediateGroup0); - this.toilet.flush(); + this.flush(); List actualList = this.retrieveAllGroupsListFromDb(); assertEquals(2, actualList.size()); @@ -245,8 +243,7 @@ public void testSave_Leaf_Group2() { leafGroup0.addMember(user1); this.groupDao.save(leafGroup0); - this.toilet.flush(); // need to flush the toilet to force group - // members to be saved. + this.flush(); // need to flush to force group members to be saved. actualList = this.retrieveAllGroupsListFromDb(); assertEquals(3, actualList.size()); List actualGroupMembersList = retrieveGroupsWithMembers(); @@ -269,8 +266,7 @@ public void testUser_In_Many_Groups() { leafGroup0.addMember(user1); this.groupDao.save(leafGroup0); - this.toilet.flush(); // need to flush the toilet to force group - // members to be saved. + this.flush(); // need to flush to force group members to be saved. List actualList = this.retrieveAllGroupsListFromDb(); assertEquals(2, actualList.size()); List actualGroupMembersList = retrieveGroupsWithMembers(); @@ -282,8 +278,7 @@ public void testUser_In_Many_Groups() { leafGroup1.addMember(user2); this.groupDao.save(leafGroup1); - this.toilet.flush(); // need to flush the toilet to force group - // members to be saved. + this.flush(); // need to flush to force group members to be saved. actualList = this.retrieveAllGroupsListFromDb(); assertEquals(3, actualList.size()); actualGroupMembersList = retrieveGroupsWithMembers(); @@ -295,8 +290,7 @@ public void testUser_In_Many_Groups() { leafGroup2.addMember(user3); this.groupDao.save(leafGroup2); - this.toilet.flush(); // need to flush the toilet to force group - // members to be saved. + this.flush(); // need to flush to force group members to be saved. actualList = this.retrieveAllGroupsListFromDb(); assertEquals(4, actualList.size()); actualGroupMembersList = retrieveGroupsWithMembers(); diff --git a/src/test/java/org/wise/portal/dao/project/impl/HibernateProjectDaoTest.java b/src/test/java/org/wise/portal/dao/project/impl/HibernateProjectDaoTest.java index f2184ef1f0..3b7c902fc3 100644 --- a/src/test/java/org/wise/portal/dao/project/impl/HibernateProjectDaoTest.java +++ b/src/test/java/org/wise/portal/dao/project/impl/HibernateProjectDaoTest.java @@ -62,7 +62,7 @@ public void setUp() throws Exception { project.setDateCreated(new Date()); User owner = createUser(); userDao.save(owner); - toilet.flush(); + flush(); project.setOwner(owner); } @@ -70,7 +70,7 @@ public void setUp() throws Exception { public void save_NewProject_Success() { verifyDataStoreIsEmpty(); projectDao.save(project); - toilet.flush(); + flush(); List actualList = retrieveProjectListFromDb(); assertEquals(1, actualList.size()); Map projectMap = (Map) actualList.get(0); diff --git a/src/test/java/org/wise/portal/dao/run/impl/HibernateRunDaoTest.java b/src/test/java/org/wise/portal/dao/run/impl/HibernateRunDaoTest.java index 8c7814b75a..d911cb892f 100644 --- a/src/test/java/org/wise/portal/dao/run/impl/HibernateRunDaoTest.java +++ b/src/test/java/org/wise/portal/dao/run/impl/HibernateRunDaoTest.java @@ -71,7 +71,7 @@ public void save_NewRun_Success() { String runCode = UNUSED_RUN_CODE; run1 = createProjectAndRun(id, projectName, teacher2, startTime, runCode); runDao.save(run1); - toilet.flush(); + flush(); assertNumRuns(4); } @@ -80,7 +80,7 @@ public void save_WithoutProject_ShouldThrowException() { run1.setProject(null); try { runDao.save(run1); - toilet.flush(); + flush(); fail("Exception expected to be thrown but was not"); } catch (Exception e) { } diff --git a/src/test/java/org/wise/portal/dao/status/impl/HibernateRunStatusDaoTest.java b/src/test/java/org/wise/portal/dao/status/impl/HibernateRunStatusDaoTest.java index de11d4b393..9a72984e71 100644 --- a/src/test/java/org/wise/portal/dao/status/impl/HibernateRunStatusDaoTest.java +++ b/src/test/java/org/wise/portal/dao/status/impl/HibernateRunStatusDaoTest.java @@ -59,7 +59,7 @@ public void save_NewRunStatus_Success() { Long runId = 1L; Timestamp timeStamp = new Timestamp(Calendar.getInstance().getTimeInMillis()); runStatusDao.save(createMockRunStatus(runId, timeStamp)); - toilet.flush(); + flush(); List fetchedRunStatusList = retrieveRunStatusFromDb(); Map fetchedRunStatusMap = (Map) fetchedRunStatusList.get(0); @@ -74,7 +74,7 @@ public void getRunStatusByRunId_NewRunStatus_Success() { Long existingRunId = 37L; Timestamp timeStamp = new Timestamp(Calendar.getInstance().getTimeInMillis()); runStatusDao.save(createMockRunStatus(existingRunId, timeStamp)); - toilet.flush(); + flush(); RunStatus runStatus = runStatusDao.getRunStatusByRunId(existingRunId); assertTrue(runStatus instanceof RunStatus); @@ -91,7 +91,7 @@ public void getRunStatusByRunId_NonExistingRunStatus_ShouldReturnNull() { Long nonExistingRunId = 999L; Timestamp timeStamp = new Timestamp(Calendar.getInstance().getTimeInMillis()); runStatusDao.save(createMockRunStatus(existingRunId, timeStamp)); - toilet.flush(); + flush(); assertNull(runStatusDao.getRunStatusByRunId(nonExistingRunId)); } diff --git a/src/test/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDaoTest.java b/src/test/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDaoTest.java index 288c37730f..d8166fe28f 100644 --- a/src/test/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDaoTest.java +++ b/src/test/java/org/wise/portal/dao/status/impl/HibernateStudentStatusDaoTest.java @@ -61,7 +61,7 @@ public void setUp() throws Exception { studentStatusDao.save(studentStatus2); studentStatus3 = createStudentStatus(runId, periodId2, workgroupId3, "status3"); studentStatusDao.save(studentStatus3); - toilet.flush(); + flush(); } private StudentStatus createStudentStatus(Long runId, Long periodId, Long workgroupId, diff --git a/src/test/java/org/wise/portal/dao/work/impl/HibernateEventDaoTest.java b/src/test/java/org/wise/portal/dao/work/impl/HibernateEventDaoTest.java index 74853e6d92..c56785ed73 100644 --- a/src/test/java/org/wise/portal/dao/work/impl/HibernateEventDaoTest.java +++ b/src/test/java/org/wise/portal/dao/work/impl/HibernateEventDaoTest.java @@ -93,7 +93,7 @@ public void setUp() throws Exception { "event3", null); createEvent(run, period2, workgroup2, "node2", "12345abcde", "MultipleChoice", "Component", "StudentInteraction", "buttonClicked", "event4", components); - toilet.flush(); + flush(); } private Event createEvent(Run run, Group period, Workgroup workgroup, String nodeId, diff --git a/src/test/java/org/wise/portal/junit/AbstractTransactionalDbTests.java b/src/test/java/org/wise/portal/junit/AbstractTransactionalDbTests.java index 93deff0fd8..8b8781ff09 100644 --- a/src/test/java/org/wise/portal/junit/AbstractTransactionalDbTests.java +++ b/src/test/java/org/wise/portal/junit/AbstractTransactionalDbTests.java @@ -22,17 +22,12 @@ import java.util.HashSet; import java.util.Set; -import org.easymock.EasyMockExtension; import org.hibernate.SessionFactory; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; -import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; -import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.testcontainers.containers.GenericContainer; import org.testcontainers.junit.jupiter.Container; @@ -81,8 +76,6 @@ public abstract class AbstractTransactionalDbTests @Autowired protected SessionFactory sessionFactory; - protected HibernateFlusher toilet; - @Autowired private HibernateProjectDao projectDao; @@ -122,8 +115,10 @@ static void redisProperties(DynamicPropertyRegistry registry) { } public void setUp() throws Exception { - toilet = new HibernateFlusher(); - toilet.setSessionFactory(sessionFactory); + } + + public void flush() { + this.sessionFactory.getCurrentSession().flush(); } public User createUser() { diff --git a/src/test/java/org/wise/portal/junit/HibernateFlusher.java b/src/test/java/org/wise/portal/junit/HibernateFlusher.java deleted file mode 100644 index 04b7297db0..0000000000 --- a/src/test/java/org/wise/portal/junit/HibernateFlusher.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright (c) 2007 Encore Research Group, University of Toronto - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -package org.wise.portal.junit; - -import org.springframework.orm.hibernate5.support.HibernateDaoSupport; - -/** - * @author Cynick Young - * - * @version $Id$ - * - */ -public final class HibernateFlusher extends HibernateDaoSupport { - public void flush() { - this.getHibernateTemplate().flush(); - } -}