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