Author: solomax
Date: Wed Dec  5 05:15:14 2012
New Revision: 1417279

URL: http://svn.apache.org/viewvc?rev=1417279&view=rev
Log:
Possible Primary Key violation while adding MeetMe room is fixed

Modified:
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/sip/api/impl/asterisk/dao/AsteriskDAOImpl.java

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/sip/api/impl/asterisk/dao/AsteriskDAOImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/sip/api/impl/asterisk/dao/AsteriskDAOImpl.java?rev=1417279&r1=1417278&r2=1417279&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/sip/api/impl/asterisk/dao/AsteriskDAOImpl.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/sip/api/impl/asterisk/dao/AsteriskDAOImpl.java
 Wed Dec  5 05:15:14 2012
@@ -25,7 +25,6 @@ import javax.persistence.PersistenceCont
 
 import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
-import org.apache.openmeetings.persistence.beans.basic.Configuration;
 import org.apache.openmeetings.persistence.beans.sip.asterisk.AsteriskSipUsers;
 import org.apache.openmeetings.persistence.beans.sip.asterisk.Extensions;
 import org.apache.openmeetings.persistence.beans.sip.asterisk.MeetMe;
@@ -46,12 +45,8 @@ public class AsteriskDAOImpl {
 
     public void addSipUser(String username, String secret) {
         AsteriskSipUsers u = new AsteriskSipUsers();
-               Configuration conf = configurationDaoImpl
-                               .getConfKey("red5sip.exten_context");
-        String defaultRoomContext = "rooms";
-        if(conf != null && !conf.getConf_value().isEmpty()) {
-            defaultRoomContext = conf.getConf_value();
-        }
+        String defaultRoomContext = configurationDaoImpl
+                       .getConfValue("red5sip.exten_context", String.class, 
"rooms");
         u.setName(username);
         u.setSecret(secret);
         u.setContext(defaultRoomContext);
@@ -68,14 +63,16 @@ public class AsteriskDAOImpl {
     }
 
     public String addMeetMeConference() {
-        int count = ((Number)em.createQuery("SELECT COUNT(m.confno) FROM 
MeetMe AS m").getSingleResult()).intValue();
-               Configuration conf = configurationDaoImpl
-                               .getConfKey("red5sip.room_prefix");
-        String prefix = DEFAULT_SIP_CONTEXT;
-        if(conf != null) {
-            prefix = conf.getConf_value();
-        }
-        String confno = prefix+(count+1);
+        int count = (em.createQuery("SELECT COUNT(m) FROM MeetMe AS m", 
Long.class).getSingleResult()).intValue();
+        String prefix = 
configurationDaoImpl.getConfValue("red5sip.room_prefix", String.class, 
DEFAULT_SIP_CONTEXT);
+        String confno;
+        int count1;
+        do { // FIXME ugly
+               confno = prefix + (++count);
+               count1 = (em.createQuery("SELECT COUNT(m) FROM MeetMe AS m 
WHERE m.confno = :confno", Long.class)
+                .setParameter("confno", confno)
+                       .getSingleResult()).intValue();
+        } while (count1 > 0);
         addMeetMeConference(confno);
         return confno;
     }


Reply via email to