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 2017/12/29 03:45:29 UTC

openmeetings git commit: [OPENMEETINGS-1808] strip audio is marked as optional during conversion

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 <so...@gmail.com>
Authored: Fri Dec 29 10:45:20 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
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;