Author: solomax
Date: Wed Feb 20 05:26:16 2013
New Revision: 1448008
URL: http://svn.apache.org/r1448008
Log:
[OPENMEETINGS-470] Rooms with sipEnabled == false are removed from meetme table
and are not accessible via Asterisk
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/RoomDao.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/room/Room.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java?rev=1448008&r1=1448007&r2=1448008&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
Wed Feb 20 05:26:16 2013
@@ -43,7 +43,6 @@ import org.apache.openmeetings.persisten
import org.apache.openmeetings.persistence.beans.room.Room;
import org.apache.openmeetings.persistence.beans.room.RoomOrganisation;
import org.apache.openmeetings.persistence.beans.room.RoomType;
-import org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe;
import org.apache.openmeetings.persistence.beans.user.User;
import org.apache.openmeetings.session.ISessionManager;
import org.red5.logging.Red5LoggerFactory;
@@ -570,15 +569,6 @@ public class RoomManager {
//
---------------------------------------------------------------------------------------------
- //TODO move it to helper or DAO
- public String getSipNumber(long roomId) {
- String sipEnabled =
configurationDao.getConfValue("red5sip.enable", String.class, "no");
- if("yes".equals(sipEnabled)) {
- return configurationDao.getConfValue("red5sip.room_prefix",
String.class, "400") + roomId;
- }
- return null;
- }
-
/**
* Returns number of SIP conference participants
* @param rooms_id id of room
@@ -659,19 +649,7 @@ public class RoomManager {
r.setAutoVideoSelect(autoVideoSelect);
r.setSipEnabled(sipEnabled);
-
/*****************************************************************************************************/
-
- r = em.merge(r);
- long returnId = r.getRooms_id();
- String sipNumber = getSipNumber(returnId);
- if (sipNumber != null) {
- r.setMeetme(new MeetMe());
- r.getMeetme().setConfno(sipNumber);
- r.getMeetme().setPin(conferencePin);
- } else {
- r.setMeetme(null);
- }
- r = em.merge(r); //FIXME double merge
+ r = roomDao.update(r, ownerId, conferencePin);
if (organisations != null) {
Long t =
this.updateRoomOrganisations(organisations, r);
@@ -684,7 +662,7 @@ public class RoomManager {
roomModerators,
r.getRooms_id());
}
- return returnId;
+ return r.getRooms_id();
}
} catch (Exception ex2) {
log.error("[addRoom] ", ex2);
@@ -1231,17 +1209,7 @@ public class RoomManager {
r.setIsClosed(isClosed);
r.setRedirectURL(redirectURL);
-
- String sipNumber = getSipNumber(rooms_id);
- if (sipNumber == null) {
- r.setMeetme(null);
- } else if (r.getMeetme() == null ||
!sipNumber.equals(r.getMeetme().getConfno())) {
- r.setMeetme(new MeetMe());
- r.getMeetme().setConfno(sipNumber);
- r.getMeetme().setPin(conferencePin);
- }
r.setOwnerId(ownerId);
-
r.setWaitForRecording(waitForRecording);
r.setAllowRecording(allowRecording);
@@ -1257,14 +1225,7 @@ public class RoomManager {
r.setFilesOpened(filesOpened);
r.setAutoVideoSelect(autoVideoSelect);
r.setSipEnabled(sipEnabled);
-
- if (r.getRooms_id() == null) {
- em.persist(r);
- } else {
- if (!em.contains(r)) {
- r = em.merge(r);
- }
- }
+ roomDao.update(r, ownerId);
if (organisations != null) {
Long t =
this.updateRoomOrganisations(organisations, r);
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/RoomDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/RoomDao.java?rev=1448008&r1=1448007&r2=1448008&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/RoomDao.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/RoomDao.java
Wed Feb 20 05:26:16 2013
@@ -26,8 +26,11 @@ import javax.persistence.PersistenceCont
import javax.persistence.TypedQuery;
import org.apache.openmeetings.data.IDataProviderDao;
+import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
import org.apache.openmeetings.persistence.beans.room.Room;
+import org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe;
import org.apache.openmeetings.utils.DaoHelper;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@Transactional
@@ -37,6 +40,8 @@ public class RoomDao implements IDataPro
@PersistenceContext
private EntityManager em;
+ @Autowired
+ private ConfigurationDao cfgDao;
public Room get(long id) {
TypedQuery<Room> q = em.createNamedQuery("getRoomById",
Room.class);
@@ -90,21 +95,51 @@ public class RoomDao implements IDataPro
q.setParameter("orgId", orgId);
return q.getResultList();
}
+
+ private boolean isSipEnabled() {
+ return "yes".equals(cfgDao.getConfValue("red5sip.enable",
String.class, "no"));
+ }
+
+ private String getSipNumber(long roomId) {
+ if (isSipEnabled()) {
+ return cfgDao.getConfValue("red5sip.room_prefix", String.class,
"400") + roomId;
+ }
+ return null;
+ }
public Room update(Room entity, Long userId) {
+ return update(entity, userId, entity.getMeetme() == null ? null
: entity.getMeetme().getPin());
+ }
+
+ public Room update(Room entity, Long userId, String pin) {
if (entity.getRooms_id() == null) {
entity.setStarttime(new Date());
em.persist(entity);
} else {
entity.setUpdatetime(new Date());
- entity = em.merge(entity);
}
+ if (entity.isSipEnabled() && isSipEnabled()) {
+ String sipNumber = getSipNumber(entity.getRooms_id());
+ if (entity.getMeetme() == null ||
!sipNumber.equals(entity.getMeetme().getConfno())) {
+ MeetMe m = new MeetMe();
+ m.setConfno(sipNumber);
+ entity.setMeetme(m);
+ }
+ entity.getMeetme().setPin(pin);
+ } else {
+ if (entity.getMeetme() != null) {
+ em.remove(entity.getMeetme());
+ }
+ entity.setMeetme(null);
+ }
+ entity = em.merge(entity);
return entity;
}
public void delete(Room entity, Long userId) {
entity.setDeleted(true);
entity.setMeetme(null);
+ entity.setSipEnabled(false);
update(entity, userId);
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/room/Room.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/room/Room.java?rev=1448008&r1=1448007&r2=1448008&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/room/Room.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/room/Room.java
Wed Feb 20 05:26:16 2013
@@ -575,5 +575,4 @@ public class Room implements Serializabl
public void setSipEnabled(boolean sipEnabled) {
this.sipEnabled = sipEnabled;
}
-
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java?rev=1448008&r1=1448007&r2=1448008&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java
Wed Feb 20 05:26:16 2013
@@ -101,7 +101,6 @@ import org.apache.openmeetings.persisten
import org.apache.openmeetings.persistence.beans.room.RoomModerator;
import org.apache.openmeetings.persistence.beans.room.RoomOrganisation;
import org.apache.openmeetings.persistence.beans.room.RoomType;
-import org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe;
import org.apache.openmeetings.persistence.beans.user.Address;
import org.apache.openmeetings.persistence.beans.user.PrivateMessage;
import org.apache.openmeetings.persistence.beans.user.PrivateMessageFolder;
@@ -285,11 +284,8 @@ public class BackupImportController exte
for (Room r : list) {
Long roomId = r.getRooms_id();
- // We need to reset ids as openJPA reject to
store them
- // otherwise
+ // We need to reset ids as openJPA reject to
store them otherwise
r.setRooms_id(null);
- MeetMe mm = r.getMeetme();
- r.setMeetme(null);
if (r.getModerators() != null) {
for (Iterator<RoomModerator> i =
r.getModerators().iterator(); i.hasNext();) {
RoomModerator rm = i.next();
@@ -298,12 +294,7 @@ public class BackupImportController exte
}
}
}
- r = roomDao.update(r, -1L);
- if (mm != null) {
-
mm.setConfno(roomManager.getSipNumber(r.getRooms_id()));
- r.setMeetme(mm);
- r = roomDao.update(r, 1L); //FIXME
double update
- }
+ r = roomDao.update(r, null);
roomsMap.put(roomId, r.getRooms_id());
}
}