You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/11/18 12:29:11 UTC
svn commit: r1770374 - in /openmeetings/application:
branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/
branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/
branches/3.1.x/openmeetings-...
Author: solomax
Date: Fri Nov 18 12:29:11 2016
New Revision: 1770374
URL: http://svn.apache.org/viewvc?rev=1770374&view=rev
Log:
[OPENMEETINGS-1488] basic work on expired recordings reminders
Added:
openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
- copied, changed from r1770373, openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java
openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
- copied, changed from r1770373, openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
- copied, changed from r1770373, openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
- copied, changed from r1770373, openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
- copied, changed from r1770373, openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
- copied, changed from r1770373, openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java
Removed:
openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java
openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/SessionClearJob.java
openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/SessionClearJob.java
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/SessionClearJob.java
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java
Modified:
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java Fri Nov 18 12:29:11 2016
@@ -177,12 +177,10 @@ public class RecordingDao {
}
public List<Recording> getExpiring(Long groupId, int reminderDays) {
- Date startDate = Date.from(Instant.now().minus(Duration.ofDays(reminderDays)));
- Date endDate = Date.from(Instant.now().minus(Duration.ofMinutes(15)));
+ Instant date = Instant.now().minus(Duration.ofDays(reminderDays));
return em.createNamedQuery("getExpiringRecordings", Recording.class)
.setParameter("groupId", groupId)
- .setParameter("startDate", startDate)
- .setParameter("endDate", endDate)
+ .setParameter("date", Date.from(date))
.getResultList();
}
@@ -195,7 +193,6 @@ public class RecordingDao {
Recording fId = get(recordingId);
- fId.setProgressPostProcessing(0);
fId.setRecordEnd(recordEnd);
update(fId);
@@ -216,7 +213,10 @@ public class RecordingDao {
public Recording update(Recording f) {
try {
if (f.getId() == null) {
- f.setInserted(new Date());
+ if (f.getInserted() == null) {
+ //required to preserve date while import
+ f.setInserted(new Date());
+ }
em.persist(f);
} else {
f.setUpdated(new Date());
Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java Fri Nov 18 12:29:11 2016
@@ -97,10 +97,11 @@ import org.simpleframework.xml.Root;
+ "WHERE rec.deleted = false AND rec.roomId = r.id AND rec.insertedBy = u.id "
+ "AND (r.externalType = :externalType OR u.externalType = :externalType)")
, @NamedQuery(name = "getExpiringRecordings", query = "SELECT DISTINCT rec FROM Recording rec "
- + "WHERE rec.deleted = false AND (rec.groupId = : groupId "
+ + "WHERE rec.deleted = false AND rec.notified = false AND rec.inserted < :date "
+ + " AND (rec.groupId = :groupId "
+ " OR rec.ownerId IN (SELECT gu.user.id FROM GroupUser gu WHERE gu.group.id = :groupId)"
- + " OR rec.roomId IN (SELECT rg.room.id FROM RoomGroup rg WHERE rg.group.id = :groupId))"
- + " AND rec.inserted BETWEEN :startDate AND :endDate")
+ + " OR rec.roomId IN (SELECT rg.room.id FROM RoomGroup rg WHERE rg.group.id = :groupId)"
+ + " ) order by rec.inserted ASC")
})
@Table(name = "recording")
@Root(name = "flvrecording")
@@ -164,10 +165,6 @@ public class Recording extends FileItem
@Element(data = true, required = false)
private boolean interview;
- @Column(name = "progress_post_processing")
- @Element(data = true, required = false)
- private Integer progressPostProcessing;
-
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "recording_id")
@ElementList(name = "flvrecordingmetadatas", required = false)
@@ -177,7 +174,11 @@ public class Recording extends FileItem
@Enumerated(value = EnumType.STRING)
@Element(data = true, required = false)
private Status status = Status.NONE;
-
+
+ @Column(name = "notified", nullable = false)
+ @Element(data = true, required = false)
+ private boolean notified = false;
+
// Not Mapped
@Transient
private List<RecordingLog> log;
@@ -288,14 +289,6 @@ public class Recording extends FileItem
this.interview = interview;
}
- public Integer getProgressPostProcessing() {
- return progressPostProcessing;
- }
-
- public void setProgressPostProcessing(Integer progressPostProcessing) {
- this.progressPostProcessing = progressPostProcessing;
- }
-
public Status getStatus() {
return status;
}
@@ -304,6 +297,14 @@ public class Recording extends FileItem
this.status = status;
}
+ public boolean isNotified() {
+ return notified;
+ }
+
+ public void setNotified(boolean notified) {
+ this.notified = notified;
+ }
+
@Override
public File internalGetFile(String ext) {
File f = null;
Copied: openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java (from r1770373, openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java?p2=openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java&p1=openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java&r1=1770373&r2=1770374&rev=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java Fri Nov 18 12:29:11 2016
@@ -18,21 +18,27 @@
*/
package org.apache.openmeetings.service.quartz.scheduler;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.io.File;
import java.io.FileFilter;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
import org.apache.openmeetings.util.InitializationContainer;
import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
-public class TestSetupCleanupJob {
- private static Logger log = Red5LoggerFactory.getLogger(TestSetupCleanupJob.class, OpenmeetingsVariables.webAppRootKey);
- private long expirationInterval = 60 * 60 * 1000; // 1 hour
+public class CleanupJob {
+ private static Logger log = Red5LoggerFactory.getLogger(CleanupJob.class, webAppRootKey);
+ private long sessionTimeout = 30 * 60 * 1000L;
+ private long testSetupTimeout = 60 * 60 * 1000L; // 1 hour
- public void doIt() {
- log.debug("TestSetupClearJob.execute");
+ @Autowired
+ private SessiondataDao sessiondataDao;
+
+ public void cleanTestSetup() {
+ log.debug("CleanupJob.execute");
if (!InitializationContainer.initComplete) {
return;
}
@@ -51,7 +57,7 @@ public class TestSetupCleanupJob {
//TODO need to rework this and remove hardcodings
if (files != null) {
for (File file : files) {
- if (file.isFile() && file.lastModified() + expirationInterval < System.currentTimeMillis()) {
+ if (file.isFile() && file.lastModified() + testSetupTimeout < System.currentTimeMillis()) {
log.debug("expired TEST SETUP found: " + file.getCanonicalPath());
file.delete();
}
@@ -64,4 +70,33 @@ public class TestSetupCleanupJob {
log.error("Unexpected exception while processing tests setup videous.", e);
}
}
+
+ public void cleanSessions() {
+ log.trace("SessionClearJob.execute");
+ if (!InitializationContainer.initComplete) {
+ return;
+ }
+ try {
+ // TODO Generate report
+ sessiondataDao.clearSessionTable(sessionTimeout);
+ } catch (Exception err){
+ log.error("execute",err);
+ }
+ }
+
+ public long getSessionTimeout() {
+ return sessionTimeout;
+ }
+
+ public void setSessionTimeout(long sessionTimeout) {
+ this.sessionTimeout = sessionTimeout;
+ }
+
+ public long getTestSetupTimeout() {
+ return testSetupTimeout;
+ }
+
+ public void setTestSetupTimeout(long testSetupTimeout) {
+ this.testSetupTimeout = testSetupTimeout;
+ }
}
Copied: openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java (from r1770373, openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java?p2=openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java&p1=openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java&r1=1770373&r2=1770374&rev=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java Fri Nov 18 12:29:11 2016
@@ -30,8 +30,8 @@ import org.red5.logging.Red5LoggerFactor
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-public class MeetingReminderJob {
- private static Logger log = Red5LoggerFactory.getLogger(MeetingReminderJob.class, webAppRootKey);
+public class ReminderJob {
+ private static Logger log = Red5LoggerFactory.getLogger(ReminderJob.class, webAppRootKey);
@Autowired
private AppointmentLogic appointmentLogic;
@Autowired
@@ -39,8 +39,8 @@ public class MeetingReminderJob {
@Autowired
private GroupDao groupDao;
- public void remindIt() {
- log.debug("MeetingReminderJob.remindIt");
+ public void remindMeetings() {
+ log.debug("ReminderJob.remindMeetings");
if (!InitializationContainer.initComplete) {
return;
}
@@ -51,14 +51,14 @@ public class MeetingReminderJob {
}
}
- public void remindExpiring() {
- log.debug("MeetingReminderJob.remindExpiring");
+ public void remindExpiringRecordings() {
+ log.debug("ReminderJob.remindExpiringRecordings");
if (!InitializationContainer.initComplete) {
return;
}
for (Group g : groupDao.getLimited()) {
for (Recording rec : recordingDao.getExpiring(g.getId(), g.getReminderDays())) {
-
+ int i = 1;
}
}
}
Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html Fri Nov 18 12:29:11 2016
@@ -86,7 +86,7 @@
<label><wicket:message key="admin.group.form.recordingTtl" /></label><input type="number" wicket:id="recordingTtl" /><wicket:message key="admin.group.form.days"/>
</div>
<div class="formelement">
- <label><wicket:message key="admin.group.form.maxFilesSize" /></label><input type="number" wicket:id="reminderDays" /><wicket:message key="admin.group.form.days"/>
+ <label><wicket:message key="admin.group.form.reminderDays" /></label><input type="number" wicket:id="reminderDays" /><wicket:message key="admin.group.form.days"/>
</div>
</fieldset>
</div>
Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Fri Nov 18 12:29:11 2016
@@ -9,7 +9,7 @@
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
-
+
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -95,84 +95,72 @@
<bean id="openmeetings.RecordingConverter" class="org.apache.openmeetings.core.converter.RecordingConverter" />
<bean id="openmeetings.SlaveHTTPConnectionManager" class="org.apache.openmeetings.webservice.cluster.SlaveHTTPConnectionManager" />
- <bean id="openmeetings.SessionClearJob" class="org.apache.openmeetings.service.quartz.scheduler.SessionClearJob">
- <property name="timeout" value="1800000"/><!-- 30 minutes -->
- </bean>
- <bean id="sessionClearJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="openmeetings.SessionClearJob" />
- </property>
- <property name="targetMethod" value="doIt" />
+ <bean id="cleanupJob" class="org.apache.openmeetings.service.quartz.scheduler.CleanupJob">
+ <property name="sessionTimeout" value="1800000"/><!-- 30 minutes -->
+ <property name="testSetupTimeout" value="3600000"/><!-- 1 hour -->
+ </bean>
+ <bean id="cleanSessionsJobDetails" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="cleanupJob" />
+ <property name="targetMethod" value="cleanSessions" />
<property name="concurrent" value="false" />
</bean>
- <bean id="triggerSessionClear" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <!-- see the example of method invoking job above -->
- <ref bean="sessionClearJob" />
- </property>
+ <bean id="triggerCleanSessions" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+ <property name="jobDetail" ref="cleanSessionsJobDetails" />
<property name="startDelay" value="5000"/><!-- 5 seconds -->
<property name="repeatInterval" value="300000" /><!-- repeat every 300 seconds == 5 minutes -->
</bean>
+ <bean id="cleanTestSetupJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="cleanupJob" />
+ <property name="targetMethod" value="cleanTestSetup"/>
+ <property name="concurrent" value="false" />
+ </bean>
+ <bean id="triggerCleanTestSetup" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+ <property name="jobDetail" ref="cleanTestSetupJobDetail" />
+ <property name="startDelay" value="1800000"/><!-- 30 minutes -->
+ <property name="repeatInterval" value="1800000"/> <!-- 30 minutes -->
+ </bean>
- <bean id="meetingReminderJob" class="org.apache.openmeetings.service.quartz.scheduler.MeetingReminderJob" />
- <bean id="meetingReminderClear" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="meetingReminderJob" />
- </property>
- <property name="targetMethod" value="remindIt"/>
+ <bean id="reminderJob" class="org.apache.openmeetings.service.quartz.scheduler.ReminderJob"/>
+ <bean id="meetingReminderJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="reminderJob" />
+ <property name="targetMethod" value="remindMeetings"/>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerMeetingReminder" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <!-- see the example of method invoking job above -->
- <ref bean="meetingReminderClear" />
- </property>
+ <property name="jobDetail" ref="meetingReminderJobDetail" />
<property name="startDelay" value="5000"/><!-- 5 seconds -->
<property name="repeatInterval" value="100000"/><!-- repeat every 100 seconds -->
</bean>
- <bean id="testSetupCleanupJob" class="org.apache.openmeetings.service.quartz.scheduler.TestSetupCleanupJob" />
- <bean id="testSetupCleanup" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="testSetupCleanupJob" />
- </property>
- <property name="targetMethod" value="doIt"/>
+ <bean id="expiringRecordingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="reminderJob" />
+ <property name="targetMethod" value="remindExpiringRecordings"/>
<property name="concurrent" value="false" />
</bean>
- <bean id="triggerTestSetupCleanup" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <ref bean="testSetupCleanup" />
- </property>
- <property name="startDelay" value="1800000"/><!-- 30 minutes -->
- <property name="repeatInterval" value="1800000"/> <!-- 30 minutes -->
+ <bean id="triggerExpiringRecording" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+ <property name="jobDetail" ref="expiringRecordingJobDetail" />
+ <property name="startDelay" value="5000"/><!-- 5 seconds -->
+ <property name="repeatInterval" value="3600000"/><!-- repeat every 1 hour -->
</bean>
<!-- Mail related jobs -->
<bean id="mailHandler" class="org.apache.openmeetings.core.mail.MailHandler" />
<bean id="resetSendingMailStatus" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="mailHandler" />
- </property>
+ <property name="targetObject" ref="mailHandler" />
<property name="targetMethod" value="resetSendingStatus"/>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerResetSendingMailStatus" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <ref bean="resetSendingMailStatus" />
- </property>
+ <property name="jobDetail" ref="resetSendingMailStatus" />
<property name="startDelay" value="60000"/> <!-- 1 minute -->
<property name="repeatInterval" value="900000"/> <!-- 15 minutes -->
</bean>
<bean id="sendMails" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="mailHandler" />
- </property>
+ <property name="targetObject" ref="mailHandler" />
<property name="targetMethod" value="sendMails"/>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerSendMails" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <ref bean="sendMails" />
- </property>
+ <property name="jobDetail" ref="sendMails" />
<property name="startDelay" value="60000"/> <!-- 1 minute -->
<property name="repeatInterval" value="60000"/> <!-- 1 minute -->
</bean>
@@ -180,9 +168,10 @@
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
- <ref bean="triggerSessionClear" />
+ <ref bean="triggerCleanSessions" />
+ <ref bean="triggerCleanTestSetup" />
<ref bean="triggerMeetingReminder" />
- <ref bean="triggerTestSetupCleanup" />
+ <ref bean="triggerExpiringRecording" />
<ref bean="triggerResetSendingMailStatus" />
<ref bean="triggerSendMails" />
</list>
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java Fri Nov 18 12:29:11 2016
@@ -177,12 +177,10 @@ public class RecordingDao {
}
public List<Recording> getExpiring(Long groupId, int reminderDays) {
- Date startDate = Date.from(Instant.now().minus(Duration.ofDays(reminderDays)));
- Date endDate = Date.from(Instant.now().minus(Duration.ofMinutes(15)));
+ Instant date = Instant.now().minus(Duration.ofDays(reminderDays));
return em.createNamedQuery("getExpiringRecordings", Recording.class)
.setParameter("groupId", groupId)
- .setParameter("startDate", startDate)
- .setParameter("endDate", endDate)
+ .setParameter("date", Date.from(date))
.getResultList();
}
@@ -195,7 +193,6 @@ public class RecordingDao {
Recording fId = get(recordingId);
- fId.setProgressPostProcessing(0);
fId.setRecordEnd(recordEnd);
update(fId);
@@ -216,7 +213,10 @@ public class RecordingDao {
public Recording update(Recording f) {
try {
if (f.getId() == null) {
- f.setInserted(new Date());
+ if (f.getInserted() == null) {
+ //required to preserve date while import
+ f.setInserted(new Date());
+ }
em.persist(f);
} else {
f.setUpdated(new Date());
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java Fri Nov 18 12:29:11 2016
@@ -91,10 +91,11 @@ import org.simpleframework.xml.Root;
+ "WHERE rec.deleted = false AND rec.roomId = r.id AND rec.insertedBy = u.id "
+ "AND (r.externalType = :externalType OR u.externalType = :externalType)")
, @NamedQuery(name = "getExpiringRecordings", query = "SELECT DISTINCT rec FROM Recording rec "
- + "WHERE rec.deleted = false AND (rec.groupId = : groupId "
+ + "WHERE rec.deleted = false AND rec.notified = false AND rec.inserted < :date "
+ + " AND (rec.groupId = :groupId "
+ " OR rec.ownerId IN (SELECT gu.user.id FROM GroupUser gu WHERE gu.group.id = :groupId)"
- + " OR rec.roomId IN (SELECT rg.room.id FROM RoomGroup rg WHERE rg.group.id = :groupId))"
- + " AND rec.inserted BETWEEN :startDate AND :endDate")
+ + " OR rec.roomId IN (SELECT rg.room.id FROM RoomGroup rg WHERE rg.group.id = :groupId)"
+ + " ) order by rec.inserted ASC")
})
@Table(name = "recording")
@Root(name = "flvrecording")
@@ -154,10 +155,6 @@ public class Recording extends FileItem
@Element(data = true, required = false)
private boolean interview;
- @Column(name = "progress_post_processing")
- @Element(data = true, required = false)
- private Integer progressPostProcessing;
-
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "recording_id")
@ElementList(name = "flvrecordingmetadatas", required = false)
@@ -167,7 +164,11 @@ public class Recording extends FileItem
@Enumerated(value = EnumType.STRING)
@Element(data = true, required = false)
private Status status = Status.NONE;
-
+
+ @Column(name = "notified", nullable = false)
+ @Element(data = true, required = false)
+ private boolean notified = false;
+
@Override
public Long getId() {
return id;
@@ -258,14 +259,6 @@ public class Recording extends FileItem
this.interview = interview;
}
- public Integer getProgressPostProcessing() {
- return progressPostProcessing;
- }
-
- public void setProgressPostProcessing(Integer progressPostProcessing) {
- this.progressPostProcessing = progressPostProcessing;
- }
-
public Status getStatus() {
return status;
}
@@ -274,6 +267,14 @@ public class Recording extends FileItem
this.status = status;
}
+ public boolean isNotified() {
+ return notified;
+ }
+
+ public void setNotified(boolean notified) {
+ this.notified = notified;
+ }
+
@Override
public String getFileName(String ext) {
return String.format("%s%s.%s", recordingFileName, id, ext == null ? EXTENSION_MP4 : ext);
Copied: openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java (from r1770373, openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java?p2=openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java&p1=openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java&r1=1770373&r2=1770374&rev=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java Fri Nov 18 12:29:11 2016
@@ -18,21 +18,27 @@
*/
package org.apache.openmeetings.service.quartz.scheduler;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.io.File;
import java.io.FileFilter;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
import org.apache.openmeetings.util.InitializationContainer;
import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
-public class TestSetupCleanupJob {
- private static Logger log = Red5LoggerFactory.getLogger(TestSetupCleanupJob.class, OpenmeetingsVariables.webAppRootKey);
- private long expirationInterval = 60 * 60 * 1000; // 1 hour
+public class CleanupJob {
+ private static Logger log = Red5LoggerFactory.getLogger(CleanupJob.class, webAppRootKey);
+ private long sessionTimeout = 30 * 60 * 1000L;
+ private long testSetupTimeout = 60 * 60 * 1000L; // 1 hour
- public void doIt() {
- log.debug("TestSetupClearJob.execute");
+ @Autowired
+ private SessiondataDao sessiondataDao;
+
+ public void cleanTestSetup() {
+ log.debug("CleanupJob.execute");
if (!InitializationContainer.initComplete) {
return;
}
@@ -51,7 +57,7 @@ public class TestSetupCleanupJob {
//TODO need to rework this and remove hardcodings
if (files != null) {
for (File file : files) {
- if (file.isFile() && file.lastModified() + expirationInterval < System.currentTimeMillis()) {
+ if (file.isFile() && file.lastModified() + testSetupTimeout < System.currentTimeMillis()) {
log.debug("expired TEST SETUP found: " + file.getCanonicalPath());
file.delete();
}
@@ -64,4 +70,33 @@ public class TestSetupCleanupJob {
log.error("Unexpected exception while processing tests setup videous.", e);
}
}
+
+ public void cleanSessions() {
+ log.trace("SessionClearJob.execute");
+ if (!InitializationContainer.initComplete) {
+ return;
+ }
+ try {
+ // TODO Generate report
+ sessiondataDao.clearSessionTable(sessionTimeout);
+ } catch (Exception err){
+ log.error("execute",err);
+ }
+ }
+
+ public long getSessionTimeout() {
+ return sessionTimeout;
+ }
+
+ public void setSessionTimeout(long sessionTimeout) {
+ this.sessionTimeout = sessionTimeout;
+ }
+
+ public long getTestSetupTimeout() {
+ return testSetupTimeout;
+ }
+
+ public void setTestSetupTimeout(long testSetupTimeout) {
+ this.testSetupTimeout = testSetupTimeout;
+ }
}
Copied: openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java (from r1770373, openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java?p2=openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java&p1=openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java&r1=1770373&r2=1770374&rev=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java Fri Nov 18 12:29:11 2016
@@ -30,8 +30,8 @@ import org.red5.logging.Red5LoggerFactor
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-public class MeetingReminderJob {
- private static Logger log = Red5LoggerFactory.getLogger(MeetingReminderJob.class, webAppRootKey);
+public class ReminderJob {
+ private static Logger log = Red5LoggerFactory.getLogger(ReminderJob.class, webAppRootKey);
@Autowired
private AppointmentLogic appointmentLogic;
@Autowired
@@ -39,8 +39,8 @@ public class MeetingReminderJob {
@Autowired
private GroupDao groupDao;
- public void remindIt() {
- log.debug("MeetingReminderJob.remindIt");
+ public void remindMeetings() {
+ log.debug("ReminderJob.remindMeetings");
if (!InitializationContainer.initComplete) {
return;
}
@@ -51,14 +51,14 @@ public class MeetingReminderJob {
}
}
- public void remindExpiring() {
- log.debug("MeetingReminderJob.remindExpiring");
+ public void remindExpiringRecordings() {
+ log.debug("ReminderJob.remindExpiringRecordings");
if (!InitializationContainer.initComplete) {
return;
}
for (Group g : groupDao.getLimited()) {
for (Recording rec : recordingDao.getExpiring(g.getId(), g.getReminderDays())) {
-
+ int i = 1;
}
}
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html Fri Nov 18 12:29:11 2016
@@ -86,7 +86,7 @@
<label><wicket:message key="admin.group.form.recordingTtl" /></label><input type="number" wicket:id="recordingTtl" /><wicket:message key="admin.group.form.days"/>
</div>
<div class="formelement">
- <label><wicket:message key="admin.group.form.maxFilesSize" /></label><input type="number" wicket:id="reminderDays" /><wicket:message key="admin.group.form.days"/>
+ <label><wicket:message key="admin.group.form.reminderDays" /></label><input type="number" wicket:id="reminderDays" /><wicket:message key="admin.group.form.days"/>
</div>
</fieldset>
</div>
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Fri Nov 18 12:29:11 2016
@@ -9,7 +9,7 @@
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
-
+
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -91,84 +91,72 @@
<bean id="openmeetings.RecordingConverter" class="org.apache.openmeetings.core.converter.RecordingConverter" />
<bean id="openmeetings.SlaveHTTPConnectionManager" class="org.apache.openmeetings.webservice.cluster.SlaveHTTPConnectionManager" />
- <bean id="openmeetings.SessionClearJob" class="org.apache.openmeetings.service.quartz.scheduler.SessionClearJob">
- <property name="timeout" value="1800000"/><!-- 30 minutes -->
- </bean>
- <bean id="sessionClearJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="openmeetings.SessionClearJob" />
- </property>
- <property name="targetMethod" value="doIt" />
+ <bean id="cleanupJob" class="org.apache.openmeetings.service.quartz.scheduler.CleanupJob">
+ <property name="sessionTimeout" value="1800000"/><!-- 30 minutes -->
+ <property name="testSetupTimeout" value="3600000"/><!-- 1 hour -->
+ </bean>
+ <bean id="cleanSessionsJobDetails" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="cleanupJob" />
+ <property name="targetMethod" value="cleanSessions" />
<property name="concurrent" value="false" />
</bean>
- <bean id="triggerSessionClear" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <!-- see the example of method invoking job above -->
- <ref bean="sessionClearJob" />
- </property>
+ <bean id="triggerCleanSessions" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+ <property name="jobDetail" ref="cleanSessionsJobDetails" />
<property name="startDelay" value="5000"/><!-- 5 seconds -->
<property name="repeatInterval" value="300000" /><!-- repeat every 300 seconds == 5 minutes -->
</bean>
+ <bean id="cleanTestSetupJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="cleanupJob" />
+ <property name="targetMethod" value="cleanTestSetup"/>
+ <property name="concurrent" value="false" />
+ </bean>
+ <bean id="triggerCleanTestSetup" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+ <property name="jobDetail" ref="cleanTestSetupJobDetail" />
+ <property name="startDelay" value="1800000"/><!-- 30 minutes -->
+ <property name="repeatInterval" value="1800000"/> <!-- 30 minutes -->
+ </bean>
- <bean id="meetingReminderJob" class="org.apache.openmeetings.service.quartz.scheduler.MeetingReminderJob" />
- <bean id="meetingReminderClear" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="meetingReminderJob" />
- </property>
- <property name="targetMethod" value="remindIt"/>
+ <bean id="reminderJob" class="org.apache.openmeetings.service.quartz.scheduler.ReminderJob"/>
+ <bean id="meetingReminderJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="reminderJob" />
+ <property name="targetMethod" value="remindMeetings"/>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerMeetingReminder" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <!-- see the example of method invoking job above -->
- <ref bean="meetingReminderClear" />
- </property>
+ <property name="jobDetail" ref="meetingReminderJobDetail" />
<property name="startDelay" value="5000"/><!-- 5 seconds -->
<property name="repeatInterval" value="100000"/><!-- repeat every 100 seconds -->
</bean>
- <bean id="testSetupCleanupJob" class="org.apache.openmeetings.service.quartz.scheduler.TestSetupCleanupJob" />
- <bean id="testSetupCleanup" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="testSetupCleanupJob" />
- </property>
- <property name="targetMethod" value="doIt"/>
+ <bean id="expiringRecordingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="reminderJob" />
+ <property name="targetMethod" value="remindExpiringRecordings"/>
<property name="concurrent" value="false" />
</bean>
- <bean id="triggerTestSetupCleanup" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <ref bean="testSetupCleanup" />
- </property>
- <property name="startDelay" value="1800000"/><!-- 30 minutes -->
- <property name="repeatInterval" value="1800000"/> <!-- 30 minutes -->
+ <bean id="triggerExpiringRecording" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+ <property name="jobDetail" ref="expiringRecordingJobDetail" />
+ <property name="startDelay" value="5000"/><!-- 5 seconds -->
+ <property name="repeatInterval" value="3600000"/><!-- repeat every 1 hour -->
</bean>
<!-- Mail related jobs -->
<bean id="mailHandler" class="org.apache.openmeetings.core.mail.MailHandler" />
<bean id="resetSendingMailStatus" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="mailHandler" />
- </property>
+ <property name="targetObject" ref="mailHandler" />
<property name="targetMethod" value="resetSendingStatus"/>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerResetSendingMailStatus" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <ref bean="resetSendingMailStatus" />
- </property>
+ <property name="jobDetail" ref="resetSendingMailStatus" />
<property name="startDelay" value="60000"/> <!-- 1 minute -->
<property name="repeatInterval" value="900000"/> <!-- 15 minutes -->
</bean>
<bean id="sendMails" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="mailHandler" />
- </property>
+ <property name="targetObject" ref="mailHandler" />
<property name="targetMethod" value="sendMails"/>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerSendMails" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <ref bean="sendMails" />
- </property>
+ <property name="jobDetail" ref="sendMails" />
<property name="startDelay" value="60000"/> <!-- 1 minute -->
<property name="repeatInterval" value="60000"/> <!-- 1 minute -->
</bean>
@@ -176,9 +164,10 @@
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
- <ref bean="triggerSessionClear" />
+ <ref bean="triggerCleanSessions" />
+ <ref bean="triggerCleanTestSetup" />
<ref bean="triggerMeetingReminder" />
- <ref bean="triggerTestSetupCleanup" />
+ <ref bean="triggerExpiringRecording" />
<ref bean="triggerResetSendingMailStatus" />
<ref bean="triggerSendMails" />
</list>
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java Fri Nov 18 12:29:11 2016
@@ -177,12 +177,10 @@ public class RecordingDao {
}
public List<Recording> getExpiring(Long groupId, int reminderDays) {
- Date startDate = Date.from(Instant.now().minus(Duration.ofDays(reminderDays)));
- Date endDate = Date.from(Instant.now().minus(Duration.ofMinutes(15)));
+ Instant date = Instant.now().minus(Duration.ofDays(reminderDays));
return em.createNamedQuery("getExpiringRecordings", Recording.class)
.setParameter("groupId", groupId)
- .setParameter("startDate", startDate)
- .setParameter("endDate", endDate)
+ .setParameter("date", Date.from(date))
.getResultList();
}
@@ -195,7 +193,6 @@ public class RecordingDao {
Recording fId = get(recordingId);
- fId.setProgressPostProcessing(0);
fId.setRecordEnd(recordEnd);
update(fId);
@@ -216,7 +213,10 @@ public class RecordingDao {
public Recording update(Recording f) {
try {
if (f.getId() == null) {
- f.setInserted(new Date());
+ if (f.getInserted() == null) {
+ //required to preserve date while import
+ f.setInserted(new Date());
+ }
em.persist(f);
} else {
f.setUpdated(new Date());
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java Fri Nov 18 12:29:11 2016
@@ -91,10 +91,11 @@ import org.simpleframework.xml.Root;
+ "WHERE rec.deleted = false AND rec.roomId = r.id AND rec.insertedBy = u.id "
+ "AND (r.externalType = :externalType OR u.externalType = :externalType)")
, @NamedQuery(name = "getExpiringRecordings", query = "SELECT DISTINCT rec FROM Recording rec "
- + "WHERE rec.deleted = false AND (rec.groupId = : groupId "
+ + "WHERE rec.deleted = false AND rec.notified = false AND rec.inserted < :date "
+ + " AND (rec.groupId = :groupId "
+ " OR rec.ownerId IN (SELECT gu.user.id FROM GroupUser gu WHERE gu.group.id = :groupId)"
- + " OR rec.roomId IN (SELECT rg.room.id FROM RoomGroup rg WHERE rg.group.id = :groupId))"
- + " AND rec.inserted BETWEEN :startDate AND :endDate")
+ + " OR rec.roomId IN (SELECT rg.room.id FROM RoomGroup rg WHERE rg.group.id = :groupId)"
+ + " ) order by rec.inserted ASC")
})
@Table(name = "recording")
@Root(name = "flvrecording")
@@ -154,10 +155,6 @@ public class Recording extends FileItem
@Element(data = true, required = false)
private boolean interview;
- @Column(name = "progress_post_processing")
- @Element(data = true, required = false)
- private Integer progressPostProcessing;
-
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "recording_id")
@ElementList(name = "flvrecordingmetadatas", required = false)
@@ -167,7 +164,11 @@ public class Recording extends FileItem
@Enumerated(value = EnumType.STRING)
@Element(data = true, required = false)
private Status status = Status.NONE;
-
+
+ @Column(name = "notified", nullable = false)
+ @Element(data = true, required = false)
+ private boolean notified = false;
+
@Override
public Long getId() {
return id;
@@ -258,14 +259,6 @@ public class Recording extends FileItem
this.interview = interview;
}
- public Integer getProgressPostProcessing() {
- return progressPostProcessing;
- }
-
- public void setProgressPostProcessing(Integer progressPostProcessing) {
- this.progressPostProcessing = progressPostProcessing;
- }
-
public Status getStatus() {
return status;
}
@@ -274,6 +267,14 @@ public class Recording extends FileItem
this.status = status;
}
+ public boolean isNotified() {
+ return notified;
+ }
+
+ public void setNotified(boolean notified) {
+ this.notified = notified;
+ }
+
@Override
public String getFileName(String ext) {
return String.format("%s%s.%s", recordingFileName, id, ext == null ? EXTENSION_MP4 : ext);
Copied: openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java (from r1770373, openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java?p2=openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java&p1=openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java&r1=1770373&r2=1770374&rev=1770374&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/TestSetupCleanupJob.java (original)
+++ openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java Fri Nov 18 12:29:11 2016
@@ -18,21 +18,27 @@
*/
package org.apache.openmeetings.service.quartz.scheduler;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.io.File;
import java.io.FileFilter;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
import org.apache.openmeetings.util.InitializationContainer;
import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
-public class TestSetupCleanupJob {
- private static Logger log = Red5LoggerFactory.getLogger(TestSetupCleanupJob.class, OpenmeetingsVariables.webAppRootKey);
- private long expirationInterval = 60 * 60 * 1000; // 1 hour
+public class CleanupJob {
+ private static Logger log = Red5LoggerFactory.getLogger(CleanupJob.class, webAppRootKey);
+ private long sessionTimeout = 30 * 60 * 1000L;
+ private long testSetupTimeout = 60 * 60 * 1000L; // 1 hour
- public void doIt() {
- log.debug("TestSetupClearJob.execute");
+ @Autowired
+ private SessiondataDao sessiondataDao;
+
+ public void cleanTestSetup() {
+ log.debug("CleanupJob.execute");
if (!InitializationContainer.initComplete) {
return;
}
@@ -51,7 +57,7 @@ public class TestSetupCleanupJob {
//TODO need to rework this and remove hardcodings
if (files != null) {
for (File file : files) {
- if (file.isFile() && file.lastModified() + expirationInterval < System.currentTimeMillis()) {
+ if (file.isFile() && file.lastModified() + testSetupTimeout < System.currentTimeMillis()) {
log.debug("expired TEST SETUP found: " + file.getCanonicalPath());
file.delete();
}
@@ -64,4 +70,33 @@ public class TestSetupCleanupJob {
log.error("Unexpected exception while processing tests setup videous.", e);
}
}
+
+ public void cleanSessions() {
+ log.trace("SessionClearJob.execute");
+ if (!InitializationContainer.initComplete) {
+ return;
+ }
+ try {
+ // TODO Generate report
+ sessiondataDao.clearSessionTable(sessionTimeout);
+ } catch (Exception err){
+ log.error("execute",err);
+ }
+ }
+
+ public long getSessionTimeout() {
+ return sessionTimeout;
+ }
+
+ public void setSessionTimeout(long sessionTimeout) {
+ this.sessionTimeout = sessionTimeout;
+ }
+
+ public long getTestSetupTimeout() {
+ return testSetupTimeout;
+ }
+
+ public void setTestSetupTimeout(long testSetupTimeout) {
+ this.testSetupTimeout = testSetupTimeout;
+ }
}
Copied: openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java (from r1770373, openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java?p2=openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java&p1=openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java&r1=1770373&r2=1770374&rev=1770374&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/MeetingReminderJob.java (original)
+++ openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java Fri Nov 18 12:29:11 2016
@@ -30,8 +30,8 @@ import org.red5.logging.Red5LoggerFactor
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-public class MeetingReminderJob {
- private static Logger log = Red5LoggerFactory.getLogger(MeetingReminderJob.class, webAppRootKey);
+public class ReminderJob {
+ private static Logger log = Red5LoggerFactory.getLogger(ReminderJob.class, webAppRootKey);
@Autowired
private AppointmentLogic appointmentLogic;
@Autowired
@@ -39,8 +39,8 @@ public class MeetingReminderJob {
@Autowired
private GroupDao groupDao;
- public void remindIt() {
- log.debug("MeetingReminderJob.remindIt");
+ public void remindMeetings() {
+ log.debug("ReminderJob.remindMeetings");
if (!InitializationContainer.initComplete) {
return;
}
@@ -51,14 +51,14 @@ public class MeetingReminderJob {
}
}
- public void remindExpiring() {
- log.debug("MeetingReminderJob.remindExpiring");
+ public void remindExpiringRecordings() {
+ log.debug("ReminderJob.remindExpiringRecordings");
if (!InitializationContainer.initComplete) {
return;
}
for (Group g : groupDao.getLimited()) {
for (Recording rec : recordingDao.getExpiring(g.getId(), g.getReminderDays())) {
-
+ int i = 1;
}
}
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html Fri Nov 18 12:29:11 2016
@@ -86,7 +86,7 @@
<label><wicket:message key="admin.group.form.recordingTtl" /></label><input type="number" wicket:id="recordingTtl" /><wicket:message key="admin.group.form.days"/>
</div>
<div class="formelement">
- <label><wicket:message key="admin.group.form.maxFilesSize" /></label><input type="number" wicket:id="reminderDays" /><wicket:message key="admin.group.form.days"/>
+ <label><wicket:message key="admin.group.form.reminderDays" /></label><input type="number" wicket:id="reminderDays" /><wicket:message key="admin.group.form.days"/>
</div>
</fieldset>
</div>
Modified: openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1770374&r1=1770373&r2=1770374&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Fri Nov 18 12:29:11 2016
@@ -9,7 +9,7 @@
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
-
+
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -89,84 +89,72 @@
<bean id="openmeetings.RecordingConverter" class="org.apache.openmeetings.core.converter.RecordingConverter" />
<bean id="openmeetings.SlaveHTTPConnectionManager" class="org.apache.openmeetings.webservice.cluster.SlaveHTTPConnectionManager" />
- <bean id="openmeetings.SessionClearJob" class="org.apache.openmeetings.service.quartz.scheduler.SessionClearJob">
- <property name="timeout" value="1800000"/><!-- 30 minutes -->
- </bean>
- <bean id="sessionClearJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="openmeetings.SessionClearJob" />
- </property>
- <property name="targetMethod" value="doIt" />
+ <bean id="cleanupJob" class="org.apache.openmeetings.service.quartz.scheduler.CleanupJob">
+ <property name="sessionTimeout" value="1800000"/><!-- 30 minutes -->
+ <property name="testSetupTimeout" value="3600000"/><!-- 1 hour -->
+ </bean>
+ <bean id="cleanSessionsJobDetails" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="cleanupJob" />
+ <property name="targetMethod" value="cleanSessions" />
<property name="concurrent" value="false" />
</bean>
- <bean id="triggerSessionClear" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <!-- see the example of method invoking job above -->
- <ref bean="sessionClearJob" />
- </property>
+ <bean id="triggerCleanSessions" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+ <property name="jobDetail" ref="cleanSessionsJobDetails" />
<property name="startDelay" value="5000"/><!-- 5 seconds -->
<property name="repeatInterval" value="300000" /><!-- repeat every 300 seconds == 5 minutes -->
</bean>
+ <bean id="cleanTestSetupJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="cleanupJob" />
+ <property name="targetMethod" value="cleanTestSetup"/>
+ <property name="concurrent" value="false" />
+ </bean>
+ <bean id="triggerCleanTestSetup" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+ <property name="jobDetail" ref="cleanTestSetupJobDetail" />
+ <property name="startDelay" value="1800000"/><!-- 30 minutes -->
+ <property name="repeatInterval" value="1800000"/> <!-- 30 minutes -->
+ </bean>
- <bean id="meetingReminderJob" class="org.apache.openmeetings.service.quartz.scheduler.MeetingReminderJob" />
- <bean id="meetingReminderClear" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="meetingReminderJob" />
- </property>
- <property name="targetMethod" value="remindIt"/>
+ <bean id="reminderJob" class="org.apache.openmeetings.service.quartz.scheduler.ReminderJob"/>
+ <bean id="meetingReminderJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="reminderJob" />
+ <property name="targetMethod" value="remindMeetings"/>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerMeetingReminder" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <!-- see the example of method invoking job above -->
- <ref bean="meetingReminderClear" />
- </property>
+ <property name="jobDetail" ref="meetingReminderJobDetail" />
<property name="startDelay" value="5000"/><!-- 5 seconds -->
<property name="repeatInterval" value="100000"/><!-- repeat every 100 seconds -->
</bean>
- <bean id="testSetupCleanupJob" class="org.apache.openmeetings.service.quartz.scheduler.TestSetupCleanupJob" />
- <bean id="testSetupCleanup" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="testSetupCleanupJob" />
- </property>
- <property name="targetMethod" value="doIt"/>
+ <bean id="expiringRecordingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+ <property name="targetObject" ref="reminderJob" />
+ <property name="targetMethod" value="remindExpiringRecordings"/>
<property name="concurrent" value="false" />
</bean>
- <bean id="triggerTestSetupCleanup" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <ref bean="testSetupCleanup" />
- </property>
- <property name="startDelay" value="1800000"/><!-- 30 minutes -->
- <property name="repeatInterval" value="1800000"/> <!-- 30 minutes -->
+ <bean id="triggerExpiringRecording" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+ <property name="jobDetail" ref="expiringRecordingJobDetail" />
+ <property name="startDelay" value="5000"/><!-- 5 seconds -->
+ <property name="repeatInterval" value="3600000"/><!-- repeat every 1 hour -->
</bean>
<!-- Mail related jobs -->
<bean id="mailHandler" class="org.apache.openmeetings.core.mail.MailHandler" />
<bean id="resetSendingMailStatus" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="mailHandler" />
- </property>
+ <property name="targetObject" ref="mailHandler" />
<property name="targetMethod" value="resetSendingStatus"/>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerResetSendingMailStatus" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <ref bean="resetSendingMailStatus" />
- </property>
+ <property name="jobDetail" ref="resetSendingMailStatus" />
<property name="startDelay" value="60000"/> <!-- 1 minute -->
<property name="repeatInterval" value="900000"/> <!-- 15 minutes -->
</bean>
<bean id="sendMails" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="mailHandler" />
- </property>
+ <property name="targetObject" ref="mailHandler" />
<property name="targetMethod" value="sendMails"/>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerSendMails" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
- <property name="jobDetail">
- <ref bean="sendMails" />
- </property>
+ <property name="jobDetail" ref="sendMails" />
<property name="startDelay" value="60000"/> <!-- 1 minute -->
<property name="repeatInterval" value="60000"/> <!-- 1 minute -->
</bean>
@@ -174,9 +162,10 @@
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
- <ref bean="triggerSessionClear" />
+ <ref bean="triggerCleanSessions" />
+ <ref bean="triggerCleanTestSetup" />
<ref bean="triggerMeetingReminder" />
- <ref bean="triggerTestSetupCleanup" />
+ <ref bean="triggerExpiringRecording" />
<ref bean="triggerResetSendingMailStatus" />
<ref bean="triggerSendMails" />
</list>