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());
                        }
                }


Reply via email to