Author: seba.wagner
Date: Tue Jan 13 02:23:23 2009
New Revision: 1769

Added:
    trunk/webapp/src/test/org/openmeetings/test/record/GetRecordings.java
Modified:
    trunk/webapp/filetest.keystore
    trunk/webapp/src/app/hibernate.cfg.xml
     
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RecordingClientDaoImpl.java
     
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RoomClientDaoImpl.java
     
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RoomRecordingDaoImpl.java
     
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomRecording.hbm.xml
     
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomRecording.java
    trunk/webapp/src/app/org/openmeetings/app/remote/StreamService.java
    trunk/webapp/src/app/org/openmeetings/app/remote/red5/Application.java

Log:
Fixes:
Issue 587 Exception in recording

Modified: trunk/webapp/filetest.keystore
==============================================================================
Binary files. No diff available.

Modified: trunk/webapp/src/app/hibernate.cfg.xml
==============================================================================
--- trunk/webapp/src/app/hibernate.cfg.xml      (original)
+++ trunk/webapp/src/app/hibernate.cfg.xml      Tue Jan 13 02:23:23 2009
@@ -3,13 +3,43 @@

  <hibernate-configuration>
    <session-factory>
-    <property  
name="hibernate.connection.driver_class">org.postgresql.Driver</property>
-    <property  
name="hibernate.connection.url">jdbc:postgresql://localhost/xmlcrm</property>
-    <property name="hibernate.connection.username">postgres</property>
-    <property name="hibernate.connection.password">*****</property>
-    <property  
name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
-    <property name="hibernate.show_sql">true</property>
-    <property name="hibernate.hbm2ddl.auto">update</property>
+               
+               <!-- User  / Password -->
+               <property name="connection.username">root</property>
+               <property name="connection.password"></property>
+               
+               <!-- Database Settings -->
+               <property 
name="connection.driver_class">com.mysql.jdbc.Driver</property>
+               <!--  for performance reasons changed to MyISAM from  
org.hibernate.dialect.MySQLInnoDBDialect -->
+               <property  
name="dialect">org.hibernate.dialect.MySQLMyISAMDialect</property>
+               <property  
name="connection.url">jdbc:mysql://localhost/openmeetings?useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8</property>
      
+               
+               <property name="hibernate.connection.CharSet">utf8</property>
+               <property 
name="hibernate.connection.characterEncoding">utf8</property>
+               <property name="hibernate.connection.useUnicode">true</property>
+
+               
+               <!-- Database Scheme Auto Update -->
+               <property name="hbm2ddl.auto">update</property>                 
+
+               <!-- properties -->
+               
+               <property name="show_sql">false</property>
+               <property name="use_outer_join">false</property>
+               <property  
name="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</property>
+        <property  
name="connection.provider_class 
">org.hibernate.connection.C3P0ConnectionProvider</property>
+        <property  
name="cache.provider_class">org.hibernate.cache.NoCacheProvider </property>
+        <property name="cache.use_query_cache">false</property>
+        <property name="cache.use_second_level_cache">false</property>
+        <property name="generate_statistics">false</property>
+        <property name="cache.use_structured_entries">false</property>
+
+
+               <property name="c3p0.max_size">20</property>
+               <property name="c3p0.min_size">2</property>
+               <property name="c3p0.max_statements">100</property>
+               <property name="c3p0.timeout">3600</property>
+
      <mapping  
resource="org/openmeetings/app/hibernate/beans/adresses/Adresses.hbm.xml"/>
      <mapping  
resource="org/openmeetings/app/hibernate/beans/adresses/Adresses_Emails.hbm.xml"/>
      <mapping  
resource="org/openmeetings/app/hibernate/beans/adresses/Emails.hbm.xml"/>

Modified:  
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RecordingClientDaoImpl.java
==============================================================================
---  
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RecordingClientDaoImpl.java
    
(original)
+++  
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RecordingClientDaoImpl.java
    
Tue Jan 13 02:23:23 2009
@@ -1,11 +1,15 @@
  package org.openmeetings.app.data.record.dao;

+import java.util.List;
+
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.hibernate.HibernateException;
+import org.hibernate.Query;
  import org.hibernate.Session;
  import org.hibernate.Transaction;
  import org.openmeetings.app.hibernate.beans.recording.RecordingClient;
+import org.openmeetings.app.hibernate.beans.recording.RoomClient;
  import org.openmeetings.app.hibernate.utils.HibernateUtil;

  public class RecordingClientDaoImpl {
@@ -23,6 +27,33 @@
                }

                return instance;
+       }
+       
+       public List<RecordingClient> getRecordingClientByroomRecordingId(Long  
roomRecordingId) {
+               try {
+                       log.debug("getdRecordingClientByRoomRecordingId: "+ 
roomRecordingId);
+                       
+                       String hql = "select r from RecordingClient r " +
+                                       "WHERE r.roomRecordingId = 
:roomRecordingId ";
+                       
+                       Object idf = HibernateUtil.createSession();
+                       Session session = HibernateUtil.getSession();
+                       Transaction tx = session.beginTransaction();
+                       Query query = session.createQuery(hql);
+                       query.setLong("roomRecordingId",roomRecordingId);
+                       
+                       List<RecordingClient> recordingClients = query.list();
+                       tx.commit();
+                       HibernateUtil.closeSession(idf);
+                       
+                       return recordingClients;
+                       
+               } catch (HibernateException ex) {
+                       log.error("[getRecordingClientByroomRecordingId]: " , 
ex);
+               } catch (Exception ex2) {
+                       log.error("[getRecordingClientByroomRecordingId]: " , 
ex2);
+               }
+               return null;
        }
        
        public Long addRecordingClient(RecordingClient recordingClient) {

Modified:  
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RoomClientDaoImpl.java
==============================================================================
---  
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RoomClientDaoImpl.java
         
(original)
+++  
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RoomClientDaoImpl.java
         
Tue Jan 13 02:23:23 2009
@@ -81,7 +81,7 @@
                }
                return null;
        }
-       
+
        public RoomClient getRoomClientById(Long roomClientId) {
                try {
                        log.debug("getRoomClientById: "+ roomClientId);

Modified:  
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RoomRecordingDaoImpl.java
==============================================================================
---  
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RoomRecordingDaoImpl.java
      
(original)
+++  
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RoomRecordingDaoImpl.java
      
Tue Jan 13 02:23:23 2009
@@ -68,12 +68,7 @@
                                 
roomRecording.setStartedby(RoomClientDaoImpl.getInstance().getAndAddRoomClientByPublicSID(roomRecording.getStartedby()));
                        }
                        
-                        
log.debug("roomRecording.getRoom_setup(): 
"+roomRecording.getRoom_setup().getRooms_id());
-                       
-                       Set<RecordingClient> myClientList = 
roomRecording.getRoomClients();
-                       
-                       roomRecording.setRoomClients(null);
-                        
log.debug("roomRecording.getRoom_setup(): "+roomRecording.getRoomClients());
+                       log.debug("roomRecording.getRoom_setup()  
ID: "+roomRecording.getRoom_setup().getRooms_id());
                        
                         
log.debug("roomRecording.getEnduser().getRoomClientId(): 
"+roomRecording.getEnduser().getRoomClientId());
                         
log.debug("roomRecording.getStartedby().getRoomClientId(): 
"+roomRecording.getStartedby().getRoomClientId());
@@ -82,11 +77,8 @@
                        Session session = HibernateUtil.getSession();
                        Transaction tx = session.beginTransaction();
                        Long roomRecordingId = (Long) 
session.save(roomRecording);
-                       
                        tx.commit();
                        HibernateUtil.closeSession(idf);
-                       
-                       roomRecording.setRoomClients(myClientList);
                        
                        return roomRecordingId;
                } catch (HibernateException ex) {

Modified:  
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomRecording.hbm.xml
==============================================================================
---  
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomRecording.hbm.xml
        
(original)
+++  
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomRecording.hbm.xml
        
Tue Jan 13 02:23:23 2009
@@ -13,10 +13,7 @@
      <property name="initwhiteboardvarsInXml" type="text"  
column="initwhiteboardvars_in_xml"/>
      <property name="recordingName" type="string" column="recordingname"/>
      <property name="starttime" type="java.util.Date" column="starttime"/>
-    <set table="recordingclient" lazy="false" inverse="false"  
cascade="none" order-by="startdate" name="roomClients">
-      <key column="roomrecording_id"/>
-      <one-to-many  
class="org.openmeetings.app.hibernate.beans.recording.RecordingClient"/>
-    </set>
+    <many-to-one outer-join="true" insert="true"  
column="startedby_roomclient_id" lazy="false" update="true"  
name="startedby"  
class="org.openmeetings.app.hibernate.beans.recording.RoomClient"/>
      <property name="endtime" type="java.util.Date" column="endtime"/>
      <many-to-one outer-join="true" insert="true"  
column="enduser_roomclient_id" lazy="false" update="true" name="enduser"  
class="org.openmeetings.app.hibernate.beans.recording.RoomClient"/>
      <property name="recordname" type="string" column="recordname"/>

Modified:  
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomRecording.java
==============================================================================
---  
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomRecording.java
   
(original)
+++  
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomRecording.java
   
Tue Jan 13 02:23:23 2009
@@ -24,7 +24,7 @@
        private String recordingName;
        private Date starttime;
        private RoomClient startedby;
-       private Set<RecordingClient> roomClients;
+       private List<RecordingClient> roomClients;
        private List<RoomStream> roomStreams;
        private List<WhiteBoardEvent> whiteboard;
        private List<ChatvaluesEvent> chatvalues;
@@ -140,30 +140,26 @@
                this.starttime = starttime;
        }
        
-       
+       /**
+        * @hibernate.many-to-one
+        * column = "startedby_roomclient_id"
+        * class = "org.openmeetings.app.hibernate.beans.recording.RoomClient"
+        * insert="true"
+        * update="true"
+        * outer-join="true"
+        * lazy="false"
+     */
        public RoomClient getStartedby() {
                return startedby;
        }
        public void setStartedby(RoomClient startedby) {
                this.startedby = startedby;
        }
-       
-       /**
-     * @hibernate.set
-     * table = "recordingclient"
-     * inverse = "false"
-     * cascade = "none"
-     * lazy="false"
-     * order-by="startdate"
-     * @hibernate.one-to-many
-     * class  
= "org.openmeetings.app.hibernate.beans.recording.RecordingClient"
-     * @hibernate.key
-     * column = "roomrecording_id"
-     */
-       public Set<RecordingClient> getRoomClients() {
+
+       public List<RecordingClient> getRoomClients() {
                return roomClients;
        }
-       public void setRoomClients(Set<RecordingClient> roomClients) {
+       public void setRoomClients(List<RecordingClient> roomClients) {
                this.roomClients = roomClients;
        }
        

Modified:  
trunk/webapp/src/app/org/openmeetings/app/remote/StreamService.java
==============================================================================
--- trunk/webapp/src/app/org/openmeetings/app/remote/StreamService.java  
(original)
+++ trunk/webapp/src/app/org/openmeetings/app/remote/StreamService.java Tue  
Jan 13 02:23:23 2009
@@ -49,6 +49,7 @@
  import org.openmeetings.app.data.record.dao.RecordingClientDaoImpl;
  import org.openmeetings.app.data.record.dao.RecordingConversionJobDaoImpl;
  import org.openmeetings.app.data.record.dao.RecordingDaoImpl;
+import org.openmeetings.app.data.record.dao.RoomClientDaoImpl;
  import org.openmeetings.app.data.record.dao.RoomRecordingDaoImpl;
  import org.openmeetings.app.data.record.dao.RoomStreamDaoImpl;
  import org.openmeetings.app.data.record.dao.WhiteBoardEventDaoImpl;
@@ -167,7 +168,7 @@
                                                roomClient.setStarttime(0L);
                                                roomClient.setRcl(rcl);
                                                if 
(roomRecording.getRoomClients() == null) {
-                                                       
roomRecording.setRoomClients(new HashSet<RecordingClient>());
+                                                       
roomRecording.setRoomClients(new LinkedList<RecordingClient>());
                                                }
                                                
roomRecording.getRoomClients().add(roomClient);
                                        }
@@ -523,6 +524,10 @@

                if 
(AuthLevelmanagement.getInstance().checkUserLevel(user_level)){
                        Recording rec =  
RecordingDaoImpl.getInstance().getRecordingById(recording_id);
+                       
+                       rec.getRoomRecording().setRoomClients(
+                                        
RecordingClientDaoImpl.getInstance().getRecordingClientByroomRecordingId(
+                                                       
rec.getRoomRecording().getRoomrecordingId()));
                        
                        rec.getRoomRecording().setChatvalues(
                                         
ChatvaluesEventDaoImpl.getInstance().getChatvaluesEventByRoomRecordingId(

Modified:  
trunk/webapp/src/app/org/openmeetings/app/remote/red5/Application.java
==============================================================================
--- trunk/webapp/src/app/org/openmeetings/app/remote/red5/Application.java      
 
(original)
+++ trunk/webapp/src/app/org/openmeetings/app/remote/red5/Application.java      
 
Tue Jan 13 02:23:23 2009
@@ -305,6 +305,10 @@
                try {
                        IConnection current = Red5.getConnectionLocal();
                        String streamid = current.getClient().getId();
+                       
+                       log.debug("streamid "+streamid);
+                       log.debug("ClientList.size() "+ClientList.size());
+                       
                        RoomClient currentClient = ClientList.get(streamid);
                        
                        IScope scope = current.getScope();
@@ -319,6 +323,10 @@
        private void roomLeaveByScope(RoomClient currentClient, IScope  
currentScope) {
                try {
                        
+                       log.debug("currentClient "+currentClient);
+                       log.debug("currentScope "+currentScope);
+                       log.debug("currentClient "+currentClient.getRoom_id());
+                       
                        Long room_id = currentClient.getRoom_id();
                        
                        //Log the User
@@ -356,6 +364,16 @@
                        
                        //Notify all clients of the same currentScope (room) 
with domain and  
room
                        //except the current disconnected cause it could throw 
an exception
+                       
+                       log.debug("currentScope "+currentScope);
+                       
+                       if (currentScope == null ) {
+                               return;
+                       }
+                       log.debug("currentScope 
"+currentScope.getConnections());
+                       if (currentScope.getConnections() == null ) {
+                               return;
+                       }
                        
                        Iterator<IConnection> it = 
currentScope.getConnections();
                        while (it.hasNext()) {

Added: trunk/webapp/src/test/org/openmeetings/test/record/GetRecordings.java
==============================================================================
--- (empty file)
+++ trunk/webapp/src/test/org/openmeetings/test/record/GetRecordings.java       
 
Tue Jan 13 02:23:23 2009
@@ -0,0 +1,81 @@
+package org.openmeetings.test.record;
+
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.openmeetings.app.data.conference.Roommanagement;
+import org.openmeetings.app.data.record.WhiteboardConvertionJobManager;
+import org.openmeetings.app.data.record.dao.RecordingDaoImpl;
+import org.openmeetings.app.data.user.dao.UsersDaoImpl;
+import org.openmeetings.app.hibernate.beans.domain.Organisation_Users;
+import org.openmeetings.app.hibernate.beans.recording.Recording;
+import org.openmeetings.app.hibernate.beans.rooms.Rooms;
+import org.openmeetings.app.hibernate.beans.rooms.Rooms_Organisation;
+import org.openmeetings.app.hibernate.beans.user.Users;
+import org.openmeetings.utils.math.CalendarPatterns;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GetRecordings extends TestCase {
+       
+       private static final Logger log =  
LoggerFactory.getLogger(GetRecordings.class);
+       
+       public GetRecordings(String testname){
+               super(testname);
+       }
+       
+       public void testBatchConversion(){
+               try {
+                       
+                       Long users_id = 1L;
+                       
+                       String whereClause = "";
+               
+               int i = 0;
+               List<Rooms> rooms =  
Roommanagement.getInstance().getPublicRooms(3L);
+               for (Iterator<Rooms> iter = rooms.iterator();iter.hasNext();){
+                       Rooms room = iter.next();
+                       if (i==0) whereClause += " (";
+                       else whereClause += " OR";
+                       whereClause += " c.rooms.rooms_id = 
"+room.getRooms_id()+" ";
+                       i++;
+               }
+                       
+                       Users us = UsersDaoImpl.getInstance().getUser(users_id);
+                       
+                       for (Iterator<Organisation_Users> iter =  
us.getOrganisation_users().iterator();iter.hasNext();) {
+                               Organisation_Users orgUser = iter.next();
+                               Long organisation_id = 
orgUser.getOrganisation().getOrganisation_id();
+                               
+                               List<Rooms_Organisation> rOrgList =  
Roommanagement.getInstance().getRoomsOrganisationByOrganisationId(3,  
organisation_id);
+                               for (Iterator<Rooms_Organisation> iterOrgList = 
 
rOrgList.iterator();iterOrgList.hasNext();){
+                                       Rooms_Organisation rOrg = 
iterOrgList.next();
+                               if (i==0) whereClause += " (";
+                               else whereClause += " OR";                      
                        
+                                       whereClause += " c.rooms.rooms_id  
= "+rOrg.getRoom().getRooms_id()+" ";
+                                       i++;
+                               }
+                               
+                       }
+                       if (whereClause.length()!=0) whereClause += ") AND ";
+                       List<Recording> rList =  
RecordingDaoImpl.getInstance().getRecordingsByWhereClause(whereClause);
+                       
+                       for (Iterator<Recording> iter = 
rList.iterator();iter.hasNext();) {
+                               Recording rec = iter.next();
+                               log.debug("rec: "+rec.getStarttime());
+                                
rec.setStarttimeAsString(CalendarPatterns.getDateWithTimeByMiliSeconds(rec.getStarttime()));
+                       }
+                       
+                       
+                       
+               } catch (Exception err) {
+                       
+                       log.error("testBatchConversion",err);
+                       
+               }
+               
+       }
+
+}

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"OpenMeetings developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/openmeetings-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to