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 [4/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/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/FieldValueDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/FieldValueDao.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/FieldValueDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/FieldValueDao.java Sat Jun 7 07:45:55 2014
@@ -67,15 +67,7 @@ public class FieldValueDao implements ID
}
public List<Fieldvalues> get(Long language_id, String search, int start, int count, String sort) {
- String sql = DaoHelper.getSearchQuery(
- "Fieldlanguagesvalues"
- , "flv"
- , search
- , true
- , false
- , "flv.fieldvalues.deleted = false AND flv.language_id = :lang"
- , sort
- , searchFields);
+ String sql = DaoHelper.getSearchQuery("Fieldlanguagesvalues", "flv", null, search, true, false, "flv.fieldvalues.deleted = false AND flv.language_id = :lang", sort, searchFields);
TypedQuery<Fieldlanguagesvalues> q = em.createQuery(sql, Fieldlanguagesvalues.class);
q.setParameter("lang", language_id);
q.setFirstResult(start);
@@ -121,15 +113,7 @@ public class FieldValueDao implements ID
}
public long count(Long language_id, String search) {
- String sql = DaoHelper.getSearchQuery(
- "Fieldlanguagesvalues"
- , "flv"
- , search
- , true
- , true
- , "flv.fieldvalues.deleted = false AND flv.language_id = :lang"
- , null
- , searchFields);
+ String sql = DaoHelper.getSearchQuery("Fieldlanguagesvalues", "flv", null, search, true, true, "flv.fieldvalues.deleted = false AND flv.language_id = :lang", null, searchFields);
TypedQuery<Long> q = em.createQuery(sql, Long.class);
q.setParameter("lang", language_id);
return q.getSingleResult();
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java Sat Jun 7 07:45:55 2014
@@ -154,7 +154,7 @@ public class FlvRecordingDao {
return query.getResultList();
} catch (Exception ex2) {
- log.error("[getFlvRecordings]: ", ex2);
+ log.error("[getAllFlvRecordings]: ", ex2);
}
return null;
}
@@ -244,7 +244,7 @@ public class FlvRecordingDao {
update(fId);
} catch (Exception ex2) {
- log.error("[deleteFileExplorerItem]: ", ex2);
+ log.error("[updateFlvRecordingEndTime]: ", ex2);
}
}
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java Sat Jun 7 07:45:55 2014
@@ -29,6 +29,8 @@ import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
+import org.apache.openjpa.persistence.OpenJPAPersistence;
+import org.apache.openjpa.persistence.OpenJPAQuery;
import org.apache.openmeetings.db.dao.IDataProviderDao;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.dao.user.UserDao;
@@ -59,12 +61,19 @@ public class RoomDao implements IDataPro
public Room get(long id) {
TypedQuery<Room> q = em.createNamedQuery("getRoomById", Room.class);
q.setParameter("id", id);
- List<Room> l = q.getResultList();
+ @SuppressWarnings("unchecked")
+ OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
+ kq.getFetchPlan().addFetchGroup("roomModerators");
+ List<Room> l = kq.getResultList();
return l.isEmpty() ? null : l.get(0);
}
public List<Room> get() {
- return em.createNamedQuery("getBackupRooms", Room.class).getResultList();
+ TypedQuery<Room> q = em.createNamedQuery("getBackupRooms", Room.class);
+ @SuppressWarnings("unchecked")
+ OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
+ kq.getFetchPlan().addFetchGroup("roomModerators");
+ return kq.getResultList();
}
public List<Room> get(int start, int count) {
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java Sat Jun 7 07:45:55 2014
@@ -18,282 +18,50 @@
*/
package org.apache.openmeetings.db.dao.room;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
+import java.util.Collection;
import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.room.RoomModerator;
-import org.apache.openmeetings.db.entity.user.User;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@Transactional
public class RoomModeratorsDao {
- private static final Logger log = Red5LoggerFactory.getLogger(RoomModeratorsDao.class, webAppRootKey);
@Autowired
private UserDao userDao;
@PersistenceContext
private EntityManager em;
- /**
- *
- * @param us
- * @param isSuperModerator
- * @return
- */
- public Long addRoomModeratorByUserId(User us, Boolean isSuperModerator,
- Long roomId) {
- try {
- RoomModerator rModerator = new RoomModerator();
- rModerator.setUser(us);
- rModerator.setIsSuperModerator(isSuperModerator);
- rModerator.setStarttime(new Date());
- rModerator.setDeleted(false);
- rModerator.setRoomId(roomId);
- rModerator = em.merge(rModerator);
- long rModeratorId = rModerator.getRoomModeratorsId();
- return rModeratorId;
- } catch (Exception ex2) {
- log.error("[addRoomModeratorByUserId] ", ex2);
- }
- return null;
- }
-
- public Long addRoomModeratorByObj(RoomModerator rModerator) {
- try {
- rModerator.setStarttime(new Date());
- rModerator = em.merge(rModerator);
- long rModeratorId = rModerator.getRoomModeratorsId();
- return rModeratorId;
- } catch (Exception ex2) {
- log.error("[addRoomModeratorByUserId] ", ex2);
- }
- return null;
- }
-
- /**
- * get all available RoomTypes
- *
- * @return List of RoomTypes
- */
- public RoomModerator getRoomModeratorById(Long roomModeratorsId) {
- try {
- TypedQuery<RoomModerator> query = em.createNamedQuery("getRoomModeratorById", RoomModerator.class);
- query.setParameter("roomModeratorsId", roomModeratorsId);
- RoomModerator roomModerators = null;
- try {
- roomModerators = query.getSingleResult();
- } catch (NoResultException ex) {
- }
- return roomModerators;
-
- } catch (Exception ex2) {
- log.error("[getRoomModeratorById] ", ex2);
- }
- return null;
- }
-
- public List<RoomModerator> getRoomModeratorByRoomId(Long roomId) {
- try {
- TypedQuery<RoomModerator> query = em.createNamedQuery("getRoomModeratorByRoomId", RoomModerator.class);
- query.setParameter("deleted", true);
- query.setParameter("roomId", roomId);
- return query.getResultList();
- } catch (Exception ex2) {
- log.error("[getRoomModeratorByRoomId] ", ex2);
- ex2.printStackTrace();
- }
- return null;
- }
-
- public List<RoomModerator> getRoomModeratorByUserAndRoomId(Long roomId,
- Long user_id) {
- try {
- TypedQuery<RoomModerator> query = em.createNamedQuery("getRoomModeratorByUserAndRoomId", RoomModerator.class);
- query.setParameter("deleted", true);
- query.setParameter("roomId", roomId);
- query.setParameter("user_id", user_id);
- return query.getResultList();
- } catch (Exception ex2) {
- log.error("[getRoomModeratorByUserAndRoomId] ", ex2);
- ex2.printStackTrace();
+ public RoomModerator get(long id) {
+ List<RoomModerator> list = em.createNamedQuery("getRoomModeratorById", RoomModerator.class)
+ .setParameter("roomModeratorsId", id).getResultList();
+ if (!list.isEmpty()) {
+ return list.get(0);
}
return null;
}
-
- /**
- *
- * @param roomModeratorsId
- */
- public void removeRoomModeratorByUserId(Long roomModeratorsId) {
- try {
- RoomModerator rModerator = this
- .getRoomModeratorById(roomModeratorsId);
-
- if (rModerator == null) {
- return;
- }
-
- rModerator.setUpdatetime(new Date());
- rModerator.setDeleted(true);
-
- if (rModerator.getRoomModeratorsId() == 0) {
- em.persist(rModerator);
- } else {
- if (!em.contains(rModerator)) {
- em.merge(rModerator);
- }
- }
-
- } catch (Exception ex2) {
- log.error("[removeRoomModeratorByUserId] ", ex2);
- }
- }
-
- public void updateRoomModeratorByUserId(Long roomModeratorsId,
- Boolean isSuperModerator) {
- try {
- RoomModerator rModerator = this
- .getRoomModeratorById(roomModeratorsId);
-
- if (rModerator == null) {
- return;
- }
-
- rModerator.setIsSuperModerator(isSuperModerator);
- rModerator.setUpdatetime(new Date());
-
- if (rModerator.getRoomModeratorsId() == 0) {
- em.persist(rModerator);
- } else {
- if (!em.contains(rModerator)) {
- em.merge(rModerator);
- }
- }
-
- } catch (Exception ex2) {
- log.error("[updateRoomModeratorByUserId] ", ex2);
- }
+
+ public List<RoomModerator> get(Collection<String> ids) {
+ return em.createNamedQuery("getRoomModeratorsByIds", RoomModerator.class).setParameter("ids", ids).getResultList();
}
- public void addRoomModeratorByUserList(
- List<Map<String, Object>> roomModerators, Long roomId) {
- try {
-
- for (Iterator<Map<String, Object>> iter = roomModerators.iterator(); iter
- .hasNext();) {
-
- Map<String, Object> roomModeratorObj = iter.next();
-
- Long userId = Long.parseLong(roomModeratorObj.get("userId")
- .toString());
- Boolean isSuperModerator = Boolean
- .parseBoolean(roomModeratorObj.get("isSuperModerator")
- .toString());
-
- this.addRoomModeratorByUserId(
- userDao.get(userId), isSuperModerator,
- roomId);
-
- }
-
- } catch (Exception ex2) {
- log.error("[addRoomModeratorByUserList] ", ex2);
- ex2.printStackTrace();
- }
+ public List<RoomModerator> getByRoomId(long roomId) {
+ return em.createNamedQuery("getRoomModeratorByRoomId", RoomModerator.class).setParameter("roomId", roomId).getResultList();
}
- public void updateRoomModeratorByUserList(
- List<Map<String, Object>> roomModerators, Long roomId) {
- try {
-
- // getLsit of RoomModerators before you add new ones
- List<RoomModerator> remoteRoomModeratorList = this
- .getRoomModeratorByRoomId(roomId);
-
- for (Iterator<Map<String, Object>> iter = roomModerators.iterator(); iter
- .hasNext();) {
-
- Map<String, Object> roomModeratorObj = iter.next();
-
- Long roomModeratorsId = Long.parseLong(roomModeratorObj.get(
- "roomModeratorsId").toString());
- Long userId = Long.parseLong(roomModeratorObj.get("userId")
- .toString());
- Boolean isSuperModerator = Boolean
- .parseBoolean(roomModeratorObj.get("isSuperModerator")
- .toString());
-
- if (roomModeratorsId == null || roomModeratorsId == 0) {
- Long newRoomModeratorId = this.addRoomModeratorByUserId(
- userDao.get(userId),
- isSuperModerator, roomId);
-
- roomModeratorObj
- .put("roomModeratorsId", newRoomModeratorId);
-
- } else {
- this.updateRoomModeratorByUserId(roomModeratorsId,
- isSuperModerator);
- }
-
- }
-
- // Check for items to delete
- List<RoomModerator> roomModeratorsToDelete = new LinkedList<RoomModerator>();
-
- if (remoteRoomModeratorList != null) {
-
- for (RoomModerator roomModerator : remoteRoomModeratorList) {
-
- boolean found = false;
-
- for (Iterator<Map<String, Object>> iter = roomModerators
- .iterator(); iter.hasNext();) {
- Map<String, Object> roomModeratorObj = iter.next();
-
- Long roomModeratorsId = Long.parseLong(roomModeratorObj
- .get("roomModeratorsId").toString());
-
- if (roomModerator.getRoomModeratorsId() == roomModeratorsId
- .longValue()) {
- found = true;
- break;
- }
-
- }
-
- if (!found) {
- roomModeratorsToDelete.add(roomModerator);
- }
-
- }
-
- }
-
- for (RoomModerator rModerator : roomModeratorsToDelete) {
- System.out.println("Remove Map "
- + rModerator.getRoomModeratorsId());
- this.removeRoomModeratorByUserId(rModerator
- .getRoomModeratorsId());
- }
-
- } catch (Exception ex2) {
- log.error("[updateRoomModeratorByUserList] ", ex2);
- ex2.printStackTrace();
+ public RoomModerator update(RoomModerator rm, Long userId) {
+ if (rm.getRoomModeratorsId() == 0) {
+ rm.setStarttime(new Date());
+ em.persist(rm);
+ } else {
+ rm.setUpdatetime(new Date());
+ rm = em.merge(rm);
}
+ return rm;
}
-
}
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java Sat Jun 7 07:45:55 2014
@@ -18,6 +18,8 @@
*/
package org.apache.openmeetings.db.dao.server;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -29,7 +31,7 @@ import javax.persistence.PersistenceExce
import javax.persistence.TypedQuery;
import org.apache.openmeetings.db.dao.IDataProviderDao;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.server.LdapConfig;
import org.apache.openmeetings.util.DaoHelper;
import org.apache.openmeetings.util.OpenmeetingsVariables;
@@ -47,15 +49,14 @@ import org.springframework.transaction.a
*/
@Transactional
public class LdapConfigDao implements IDataProviderDao<LdapConfig> {
- private static final Logger log = Red5LoggerFactory.getLogger(
- LdapConfigDao.class, OpenmeetingsVariables.webAppRootKey);
+ private static final Logger log = Red5LoggerFactory.getLogger(LdapConfigDao.class, webAppRootKey);
public final static String[] searchFields = {"name", "configFileName", "domain", "comment"};
@PersistenceContext
private EntityManager em;
@Autowired
- private AdminUserDao usersDao;
+ private UserDao usersDao;
public Long addLdapConfig(String name, Boolean addDomainToUserName,
String configFileName, String domain, Long insertedby,
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java Sat Jun 7 07:45:55 2014
@@ -18,6 +18,8 @@
*/
package org.apache.openmeetings.db.dao.server;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
import java.util.Date;
import java.util.List;
@@ -27,7 +29,7 @@ import javax.persistence.PersistenceCont
import javax.persistence.TypedQuery;
import org.apache.openmeetings.db.dao.IDataProviderDao;
-import org.apache.openmeetings.db.dao.user.AdminUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.server.Server;
import org.apache.openmeetings.util.DaoHelper;
import org.apache.openmeetings.util.OpenmeetingsVariables;
@@ -45,15 +47,14 @@ import org.springframework.transaction.a
*/
@Transactional
public class ServerDao implements IDataProviderDao<Server> {
- private static final Logger log = Red5LoggerFactory.getLogger(
- ServerDao.class, OpenmeetingsVariables.webAppRootKey);
+ private static final Logger log = Red5LoggerFactory.getLogger(ServerDao.class, webAppRootKey);
public final static String[] searchFields = { "name", "address", "comment" };
@PersistenceContext
private EntityManager em;
@Autowired
- private AdminUserDao usersDao;
+ private UserDao usersDao;
/**
* Get a list of all available servers
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java Sat Jun 7 07:45:55 2014
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.db.dao.user;
+import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
@@ -54,7 +55,8 @@ public class OrganisationUserDao impleme
}
public List<Organisation_Users> get(long orgId, String search, int start, int count, String sort) {
- TypedQuery<Organisation_Users> q = em.createQuery(DaoHelper.getSearchQuery("Organisation_Users", "ou", search, false, false, sort, searchFields), Organisation_Users.class);
+ TypedQuery<Organisation_Users> q = em.createQuery(DaoHelper.getSearchQuery("Organisation_Users", "ou", null, search, false, false, "ou.organisation.organisation_id = :orgId", sort, searchFields), Organisation_Users.class);
+ q.setParameter("orgId", orgId);
q.setFirstResult(start);
q.setMaxResults(count);
return q.getResultList();
@@ -65,19 +67,22 @@ public class OrganisationUserDao impleme
q.setParameter("id", orgId);
q.setFirstResult(start);
q.setMaxResults(count);
+ return q.getResultList();
+ }
- // This refresh is necessary because after saving the user entity the
- // user_id is somehow not
- // filled into the Organisation_Users, this might be fixed by
- // implementing another
- // JOIN or mapping strategy
- List<Organisation_Users> orgUserList = q.getResultList();
- for (Organisation_Users ou : orgUserList) {
- em.refresh(ou);
+ public Organisation_Users getByOrganizationAndUser(long orgId, long userId) {
+ try {
+ List<Organisation_Users> list = em.createNamedQuery("isUserInOrganization", Organisation_Users.class)
+ .setParameter("orgId", orgId).setParameter("userId", userId).getResultList();
+ if (list != null && !list.isEmpty()) {
+ return list.get(0);
+ }
+ } catch (Exception e) {
+ //no-op
}
- return orgUserList;
+ return null;
}
-
+
public boolean isUserInOrganization(long orgId, long userId) {
return em.createNamedQuery("isUserInOrganization", Organisation_Users.class)
.setParameter("orgId", orgId).setParameter("userId", userId).getResultList().size() > 0;
@@ -102,14 +107,26 @@ public class OrganisationUserDao impleme
return q.getSingleResult();
}
+ public void update(List<Organisation_Users> list, Long userId) {
+ for (Organisation_Users ou : list) {
+ update(ou, userId);
+ }
+ }
+
public Organisation_Users update(Organisation_Users entity, Long userId) {
- //if (entity.getOrganisation_users_id())// TODO Auto-generated method stub
+ if (entity.getOrganisation_users_id() == null) {
+ entity.setStarttime(new Date());
+ em.persist(entity);
+ } else {
+ entity.setUpdatetime(new Date());
+ entity = em.merge(entity);
+ }
return entity;
}
public void delete(Organisation_Users entity, Long userId) {
if (entity.getOrganisation_users_id() != null) {
- User u = usersDao.get(entity.getUser_id());
+ User u = usersDao.get(entity.getUser().getUser_id());
int idx = u.getOrganisation_users().indexOf(entity);
//entity has been detached need to re-fetch
Organisation_Users ou = u.getOrganisation_users().remove(idx);
@@ -117,8 +134,4 @@ public class OrganisationUserDao impleme
usersDao.update(u, userId);
}
}
-
- public void add() {
-
- }
}
Copied: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java (from r1599879, openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java)
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java?p2=openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java&p1=openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java&r1=1599879&r2=1601073&rev=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java Sat Jun 7 07:45:55 2014
@@ -23,8 +23,11 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.security.NoSuchAlgorithmException;
+import java.util.Collection;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.UUID;
import javax.persistence.EntityManager;
@@ -33,8 +36,10 @@ import javax.persistence.PersistenceCont
import javax.persistence.TypedQuery;
import org.apache.commons.lang3.StringUtils;
+import org.apache.openjpa.persistence.OpenJPAEntityManager;
import org.apache.openjpa.persistence.OpenJPAPersistence;
import org.apache.openjpa.persistence.OpenJPAQuery;
+import org.apache.openmeetings.db.dao.IDataProviderDao;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.entity.user.Address;
import org.apache.openmeetings.db.entity.user.Organisation_Users;
@@ -43,6 +48,7 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.util.TimezoneUtil;
import org.apache.openmeetings.util.DaoHelper;
import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.apache.wicket.util.string.Strings;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -55,8 +61,8 @@ import org.springframework.transaction.a
*
*/
@Transactional
-public class AbstractUserDao {
- private static final Logger log = Red5LoggerFactory.getLogger(AbstractUserDao.class, webAppRootKey);
+public class UserDao implements IDataProviderDao<User> {
+ private static final Logger log = Red5LoggerFactory.getLogger(UserDao.class, webAppRootKey);
public final static String[] searchFields = {"lastname", "firstname", "login", "adresses.email", "adresses.town"};
@@ -106,22 +112,41 @@ public class AbstractUserDao {
return q.getResultList();
}
- private String getAdditionalWhere(boolean excludeContacts) {
- return excludeContacts ? "(u.type <> :contact OR (u.type = :contact AND u.ownerId = :ownerId))" : null;
+ private String getAdditionalJoin(boolean filterContacts) {
+ return filterContacts ? "LEFT JOIN u.organisation_users ou" : null;
}
- private void setAdditionalParams(TypedQuery<?> q, boolean excludeContacts, long currentUserId) {
+ private String getAdditionalWhere(boolean excludeContacts, Map<String, Object> params) {
if (excludeContacts) {
- q.setParameter("ownerId", currentUserId);
- q.setParameter("contact", Type.contact);
+ params.put("contact", Type.contact);
+ return "u.type <> :contact";
+ }
+ return null;
+ }
+
+ private String getAdditionalWhere(boolean filterContacts, Long ownerId, Map<String, Object> params) {
+ if (filterContacts) {
+ params.put("ownerId", ownerId);
+ params.put("contact", Type.contact);
+ return "((u.type <> :contact AND ou.organisation.organisation_id IN (SELECT ou.organisation.organisation_id FROM Organisation_Users ou WHERE ou.user.user_id = :ownerId)) "
+ + "OR (u.type = :contact AND u.ownerId = :ownerId))";
+ }
+ return null;
+ }
+
+ private void setAdditionalParams(TypedQuery<?> q, Map<String, Object> params) {
+ for (String key : params.keySet()) {
+ q.setParameter(key, params.get(key));
}
}
- public List<User> get(String search, int start, int count, String sort, boolean isAdmin, long currentUserId) {
- TypedQuery<User> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", search, true, false, getAdditionalWhere(isAdmin), sort, searchFields), User.class);
+ public List<User> get(String search, int start, int count, String sort, boolean filterContacts, long currentUserId) {
+ Map<String, Object> params = new HashMap<String, Object>();
+ TypedQuery<User> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", getAdditionalJoin(filterContacts), search, true, true, false
+ , getAdditionalWhere(filterContacts, currentUserId, params), sort, searchFields), User.class);
q.setFirstResult(start);
q.setMaxResults(count);
- setAdditionalParams(q, isAdmin, currentUserId);
+ setAdditionalParams(q, params);
return q.getResultList();
}
@@ -131,22 +156,47 @@ public class AbstractUserDao {
return q.getSingleResult();
}
- public long count(String search, boolean excludeContacts, long currentUserId) {
- TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", search, true, true, getAdditionalWhere(excludeContacts), null, searchFields), Long.class);
- setAdditionalParams(q, excludeContacts, currentUserId);
+ public long count(String search) {
+ return count(search, true, -1);
+ }
+
+ public long count(String search, long currentUserId) {
+ return count(search, false, currentUserId);
+ }
+
+ public long count(String search, boolean filterContacts, long currentUserId) {
+ Map<String, Object> params = new HashMap<String, Object>();
+ TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", getAdditionalJoin(filterContacts), search, true, true, true
+ , getAdditionalWhere(filterContacts, currentUserId, params), null, searchFields), Long.class);
+ setAdditionalParams(q, params);
return q.getSingleResult();
}
- public List<User> get(String search, boolean excludeContacts, long currentUserId) {
- TypedQuery<User> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", search, true, false, getAdditionalWhere(excludeContacts), null, searchFields), User.class);
- if (excludeContacts) {
- q.setParameter("ownerId", currentUserId);
- q.setParameter("contact", Type.contact);
- }
+ //This is AdminDao method
+ public List<User> get(String search, boolean excludeContacts, int first, int count) {
+ Map<String, Object> params = new HashMap<String, Object>();
+ TypedQuery<User> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", null, search, true, true, false
+ , getAdditionalWhere(excludeContacts, params), null, searchFields), User.class);
+ setAdditionalParams(q, params);
+ q.setFirstResult(first);
+ q.setMaxResults(count);
+ return q.getResultList();
+ }
+
+ public List<User> get(String search, boolean filterContacts, long currentUserId) {
+ Map<String, Object> params = new HashMap<String, Object>();
+ TypedQuery<User> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", getAdditionalJoin(filterContacts), search, true, true, false
+ , getAdditionalWhere(filterContacts, currentUserId, params), null, searchFields), User.class);
+ setAdditionalParams(q, params);
return q.getResultList();
}
public User update(User u, Long userId) {
+ if (u.getOrganisation_users() != null) {
+ for (Organisation_Users ou : u.getOrganisation_users()) {
+ ou.setUser(u);
+ }
+ }
if (u.getUser_id() == null) {
u.setStarttime(new Date());
em.persist(u);
@@ -181,28 +231,24 @@ public class AbstractUserDao {
}
private User get(long user_id, boolean force) {
+ User u = null;
if (user_id > 0) {
- TypedQuery<User> query = em.createNamedQuery("getUserById",
- User.class);
- query.setParameter("user_id", user_id);
-
- User users = null;
- try {
- if (force) {
- @SuppressWarnings("unchecked")
- OpenJPAQuery<User> kq = OpenJPAPersistence.cast(query);
- kq.getFetchPlan().addFetchGroup("backupexport");
- users = kq.getSingleResult();
- } else {
- users = query.getSingleResult();
- }
- } catch (NoResultException ex) {
+ OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
+ boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
+ oem.getFetchPlan().setQueryResultCacheEnabled(false);
+ TypedQuery<User> q = oem.createNamedQuery("getUserById", User.class).setParameter("id", user_id);
+ @SuppressWarnings("unchecked")
+ OpenJPAQuery<User> kq = OpenJPAPersistence.cast(q);
+ kq.getFetchPlan().addFetchGroup("orgUsers");
+ if (force) {
+ kq.getFetchPlan().addFetchGroup("backupexport");
}
- return users;
+ u = kq.getSingleResult();
+ oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
} else {
- log.info("[getUser] " + "Info: No USER_ID given");
+ log.info("[get] " + "Info: No USER_ID given");
}
- return null;
+ return u;
}
public Long deleteUserID(long userId) {
@@ -236,22 +282,21 @@ public class AbstractUserDao {
return null;
}
+ public List<User> get(Collection<String> ids) {
+ return em.createNamedQuery("getUsersByIds", User.class).setParameter("ids", ids).getResultList();
+ }
+
public List<User> getAllUsers() {
- try {
- TypedQuery<User> q = em.createNamedQuery("getNondeletedUsers", User.class);
- return q.getResultList();
- } catch (Exception ex2) {
- log.error("[getAllUsers] ", ex2);
- }
- return null;
+ TypedQuery<User> q = em.createNamedQuery("getNondeletedUsers", User.class);
+ return q.getResultList();
}
- public List<User> getAllUsersDeleted() {
+ public List<User> getAllBackupUsers() {
try {
TypedQuery<User> q = em.createNamedQuery("getAllUsers", User.class);
@SuppressWarnings("unchecked")
OpenJPAQuery<User> kq = OpenJPAPersistence.cast(q);
- kq.getFetchPlan().addFetchGroup("backupexport");
+ kq.getFetchPlan().addFetchGroups("backupexport", "orgUsers");
return kq.getResultList();
} catch (Exception ex2) {
log.error("[getAllUsersDeleted] ", ex2);
@@ -295,12 +340,12 @@ public class AbstractUserDao {
return count == 0;
}
- public User getUserByLogin(String login) {
+ public User getUserByName(String login, Type type) {
User us = null;
try {
us = em.createNamedQuery("getUserByLogin", User.class)
.setParameter("login", login)
- .setParameter("type", User.Type.user)
+ .setParameter("type", type)
.getSingleResult();
} catch (NoResultException ex) {
}
@@ -385,6 +430,10 @@ public class AbstractUserDao {
return getContact(email, firstName, lastName, null, null, get(ownerId));
}
+ public User getContact(String email, String firstName, String lastName, Long langId, String tzId, long ownerId) {
+ return getContact(email, firstName, lastName, langId, tzId, get(ownerId));
+ }
+
public User getContact(String email, String firstName, String lastName, Long langId, String tzId, User owner) {
User to = null;
try {
@@ -426,64 +475,49 @@ public class AbstractUserDao {
return u;
}
- private StringBuilder getUserProfileQuery(boolean count, String text, String offers, String search) {
+ private <T> TypedQuery<T> getUserProfileQuery(Class<T> clazz, long userId, String text, String offers, String search, String orderBy, boolean asc) {
+ Map<String, Object> params = new HashMap<String, Object>();
+ boolean filterContacts = true;
+ boolean count = clazz.isAssignableFrom(Long.class);
+
StringBuilder sb = new StringBuilder("SELECT ");
sb.append(count ? "COUNT(" : "").append("u").append(count ? ") " : " ")
- .append("FROM User u WHERE u.deleted = false AND ")
- .append(getAdditionalWhere(true));
- if (offers != null && offers.length() != 0) {
+ .append("FROM User u ").append(getAdditionalJoin(filterContacts)).append(" WHERE u.deleted = false AND ")
+ .append(getAdditionalWhere(filterContacts, userId, params));
+ if (!Strings.isEmpty(offers)) {
sb.append(" AND (LOWER(u.userOffers) LIKE :userOffers) ");
+ params.put("userOffers", getStringParam(offers));
}
- if (search != null && search.length() != 0) {
+ if (!Strings.isEmpty(search)) {
sb.append(" AND (LOWER(u.userSearchs) LIKE :userSearchs) ");
+ params.put("userSearchs", getStringParam(search));
}
- if (text != null && text.length() != 0) {
+ if (!Strings.isEmpty(text)) {
sb.append(" AND (LOWER(u.login) LIKE :search ")
.append("OR LOWER(u.firstname) LIKE :search ")
.append("OR LOWER(u.lastname) LIKE :search ")
.append("OR LOWER(u.adresses.email) LIKE :search ")
.append("OR LOWER(u.adresses.town) LIKE :search " + ") ");
+ params.put("search", getStringParam(text));
+ }
+ if (!count && !Strings.isEmpty(orderBy)) {
+ sb.append(" ORDER BY ").append(orderBy).append(asc ? " ASC" : " DESC");
}
- return sb;
+ TypedQuery<T> query = em.createQuery(sb.toString(), clazz);
+ setAdditionalParams(query, params);
+ return query;
+ }
+
+ private String getStringParam(String param) {
+ return param == null ? "%" : "%" + StringUtils.lowerCase(param) + "%";
}
public List<User> searchUserProfile(long userId, String text, String offers, String search, String orderBy, int start, int max, boolean asc) {
- StringBuilder sb = getUserProfileQuery(false, text, offers, search);
- sb.append(" ORDER BY ").append(orderBy).append(asc ? " ASC" : " DESC");
-
- log.debug("hql :: " + sb.toString());
- TypedQuery<User> query = em.createQuery(sb.toString(), User.class);
- setAdditionalParams(query, false, userId);
-
- if (text != null && text.length() != 0) {
- query.setParameter("search", StringUtils.lowerCase("%" + text + "%"));
- }
- if (offers != null && offers.length() != 0) {
- query.setParameter("userOffers", StringUtils.lowerCase("%" + offers + "%"));
- }
- if (search != null && search.length() != 0) {
- query.setParameter("userSearchs", StringUtils.lowerCase("%" + search + "%"));
- }
- return query.setFirstResult(start).setMaxResults(max).getResultList();
+ return getUserProfileQuery(User.class, userId, text, offers, search, orderBy, asc).setFirstResult(start).setMaxResults(max).getResultList();
}
public Long searchCountUserProfile(long userId, String text, String offers, String search) {
- StringBuilder sb = getUserProfileQuery(true, text, offers, search);
-
- log.debug("hql :: " + sb.toString());
- TypedQuery<Long> query = em.createQuery(sb.toString(), Long.class);
- setAdditionalParams(query, false, userId);
-
- if (text != null && text.length() != 0) {
- query.setParameter("search", StringUtils.lowerCase("%" + text + "%"));
- }
- if (offers != null && offers.length() != 0) {
- query.setParameter("userOffers", StringUtils.lowerCase("%" + offers + "%"));
- }
- if (search != null && search.length() != 0) {
- query.setParameter("userSearchs", StringUtils.lowerCase("%" + search + "%"));
- }
- return query.getSingleResult();
+ return getUserProfileQuery(Long.class, userId, text, offers, search, null, false).getSingleResult();
}
public User getExternalUser(String extId, String extType) {
@@ -492,4 +526,8 @@ public class AbstractUserDao {
.setParameter("externalType", extType)
.getSingleResult();
}
+
+ public List<User> get(String search, int start, int count, String order) {
+ return get(search, start, count, order, false, -1);
+ }
}
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java Sat Jun 7 07:45:55 2014
@@ -72,7 +72,7 @@ import org.simpleframework.xml.Root;
+ "where c.externalRoomId = :externalRoomId AND c.externalRoomType = :externalRoomType "
+ "AND rt.roomtypes_id = :roomtypes_id AND c.deleted <> :deleted"),
@NamedQuery(name = "getPublicRoomsOrdered", query = "SELECT r from Room r WHERE r.ispublic= true AND r.deleted= false AND r.appointment = false ORDER BY r.name ASC"),
- @NamedQuery(name = "getRoomById", query = "SELECT r FROM Room r WHERE r.deleted = false AND r.rooms_id = :id"),
+ @NamedQuery(name = "getRoomById", query = "SELECT r FROM Room r LEFT JOIN FETCH r.moderators WHERE r.deleted = false AND r.rooms_id = :id"),
@NamedQuery(name = "getSipRoomIdsByIds", query = "SELECT r.rooms_id FROM Room r WHERE r.deleted = false AND r.sipEnabled = true AND r.rooms_id IN :ids"),
@NamedQuery(name = "countRooms", query = "SELECT COUNT(r) FROM Room r WHERE r.deleted = false"),
@NamedQuery(name = "getBackupRooms", query = "SELECT r FROM Room r LEFT JOIN FETCH r.moderators ORDER BY r.rooms_id"),
@@ -241,7 +241,7 @@ public class Room implements Serializabl
@JoinColumn(name = "roomId")
@ForeignKey(enabled = true)
@ElementList(name = "room_moderators", required=false)
- private List<RoomModerator> moderators;
+ private List<RoomModerator> moderators = new ArrayList<RoomModerator>();
@Column(name = "sip_enabled")
@Element(data = true, required = false)
@@ -525,7 +525,9 @@ public class Room implements Serializabl
}
public void setModerators(List<RoomModerator> moderators) {
- this.moderators = moderators;
+ if (moderators != null) {
+ this.moderators = moderators;
+ }
}
public Boolean getChatModerated() {
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java Sat Jun 7 07:45:55 2014
@@ -40,10 +40,9 @@ import org.simpleframework.xml.Root;
@Entity
@NamedQueries({
- @NamedQuery(name = "getRoomModeratorById", query = "select c from RoomModerator as c " +
- "where c.roomModeratorsId = :roomModeratorsId"),
- @NamedQuery(name = "getRoomModeratorByRoomId", query = "select c from RoomModerator as c "
- + "where c.roomId = :roomId AND c.deleted <> :deleted"),
+ @NamedQuery(name = "getRoomModeratorById", query = "select c from RoomModerator as c where c.roomModeratorsId = :roomModeratorsId"),
+ @NamedQuery(name = "getRoomModeratorsByIds", query = "select c from RoomModerator as c where c.roomModeratorsId IN :ids"),
+ @NamedQuery(name = "getRoomModeratorByRoomId", query = "select c from RoomModerator as c where c.roomId = :roomId AND c.deleted = false"),
@NamedQuery(name = "getRoomModeratorByUserAndRoomId", query = "select c from RoomModerator as c "
+ "where c.roomId = :roomId "
+ "AND c.deleted <> :deleted "
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation_Users.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation_Users.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation_Users.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Organisation_Users.java Sat Jun 7 07:45:55 2014
@@ -40,9 +40,7 @@ import org.simpleframework.xml.Root;
@Entity
@NamedQueries({
- @NamedQuery(name="getOrganisation_UserByUserAndOrganisation",
- query="SELECT ou FROM User u, IN(u.organisation_users) ou WHERE u.deleted = false AND u.user_id = :user_id AND ou.organisation.organisation_id = :organisation_id")
- , @NamedQuery(name="deleteUsersFromOrganisation", query="DELETE FROM Organisation_Users c WHERE c.organisation.organisation_id = :id")
+ @NamedQuery(name="deleteUsersFromOrganisation", query="DELETE FROM Organisation_Users c WHERE c.organisation.organisation_id = :id")
, @NamedQuery(name="countOrganisationUsers", query="SELECT COUNT(c) FROM Organisation_Users c WHERE c.organisation.organisation_id = :id")
, @NamedQuery(name="getOrganisationUsersById", query="SELECT c FROM Organisation_Users c WHERE c.organisation_users_id = :id")
, @NamedQuery(name="getOrganisationUsersByOrgId", query="SELECT c FROM Organisation_Users c WHERE c.organisation.organisation_id = :id")
@@ -63,10 +61,6 @@ public class Organisation_Users implemen
@Element(name="organisation_id", required=false)
private Organisation organisation;
- // FIXME: Does not get updated if a new relation is stored in the user
- @Column(name = "user_id")
- private Long user_id;
-
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id", insertable = true, updatable = true)
@ForeignKey(enabled = true)
@@ -109,14 +103,6 @@ public class Organisation_Users implemen
this.organisation_users_id = organisation_users_id;
}
- public Long getUser_id() {
- return user_id;
- }
-
- public void setUser_id(Long user_id) {
- this.user_id = user_id;
- }
-
public Date getStarttime() {
return starttime;
}
@@ -149,45 +135,36 @@ public class Organisation_Users implemen
this.isModerator = isModerator;
}
+ public User getUser() {
+ return user;
+ }
+
+ public void setUser(User user) {
+ this.user = user;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime
- * result
- + ((organisation_users_id == null) ? 0 : organisation_users_id
- .hashCode());
+ result = prime * result + ((organisation_users_id == null) ? 0 : organisation_users_id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
- if (this == obj) {
+ if (this == obj)
return true;
- }
- if (obj == null) {
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
return false;
- }
- if (obj instanceof Organisation_Users) {
- Organisation_Users other = (Organisation_Users) obj;
- if (organisation_users_id == null) {
- if (other.organisation_users_id != null) {
- return false;
- }
- } else if (!organisation_users_id.equals(other.organisation_users_id)) {
+ Organisation_Users other = (Organisation_Users) obj;
+ if (organisation_users_id == null) {
+ if (other.organisation_users_id != null)
return false;
- }
- } else {
+ } else if (!organisation_users_id.equals(other.organisation_users_id))
return false;
- }
return true;
}
-
- public User getUser() {
- return user;
- }
-
- public void setUser(User user) {
- this.user = user;
- }
}
Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java Sat Jun 7 07:45:55 2014
@@ -37,7 +37,6 @@ import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
@@ -71,7 +70,8 @@ import org.simpleframework.xml.Root;
@Entity
@FetchGroups({ @FetchGroup(name = "backupexport", attributes = { @FetchAttribute(name = "password") }) })
@NamedQueries({
- @NamedQuery(name = "getUserById", query = "select c from User c where c.user_id = :user_id"),
+ @NamedQuery(name = "getUserById", query = "SELECT u FROM User u LEFT JOIN FETCH u.organisation_users WHERE u.user_id = :id"),
+ @NamedQuery(name = "getUsersByIds", query = "select c from User c where c.user_id IN :ids"),
@NamedQuery(name = "checkUserLogin", query = "SELECT COUNT(u) FROM User u WHERE ((:id > 0 AND u.user_id <> :id) OR (:id = 0)) "
+ "AND u.login = :login AND u.deleted = false"),
@NamedQuery(name = "checkUserEmail", query = "SELECT COUNT(u) FROM User u WHERE ((:id > 0 AND u.user_id <> :id) OR (:id = 0)) "
@@ -103,7 +103,8 @@ public class User implements Serializabl
public enum Type {
user
- , ldap //should we add it???
+ , ldap
+ , oauth
, external
, contact
}
@@ -189,7 +190,7 @@ public class User implements Serializabl
@Element(data = true, required = false)
private String activatehash;
- @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+ @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "adresses_id", insertable = true, updatable = true)
@ForeignKey(enabled = true)
@Element(name = "address", required = false)
@@ -198,7 +199,7 @@ public class User implements Serializabl
@Transient
private Userlevel userlevel;
- @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+ @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id", insertable = true, updatable = true)
@ElementList(name = "organisations", required = false)
@ElementDependent
@@ -280,18 +281,18 @@ public class User implements Serializabl
public void setAdresses(String street, String zip, String town,
State state, String additionalname, String comment, String fax,
String phone, String email) {
- if (this.adresses == null) {
- this.adresses = new Address();
+ if (adresses == null) {
+ adresses = new Address();
}
- this.adresses.setStreet(street);
- this.adresses.setZip(zip);
- this.adresses.setTown(town);
- this.adresses.setStates(state);
- this.adresses.setAdditionalname(additionalname);
- this.adresses.setComment(comment);
- this.adresses.setFax(fax);
- this.adresses.setPhone(phone);
- this.adresses.setEmail(email);
+ 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() {
@@ -471,8 +472,7 @@ public class User implements Serializabl
return organisation_users;
}
- public void setOrganisation_users(
- List<Organisation_Users> organisation_users) {
+ public void setOrganisation_users(List<Organisation_Users> organisation_users) {
if (organisation_users != null) {
this.organisation_users = organisation_users;
}
Modified: openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java Sat Jun 7 07:45:55 2014
@@ -50,11 +50,11 @@ import org.apache.openmeetings.db.dao.se
import org.apache.openmeetings.db.dao.server.OAuth2Dao;
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.OrganisationDao;
import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
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;
@@ -108,7 +108,7 @@ public class BackupExport {
@Autowired
private FlvRecordingDao flvRecordingDao;
@Autowired
- private AdminUserDao usersDao;
+ private UserDao usersDao;
@Autowired
private MeetingMemberDao meetingMemberDao;
@Autowired
@@ -153,7 +153,7 @@ public class BackupExport {
/*
* ##################### Backup Users
*/
- exportUsers(backup_dir, usersDao.getAllUsersDeleted());
+ exportUsers(backup_dir, usersDao.getAllBackupUsers());
/*
* ##################### Backup Room
Modified: openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-install/src/main/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/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/UserConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/UserConverter.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/UserConverter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-install/src/main/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/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-install/src/main/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/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-install/src/main/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/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java Sat Jun 7 07:45:55 2014
@@ -40,16 +40,17 @@ import javax.persistence.criteria.Predic
import javax.persistence.criteria.Root;
import org.apache.openmeetings.core.data.basic.FieldManager;
-import org.apache.openmeetings.core.data.user.OrganisationManager;
import org.apache.openmeetings.core.mail.MailHandler;
import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
import org.apache.openmeetings.core.remote.util.SessionVariablesUtil;
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;
@@ -92,9 +93,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
@@ -122,7 +125,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);
@@ -227,7 +230,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());
@@ -382,11 +385,12 @@ public class UserManager implements IUse
public Long getUserLevelByID(Long user_id) {
try {
- if (user_id == null)
- return new Long(0);
+ if (user_id == null) {
+ return 0L;
+ }
// For direct access of linked users
- if (user_id == -1) {
- return new Long(1);
+ if (user_id < 0) {
+ return 1L;
}
TypedQuery<User> query = em
@@ -439,9 +443,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);
@@ -493,8 +495,7 @@ public class UserManager implements IUse
public Long registerUser(String login, String Userpass, String lastname,
String firstname, String email, Date age, String street,
String additionalname, String fax, String zip, long states_id,
- String town, long language_id, String phone, boolean sendSMS,
- boolean generateSipUserData, String jNameTimeZone) {
+ String town, long language_id, String phone, boolean sendSMS, boolean generateSipUserData, String jNameTimeZone) {
String baseURL = configurationDao.getBaseUrl();
boolean sendConfirmation = baseURL != null
@@ -776,10 +777,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);
@@ -847,48 +848,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;
- }
-
/**
* @param admin
* @param room_id
Modified: openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/DaoHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/DaoHelper.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/DaoHelper.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-util/src/main/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();
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml Sat Jun 7 07:45:55 2014
@@ -203,7 +203,7 @@
<inherited>true</inherited>
<configuration>
<workingDirectory>${project.build.directory}</workingDirectory>
- <excludedGroups>org.apache.openmeetings.test.selenium.SeleniumTests</excludedGroups>
+ <excludedGroups>org.apache.openmeetings.test.selenium.SeleniumTests,org.apache.openmeetings.test.selenium.HeavyTests</excludedGroups>
<systemPropertyVariables>
<om.home>${project.build.directory}/test-root</om.home>
<languages.home>${project.basedir}/src/main/webapp/languages</languages.home>
Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java?rev=1601073&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java (added)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/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/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/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/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/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>
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java?rev=1601073&r1=1601072&r2=1601073&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java Sat Jun 7 07:45:55 2014
@@ -18,6 +18,9 @@
*/
package org.apache.openmeetings.web.admin.groups;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
import org.apache.openmeetings.db.entity.user.Organisation_Users;
import org.apache.openmeetings.db.entity.user.User;
@@ -27,57 +30,49 @@ import org.apache.openmeetings.web.app.W
import org.apache.openmeetings.web.common.ConfirmCallListener;
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.SearchableDataProvider;
-import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
+import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.model.Model;
public class GroupUsersPanel extends Panel {
- private static final long serialVersionUID = -1813488722913433227L;
+ private static final long serialVersionUID = 1L;
private long organisationId;
-
- public static String getUser(User u) {
- return u.getLogin() + " [" + u.getFirstname() + ", " + u.getLastname() + "]";
- }
+ private List<Organisation_Users> users2add = new ArrayList<Organisation_Users>();
public GroupUsersPanel(String id, long orgId) {
super(id);
this.organisationId = orgId;
setOutputMarkupId(true);
- SearchableDataView<Organisation_Users> dataView = new SearchableDataView<Organisation_Users>("userList", new SearchableDataProvider<Organisation_Users>(OrganisationUserDao.class){
+ SearchableDataView<Organisation_Users> dataView = new SearchableDataView<Organisation_Users>("userList", new OrgUserDataProvider()) {
private static final long serialVersionUID = 1L;
- protected OrganisationUserDao getDao() {
- return (OrganisationUserDao)super.getDao();
- }
-
- public long size() {
- return search == null ? getDao().count(organisationId) : getDao().count(organisationId, search);
- }
-
- public java.util.Iterator<? extends Organisation_Users> iterator(long first, long count) {
- return (search == null && getSort() == null
- ? getDao().get(organisationId, (int)first, (int)count)
- : getDao().get(organisationId, search, (int)first, (int)count, getSortStr())).iterator();
- }
- }) {
- private static final long serialVersionUID = 8715559628755439596L;
-
@Override
protected void populateItem(Item<Organisation_Users> item) {
final Organisation_Users orgUser = item.getModelObject();
User u = orgUser.getUser();
- if (u != null) {
- item.add(new Label("label", Model.of(getUser(u))));
- } else {
- item.add(new Label("label", Model.of("")));
+ item.add(new CheckBox("isModerator").add(new OnChangeAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ if (orgUser.getOrganisation_users_id() != null) {
+ Application.getBean(OrganisationUserDao.class).update(orgUser, WebSession.getUserId());
+ }
+ }
+ }));
+ Label label = new Label("label", u == null ? "" : GroupForm.formatUser(u));
+ if (orgUser.getOrganisation_users_id() == null) {
+ label.add(AttributeAppender.append("class", "newItem"));
}
+ item.add(label);
item.add(new WebMarkupContainer("deleteUserBtn").add(new AjaxEventBehavior("onclick"){
private static final long serialVersionUID = 1L;
@@ -89,16 +84,25 @@ public class GroupUsersPanel extends Pan
@Override
protected void onEvent(AjaxRequestTarget target) {
- Application.getBean(OrganisationUserDao.class).delete(orgUser, WebSession.getUserId());
+ if (orgUser.getOrganisation_users_id() == null) {
+ for (int i = 0; i < users2add.size(); ++i) {
+ //FIXME ineffective
+ if (users2add.get(i).getUser().getUser_id().equals(orgUser.getUser().getUser_id())) {
+ users2add.remove(i);
+ break;
+ }
+ }
+ } else {
+ Application.getBean(OrganisationUserDao.class).delete(orgUser, WebSession.getUserId());
+ }
target.add(GroupUsersPanel.this);
}
- }));
- item.add(AttributeModifier.append("class", ((item.getIndex() % 2 == 1) ? "even" : "odd")));
+ }));
}
};
add(dataView).setOutputMarkupId(true);
add(new PagedEntityListPanel("navigator", dataView) {
- private static final long serialVersionUID = 5097048616003411362L;
+ private static final long serialVersionUID = 1L;
@Override
protected void onEvent(AjaxRequestTarget target) {
@@ -109,5 +113,36 @@ public class GroupUsersPanel extends Pan
void update(long orgId) {
organisationId = orgId;
+ users2add.clear();
+ }
+
+ List<Organisation_Users> getUsers2add() {
+ return users2add;
+ }
+
+ private class OrgUserDataProvider extends SearchableDataProvider<Organisation_Users> {
+ private static final long serialVersionUID = 1L;
+
+ OrgUserDataProvider() {
+ super(OrganisationUserDao.class);
+ }
+
+ protected OrganisationUserDao getDao() {
+ return (OrganisationUserDao)super.getDao();
+ }
+
+ public long size() {
+ return users2add.size() + (search == null ? getDao().count(organisationId) : getDao().count(organisationId, search));
+ }
+
+ public java.util.Iterator<? extends Organisation_Users> iterator(long first, long count) {
+ List<Organisation_Users> list = new ArrayList<Organisation_Users>();
+ list.addAll(users2add);
+ list.addAll(search == null && getSort() == null
+ ? getDao().get(organisationId, (int)first, (int)count)
+ : getDao().get(organisationId, search, (int)first, (int)count, getSortStr()));
+
+ return list.iterator();
+ }
}
}