branch develop updated (caa31d7 -> 9daf16e)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository echobase. See http://git.codelutin.com/echobase.git from caa31d7 fixes #6458: Ne pas importer les résultats avec valeurs *NA* sur les résultats de type Région new 9daf16e fixes #6460: Afficher les logs d'excution des script R The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 9daf16e1e5de051961443830690f9b55c1ce8914 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 20 18:12:44 2015 +0100 fixes #6460: Afficher les logs d'excution des script R Summary of changes: .../fr/ifremer/echobase/io/CommandLineUtils.java | 52 +++++++++++----------- .../exportCoser/ExportCoserConfiguration.java | 10 +++++ .../service/exportCoser/ExportCoserService.java | 7 ++- .../exportCoser/GenerateCoserMapException.java | 25 +++++++++++ .../ui/actions/AbstractWaitAndExecAction.java | 2 +- .../echobase/ui/actions/exportCoser/Export.java | 19 +++++++- 6 files changed, 87 insertions(+), 28 deletions(-) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/GenerateCoserMapException.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See http://git.codelutin.com/echobase.git commit 9daf16e1e5de051961443830690f9b55c1ce8914 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 20 18:12:44 2015 +0100 fixes #6460: Afficher les logs d'excution des script R --- .../fr/ifremer/echobase/io/CommandLineUtils.java | 52 +++++++++++----------- .../exportCoser/ExportCoserConfiguration.java | 10 +++++ .../service/exportCoser/ExportCoserService.java | 7 ++- .../exportCoser/GenerateCoserMapException.java | 25 +++++++++++ .../ui/actions/AbstractWaitAndExecAction.java | 2 +- .../echobase/ui/actions/exportCoser/Export.java | 19 +++++++- 6 files changed, 87 insertions(+), 28 deletions(-) diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/io/CommandLineUtils.java b/echobase-domain/src/main/java/fr/ifremer/echobase/io/CommandLineUtils.java index f85c9b1..0de9782 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/io/CommandLineUtils.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/io/CommandLineUtils.java @@ -21,14 +21,15 @@ package fr.ifremer.echobase.io; * #L% */ -import fr.ifremer.echobase.EchoBaseTechnicalException; import org.apache.commons.exec.CommandLine; import org.apache.commons.exec.DefaultExecutor; +import org.apache.commons.exec.ExecuteException; import org.apache.commons.exec.LogOutputStream; import org.apache.commons.exec.PumpStreamHandler; import org.apache.commons.logging.Log; import java.io.File; +import java.io.IOException; /** * Utils method around a command line execution. @@ -59,52 +60,53 @@ public class CommandLineUtils { return result; } - public static void invokeCommandeLine(Log logger, - CommandLine commandLine, - String errorMsg, - File workDir) { - DefaultExecutor executor = new DefaultExecutor(); + public static void invokeCommandeLine(Log logger, CommandLine commandLine, File workDir) throws IOException { - ExecutorLog executorLog = new ExecutorLog(); + DefaultExecutor executor = new DefaultExecutor(); + ExecutorLog executorLog = new ExecutorLog(logger); executor.setStreamHandler(new PumpStreamHandler(executorLog)); // set resource directory executor.setWorkingDirectory(workDir); // invoke - int exitValue; - String log = executorLog.getLog(); - try { - if (logger.isInfoEnabled()) { - logger.info("Command line '" + commandLine.toString() + "' will be execute"); - } - exitValue = executor.execute(commandLine); - } catch (Exception eee) { - throw new EchoBaseTechnicalException(errorMsg + "\n" + log, eee); - } - if (logger.isInfoEnabled()) { - logger.info("Command line end with exit with value : " + exitValue); + logger.info("Command line '" + commandLine.toString() + "' will be execute"); } - if (exitValue != 0) { - if (logger.isErrorEnabled()) { - logger.error("Command failed:\n" + log); - } - throw new EchoBaseTechnicalException(errorMsg + "\n" + log.replaceAll("\\n", "<br/>\n")); + + try { + executor.execute(commandLine); + } catch (ExecuteException eee) { + + int exitValue = eee.getExitValue(); + String message = "Command line '" + commandLine.toString() + "' failed with exit code " + exitValue + "\nError Log:\n" + executorLog.getLog(); + throw new IOException(message, eee); + } + } protected static class ExecutorLog extends LogOutputStream { + final Log logger; + protected StringBuilder executorLog = new StringBuilder(); + public ExecutorLog(Log logger) { + this.logger = logger; + } + @Override protected void processLine(String line, int level) { - executorLog.append(line); + executorLog.append("\n").append(line); + if (logger.isDebugEnabled()) { + logger.debug(line); + } } public String getLog() { return executorLog.toString(); } + } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserConfiguration.java index 6e505b8..13d97e6 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserConfiguration.java @@ -116,6 +116,8 @@ public class ExportCoserConfiguration extends AbstractEchobaseActionConfiguratio */ private JdbcConfiguration dbConfiguration; + private String scriptErrorLog; + public ExportCoserConfiguration() { } @@ -243,6 +245,14 @@ public class ExportCoserConfiguration extends AbstractEchobaseActionConfiguratio this.comment = comment; } + public String getScriptErrorLog() { + return scriptErrorLog; + } + + public void setScriptErrorLog(String scriptErrorLog) { + this.scriptErrorLog = scriptErrorLog; + } + @Override public void destroy() throws IOException { if (workingDirectory != null) { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserService.java index 602062e..21b53fc 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserService.java @@ -416,7 +416,12 @@ public class ExportCoserService extends EchoBaseServiceSupport { dbConfiguration.getLogin(), dbConfiguration.getPassword()); - CommandLineUtils.invokeCommandeLine(log, commandLine, "Failed to launch R script: " + scriptFile, workingDirectory); + try { + CommandLineUtils.invokeCommandeLine(log, commandLine, workingDirectory); + } catch (IOException e) { + + throw new GenerateCoserMapException("Impossible de générer les cartes en utilisant EchoR", e.getMessage()); + } File result = new File(scriptPrefixPath + "meanMaps"); return result; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/GenerateCoserMapException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/GenerateCoserMapException.java new file mode 100644 index 0000000..32b5c9c --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/GenerateCoserMapException.java @@ -0,0 +1,25 @@ +package fr.ifremer.echobase.services.service.exportCoser; + +import java.io.IOException; + +/** + * Created on 1/20/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 2.8 + */ +public class GenerateCoserMapException extends IOException { + + private static final long serialVersionUID = 1L; + + private final String log; + + public GenerateCoserMapException(String message, String log) { + super(message); + this.log = log; + } + + public String getLog() { + return log; + } +} diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractWaitAndExecAction.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractWaitAndExecAction.java index 1089d08..5426c89 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractWaitAndExecAction.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractWaitAndExecAction.java @@ -71,7 +71,7 @@ public abstract class AbstractWaitAndExecAction<M extends AbstractEchobaseAction return model.getError(); } - public final String getErrorStack() { + public String getErrorStack() { String errorStack = null; if (model.hasError()) { diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportCoser/Export.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportCoser/Export.java index 5a42d70..79e56f8 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportCoser/Export.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportCoser/Export.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.ui.actions.exportCoser; import fr.ifremer.echobase.services.service.exportCoser.ExportCoserConfiguration; import fr.ifremer.echobase.services.service.exportCoser.ExportCoserService; +import fr.ifremer.echobase.services.service.exportCoser.GenerateCoserMapException; import fr.ifremer.echobase.ui.actions.AbstractWaitAndExecAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -50,7 +51,14 @@ public class Export extends AbstractWaitAndExecAction<ExportCoserConfiguration, if (log.isInfoEnabled()) { log.info("Start Coser export for mission" + model.getMissionId()); } - service.doExport(model); + try { + service.doExport(model); + } catch (GenerateCoserMapException e) { + + model.setScriptErrorLog(e.getLog()); + throw e; + } + } @Override @@ -80,4 +88,13 @@ public class Export extends AbstractWaitAndExecAction<ExportCoserConfiguration, return result; } + @Override + public String getErrorStack() { + String errorStack = super.getErrorStack(); + String scriptErrorLog = getModel().getScriptErrorLog(); + if (scriptErrorLog != null) { + errorStack += "\n" + scriptErrorLog; + } + return errorStack; + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm