You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2014/06/07 09:45:58 UTC

svn commit: r1601073 [2/6] - in /openmeetings: branches/3.0.x/ branches/3.0.x/docs/ branches/3.0.x/src/axis/java/org/apache/openmeetings/axis/services/ branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/basic/ branches/3.0.x/src/db/java/org/apac...

Modified: openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupImport.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupImport.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupImport.java (original)
+++ openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupImport.java Sat Jun  7 07:45:55 2014
@@ -70,12 +70,12 @@ import org.apache.openmeetings.db.dao.ro
 import org.apache.openmeetings.db.dao.server.LdapConfigDao;
 import org.apache.openmeetings.db.dao.server.OAuth2Dao;
 import org.apache.openmeetings.db.dao.server.ServerDao;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
 import org.apache.openmeetings.db.dao.user.OrganisationDao;
 import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
 import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
 import org.apache.openmeetings.db.dao.user.StateDao;
 import org.apache.openmeetings.db.dao.user.UserContactsDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.basic.ChatMessage;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
@@ -139,7 +139,7 @@ public class BackupImport {
 	@Autowired
 	private AppointmentReminderTypDao appointmentReminderTypDaoImpl;
 	@Autowired
-	private AdminUserDao usersDao;
+	private UserDao usersDao;
 	@Autowired
 	private FlvRecordingDao flvRecordingDao;
 	@Autowired

Modified: openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/UserConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/UserConverter.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/UserConverter.java (original)
+++ openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/UserConverter.java Sat Jun  7 07:45:55 2014
@@ -20,20 +20,20 @@ package org.apache.openmeetings.backup;
 
 import java.util.Map;
 
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
 import org.simpleframework.xml.stream.InputNode;
 import org.simpleframework.xml.stream.OutputNode;
 
 public class UserConverter extends OmConverter<User> {
-	private AdminUserDao userDao;
+	private UserDao userDao;
 	private Map<Long, Long> idMap;
 	
 	public UserConverter() {
 		//default constructor is for export
 	}
 	
-	public UserConverter(AdminUserDao userDao, Map<Long, Long> idMap) {
+	public UserConverter(UserDao userDao, Map<Long, Long> idMap) {
 		this.userDao = userDao;
 		this.idMap = idMap;
 	}

Modified: openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/cli/Admin.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/cli/Admin.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/cli/Admin.java (original)
+++ openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/cli/Admin.java Sat Jun  7 07:45:55 2014
@@ -52,7 +52,7 @@ import org.apache.openmeetings.backup.Ba
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.record.FlvRecording;
 import org.apache.openmeetings.db.entity.user.User;
@@ -349,7 +349,7 @@ public class Admin {
 						long invalid = 0;
 						long deleted = 0;
 						ClassPathXmlApplicationContext ctx = getApplicationContext(ctxName);
-						AdminUserDao udao = ctx.getBean(AdminUserDao.class);
+						UserDao udao = ctx.getBean(UserDao.class);
 						for (File profile : profiles.listFiles()) {
 							long pSize = OmFileHelper.getSize(profile);
 							long userId = getUserIdByProfile(profile.getName());
@@ -369,7 +369,7 @@ public class Admin {
 							}
 						}
 						long missing = 0;
-						for (User u : udao.getAllUsersDeleted()) {
+						for (User u : udao.getAllBackupUsers()) {
 							if (!u.getDeleted() && u.getPictureuri() != null && !new File(OmFileHelper.getUploadProfilesUserDir(u.getUser_id()), u.getPictureuri()).exists()) {
 								missing++;
 							}

Modified: openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/installation/ImportInitvalues.java (original)
+++ openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/installation/ImportInitvalues.java Sat Jun  7 07:45:55 2014
@@ -60,11 +60,11 @@ import org.apache.openmeetings.db.dao.ro
 import org.apache.openmeetings.db.dao.room.RoomTypeDao;
 import org.apache.openmeetings.db.dao.room.SipDao;
 import org.apache.openmeetings.db.dao.server.OAuth2Dao;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
 import org.apache.openmeetings.db.dao.user.IUserManager;
 import org.apache.openmeetings.db.dao.user.OrganisationDao;
 import org.apache.openmeetings.db.dao.user.SalutationDao;
 import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dao.user.UserLevelDao;
 import org.apache.openmeetings.db.entity.label.FieldLanguage;
 import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
@@ -89,7 +89,7 @@ public class ImportInitvalues {
 	@Autowired
 	private ConfigurationDao configurationDao;
 	@Autowired
-	private AdminUserDao usersDao;
+	private UserDao usersDao;
 	@Autowired
 	private FieldLanguageDao fieldLanguageDaoImpl;
 	@Autowired

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java Sat Jun  7 07:45:55 2014
@@ -41,7 +41,7 @@ import org.apache.openmeetings.db.dao.ca
 import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.room.RoomTypeDao;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.room.Invitation;
@@ -77,7 +77,7 @@ public class AppointmentLogic {
 	@Autowired
 	private RoomManager roomManager;
 	@Autowired
-	private AdminUserDao userDao;
+	private UserDao userDao;
 	@Autowired
 	private MeetingMemberDao meetingMemberDao;
 	@Autowired

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/conference/RoomManager.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/conference/RoomManager.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/conference/RoomManager.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/conference/RoomManager.java Sat Jun  7 07:45:55 2014
@@ -20,6 +20,7 @@ package org.apache.openmeetings.data.con
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -35,16 +36,17 @@ import javax.persistence.criteria.Predic
 import javax.persistence.criteria.Root;
 
 import org.apache.openmeetings.data.basic.FieldManager;
-import org.apache.openmeetings.data.user.OrganisationManager;
 import org.apache.openmeetings.db.dao.room.IRoomManager;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.room.RoomModeratorsDao;
 import org.apache.openmeetings.db.dao.room.RoomTypeDao;
 import org.apache.openmeetings.db.dao.room.SipDao;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.SearchResult;
 import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomModerator;
 import org.apache.openmeetings.db.entity.room.RoomOrganisation;
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
@@ -67,7 +69,7 @@ public class RoomManager implements IRoo
 	private EntityManager em;
 
 	@Autowired
-	private OrganisationManager organisationManager;
+	private OrganisationDao orgDao;
 	@Autowired
 	private RoomModeratorsDao roomModeratorsDao;
 	@Autowired
@@ -513,6 +515,25 @@ public class RoomManager implements IRoo
     	return r == null || r.getConfno() == null ? null : sipDao.countUsers(r.getConfno());
     }
 
+    private List<RoomModerator> getModerators(List<Map<String, Object>> list, Long roomId) {
+		List<RoomModerator> result = new ArrayList<RoomModerator>();
+
+		for (Map<String, Object> roomModeratorObj : list) {
+			Long roomModeratorsId = roomModeratorObj.containsKey("roomModeratorsId") ? Long.parseLong(roomModeratorObj.get("roomModeratorsId").toString()) : null;
+			Long userId = Long.parseLong(roomModeratorObj.get("userId").toString());
+			Boolean isSuperModerator = Boolean.parseBoolean(roomModeratorObj.get("isSuperModerator").toString());
+
+			RoomModerator rm = new RoomModerator();
+			rm.setRoomModeratorsId(roomModeratorsId);
+			rm.setRoomId(roomId);
+			rm.setUser(usersDao.get(userId));
+			rm.setIsSuperModerator(isSuperModerator);
+			
+			result.add(rm);
+		}
+		return result;
+    }
+
 	/**
 	 * adds a new Record to the table rooms
 	 * @param name
@@ -588,13 +609,14 @@ public class RoomManager implements IRoo
 
 				if (organisations != null) {
 					Long t = this.updateRoomOrganisations(organisations, r);
-					if (t == null)
+					if (t == null) {
 						return null;
+					}
 				}
 
 				if (roomModerators != null) {
-					roomModeratorsDao.addRoomModeratorByUserList(
-							roomModerators, r.getRooms_id());
+					r.setModerators(getModerators(roomModerators, r.getRooms_id()));
+					r = roomDao.update(r, ownerId);
 				}
 
 				return r.getRooms_id();
@@ -638,8 +660,8 @@ public class RoomManager implements IRoo
 				this.addRoomToOrganisation(3, returnId, organisation_id);
 
 				if (roomModerators != null) {
-					roomModeratorsDao.addRoomModeratorByUserList(
-							roomModerators, r.getRooms_id());
+					r.setModerators(getModerators(roomModerators, r.getRooms_id()));
+					r = roomDao.update(r, null);
 				}
 
 				return returnId;
@@ -708,13 +730,14 @@ public class RoomManager implements IRoo
 
 			if (organisations != null) {
 				Long t = this.updateRoomOrganisations(organisations, r);
-				if (t == null)
+				if (t == null) {
 					return null;
+				}
 			}
 
 			if (roomModerators != null) {
-				roomModeratorsDao.addRoomModeratorByUserList(roomModerators,
-						r.getRooms_id());
+				r.setModerators(getModerators(roomModerators, r.getRooms_id()));
+				r = roomDao.update(r, null);
 			}
 
 			return returnId;
@@ -740,8 +763,7 @@ public class RoomManager implements IRoo
 				log.debug("addRoomToOrganisation rooms '"
 						+ rOrganisation.getRoom().getName() + "'");
 				rOrganisation.setStarttime(new Date());
-				rOrganisation.setOrganisation(organisationManager
-						.getOrganisationById(organisation_id));
+				rOrganisation.setOrganisation(orgDao.get(organisation_id));
 				rOrganisation.setDeleted(false);
 
 				rOrganisation = em.merge(rOrganisation);
@@ -1081,16 +1103,17 @@ public class RoomManager implements IRoo
 			r.setAutoVideoSelect(autoVideoSelect);
 			r.setPin(conferencePin);
 			r.setSipEnabled(sipEnabled);
-			roomDao.update(r, ownerId);
+			r = roomDao.update(r, ownerId);
 
 			if (organisations != null) {
 				Long t = this.updateRoomOrganisations(organisations, r);
-				if (t == null)
+				if (t == null) {
 					return null;
+				}
 			}
 			if (roomModerators != null) {
-				roomModeratorsDao.updateRoomModeratorByUserList(roomModerators,
-						r.getRooms_id());
+				r.setModerators(getModerators(roomModerators, r.getRooms_id()));
+				r = roomDao.update(r, null);
 			}
 
 			return r.getRooms_id();
@@ -1130,7 +1153,7 @@ public class RoomManager implements IRoo
 					em.persist(r);
 				} else {
 					if (!em.contains(r)) {
-						em.merge(r);
+						r = em.merge(r);
 					}
 				}
 
@@ -1138,8 +1161,8 @@ public class RoomManager implements IRoo
 				// update as Moderator
 
 				if (roomModerators != null) {
-					roomModeratorsDao.updateRoomModeratorByUserList(
-							roomModerators, r.getRooms_id());
+					r.setModerators(getModerators(roomModerators, r.getRooms_id()));
+					r = roomDao.update(r, null);
 				}
 
 				return r.getRooms_id();

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/user/UserManager.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/user/UserManager.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/user/UserManager.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/user/UserManager.java Sat Jun  7 07:45:55 2014
@@ -31,21 +31,18 @@ import java.util.TimeZone;
 
 import javax.persistence.EntityManager;
 import javax.persistence.NoResultException;
-import javax.persistence.NonUniqueResultException;
 import javax.persistence.PersistenceContext;
 import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
 
 import org.apache.openmeetings.data.basic.FieldManager;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
 import org.apache.openmeetings.db.dao.user.IUserManager;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
 import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.SearchResult;
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
@@ -90,9 +87,11 @@ public class UserManager implements IUse
 	@Autowired
 	private StateDao statemanagement;
 	@Autowired
-	private OrganisationManager organisationManager;
+	private OrganisationDao orgDao;
 	@Autowired
-	private AdminUserDao usersDao;
+	private OrganisationUserDao orgUserDao;
+	@Autowired
+	private UserDao usersDao;
 	@Autowired
 	private EmailManager emailManagement;
 	@Autowired
@@ -104,49 +103,6 @@ public class UserManager implements IUse
 	@Autowired
 	private TimezoneUtil timezoneUtil;
 
-	/**
-	 * query for a list of users
-	 * 
-	 * @param users_id
-	 * @param user_level
-	 * @param start
-	 * @param max
-	 * @param orderby
-	 * @return
-	 */
-	public SearchResult<User> getUsersList(long user_level, int start, int max,
-			String orderby, boolean asc) {
-		try {
-			if (AuthLevelUtil.checkAdminLevel(user_level)) {
-				SearchResult<User> sresult = new SearchResult<User>();
-				sresult.setObjectName(User.class.getName());
-				sresult.setRecords(usersDao.count());
-
-				// get all users
-				CriteriaBuilder cb = em.getCriteriaBuilder();
-				CriteriaQuery<User> cq = cb.createQuery(User.class);
-				Root<User> c = cq.from(User.class);
-				Predicate condition = cb.equal(c.get("deleted"), false);
-				cq.where(condition);
-				cq.distinct(asc);
-				if (asc) {
-					cq.orderBy(cb.asc(c.get(orderby)));
-				} else {
-					cq.orderBy(cb.desc(c.get(orderby)));
-				}
-				TypedQuery<User> q = em.createQuery(cq);
-				q.setFirstResult(start);
-				q.setMaxResults(max);
-				List<User> ll = q.getResultList();
-				sresult.setResult(ll);
-				return sresult;
-			}
-		} catch (Exception ex2) {
-			log.error("[getUsersList] " + ex2);
-		}
-		return null;
-	}
-
 	public SearchResult<User> getAllUserByRange(String search, int start, int max,
 			String orderby, boolean asc) {
 		try {
@@ -163,7 +119,7 @@ public class UserManager implements IUse
 			} else {
 				sort += " DESC ";
 			}
-			String hql = DaoHelper.getSearchQuery("User", "u", search, true, false, sort, AdminUserDao.searchFields);
+			String hql = DaoHelper.getSearchQuery("User", "u", search, true, false, sort, UserDao.searchFields);
 
 			log.debug("Show HQL: " + hql);
 
@@ -189,25 +145,6 @@ public class UserManager implements IUse
 	}
 
 	/**
-	 * 
-	 * @param user_level
-	 * @param user_id
-	 * @return
-	 */
-	public User checkAdmingetUserById(long user_level, long user_id) {
-		// FIXME: We have to check here for the User only cause the
-		// Org-Moderator otherwise cannot access it
-		if (AuthLevelUtil.checkUserLevel(user_level)) {
-			return usersDao.get(user_id);
-		}
-		return null;
-	}
-
-	public List<User> getUserByMod(Long user_level, long user_id) {
-		return null;
-	}
-
-	/**
 	 * login logic
 	 * 
 	 * @param SID
@@ -237,9 +174,6 @@ public class UserManager implements IUse
 			} else {
 				User users = ll.get(0);
 
-				// Refresh User Object
-				users = refreshUserObject(users);
-
 				if (usersDao.verifyPassword(users.getUser_id(), userpass)) {
 					Boolean bool = sessiondataDao.updateUser(SID, users.getUser_id(), storePermanent, users.getLanguage_id());
 					if (bool == null) {
@@ -282,17 +216,6 @@ public class UserManager implements IUse
 		return new Long(-1);
 	}
 
-	public User refreshUserObject(User us) {
-		try {
-
-			us = em.merge(us);
-			return us;
-		} catch (Exception ex2) {
-			log.error("[loginUser]: ", ex2);
-		}
-		return null;
-	}
-
 	public User loginUserByRemoteHash(String SID, String remoteHash) {
 		try {
 
@@ -301,7 +224,7 @@ public class UserManager implements IUse
 
 			if (sessionData != null) {
 
-				User u = getUserById(sessionData.getUser_id());
+				User u = usersDao.get(sessionData.getUser_id());
 
 				sessiondataDao.updateUserWithoutSession(SID, u.getUser_id());
 
@@ -514,9 +437,7 @@ public class UserManager implements IUse
 					log.debug("user_id, organisation_id" + user_id + ", "
 							+ organisation_id);
 
-					Organisation_Users ou = organisationManager
-							.getOrganisation_UserByUserAndOrganisation(user_id,
-									organisation_id);
+					Organisation_Users ou = orgUserDao.getByOrganizationAndUser(organisation_id, user_id);
 
 					log.debug("ou: " + ou);
 
@@ -573,8 +494,7 @@ public class UserManager implements IUse
 		String baseURL = configurationDao.getBaseUrl();
 		boolean sendConfirmation = baseURL != null
 				&& !baseURL.isEmpty()
-				&& 1 == configurationDao.getConfValue(
-						"sendEmailWithVerficationCode", Integer.class, "0");
+				&& 1 == configurationDao.getConfValue("sendEmailWithVerficationCode", Integer.class, "0");
 		
 		return registerUser(login, Userpass, lastname, firstname, email, age,
 				street, additionalname, fax, zip, states_id, town, language_id,
@@ -854,10 +774,10 @@ public class UserManager implements IUse
 			if (orgIds != null) {
 				List<Organisation_Users> orgList = users.getOrganisation_users();
 				for (Long orgId : orgIds) {
-					orgList.add(organisationManager.getOrgUser(orgId, null));
+					orgList.add(new Organisation_Users(orgDao.get(orgId)));
 				}
 			}
-			return addUser(users);
+			return usersDao.update(users, null).getUser_id();
 
 		} catch (Exception ex2) {
 			log.error("[registerUser]", ex2);
@@ -865,33 +785,6 @@ public class UserManager implements IUse
 		return null;
 	}
 
-	public User getUserByExternalIdAndType(String externalUserId,
-			String externalUserType) {
-
-		try {
-
-			String hql = "select c from User as c "
-					+ "where c.externalUserId LIKE :externalUserId "
-					+ "AND c.externalUserType LIKE :externalUserType "
-					+ "AND c.deleted <> :deleted";
-
-			TypedQuery<User> query = em.createQuery(hql, User.class);
-			query.setParameter("externalUserId", externalUserId);
-			query.setParameter("externalUserType", externalUserType);
-			query.setParameter("deleted", true);
-
-			List<User> users = query.getResultList();
-
-			if (users.size() > 0) {
-				return users.get(0);
-			}
-
-		} catch (Exception ex2) {
-			log.error("[getUserByExternalIdAndType]", ex2);
-		}
-		return null;
-	}
-
 	public Long addUserWithExternalKey(long level_id, int availible,
 			int status, String firstname, String login, String lastname,
 			long language_id, boolean emptyPass, String userpass, Address address, Date age,
@@ -952,132 +845,6 @@ public class UserManager implements IUse
 		return null;
 	}
 
-	public Long addUser(User usr) {
-		try {
-			em.persist(usr);
-			//em.refresh(usr);
-			em.flush();
-
-			return usr.getUser_id();
-		} catch (Exception ex2) {
-			log.error("[addUser]", ex2);
-		}
-		return null;
-	}
-
-	/**
-	 * 
-	 * Find User by Id
-	 */
-	// -----------------------------------------------------------------------------------------------------
-	public User getUserById(Long id) {
-		log.debug("Usermanagement.getUserById");
-
-		if (id == null || id <= 0) {
-			return null;
-		}
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<User> cq = cb.createQuery(User.class);
-		Root<User> c = cq.from(User.class);
-		Predicate condition = cb.equal(c.get("deleted"), false);
-		Predicate subCondition = cb.equal(c.get("user_id"), id);
-		cq.where(condition, subCondition);
-		TypedQuery<User> q = em.createQuery(cq);
-		User u = null;
-		try {
-			u = q.getSingleResult();
-		} catch (NoResultException e) {
-			// u=null}
-		} catch (NonUniqueResultException ex) {
-		}
-
-		return u;
-	}
-
-	public User getUserByIdAndDeleted(Long id) throws Exception {
-		log.debug("Usermanagement.getUserById");
-
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<User> cq = cb.createQuery(User.class);
-		Root<User> c = cq.from(User.class);
-		Predicate condition = cb.equal(c.get("user_id"), id);
-		cq.where(condition);
-		TypedQuery<User> q = em.createQuery(cq);
-		User u = null;
-		try {
-			u = q.getSingleResult();
-		} catch (NoResultException e) {
-			// u=null}
-		}
-
-		return u;
-
-	}
-
-	// -----------------------------------------------------------------------------------------------------
-
-	/**
-	 * @author o.becherer Find User by LoginName (test existence of a active
-	 *         user with login - name
-	 */
-	// -----------------------------------------------------------------------------------------------------
-	public User getUserByLogin(String login) throws Exception {
-		log.debug("Usermanagement.getUserByLogin : " + login);
-
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<User> cq = cb.createQuery(User.class);
-		Root<User> c = cq.from(User.class);
-		Predicate condition = cb.equal(c.get("deleted"), false);
-		Predicate subCondition = cb.equal(c.get("login"), login);
-		cq.where(condition, subCondition);
-		TypedQuery<User> q = em.createQuery(cq);
-		User u = null;
-		try {
-			u = q.getSingleResult();
-		} catch (NoResultException e) {
-			// u=null}
-		}
-
-		return u;
-
-	}
-
-	// -----------------------------------------------------------------------------------------------------
-
-	/**
-	 * @author swagner Find User by LoginName or EMail (test existence of a
-	 *         active user with login - name
-	 */
-	// -----------------------------------------------------------------------------------------------------
-	public User getUserByLoginOrEmail(String userOrEmail) throws Exception {
-		// log.debug("Usermanagement.getUserByLoginOrEmail : " + userOrEmail);
-
-		String hql = "SELECT c from User AS c "
-				+ "WHERE "
-				+ "(c.login LIKE :userOrEmail OR c.adresses.email LIKE :userOrEmail  ) "
-				+ "AND c.externalUserId IS NULL " + "AND c.deleted <> :deleted";
-
-		TypedQuery<User> query = em.createQuery(hql, User.class);
-		query.setParameter("userOrEmail", userOrEmail);
-		query.setParameter("deleted", true);
-
-		List<User> ll = query.getResultList();
-
-		if (ll.size() > 1) {
-			log.error("ALERT :: There are two users in the database that have either same login or Email ");
-			return ll.get(0);
-			// throw new
-			// Exception("ALERT :: There are two users in the database that have either same login or Email ");
-		} else if (ll.size() == 1) {
-			return ll.get(0);
-		} else {
-			return null;
-		}
-
-	}
-
-	// -----------------------------------------------------------------------------------------------------
-
 	/**
 	 * @param admin
 	 * @param room_id
@@ -1158,8 +925,4 @@ public class UserManager implements IUse
 		}
 		return null;
 	}
-
-	public void updateUser(User user) {
-		usersDao.update(user, null);
-	}
 }

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java Sat Jun  7 07:45:55 2014
@@ -416,7 +416,7 @@ public class LdapLoginManagement impleme
 		User u = null;
 
 		try {
-			u = userManager.getUserByLogin(user);
+			u = usersDao.getUserByName(user, User.Type.ldap);
 		} catch (Exception e) {
 			log.error("Error retrieving Userdata : " + e.getMessage());
 		}
@@ -509,7 +509,7 @@ public class LdapLoginManagement impleme
 				}
 
 				// Return UserObject
-				User u2 = userManager.getUserById(userid);
+				User u2 = usersDao.get(userid);
 
 				if (u2 == null) {
 					return new Long(-1);
@@ -518,7 +518,7 @@ public class LdapLoginManagement impleme
 				u2.setType(Type.ldap);
 
 				// initialize lazy collection
-				userManager.refreshUserObject(u2);
+				usersDao.update(u2, u2.getUser_id());
 
 				log.debug("getUserbyId : " + userid + " : " + u2.getLogin());
 

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceService.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceService.java Sat Jun  7 07:45:55 2014
@@ -38,6 +38,7 @@ import org.apache.openmeetings.db.dao.ro
 import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.ServerDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.SearchResult;
 import org.apache.openmeetings.db.dto.server.ServerDTO;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
@@ -75,6 +76,8 @@ public class ConferenceService {
 	@Autowired
 	private UserManager userManager;
 	@Autowired
+	private UserDao userDao;
+	@Autowired
 	private RoomManager roomManager;
 	@Autowired
 	private RoomDao roomDao;
@@ -308,7 +311,7 @@ public class ConferenceService {
 
 			returnMap.put("appointment", appointment);
 
-			User us = userManager.getUserById(currentClient.getUser_id());
+			User us = userDao.get(currentClient.getUser_id());
 			TimeZone timezone = timezoneUtil.getTimeZone(us);
 
 			returnMap.put("appointment", appointment);
@@ -417,7 +420,7 @@ public class ConferenceService {
 		Long users_id = sessiondataDao.checkSession(SID);
 		Long user_level = userManager.getUserLevelByID(users_id);
 		if (AuthLevelUtil.checkUserLevel(user_level)) {
-			User user = userManager.getUserById(users_id);
+			User user = userDao.get(users_id);
 			return roomTypeDao.getAll(user == null
 					? cfgDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1") : user.getLanguage_id());
 		}
@@ -499,7 +502,7 @@ public class ConferenceService {
 
 			if (AuthLevelUtil.checkUserLevel(user_level)) {
 
-				return roomModeratorsDao.getRoomModeratorByRoomId(roomId);
+				return roomModeratorsDao.getByRoomId(roomId);
 
 			}
 

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java Sat Jun  7 07:45:55 2014
@@ -38,8 +38,8 @@ import org.apache.openmeetings.db.dao.se
 import org.apache.openmeetings.db.dao.server.LdapConfigDao;
 import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
 import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.server.RemoteSessionObject;
@@ -88,7 +88,7 @@ public class MainService implements IPen
 	@Autowired
 	private ConferenceLogDao conferenceLogDao;
 	@Autowired
-	private AdminUserDao usersDao;
+	private UserDao usersDao;
 	@Autowired
 	private LdapConfigDao ldapConfigDao;
 	@Autowired
@@ -339,8 +339,7 @@ public class MainService implements IPen
 						// If so we need to check that we create this user in
 						// OpenMeetings and update its record
 
-						User user = userManager.getUserByExternalIdAndType(
-								userObject.getExternalUserId(),
+						User user = usersDao.getExternalUser(userObject.getExternalUserId(),
 								userObject.getExternalUserType());
 
 						if (user == null) {
@@ -364,7 +363,7 @@ public class MainService implements IPen
 						} else {
 							user.setPictureuri(userObject.getPictureUrl());
 
-							userManager.updateUser(user);
+							usersDao.update(user, users_id);
 
 							currentClient.setUser_id(user.getUser_id());
 							SessionVariablesUtil.setUserId(current.getClient(), user.getUser_id());
@@ -408,7 +407,7 @@ public class MainService implements IPen
 			
 			Long defaultRpcUserid = configurationDao.getConfValue(
 					"default.rpc.userid", Long.class, "-1");
-			User defaultRpcUser = userManager.getUserById(defaultRpcUserid);
+			User defaultRpcUser = usersDao.get(defaultRpcUserid);
 			
 			User user = new User();
 			user.setOrganisation_users(defaultRpcUser.getOrganisation_users());

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/PollService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/PollService.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/PollService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/PollService.java Sat Jun  7 07:45:55 2014
@@ -25,6 +25,7 @@ import java.util.Set;
 import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.room.PollDao;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.room.PollType;
 import org.apache.openmeetings.db.entity.room.RoomPoll;
@@ -55,6 +56,8 @@ public class PollService implements IPen
 	@Autowired
 	private UserManager userManager;
 	@Autowired
+	private UserDao userDao;
+	@Autowired
 	private ScopeApplicationAdapter scopeApplicationAdapter;
 	@Autowired
 	private PollDao pollManager;
@@ -149,7 +152,7 @@ public class PollService implements IPen
 						// continue;
 					} else {
 						if (rcl.getRoom_id() != null && rcl.getRoom_id().equals(rc.getRoom_id())
-								&& userManager.getUserById(rcl.getUser_id())!=null) {
+								&& userDao.get(rcl.getUser_id())!=null) {
 							((IServiceCapableConnection) conn).invoke(
 									clientFunction, obj,
 									scopeApplicationAdapter);
@@ -186,7 +189,7 @@ public class PollService implements IPen
 				return -1;
 			}
 			
-			if(userManager.getUserById(rc.getUser_id())==null){
+			if(userDao.get(rc.getUser_id())==null){
 				log.debug("vote: Invited users can not vote");
 				return -1;
 			}
@@ -210,7 +213,7 @@ public class PollService implements IPen
 				// Is boolean Question
 				rpA.setAnswer(new Boolean(pollvalue == 1));
 			}
-			rpA.setVotedUser(userManager.getUserById(rc.getUser_id()));
+			rpA.setVotedUser(userDao.get(rc.getUser_id()));
 			rpA.setVoteDate(new Date());
 			rpA.setRoomPoll(roomP);
 			roomP.getRoomPollAnswerList().add(rpA);
@@ -248,7 +251,7 @@ public class PollService implements IPen
 					.getClientByStreamId(streamid, null);
 
 			long roomId = rc.getRoom_id();
-			if(userManager.getUserById(rc.getUser_id())==null){
+			if(userDao.get(rc.getUser_id())==null){
 				log.debug("checkHasVoted: Invited users can not vote");
 				return -1;
 			}

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/UserService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/UserService.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/UserService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/UserService.java Sat Jun  7 07:45:55 2014
@@ -28,7 +28,6 @@ import org.apache.openmeetings.cluster.S
 import org.apache.openmeetings.data.basic.FieldManager;
 import org.apache.openmeetings.data.conference.InvitationManager;
 import org.apache.openmeetings.data.conference.RoomManager;
-import org.apache.openmeetings.data.user.OrganisationManager;
 import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
@@ -40,19 +39,17 @@ import org.apache.openmeetings.db.dao.ro
 import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.ServerDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
 import org.apache.openmeetings.db.dao.user.IUserService;
 import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
 import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
 import org.apache.openmeetings.db.dao.user.SalutationDao;
 import org.apache.openmeetings.db.dao.user.UserContactsDao;
-import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.openmeetings.db.entity.user.Organisation;
 import org.apache.openmeetings.db.entity.user.Salutation;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.UserContact;
@@ -94,14 +91,12 @@ public class UserService implements IUse
 	@Autowired
 	private UserManager userManager;
 	@Autowired
-	private AdminUserDao userDao;
+	private UserDao userDao;
 	@Autowired
 	private FieldManager fieldManager;
 	@Autowired
 	private SalutationDao salutationmanagement;
 	@Autowired
-	private OrganisationManager organisationManager;
-	@Autowired
 	private RoomManager roomManager;
 	@Autowired
 	private RoomDao roomDao;
@@ -112,8 +107,6 @@ public class UserService implements IUse
 	@Autowired
 	private PrivateMessageFolderDao privateMessageFolderDao;
 	@Autowired
-	private AdminUserDao usersDao;
-	@Autowired
 	private UserContactsDao userContactsDao;
 	@Autowired
 	private MailHandler mailHandler;
@@ -140,7 +133,10 @@ public class UserService implements IUse
 	public User getUserById(String SID, long user_id) {
 		Long users_id = sessiondataDao.checkSession(SID);
 		Long user_level = userManager.getUserLevelByID(users_id);
-		return userManager.checkAdmingetUserById(user_level, user_id);
+		if (AuthLevelUtil.checkUserLevel(user_level)) {
+			return userDao.get(user_id);
+		}
+		return null;
 	}
 
 	/**
@@ -170,67 +166,6 @@ public class UserService implements IUse
 	}
 
 	/**
-	 * get a list of all users of an organisation
-	 * 
-	 * @param SID
-	 * @param organisation_id
-	 * @param start
-	 * @param max
-	 * @param orderby
-	 * @param asc
-	 * @return list of all users of an organisation
-	 */
-	public List<User> getOrgUserList(String SID, long organisation_id,
-			int start, int max, String orderby, boolean asc) {
-		return organisationManager.getUsersByOrganisationId(organisation_id,
-				start, max, orderby, asc);
-	}
-
-	public List<User> getUserListByModForm(String SID) {
-		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		return userManager.getUserByMod(user_level, users_id);
-	}
-
-	/**
-	 * get a list of all organisations of an user
-	 * 
-	 * @param SID
-	 * @param client_user
-	 * @param start
-	 * @param max
-	 * @param orderby
-	 * @param asc
-	 * @return list of all organisations of an user
-	 */
-	public List<Organisation> getOrganisationListByUser(String SID,
-			long client_user, int start, int max, String orderby, boolean asc) {
-		Long users_id = sessiondataDao.checkSession(SID);
-		long user_level = userManager.getUserLevelByID(users_id);
-		return organisationManager.getOrganisationsByUserId(user_level,
-				client_user, start, max, orderby, asc);
-	}
-
-	/**
-	 * gets a list of all not assigned organisations of a user
-	 * 
-	 * @param SID
-	 * @param client_user
-	 * @param start
-	 * @param max
-	 * @param orderby
-	 * @param asc
-	 * @return list of all not assigned organisations of a user
-	 */
-	public List<Organisation> getRestOrganisationListByUser(String SID,
-			long client_user, int start, int max, String orderby, boolean asc) {
-		Long users_id = sessiondataDao.checkSession(SID);
-		Long user_level = userManager.getUserLevelByID(users_id);
-		return organisationManager.getRestOrganisationsByUserId(user_level,
-				client_user, start, max, orderby, asc);
-	}
-
-	/**
 	 * gets a whole user-list(admin-role only)
 	 * 
 	 * @param SID
@@ -239,12 +174,13 @@ public class UserService implements IUse
 	 * @param orderby
 	 * @return whole user-list
 	 */
-	public SearchResult<User> getUserList(String SID, int start, int max,
-			String orderby, boolean asc) {
+	public List<User> getUserList(String SID, int start, int max, String orderby, boolean asc) {
 		Long users_id = sessiondataDao.checkSession(SID);
 		Long user_level = userManager.getUserLevelByID(users_id);
-		return userManager
-				.getUsersList(user_level, start, max, orderby, asc);
+		if (AuthLevelUtil.checkAdminLevel(user_level)) {
+			return userDao.get("", start, max, orderby + (asc ? " ASC" : " DESC"));
+		}
+		return null;
 	}
 
 	/**
@@ -316,13 +252,13 @@ public class UserService implements IUse
 			// users only
 			if (AuthLevelUtil.checkUserLevel(user_level)) {
 
-				User us = userManager.getUserById(users_id);
+				User us = userDao.get(users_id);
 
 				us.setTimeZoneId(timezoneUtil.getTimezoneByInternalJName(jname).getID());
 				us.setForceTimeZoneCheck(false);
 				us.setUpdatetime(new Date());
 
-				userManager.updateUser(us);
+				userDao.update(us, users_id);
 				
 				return us;
 
@@ -438,7 +374,7 @@ public class UserService implements IUse
 			Long user_level = userManager.getUserLevelByID(users_id);
 			// users only
 			if (AuthLevelUtil.checkUserLevel(user_level)) {
-				User from = userManager.getUserById(users_id);
+				User from = userDao.get(users_id);
 				TimeZone timezone = timezoneUtil.getTimeZone(from);
 
 				Date start = createCalendarDate(timezone, validFromDate, validFromTime);

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java Sat Jun  7 07:45:55 2014
@@ -1667,7 +1667,7 @@ public class ScopeApplicationAdapter ext
 			log.debug("UDPATE SESSION " + SID + ", " + userId);
 			sessiondataDao.updateUserWithoutSession(SID, userId);
 
-			User user = userManager.getUserById(userId);
+			User user = usersDao.get(userId);
 
 			if (user != null) {
 				currentClient.setExternalUserId(user.getExternalUserId());

Modified: openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Sat Jun  7 07:45:55 2014
@@ -236,7 +236,6 @@
 	 -->
 	</bean>
 	<bean id="invitationDao" class="org.apache.openmeetings.db.dao.room.InvitationDao" />
-	<bean id="organisationmanagement" class="org.apache.openmeetings.data.user.OrganisationManager" />
 	<bean id="organisationDao" class="org.apache.openmeetings.db.dao.user.OrganisationDao" />
 	<bean id="organisationUserDao" class="org.apache.openmeetings.db.dao.user.OrganisationUserDao" />
 	<bean id="salutationmanagement" class="org.apache.openmeetings.db.dao.user.SalutationDao" />
@@ -271,9 +270,7 @@
 	<bean id="privateMessagesDao" class="org.apache.openmeetings.db.dao.user.PrivateMessagesDao" />
 	<bean id="soapLoginDao" class="org.apache.openmeetings.db.dao.server.SOAPLoginDao" />
 	<bean id="userContactsDao" class="org.apache.openmeetings.db.dao.user.UserContactsDao" />
-	<bean id="dao" class="org.apache.openmeetings.db.dao.user.AbstractUserDao" />
-	<bean id="usersDao" class="org.apache.openmeetings.db.dao.user.UserDao" />
-	<bean id="adminUserDao" class="org.apache.openmeetings.db.dao.user.AdminUserDao" />
+	<bean id="userDao" class="org.apache.openmeetings.db.dao.user.UserDao" />
 	<bean id="userLevelDao" class="org.apache.openmeetings.db.dao.user.UserLevelDao" />
 	<bean id="serverDao" class="org.apache.openmeetings.db.dao.server.ServerDao" />
 	<bean id="chatDao" class="org.apache.openmeetings.db.dao.basic.ChatDao" />

Modified: openmeetings/branches/3.0.x/src/main/webapp/css/admin.css
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/css/admin.css?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/css/admin.css (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/css/admin.css Sat Jun  7 07:45:55 2014
@@ -274,6 +274,14 @@ table.adminListTable td div.four_column_
 	height: 20px;
 	margin: 2px 2px;
 }
+.adminForm .input {
+	display: block;
+	float: left;
+	font-size: 14px;
+	padding: 0px 0px;
+	width: 280px;
+	margin: 2px 2px;
+}
 .adminForm input[type=checkbox], .adminForm input[type=radio] {
 	width: auto;
 }
@@ -349,3 +357,9 @@ table.adminListTable td div.four_column_
 	bottom: 16px;
 	z-index:999;
 }
+.adminForm .newItem {
+	padding-left: 25px;
+	background-image: url(images/new.png);
+	background-repeat: no-repeat;
+	background-position: 5px;
+}
\ No newline at end of file

Added: openmeetings/branches/3.0.x/src/main/webapp/css/images/new.png
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/css/images/new.png?rev=1601073&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openmeetings/branches/3.0.x/src/main/webapp/css/images/new.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: openmeetings/branches/3.0.x/src/main/webapp/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/css/theme.css?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/css/theme.css (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/css/theme.css Sat Jun  7 07:45:55 2014
@@ -130,21 +130,16 @@ html, body {
 .help.support h3 {
 	margin-bottom: 5px;
 }
-div.tableWrapper {
-	background-color: #FFFFFF;
-	border: solid 1px #aacfe4;
-	width: 536px;
-	height: 500px;
-	overflow-y: scroll;
-}
-
-div.tableWrapperSmall {
+.tableWrapper, .tableWrapperSmall {
 	background-color: #FFFFFF;
 	border: solid 1px #aacfe4;
 	width: 536px;
 	height: 100px;
 	overflow-y: scroll;
 }
+.tableWrapper {
+	height: 500px;
+}
 
 .formelementradiobox {
 	margin-left: 100px;
@@ -182,7 +177,7 @@ div.tableWrapperSmall {
 	display: inline-block;
 }
 
-.pagedEntityListPanel select {
+.pagedEntityListPanel select, .adminForm .pagedEntityListPanel select {
 	padding: 0px 0px;
 	border: solid 1px #aacfe4;
 	width: 60px;
@@ -190,8 +185,20 @@ div.tableWrapperSmall {
 	display: inline;
 	float: none;
 }
-
-.pagedEntityListPanel input {
+.searchForm input[type="text"], .adminForm .searchForm input[type="text"] {
+	width: 140px;
+	float: none;
+	display: inline-block;
+}
+.searchForm input[type="submit"], .adminForm .searchForm input[type="submit"] {
+	width: auto;
+	float: none;
+	display: inline-block;
+	border: 2px outset buttonface;
+	padding: 1px 6px;
+	font-size: 12px;
+}
+.pagedEntityListPanel input, .adminForm .pagedEntityListPanel input {
 	font-size: 14px;
 	padding: 0px 0px;
 	border: solid 1px #aacfe4;
@@ -377,9 +384,6 @@ div.tableWrapperSmall {
 	background-image: url(images/world_link.png);
 	background-repeat: no-repeat;
 }
-.selected .recording.item {
-	background-color: #0099FF;
-}
 .recording.item {
 	position: relative;
 }
@@ -523,9 +527,6 @@ select.messages.selector {
 	width: 1px;
 	height: 1px;
 }
-#messagesTable tr.selected {
-	background-color: #d7ebf9;
-}
 #messagesTable tr.unread {
 	font-weight: bold;
 }

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java Sat Jun  7 07:45:55 2014
@@ -19,12 +19,10 @@
 package org.apache.openmeetings.test;
 
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
 
 import java.util.Date;
 import java.util.List;
 
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
@@ -58,8 +56,6 @@ public abstract class AbstractJUnitDefau
 	@Autowired
 	private RoomTypeDao roomTypeDao;
 	@Autowired
-	private UserManager userManager;
-	@Autowired
 	private UserDao userDao;
 	@Autowired
 	private ImportInitvalues importInitvalues;
@@ -72,6 +68,7 @@ public abstract class AbstractJUnitDefau
 	@Before
 	public void setUp() throws Exception {
 		super.setUp();
+		configurationDao.getCryptKey();
         if (userDao.count() < 1) {
             makeDefaultScheme();
             log.info("Default scheme created successfully");
@@ -152,7 +149,7 @@ public abstract class AbstractJUnitDefau
 		return ap;
 	}
 
-	public User createUser(int rnd) throws Exception {
+	public User getUser(int rnd) throws Exception {
 		User u = new User();
 		// add user
 		u.setFirstname("firstname" + rnd);
@@ -160,10 +157,13 @@ public abstract class AbstractJUnitDefau
 		u.setLogin("login" + rnd);
 		u.updatePassword(configurationDao, "pass" + rnd);
 		u.setLanguage_id(1L);
-		Long user_id = userManager.addUser(u);
-		assertTrue("Cann't add user", user_id > 0);
-		u = userManager.getUserByIdAndDeleted(user_id);
-		assertNotNull("User should not be null", u);
+		return u;
+	}
+
+	public User createUser(int rnd) throws Exception {
+		User u = getUser(rnd);
+		u = userDao.update(u, null);
+		assertNotNull("Can't add user", u);
 		return u;
 	}
 
@@ -180,7 +180,7 @@ public abstract class AbstractJUnitDefau
 	public User createUserContact(int rnd, Long ownerId) {
 		User user = userDao.getContact("email" + rnd, "firstname" + rnd, "lastname" + rnd, ownerId);
 		user = userDao.update(user, ownerId);
-		assertNotNull("Cann't add user", user);
+		assertNotNull("Can't add user contact", user);
 		return user;
 	}
 

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java Sat Jun  7 07:45:55 2014
@@ -31,8 +31,8 @@ import org.apache.openmeetings.db.dao.ca
 import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.room.RoomOrganisationDao;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
 import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
@@ -47,7 +47,7 @@ public class TestOldBackups extends Abst
 	@Autowired
 	private OrganisationDao organisationDao;
 	@Autowired
-	private AdminUserDao usersDao;
+	private UserDao usersDao;
 	@Autowired
 	private RoomDao roomDao;
 	@Autowired

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/domain/TestAddGroup.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/domain/TestAddGroup.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/domain/TestAddGroup.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/domain/TestAddGroup.java Sat Jun  7 07:45:55 2014
@@ -18,18 +18,21 @@
  */
 package org.apache.openmeetings.test.domain;
 
+import static org.junit.Assert.assertNotNull;
+
 import org.apache.log4j.Logger;
-import org.apache.openmeetings.data.user.OrganisationManager;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class TestAddGroup extends AbstractJUnitDefaults {
-
 	@Autowired
-	private OrganisationManager organisationManager;
+	private OrganisationDao orgDao;
 	@Autowired
 	private UserDao usersDao;
 
@@ -37,32 +40,19 @@ public class TestAddGroup extends Abstra
 
 	@Test
 	public void testAddingGroup() {
-
-		long organisation_id = organisationManager.addOrganisation(
-				"default", 1);
-
-		log.error("new organisation: " + organisation_id);
-
-		long organisation_usersid = organisationManager
-				.addUserToOrganisation(new Long(1), organisation_id,
-						new Long(1));
-
-		log.error("new organisation_user: " + organisation_usersid);
-
-		User us = usersDao.get(new Long(1));
+		Organisation o = new Organisation();
+		o.setName("default");
+		o = orgDao.update(o, null);
+		assertNotNull("Id of organisation created should not be null", o.getOrganisation_id());
+
+		User us = usersDao.get(1L);
+		assertNotNull("User should exist", us);
+		
+		assertNotNull("Organisation User list should exist", us.getOrganisation_users());
+		us.getOrganisation_users().add(new Organisation_Users(o));
+		us = usersDao.update(us, null);
 
 		log.error(us.getLastname());
 		log.error(us.getAdresses().getTown());
-
-		/*
-		 * for (Iterator it = us.getAdresses().getEmails().iterator();
-		 * it.hasNext();){ Adresses_Emails addrMails = (Adresses_Emails)
-		 * it.next(); log.error(addrMails.getMail().getEmail()); }
-		 * log.error("size of domains: "+us.getOrganisation_users().size()); for
-		 * (Iterator it2 = us.getOrganisation_users().iterator();
-		 * it2.hasNext();){ Organisation_Users orgUsers = (Organisation_Users)
-		 * it2.next(); log.error(orgUsers.getOrganisation().getName()); }
-		 */
 	}
-
 }

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/domain/TestUserGroupAggregation.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/domain/TestUserGroupAggregation.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/domain/TestUserGroupAggregation.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/domain/TestUserGroupAggregation.java Sat Jun  7 07:45:55 2014
@@ -18,45 +18,32 @@
  */
 package org.apache.openmeetings.test.domain;
 
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import java.util.List;
-
 import org.apache.log4j.Logger;
-import org.apache.openmeetings.data.user.OrganisationManager;
-import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class TestUserGroupAggregation extends AbstractJUnitDefaults {
+	private static final Logger log = Logger.getLogger(TestUserGroupAggregation.class);
 
 	@Autowired
-	private OrganisationManager organisationManager;
-
-	private static final Logger log = Logger
-			.getLogger(TestUserGroupAggregation.class);
+	private UserDao userDao;
 
 	@Test
 	public void testitNow() {
+		User u = userDao.get(1L);
 
-		List<Organisation> orgUser = organisationManager.getOrganisationsByUserId(3, 1, 0,
-				100, "organisation_id", true);
-
-		assertTrue("Default user must belong to at least one organisation", orgUser.size() > 0);
-
-		for (Organisation orgUserObj : orgUser) {
-			log.error("testitNow: organisation Id: '" + orgUserObj.getOrganisation_id() + "'; name: '" + orgUserObj.getName() + "'");
-		}
-
-		List<Organisation> orgUser2 = organisationManager.getRestOrganisationsByUserId(3,
-				1, 0, 100, "organisation_id", true);
-
-		log.error("testitNow: rest organisations count: " + orgUser2.size());
+		assertNotNull("Organisation list for default user must not be null", u.getOrganisation_users());
+		assertTrue("Default user must belong to at least one organisation", u.getOrganisation_users().size() > 0);
 
-		for (Organisation orgUserObj : orgUser2) {
-			log.error("testitNow: organisation Id: '" + orgUserObj.getOrganisation_id() + "'; name: '" + orgUserObj.getName() + "'");
+		for (Organisation_Users orgUserObj : u.getOrganisation_users()) {
+			log.error("testitNow: organisation Id: '" + orgUserObj.getOrganisation().getOrganisation_id() + "'; name: '" + orgUserObj.getOrganisation().getName() + "'");
 		}
-		
 	}
 }

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/smoke/TestSmokeBasic.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/smoke/TestSmokeBasic.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/smoke/TestSmokeBasic.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/smoke/TestSmokeBasic.java Sat Jun  7 07:45:55 2014
@@ -20,17 +20,17 @@ package org.apache.openmeetings.test.smo
 
 import static org.junit.Assert.assertNotNull;
 
-import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class TestSmokeBasic extends AbstractJUnitDefaults {
 	@Autowired
-	private UserManager userManager;
+	private UserDao userDao;
 	
 	@Test
 	public void createErrorValueAndTest() {
-        assertNotNull(userManager.getUserById(1L));
+        assertNotNull(userDao.get(1L));
 	}	
 }

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java Sat Jun  7 07:45:55 2014
@@ -26,8 +26,9 @@ import static org.junit.Assert.assertTru
 import java.util.List;
 import java.util.Random;
 
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.test.AbstractWicketTester;
 import org.junit.Test;
@@ -35,33 +36,53 @@ import org.springframework.beans.factory
 
 public class TestUserContact extends AbstractWicketTester {
 	@Autowired
-	private AdminUserDao adminUserDao;
-
+	private UserDao userDao;
 	@Autowired
-	private UserDao usersDao;
+	private OrganisationDao orgDao;
+	Random random = new Random();
+	
+	@Test
+	public void createUserWithOrganisation() throws Exception {
+		int rnd = random.nextInt();
+		User u = getUser(rnd);
+		u.getOrganisation_users().add(new Organisation_Users(orgDao.get(1L)));
+		u = userDao.update(u, null);
+		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getUser_id(), "pass" + rnd));
+		
+		User u1 = userDao.get(u.getUser_id());
+		assertNotNull("Just created user should not be null", u1);
+		assertNotNull("Just created user should have non null org-users", u1.getOrganisation_users());
+		assertFalse("Just created user should have not empty org-users", u1.getOrganisation_users().isEmpty());
+	}
+	
+	@Test
+	public void createUser() throws Exception {
+		int rnd = random.nextInt();
+		User u = createUser(rnd);
+		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getUser_id(), "pass" + rnd));
+	}
 	
 	@Test
 	public void addContactByOwner() throws Exception {
 		login(null, null);
 		
-		List<User> users = adminUserDao.getAllUsers();
+		List<User> users = userDao.getAllUsers();
 		assertNotNull("User list should not be null ", users);
 		assertFalse("User list should not be empty ", users.isEmpty());
 		
-		Random random = new Random();
 		User contact = createUserContact(random.nextInt(), getUserId());
 		String email = contact.getAdresses().getEmail();
-		List<User> l = adminUserDao.get(email, false);
+		List<User> l = userDao.get(email, false, 0, 9999);
 		// check that contact is visible for admin
 		assertNotNull("Contact list should not be null for admin ", l);
 		assertFalse("Contact list should not be empty for admin ", l.isEmpty());
 		
 		// check that contact is visible for owner
-		l = usersDao.get(email, getUserId());
+		l = userDao.get(email, 0, 9999, null, true, getUserId());
 		assertTrue("Contact list should not be empty for owner ", !l.isEmpty());		
 		//delete contact
-		adminUserDao.delete(contact, getUserId());
-		l = adminUserDao.get(email, false);
+		userDao.delete(contact, getUserId());
+		l = userDao.get(email, false, 0, 9999);
 		assertTrue("Contact list should be empty after deletion", l.isEmpty());
 
 		User u = createUser(random.nextInt());
@@ -69,11 +90,11 @@ public class TestUserContact extends Abs
 		contact = createUserContact(random.nextInt(), u.getUser_id());
 		email = contact.getAdresses().getEmail();
 		// check that contact is not visible for user that is not owner of this contact
-		l = usersDao.get(email, u1.getUser_id());
+		l = userDao.get(email, 0, 9999, null, true, u1.getUser_id());
 		assertTrue("Contact list should be empty for another user", l.isEmpty());
 		//delete contact
-		adminUserDao.delete(contact, u.getUser_id());
-		l = adminUserDao.get(email, false);
+		userDao.delete(contact, u.getUser_id());
+		l = userDao.get(email, false, 0, 9999);
 		assertTrue("Contact list should be empty after deletion", l.isEmpty());
 	}
 }

Modified: openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserOrganisation.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserOrganisation.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserOrganisation.java (original)
+++ openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/user/TestUserOrganisation.java Sat Jun  7 07:45:55 2014
@@ -24,8 +24,9 @@ import static org.junit.Assert.fail;
 
 import java.util.List;
 
-import org.apache.openmeetings.data.user.OrganisationManager;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.Organisation;
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
@@ -35,12 +36,15 @@ import org.springframework.beans.factory
 
 public class TestUserOrganisation extends AbstractJUnitDefaults {
 	@Autowired
-	private OrganisationManager orgManagement;
+	private OrganisationUserDao orgUserDao;
 	@Autowired
-	private AdminUserDao usersDao;
+	private OrganisationDao orgDao;
+	@Autowired
+	private UserDao usersDao;
+	public static final String ORG_NAME = "Test Org";
 	
 	private User getValidUser() {
-		for (User u : usersDao.getAllUsers()) {
+		for (User u : usersDao.getAllBackupUsers()) {
 			if (!u.getDeleted() && u.getOrganisation_users().size() > 0) {
 				return u;
 			}
@@ -53,29 +57,21 @@ public class TestUserOrganisation extend
 	public void getUsersByOrganisationId() {
 		User u = getValidUser();
 		Long orgId = u.getOrganisation_users().get(0).getOrganisation().getOrganisation_id();
-		List<User> ul = orgManagement.getUsersByOrganisationId(orgId, 0, 9999, "login", true);
+		List<Organisation_Users> ul = orgUserDao.get(orgId, 0, 9999);
 		assertTrue("Default Organisation should contain at least 1 user: " + ul.size(), ul.size() > 0);
 		
-		Organisation_Users ou = orgManagement.getOrganisation_UserByUserAndOrganisation(u.getUser_id(), orgId);
+		Organisation_Users ou = orgUserDao.getByOrganizationAndUser(orgId, u.getUser_id());
 		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
+		Organisation o = new Organisation();
+		o.setName(ORG_NAME);
+		Long orgId = orgDao.update(o, null).getOrganisation_id(); //inserted by not checked
 		assertNotNull("New Organisation have valid id", orgId);
 		
-		List<User> ul = orgManagement.getUsersByOrganisationId(orgId, 0, 9999, "login", true);
+		List<Organisation_Users> ul = orgUserDao.get(orgId, 0, 9999);
 		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: openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/DaoHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/DaoHelper.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/DaoHelper.java (original)
+++ openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/DaoHelper.java Sat Jun  7 07:45:55 2014
@@ -19,32 +19,49 @@
 package org.apache.openmeetings.util;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.wicket.util.string.Strings;
 
 public class DaoHelper {
 
 	public static String getSearchQuery(String table, String alias, String search, boolean filterDeleted, boolean count, String sort, String... fields) {
-		return getSearchQuery(table, alias, search, filterDeleted, count, null, sort, fields);
+		return getSearchQuery(table, alias, search, false, filterDeleted, count, sort, fields);
+	}
+	public static String getSearchQuery(String table, String alias, String search, boolean distinct, boolean filterDeleted, boolean count, String sort, String... fields) {
+		return getSearchQuery(table, alias, null, search, distinct, filterDeleted, count, null, sort, fields);
+	}
+	
+	public static String getSearchQuery(String table, String alias, String join, String search, boolean filterDeleted, boolean count, String additionalWhere, String sort, String... fields) {
+		return getSearchQuery(table, alias, join, search, filterDeleted, count, additionalWhere, sort, fields);
 	}
 	
-	public static String getSearchQuery(String table, String alias, String search, boolean filterDeleted, boolean count, String additionalWhere, String sort, String... fields) {
+	public static String getSearchQuery(String table, String alias, String join, String search, boolean distinct, boolean filterDeleted, boolean count, String additionalWhere, String sort, String... fields) {
 		StringBuilder sb = new StringBuilder("SELECT ");
 		if (count) {
-			sb.append("COUNT(").append(alias).append(")");
-		} else {
-			sb.append(alias);
+			sb.append("COUNT(");
+		}
+		if (distinct) {
+			sb.append("DISTINCT ");
+		}
+		sb.append(alias);
+		if (count) {
+			sb.append(")");
+		}
+		sb.append(" FROM ").append(table).append(" ").append(alias);
+		if (!Strings.isEmpty(join)) {
+			sb.append(" ").append(join);
 		}
-		sb.append(" FROM ").append(table).append(" ").append(alias).append(" WHERE 1 = 1 ");
+		sb.append(" WHERE 1 = 1 ");
 		if (filterDeleted) {
 			sb.append("AND ").append(alias).append(".deleted = false ");
 		}
-		StringBuilder where = DaoHelper.getWhereClause(search, alias, fields);
-		if (where.length() > 0) {
+		StringBuilder where = getWhereClause(search, alias, fields);
+		if (!Strings.isEmpty(where)) {
 			sb.append("AND ").append(where);
 		}
-		if (additionalWhere != null && !additionalWhere.trim().isEmpty()) {
+		if (!Strings.isEmpty(additionalWhere)) {
 			sb.append("AND ").append(additionalWhere);
 		}
-		if (sort != null && !sort.trim().isEmpty()) {
+		if (!Strings.isEmpty(sort)) {
 			sb.append(" ORDER BY ").append(alias).append(".").append(sort);
 		}
 		return sb.toString();

Added: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java?rev=1601073&view=auto
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java (added)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java Sat Jun  7 07:45:55 2014
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.admin;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+
+import com.vaynberg.wicket.select2.Response;
+import com.vaynberg.wicket.select2.TextChoiceProvider;
+
+public abstract class AdminUserChoiceProvider extends TextChoiceProvider<User> {
+	private static final long serialVersionUID = 1L;
+	protected static int PAGE_SIZE = 20;
+
+	@Override
+	protected Object getId(User choice) {
+		return choice.getUser_id();
+	}
+
+	@Override
+	public void query(String term, int page, Response<User> response) {
+		response.addAll(getBean(UserDao.class).get(term, true, page * PAGE_SIZE, PAGE_SIZE));
+		response.setHasMore(PAGE_SIZE == response.getResults().size());
+	}
+
+	@Override
+	public Collection<User> toChoices(Collection<String> ids) {
+		return new ArrayList<User>(getBean(UserDao.class).get(ids));
+	}
+}

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupForm.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupForm.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupForm.java Sat Jun  7 07:45:55 2014
@@ -21,18 +21,17 @@ package org.apache.openmeetings.web.admi
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
 import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
 import org.apache.openmeetings.db.entity.user.Organisation;
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.web.admin.AdminCommonUserForm;
-import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.RequiredTextField;
@@ -40,10 +39,17 @@ import org.apache.wicket.model.CompoundP
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.time.Duration;
 
-public class GroupForm extends AdminCommonUserForm<Organisation> {
+import com.vaynberg.wicket.select2.Select2Choice;
+
+public class GroupForm extends AdminBaseForm<Organisation> {
 	private static final long serialVersionUID = -1720731686053912700L;
 	private GroupUsersPanel usersPanel;
 	private WebMarkupContainer groupList;
+	private Select2Choice<User> userToadd = null;
+	
+	static String formatUser(User choice) {
+		return String.format("%s [%s %s]", choice.getLogin(), choice.getFirstname(), choice.getLastname());
+	}
 	
 	public GroupForm(String id, WebMarkupContainer groupList, Organisation organisation) {
 		super(id, new CompoundPropertyModel<Organisation>(organisation));
@@ -54,49 +60,62 @@ public class GroupForm extends AdminComm
 		usersPanel = new GroupUsersPanel("users", getOrgId());
 		add(usersPanel);
 
+		add(userToadd = new Select2Choice<User>("user2add", Model.of((User)null), new AdminUserChoiceProvider() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected String getDisplayText(User choice) {
+				return formatUser(choice);
+			}
+		}));
+		userToadd.add(new OnChangeAjaxBehavior() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onUpdate(AjaxRequestTarget target) {
+				Organisation o = GroupForm.this.getModelObject();
+				User u = userToadd.getModelObject();
+				boolean found = false;
+				if (o.getOrganisation_id() != null) {
+					found = null != getBean(OrganisationUserDao.class).getByOrganizationAndUser(o.getOrganisation_id(), u.getUser_id());
+				}
+				if (!found && u != null) {
+					for (Organisation_Users ou : usersPanel.getUsers2add()) {
+						if (ou.getUser().getUser_id().equals(u.getUser_id())) {
+							found = true;
+							break;
+						}
+					}
+					if (!found) {
+						Organisation_Users ou = new Organisation_Users(o);
+						ou.setUser(u);
+						usersPanel.getUsers2add().add(new Organisation_Users(o));
+
+						userToadd.setModelObject(null);
+						target.add(usersPanel, userToadd);
+					}
+				}
+			}
+		});
 		// attach an ajax validation behavior to all form component's keydown
 		// event and throttle it down to once per second
 		AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
 	}
 	
-	@Override
 	public void updateView(AjaxRequestTarget target) {
+		userToadd.setModelObject(null);
 		usersPanel.update(getOrgId());
 		target.add(this, groupList);
 		target.appendJavaScript("groupsInit();");
 	}
 
-	@Override
-	public void submitView(AjaxRequestTarget target, List<User> usersToAdd) {
-		// TODO Auto-generated method stub
-		AdminUserDao userDao = Application.getBean(AdminUserDao.class);
-		Organisation organisation = getModelObject();
-		for (User u : usersToAdd) {
-			List<Organisation_Users> orgUsers = u.getOrganisation_users();
-			boolean found = false;
-			for (Organisation_Users ou : orgUsers) {
-				if (ou.getOrganisation().getOrganisation_id().equals(organisation.getOrganisation_id())) {
-					found = true;
-					break;
-				}
-			}
-			if (!found) {
-				Organisation_Users orgUser = new Organisation_Users(organisation);
-				orgUser.setDeleted(false);
-				orgUsers.add(orgUser);
-				userDao.update(u, WebSession.getUserId());
-			}
-		}
-		target.add(usersPanel);
-	}
-	
 	private long getOrgId() {
 		return getModelObject().getOrganisation_id() != null ? getModelObject().getOrganisation_id() : 0;
 	}
 	
 	@Override
 	protected void onNewSubmit(AjaxRequestTarget target, Form<?> f) {
-		this.setModelObject(new Organisation());
+		setModelObject(new Organisation());
 		updateView(target);
 	}
 	
@@ -108,20 +127,23 @@ public class GroupForm extends AdminComm
 		} else {
 			org = new Organisation();
 		}
-		this.setModelObject(org);
+		setModelObject(org);
 		updateView(target);
 	}
 	
 	@Override
 	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
 		getBean(OrganisationDao.class).delete(getModelObject(), getUserId());
-		this.setModelObject(new Organisation());
+		setModelObject(new Organisation());
 		updateView(target);
 	}
 	
 	@Override
 	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
-		getBean(OrganisationDao.class).update(getModelObject(), getUserId());
+		Organisation o = getModelObject();
+		o = getBean(OrganisationDao.class).update(o, getUserId());
+		setModelObject(o);
+		getBean(OrganisationUserDao.class).update(usersPanel.getUsers2add(), getUserId());
 		hideNewRecord();
 		updateView(target);
 	}

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html Sat Jun  7 07:45:55 2014
@@ -22,16 +22,18 @@
 	<wicket:panel>
 		<div class="usergroupspanel">
 			<span wicket:id="navigator">[dataview navigator]</span>
-			<table class="adminListTable" style="min-width: 400px; max-width: 400px" >
+			<table class="adminListTable" style="min-width: 440px; max-width: 440px" >
                 <tr>
+                    <th class="ui-widget-header" style="width: 34px; max-width: 34px; overflow: hidden;" wicket:ommessage="title:98"><wicket:ommessage key="98" /></th>
                     <th class="ui-widget-header" style="width: 360px"><wicket:ommessage key="177" /></th>
                     <th class="ui-widget-header" style="width: 34px"><wicket:ommessage key="275" /></th>
                 </tr>   
             </table>
-            <div class="tableWrapper" style="width: 420px; height: 420px;">
-                <table class="adminListTable" style="min-width: 400px; max-width: 400px">  
+            <div class="tableWrapper" style="width: 460px; height: 460px;">
+                <table class="adminListTable" style="min-width: 440px; max-width: 440px">  
                     <tbody>   
-                        <tr wicket:id="userList">
+                        <tr wicket:id="userList" class="ui-widget-content">
+                            <td style="width: 34px"><input type="checkbox" wicket:id="isModerator"/></td>
                             <td style="width: 360px"><div style="width: 360px"><span wicket:id="label"></span></div></td>
                             <td style="width: 34px"><div style="width: 34px"><div class="formCancelButton" wicket:id="deleteUserBtn" wicket:ommessage="title:274"><input/></div></div></td>
                         </tr>