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/10 17:46:41 UTC

svn commit: r1601669 [2/7] - in /openmeetings: branches/3.0.x/WebContent/src/modules/invitation/ 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/ b...

Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/User.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/User.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/User.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/user/User.java Tue Jun 10 15:46:38 2014
@@ -24,11 +24,15 @@ import java.io.Serializable;
 import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import javax.persistence.Basic;
 import javax.persistence.CascadeType;
+import javax.persistence.CollectionTable;
 import javax.persistence.Column;
+import javax.persistence.ElementCollection;
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
@@ -97,13 +101,22 @@ import org.simpleframework.xml.Root;
 	@NamedQuery(name = "getNondeletedUsers", query = "SELECT u FROM User u WHERE u.deleted = false"),
 	@NamedQuery(name = "countNondeletedUsers", query = "SELECT COUNT(u) FROM User u WHERE u.deleted = false"),
 	@NamedQuery(name = "getUsersByOrganisationId", query = "SELECT u FROM User u WHERE u.deleted = false AND u.organisation_users.organisation.organisation_id = :organisation_id"), 
-	@NamedQuery(name = "getExternalUser", query = "SELECT u FROM User u WHERE u.deleted = false AND u.externalUserId LIKE :externalId AND u.externalUserType LIKE :externalType") 
+	@NamedQuery(name = "getExternalUser", query = "SELECT u FROM User u WHERE u.deleted = false AND u.externalUserId LIKE :externalId AND u.externalUserType LIKE :externalType"),
+	@NamedQuery(name = "getUserByLoginOrEmail", query = "SELECT u from User u WHERE u.deleted = false AND u.type = :type AND (u.login = :userOrEmail OR u.adresses.email = :userOrEmail)")
 })
 @Table(name = "om_user")
 @Root(name = "user")
 public class User implements Serializable, IDataProviderEntity {
 	private static final long serialVersionUID = -2265479712596674065L;
 	
+	public enum Right {
+		Admin			// access to Admin module
+		, Room			// enter the room
+		, Dashboard		// access the dashboard
+		, Login			// login to Om internal DB
+		, Soap			// use rest/soap calls
+	}
+	
 	public enum Type {
 		user
 		, ldap
@@ -122,10 +135,6 @@ public class User implements Serializabl
 	@Element(data = true, required = false)
 	private Date age;
 
-	@Column(name = "availible")
-	@Element(data = true, required = false)
-	private Integer availible;
-
 	@Column(name = "firstname")
 	@Element(data = true, required = false)
 	private String firstname;
@@ -141,10 +150,6 @@ public class User implements Serializabl
 	@Element(data = true, required = false)
 	private Long lasttrans;
 
-	@Column(name = "level_id")
-	@Element(data = true, required = false)
-	private Long level_id;
-
 	@Column(name = "login")
 	@Element(data = true, required = false)
 	private String login;
@@ -159,10 +164,6 @@ public class User implements Serializabl
 	@Element(data = true, required = false)
 	private Date regdate;
 
-	@Column(name = "status")
-	@Element(data = true, required = false)
-	private Integer status;
-
 	@Column(name = "salutations_id")
 	@Element(name = "title_id", data = true, required = false)
 	private Long salutations_id;
@@ -199,9 +200,6 @@ public class User implements Serializabl
 	@Element(name = "address", required = false)
 	private Address adresses;
 
-	@Transient
-	private Userlevel userlevel;
-
 	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
 	@JoinColumn(name = "user_id", insertable = true, updatable = true)
 	@ElementList(name = "organisations", required = false)
@@ -265,6 +263,17 @@ public class User implements Serializabl
 	@Element(data = true, required = false)
 	private Long ownerId;
 	
+	@ElementCollection(fetch = FetchType.EAGER)
+	@Column(name = "right")
+	@CollectionTable(name = "om_user_right", joinColumns = @JoinColumn(name = "user_id"))
+	@Enumerated(EnumType.STRING)
+	@ElementList(name="rights", data = true, required = false)
+	private Set<Right> rights = new HashSet<User.Right>();
+	
+	@Column(name = "domain_id")
+	@Element(data = true, required = false)
+	private Long domainId; // LDAP config id for LDAP, OAuth server id for OAuth
+	
 	public Long getUser_id() {
 		return user_id;
 	}
@@ -281,23 +290,6 @@ public class User implements Serializabl
 		this.adresses = adresses;
 	}
 
-	public void setAdresses(String street, String zip, String town,
-			State state, String additionalname, String comment, String fax,
-			String phone, String email) {
-		if (adresses == null) {
-			adresses = new Address();
-		}
-		adresses.setStreet(street);
-		adresses.setZip(zip);
-		adresses.setTown(town);
-		adresses.setStates(state);
-		adresses.setAdditionalname(additionalname);
-		adresses.setComment(comment);
-		adresses.setFax(fax);
-		adresses.setPhone(phone);
-		adresses.setEmail(email);
-	}
-
 	public Date getAge() {
 		return age;
 	}
@@ -306,14 +298,6 @@ public class User implements Serializabl
 		this.age = age == null ? new Date() :age;
 	}
 
-	public Integer getAvailible() {
-		return availible;
-	}
-
-	public void setAvailible(Integer availible) {
-		this.availible = availible;
-	}
-
 	public String getFirstname() {
 		return firstname;
 	}
@@ -346,14 +330,6 @@ public class User implements Serializabl
 		this.lasttrans = lasttrans;
 	}
 
-	public Long getLevel_id() {
-		return level_id;
-	}
-
-	public void setLevel_id(Long level_id) {
-		this.level_id = level_id;
-	}
-
 	public String getLogin() {
 		return login;
 	}
@@ -407,14 +383,6 @@ public class User implements Serializabl
 		this.regdate = regdate;
 	}
 
-	public Integer getStatus() {
-		return status;
-	}
-
-	public void setStatus(Integer status) {
-		this.status = status;
-	}
-
 	public Long getSalutations_id() {
 		return salutations_id;
 	}
@@ -423,14 +391,6 @@ public class User implements Serializabl
 		this.salutations_id = salutations_id;
 	}
 
-	public Userlevel getUserlevel() {
-		return userlevel;
-	}
-
-	public void setUserlevel(Userlevel userlevel) {
-		this.userlevel = userlevel;
-	}
-
 	public Date getStarttime() {
 		return starttime;
 	}
@@ -607,13 +567,29 @@ public class User implements Serializabl
 		this.ownerId = ownerId;
 	}
 
+	public Set<Right> getRights() {
+		return rights;
+	}
+
+	public void setRights(Set<Right> rights) {
+		this.rights = rights;
+	}
+
+	public Long getDomainId() {
+		return domainId;
+	}
+
+	public void setDomainId(Long domainId) {
+		this.domainId = domainId;
+	}
+
 	@Override
 	public String toString() {
 		return "User [user_id=" + user_id + ", firstname=" + firstname
 				+ ", lastname=" + lastname + ", login=" + login
 				+ ", pictureuri=" + pictureuri + ", deleted=" + deleted
 				+ ", language_id=" + language_id + ", adresses=" + adresses
-				+ ", externalUserId=" + externalUserId + ", externalUserType="
+				+ ", externalId=" + externalUserId + ", externalType="
 				+ externalUserType + ", type=" + type + "]";
 	}
 }

Modified: openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupExport.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupExport.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupExport.java (original)
+++ openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupExport.java Tue Jun 10 15:46:38 2014
@@ -28,6 +28,7 @@ import java.io.OutputStreamWriter;
 import java.net.URI;
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
@@ -70,6 +71,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.user.PrivateMessage;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.util.AuthLevelUtil;
 import org.apache.openmeetings.util.CalendarPatterns;
 import org.apache.openmeetings.util.OmFileHelper;
@@ -136,9 +138,7 @@ public class BackupExport {
 	@Autowired
 	private RoomOrganisationDao roomOrganisationDao;
 
-	public void performExport(File filePath, File backup_dir,
-			boolean includeFiles) throws Exception {
-
+	public void performExport(File filePath, File backup_dir, boolean includeFiles) throws Exception {
 		if (!backup_dir.exists()) {
 			backup_dir.mkdirs();
 		}
@@ -378,9 +378,7 @@ public class BackupExport {
 			File[] files = sourceDir.listFiles();
 			for (File file : files) {
 				if (file.isDirectory()) {
-					if (!file.getName().equals("backup")
-							&& !file.getName().equals("import")) {
-
+					if (!file.getName().equals("backup") && !file.getName().equals("import")) {
 						log.debug("### " + file.getName());
 
 						FileHelper.copyRec(file, new File(targetRootDir, file.getName()));
@@ -406,11 +404,8 @@ public class BackupExport {
 		log.debug("---Done");
 	}
 	
-	private <T> void writeList(Serializer ser, File backup_dir,
-			String fileName, String listElement, List<T> list) throws Exception {
-		
-		FileOutputStream fos = new FileOutputStream(new File(backup_dir,
-				fileName));
+	private <T> void writeList(Serializer ser, File backup_dir, String fileName, String listElement, List<T> list) throws Exception {
+		FileOutputStream fos = new FileOutputStream(new File(backup_dir, fileName));
 		writeList(ser, fos, listElement, list);
 	}
 	
@@ -434,10 +429,10 @@ public class BackupExport {
 	}
 
 	public void exportUsers(File backup_dir, List<User> list) throws Exception {
-		FileOutputStream fos
-			= new FileOutputStream(new File(backup_dir, "users.xml"));
+		FileOutputStream fos = new FileOutputStream(new File(backup_dir, "users.xml"));
 		exportUsers(fos, list);
 	}
+	
 	public void exportUsers(OutputStream os, List<User> list) throws Exception {
 		Registry registry = new Registry();
 		Strategy strategy = new RegistryStrategy(registry);
@@ -458,31 +453,26 @@ public class BackupExport {
 	 * javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest
 	 * , javax.servlet.http.HttpServletResponse)
 	 */
-	public void service(HttpServletRequest httpServletRequest,
-			HttpServletResponse httpServletResponse, ServletContext servletCtx)
-			throws ServletException, IOException {
-
-		String sid = httpServletRequest.getParameter("sid");
+	public void service(HttpServletRequest request, HttpServletResponse response, ServletContext ctx) throws ServletException, IOException {
+		String sid = request.getParameter("sid");
 		if (sid == null) {
 			sid = "default";
 		}
 		log.debug("sid: " + sid);
 
 		Long users_id = sessiondataDao.checkSession(sid);
-		Long user_level = usersDao.get(users_id).getLevel_id();
+		Set<Right> rights = usersDao.get(users_id).getRights();
 
 		log.debug("users_id: " + users_id);
-		log.debug("user_level: " + user_level);
+		log.debug("user_level: " + rights);
 
-		if (AuthLevelUtil.checkAdminLevel(user_level)) {
+		if (AuthLevelUtil.hasAdminLevel(rights)) {
 			// if (true) {
 
-			String includeFileOption = httpServletRequest
-					.getParameter("includeFileOption");
+			String includeFileOption = request.getParameter("includeFileOption");
 			boolean includeFiles = includeFileOption == null || "yes".equals(includeFileOption);
 
-			String moduleName = httpServletRequest
-					.getParameter("moduleName");
+			String moduleName = request.getParameter("moduleName");
 			if (moduleName == null) {
 				moduleName = "moduleName";
 			}
@@ -506,16 +496,13 @@ public class BackupExport {
 				try {
 					performExport(backupFile, backup_dir, includeFiles);
 
-					httpServletResponse.reset();
-					httpServletResponse.resetBuffer();
-					httpServletResponse
-					.setContentType("APPLICATION/OCTET-STREAM");
-					httpServletResponse.setHeader("Content-Disposition",
-							"attachment; filename=\"" + requestedFile + "\"");
-					httpServletResponse.setHeader("Content-Length",
-							"" + backupFile.length());
+					response.reset();
+					response.resetBuffer();
+					response.setContentType("APPLICATION/OCTET-STREAM");
+					response.setHeader("Content-Disposition", "attachment; filename=\"" + requestedFile + "\"");
+					response.setHeader("Content-Length", "" + backupFile.length());
 
-					OutputStream out = httpServletResponse.getOutputStream();
+					OutputStream out = response.getOutputStream();
 					OmFileHelper.copyFile(backupFile, out);
 
 					out.flush();

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=1601669&r1=1601668&r2=1601669&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 Tue Jun 10 15:46:38 2014
@@ -101,6 +101,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.user.PrivateMessageFolder;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.entity.user.UserContact;
 import org.apache.openmeetings.db.util.TimezoneUtil;
@@ -840,14 +841,14 @@ public class BackupImport {
 		List<User> list = new ArrayList<User>();
 		InputNode root = NodeBuilder.read(new StringReader(sw.toString()));
 		InputNode root1 = NodeBuilder.read(new StringReader(sw.toString())); //HACK to handle Address inside user
-		InputNode root2 = NodeBuilder.read(new StringReader(sw.toString())); //HACK to handle old om_time_zone
+		InputNode root2 = NodeBuilder.read(new StringReader(sw.toString())); //HACK to handle old om_time_zone, level_id, status
 		InputNode listNode = root.getNext();
 		InputNode listNode1 = root1.getNext(); //HACK to handle Address inside user
 		InputNode listNode2 = root2.getNext(); //HACK to handle old om_time_zone
 		if (listNodeName.equals(listNode.getName())) {
 			InputNode item = listNode.getNext();
 			InputNode item1 = listNode1.getNext(); //HACK to handle Address inside user
-			InputNode item2 = listNode2.getNext(); //HACK to handle old om_time_zone
+			InputNode item2 = listNode2.getNext(); //HACK to handle old om_time_zone, level_id, status
 			while (item != null) {
 				User u = ser.read(User.class, item, false);
 				
@@ -863,13 +864,34 @@ public class BackupImport {
 						item1 = listNode1.getNext(); //HACK to handle Address inside user
 					} while (item1 != null && !"user".equals(item1.getName()));
 				}
+				String level_id = null, status = null;
 				do {
 					if (u.getTimeZoneId() == null && "omTimeZone".equals(item2.getName())) {
 						String jName = item2.getValue();
 						u.setTimeZoneId(jName == null ? null : tzUtil.getTimezoneByInternalJName(jName).getID());
 					}
-					item2 = listNode2.getNext(); //HACK to handle old om_time_zone
+					if ("level_id".equals(item2.getName())) {
+						level_id = item2.getValue();
+					}
+					if ("status".equals(item2.getName())) {
+						status = item2.getValue();
+					}
+					item2 = listNode2.getNext(); //HACK to handle old om_time_zone, level_id, status
 				} while (item2 != null && !"user".equals(item2.getName()));
+				if (u.getRights().isEmpty()) {
+					u.getRights().add(Right.Room);
+					if ("1".equals(status)) {
+						u.getRights().add(Right.Dashboard);
+						u.getRights().add(Right.Login);
+					}
+					if ("3".equals(level_id)) {
+						u.getRights().add(Right.Admin);
+						u.getRights().add(Right.Soap);
+					}
+					if ("4".equals(level_id)) {
+						u.getRights().add(Right.Soap);
+					}
+				}
 				// check that email is unique
 				if (u.getAdresses() != null && u.getAdresses().getEmail() != null) {
 					if (userEmailMap.containsKey(u.getAdresses().getEmail())) {

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=1601669&r1=1601668&r2=1601669&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 Tue Jun 10 15:46:38 2014
@@ -47,6 +47,7 @@ import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.basic.ErrorDao;
@@ -65,7 +66,6 @@ import org.apache.openmeetings.db.dao.us
 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;
 import org.apache.openmeetings.db.entity.label.Fieldvalues;
@@ -74,6 +74,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.server.OAuthServer;
 import org.apache.openmeetings.db.entity.server.OAuthServer.RequestMethod;
 import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.TimezoneUtil;
 import org.apache.openmeetings.util.OmFileHelper;
 import org.dom4j.Document;
@@ -117,8 +118,6 @@ public class ImportInitvalues {
 	@Autowired
 	private RoomTypeDao roomTypeDao;
 	@Autowired
-	private UserLevelDao userLevelDao;
-	@Autowired
 	private OrganisationDao organisationDao;
 	@Autowired
 	private IUserManager userManager;
@@ -132,14 +131,6 @@ public class ImportInitvalues {
 		return progress;
 	}
 	
-	public void loadUserLevels() {
-		userLevelDao.addUserLevel("User", 1);
-		userLevelDao.addUserLevel("Moderator", 2);
-		userLevelDao.addUserLevel("Admin", 3);
-		userLevelDao.addUserLevel("Web-Service (only access via SOAP)", 4);
-		log.debug("UserLevels ADDED");
-	}
-	
 	public void loadMainMenu() {
 		/*
 		 * ######################## Dashboard Menu Points
@@ -651,20 +642,20 @@ public class ImportInitvalues {
 		org.setStarttime(new Date());
 		org = organisationDao.update(org, null);
 
-		Long user_id = userManager.registerUserInit(new Long(3), 3, 1,
-				1, cfg.username, cfg.password, "lastname", "firstname", cfg.email,
-				new java.util.Date(), "street", "no", "fax", "zip", 1,
-				"town", default_lang_id, false,
-				Arrays.asList(org.getOrganisation_id()), "phone", false, false,
-				timezoneUtil.getTimeZone(cfg.ical_timeZone),
-				false, "", "", false, true, null);
+		Set<Right> rights = UserDao.getDefaultRights();
+		rights.add(Right.Admin);
+		rights.add(Right.Soap);
+		Long user_id = userManager.registerUserInit(UserDao.getDefaultRights(), cfg.username, cfg.password, "lastname"
+				, "firstname", cfg.email, new Date() /* age/birthday */, "street", "no", "fax", "zip", 1
+				, "town", default_lang_id, false /* sendWelcomeMessage */
+				, Arrays.asList(org.getOrganisation_id()), "phone", false, false, timezoneUtil.getTimeZone(cfg.ical_timeZone),
+				false /* forceTimeZoneCheck */, "" /* userOffers */, "" /* userSearchs */, false /* showContactData */,
+				true /* showContactDataToContacts */, null);
 
 		log.debug("Installation - User Added user-Id " + user_id);
 
 		if (user_id < 0) {
-			throw new Exception(
-					"Could not add user user returns a negative error message: "
-							+ user_id);
+			throw new Exception("Could not add user user returns a negative error message: " + user_id);
 		}
 	}
 
@@ -753,12 +744,9 @@ public class ImportInitvalues {
 	public void loadInitAppointmentReminderTypes() {
 		log.debug("ImportInitValues.loadInitAppointmentReminderTypes");
 
-		appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L,
-				"do not send notification", 1568);
-		appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L,
-				"simple email", 1569);
-		appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L,
-				"iCal email", 1570);
+		appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L, "do not send notification", 1568);
+		appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L, "simple email", 1569);
+		appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L, "iCal email", 1570);
 	}
 
 	public void loadLanguagesFile(int langId) throws Exception {
@@ -768,6 +756,7 @@ public class ImportInitvalues {
 
 	public void loadLanguagesFile(String langName) throws Exception {
 		Map<Integer, Map<String, Object>> listlanguages = getLanguageFiles();
+		log.debug("Number of languages found: " + listlanguages.size());
 		for (int langId : listlanguages.keySet()) {
 			Map<String, Object> langMap = listlanguages.get(langId);
 			if (langName.equals(langMap.get("name"))) {
@@ -955,8 +944,6 @@ public class ImportInitvalues {
 			log.debug("System contains users, no need to install data one more time.");
 		}
 		sipDao.delete();
-		progress = 3;
-		loadUserLevels();
 		progress = 6;
 		loadMainMenu();
 		progress = 9;

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=1601669&r1=1601668&r2=1601669&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 Tue Jun 10 15:46:38 2014
@@ -48,9 +48,6 @@ import org.apache.openmeetings.db.dto.ba
 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;
-import org.apache.openmeetings.util.AuthLevelUtil;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -86,43 +83,6 @@ public class RoomManager implements IRoo
 	private RoomTypeDao roomTypeDao;
 
 	/**
-	 * get a room object if user level
-	 * 
-	 * @param user_level
-	 * @param rooms_id
-	 * @return
-	 */
-	public Room getRoomById(long user_level, long rooms_id) {
-		try {
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
-				return roomDao.get(rooms_id);
-			} else
-				log.error("getRoombyId : Userlevel" + user_level
-						+ " not allowed");
-		} catch (Exception ex2) {
-			log.error("[getRoomById] ", ex2);
-		}
-		return null;
-	}
-
-	public Room getRoomWithCurrentUsersById(long user_level, long rooms_id) {
-		try {
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
-				Room room = roomDao.get(rooms_id);
-
-				if (room != null) {
-					room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
-
-					return room;
-				}
-			}
-		} catch (Exception ex2) {
-			log.error("[getRoomWithCurrentUsersById] ", ex2);
-		}
-		return null;
-	}
-
-	/**
 	 * Get a Rooms-Object or NULL
 	 * 
 	 * @param externalRoomId
@@ -150,99 +110,67 @@ public class RoomManager implements IRoo
 		return null;
 	}
 
-	public Room getRoomByExternalId(long user_level, Long externalRoomId,
-			String externalRoomType, long roomtypes_id) {
+	public SearchResult<Room> getRooms(int start, int max, String orderby, boolean asc, String search) {
 		try {
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
-				return this.getRoomByExternalId(externalRoomId,
-						externalRoomType, roomtypes_id);
-			} else
-				log.error("getRoombyExternalId : Userlevel" + user_level
-						+ " not allowed");
-		} catch (Exception ex2) {
-			log.error("[getRoomByExternalId] ", ex2);
-		}
-		return null;
-	}
-
-	public SearchResult<Room> getRooms(long user_level, int start, int max,
-			String orderby, boolean asc, String search) {
-		try {
-			if (AuthLevelUtil.checkAdminLevel(user_level)) {
-				SearchResult<Room> sResult = new SearchResult<Room>();
-				sResult.setRecords(this.selectMaxFromRooms(search));
-				sResult.setObjectName(Room.class.getName());
-				sResult.setResult(this.getRoomsInternatlByHQL(start, max,
-						orderby, asc, search));
-				return sResult;
-			}
+			SearchResult<Room> sResult = new SearchResult<Room>();
+			sResult.setRecords(this.selectMaxFromRooms(search));
+			sResult.setObjectName(Room.class.getName());
+			sResult.setResult(this.getRoomsInternatlByHQL(start, max,
+					orderby, asc, search));
+			return sResult;
 		} catch (Exception ex2) {
 			log.error("[getRooms] ", ex2);
 		}
 		return null;
 	}
 	
-	public SearchResult<Room> getRoomsWithCurrentUsers(long user_level, int start,
-			int max, String orderby, boolean asc) {
+	public SearchResult<Room> getRoomsWithCurrentUsers(int start, int max, String orderby, boolean asc) {
 		try {
-			if (AuthLevelUtil.checkAdminLevel(user_level)) {
-				SearchResult<Room> sResult = new SearchResult<Room>();
-				sResult.setRecords(this.selectMaxFromRooms(""));
-				sResult.setObjectName(Room.class.getName());
+			SearchResult<Room> sResult = new SearchResult<Room>();
+			sResult.setRecords(this.selectMaxFromRooms(""));
+			sResult.setObjectName(Room.class.getName());
 
-				List<Room> rooms = this.getRoomsInternatl(start, max, orderby,
-						asc);
-
-				for (Room room : rooms) {
-					room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
-				}
+			List<Room> rooms = this.getRoomsInternatl(start, max, orderby,
+					asc);
 
-				sResult.setResult(rooms);
-				return sResult;
+			for (Room room : rooms) {
+				room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
 			}
+
+			sResult.setResult(rooms);
+			return sResult;
 		} catch (Exception ex2) {
 			log.error("[getRooms] ", ex2);
 		}
 		return null;
 	}
 
-	public List<Room> getRoomsWithCurrentUsersByList(long user_level,
-			int start, int max, String orderby, boolean asc) {
+	public List<Room> getRoomsWithCurrentUsersByList(int start, int max, String orderby, boolean asc) {
 		try {
-			if (AuthLevelUtil.checkAdminLevel(user_level)) {
-
-				List<Room> rooms = this.getRoomsInternatl(start, max, orderby,
-						asc);
-
-				for (Room room : rooms) {
-					room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
-				}
-
-				return rooms;
+			List<Room> rooms = this.getRoomsInternatl(start, max, orderby,
+					asc);
 
+			for (Room room : rooms) {
+				room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
 			}
+
+			return rooms;
 		} catch (Exception ex2) {
 			log.error("[getRooms] ", ex2);
 		}
 		return null;
 	}
 
-	public List<Room> getRoomsWithCurrentUsersByListAndType(long user_level,
-			int start, int max, String orderby, boolean asc,
-			String externalRoomType) {
+	public List<Room> getRoomsWithCurrentUsersByListAndType(int start, int max, String orderby, boolean asc, String externalRoomType) {
 		try {
-			if (AuthLevelUtil.checkAdminLevel(user_level)) {
-
-				List<Room> rooms = this.getRoomsInternatlbyType(start, max,
-						orderby, asc, externalRoomType);
-
-				for (Room room : rooms) {
-					room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
-				}
-
-				return rooms;
+			List<Room> rooms = this.getRoomsInternatlbyType(start, max,
+					orderby, asc, externalRoomType);
 
+			for (Room room : rooms) {
+				room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
 			}
+
+			return rooms;
 		} catch (Exception ex2) {
 			log.error("[getRooms] ", ex2);
 		}
@@ -390,45 +318,19 @@ public class RoomManager implements IRoo
 		return null;
 	}
 
-	public List<RoomOrganisation> getOrganisationsByRoom(long user_level,
-			long rooms_id) {
+	public List<RoomOrganisation> getOrganisationsByRoom(long rooms_id) {
 		try {
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
-				String hql = "select c from RoomOrganisation as c "
-						+ "where c.room.rooms_id = :rooms_id "
-						+ "AND c.deleted <> :deleted";
-				TypedQuery<RoomOrganisation> q = em.createQuery(hql, RoomOrganisation.class);
-
-				q.setParameter("rooms_id", rooms_id);
-				q.setParameter("deleted", true);
-				List<RoomOrganisation> ll = q.getResultList();
-				return ll;
-			}
-		} catch (Exception ex2) {
-			log.error("[getOrganisationsByRoom] ", ex2);
-		}
-		return null;
-	}
+			String hql = "select c from RoomOrganisation as c "
+					+ "where c.room.rooms_id = :rooms_id "
+					+ "AND c.deleted <> :deleted";
+			TypedQuery<RoomOrganisation> q = em.createQuery(hql, RoomOrganisation.class);
 
-	/**
-	 * get all rooms which are availible for public
-	 * 
-	 * @param user_level
-	 * @param roomtypes_id
-	 * @return
-	 */
-	public List<Room> getPublicRooms(long user_level, long roomtypes_id) {
-		try {
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
-				TypedQuery<Room> q = em.createNamedQuery("getPublicRooms", Room.class);
-				q.setParameter("ispublic", true);
-				q.setParameter("deleted", false);
-				q.setParameter("roomtypes_id", new Long(roomtypes_id));
-				List<Room> ll = q.getResultList();
-				return ll;
-			}
+			q.setParameter("rooms_id", rooms_id);
+			q.setParameter("deleted", true);
+			List<RoomOrganisation> ll = q.getResultList();
+			return ll;
 		} catch (Exception ex2) {
-			log.error("[getRoomsByOrganisation] ", ex2);
+			log.error("[getOrganisationsByRoom] ", ex2);
 		}
 		return null;
 	}
@@ -466,43 +368,6 @@ public class RoomManager implements IRoo
 		return null;
 	}
 
-	public List<Room> getPublicRoomsWithoutType(long user_level) {
-		try {
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
-				TypedQuery<Room> q = em.createNamedQuery("getPublicRoomsWithoutType", Room.class);
-				q.setParameter("ispublic", true);
-				q.setParameter("deleted", true);
-				List<Room> ll = q.getResultList();
-				return ll;
-			}
-		} catch (Exception ex2) {
-			log.error("[getPublicRoomsWithoutType] ", ex2);
-			ex2.printStackTrace();
-		}
-		return null;
-	}
-
-	/**
-	 * Get Appointed Meetings
-	 */
-	// ---------------------------------------------------------------------------------------------
-	public List<Room> getAppointedMeetings(Long userid, Long user_level) {
-		log.debug("Roommanagement.getAppointedMeetings");
-
-		try {
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
-				TypedQuery<Room> q = em.createNamedQuery("getAppointedMeetings", Room.class);
-				q.setParameter("appointed", true);
-				q.setParameter("deleted", false);
-				return q.getResultList();
-			}
-		} catch (Exception ex2) {
-			log.error("[getAppointedMeetings] ", ex2);
-		}
-		return null;
-
-	}
-
 	// ---------------------------------------------------------------------------------------------
 
     /**
@@ -546,7 +411,7 @@ public class RoomManager implements IRoo
 	 * @param hideWhiteboard TODO
 	 * @return id of the newly created room or NULL
 	 */
-	public Long addRoom(long user_level, String name, long roomtypes_id,
+	public Long addRoom(String name, long roomtypes_id,
 			String comment, Long numberOfPartizipants, boolean ispublic,
 			List<Integer> organisations, Boolean appointment, Boolean isDemoRoom,
 			Integer demoTime, Boolean isModeratedRoom,
@@ -560,112 +425,64 @@ public class RoomManager implements IRoo
 			, boolean filesOpened, boolean autoVideoSelect, boolean sipEnabled) {
 
 		try {
-			if (AuthLevelUtil.checkAdminLevel(user_level)) {
-
-				Room r = new Room();
-				r.setName(name);
-				r.setComment(comment);
-				r.setStarttime(new Date());
-				r.setNumberOfPartizipants(numberOfPartizipants);
-				r.setRoomtype(roomTypeDao.get(roomtypes_id));
-				r.setIspublic(ispublic);
-				r.setAllowUserQuestions(allowUserQuestions);
-				r.setIsAudioOnly(isAudioOnly);
-				r.setAllowFontStyles(allowFontStyles);
-
-				r.setAppointment(appointment);
+			Room r = new Room();
+			r.setName(name);
+			r.setComment(comment);
+			r.setStarttime(new Date());
+			r.setNumberOfPartizipants(numberOfPartizipants);
+			r.setRoomtype(roomTypeDao.get(roomtypes_id));
+			r.setIspublic(ispublic);
+			r.setAllowUserQuestions(allowUserQuestions);
+			r.setIsAudioOnly(isAudioOnly);
+			r.setAllowFontStyles(allowFontStyles);
 
-				r.setIsDemoRoom(isDemoRoom);
-				r.setDemoTime(demoTime);
+			r.setAppointment(appointment);
 
-				r.setIsModeratedRoom(isModeratedRoom);
-				r.setHideTopBar(hideTopBar);
+			r.setIsDemoRoom(isDemoRoom);
+			r.setDemoTime(demoTime);
 
-				r.setDeleted(false);
+			r.setIsModeratedRoom(isModeratedRoom);
+			r.setHideTopBar(hideTopBar);
 
-				r.setIsClosed(isClosed);
-				r.setRedirectURL(redirectURL);
+			r.setDeleted(false);
 
-				r.setOwnerId(ownerId);
+			r.setIsClosed(isClosed);
+			r.setRedirectURL(redirectURL);
 
-				r.setWaitForRecording(waitForRecording);
-				r.setAllowRecording(allowRecording);
-				
-				r.setHideChat(hideChat);
-				r.setHideActivitiesAndActions(hideActivitiesAndActions);
-				r.setHideActionsMenu(hideActionsMenu);
-				r.setHideFilesExplorer(hideFilesExplorer);
-				r.setHideScreenSharing(hideScreenSharing);	
-				r.setHideWhiteboard(hideWhiteboard);
-				r.setShowMicrophoneStatus(showMicrophoneStatus);
-				r.setChatModerated(chatModerated);
-				r.setChatOpened(chatOpened);
-				r.setFilesOpened(filesOpened);
-				r.setAutoVideoSelect(autoVideoSelect);
-				r.setSipEnabled(sipEnabled);
-				r.setPin(conferencePin);
-				
-				r = roomDao.update(r, ownerId);
+			r.setOwnerId(ownerId);
 
-				if (organisations != null) {
-					Long t = this.updateRoomOrganisations(organisations, r);
-					if (t == null) {
-						return null;
-					}
-				}
+			r.setWaitForRecording(waitForRecording);
+			r.setAllowRecording(allowRecording);
+			
+			r.setHideChat(hideChat);
+			r.setHideActivitiesAndActions(hideActivitiesAndActions);
+			r.setHideActionsMenu(hideActionsMenu);
+			r.setHideFilesExplorer(hideFilesExplorer);
+			r.setHideScreenSharing(hideScreenSharing);	
+			r.setHideWhiteboard(hideWhiteboard);
+			r.setShowMicrophoneStatus(showMicrophoneStatus);
+			r.setChatModerated(chatModerated);
+			r.setChatOpened(chatOpened);
+			r.setFilesOpened(filesOpened);
+			r.setAutoVideoSelect(autoVideoSelect);
+			r.setSipEnabled(sipEnabled);
+			r.setPin(conferencePin);
+			
+			r = roomDao.update(r, ownerId);
 
-				if (roomModerators != null) {
-					r.setModerators(getModerators(roomModerators, r.getRooms_id()));
-					r = roomDao.update(r, ownerId);
+			if (organisations != null) {
+				Long t = this.updateRoomOrganisations(organisations, r);
+				if (t == null) {
+					return null;
 				}
-
-				return r.getRooms_id();
 			}
-		} catch (Exception ex2) {
-			log.error("[addRoom] ", ex2);
-		}
-		return null;
-	}
-
-	public Long addRoomByMod(long user_level, String name, long roomtypes_id,
-			String comment, Long numberOfPartizipants, boolean ispublic,
-			Long organisation_id, Boolean appointment, Boolean isDemoRoom,
-			Integer demoTime, Boolean isModeratedRoom,
-			List<Map<String, Object>> roomModerators, Boolean allowUserQuestions) {
-
-		log.debug("addRoom");
-
-		try {
-			if (AuthLevelUtil.checkModLevel(user_level)) {
-				Room r = new Room();
-				r.setName(name);
-				r.setComment(comment);
-				r.setStarttime(new Date());
-				r.setNumberOfPartizipants(numberOfPartizipants);
-				r.setRoomtype(roomTypeDao.get(roomtypes_id));
-				r.setIspublic(ispublic);
-
-				r.setAllowUserQuestions(allowUserQuestions);
-				r.setAppointment(appointment);
 
-				r.setIsDemoRoom(isDemoRoom);
-				r.setDemoTime(demoTime);
-
-				r.setIsModeratedRoom(isModeratedRoom);
-
-				r.setDeleted(false);
-				r = em.merge(r);
-				long returnId = r.getRooms_id();
-
-				this.addRoomToOrganisation(3, returnId, organisation_id);
-
-				if (roomModerators != null) {
-					r.setModerators(getModerators(roomModerators, r.getRooms_id()));
-					r = roomDao.update(r, null);
-				}
-
-				return returnId;
+			if (roomModerators != null) {
+				r.setModerators(getModerators(roomModerators, r.getRooms_id()));
+				r = roomDao.update(r, ownerId);
 			}
+
+			return r.getRooms_id();
 		} catch (Exception ex2) {
 			log.error("[addRoom] ", ex2);
 		}
@@ -754,22 +571,20 @@ public class RoomManager implements IRoo
 	 * @param organisation_id
 	 * @return the id of the newly created Rooms_Organisation or NULL
 	 */
-	public Long addRoomToOrganisation(long user_level, long rooms_id,
+	public Long addRoomToOrganisation(long rooms_id,
 			long organisation_id) {
 		try {
-			if (AuthLevelUtil.checkAdminLevel(user_level)) {
-				RoomOrganisation rOrganisation = new RoomOrganisation();
-				rOrganisation.setRoom(roomDao.get(rooms_id));
-				log.debug("addRoomToOrganisation rooms '"
-						+ rOrganisation.getRoom().getName() + "'");
-				rOrganisation.setStarttime(new Date());
-				rOrganisation.setOrganisation(orgDao.get(organisation_id));
-				rOrganisation.setDeleted(false);
-
-				rOrganisation = em.merge(rOrganisation);
-				long returnId = rOrganisation.getRooms_organisation_id();
-				return returnId;
-			}
+			RoomOrganisation rOrganisation = new RoomOrganisation();
+			rOrganisation.setRoom(roomDao.get(rooms_id));
+			log.debug("addRoomToOrganisation rooms '"
+					+ rOrganisation.getRoom().getName() + "'");
+			rOrganisation.setStarttime(new Date());
+			rOrganisation.setOrganisation(orgDao.get(organisation_id));
+			rOrganisation.setDeleted(false);
+
+			rOrganisation = em.merge(rOrganisation);
+			long returnId = rOrganisation.getRooms_organisation_id();
+			return returnId;
 		} catch (Exception ex2) {
 			log.error("[addRoomToOrganisation] ", ex2);
 		}
@@ -811,19 +626,14 @@ public class RoomManager implements IRoo
 	 * @param roomtypes_id
 	 * @return
 	 */
-	public List<RoomOrganisation> getRoomsOrganisationByOrganisationIdAndRoomType(
-			long user_level, long organisation_id, long roomtypes_id) {
+	public List<RoomOrganisation> getRoomsOrganisationByOrganisationIdAndRoomType(long organisation_id, long roomtypes_id) {
 		try {
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
-				TypedQuery<RoomOrganisation> q = em.
-						createNamedQuery("getRoomsOrganisationByOrganisationIdAndRoomType", RoomOrganisation.class);
-				q.setParameter("roomtypes_id", roomtypes_id);
-				q.setParameter("organisation_id", organisation_id);
-				q.setParameter("deleted", true);
-				return q.getResultList();
-			} else {
-				log.error("[notauthentificated] " + user_level);
-			}
+			TypedQuery<RoomOrganisation> q = em.
+					createNamedQuery("getRoomsOrganisationByOrganisationIdAndRoomType", RoomOrganisation.class);
+			q.setParameter("roomtypes_id", roomtypes_id);
+			q.setParameter("organisation_id", organisation_id);
+			q.setParameter("deleted", true);
+			return q.getResultList();
 		} catch (Exception ex2) {
 			log.error("[getRoomsByOrganisation] ", ex2);
 		}
@@ -836,23 +646,17 @@ public class RoomManager implements IRoo
 	 * @param organisation_id
 	 * @return list of Rooms_Organisation with Rooms as Sub-Objects or null
 	 */
-	public List<RoomOrganisation> getRoomsOrganisationByOrganisationId(
-			long user_level, long organisation_id) {
+	public List<RoomOrganisation> getRoomsOrganisationByOrganisationId(long organisation_id) {
 		try {
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
-
-				TypedQuery<RoomOrganisation> query = em.
-						createNamedQuery("getRoomsOrganisationByOrganisationId", RoomOrganisation.class);
+			TypedQuery<RoomOrganisation> query = em.
+					createNamedQuery("getRoomsOrganisationByOrganisationId", RoomOrganisation.class);
 
-				query.setParameter("organisation_id", organisation_id);
-				query.setParameter("deleted", true);
+			query.setParameter("organisation_id", organisation_id);
+			query.setParameter("deleted", true);
 
-				List<RoomOrganisation> ll = query.getResultList();
+			List<RoomOrganisation> ll = query.getResultList();
 
-				return ll;
-			} else {
-				log.error("[notauthentificated] " + user_level);
-			}
+			return ll;
 		} catch (Exception ex2) {
 			log.error("[getPublicRoomsWithoutType] ", ex2);
 			ex2.printStackTrace();
@@ -860,20 +664,15 @@ public class RoomManager implements IRoo
 		return null;
 	}
 
-	public SearchResult<RoomOrganisation> getRoomsOrganisationByOrganisationId(long user_level,
-			long organisation_id, int start, int max, String orderby,
+	public SearchResult<RoomOrganisation> getRoomsOrganisationsByOrganisationId(long organisation_id, int start, int max, String orderby,
 			boolean asc) {
 		try {
-			if (AuthLevelUtil.checkModLevel(user_level)) {
-
-				SearchResult<RoomOrganisation> sResult = new SearchResult<RoomOrganisation>();
-				sResult.setObjectName(RoomOrganisation.class.getName());
-				sResult.setRecords(this.selectMaxFromRoomsByOrganisation(
-						organisation_id).longValue());
-				sResult.setResult(this.getRoomsOrganisationByOrganisationId(
-						organisation_id, start, max, orderby, asc));
-				return sResult;
-			}
+			SearchResult<RoomOrganisation> sResult = new SearchResult<RoomOrganisation>();
+			sResult.setObjectName(RoomOrganisation.class.getName());
+			sResult.setRecords(this.selectMaxFromRoomsByOrganisation(
+					organisation_id).longValue());
+			sResult.setResult(getRoomsOrganisationByOrganisationId(organisation_id, start, max, orderby, asc));
+			return sResult;
 		} catch (Exception ex2) {
 			log.error("[getRoomsByOrganisation] ", ex2);
 		}
@@ -975,80 +774,6 @@ public class RoomManager implements IRoo
 		return null;
 	}
 
-	/**
-	 * 
-	 * @param user_id
-	 * @param rooms_id
-	 * @return
-	 */
-	private boolean checkUserOrgRoom(long user_id, long rooms_id) {
-		try {
-
-			User us = usersDao.get(user_id);
-			List<Organisation_Users> s = us.getOrganisation_users();
-
-			for (Iterator<Organisation_Users> it = s.iterator(); it.hasNext();) {
-				Organisation_Users orgUsers = it.next();
-				long organisation_id = orgUsers.getOrganisation()
-						.getOrganisation_id();
-				List<RoomOrganisation> ll = this
-						.getRoomsOrganisationByOrganisationId(3,
-								organisation_id);
-				for (Iterator<RoomOrganisation> it2 = ll.iterator(); it2
-						.hasNext();) {
-					RoomOrganisation roomOrg = it2.next();
-					if (roomOrg.getRoom().getRooms_id() == rooms_id) {
-						return true;
-					}
-				}
-			}
-
-		} catch (Exception ex2) {
-			log.error("[checkUserOrgRoom] ", ex2);
-		}
-		return false;
-	}
-
-	/**
-	 * 
-	 * @param user_id
-	 * @param user_level
-	 * @param rooms_id
-	 * @param roomtypes_id
-	 * @param name
-	 * @param ispublic
-	 * @param comment
-	 * @return
-	 */
-	public Room updateRoomsSelf(long user_id, long user_level, long rooms_id,
-			long roomtypes_id, String name, boolean ispublic, String comment) {
-		try {
-			if (AuthLevelUtil.checkModLevel(user_level)) {
-
-				if (this.checkUserOrgRoom(user_id, rooms_id)) {
-
-					Room r = roomDao.get(rooms_id);
-					r.setComment(comment);
-					r.setIspublic(ispublic);
-					r.setName(name);
-					r.setRoomtype(roomTypeDao.get(roomtypes_id));
-					r.setUpdatetime(new Date());
-
-					if (r.getRooms_id() == null) {
-						em.persist(r);
-					} else {
-						if (!em.contains(r)) {
-							em.merge(r);
-						}
-					}
-				}
-			}
-		} catch (Exception ex2) {
-			log.error("[updateRoom] ", ex2);
-		}
-		return null;
-	}
-
 	public Long updateRoomInternal(long rooms_id, long roomtypes_id,
 			String name, boolean ispublic, String comment,
 			Long numberOfPartizipants, List<Integer> organisations,
@@ -1123,56 +848,6 @@ public class RoomManager implements IRoo
 		return null;
 	}
 
-	public Long updateRoomByMod(long user_level, long rooms_id,
-			long roomtypes_id, String name, boolean ispublic, String comment,
-			Long numberOfPartizipants, Long organisations, Boolean appointment,
-			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
-			List<Map<String, Object>> roomModerators, Boolean allowUserQuestions) {
-		try {
-			log.debug("*** updateRoom numberOfPartizipants: "
-					+ numberOfPartizipants);
-			if (AuthLevelUtil.checkModLevel(user_level)) {
-				Room r = roomDao.get(rooms_id);
-				r.setComment(comment);
-
-				r.setIspublic(ispublic);
-				r.setNumberOfPartizipants(numberOfPartizipants);
-				r.setName(name);
-				r.setRoomtype(roomTypeDao.get(roomtypes_id));
-				r.setUpdatetime(new Date());
-				r.setAllowUserQuestions(allowUserQuestions);
-
-				r.setIsDemoRoom(isDemoRoom);
-				r.setDemoTime(demoTime);
-
-				r.setAppointment(appointment);
-
-				r.setIsModeratedRoom(isModeratedRoom);
-
-				if (r.getRooms_id() == null) {
-					em.persist(r);
-				} else {
-					if (!em.contains(r)) {
-						r = em.merge(r);
-					}
-				}
-
-				// FIXME: Organizations will not be changed when you do an
-				// update as Moderator
-
-				if (roomModerators != null) {
-					r.setModerators(getModerators(roomModerators, r.getRooms_id()));
-					r = roomDao.update(r, null);
-				}
-
-				return r.getRooms_id();
-			}
-		} catch (Exception ex2) {
-			log.error("[updateRoom] ", ex2);
-		}
-		return null;
-	}
-
 	@SuppressWarnings("rawtypes")
 	private boolean checkRoomAlreadyInOrg(Long orgid, List organisations)
 			throws Exception {
@@ -1195,10 +870,8 @@ public class RoomManager implements IRoo
 		return false;
 	}
 
-	private Long updateRoomOrganisations(List<Integer> organisations, Room room)
-			throws Exception {
-		List<RoomOrganisation> roomOrganisations = this.getOrganisationsByRoom(3,
-				room.getRooms_id());
+	private Long updateRoomOrganisations(List<Integer> organisations, Room room) throws Exception {
+		List<RoomOrganisation> roomOrganisations = getOrganisationsByRoom(room.getRooms_id());
 
 		List<Long> roomsToAdd = new LinkedList<Long>();
 		List<Long> roomsToDel = new LinkedList<Long>();
@@ -1223,12 +896,11 @@ public class RoomManager implements IRoo
 
 		for (Iterator<Long> it = roomsToAdd.iterator(); it.hasNext();) {
 			Long orgIdToAdd = it.next();
-			this.addRoomToOrganisation(3, room.getRooms_id(), orgIdToAdd);
+			addRoomToOrganisation(room.getRooms_id(), orgIdToAdd);
 		}
 		for (Iterator<Long> it = roomsToDel.iterator(); it.hasNext();) {
 			Long orgToDel = it.next();
-			this.deleteRoomFromOrganisationByRoomAndOrganisation(
-					room.getRooms_id(), orgToDel);
+			deleteRoomFromOrganisationByRoomAndOrganisation(room.getRooms_id(), orgToDel);
 		}
 
 		return new Long(1);
@@ -1239,13 +911,11 @@ public class RoomManager implements IRoo
 	 * 
 	 * @param rooms_id
 	 */
-	public Long deleteRoomById(long user_level, long rooms_id) {
+	public Long deleteRoomById(long rooms_id) {
 		try {
-			if (AuthLevelUtil.checkWebServiceLevel(user_level)) {
-				this.deleteAllRoomsOrganisationOfRoom(rooms_id);
-				roomDao.delete(roomDao.get(rooms_id), -1L);
-				return rooms_id;
-			}
+			deleteAllRoomsOrganisationOfRoom(rooms_id);
+			roomDao.delete(roomDao.get(rooms_id), -1L);
+			return rooms_id;
 		} catch (Exception ex2) {
 			log.error("[deleteRoomById] ", ex2);
 		}
@@ -1275,13 +945,9 @@ public class RoomManager implements IRoo
 	 * 
 	 * @param organisation_id
 	 */
-	@SuppressWarnings("rawtypes")
 	public void deleteAllRoomsOrganisationOfOrganisation(long organisation_id) {
 		try {
-			List ll = this.getRoomsOrganisationByOrganisationId(3,
-					organisation_id);
-			for (Iterator it = ll.iterator(); it.hasNext();) {
-				RoomOrganisation rOrg = (RoomOrganisation) it.next();
+			for (RoomOrganisation rOrg : getRoomsOrganisationByOrganisationId(organisation_id)) {
 				this.deleteRoomsOrganisation(rOrg);
 			}
 		} catch (Exception ex2) {
@@ -1385,7 +1051,7 @@ public class RoomManager implements IRoo
 			} else {
 				log.debug("Could not find room " + ownerId + " || " + roomtypesId);
 				
-				Long rooms_id = this.addRoom(3L, roomName, roomtypesId,
+				Long rooms_id = addRoom(roomName, roomtypesId,
 						"My Rooms of ownerId " + ownerId,
 						(roomtypesId == 1) ? 25L : 150L, // numberOfPartizipants
 						false, // ispublic

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=1601669&r1=1601668&r2=1601669&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 Tue Jun 10 15:46:38 2014
@@ -22,15 +22,16 @@ import static org.apache.openmeetings.db
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SOAP_REGISTER_KEY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 import java.util.TimeZone;
 
 import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
 import javax.persistence.PersistenceContext;
 import javax.persistence.TypedQuery;
 
@@ -49,18 +50,16 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.entity.user.Userdata;
-import org.apache.openmeetings.db.entity.user.Userlevel;
 import org.apache.openmeetings.db.util.TimezoneUtil;
 import org.apache.openmeetings.mail.MailHandler;
 import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
-import org.apache.openmeetings.remote.util.SessionVariablesUtil;
 import org.apache.openmeetings.util.AuthLevelUtil;
 import org.apache.openmeetings.util.CalendarPatterns;
 import org.apache.openmeetings.util.DaoHelper;
 import org.apache.openmeetings.util.crypt.ManageCryptStyle;
 import org.red5.logging.Red5LoggerFactory;
-import org.red5.server.api.IClient;
 import org.red5.server.api.scope.IScope;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -144,78 +143,6 @@ public class UserManager implements IUse
 		return null;
 	}
 
-	/**
-	 * login logic
-	 * 
-	 * @param SID
-	 * @param Username
-	 * @param Userpass
-	 * @return
-	 */
-	public Object loginUser(String SID, String userOrEmail, String userpass,
-			Client currentClient, IClient client, Boolean storePermanent) {
-		try {
-			log.debug("Login user SID : " + SID + " Stored Permanent: " + storePermanent);
-			String hql = "SELECT c from User AS c "
-					+ "WHERE "
-					+ "(c.login LIKE :userOrEmail OR c.adresses.email LIKE :userOrEmail  ) "
-					+ "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();
-
-			log.debug("debug SIZE: " + ll.size());
-
-			if (ll.size() == 0) {
-				return new Long(-10);
-			} else {
-				User users = ll.get(0);
-
-				if (usersDao.verifyPassword(users.getUser_id(), userpass)) {
-					Boolean bool = sessiondataDao.updateUser(SID, users.getUser_id(), storePermanent, users.getLanguage_id());
-					if (bool == null) {
-						// Exception
-						return new Long(-1);
-					} else if (!bool) {
-						// invalid Session-Object
-						return new Long(-35);
-					}
-
-					// Check if activated
-					if (users.getStatus() != null && users.getStatus().equals(0)) {
-						return -41L;
-					}
-
-					users.setUserlevel(getUserLevel(users.getLevel_id()));
-					updateLastLogin(users);
-					// If invoked via SOAP this is NULL
-					if (currentClient != null) {
-						currentClient.setUser_id(users.getUser_id());
-						SessionVariablesUtil.setUserId(client, users.getUser_id());
-					}
-
-					log.debug("loginUser " + users.getOrganisation_users());
-					if (!users.getOrganisation_users().isEmpty()) {
-						log.debug("loginUser size " + users.getOrganisation_users().size());
-					} else {
-						throw new Exception("No Organization assigned to user");
-					}
-
-					return users;
-				} else {
-					return new Long(-11);
-				}
-			}
-
-		} catch (Exception ex2) {
-			log.error("[loginUser]: ", ex2);
-		}
-		return new Long(-1);
-	}
-
 	public User loginUserByRemoteHash(String SID, String remoteHash) {
 		try {
 
@@ -242,21 +169,6 @@ public class UserManager implements IUse
 		return new Long(-12);
 	}
 
-	private void updateLastLogin(User us) {
-		try {
-			us.setLastlogin(new Date());
-			if (us.getUser_id() == null) {
-				em.persist(us);
-			} else {
-				if (!em.contains(us)) {
-					em.merge(us);
-				}
-			}
-		} catch (Exception ex2) {
-			log.error("updateLastLogin", ex2);
-		}
-	}
-
 	public List<Userdata> getUserdataDashBoard(Long user_id) {
 		if (user_id.longValue() > 0) {
 			try {
@@ -353,114 +265,6 @@ public class UserManager implements IUse
 		return ret;
 	}
 
-	private Userlevel getUserLevel(Long level_id) {
-		Userlevel userlevel = new Userlevel();
-		try {
-			TypedQuery<Userlevel> query = em
-					.createQuery("select c from Userlevel as c where c.level_id = :level_id AND c.deleted <> :deleted", Userlevel.class);
-			query.setParameter("level_id", level_id.longValue());
-			query.setParameter("deleted", true);
-			for(Iterator<Userlevel> it2 = query.getResultList().iterator(); it2
-					.hasNext();) {
-				userlevel = it2.next();
-			}
-		} catch (Exception ex2) {
-			log.error("[getUserLevel]", ex2);
-		}
-		return userlevel;
-	}
-
-	/**
-	 * get user-role 1 - user 2 - moderator 3 - admin
-	 * 
-	 * @param user_id
-	 * @return
-	 */
-	public Long getUserLevelByID(Long user_id) {
-
-		try {
-			if (user_id == null) {
-				return 0L;
-			}
-			// For direct access of linked users
-			if (user_id < 0) {
-				return 1L;
-			}
-
-			TypedQuery<User> query = em
-					.createQuery("select c from User as c where c.user_id = :user_id AND c.deleted <> true", User.class);
-			query.setParameter("user_id", user_id);
-			User us = null;
-			try {
-				us = query.getSingleResult();
-			} catch (NoResultException e) {
-				// u=null}
-			}
-
-			if (us != null) {
-				return us.getLevel_id();
-			} else {
-				return -1L;
-			}
-		} catch (Exception ex2) {
-			log.error("[getUserLevelByID]", ex2);
-		}
-		return null;
-	}
-
-	public Long getUserLevelByIdAndOrg(Long user_id, Long organisation_id) {
-
-		try {
-			if (user_id == null)
-				return new Long(0);
-			// For direct access of linked users
-			if (user_id == -1) {
-				return new Long(1);
-			}
-
-			TypedQuery<User> query = em
-					.createQuery("select c from User as c where c.user_id = :user_id AND c.deleted <> true", User.class);
-			query.setParameter("user_id", user_id);
-			User us = null;
-			try {
-				us = query.getSingleResult();
-			} catch (NoResultException e) {
-				// u=null}
-			}
-
-			if (us != null) {
-
-				if (us.getLevel_id() > 2) {
-					return us.getLevel_id();
-				} else {
-
-					log.debug("user_id, organisation_id" + user_id + ", "
-							+ organisation_id);
-
-					Organisation_Users ou = orgUserDao.getByOrganizationAndUser(organisation_id, user_id);
-
-					log.debug("ou: " + ou);
-
-					if (ou != null) {
-						if (ou.getIsModerator() != null && ou.getIsModerator()) {
-							return 2L;
-						} else {
-							return us.getLevel_id();
-						}
-					} else {
-						return us.getLevel_id();
-					}
-				}
-
-			} else {
-				return -1L;
-			}
-		} catch (Exception ex2) {
-			log.error("[getUserLevelByID]", ex2);
-		}
-		return null;
-	}
-
 	/**
 	 * Method to register a new User, User will automatically be added to the
 	 * default user_level(1) new users will be automatically added to the
@@ -523,12 +327,11 @@ public class UserManager implements IUse
 				
 				// TODO: Read and generate SIP-Data via RPC-Interface Issue 1098
 
-				Long user_id = this.registerUserInit(3, 1, 0, 1, login,
+				Long user_id = registerUserInit(UserDao.getDefaultRights(), login,
 						Userpass, lastname, firstname, email, age, street,
 						additionalname, fax, zip, states_id, town, language_id,
-						true, Arrays.asList(configurationDao.getConfValue(
-								"default_domain_id", Long.class, null)), phone,
-						sendSMS, sendConfirmation, jNameTimeZone, false, "", "", false, true);
+						true, Arrays.asList(configurationDao.getConfValue("default_domain_id", Long.class, null)), phone,
+						sendSMS, sendConfirmation, timezoneUtil.getTimeZone(jNameTimeZone), false, "", "", false, true, null);
 
 				if (user_id > 0 && sendConfirmation) {
 					return new Long(-40);
@@ -543,52 +346,6 @@ public class UserManager implements IUse
 	}
 
 	/**
-	 * Adds a user including his adress-data,auth-date,mail-data
-	 * 
-	 * @param user_level
-	 * @param level_id
-	 * @param availible
-	 * @param status
-	 * @param login
-	 * @param password
-	 * @param lastname
-	 * @param firstname
-	 * @param email
-	 * @param age
-	 * @param street
-	 * @param additionalname
-	 * @param fax
-	 * @param zip
-	 * @param states_id
-	 * @param town
-	 * @param language_id
-	 * @param phone
-	 * @return new users_id OR null if an exception, -1 if an error, -4 if mail
-	 *         already taken, -5 if username already taken, -3 if login or pass
-	 *         or mail is empty
-	 */
-	public Long registerUserInit(long user_level, long level_id, int availible,
-			int status, String login, String password, String lastname,
-			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<Long> organisations, String phone, boolean sendSMS,
-			Boolean sendConfirmation, String iCalTz, Boolean forceTimeZoneCheck,
-			String userOffers, String userSearchs, Boolean showContactData,
-			Boolean showContactDataToContacts) throws Exception {
-		return registerUserInit(user_level, level_id, availible,
-				status, login, password, lastname,
-				firstname, email, age, street,
-				additionalname, fax, zip, states_id,
-				town, language_id, sendWelcomeMessage,
-				organisations, phone, sendSMS, sendConfirmation,
-				timezoneUtil.getTimeZone(iCalTz), 
-				forceTimeZoneCheck,
-				userOffers, userSearchs, showContactData,
-				showContactDataToContacts, null);
-	}
-	
-	/**
 	 * @param user_level
 	 * @param level_id
 	 * @param availible
@@ -622,8 +379,7 @@ public class UserManager implements IUse
 	 *         or mail is empty
 	 * @throws Exception
 	 */
-	public Long registerUserInit(long user_level, long level_id, int availible,
-			int status, String login, String password, String lastname,
+	public Long registerUserInit(Set<Right> rights, String login, String password, String lastname,
 			String firstname, String email, Date age, String street,
 			String additionalname, String fax, String zip, long states_id,
 			String town, long language_id, boolean sendWelcomeMessage,
@@ -632,217 +388,68 @@ public class UserManager implements IUse
 			String userOffers, String userSearchs, Boolean showContactData,
 			Boolean showContactDataToContacts, String activatedHash) throws Exception {
 		// TODO: make phone number persistent
-		// User Level must be at least Admin
-		// Moderators will get a temp update of there UserLevel to add Users to
-		// their Group
-		if (AuthLevelUtil.checkModLevel(user_level)) {
-			// Check for required data
-			if (login.length() >= getMinLoginLength(configurationDao)) {
-				// Check for duplicates
-				boolean checkName = usersDao.checkUserLogin(login, null);
-				boolean checkEmail = usersDao.checkUserEMail(email, null);
-				if (checkName && checkEmail) {
-
-					String link = configurationDao.getBaseUrl();
-					String hash = activatedHash;
-					if (hash == null){
-						hash = ManageCryptStyle.getInstanceOfCrypt().createPassPhrase(login
-								+ CalendarPatterns.getDateWithTimeByMiliSeconds(new Date()));
-					}
-					link += "activate?u=" + hash;
-
-					if (sendWelcomeMessage && email.length() != 0) {
-						String sendMail = emailManagement.sendMail(login,
-								password, email, link, sendConfirmation);
-						if (!sendMail.equals("success"))
-							return new Long(-19);
-					}
-					Address adr =  new Address();
-					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
-					if (sendConfirmation) {
-						status = 0;
-					}
-
-					Long user_id = addUser(level_id, availible, status,
-							firstname, login, lastname, language_id, password,
-							adr, sendSMS, age, hash, timezone,
-							forceTimeZoneCheck, userOffers, userSearchs,
-							showContactData, showContactDataToContacts, organisations);
-					log.debug("Added user-Id " + user_id);
-					if (user_id == null) {
-						return new Long(-111);
-					}
-
-					/*
-					 * Long adress_emails_id =
-					 * emailManagement.registerEmail(email, address_id,""); if
-					 * (adress_emails_id==null) { return new Long(-112); }
-					 */
-
-					if (adr.getAdresses_id() > 0 && user_id > 0) {
-						return user_id;
-					} else {
-						return new Long(-16);
-					}
-				} else {
-					if (!checkName) {
-						return new Long(-15);
-					} else if (!checkEmail) {
-						return new Long(-17);
-					}
+		// Check for required data
+		if (login.length() >= getMinLoginLength(configurationDao)) {
+			// Check for duplicates
+			boolean checkName = usersDao.checkUserLogin(login, null);
+			boolean checkEmail = usersDao.checkUserEMail(email, null);
+			if (checkName && checkEmail) {
+
+				String link = configurationDao.getBaseUrl();
+				String hash = activatedHash;
+				if (hash == null){
+					hash = ManageCryptStyle.getInstanceOfCrypt().createPassPhrase(login
+							+ CalendarPatterns.getDateWithTimeByMiliSeconds(new Date()));
 				}
-			} else {
-				return new Long(-13);
-			}
-		}
-		return new Long(-1);
-	}
+				link += "activate?u=" + hash;
 
-	/**
-	 * @author swagner This Methdo adds a User to the User-Table
-	 * @param level_id
-	 *            The User Level, 1=User, 2=GroupAdmin/Moderator,
-	 *            3=SystemAdmin/Admin
-	 * @param availible
-	 *            The user is activated
-	 * @param status
-	 *            The user is not blocked by System admins
-	 * @param firstname
-	 * @param login
-	 *            Username for login
-	 * @param lastname
-	 * @param language_id
-	 * @param Userpass
-	 *            is MD5-crypted
-	 * @param Address 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, Address adress, boolean sendSMS, Date age, String hash,
-			TimeZone timezone,
-			Boolean forceTimeZoneCheck, String userOffers, String userSearchs,
-			Boolean showContactData, Boolean showContactDataToContacts, List<Long> orgIds) {
-		try {
-
-			User users = new User();
-			users.setFirstname(firstname);
-			users.setLogin(login);
-			users.setLastname(lastname);
-			users.setAge(age);
-			users.setAdresses(adress);
-			users.setSendSMS(sendSMS);
-			users.setAvailible(availible);
-			users.setLastlogin(new Date());
-			users.setLasttrans(new Long(0));
-			users.setLevel_id(level_id);
-			users.setStatus(status);
-			users.setSalutations_id(1L);
-			users.setStarttime(new Date());
-			users.setActivatehash(hash);
-			users.setTimeZoneId(timezone.getID());
-			users.setForceTimeZoneCheck(forceTimeZoneCheck);
-
-			users.setUserOffers(userOffers);
-			users.setUserSearchs(userSearchs);
-			users.setShowContactData(showContactData);
-			users.setShowContactDataToContacts(showContactDataToContacts);
-
-			// this is needed cause the language is not a needed data at
-			// registering
-			if (language_id != 0) {
-				users.setLanguage_id(language_id);
-			} else {
-				users.setLanguage_id(null);
-			}
-			users.updatePassword(configurationDao, userpass);
-			users.setRegdate(new Date());
-			users.setDeleted(false);
-			
-			//new user add organizations without checks
-			if (orgIds != null) {
-				List<Organisation_Users> orgList = users.getOrganisation_users();
-				for (Long orgId : orgIds) {
-					orgList.add(new Organisation_Users(orgDao.get(orgId)));
+				if (sendWelcomeMessage && email.length() != 0) {
+					String sendMail = emailManagement.sendMail(login,
+							password, email, link, sendConfirmation);
+					if (!sendMail.equals("success"))
+						return new Long(-19);
 				}
-			}
-			return usersDao.update(users, null).getUser_id();
+				Address adr =  usersDao.getAddress(street, zip, town, states_id, additionalname, fax, phone, email);
 
-		} catch (Exception ex2) {
-			log.error("[registerUser]", ex2);
-		}
-		return null;
-	}
+				// If this user needs first to click his E-Mail verification
+				// code then set the status to 0
+				if (sendConfirmation && rights.contains(Right.Login)) {
+					rights.remove(Right.Login);
+				}
 
-	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,
-			String hash, String externalUserId, String externalUserType,
-			boolean generateSipUserData, String email, String iCalTz,
-			String pictureuri) {
-		try {
-			User users = new User();
-			users.setFirstname(firstname);
-			users.setLogin(login);
-			users.setLastname(lastname);
-			users.setAge(age);
+				List<Organisation_Users> orgList = new ArrayList<Organisation_Users>();
+				for (Long id : organisations) {
+					orgList.add(new Organisation_Users(orgDao.get(id)));
+				}
+				User u = usersDao.addUser(rights, firstname, login, lastname, language_id,
+						password, adr, sendSMS, age, hash, timezone,
+						forceTimeZoneCheck, userOffers, userSearchs, showContactData,
+						showContactDataToContacts, null, null, orgList, null);
+				if (u == null) {
+					return -111L;
+				}
+				log.debug("Added user-Id " + u.getUser_id());
 
-			if (address != null) {
-				users.setAdresses(address);
-			} else {
-				users.setAdresses("", "", "", statemanagement.getStateById(1L), "", "", "", "", email);
-			}
+				/*
+				 * Long adress_emails_id =
+				 * emailManagement.registerEmail(email, address_id,""); if
+				 * (adress_emails_id==null) { return new Long(-112); }
+				 */
 
-			users.setAvailible(availible);
-			users.setLastlogin(new Date());
-			users.setLasttrans(new Long(0));
-			users.setLevel_id(level_id);
-			users.setStatus(status);
-			users.setSalutations_id(1L);
-			users.setStarttime(new Date());
-			users.setActivatehash(hash);
-			users.setPictureuri(pictureuri);
-			users.setTimeZoneId(timezoneUtil.getTimeZone(iCalTz).getID());
-
-			users.setExternalUserId(externalUserId);
-			users.setExternalUserType(externalUserType);
-
-			// this is needed cause the language is not a needed data at
-			// registering
-			if (language_id != 0) {
-				users.setLanguage_id(new Long(language_id));
+				if (adr.getAdresses_id() > 0 && u.getUser_id() > 0) {
+					return u.getUser_id();
+				} else {
+					return -16L;
+				}
 			} else {
-				users.setLanguage_id(null);
+				if (!checkName) {
+					return -15L;
+				} else if (!checkEmail) {
+					return -17L;
+				}
 			}
-			users.updatePassword(configurationDao, userpass, emptyPass);
-			users.setRegdate(new Date());
-			users.setDeleted(false);
-
-			em.persist(users);
-
-			em.refresh(users);
-
-			// em.flush();
-
-			long user_id = users.getUser_id();
-
-			return user_id;
-
-		} catch (Exception ex2) {
-			log.error("[addUserWithExternalKey]", ex2);
 		}
-		return null;
+		return -1L;
 	}
 
 	/**
@@ -853,10 +460,9 @@ public class UserManager implements IUse
 	public Boolean kickUserByStreamId(String SID, Long room_id) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = getUserLevelByID(users_id);
 
 			// admins only
-			if (AuthLevelUtil.checkAdminLevel(user_level)) {
+			if (AuthLevelUtil.hasAdminLevel(usersDao.getRights(users_id))) {
 
 				sessiondataDao.clearSessionByRoomId(room_id);
 
@@ -891,10 +497,9 @@ public class UserManager implements IUse
 	public Boolean kickUserByPublicSID(String SID, String publicSID) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = getUserLevelByID(users_id);
 
 			// admins only
-			if (AuthLevelUtil.checkWebServiceLevel(user_level)) {
+			if (AuthLevelUtil.hasWebServiceLevel(usersDao.getRights(users_id))) {
 
 				Client rcl = sessionManager
 						.getClientByPublicSID(publicSID, false, 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=1601669&r1=1601668&r2=1601669&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 Tue Jun 10 15:46:38 2014
@@ -37,17 +37,15 @@ import org.apache.openmeetings.db.dao.se
 import org.apache.openmeetings.db.dao.user.ILdapLoginManagement;
 import org.apache.openmeetings.db.dao.user.StateDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.server.LdapConfig;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.TimezoneUtil;
 import org.apache.openmeetings.ldap.config.ConfigReader;
-import org.apache.openmeetings.remote.util.SessionVariablesUtil;
+import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.util.OmFileHelper;
 import org.red5.logging.Red5LoggerFactory;
-import org.red5.server.api.IClient;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -229,15 +227,14 @@ public class LdapLoginManagement impleme
 	 * 
 	 */
 	// ----------------------------------------------------------------------------------------
-	public Object doLdapLogin(String user, String passwd,
-			Client currentClient, IClient client, String SID, String domain) {
+	public User login(String user, String passwd, Long domainId) throws OmException {
 		log.debug("LdapLoginmanagement.doLdapLogin");
 
 		// Retrieve Configuration Data
 		HashMap<String, String> configData;
 
 		try {
-			configData = getLdapConfigData(domain);
+			configData = getLdapConfigData(ldapConfigDao.get(domainId).getConfigFileName());
 		} catch (Exception e) {
 			log.error("Error on LdapAuth : " + e.getMessage());
 			return null;
@@ -394,8 +391,10 @@ public class LdapLoginManagement impleme
 			try {
 				if (!lAuth.authenticateUser(ldapUserDN, passwd)) {
 					log.error(ldapUserDN + " not authenticated.");
-					return new Long(-11);
+					throw new OmException(-11L);
 				}
+			} catch (OmException oe) {
+				throw oe;
 			} catch (Exception e) {
 				log.error("Error on LdapAuth : " + e.getMessage());
 				return null;
@@ -403,8 +402,10 @@ public class LdapLoginManagement impleme
 		} else {
 			try {
 				if (!lAuth.authenticateUser(user, passwd)) {
-					return new Long(-11);
+					throw new OmException(-11L);
 				}
+			} catch (OmException oe) {
+				throw oe;
 			} catch (Exception e) {
 				log.error("Error on LdapAuth : " + e.getMessage());
 				return null;
@@ -416,7 +417,7 @@ public class LdapLoginManagement impleme
 		User u = null;
 
 		try {
-			u = usersDao.getUserByName(user, User.Type.ldap);
+			u = usersDao.getByName(user, User.Type.ldap);
 		} catch (Exception e) {
 			log.error("Error retrieving Userdata : " + e.getMessage());
 		}
@@ -459,7 +460,7 @@ public class LdapLoginManagement impleme
 
 		if (result == null || result.size() < 1) {
 			log.error("Error on Ldap request - no result for user " + user);
-			return new Long(-10);
+			throw new OmException(-10L);
 		}
 		
 		if (result.size() > 1) {
@@ -489,30 +490,11 @@ public class LdapLoginManagement impleme
 				}
 				log.debug("New User ID : " + userid);
 
-				// If invoked via SOAP this is NULL
-				if (currentClient != null) {
-					currentClient.setUser_id(userid);
-					SessionVariablesUtil.setUserId(client, userid);
-				}
-
-				// Update Session
-				Boolean bool = sessiondataDao.updateUser(SID, userid);
-
-				if (bool == null) {
-					// Exception
-					log.error("Error on Updating Session");
-					return new Long(-1);
-				} else if (!bool) {
-					// invalid Session-Object
-					log.error("Invalid Session Object");
-					return new Long(-35);
-				}
-
 				// Return UserObject
 				User u2 = usersDao.get(userid);
 
 				if (u2 == null) {
-					return new Long(-1);
+					throw new OmException(-1L);
 				}
 
 				u2.setType(Type.ldap);
@@ -525,30 +507,12 @@ public class LdapLoginManagement impleme
 				return u2;
 			} catch (Exception e) {
 				log.error("Error on Working Userdata : ", e);
-				return new Long(-1);
+				throw new OmException(-1L);
 			}
 		} else {
 			// User exists, just update necessary values
 			log.debug("User already exists -> Update of current passwd");
 
-			// If invoked via SOAP this is NULL
-			if (currentClient != null) {
-				currentClient.setUser_id(u.getUser_id());
-			}
-
-			// Update Session
-			Boolean bool = sessiondataDao.updateUser(SID, u.getUser_id());
-
-			if (bool == null) {
-				// Exception
-				log.error("Error on Updating Session");
-				return new Long(-1);
-			} else if (!bool) {
-				// invalid Session-Object
-				log.error("Invalid Session Object");
-				return new Long(-35);
-			}
-
 			try {
 				// Update password (could have changed in LDAP)
 				if (ldap_sync_passwd_to_om) {
@@ -561,7 +525,7 @@ public class LdapLoginManagement impleme
 				usersDao.update(u, null);
 			} catch (Exception e) {
 				log.error("Error updating user : " + e.getMessage());
-				return new Long(-1);
+				throw new OmException(-1L);
 			}
 
 			return u;
@@ -656,8 +620,6 @@ public class LdapLoginManagement impleme
 			iCalTz = userdata.get(ldapAttrs.get("timezoneAttr"));
 		}
 		
-		iCalTz = timezoneUtil.getTimeZone(iCalTz).getID();
-
 		String town = "town";
 		if (userdata.containsKey(ldapAttrs.get("townAttr"))
 				&& userdata.get(ldapAttrs.get("townAttr")) != null)
@@ -670,11 +632,7 @@ public class LdapLoginManagement impleme
 			// Check if LDAP Users get a SIP Account Issue 1099
 
 			newUserId = userManager.registerUserInit(
-					2,// user_level
-					1,// level_id
-					1,// available
-					1,// status
-					login,// loginname
+					UserDao.getDefaultRights(), login,// loginname
 					passwd,// passwd
 					lastname, firstname, email, 
 					new java.util.Date(), //age
@@ -682,18 +640,17 @@ public class LdapLoginManagement impleme
 					additionalname, fax, zip, state_id, town, 
 					configurationDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1"), // language_id
 					false, // sendWelcomeMessage
-					Arrays.asList(configurationDao.getConfValue(
-							"default_domain_id", Long.class, null)), // organozation
-																		// Ids
+					Arrays.asList(configurationDao.getConfValue("default_domain_id", Long.class, null)), // organozation Ids
 					phone, 
 					false,
 					false,// send verification code
-					iCalTz, 
+					timezoneUtil.getTimeZone(iCalTz), 
 					false, // forceTimeZoneCheck
 					"", //userOffers
 					"", //userSearchs
 					false, //showContactData
-					true //showContactDataToContacts
+					true, //showContactDataToContacts
+					null
 					);
 			
 			User user = usersDao.get(newUserId);

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceLibrary.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceLibrary.java?rev=1601669&r1=1601668&r2=1601669&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceLibrary.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ConferenceLibrary.java Tue Jun 10 15:46:38 2014
@@ -26,11 +26,11 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.transaction.util.FileHelper;
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.data.whiteboard.WhiteboardManager;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.file.LibraryPresentation;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.room.Client;
@@ -66,7 +66,7 @@ public class ConferenceLibrary implement
 	@Autowired
 	private SessiondataDao sessiondataDao;
 	@Autowired
-	private UserManager userManager;
+	private UserDao userDao;
 	@Autowired
 	private FileExplorerItemDao fileExplorerItemDao;
 	@Autowired
@@ -80,12 +80,10 @@ public class ConferenceLibrary implement
 		try {
 
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 
 			log.debug("#############users_id : " + users_id);
-			log.debug("#############user_level : " + user_level);
 
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				File working_dir = new File(OmFileHelper.getUploadFilesDir(), parentFolder);
 				log.debug("############# working_dir : " + working_dir);
@@ -123,8 +121,7 @@ public class ConferenceLibrary implement
 			Object tObjectRef) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 				// LinkedHashMap tObject = (LinkedHashMap)t;
 				// ArrayList tObject = (ArrayList)t;
 
@@ -174,9 +171,8 @@ public class ConferenceLibrary implement
 			Long fileExplorerItemId, Long whiteboardId) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				IConnection current = Red5.getConnectionLocal();
 				Client currentClient = this.sessionManager
@@ -255,8 +251,7 @@ public class ConferenceLibrary implement
 	public ArrayList loadChartObject(String SID, Long room_id, String fileName) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 				return LibraryChartLoader.getInstance().loadChart(OmFileHelper.getUploadRoomDir(room_id.toString()),
 						fileName);
 			}
@@ -275,9 +270,8 @@ public class ConferenceLibrary implement
 		try {
 
 			Long users_id = sessiondataDao.checkSession(SID);
-			Long user_level = userManager.getUserLevelByID(users_id);
 
-			if (AuthLevelUtil.checkUserLevel(user_level)) {
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
 
 				IConnection current = Red5.getConnectionLocal();
 				String streamid = current.getClient().getId();