You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by se...@apache.org on 2011/12/18 12:44:09 UTC

svn commit: r1220365 - in /incubator/openmeetings/trunk/singlewebapp: WebContent/WEB-INF/ src/META-INF/ src/app/org/openmeetings/app/data/user/ src/app/org/openmeetings/app/data/user/dao/ src/app/org/openmeetings/app/installation/ src/app/org/openmeeti...

Author: sebawagner
Date: Sun Dec 18 11:44:08 2011
New Revision: 1220365

URL: http://svn.apache.org/viewvc?rev=1220365&view=rev
Log:
Sync r4708 trunk to new svn

Added:
    incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/user/
    incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/user/TestUserOrganisation.java
Removed:
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Addressmanagement.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Groupmanagement.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/user/Usergroups.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/user/Users_Usergroups.java
Modified:
    incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
    incubator/openmeetings/trunk/singlewebapp/src/META-INF/db2_persistence.xml
    incubator/openmeetings/trunk/singlewebapp/src/META-INF/derby_persistence.xml
    incubator/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml
    incubator/openmeetings/trunk/singlewebapp/src/META-INF/oracle_persistence.xml
    incubator/openmeetings/trunk/singlewebapp/src/META-INF/postgres_persistence.xml
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Organisationmanagement.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Usermanagement.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/dao/UsersDaoImpl.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/installation/ImportInitvalues.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/domain/Organisation.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/domain/Organisation_Users.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/user/Users.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/MainService.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/UserService.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/xmlimport/UserImport.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/utils/OMContextListener.java
    incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/domain/TestUserGroupAggregation.java
    incubator/openmeetings/trunk/singlewebapp/src/userservice/org/openmeetings/axis/services/UserWebService.java

Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml Sun Dec 18 11:44:08 2011
@@ -60,7 +60,6 @@
 	<bean id="appointmentReminderTypDaoImpl" class="org.openmeetings.app.data.calendar.daos.AppointmentReminderTypDaoImpl" />
 	<bean id="appointmentCategoryDaoImpl" class="org.openmeetings.app.data.calendar.daos.AppointmentCategoryDaoImpl" />
 	<bean id="roommanagement" class="org.openmeetings.app.data.conference.Roommanagement" />
-	<bean id="addressmanagement" class="org.openmeetings.app.data.user.Addressmanagement" />
 	<bean id="organisationmanagement" class="org.openmeetings.app.data.user.Organisationmanagement" />
 	<bean id="salutationmanagement" class="org.openmeetings.app.data.user.Salutationmanagement" />
 	<bean id="errorManagement" class="org.openmeetings.app.data.basic.ErrorManagement" />
@@ -87,7 +86,6 @@
 	<bean id="flvRecordingLogDao" class="org.openmeetings.app.data.flvrecord.FlvRecordingLogDaoImpl"/>
 	<bean id="flvRecordingMetaDataDao" class="org.openmeetings.app.data.flvrecord.FlvRecordingMetaDataDaoImpl"/>
 	<bean id="flvRecordingMetaDeltaDao" class="org.openmeetings.app.data.flvrecord.FlvRecordingMetaDeltaDaoImpl"/>
-	<bean id="groupManagement" class="org.openmeetings.app.data.user.Groupmanagement"/>
 	<bean id="ldapConfigDao" class="org.openmeetings.app.data.basic.dao.LdapConfigDaoImpl"/>
 	<bean id="invitationManagement" class="org.openmeetings.app.data.conference.Invitationmanagement"/>
 	<bean id="meetingMemberDao" class="org.openmeetings.app.data.calendar.daos.MeetingMemberDaoImpl"/>

Modified: incubator/openmeetings/trunk/singlewebapp/src/META-INF/db2_persistence.xml
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/META-INF/db2_persistence.xml?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/META-INF/db2_persistence.xml (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/META-INF/db2_persistence.xml Sun Dec 18 11:44:08 2011
@@ -52,9 +52,7 @@
 		<class>org.openmeetings.app.persistence.beans.user.Salutations</class>
 		<class>org.openmeetings.app.persistence.beans.user.UserContacts</class>
 		<class>org.openmeetings.app.persistence.beans.user.Userdata</class>
-		<class>org.openmeetings.app.persistence.beans.user.Usergroups</class>
 		<class>org.openmeetings.app.persistence.beans.user.Userlevel</class>
-		<class>org.openmeetings.app.persistence.beans.user.Users_Usergroups</class>
 		<class>org.openmeetings.app.persistence.beans.user.UserSipData</class>
 		<class>org.openmeetings.app.persistence.beans.user.Users</class>
 		<class>org.openmeetings.app.persistence.beans.files.FileExplorerItem</class>

Modified: incubator/openmeetings/trunk/singlewebapp/src/META-INF/derby_persistence.xml
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/META-INF/derby_persistence.xml?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/META-INF/derby_persistence.xml (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/META-INF/derby_persistence.xml Sun Dec 18 11:44:08 2011
@@ -52,9 +52,7 @@
 		<class>org.openmeetings.app.persistence.beans.user.Salutations</class>
 		<class>org.openmeetings.app.persistence.beans.user.UserContacts</class>
 		<class>org.openmeetings.app.persistence.beans.user.Userdata</class>
-		<class>org.openmeetings.app.persistence.beans.user.Usergroups</class>
 		<class>org.openmeetings.app.persistence.beans.user.Userlevel</class>
-		<class>org.openmeetings.app.persistence.beans.user.Users_Usergroups</class>
 		<class>org.openmeetings.app.persistence.beans.user.UserSipData</class>
 		<class>org.openmeetings.app.persistence.beans.user.Users</class>
 		<class>org.openmeetings.app.persistence.beans.files.FileExplorerItem</class>

Modified: incubator/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml Sun Dec 18 11:44:08 2011
@@ -52,9 +52,7 @@
 		<class>org.openmeetings.app.persistence.beans.user.Salutations</class>
 		<class>org.openmeetings.app.persistence.beans.user.UserContacts</class>
 		<class>org.openmeetings.app.persistence.beans.user.Userdata</class>
-		<class>org.openmeetings.app.persistence.beans.user.Usergroups</class>
 		<class>org.openmeetings.app.persistence.beans.user.Userlevel</class>
-		<class>org.openmeetings.app.persistence.beans.user.Users_Usergroups</class>
 		<class>org.openmeetings.app.persistence.beans.user.UserSipData</class>
 		<class>org.openmeetings.app.persistence.beans.user.Users</class>
 		<class>org.openmeetings.app.persistence.beans.files.FileExplorerItem</class>

Modified: incubator/openmeetings/trunk/singlewebapp/src/META-INF/oracle_persistence.xml
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/META-INF/oracle_persistence.xml?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/META-INF/oracle_persistence.xml (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/META-INF/oracle_persistence.xml Sun Dec 18 11:44:08 2011
@@ -52,9 +52,7 @@
 		<class>org.openmeetings.app.persistence.beans.user.Salutations</class>
 		<class>org.openmeetings.app.persistence.beans.user.UserContacts</class>
 		<class>org.openmeetings.app.persistence.beans.user.Userdata</class>
-		<class>org.openmeetings.app.persistence.beans.user.Usergroups</class>
 		<class>org.openmeetings.app.persistence.beans.user.Userlevel</class>
-		<class>org.openmeetings.app.persistence.beans.user.Users_Usergroups</class>
 		<class>org.openmeetings.app.persistence.beans.user.UserSipData</class>
 		<class>org.openmeetings.app.persistence.beans.user.Users</class>
 		<class>org.openmeetings.app.persistence.beans.files.FileExplorerItem</class>

Modified: incubator/openmeetings/trunk/singlewebapp/src/META-INF/postgres_persistence.xml
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/META-INF/postgres_persistence.xml?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/META-INF/postgres_persistence.xml (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/META-INF/postgres_persistence.xml Sun Dec 18 11:44:08 2011
@@ -52,9 +52,7 @@
 		<class>org.openmeetings.app.persistence.beans.user.Salutations</class>
 		<class>org.openmeetings.app.persistence.beans.user.UserContacts</class>
 		<class>org.openmeetings.app.persistence.beans.user.Userdata</class>
-		<class>org.openmeetings.app.persistence.beans.user.Usergroups</class>
 		<class>org.openmeetings.app.persistence.beans.user.Userlevel</class>
-		<class>org.openmeetings.app.persistence.beans.user.Users_Usergroups</class>
 		<class>org.openmeetings.app.persistence.beans.user.UserSipData</class>
 		<class>org.openmeetings.app.persistence.beans.user.Users</class>
 		<class>org.openmeetings.app.persistence.beans.files.FileExplorerItem</class>

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Organisationmanagement.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Organisationmanagement.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Organisationmanagement.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Organisationmanagement.java Sun Dec 18 11:44:08 2011
@@ -1,6 +1,5 @@
 package org.openmeetings.app.data.user;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
@@ -12,7 +11,6 @@ import java.util.List;
 import javax.persistence.EntityManager;
 import javax.persistence.NoResultException;
 import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
 import javax.persistence.TypedQuery;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
@@ -190,11 +188,11 @@ public class Organisationmanagement {
 	private Long selectMaxFromOrganisations() {
 		try {
 			// get all users
-			Query query = em
-					.createQuery("select max(c.organisation_id) from Organisation c where c.deleted LIKE 'false'");
-			List<?> ll = query.getResultList();
-			log.debug("selectMaxFromOrganisations" + ll.get(0));
-			return (Long) ll.get(0);
+			TypedQuery<Long> query = em
+					.createQuery("select max(c.organisation_id) from Organisation c where c.deleted LIKE 'false'", Long.class);
+			Long l = query.getSingleResult();
+			log.debug("selectMaxFromOrganisations" + l);
+			return l;
 		} catch (Exception ex2) {
 			log.error("[selectMaxFromUsers] ", ex2);
 		}
@@ -355,13 +353,12 @@ public class Organisationmanagement {
 	 */
 	public Organisation getOrganisationById(long organisation_id) {
 		try {
-			Query query = em
-					.createQuery("select c from Organisation as c where c.organisation_id = :organisation_id AND c.deleted <> :deleted");
+			TypedQuery<Organisation> query = em.createNamedQuery("getOrganisationById", Organisation.class);
 			query.setParameter("organisation_id", organisation_id);
 			query.setParameter("deleted", "true");
 			Organisation o = null;
 			try {
-				o = (Organisation) query.getSingleResult();
+				o = query.getSingleResult();
 			} catch (NoResultException e) {
 				// o = null;
 			}
@@ -374,12 +371,11 @@ public class Organisationmanagement {
 
 	public Organisation getOrganisationByIdBackup(long organisation_id) {
 		try {
-			Query query = em
-					.createQuery("select c from Organisation as c where c.organisation_id = :organisation_id");
+			TypedQuery<Organisation> query = em.createNamedQuery("getAnyOrganisationById", Organisation.class);
 			query.setParameter("organisation_id", organisation_id);
 			Organisation o = null;
 			try {
-				o = (Organisation) query.getSingleResult();
+				o = query.getSingleResult();
 			} catch (NoResultException e) {
 				// o = null;
 			}
@@ -391,21 +387,7 @@ public class Organisationmanagement {
 	}
 
 	public Organisation getOrganisationByIdAndDeleted(long organisation_id) {
-		try {
-			Query query = em
-					.createQuery("select c from Organisation as c where c.organisation_id = :organisation_id");
-			query.setParameter("organisation_id", organisation_id);
-			Organisation o = null;
-			try {
-				o = (Organisation) query.getSingleResult();
-			} catch (NoResultException e) {
-				// o = null;
-			}
-			return o;
-		} catch (Exception ex2) {
-			log.error("[getOrganisationByIdAndDeleted]", ex2);
-		}
-		return null;
+		return getOrganisationByIdBackup(organisation_id);
 	}
 
 	public Long deleteOrganisation(long user_level, long organisation_id,
@@ -461,13 +443,7 @@ public class Organisationmanagement {
 			Long insertedby, String comment) {
 		try {
 			if (this.getOrganisation_UserByUserAndOrganisation(user_id, organisation_id) == null) {
-				Organisation_Users orgUser = new Organisation_Users();
-				orgUser.setOrganisation(getOrganisationById(organisation_id));
-				orgUser.setUser_id(user_id);
-				orgUser.setDeleted("false");
-				orgUser.setComment(comment);
-
-				return addOrganisationUserObj(orgUser);
+				return addOrganisationUserObj(user_id, getOrgUser(organisation_id, insertedby, comment));
 			} else {
 				return -35L;
 			}
@@ -476,19 +452,27 @@ public class Organisationmanagement {
 		}
 		return null;
 	}
-
-	public Long addOrganisationUserObj(Organisation_Users orgUser) {
+	
+	public Organisation_Users getOrgUser(Long organisation_id,
+			Long insertedby, String comment) {
+		
+		Organisation_Users orgUser = new Organisation_Users();
+		orgUser.setOrganisation(getOrganisationById(organisation_id));
+		orgUser.setDeleted("false");
+		orgUser.setComment(comment);
+		
+		return orgUser;
+	}
+	
+	public Long addOrganisationUserObj(Long user_id, Organisation_Users orgUser) {
 		try {
-			Users u = usersDao.getUser(orgUser.getUser_id());
+			Users u = usersDao.getUser(user_id);
 			
 			orgUser.setStarttime(new Date());
 			orgUser = em.merge(orgUser);
 
 			//user should be updated to have recent organisation_users list
 			List<Organisation_Users> l = u.getOrganisation_users();
-			if (l == null) {
-				l = new ArrayList<Organisation_Users>();
-			}
 			l.add(orgUser);
 			u.setOrganisation_users(l);
 			usersDao.updateUser(u);
@@ -503,21 +487,14 @@ public class Organisationmanagement {
 	public Organisation_Users getOrganisation_UserByUserAndOrganisation(
 			long user_id, long organisation_id) {
 		try {
-
 			log.debug("getOrganisation_UserByUserAndOrganisation " + user_id
 					+ "  " + organisation_id);
 
-			Query q = em
-				.createQuery("select c from Organisation_Users c where c.deleted = 'false' AND c.organisation.organisation_id = :organisation_id AND c.user_id = :user_id");
+			TypedQuery<Organisation_Users> q = em.createNamedQuery("getOrganisation_UserByUserAndOrganisation", Organisation_Users.class);
 			q.setParameter("organisation_id", organisation_id);
 			q.setParameter("user_id", user_id);
-			@SuppressWarnings("unchecked")
-			List<Organisation_Users> ll = q.getResultList();
-			log.debug("getOrganisation_UserByUserAndOrganisation: " + ll.size());
-			if (ll.size() > 0) {
-				return ll.get(0);
-			}
-
+			List<Organisation_Users> oul = q.getResultList();
+			return oul.size() > 0 ? oul.get(0) : null;
 		} catch (Exception ex2) {
 			log.error("[getOrganisation_UserByUserAndOrganisation]", ex2);
 		}
@@ -576,14 +553,12 @@ public class Organisationmanagement {
 
 	private Long selectMaxUsersByOrganisationId(long organisation_id) {
 		try {
-			Query query = em
-				.createQuery("select c.organisation_users_id from Organisation_Users c where c.deleted = 'false' AND c.organisation.organisation_id = :organisation_id");
+			TypedQuery<Long> query = em.createNamedQuery("selectMaxUsersByOrganisationId", Long.class);
 			query.setParameter("organisation_id", organisation_id);
 
-			@SuppressWarnings("rawtypes")
-			List ll = query.getResultList();
-			log.debug("selectMaxUsersByOrganisationId" + ll.size());
-			return new Long(ll.size());
+			Long l = query.getSingleResult();
+			log.debug("selectMaxUsersByOrganisationId" + l);
+			return l;
 
 		} catch (Exception ex2) {
 			log.error("[getUsersByOrganisationId]", ex2);
@@ -605,14 +580,11 @@ public class Organisationmanagement {
 	public List<Users> getUsersByOrganisationId(long organisation_id, int start,
 			int max, String orderby, boolean asc) {
 		try {
-			String hql = 
-				"SELECT c FROM Users c "
-				+ "WHERE c.deleted = 'false' "
-				+ "AND c.user_id IN ("
-				+ "	SELECT ou.user_id FROM Organisation_Users ou "
-				+ " WHERE ou.deleted = 'false' "
-				+ "		AND ou.organisation.organisation_id = :organisation_id "
-				+ ")";
+			String hql =
+				"SELECT c FROM "
+				+ "Users c "
+				+ ", IN(c.organisation_users) ou "
+				+ "WHERE c.deleted = 'false' AND ou.organisation.organisation_id = :organisation_id ";
 			if (orderby.startsWith("c.")) {
 				hql += "ORDER BY " + orderby;
 			} else {
@@ -624,12 +596,11 @@ public class Organisationmanagement {
 				hql += " DESC";
 			}
 
-			Query q = em.createQuery(hql);
+			TypedQuery<Users> q = em.createQuery(hql, Users.class);
 			q.setParameter("organisation_id", organisation_id);
 			q.setFirstResult(start);
 			q.setMaxResults(max);
 
-			@SuppressWarnings("unchecked")
 			List<Users> userL = q.getResultList();
 			return userL;
 		} catch (Exception ex2) {
@@ -647,18 +618,10 @@ public class Organisationmanagement {
 		try {
 
 			// get all users
-			Query q = em
-					.createQuery("select c from Organisation_Users c where c.deleted = 'false' AND c.organisation.organisation_id = :organisation_id");
+			TypedQuery<Users> q = em.createNamedQuery("getUsersByOrganisationId", Users.class);
 			q.setParameter("organisation_id", organisation_id);
-			@SuppressWarnings("unchecked")
-			List<Organisation_Users> userOrg = q.getResultList();
-			List<Users> userL = new LinkedList<Users>();
-			for (Iterator<Organisation_Users> it = userOrg.iterator(); it
-					.hasNext();) {
-				Organisation_Users us = it.next();
-				userL.add(usersDao.getUser(us.getUser_id()));
-			}
-			Collections.sort(userL, new UsersLoginComperator());
+			List<Users> userL = q.getResultList();
+			Collections.sort(userL, new UsersLoginComparator());
 			return userL;
 
 		} catch (Exception ex2) {
@@ -667,10 +630,9 @@ public class Organisationmanagement {
 		return null;
 	}
 
-	class UsersLoginComperator implements Comparator<Users> {
-		@SuppressWarnings("null")
+	class UsersLoginComparator implements Comparator<Users> {
 		public int compare(Users o1, Users o2) {
-			if (o1 != null || o2 != null)
+			if (o1 == null || o2 == null)
 				return 0;
 
 			return o1.getLogin().compareTo(o2.getLogin());
@@ -691,19 +653,11 @@ public class Organisationmanagement {
 			long user_id, int start, int max, String orderby, boolean asc) {
 		try {
 			if (authLevelManagement.checkAdminLevel(user_level)) {
-				String hql = 
-					"SELECT o FROM Organisation o "
-					+ "WHERE o.deleted = 'false' "
-					+ "AND o.organisation_id IN ("
-					+ "	SELECT ou.organisation.organisation_id FROM Organisation_Users ou "
-					+ " WHERE ou.deleted = 'false' "
-					+ "		AND ou.user_id = :user_id "
-					+ ")";
-				Query q = em.createQuery(hql);
+				TypedQuery<Organisation> q = em.createNamedQuery("getOrganisationsByUserId", Organisation.class);
 				q.setParameter("user_id", user_id);
 				q.setFirstResult(start);
 				q.setMaxResults(max);
-				@SuppressWarnings("unchecked")
+
 				List<Organisation> userOrg = q.getResultList();
 
 				return userOrg;
@@ -728,37 +682,16 @@ public class Organisationmanagement {
 			long user_id, int start, int max, String orderby, boolean asc) {
 		try {
 			if (authLevelManagement.checkAdminLevel(user_level)) {
-				// get all organisations
-				List<Organisation> allOrgs = this.getOrganisations(0, 1000000,
-						orderby, asc);
-				List<Organisation> orgUser = this.getOrganisationsByUserId(
-						user_level, user_id, start, max, orderby, asc);
-
-				List<Organisation> returnList = new LinkedList<Organisation>();
-				boolean notInList = true;
-
-				for (Iterator<Organisation> it = allOrgs.iterator(); it
-						.hasNext();) {
-					Organisation org = it.next();
-					notInList = true;
-					for (Iterator<Organisation> it2 = orgUser.iterator(); it2
-							.hasNext();) {
-						Organisation orgObj = it2.next();
-						// log.error("orgObj ID: "+orgObj.getOrganisation_id());
-						// log.error("orgUser ID: "+org.getOrganisation_id());
-						if (orgObj.getOrganisation_id().equals(
-								org.getOrganisation_id())) {
-							notInList = false;
-							// log.error("found notinList: "+notInList);
-							break;
-						}
-					}
-					// log.error("notinList: "+notInList);
-					if (notInList)
-						returnList.add(org);
-				}
-
-				return returnList;
+				String qSQL =
+					"SELECT o FROM Organisation AS o "
+					+ "WHERE o.organisation_id NOT IN ("
+					+ "	SELECT ou.organisation.organisation_id "
+					+ "	FROM Users u, IN(u.organisation_users) ou WHERE u.deleted = 'false' AND u.user_id = :user_id)";
+				TypedQuery<Organisation> q = em.createQuery(qSQL, Organisation.class);
+				q.setParameter("user_id", user_id);
+				q.setFirstResult(start);
+				q.setMaxResults(max);
+				return q.getResultList();
 			}
 		} catch (Exception ex2) {
 			log.error("[getRestOrganisationsByUserId]", ex2);
@@ -820,7 +753,7 @@ public class Organisationmanagement {
 	 * @param organisations
 	 * @return
 	 */
-	@SuppressWarnings("rawtypes")
+	@SuppressWarnings("rawtypes") //FIXME need to refactor
 	public Long updateUserOrganisationsByUser(Users us, List organisations) {
 		try {
 			LinkedList<Long> orgIdsToAdd = new LinkedList<Long>();

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Usermanagement.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Usermanagement.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Usermanagement.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Usermanagement.java Sun Dec 18 11:44:08 2011
@@ -1,9 +1,9 @@
 package org.openmeetings.app.data.user;
 
+import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.List;
 
 import javax.persistence.EntityManager;
@@ -80,8 +80,6 @@ public class Usermanagement {
 	@Autowired
 	private ManageCryptStyle manageCryptStyle;
 	@Autowired
-	private Addressmanagement addressmanagement;
-	@Autowired
 	private OpenXGHttpClient openXGHttpClient;
 	@Autowired
 	private UsersDaoImpl usersDao;
@@ -293,7 +291,7 @@ public class Usermanagement {
 					}
 
 					log.debug("loginUser " + users.getOrganisation_users());
-					if (users.getOrganisation_users() != null) {
+					if (!users.getOrganisation_users().isEmpty()) {
 						log.debug("loginUser size "
 								+ users.getOrganisation_users().size());
 					} else {
@@ -336,11 +334,6 @@ public class Usermanagement {
 				sessionManagement.updateUserWithoutSession(SID, u.getUser_id());
 
 				return u;
-
-			} else {
-
-				return null;
-
 			}
 
 		} catch (Exception ex2) {
@@ -530,9 +523,7 @@ public class Usermanagement {
 							return new Long(-7);
 						}
 					}
-
-					addressmanagement.updateAdress(us.getAdresses()
-							.getAdresses_id(), street, zip, town, states_id,
+					us.setAdresses(street, zip, town, statemanagement.getStateById(states_id),
 							additionalname, comment, fax, email, phone);
 					// emailManagement.updateUserEmail(mail.getMail().getMail_id(),user_id,
 					// email);
@@ -849,56 +840,15 @@ public class Usermanagement {
 			String additionalname, String fax, String zip, long states_id,
 			String town, long language_id, String phone, String baseURL,
 			boolean generateSipUserData, String jNameTimeZone) {
-		try {
-			// Checks if FrontEndUsers can register
-			if (cfgManagement.getConfKey(3, "allow_frontend_register")
-					.getConf_value().equals("1")) {
-
-				Boolean sendConfirmation = false;
-				Integer sendEmailWithVerficationCode = Integer
-						.valueOf(
-								cfgManagement.getConfKey(3,
-										"sendEmailWithVerficationCode")
-										.getConf_value()).intValue();
-
-				// Send Confirmation can only be true when the baseURL is set,
-				// when you add a new user through the Administration panel
-				// the baseURL is not set so sendConfirmation = false and there
-				// will be
-				// neither an Email nor will this method return a negative error
-				// id
-				if (baseURL.length() != 0 && sendEmailWithVerficationCode == 1) {
-					sendConfirmation = true;
-				}
-
-				// TODO: Read and generate SIP-Data via RPC-Interface Issue 1098
-
-				Long user_id = this.registerUserInit(3, 1, 0, 1, login,
-						Userpass, lastname, firstname, email, age, street,
-						additionalname, fax, zip, states_id, town, language_id,
-						true, new LinkedList<Object>(), phone, baseURL,
-						sendConfirmation, "", "", "", generateSipUserData,
-						jNameTimeZone, false, "", "", false, true);
-
-				// Get the default organisation_id of registered users
-				if (user_id > 0) {
-					long organisation_id = Long.valueOf(
-							cfgManagement.getConfKey(3, "default_domain_id")
-									.getConf_value()).longValue();
-					organisationmanagement.addUserToOrganisation(user_id,
-							organisation_id, user_id, "");
-				}
-
-				if (sendConfirmation) {
-					return new Long(-40);
-				}
-
-				return user_id;
-			}
-		} catch (Exception e) {
-			log.error("[registerUser]", e);
-		}
-		return null;
+		
+		boolean sendConfirmation = baseURL != null
+				&& !baseURL.isEmpty()
+				&& 1 == cfgManagement.getConfValue(
+						"sendEmailWithVerficationCode", Integer.class, "0");
+		
+		return registerUser(login, Userpass, lastname, firstname, email, age,
+				street, additionalname, fax, zip, states_id, town, language_id,
+				phone, baseURL, generateSipUserData, jNameTimeZone, sendConfirmation);
 	}
 
 	public Long registerUserNoEmail(String login, String Userpass,
@@ -906,33 +856,29 @@ public class Usermanagement {
 			String street, String additionalname, String fax, String zip,
 			long states_id, String town, long language_id, String phone,
 			boolean generateSipUserData, String jNameTimeZone) {
+		
+		return registerUser(login, Userpass, lastname, firstname, email, age,
+				street, additionalname, fax, zip, states_id, town, language_id,
+				phone, "", generateSipUserData, jNameTimeZone, false);
+	}
+
+	private Long registerUser(String login, String Userpass, String lastname,
+			String firstname, String email, Date age, String street,
+			String additionalname, String fax, String zip, long states_id,
+			String town, long language_id, String phone, String baseURL,
+			boolean generateSipUserData, String jNameTimeZone, Boolean sendConfirmation) {
 		try {
 			// Checks if FrontEndUsers can register
-			if (cfgManagement.getConfKey(3, "allow_frontend_register")
-					.getConf_value().equals("1")) {
-
-				Boolean sendConfirmation = false;
-				Boolean sendWelcomeMessage = false;
-				String baseURL = "";
-
+			if ("1".equals(cfgManagement.getConfValue("allow_frontend_register", String.class, "0"))) {
+				
 				// TODO: Read and generate SIP-Data via RPC-Interface Issue 1098
 
 				Long user_id = this.registerUserInit(3, 1, 0, 1, login,
 						Userpass, lastname, firstname, email, age, street,
 						additionalname, fax, zip, states_id, town, language_id,
-						sendWelcomeMessage, new LinkedList<Object>(), phone,
-						baseURL, sendConfirmation, "", "", "",
-						generateSipUserData, jNameTimeZone, false, "", "",
-						false, true);
-
-				// Get the default organisation_id of registered users
-				if (user_id > 0) {
-					long organisation_id = Long.valueOf(
-							cfgManagement.getConfKey(3, "default_domain_id")
-									.getConf_value()).longValue();
-					organisationmanagement.addUserToOrganisation(user_id,
-							organisation_id, user_id, "");
-				}
+						true, Arrays.asList(cfgManagement.getConfValue("default_domain_id", Long.class, null)),phone, baseURL,
+						sendConfirmation, "", "", "", generateSipUserData,
+						jNameTimeZone, false, "", "", false, true);
 
 				if (sendConfirmation) {
 					return new Long(-40);
@@ -941,7 +887,7 @@ public class Usermanagement {
 				return user_id;
 			}
 		} catch (Exception e) {
-			log.error("[registerUserNoEmail]", e);
+			log.error("[registerUser]", e);
 		}
 		return null;
 	}
@@ -976,7 +922,7 @@ public class Usermanagement {
 			String firstname, String email, Date age, String street,
 			String additionalname, String fax, String zip, long states_id,
 			String town, long language_id, boolean sendWelcomeMessage,
-			List<Object> organisations, String phone, String baseURL,
+			List<Long> organisations, String phone, String baseURL,
 			Boolean sendConfirmation, String sip_user, String sip_pass,
 			String sip_auth, boolean generateSipUserData,
 			String jName_timezone, Boolean forceTimeZoneCheck,
@@ -1022,12 +968,16 @@ public class Usermanagement {
 						if (!sendMail.equals("success"))
 							return new Long(-19);
 					}
-					Long address_id = addressmanagement.saveAddress(street,
-							zip, town, states_id, additionalname, "", fax,
-							phone, email);
-					if (address_id == null) {
-						return new Long(-22);
-					}
+					Adresses adr =  new Adresses();
+					adr.setStreet(street);
+					adr.setZip(zip);
+					adr.setTown(town);
+					adr.setStates(statemanagement.getStateById(states_id));
+					adr.setAdditionalname(additionalname);
+					adr.setComment("");
+					adr.setFax(fax);
+					adr.setPhone(phone);
+					adr.setEmail(email);
 
 					// If this user needs first to click his E-Mail verification
 					// code then set the status to 0
@@ -1037,10 +987,10 @@ public class Usermanagement {
 
 					Long user_id = addUser(level_id, availible, status,
 							firstname, login, lastname, language_id, password,
-							address_id, age, hash, sip_user, sip_pass,
+							adr, age, hash, sip_user, sip_pass,
 							sip_auth, generateSipUserData, jName_timezone,
 							forceTimeZoneCheck, userOffers, userSearchs,
-							showContactData, showContactDataToContacts);
+							showContactData, showContactDataToContacts, organisations);
 					log.debug("Added user-Id " + user_id);
 					if (user_id == null) {
 						return new Long(-111);
@@ -1052,10 +1002,7 @@ public class Usermanagement {
 					 * (adress_emails_id==null) { return new Long(-112); }
 					 */
 
-					organisationmanagement.addUserOrganisationsByHashMap(
-							user_id, organisations);
-
-					if (address_id > 0 && user_id > 0) {
+					if (adr.getAdresses_id() > 0 && user_id > 0) {
 						return user_id;
 					} else {
 						return new Long(-16);
@@ -1090,16 +1037,16 @@ public class Usermanagement {
 	 * @param language_id
 	 * @param Userpass
 	 *            is MD5-crypted
-	 * @param adress_id
+	 * @param Adresses adress
 	 * @return user_id or error null
 	 */
 	public Long addUser(long level_id, int availible, int status,
 			String firstname, String login, String lastname, long language_id,
-			String userpass, long adress_id, Date age, String hash,
+			String userpass, Adresses adress, Date age, String hash,
 			String sip_user, String sip_pass, String sip_auth,
 			boolean generateSipUserData, String jName_timezone,
 			Boolean forceTimeZoneCheck, String userOffers, String userSearchs,
-			Boolean showContactData, Boolean showContactDataToContacts) {
+			Boolean showContactData, Boolean showContactDataToContacts, List<Long> orgIds) {
 		try {
 
 			Users users = new Users();
@@ -1107,7 +1054,7 @@ public class Usermanagement {
 			users.setLogin(login);
 			users.setLastname(lastname);
 			users.setAge(age);
-			users.setAdresses(addressmanagement.getAdressbyId(adress_id));
+			users.setAdresses(adress);
 			users.setAvailible(availible);
 			users.setLastlogin(new Date());
 			users.setLasttrans(new Long(0));
@@ -1159,15 +1106,13 @@ public class Usermanagement {
 					.createPassPhrase(userpass));
 			users.setRegdate(new Date());
 			users.setDeleted("false");
-
-			users = em.merge(users);
-
-			em.flush();
-			em.refresh(users);
-
-			Long user_id = users.getUser_id();
-
-			return user_id;
+			
+			//new user add organizations without checks
+			List<Organisation_Users> orgList = users.getOrganisation_users();
+			for (Long orgId : orgIds) {
+				orgList.add(organisationmanagement.getOrgUser(orgId, null, ""));
+			}
+			return addUser(users);
 
 		} catch (Exception ex2) {
 			log.error("[registerUser]", ex2);
@@ -1205,7 +1150,7 @@ public class Usermanagement {
 
 	public Long addUserWithExternalKey(long level_id, int availible,
 			int status, String firstname, String login, String lastname,
-			long language_id, String userpass, Long adress_id, Date age,
+			long language_id, String userpass, Adresses address, Date age,
 			String hash, Long externalUserId, String externalUserType,
 			boolean generateSipUserData, String email, String jNameTimeZone,
 			String pictureuri) {
@@ -1216,12 +1161,11 @@ public class Usermanagement {
 			users.setLastname(lastname);
 			users.setAge(age);
 
-			if (adress_id != null && adress_id > 0) {
-				users.setAdresses(addressmanagement.getAdressbyId(adress_id));
+			if (address != null) {
+				users.setAdresses(address);
 			} else {
-				adress_id = addressmanagement.saveAddress("", "", "", 1L, "",
+				users.setAdresses("", "", "", statemanagement.getStateById(1L), "",
 						"", "", "", email);
-				users.setAdresses(addressmanagement.getAdressbyId(adress_id));
 			}
 
 			users.setAvailible(availible);
@@ -1292,9 +1236,11 @@ public class Usermanagement {
 
 	public Long addUser(Users usr) {
 		try {
-			usr = em.merge(usr);
-			Long user_id = usr.getUser_id();
-			return user_id;
+			em.persist(usr);
+			//em.refresh(usr);
+			em.flush();
+
+			return usr.getUser_id();
 		} catch (Exception ex2) {
 			log.error("[addUser]", ex2);
 		}
@@ -1304,11 +1250,6 @@ public class Usermanagement {
 	public Long addUserBackup(Users usr) {
 		try {
 
-			Long adresses_id = addressmanagement.saveAddressObj(usr
-					.getAdresses());
-
-			usr.setAdresses(addressmanagement.getAdressbyId(adresses_id));
-
 			Long userSipDataId = userSipDataDao.addUserSipData(usr
 					.getUserSipData());
 			if (userSipDataId != null) {
@@ -1411,7 +1352,6 @@ public class Usermanagement {
 							statemanagement.getStateById(Long.parseLong(values
 									.get("state_id").toString())));
 
-					addressmanagement.updateAdress(savedUser.getAdresses());
 					savedUser.setShowContactData(Boolean.valueOf(values.get(
 							"showContactData").toString()));
 					savedUser.setShowContactDataToContacts(Boolean
@@ -1462,22 +1402,14 @@ public class Usermanagement {
 
 			// check if Mail given
 			if (email.length() > 0) {
-				Adresses addr = addressmanagement.retrieveAddressByEmail(email);
-				// log.debug("addr_e "+addr_e);
-				if (addr != null) {
-					// log.debug("getAdresses_id "+addr_e.getAdresses_id());
-					Users us = usersDao.getUserByAdressesId(addr
-							.getAdresses_id());
-					if (us != null) {
-						this.sendHashByUser(us, appLink);
-						return new Long(-4);
-					} else {
-						return new Long(-9);
-					}
+				// log.debug("getAdresses_id "+addr_e.getAdresses_id());
+				Users us = usersDao.getUserByEmail(email);
+				if (us != null) {
+					this.sendHashByUser(us, appLink);
+					return new Long(-4);
 				} else {
 					return new Long(-9);
 				}
-				// check if username given
 			} else if (username.length() > 0) {
 				Users us = usersDao.getUserByName(username);
 				if (us != null) {
@@ -1790,25 +1722,7 @@ public class Usermanagement {
 	}
 
 	public void updateUser(Users user) {
-		try {
-			if (user.getUser_id() > 0) {
-				try {
-					if (user.getUser_id() == null) {
-						em.persist(user);
-					} else {
-						if (!em.contains(user)) {
-							em.merge(user);
-						}
-					}
-				} catch (Exception ex2) {
-					log.error("[updateUser] ", ex2);
-				}
-			} else {
-				log.error("[updateUser] " + "Error: No USER_ID given ");
-			}
-		} catch (Exception e) {
-			log.error("[updateUser]", e);
-		}
+		usersDao.updateUser(user);
 	}
 
 	/**

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/dao/UsersDaoImpl.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/dao/UsersDaoImpl.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/dao/UsersDaoImpl.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/dao/UsersDaoImpl.java Sun Dec 18 11:44:08 2011
@@ -14,6 +14,7 @@ import javax.persistence.criteria.Predic
 import javax.persistence.criteria.Root;
 
 import org.apache.commons.lang.StringUtils;
+import org.openmeetings.app.persistence.beans.adresses.Adresses;
 import org.openmeetings.app.persistence.beans.user.Users;
 import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
 import org.openmeetings.utils.crypt.ManageCryptStyle;
@@ -47,12 +48,7 @@ public class UsersDaoImpl {
 					users = (Users) query.getSingleResult();
 				} catch (NoResultException ex) {
 				}
-
-				// Somehow the Organizations are missing here o
-
 				return users;
-				// TODO: Add Usergroups to user
-				// users.setUsergroups(ResHandler.getGroupmanagement().getUserGroups(user_id));
 			} catch (Exception ex2) {
 				log.error("getUser", ex2);
 			}
@@ -86,9 +82,10 @@ public class UsersDaoImpl {
 				Users us = getUser(USER_ID);
 				us.setDeleted("true");
 				us.setUpdatetime(new Date());
-				// result +=
-				// Groupmanagement.getInstance().deleteUserFromAllGroups(new
-				// Long(USER_ID));
+				Adresses adr = us.getAdresses();
+				if (adr != null) {
+					adr.setDeleted("true");
+				}
 
 				if (us.getUser_id() == null) {
 					em.persist(us);
@@ -250,13 +247,13 @@ public class UsersDaoImpl {
 		return null;
 	}
 
-	public Users getUserByAdressesId(Long adresses_id) {
+	public Users getUserByEmail(String email) {
 		try {
 			String hql = "SELECT u FROM Users as u "
-					+ " where u.adresses.adresses_id = :adresses_id"
+					+ " where u.adresses.email = :email"
 					+ " AND u.deleted <> :deleted";
 			Query query = em.createQuery(hql);
-			query.setParameter("adresses_id", adresses_id);
+			query.setParameter("email", email);
 			query.setParameter("deleted", "true");
 			Users us = null;
 			try {

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/installation/ImportInitvalues.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/installation/ImportInitvalues.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/installation/ImportInitvalues.java Sun Dec 18 11:44:08 2011
@@ -1,5 +1,6 @@
 package org.openmeetings.app.installation;
 
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -559,11 +560,15 @@ public class ImportInitvalues {
 			Long default_lang_id = Long.parseLong(configdefaultLang);
 			if (default_lang_id == null) default_lang_id = 1L;
 			
+			// Add default group
+			Long organisation_id = organisationmanagement.addOrganisation(
+					defaultOrganisationName, 1);
+			
 			// BaseUrl as param is empty as we do not send an EMAIL here
 			Long user_id = userManagement.registerUserInit(new Long(3), 3, 1,
 					1, username, userpass, "lastname", "firstname", email,
 					new java.util.Date(), "street", "no", "fax", "zip", 1,
-					"town", default_lang_id, false, null, "phone", "", false, "", "", "",
+					"town", default_lang_id, false, Arrays.asList(organisation_id), "phone", "", false, "", "", "",
 					false, timeZone, false, "", "", false, true);
 
 			log.debug("Installation - User Added user-Id " + user_id);
@@ -573,14 +578,6 @@ public class ImportInitvalues {
 						"Could not add user user returns a negative error message: "
 								+ user_id);
 			}
-
-			// Add default group
-			Long organisation_id = organisationmanagement.addOrganisation(
-					defaultOrganisationName, user_id);
-
-			// Add user to default group
-			organisationmanagement.addUserToOrganisation(user_id,
-					organisation_id, null, "");
 		} catch (Exception e) {
 			log.error("[loadInitUserAndOrganisation] ", e);
 		}

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/domain/Organisation.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/domain/Organisation.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/domain/Organisation.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/domain/Organisation.java Sun Dec 18 11:44:08 2011
@@ -9,9 +9,19 @@ import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 @Entity
+@NamedQueries({
+	@NamedQuery(name="getOrganisationById",
+		query="SELECT c FROM Organisation AS c WHERE c.organisation_id = :organisation_id AND c.deleted <> :deleted")
+	, @NamedQuery(name="getAnyOrganisationById",
+		query="SELECT c FROM Organisation AS c WHERE c.organisation_id = :organisation_id")
+	, @NamedQuery(name="getOrganisationsByUserId",
+		query="SELECT u.organisation_users.organisation FROM Users u WHERE u.deleted = 'false' AND u.user_id = :user_id")
+})
 @Table(name = "organisation")
 public class Organisation implements Serializable {
 	private static final long serialVersionUID = 99123580264065654L;

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/domain/Organisation_Users.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/domain/Organisation_Users.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/domain/Organisation_Users.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/domain/Organisation_Users.java Sun Dec 18 11:44:08 2011
@@ -11,9 +11,17 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 @Entity
+@NamedQueries({
+	@NamedQuery(name="selectMaxUsersByOrganisationId",
+		query="SELECT COUNT(c.organisation_users_id) FROM Organisation_Users c WHERE c.deleted = 'false' AND c.organisation.organisation_id = :organisation_id")
+	, @NamedQuery(name="getOrganisation_UserByUserAndOrganisation",
+		query="SELECT ou FROM Users u, IN(u.organisation_users) ou WHERE u.deleted = 'false' AND u.user_id = :user_id AND ou.organisation.organisation_id = :organisation_id")
+})
 @Table(name = "organisation_users")
 public class Organisation_Users implements Serializable {
 
@@ -29,7 +37,7 @@ public class Organisation_Users implemen
 
 	@Column(name = "user_id")
 	private Long user_id;
-	
+
 	@Column(name = "starttime")
 	private Date starttime;
 	

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/user/Users.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/user/Users.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/user/Users.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/user/Users.java Sun Dec 18 11:44:08 2011
@@ -1,6 +1,7 @@
 package org.openmeetings.app.persistence.beans.user;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -13,16 +14,23 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 
 import org.openmeetings.app.persistence.beans.adresses.Adresses;
+import org.openmeetings.app.persistence.beans.adresses.States;
 import org.openmeetings.app.persistence.beans.basic.OmTimeZone;
 import org.openmeetings.app.persistence.beans.basic.Sessiondata;
 import org.openmeetings.app.persistence.beans.domain.Organisation_Users;
 
 @Entity
+@NamedQueries({
+    @NamedQuery(name="getUsersByOrganisationId",
+    	query="SELECT u FROM Users u WHERE u.deleted = 'false' AND u.organisation_users.organisation.organisation_id = :organisation_id")
+})
 @Table(name = "users")
 public class Users implements Serializable {
 
@@ -72,7 +80,7 @@ public class Users implements Serializab
 	private String activatehash;
 
 	
-	@ManyToOne(fetch = FetchType.EAGER)
+	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
 	@JoinColumn(name = "adresses_id", insertable = true, updatable = true)
 	private Adresses adresses;
 	
@@ -82,11 +90,10 @@ public class Users implements Serializab
 	private Userdata rechnungsaddressen;
 	@Transient
 	private Userdata lieferadressen;
-	private Usergroups[] usergroups;
 
 	@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
 	@JoinColumn(name = "user_id", insertable = true, updatable = true)
-	private List<Organisation_Users> organisation_users;
+	private List<Organisation_Users> organisation_users = new ArrayList<Organisation_Users>();
 
 	@ManyToOne(fetch = FetchType.EAGER)
 	@JoinColumn(name = "userSipDataId", insertable = true, updatable = true)
@@ -132,6 +139,23 @@ public class Users implements Serializab
 		this.adresses = adresses;
 	}
 
+	public void setAdresses(String street, String zip, String town,
+			States state, String additionalname, String comment, String fax,
+			String phone, String email) {
+		if (this.adresses == null) {
+			this.adresses = new Adresses();
+		}
+		this.adresses.setStreet(street);
+		this.adresses.setZip(zip);
+		this.adresses.setTown(town);
+		this.adresses.setStates(state);
+		this.adresses.setAdditionalname(additionalname);
+		this.adresses.setComment(comment);
+		this.adresses.setFax(fax);
+		this.adresses.setPhone(phone);
+		this.adresses.setEmail(email);
+	}
+
 	public Date getAge() {
 		return age;
 	}
@@ -246,14 +270,6 @@ public class Users implements Serializab
 		this.title_id = title_id;
 	}
 
-	public Usergroups[] getUsergroups() {
-		return usergroups;
-	}
-
-	public void setUsergroups(Usergroups[] usergroups) {
-		this.usergroups = usergroups;
-	}
-
 	public Userlevel getUserlevel() {
 		return userlevel;
 	}
@@ -308,7 +324,9 @@ public class Users implements Serializab
 
 	public void setOrganisation_users(
 			List<Organisation_Users> organisation_users) {
-		this.organisation_users = organisation_users;
+		if (organisation_users != null) {
+			this.organisation_users = organisation_users;
+		}
 	}
 
 	public String getResethash() {

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/MainService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/MainService.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/MainService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/MainService.java Sun Dec 18 11:44:08 2011
@@ -218,7 +218,7 @@ public class MainService implements IPen
 			if (o == null)
 				return null;
 
-			if (o.getOrganisation_users() == null) {
+			if (o.getOrganisation_users().isEmpty()) {
 				throw new Exception("Users has no organization assigned");
 			}
 
@@ -1085,33 +1085,4 @@ public class MainService implements IPen
 	 * WAREN_ID){ return ResHandler.deleteWarenkorb(SID,WAREN_ID); }
 	 */
 
-	/*
-	 * UserGroup Management Handlers
-	 * 
-	 * public Usergroups[] getAllGroups(String SID){ return
-	 * ResHandler.getAllGroups(SID); } public List getAllUsers(String SID,int
-	 * start, int max){ Long users_id =
-	 * Sessionmanagement.getInstance().checkSession(SID); long user_level =
-	 * userManagement.getUserLevelByID(users_id); return
-	 * userManagement.getusersAdmin(user_level,start,max); } public
-	 * Users_Usergroups getSingleGroup(String SID,int GROUP_ID){ return
-	 * ResHandler.getSingleGroup(SID, GROUP_ID); } public Users_Usergroups
-	 * getGroupUsers(String SID,int GROUP_ID){ return
-	 * ResHandler.getGroupUsers(SID,GROUP_ID); } public String
-	 * addUserToGroup(String SID,int GROUP_ID,int USER_ID,String comment){
-	 * return ResHandler.addUserToGroup(SID,GROUP_ID,USER_ID,comment); } public
-	 * String updateUserGroup(String SID,int UID,int GROUP_ID,int USER_ID,String
-	 * comment){ return
-	 * ResHandler.updateUserGroup(SID,UID,GROUP_ID,USER_ID,comment); } public
-	 * String deleteUserGroupByID(String SID,int UID){ return
-	 * ResHandler.deleteUserGroupByID(SID,UID); } public String addGroup(String
-	 * SID,String name,int freigabe,String description,String comment){ return
-	 * ResHandler.addGroup(SID,name,freigabe,description,comment); } public
-	 * String updateGroup(String SID,int GROUP_ID,int freigabe, String name,
-	 * String description, String comment){ return
-	 * ResHandler.updateGroup(SID,GROUP_ID,freigabe, name, description,
-	 * comment); } public String deleteGroup(String SID,int GROUP_ID){ return
-	 * ResHandler.deleteGroup(SID,GROUP_ID); }
-	 */
-
 }

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/UserService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/UserService.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/UserService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/UserService.java Sun Dec 18 11:44:08 2011
@@ -1,5 +1,6 @@
 package org.openmeetings.app.remote;
 
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
@@ -16,7 +17,6 @@ import org.openmeetings.app.data.beans.b
 import org.openmeetings.app.data.calendar.daos.AppointmentDaoImpl;
 import org.openmeetings.app.data.calendar.daos.MeetingMemberDaoImpl;
 import org.openmeetings.app.data.conference.Roommanagement;
-import org.openmeetings.app.data.user.Addressmanagement;
 import org.openmeetings.app.data.user.Organisationmanagement;
 import org.openmeetings.app.data.user.Salutationmanagement;
 import org.openmeetings.app.data.user.Usermanagement;
@@ -24,7 +24,6 @@ import org.openmeetings.app.data.user.da
 import org.openmeetings.app.data.user.dao.PrivateMessagesDaoImpl;
 import org.openmeetings.app.data.user.dao.UserContactsDaoImpl;
 import org.openmeetings.app.data.user.dao.UsersDaoImpl;
-import org.openmeetings.app.persistence.beans.adresses.Adresses;
 import org.openmeetings.app.persistence.beans.domain.Organisation;
 import org.openmeetings.app.persistence.beans.lang.Fieldlanguagesvalues;
 import org.openmeetings.app.persistence.beans.recording.RoomClient;
@@ -80,8 +79,6 @@ public class UserService {
 	@Autowired
 	private ManageCryptStyle manageCryptStyle;
 	@Autowired
-	private Addressmanagement addressmanagement;
-	@Autowired
 	private Roommanagement roommanagement;
 	@Autowired
 	private MeetingMemberDaoImpl meetingMemberDao;
@@ -322,7 +319,7 @@ public class UserService {
 	 * @param regObjectObj
 	 * @return
 	 */
-	@SuppressWarnings({ "rawtypes", "unchecked" })
+	@SuppressWarnings({ "rawtypes" })
 	public Long saveOrUpdateUser(String SID, Object regObjectObj) {
 		try {
 			LinkedHashMap argObjectMap = (LinkedHashMap) regObjectObj;
@@ -334,8 +331,12 @@ public class UserService {
 			}
 			Long users_id = sessionManagement.checkSession(SID);
 			Long user_level = userManagement.getUserLevelByID(users_id);
-
-			List organisations = (List) argObjectMap.get("organisations");
+			
+			List<?> orgO = (List<?>)argObjectMap.get("organisations");
+			List<Long> orgIds = new ArrayList<Long>(orgO.size());
+			for (Object o : orgO) {
+				orgIds.add(Long.valueOf((Integer)o));
+			}
 			Date age = null;
 			if (argObjectMap.get("userage") instanceof Date) {
 				age = (Date) argObjectMap.get("userage");
@@ -369,7 +370,7 @@ public class UserService {
 						argObjectMap.get("town").toString(),
 						new Long(argObjectMap.get("language_id").toString()),
 						true,
-						organisations,
+						orgIds,
 						argObjectMap.get("phone").toString(),
 						"",
 						false,
@@ -423,7 +424,7 @@ public class UserService {
 								Integer.valueOf(
 										argObjectMap.get("status").toString())
 										.intValue(),
-								organisations,
+								orgIds,
 								Integer.valueOf(
 										argObjectMap.get("title_id").toString())
 										.intValue(),
@@ -475,20 +476,6 @@ public class UserService {
 					// Setting user deleted
 					Long userId = usersDao.deleteUserID(user_idClient);
 
-					Users user = userManagement.checkAdmingetUserById(
-							user_level, userId);
-
-					// Updating address
-					Adresses ad = user.getAdresses();
-
-					if (ad != null) {
-						ad.setDeleted("true");
-
-						addressmanagement.updateAdress(ad);
-						log.debug("deleteUserId : Address updated");
-
-					}
-
 					return userId;
 				} else {
 					return new Long(-38);

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/xmlimport/UserImport.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/xmlimport/UserImport.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/xmlimport/UserImport.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/xmlimport/UserImport.java Sun Dec 18 11:44:08 2011
@@ -6,9 +6,9 @@ import java.util.Iterator;
 import org.dom4j.Document;
 import org.dom4j.Element;
 import org.dom4j.io.SAXReader;
-import org.openmeetings.app.data.user.Addressmanagement;
 import org.openmeetings.app.data.user.Emailmanagement;
 import org.openmeetings.app.data.user.Organisationmanagement;
+import org.openmeetings.app.data.user.Statemanagement;
 import org.openmeetings.app.data.user.Usermanagement;
 import org.openmeetings.app.data.user.dao.UsersDaoImpl;
 import org.openmeetings.app.persistence.beans.user.Users;
@@ -27,11 +27,11 @@ public class UserImport {
 	@Autowired
 	private Organisationmanagement organisationmanagement;
 	@Autowired
-	private Addressmanagement addressmanagement;
-	@Autowired
 	private Emailmanagement emailManagement;
 	@Autowired
 	private UsersDaoImpl usersDao;
+	@Autowired
+	private Statemanagement statemanagement;
 
 	public Long addUsersByDocument(InputStream is) throws Exception {
 
@@ -129,10 +129,8 @@ public class UserImport {
 
 			// check for duplicate Login or mail:
 			if (usersDao.checkUserLogin(us.getLogin()) && mailCheck) {
-				Long address_id = addressmanagement.saveAddress(street, zip,
-						town, state_id, additionalname, comment, fax, phone, email);
-
-				us.setAdresses(addressmanagement.getAdressbyId(address_id));
+				us.setAdresses(street, zip,
+						town, statemanagement.getStateById(state_id), additionalname, comment, fax, phone, email);
 
 				userManagement.addUser(us);
 

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java Sun Dec 18 11:44:08 2011
@@ -1729,8 +1729,6 @@ public class BackupExport {
 
 				user_organisation.addElement("deleted").addCDATA(
 						formatString("" + orgUsers.getDeleted()));
-				user_organisation.addElement("user_id").addCDATA(
-						formatString("" + orgUsers.getUser_id()));
 				user_organisation.addElement("isModerator").addCDATA(
 						formatString("" + orgUsers.getIsModerator()));
 				user_organisation.addElement("comment").addCDATA(

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java Sun Dec 18 11:44:08 2011
@@ -50,7 +50,6 @@ import org.openmeetings.app.data.user.da
 import org.openmeetings.app.data.user.dao.PrivateMessagesDaoImpl;
 import org.openmeetings.app.data.user.dao.UserContactsDaoImpl;
 import org.openmeetings.app.data.user.dao.UsersDaoImpl;
-import org.openmeetings.app.persistence.beans.adresses.Adresses;
 import org.openmeetings.app.persistence.beans.adresses.States;
 import org.openmeetings.app.persistence.beans.basic.Configuration;
 import org.openmeetings.app.persistence.beans.basic.LdapConfig;
@@ -885,19 +884,9 @@ public class BackupImport {
 							statemanagement.getStateById(1L);
 						}
 
-						Adresses adr = new Adresses();
-						adr.setAdditionalname(additionalname);
-						adr.setComment(comment);
-						adr.setStarttime(new Date());
-						adr.setFax(fax);
-						adr.setStreet(street);
-						adr.setTown(town);
-						adr.setZip(zip);
-						adr.setStates(st);
-						adr.setPhone(phone);
-						adr.setEmail(email);
-
-						us.setAdresses(adr);
+						us.setAdresses(street, zip, town,
+								st, additionalname, comment, fax,
+								phone, email);
 
 						HashSet<Organisation_Users> orgUsers = new HashSet<Organisation_Users>();
 
@@ -920,8 +909,6 @@ public class BackupImport {
 												.element("organisation_id")
 												.getText())),
 										Maps.ORGANISATIONS);
-								Long user_id = importLongType(unformatString(organisationObject
-										.element("user_id").getText()));
 								Boolean isModerator = importBooleanType(unformatString(organisationObject
 										.element("isModerator").getText()));
 								String commentOrg = unformatString(organisationObject
@@ -932,7 +919,6 @@ public class BackupImport {
 								Organisation_Users orgUser = new Organisation_Users();
 								orgUser.setOrganisation(organisationmanagement
 										.getOrganisationByIdBackup(organisation_id));
-								orgUser.setUser_id(user_id);
 								orgUser.setIsModerator(isModerator);
 								orgUser.setComment(commentOrg);
 								orgUser.setStarttime(new Date());
@@ -955,10 +941,8 @@ public class BackupImport {
 							Organisation_Users organisationUsers = orgUserIterator
 									.next();
 
-							organisationUsers.setUser_id(actualNewUserId);
-
 							organisationmanagement
-									.addOrganisationUserObj(organisationUsers);
+									.addOrganisationUserObj(actualNewUserId, organisationUsers);
 
 						}
 

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/utils/OMContextListener.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/utils/OMContextListener.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/utils/OMContextListener.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/utils/OMContextListener.java Sun Dec 18 11:44:08 2011
@@ -1,16 +1,14 @@
 package org.openmeetings.utils;
 
 import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
 
 import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
 import org.red5.logging.ContextLoggingListener;
 
-public class OMContextListener implements ServletContextListener {
-	private ContextLoggingListener cll = new ContextLoggingListener();
+public class OMContextListener extends ContextLoggingListener {
 	
 	public void contextDestroyed(ServletContextEvent event) {
-		cll.contextDestroyed(event);
+		super.contextDestroyed(event);
 	}
 
 	public void contextInitialized(ServletContextEvent event) {
@@ -19,7 +17,7 @@ public class OMContextListener implement
 		System.setProperty("current_openmeetings_context_name", ScopeApplicationAdapter.webAppRootKey);
 		System.setProperty("webapp.contextPath", ScopeApplicationAdapter.webAppRootPath);
 		System.setProperty("logback.configurationFile", "logback-config.xml");
-		cll.contextInitialized(event);
+		super.contextInitialized(event);
 	}
 
 	private String pathToName(ServletContextEvent event) {

Modified: incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/domain/TestUserGroupAggregation.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/domain/TestUserGroupAggregation.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/domain/TestUserGroupAggregation.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/domain/TestUserGroupAggregation.java Sun Dec 18 11:44:08 2011
@@ -21,24 +21,24 @@ public class TestUserGroupAggregation ex
 	@Test
 	public void testitNow() {
 
-		List orgUser = organisationmanagement.getOrganisationsByUserId(3, 1, 0,
+		List<Organisation> orgUser = organisationmanagement.getOrganisationsByUserId(3, 1, 0,
 				100, "organisation_id", true);
 
 		log.error("testitNow" + orgUser.size());
 
-		for (Iterator it2 = orgUser.iterator(); it2.hasNext();) {
-			Organisation orgUserObj = (Organisation) it2.next();
+		for (Iterator<Organisation> it2 = orgUser.iterator(); it2.hasNext();) {
+			Organisation orgUserObj = it2.next();
 			log.error("testitNow" + orgUserObj.getOrganisation_id());
 			log.error(orgUserObj.getName());
 		}
 
-		List orgUser2 = organisationmanagement.getRestOrganisationsByUserId(3,
+		List<Organisation> orgUser2 = organisationmanagement.getRestOrganisationsByUserId(3,
 				1, 0, 100, "organisation_id", true);
 
 		log.error("testitNow" + orgUser2.size());
 
-		for (Iterator it2 = orgUser2.iterator(); it2.hasNext();) {
-			Organisation orgUserObj = (Organisation) it2.next();
+		for (Iterator<Organisation> it2 = orgUser2.iterator(); it2.hasNext();) {
+			Organisation orgUserObj = it2.next();
 			log.error("testitNow" + orgUserObj.getOrganisation_id());
 			log.error(orgUserObj.getName());
 		}

Added: incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/user/TestUserOrganisation.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/user/TestUserOrganisation.java?rev=1220365&view=auto
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/user/TestUserOrganisation.java (added)
+++ incubator/openmeetings/trunk/singlewebapp/src/test/org/openmeetings/test/user/TestUserOrganisation.java Sun Dec 18 11:44:08 2011
@@ -0,0 +1,63 @@
+package org.openmeetings.test.user;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.openmeetings.app.data.user.Organisationmanagement;
+import org.openmeetings.app.data.user.dao.UsersDaoImpl;
+import org.openmeetings.app.persistence.beans.domain.Organisation;
+import org.openmeetings.app.persistence.beans.domain.Organisation_Users;
+import org.openmeetings.app.persistence.beans.user.Users;
+import org.openmeetings.test.AbstractOpenmeetingsSpringTest;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestUserOrganisation extends AbstractOpenmeetingsSpringTest {
+	@Autowired
+	private Organisationmanagement orgManagement;
+	@Autowired
+	private UsersDaoImpl usersDao;
+	
+	private Users getValidUser() {
+		for (Users u : usersDao.getAllUsers()) {
+			if ("false".equalsIgnoreCase(u.getDeleted()) && u.getOrganisation_users().size() > 0) {
+				return u;
+			}
+		}
+		fail("Unable to find valid user");
+		return null;  //unreachable
+	}
+	
+	@Test
+	public void getUsersByOrganisationId() {
+		Users u = getValidUser();
+		Long orgId = u.getOrganisation_users().get(0).getOrganisation().getOrganisation_id();
+		List<Users> ul = orgManagement.getUsersByOrganisationId(orgId, 0, 9999, "login", true);
+		assertTrue("Default Organisation should contain at least 1 user: " + ul.size(), ul.size() > 0);
+		
+		Organisation_Users ou = orgManagement.getOrganisation_UserByUserAndOrganisation(u.getUser_id(), orgId);
+		assertNotNull("Unable to found [organisation, user] pair - [" + orgId + "," + u.getUser_id() + "]", ou);
+	}
+	
+	@Test
+	public void addOrganisation() {
+		Long orgId = orgManagement.addOrganisation("Test Org", 1); //inserted by not checked
+		assertNotNull("New Organisation have valid id", orgId);
+		
+		List<Users> ul = orgManagement.getUsersByOrganisationId(orgId, 0, 9999, "login", true);
+		assertTrue("New Organisation should contain NO users: " + ul.size(), ul.size() == 0);
+		
+		boolean found = false;
+		List<Organisation> restL = orgManagement.getRestOrganisationsByUserId(3, 1, 0, 9999, "name", true);
+		for (Organisation o : restL) {
+			if (orgId.equals(o.getOrganisation_id())) {
+				found = true;
+				break;
+			}
+		}
+		assertTrue("New organisation should not be included into organisation list of any user", found);
+	}
+}

Modified: incubator/openmeetings/trunk/singlewebapp/src/userservice/org/openmeetings/axis/services/UserWebService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/userservice/org/openmeetings/axis/services/UserWebService.java?rev=1220365&r1=1220364&r2=1220365&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/userservice/org/openmeetings/axis/services/UserWebService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/userservice/org/openmeetings/axis/services/UserWebService.java Sun Dec 18 11:44:08 2011
@@ -11,11 +11,9 @@ import org.openmeetings.app.data.basic.S
 import org.openmeetings.app.data.basic.dao.SOAPLoginDaoImpl;
 import org.openmeetings.app.data.beans.basic.ErrorResult;
 import org.openmeetings.app.data.beans.basic.SearchResult;
-import org.openmeetings.app.data.user.Addressmanagement;
 import org.openmeetings.app.data.user.Organisationmanagement;
 import org.openmeetings.app.data.user.Usermanagement;
 import org.openmeetings.app.data.user.dao.UsersDaoImpl;
-import org.openmeetings.app.persistence.beans.adresses.Adresses;
 import org.openmeetings.app.persistence.beans.basic.Configuration;
 import org.openmeetings.app.persistence.beans.basic.ErrorValues;
 import org.openmeetings.app.persistence.beans.basic.RemoteSessionObject;
@@ -49,8 +47,6 @@ public class UserWebService {
 	@Autowired
 	private Organisationmanagement organisationmanagement;
 	@Autowired
-	private Addressmanagement addressmanagement;
-	@Autowired
 	private SOAPLoginDaoImpl soapLoginDao;
 	@Autowired
 	private UsersDaoImpl usersDao;
@@ -333,20 +329,6 @@ public class UserWebService {
 				// Setting user deleted
 				usersDao.deleteUserID(userId);
 
-				Users user = userManagement.checkAdmingetUserById(user_level,
-						userId);
-
-				// Updating address
-				Adresses ad = user.getAdresses();
-
-				if (ad != null) {
-					ad.setDeleted("true");
-
-					addressmanagement.updateAdress(ad);
-					log.debug("deleteUserId : Address updated");
-
-				}
-
 				return userId;
 
 			} else {
@@ -382,20 +364,6 @@ public class UserWebService {
 				// Setting user deleted
 				usersDao.deleteUserID(userId);
 
-				Users user = userManagement.checkAdmingetUserById(user_level,
-						userId);
-
-				// Updating address
-				Adresses ad = user.getAdresses();
-
-				if (ad != null) {
-					ad.setDeleted("true");
-
-					addressmanagement.updateAdress(ad);
-					log.debug("deleteUserId : Address updated");
-
-				}
-
 				return userId;
 
 			} else {