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 2014/02/03 03:37:58 UTC
svn commit: r1563761 - in /openmeetings:
branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/
branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/
branches/3.0.x/src/main/java/org/apache/openmeetings/converter/
branches/3.0...
Author: solomax
Date: Mon Feb 3 02:37:57 2014
New Revision: 1563761
URL: http://svn.apache.org/r1563761
Log:
[OPENMEETINGS-902] conversion error dialog is added
Added:
openmeetings/branches/3.0.x/src/main/webapp/css/images/script_error.png (with props)
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java
openmeetings/trunk/singlewebapp/src/main/webapp/css/images/script_error.png (with props)
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java
Modified:
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
openmeetings/branches/3.0.x/src/main/webapp/css/theme.css
openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java
openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css
openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java Mon Feb 3 02:37:57 2014
@@ -18,12 +18,13 @@
*/
package org.apache.openmeetings.db.dao.record;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
import org.apache.openmeetings.db.entity.record.FlvRecording;
import org.apache.openmeetings.db.entity.record.FlvRecordingLog;
@@ -34,30 +35,23 @@ import org.springframework.transaction.a
@Transactional
public class FlvRecordingLogDao {
-
- private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingLogDao.class);
+ private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingDao.class, webAppRootKey);
@PersistenceContext
private EntityManager em;
- public List<FlvRecordingLog> getFLVRecordingLogByRecordingId(Long flvRecordingId){
- try {
- String hql = "select c from FlvRecordingLog as c where c.flvRecording.flvRecordingId = :flvRecordingId";
-
- TypedQuery<FlvRecordingLog> query = em.createQuery(hql, FlvRecordingLog.class);
- query.setParameter("flvRecordingId", flvRecordingId);
- List<FlvRecordingLog> flvRecordingList = query.getResultList();
-
- return flvRecordingList;
-
- } catch (Exception ex2) {
- log.error("[getFLVRecordingLogByRecordingId] ", ex2);
- }
- return null;
+ public long countErrors(Long recordingId) {
+ return em.createNamedQuery("countErrorRecordingLogsByRecording", Long.class)
+ .setParameter("recId", recordingId).getSingleResult();
}
- public void deleteFLVRecordingLogByRecordingId(Long flvRecordingId){
+ public List<FlvRecordingLog> getByRecordingId(Long recordingId) {
+ return em.createNamedQuery("getRecordingLogsByRecording", FlvRecordingLog.class)
+ .setParameter("recId", recordingId).getResultList();
+ }
+
+ public void deleteByRecordingId(Long flvRecordingId) {
try {
- List<FlvRecordingLog> flvRecordingLogs = this.getFLVRecordingLogByRecordingId(flvRecordingId);
+ List<FlvRecordingLog> flvRecordingLogs = getByRecordingId(flvRecordingId);
for (FlvRecordingLog flvRecordingLog : flvRecordingLogs) {
flvRecordingLog = em.find(FlvRecordingLog.class, flvRecordingLog.getFlvRecordingLogId());
@@ -87,5 +81,4 @@ public class FlvRecordingLogDao {
}
return -1L;
}
-
}
Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java Mon Feb 3 02:37:57 2014
@@ -63,7 +63,7 @@ public class FlvRecordingMetaDataDao {
return null;
}
- public List<FlvRecordingMetaData> getFlvRecordingMetaDataByRecording(Long flvRecordingId) {
+ public List<FlvRecordingMetaData> getByRecording(Long flvRecordingId) {
try {
String hql = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java Mon Feb 3 02:37:57 2014
@@ -21,8 +21,6 @@ package org.apache.openmeetings.db.entit
import java.io.Serializable;
import java.util.Date;
-
-
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
@@ -32,8 +30,14 @@ import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
+@NamedQueries({
+ @NamedQuery(name = "getRecordingLogsByRecording", query = "SELECT fl FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId")
+ , @NamedQuery(name = "countErrorRecordingLogsByRecording", query = "SELECT COUNT(fl) FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId AND fl.exitValue <> '0'")
+})
@Table(name = "flvrecording_log")
public class FlvRecordingLog implements Serializable {
private static final long serialVersionUID = -2577533628675416706L;
Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java Mon Feb 3 02:37:57 2014
@@ -282,7 +282,7 @@ public class FlvInterviewConverter exten
recordingDao.updateFlvRecording(flvRecording);
convertToMp4(flvRecording, returnLog);
- logDao.deleteFLVRecordingLogByRecordingId(flvRecording.getFlvRecordingId());
+ logDao.deleteByRecordingId(flvRecording.getFlvRecordingId());
for (ConverterProcessResult returnMap : returnLog) {
logDao.addFLVRecordingLog("generateFFMPEG", flvRecording, returnMap);
Added: openmeetings/branches/3.0.x/src/main/webapp/css/images/script_error.png
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/css/images/script_error.png?rev=1563761&view=auto
==============================================================================
Binary file - no diff available.
Propchange: openmeetings/branches/3.0.x/src/main/webapp/css/images/script_error.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: openmeetings/branches/3.0.x/src/main/webapp/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/css/theme.css?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/css/theme.css (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/css/theme.css Mon Feb 3 02:37:57 2014
@@ -446,6 +446,34 @@ div.tableWrapperSmall {
background-image: url(images/world_link.png);
background-repeat: no-repeat;
}
+.recording.item {
+ position: relative;
+}
+.recording.item .name {
+ color: black;
+}
+.recording.item .errors {
+ position: absolute;
+ right: 0px;
+ background-image: url(images/script_error.png);
+ width: 16px;
+ height: 16px;
+}
+.recording.dialog.errors {
+ width: 600px;
+ height: 500px;
+ font-size: small;
+}
+.recording.dialog.errors .alert {
+ color: red;
+}
+.recording.dialog.errors .message {
+ display: block;
+ unicode-bidi: embed;
+ font-family: monospace;
+ white-space: pre;
+ margin: 0;
+}
.online.om-icon {
background-image: url(images/bullet_green.png);
}
Modified: openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java (original)
+++ openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java Mon Feb 3 02:37:57 2014
@@ -19,9 +19,8 @@
package org.apache.openmeetings.util.process;
/**
- * Object created by each conversion step,
- * each conversion step that invokes and external tool like ImageMagick is one single
- * ConverterProcessMessage
+ * Object created by each conversion step, each conversion step that invokes and
+ * external tool like ImageMagick is one single ConverterProcessMessage
*
* if exitValue equals "-1" then there was an issue.
*
@@ -29,89 +28,84 @@ package org.apache.openmeetings.util.pro
*
*/
public class ConverterProcessResult {
-
private String process;
private String command;
private String exception;
private String error;
private String exitValue;
private String out;
-
+
public ConverterProcessResult() {
-
+ this(null, null, null);
+ }
+
+ public ConverterProcessResult(String error) {
+ this(null, error, null);
}
-
- public ConverterProcessResult (String process,
- String error, Exception ex) {
+
+ public ConverterProcessResult(String process, String error, Exception ex) {
setProcess(process);
setException(ex.toString());
setError(error);
setExitValue("-1");
}
-
- public ConverterProcessResult(String error) {
- setError(error);
- setExitValue("-1");
- }
public String getOut() {
return out;
}
+
public void setOut(String out) {
this.out = out;
}
+
public String getCommand() {
return command;
}
+
public void setCommand(String command) {
this.command = command;
}
+
public String getProcess() {
return process;
}
+
public void setProcess(String process) {
this.process = process;
}
+
public String getException() {
return exception;
}
+
public void setException(String exception) {
this.exception = exception;
}
+
public String getError() {
return error;
}
+
public void setError(String error) {
this.error = error;
}
+
public String getExitValue() {
return exitValue;
}
+
public void setExitValue(String exitValue) {
this.exitValue = exitValue;
}
-
+
public String buildLogMessage() {
StringBuilder strBuilder = new StringBuilder();
- strBuilder.append("process: ");
- strBuilder.append(getProcess());
- strBuilder.append("\r\n");
- strBuilder.append("command; ");
- strBuilder.append(getCommand());
- strBuilder.append("\r\n");
- strBuilder.append("exception: ");
- strBuilder.append(getException());
- strBuilder.append("\r\n");
- strBuilder.append("error: ");
- strBuilder.append(getError());
- strBuilder.append("\r\n");
- strBuilder.append("exitValue: ");
- strBuilder.append(getException());
- strBuilder.append("\r\n");
- strBuilder.append("out: ");
- strBuilder.append(getOut());
- strBuilder.append("\r\n");
+ strBuilder.append("process: ").append(getProcess()).append("\r\n");
+ strBuilder.append("command: ").append(getCommand()).append("\r\n");
+ strBuilder.append("exception: ").append(getException()).append("\r\n");
+ strBuilder.append("error: ").append(getError()).append("\r\n");
+ strBuilder.append("exitValue: ").append(getException()).append("\r\n");
+ strBuilder.append("out: ").append(getOut()).append("\r\n");
return strBuilder.toString();
}
-
}
Added: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html?rev=1563761&view=auto
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html (added)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html Mon Feb 3 02:37:57 2014
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ 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
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div wicket:id="container" class="recording dialog errors">
+ <h3 wicket:id="message"></h3>
+ <table style="width: 100%">
+ <tr>
+ <th>[Name]</th>
+ <th>[ExitCode]</th>
+ <th>[Message]</th>
+ </tr>
+ <tr wicket:id="row">
+ <td wicket:id="name"></td>
+ <td wicket:id="exitCode"></td>
+ <td wicket:id="message" class="message"></td>
+ </tr>
+ </table>
+ </div>
+</wicket:panel>
+</html>
Added: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java?rev=1563761&view=auto
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java (added)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java Mon Feb 3 02:37:57 2014
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * 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
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecordingLog;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class RecordingErrorsDialog extends AbstractDialog<FlvRecording> {
+ private static final long serialVersionUID = 1L;
+ private final WebMarkupContainer container = new WebMarkupContainer("container");
+ private final Label message = new Label("message", Model.of((String)null));
+ private final ListView<FlvRecordingLog> logView = new ListView<FlvRecordingLog>("row") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(ListItem<FlvRecordingLog> item) {
+ FlvRecordingLog l = item.getModelObject();
+ item.add(new Label("name", l.getMsgType()));
+ item.add(new Label("exitCode", l.getExitValue()));
+ item.add(new Label("message", l.getFullMessage()));
+ if (!"0".equals(l.getExitValue())) {
+ item.add(AttributeModifier.replace("class", "alert"));
+ }
+ }
+ };
+
+ @Override
+ public int getWidth() {
+ return 600;
+ }
+
+ @Override
+ public boolean isResizable() {
+ return true;
+ }
+
+ @Override
+ public boolean isModal() {
+ return true;
+ }
+
+ public RecordingErrorsDialog(String id, IModel<FlvRecording> model) {
+ super(id, WebSession.getString(887), model);
+ add(container.add(message.setVisible(false), logView.setVisible(false)).setOutputMarkupId(true));
+ }
+
+ @Override
+ protected void onOpen(AjaxRequestTarget target) {
+ FlvRecording f = getModelObject();
+ List<FlvRecordingLog> logs = getBean(FlvRecordingLogDao.class).getByRecordingId(f.getFlvRecordingId());
+ if (f.getFileHash() == null) {
+ message.setVisible(true);
+ message.setDefaultModelObject(WebSession.getString(888));
+ } else if (!isRecordingExists(f.getFileHash() + MP4_EXTENSION)) {
+ message.setVisible(true);
+ message.setDefaultModelObject("[Recording file is not found]");
+ } else {
+ message.setVisible(false);
+ }
+ if (!logs.isEmpty()) {
+ logView.setVisible(false);
+ logView.setList(logs).setVisible(true);
+ }
+ target.add(container);
+ super.onOpen(target);
+ }
+
+ public void onClose(AjaxRequestTarget target, DialogButton button) {
+ }
+
+ @Override
+ protected List<DialogButton> getButtons() {
+ return new ArrayList<DialogButton>();
+ }
+}
Added: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html?rev=1563761&view=auto
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html (added)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html Mon Feb 3 02:37:57 2014
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ 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
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div class="recording item"><span wicket:id="name" class="name"></span><span wicket:id="errors" class="errors"></span></div>
+</wicket:panel>
+</html>
Added: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java?rev=1563761&view=auto
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java (added)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java Mon Feb 3 02:37:57 2014
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * 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
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+
+public class RecordingPanel extends Panel {
+ private static final long serialVersionUID = 1L;
+
+ public RecordingPanel(String id, final IModel<FlvRecording> model, final RecordingErrorsDialog errorsDialog) {
+ super(id, model);
+ add(new Label("name", model.getObject().getFileName()));
+ long errorCount = getBean(FlvRecordingLogDao.class).countErrors(model.getObject().getFlvRecordingId());
+ boolean visible = errorCount != 0 || !isRecordingExists(model.getObject().getFileHash() + MP4_EXTENSION);
+ add(new WebMarkupContainer("errors").add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ errorsDialog.setDefaultModel(model);
+ errorsDialog.open(target);
+ }
+ }).setVisible(visible));
+ }
+}
Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html Mon Feb 3 02:37:57 2014
@@ -55,5 +55,6 @@
</tr>
</table>
<div wicket:id="addFolder"></div>
+ <div wicket:id="errors"></div>
</wicket:panel>
</html>
Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java Mon Feb 3 02:37:57 2014
@@ -18,7 +18,8 @@
*/
package org.apache.openmeetings.web.user.record;
-import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording;
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -57,6 +58,7 @@ public class RecordingsPanel extends Use
private final VideoInfo info = new VideoInfo("info");
private final RecordingTree myTree;
private final IModel<FlvRecording> rm = new CompoundPropertyModel<FlvRecording>(new FlvRecording());
+ private final RecordingErrorsDialog errorsDialog = new RecordingErrorsDialog("errors", Model.of((FlvRecording)null));
private RecordingTree selected;
public RecordingsPanel(String id) {
@@ -122,7 +124,7 @@ public class RecordingsPanel extends Use
);
add(new Label("homeSize", ""));
add(new Label("publicSize", ""));
- add(video, info);
+ add(video, info, errorsDialog);
}
//FIXME need to be generalized to use as Room files explorer
@@ -162,7 +164,11 @@ public class RecordingsPanel extends Use
}
};
} else {
- return super.newLabelComponent(id, lm);
+ if (r.getFlvRecordingId() > 0) {
+ return new RecordingPanel(id, lm, errorsDialog);
+ } else {
+ return super.newLabelComponent(id, lm);
+ }
}
}
@@ -209,7 +215,7 @@ public class RecordingsPanel extends Use
style = "public-recordings om-icon";
} else {
style = t.getIsFolder() ? super.getOtherStyleClass(t)
- : (getMp4Recording(t.getFileHash()).exists() ? "recording om-icon" : "broken-recording om-icon");
+ : (isRecordingExists(t.getFileHash() + MP4_EXTENSION) ? "recording om-icon" : "broken-recording om-icon");
}
if (isSelected()) {
style += " selected";
Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java Mon Feb 3 02:37:57 2014
@@ -18,12 +18,13 @@
*/
package org.apache.openmeetings.db.dao.record;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
import org.apache.openmeetings.db.entity.record.FlvRecording;
import org.apache.openmeetings.db.entity.record.FlvRecordingLog;
@@ -34,30 +35,23 @@ import org.springframework.transaction.a
@Transactional
public class FlvRecordingLogDao {
-
- private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingLogDao.class);
+ private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingDao.class, webAppRootKey);
@PersistenceContext
private EntityManager em;
- public List<FlvRecordingLog> getFLVRecordingLogByRecordingId(Long flvRecordingId){
- try {
- String hql = "select c from FlvRecordingLog as c where c.flvRecording.flvRecordingId = :flvRecordingId";
-
- TypedQuery<FlvRecordingLog> query = em.createQuery(hql, FlvRecordingLog.class);
- query.setParameter("flvRecordingId", flvRecordingId);
- List<FlvRecordingLog> flvRecordingList = query.getResultList();
-
- return flvRecordingList;
-
- } catch (Exception ex2) {
- log.error("[getFLVRecordingLogByRecordingId] ", ex2);
- }
- return null;
+ public long countErrors(Long recordingId) {
+ return em.createNamedQuery("countErrorRecordingLogsByRecording", Long.class)
+ .setParameter("recId", recordingId).getSingleResult();
}
- public void deleteFLVRecordingLogByRecordingId(Long flvRecordingId){
+ public List<FlvRecordingLog> getByRecordingId(Long recordingId) {
+ return em.createNamedQuery("getRecordingLogsByRecording", FlvRecordingLog.class)
+ .setParameter("recId", recordingId).getResultList();
+ }
+
+ public void deleteByRecordingId(Long flvRecordingId) {
try {
- List<FlvRecordingLog> flvRecordingLogs = this.getFLVRecordingLogByRecordingId(flvRecordingId);
+ List<FlvRecordingLog> flvRecordingLogs = getByRecordingId(flvRecordingId);
for (FlvRecordingLog flvRecordingLog : flvRecordingLogs) {
flvRecordingLog = em.find(FlvRecordingLog.class, flvRecordingLog.getFlvRecordingLogId());
@@ -87,5 +81,4 @@ public class FlvRecordingLogDao {
}
return -1L;
}
-
}
Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java Mon Feb 3 02:37:57 2014
@@ -63,7 +63,7 @@ public class FlvRecordingMetaDataDao {
return null;
}
- public List<FlvRecordingMetaData> getFlvRecordingMetaDataByRecording(Long flvRecordingId) {
+ public List<FlvRecordingMetaData> getByRecording(Long flvRecordingId) {
try {
String hql = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java Mon Feb 3 02:37:57 2014
@@ -21,8 +21,6 @@ package org.apache.openmeetings.db.entit
import java.io.Serializable;
import java.util.Date;
-
-
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
@@ -32,8 +30,14 @@ import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
+@NamedQueries({
+ @NamedQuery(name = "getRecordingLogsByRecording", query = "SELECT fl FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId")
+ , @NamedQuery(name = "countErrorRecordingLogsByRecording", query = "SELECT COUNT(fl) FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId AND fl.exitValue <> '0'")
+})
@Table(name = "flvrecording_log")
public class FlvRecordingLog implements Serializable {
private static final long serialVersionUID = -2577533628675416706L;
Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java Mon Feb 3 02:37:57 2014
@@ -282,7 +282,7 @@ public class FlvInterviewConverter exten
recordingDao.updateFlvRecording(flvRecording);
convertToMp4(flvRecording, returnLog);
- logDao.deleteFLVRecordingLogByRecordingId(flvRecording.getFlvRecordingId());
+ logDao.deleteByRecordingId(flvRecording.getFlvRecordingId());
for (ConverterProcessResult returnMap : returnLog) {
logDao.addFLVRecordingLog("generateFFMPEG", flvRecording, returnMap);
Added: openmeetings/trunk/singlewebapp/src/main/webapp/css/images/script_error.png
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/css/images/script_error.png?rev=1563761&view=auto
==============================================================================
Binary file - no diff available.
Propchange: openmeetings/trunk/singlewebapp/src/main/webapp/css/images/script_error.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css Mon Feb 3 02:37:57 2014
@@ -446,6 +446,34 @@ div.tableWrapperSmall {
background-image: url(images/world_link.png);
background-repeat: no-repeat;
}
+.recording.item {
+ position: relative;
+}
+.recording.item .name {
+ color: black;
+}
+.recording.item .errors {
+ position: absolute;
+ right: 0px;
+ background-image: url(images/script_error.png);
+ width: 16px;
+ height: 16px;
+}
+.recording.dialog.errors {
+ width: 600px;
+ height: 500px;
+ font-size: small;
+}
+.recording.dialog.errors .alert {
+ color: red;
+}
+.recording.dialog.errors .message {
+ display: block;
+ unicode-bidi: embed;
+ font-family: monospace;
+ white-space: pre;
+ margin: 0;
+}
.online.om-icon {
background-image: url(images/bullet_green.png);
}
Modified: openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java (original)
+++ openmeetings/trunk/singlewebapp/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java Mon Feb 3 02:37:57 2014
@@ -19,9 +19,8 @@
package org.apache.openmeetings.util.process;
/**
- * Object created by each conversion step,
- * each conversion step that invokes and external tool like ImageMagick is one single
- * ConverterProcessMessage
+ * Object created by each conversion step, each conversion step that invokes and
+ * external tool like ImageMagick is one single ConverterProcessMessage
*
* if exitValue equals "-1" then there was an issue.
*
@@ -29,89 +28,84 @@ package org.apache.openmeetings.util.pro
*
*/
public class ConverterProcessResult {
-
private String process;
private String command;
private String exception;
private String error;
private String exitValue;
private String out;
-
+
public ConverterProcessResult() {
-
+ this(null, null, null);
+ }
+
+ public ConverterProcessResult(String error) {
+ this(null, error, null);
}
-
- public ConverterProcessResult (String process,
- String error, Exception ex) {
+
+ public ConverterProcessResult(String process, String error, Exception ex) {
setProcess(process);
setException(ex.toString());
setError(error);
setExitValue("-1");
}
-
- public ConverterProcessResult(String error) {
- setError(error);
- setExitValue("-1");
- }
public String getOut() {
return out;
}
+
public void setOut(String out) {
this.out = out;
}
+
public String getCommand() {
return command;
}
+
public void setCommand(String command) {
this.command = command;
}
+
public String getProcess() {
return process;
}
+
public void setProcess(String process) {
this.process = process;
}
+
public String getException() {
return exception;
}
+
public void setException(String exception) {
this.exception = exception;
}
+
public String getError() {
return error;
}
+
public void setError(String error) {
this.error = error;
}
+
public String getExitValue() {
return exitValue;
}
+
public void setExitValue(String exitValue) {
this.exitValue = exitValue;
}
-
+
public String buildLogMessage() {
StringBuilder strBuilder = new StringBuilder();
- strBuilder.append("process: ");
- strBuilder.append(getProcess());
- strBuilder.append("\r\n");
- strBuilder.append("command; ");
- strBuilder.append(getCommand());
- strBuilder.append("\r\n");
- strBuilder.append("exception: ");
- strBuilder.append(getException());
- strBuilder.append("\r\n");
- strBuilder.append("error: ");
- strBuilder.append(getError());
- strBuilder.append("\r\n");
- strBuilder.append("exitValue: ");
- strBuilder.append(getException());
- strBuilder.append("\r\n");
- strBuilder.append("out: ");
- strBuilder.append(getOut());
- strBuilder.append("\r\n");
+ strBuilder.append("process: ").append(getProcess()).append("\r\n");
+ strBuilder.append("command: ").append(getCommand()).append("\r\n");
+ strBuilder.append("exception: ").append(getException()).append("\r\n");
+ strBuilder.append("error: ").append(getError()).append("\r\n");
+ strBuilder.append("exitValue: ").append(getException()).append("\r\n");
+ strBuilder.append("out: ").append(getOut()).append("\r\n");
return strBuilder.toString();
}
-
}
Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html?rev=1563761&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html Mon Feb 3 02:37:57 2014
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ 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
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div wicket:id="container" class="recording dialog errors">
+ <h3 wicket:id="message"></h3>
+ <table style="width: 100%">
+ <tr>
+ <th>[Name]</th>
+ <th>[ExitCode]</th>
+ <th>[Message]</th>
+ </tr>
+ <tr wicket:id="row">
+ <td wicket:id="name"></td>
+ <td wicket:id="exitCode"></td>
+ <td wicket:id="message" class="message"></td>
+ </tr>
+ </table>
+ </div>
+</wicket:panel>
+</html>
Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java?rev=1563761&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java Mon Feb 3 02:37:57 2014
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * 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
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecordingLog;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class RecordingErrorsDialog extends AbstractDialog<FlvRecording> {
+ private static final long serialVersionUID = 1L;
+ private final WebMarkupContainer container = new WebMarkupContainer("container");
+ private final Label message = new Label("message", Model.of((String)null));
+ private final ListView<FlvRecordingLog> logView = new ListView<FlvRecordingLog>("row") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(ListItem<FlvRecordingLog> item) {
+ FlvRecordingLog l = item.getModelObject();
+ item.add(new Label("name", l.getMsgType()));
+ item.add(new Label("exitCode", l.getExitValue()));
+ item.add(new Label("message", l.getFullMessage()));
+ if (!"0".equals(l.getExitValue())) {
+ item.add(AttributeModifier.replace("class", "alert"));
+ }
+ }
+ };
+
+ @Override
+ public int getWidth() {
+ return 600;
+ }
+
+ @Override
+ public boolean isResizable() {
+ return true;
+ }
+
+ @Override
+ public boolean isModal() {
+ return true;
+ }
+
+ public RecordingErrorsDialog(String id, IModel<FlvRecording> model) {
+ super(id, WebSession.getString(887), model);
+ add(container.add(message.setVisible(false), logView.setVisible(false)).setOutputMarkupId(true));
+ }
+
+ @Override
+ protected void onOpen(AjaxRequestTarget target) {
+ FlvRecording f = getModelObject();
+ List<FlvRecordingLog> logs = getBean(FlvRecordingLogDao.class).getByRecordingId(f.getFlvRecordingId());
+ if (f.getFileHash() == null) {
+ message.setVisible(true);
+ message.setDefaultModelObject(WebSession.getString(888));
+ } else if (!isRecordingExists(f.getFileHash() + MP4_EXTENSION)) {
+ message.setVisible(true);
+ message.setDefaultModelObject("[Recording file is not found]");
+ } else {
+ message.setVisible(false);
+ }
+ if (!logs.isEmpty()) {
+ logView.setVisible(false);
+ logView.setList(logs).setVisible(true);
+ }
+ target.add(container);
+ super.onOpen(target);
+ }
+
+ public void onClose(AjaxRequestTarget target, DialogButton button) {
+ }
+
+ @Override
+ protected List<DialogButton> getButtons() {
+ return new ArrayList<DialogButton>();
+ }
+}
Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html?rev=1563761&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html Mon Feb 3 02:37:57 2014
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ 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
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div class="recording item"><span wicket:id="name" class="name"></span><span wicket:id="errors" class="errors"></span></div>
+</wicket:panel>
+</html>
Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java?rev=1563761&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java Mon Feb 3 02:37:57 2014
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * 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
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+
+public class RecordingPanel extends Panel {
+ private static final long serialVersionUID = 1L;
+
+ public RecordingPanel(String id, final IModel<FlvRecording> model, final RecordingErrorsDialog errorsDialog) {
+ super(id, model);
+ add(new Label("name", model.getObject().getFileName()));
+ long errorCount = getBean(FlvRecordingLogDao.class).countErrors(model.getObject().getFlvRecordingId());
+ boolean visible = errorCount != 0 || !isRecordingExists(model.getObject().getFileHash() + MP4_EXTENSION);
+ add(new WebMarkupContainer("errors").add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ errorsDialog.setDefaultModel(model);
+ errorsDialog.open(target);
+ }
+ }).setVisible(visible));
+ }
+}
Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html Mon Feb 3 02:37:57 2014
@@ -55,5 +55,6 @@
</tr>
</table>
<div wicket:id="addFolder"></div>
+ <div wicket:id="errors"></div>
</wicket:panel>
</html>
Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java?rev=1563761&r1=1563760&r2=1563761&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java Mon Feb 3 02:37:57 2014
@@ -18,7 +18,8 @@
*/
package org.apache.openmeetings.web.user.record;
-import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording;
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -57,6 +58,7 @@ public class RecordingsPanel extends Use
private final VideoInfo info = new VideoInfo("info");
private final RecordingTree myTree;
private final IModel<FlvRecording> rm = new CompoundPropertyModel<FlvRecording>(new FlvRecording());
+ private final RecordingErrorsDialog errorsDialog = new RecordingErrorsDialog("errors", Model.of((FlvRecording)null));
private RecordingTree selected;
public RecordingsPanel(String id) {
@@ -122,7 +124,7 @@ public class RecordingsPanel extends Use
);
add(new Label("homeSize", ""));
add(new Label("publicSize", ""));
- add(video, info);
+ add(video, info, errorsDialog);
}
//FIXME need to be generalized to use as Room files explorer
@@ -162,7 +164,11 @@ public class RecordingsPanel extends Use
}
};
} else {
- return super.newLabelComponent(id, lm);
+ if (r.getFlvRecordingId() > 0) {
+ return new RecordingPanel(id, lm, errorsDialog);
+ } else {
+ return super.newLabelComponent(id, lm);
+ }
}
}
@@ -209,7 +215,7 @@ public class RecordingsPanel extends Use
style = "public-recordings om-icon";
} else {
style = t.getIsFolder() ? super.getOtherStyleClass(t)
- : (getMp4Recording(t.getFileHash()).exists() ? "recording om-icon" : "broken-recording om-icon");
+ : (isRecordingExists(t.getFileHash() + MP4_EXTENSION) ? "recording om-icon" : "broken-recording om-icon");
}
if (isSelected()) {
style += " selected";