Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== diff -u -re136309c831c4509819e7651ce2f565747bccb57 -r6d023d698235f9bc14e1c877e325283741aebe83 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision e136309c831c4509819e7651ce2f565747bccb57) +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 6d023d698235f9bc14e1c877e325283741aebe83) @@ -94,6 +94,7 @@ singleton="false" > + Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupDAO.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r6d023d698235f9bc14e1c877e325283741aebe83 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupDAO.java (.../IGroupDAO.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupDAO.java (.../IGroupDAO.java) (revision 6d023d698235f9bc14e1c877e325283741aebe83) @@ -40,5 +40,13 @@ public void saveGroup(Group group); public void deleteGroup(Group group); - + + /** + * Number of users groups for a particular user. Used to determine + * if we can delete a user. + * + * @param userID + */ + public Integer getCountGroupsForUser(Integer userID); + } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupDAO.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r6d023d698235f9bc14e1c877e325283741aebe83 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupDAO.java (.../GroupDAO.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupDAO.java (.../GroupDAO.java) (revision 6d023d698235f9bc14e1c877e325283741aebe83) @@ -23,15 +23,30 @@ /* $$Id$$ */ package org.lamsfoundation.lams.learningdesign.dao.hibernate; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.hibernate.HibernateException; +import org.hibernate.Query; +import org.hibernate.Session; import org.lamsfoundation.lams.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.learningdesign.Grouping; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.dao.IGroupDAO; +import org.springframework.orm.hibernate3.HibernateCallback; +import org.springframework.orm.hibernate3.HibernateTemplate; /** * @author Manpreet Minhas */ public class GroupDAO extends BaseDAO implements IGroupDAO { + private final static String NUM_GROUPS = "select count(*) from " + + Group.class.getName() + " group " + + " where group.users.userId = :userID"; + /* (non-Javadoc) * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IGroupDAO#getGroupById(java.lang.Long) */ @@ -47,4 +62,22 @@ getHibernateTemplate().delete(group); } + /** + * Number of users groups for a particular user. Used to determine + * if we can delete a user. + * + * @param userID + */ + public Integer getCountGroupsForUser(final Integer userID) { + HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); + return (Integer) hibernateTemplate.execute(new HibernateCallback() { + public Object doInHibernate(Session session) + throws HibernateException { + Query query = session.createQuery(NUM_GROUPS); + query.setInteger("userID", userID); + Object value = query.uniqueResult(); + return new Integer (((Number)value).intValue()); + } + }); + } } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -r6839972f80008e9c58d185986a223cf4a8ba6de5 -r6d023d698235f9bc14e1c877e325283741aebe83 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 6839972f80008e9c58d185986a223cf4a8ba6de5) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 6d023d698235f9bc14e1c877e325283741aebe83) @@ -25,7 +25,6 @@ import java.io.Serializable; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.HashMap; @@ -38,6 +37,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.learningdesign.dao.IGroupDAO; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationType; import org.lamsfoundation.lams.usermanagement.Role; @@ -55,7 +55,6 @@ import org.lamsfoundation.lams.usermanagement.dto.UserManageBean; import org.lamsfoundation.lams.util.HashUtil; import org.lamsfoundation.lams.util.MessageService; -import org.lamsfoundation.lams.util.WebUtil; /** *

@@ -76,6 +75,7 @@ private static final String SEQUENCES_FOLDER_NAME_KEY = "runsequences.folder.name"; private IBaseDAO baseDAO; + private IGroupDAO groupDAO; protected MessageService messageService; /** @@ -96,6 +96,10 @@ this.baseDAO = baseDAO; } + public void setGroupDAO(IGroupDAO groupDAO) { + this.groupDAO = groupDAO; + } + public void save(Object object) { try{ if(object instanceof User){ @@ -600,11 +604,10 @@ return true; } } - if (user.getUserGroups()!=null) { - if (!user.getUserGroups().isEmpty()) { - log.debug("user has data, userGroups: "+user.getUserGroups().size()); - return true; - } + int numLessonGroups = groupDAO.getCountGroupsForUser(user.getUserId()); + if ( numLessonGroups > 0 ) { + log.debug("user has data, userGroups: "+numLessonGroups); + return true; } return false; } @@ -679,5 +682,6 @@ save(user); } + } \ No newline at end of file