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&createDatabaseIfNotExist=true&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
-~----------~----~----~----~------~----~------~--~---