Repository: openmeetings
Updated Branches:
  refs/heads/4.0.x 0b0506b93 -> 1093049c0


[OPENMEETINGS-1808] strip audio is marked as optional during conversion


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/1093049c
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/1093049c
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/1093049c

Branch: refs/heads/4.0.x
Commit: 1093049c0465965b1145d394a5e446679f267a00
Parents: 0b0506b
Author: Maxim Solodovnik <[email protected]>
Authored: Fri Dec 29 10:45:20 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Fri Dec 29 10:45:20 2017 +0700

----------------------------------------------------------------------
 .../core/converter/BaseConverter.java           | 17 ++++----
 .../db/dao/file/FileItemLogDao.java             | 17 ++++----
 .../db/entity/file/FileItemLog.java             | 35 ++++++++++++----
 .../util/process/ProcessHelper.java             | 43 ++++++++------------
 .../util/process/ProcessResult.java             | 29 ++++++++++---
 .../web/common/tree/ConvertingErrorsDialog.java |  5 ++-
 openmeetings-web/src/main/webapp/css/tree.css   |  3 ++
 7 files changed, 93 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1093049c/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
index 8a5c92b..904e86d 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
@@ -202,11 +202,11 @@ public abstract class BaseConverter {
        protected RecordingMetaData waitForTheStream(long metaId) throws 
InterruptedException {
                RecordingMetaData metaData = metaDataDao.get(metaId);
                if (metaData.getStreamStatus() != Status.STOPPED) {
-                       log.debug("### meta Stream not yet written to disk " + 
metaId);
+                       log.debug("### meta Stream not yet written to disk {}", 
metaId);
                        long counter = 0;
                        long maxTimestamp = 0;
                        while(true) {
-                               log.trace("### Stream not yet written Thread 
Sleep - " + metaId);
+                               log.trace("### Stream not yet written Thread 
Sleep - {}", metaId);
 
                                metaData = metaDataDao.get(metaId);
 
@@ -259,14 +259,14 @@ public abstract class BaseConverter {
                        List<RecordingMetaData> metaDataList) {
                try {
                        // Init variables
-                       log.debug("### meta Data Number - " + 
metaDataList.size());
+                       log.debug("### meta Data Number - {}", 
metaDataList.size());
                        
log.debug("###################################################");
 
                        for (RecordingMetaData metaData : metaDataList) {
                                long metaId = metaData.getId();
-                               log.debug("### processing metadata: " + metaId);
+                               log.debug("### processing metadata: {}", 
metaId);
                                if (metaData.getStreamStatus() == Status.NONE) {
-                                       log.debug("Stream has not been started, 
error in recording " + metaId);
+                                       log.debug("Stream has not been started, 
error in recording {}", metaId);
                                        continue;
                                }
 
@@ -284,8 +284,8 @@ public abstract class BaseConverter {
                                                        , "-i", 
inputFlvFile.getCanonicalPath()
                                                        , "-af", 
String.format("aresample=%s:min_comp=0.001:min_hard_comp=0.100000", 
getAudioBitrate())
                                                        , 
outputWav.getCanonicalPath()};
-
-                                       
logs.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv));
+                                       //there might be no audio in the stream
+                                       
logs.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv, true));
                                }
 
                                if (outputWav.exists() && outputWav.length() != 
0) {
@@ -319,7 +319,7 @@ public abstract class BaseConverter {
                                                }
 
                                                if (soxArgs != null) {
-                                                       log.debug("START 
fillGap ################# Delta-ID :: " + metaDelta.getId());
+                                                       log.debug("START 
fillGap ################# Delta-ID :: {}", metaDelta.getId());
 
                                                        
metaDeltaDao.update(metaDelta);
                                                        counter++;
@@ -353,7 +353,6 @@ public abstract class BaseConverter {
                                        // Finally add it to the row!
                                        waveFiles.add(outputFullWav);
                                }
-
                                metaDataDao.update(metaData);
                        }
                } catch (Exception err) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1093049c/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
index 1a52f90..d5b59a5 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
@@ -56,14 +56,15 @@ public class FileItemLogDao {
                                .executeUpdate();
        }
 
-       public FileItemLog add(String name, BaseFileItem f, ProcessResult 
returnMap) {
-               log.trace("Adding log: {}, {}, {}", name, f, returnMap);
-               FileItemLog l = new FileItemLog();
-               l.setInserted(new Date());
-               l.setExitCode(returnMap.getExitCode());
-               l.setFileId(f.getId());
-               l.setMessage(returnMap.buildLogMessage());
-               l.setName(name);
+       public FileItemLog add(String name, BaseFileItem f, ProcessResult r) {
+               log.trace("Adding log: {}, {}, {}", name, f, r);
+               FileItemLog l = new FileItemLog()
+                               .setInserted(new Date())
+                               .setExitCode(r.getExitCode())
+                               .setFileId(f.getId())
+                               .setMessage(r.buildLogMessage())
+                               .setName(name)
+                               .setOptional(r.isOptional());
 
                em.persist(l);
                return l;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1093049c/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
index c04a931..cf2b3e6 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
@@ -39,7 +39,7 @@ import org.apache.openmeetings.db.entity.IDataProviderEntity;
 @Entity
 @NamedQueries({
                @NamedQuery(name = "getFileLogsByFile", query = "SELECT fl FROM 
FileItemLog fl WHERE fl.fileId = :fileId"),
-               @NamedQuery(name = "countErrorFileLogsByFile", query = "SELECT 
COUNT(fl) FROM FileItemLog fl WHERE fl.fileId = :fileId AND fl.exitCode <> 0"),
+               @NamedQuery(name = "countErrorFileLogsByFile", query = "SELECT 
COUNT(fl) FROM FileItemLog fl WHERE fl.fileId = :fileId AND fl.optional = false 
AND fl.exitCode <> 0"),
                @NamedQuery(name = "deleteErrorFileLogsByFile", query = "DELETE 
FROM FileItemLog fl WHERE fl.fileId = :fileId") })
 @Table(name = "file_log")
 public class FileItemLog implements IDataProviderEntity {
@@ -66,6 +66,9 @@ public class FileItemLog implements IDataProviderEntity {
        @Column(name = "exit_code")
        private Integer exitCode;
 
+       @Column(name = "optional", nullable = false)
+       private boolean optional;
+
        @Override
        public Long getId() {
                return id;
@@ -80,40 +83,45 @@ public class FileItemLog implements IDataProviderEntity {
                return fileId;
        }
 
-       public void setFileId(Long fileId) {
+       public FileItemLog setFileId(Long fileId) {
                this.fileId = fileId;
+               return this;
        }
 
        public Date getInserted() {
                return inserted;
        }
 
-       public void setInserted(Date inserted) {
+       public FileItemLog setInserted(Date inserted) {
                this.inserted = inserted;
+               return this;
        }
 
        public String getName() {
                return name;
        }
 
-       public void setName(String name) {
+       public FileItemLog setName(String name) {
                this.name = name;
+               return this;
        }
 
        public String getMessage() {
                return bytes == null ? null : new String(bytes, UTF_8);
        }
 
-       public void setMessage(String message) {
+       public FileItemLog setMessage(String message) {
                setBytes(message.getBytes(UTF_8));
+               return this;
        }
 
        public Integer getExitCode() {
                return exitCode;
        }
 
-       public void setExitCode(Integer exitCode) {
+       public FileItemLog setExitCode(Integer exitCode) {
                this.exitCode = exitCode;
+               return this;
        }
 
        public byte[] getBytes() {
@@ -125,6 +133,19 @@ public class FileItemLog implements IDataProviderEntity {
        }
 
        public boolean isOk() {
-               return ZERO.equals(exitCode);
+               return optional || !isWarn();
+       }
+
+       public boolean isWarn() {
+               return !ZERO.equals(exitCode);
+       }
+
+       public boolean isOptional() {
+               return optional;
+       }
+
+       public FileItemLog setOptional(boolean optional) {
+               this.optional = optional;
+               return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1093049c/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
index 3996352..ea406c3 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
@@ -35,20 +35,6 @@ public class ProcessHelper {
 
        private ProcessHelper() {}
 
-       public static ProcessResult executeScriptWindows(String process, 
String[] argv) {
-               try {
-                       String[] cmd = new String[argv.length + 2];
-                       cmd[0] = "cmd.exe";
-                       cmd[1] = "/C";
-                       System.arraycopy(argv, 0, cmd, 2, argv.length);
-                       Map<String, String> env = new HashMap<>();
-                       return executeScript(process, cmd, env);
-               } catch (Exception t) {
-                       log.error("executeScriptWindows", t);
-                       return new ProcessResult(process, t.getMessage(), t);
-               }
-       }
-
        private static String getCommand(String[] argv) {
                StringBuilder tString = new StringBuilder();
                for (int i = 0; i < argv.length; i++) {
@@ -71,19 +57,24 @@ public class ProcessHelper {
        }
 
        public static ProcessResult executeScript(String process, String[] 
argv) {
+               return executeScript(process, argv, false);
+       }
+
+       public static ProcessResult executeScript(String process, String[] 
argv, boolean optional) {
                Map<String, String> env = new HashMap<>();
-               return executeScript(process, argv, env);
+               return executeScript(process, argv, env, optional);
        }
 
-       public static ProcessResult executeScript(String process, String[] 
argv, Map<? extends String, ? extends String> env) {
-               ProcessResult res = new ProcessResult();
-               res.setProcess(process);
+       private static ProcessResult executeScript(String process, String[] 
argv, Map<? extends String, ? extends String> env, boolean optional) {
+               ProcessResult res = new ProcessResult()
+                               .setProcess(process)
+                               .setOptional(optional);
                debugCommandStart(process, argv);
 
                Process proc = null;
                try {
-                       res.setCommand(getCommand(argv));
-                       res.setOut("");
+                       res.setCommand(getCommand(argv))
+                               .setOut("");
 
                        // By using the process Builder we have access to 
modify the
                        // environment variables
@@ -98,14 +89,14 @@ public class ProcessHelper {
                        // its finished
                        proc.waitFor(getExtProcessTtl(), TimeUnit.MINUTES);
 
-                       res.setExitCode(proc.exitValue());
-                       res.setOut(IOUtils.toString(proc.getInputStream(), 
UTF_8));
-                       res.setError(IOUtils.toString(proc.getErrorStream(), 
UTF_8));
+                       res.setExitCode(proc.exitValue())
+                               .setOut(IOUtils.toString(proc.getInputStream(), 
UTF_8))
+                               
.setError(IOUtils.toString(proc.getErrorStream(), UTF_8));
                } catch (Throwable t) {
                        log.error("executeScript", t);
-                       res.setError(t.getMessage());
-                       res.setException(t.toString());
-                       res.setExitCode(-1);
+                       res.setExitCode(-1)
+                               .setError(t.getMessage())
+                               .setException(t.toString());
                } finally {
                        if (proc != null) {
                                proc.destroy();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1093049c/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessResult.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessResult.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessResult.java
index 01c271f..8c45422 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessResult.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessResult.java
@@ -36,6 +36,7 @@ public class ProcessResult {
        private String error;
        private Integer exitCode;
        private String out;
+       private boolean optional = false;
 
        public ProcessResult() {
                this(null, null, null);
@@ -56,24 +57,27 @@ public class ProcessResult {
                return out;
        }
 
-       public void setOut(String out) {
+       public ProcessResult setOut(String out) {
                this.out = out;
+               return this;
        }
 
        public String getCommand() {
                return command;
        }
 
-       public void setCommand(String command) {
+       public ProcessResult setCommand(String command) {
                this.command = command;
+               return this;
        }
 
        public String getProcess() {
                return process;
        }
 
-       public void setProcess(String process) {
+       public ProcessResult setProcess(String process) {
                this.process = process;
+               return this;
        }
 
        public String getException() {
@@ -88,8 +92,9 @@ public class ProcessResult {
                return error;
        }
 
-       public void setError(String error) {
+       public ProcessResult setError(String error) {
                this.error = error;
+               return this;
        }
 
        public Integer getExitCode() {
@@ -101,8 +106,21 @@ public class ProcessResult {
                return this;
        }
 
+       public boolean isOptional() {
+               return optional;
+       }
+
+       public ProcessResult setOptional(boolean optional) {
+               this.optional = optional;
+               return this;
+       }
+
        public boolean isOk() {
-               return ZERO.equals(exitCode);
+               return optional || !isWarn();
+       }
+
+       public boolean isWarn() {
+               return !ZERO.equals(exitCode);
        }
 
        public String buildLogMessage() {
@@ -112,6 +130,7 @@ public class ProcessResult {
                        .append("exception: ").append(exception).append("\r\n")
                        .append("error: ").append(error).append("\r\n")
                        .append("exitValue: ").append(exitCode).append("\r\n")
+                       .append("optional: ").append(optional).append("\r\n")
                        .append("out: ").append(out).append("\r\n").toString();
        }
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1093049c/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
index 45629f9..c44bc52 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
@@ -52,7 +52,10 @@ public class ConvertingErrorsDialog extends 
AbstractDialog<BaseFileItem> {
                        item.add(new Label("exitCode", l.getExitCode()));
                        item.add(new Label("message", l.getMessage()));
                        if (!l.isOk()) {
-                               item.add(AttributeModifier.replace(ATTR_CLASS, 
"alert"));
+                               item.add(AttributeModifier.append(ATTR_CLASS, 
"alert"));
+                       }
+                       if (l.isWarn()) {
+                               item.add(AttributeModifier.append(ATTR_CLASS, 
"warn"));
                        }
                }
        };

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1093049c/openmeetings-web/src/main/webapp/css/tree.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/tree.css 
b/openmeetings-web/src/main/webapp/css/tree.css
index 3277d48..37e9a5b 100644
--- a/openmeetings-web/src/main/webapp/css/tree.css
+++ b/openmeetings-web/src/main/webapp/css/tree.css
@@ -161,6 +161,9 @@
 .dialog.errors .alert {
        color: red;
 }
+.dialog.errors .warn {
+       color: #afaf09;
+}
 .dialog.errors .message {
        display: block;
        unicode-bidi: embed;

Reply via email to