Author: chatellier Date: 2009-03-31 13:33:51 +0000 (Tue, 31 Mar 2009) New Revision: 2054 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java Log: Dans le cas de SSH, si une eception a ?\195?\169t?\195?\169 lanc?\195?\169, lance une demande d'arret de simulation et telecharge le debut de simulation Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-03-31 12:58:07 UTC (rev 2053) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-03-31 13:33:51 UTC (rev 2054) @@ -21,6 +21,7 @@ import static org.codelutin.i18n.I18n._; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; @@ -28,6 +29,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Properties; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; @@ -246,7 +248,7 @@ /** * {@inheritDoc} * - * Se connecte au serveur distance et tétécharge le + * Se connecte au serveur distance et télécharge le * fichier de control. * Injecte ensuite ce fichier dans le {@link SimulationControl}. */ @@ -255,35 +257,69 @@ SimulationControl control) throws RemoteException { try { - // download control file - File controlFile = downloadControlFile(control.getId()); - - if (log.isDebugEnabled()) { - log.debug("Control have been downloaded : " - + controlFile.getAbsolutePath()); + try { + // download control file + File controlFile = downloadSimulationFile(control.getId(), SimulationStorage.CONTROL_FILENAME); + if (log.isDebugEnabled()) { + log.debug("Control have been downloaded : " + + controlFile.getAbsolutePath()); + } + + synchronized (control) { + // le thread principal a pu le modifier pendant le sleep + //if (control.isRunning()) { + // on ne lit pas le stop, car le stop ne peut-etre appeler + // que par l'utilisateur qui est de ce cote de la machine + SimulationStorage.readControl(controlFile, control, "stop"); + //} + } + + // deleteTempFile + controlFile.delete(); + } catch (SSHException e) { + // file doesn't exist + if (log.isDebugEnabled()) { + // not add ,e plz :) + log.debug(_("Remote control file doesn't exists %s", e + .getMessage())); + } } + + try { + // download information file + File infoFile = downloadSimulationFile(control.getId(), SimulationStorage.INFORMATION_FILENAME); + if (log.isDebugEnabled()) { + log.debug("Information have been downloaded : " + + infoFile.getAbsolutePath()); + } - synchronized (control) { - // le thread principal a pu le modifier pendant le sleep - //if (control.isRunning()) { - // on ne lit pas le stop, car le stop ne peut-etre appeler - // que par l'utilisateur qui est de ce cote de la machine - SimulationStorage.readControl(controlFile, control, "stop"); - //} + // s'il y a une exception, + // on dit juste que la simulation a eu une demande + // d'arret pour qu'elle s'arrete dans l'UI + Properties infoProperties = new Properties(); + infoProperties.load(new FileInputStream(infoFile)); + if (!StringUtils.isEmpty(infoProperties.getProperty("exception"))) { + synchronized (control) { + control.setStopSimulationRequest(true); + } + } + + + // deleteTempFile + infoFile.delete(); + } catch (SSHException e) { + // file doesn't exist + if (log.isDebugEnabled()) { + // not add ,e plz :) + log.debug(_("Remote control file doesn't exists %s", e + .getMessage())); + } } - - // deleteTempFile - controlFile.delete(); - } catch (SSHException e) { - // file doesn't exist - if (log.isDebugEnabled()) { + } catch (IOException e) { + if (log.isErrorEnabled()) { // not add ,e plz :) - log.debug(_("Remote control file doesn't exists %s", e - .getMessage())); + log.error(_("Can't download file"), e); } - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); } } @@ -522,11 +558,13 @@ * Download remote simulation control file and store * its content into temp file. * + * @param simulationId id de la simulation + * @param fileName nom du fichier a telecharger * @return downloaded temp file (file have to be manually deleted) * @throws IOException * @throws SSHException if remote file doesn't exists */ - protected File downloadControlFile(String simulationId) throws IOException, + protected File downloadSimulationFile(String simulationId, String fileName) throws IOException, SSHException { File localFile = null; @@ -537,10 +575,10 @@ String remoteFile = IsisFish.config.getSimulatorSshDataPath(); remoteFile += "/" + SimulationStorage.SIMULATION_PATH; remoteFile += "/" + simulationId; - remoteFile += "/control"; + remoteFile += "/" + fileName; // local tmp file - localFile = File.createTempFile(simulationId, "control"); + localFile = File.createTempFile(simulationId, fileName); try { SSHUtils.scpFrom(getSSHSession(), remoteFile, localFile); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-03-31 12:58:07 UTC (rev 2053) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-03-31 13:33:51 UTC (rev 2054) @@ -453,13 +453,15 @@ try { + // get storage + // meme si StopSimulationRequest + // force le download dans le cas de ssh + SimulationStorage simulation = launcher.getSimulationStorage( + service, control); + // on ne fait de post traitement que si // la simulation n'a pas été arretée if (!control.isStopSimulationRequest()) { - // get storage - SimulationStorage simulation = launcher.getSimulationStorage( - service, control); - // post manage this storage boolean simulationAvailble = exportResult(job, simulation);