Author: chatellier Date: 2008-12-19 16:14:28 +0000 (Fri, 19 Dec 2008) New Revision: 1707 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogMail.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/io/LineReader.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties Log: Update script menu actions Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2008-12-19 15:52:49 UTC (rev 1706) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2008-12-19 16:14:28 UTC (rev 1707) @@ -155,10 +155,7 @@ } public String diff() throws VCSException, IOException { - return getVCS().getDiff(getFile()); - - } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java 2008-12-19 15:52:49 UTC (rev 1706) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java 2008-12-19 16:14:28 UTC (rev 1707) @@ -255,7 +255,7 @@ * <p/> * It category is null, we use the rootLogger. * - * @param category cateogry of appender to remove, it null use rootLogger + * @param category category of appender to remove, it null use rootLogger * @param name name of appender to remove */ static void removeAppender(String category, String name) { Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogMail.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogMail.java 2008-12-19 15:52:49 UTC (rev 1706) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogMail.java 2008-12-19 16:14:28 UTC (rev 1707) @@ -20,41 +20,43 @@ package fr.ifremer.isisfish.logging.console; import static org.codelutin.i18n.I18n._; -import org.codelutin.util.FileUtil; -import org.codelutin.util.ZipUtil; -import org.codelutin.widget.StatusBar; -import org.apache.commons.logging.Log; -import static org.apache.commons.logging.LogFactory.getLog; -import javax.mail.MessagingException; -import javax.mail.Session; -import javax.mail.Message; -import javax.mail.BodyPart; -import javax.mail.Part; -import javax.mail.Transport; -import javax.mail.internet.MimeMessage; -import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMultipart; -import javax.mail.internet.MimeBodyPart; -import javax.activation.DataHandler; -import javax.activation.DataSource; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedInputStream; +import java.io.BufferedWriter; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; -import java.io.ByteArrayOutputStream; -import java.io.BufferedWriter; -import java.io.OutputStreamWriter; import java.io.InputStream; -import java.io.ByteArrayInputStream; import java.io.OutputStream; -import java.io.BufferedInputStream; -import java.io.FileInputStream; +import java.io.OutputStreamWriter; +import java.util.Date; import java.util.Properties; -import java.util.Date; +import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import java.util.zip.ZipEntry; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; +import javax.activation.DataHandler; +import javax.activation.DataSource; +import javax.mail.BodyPart; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Part; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeBodyPart; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeMultipart; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.util.FileUtil; +import org.codelutin.util.ZipUtil; +import org.codelutin.widget.StatusBar; + import fr.ifremer.isisfish.ui.logging.console.LogMailUI; /** @@ -65,8 +67,11 @@ public class LogMail extends LogMailUI { - static private final Log log = org.apache.commons.logging.LogFactory.getLog(LogMail.class); + /** serialVersionUID */ + private static final long serialVersionUID = 1L; + static private final Log log = LogFactory.getLog(LogMail.class); + /** the simulation directory */ protected File simulationFile; Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.java 2008-12-19 15:52:49 UTC (rev 1706) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.java 2008-12-19 16:14:28 UTC (rev 1707) @@ -29,7 +29,7 @@ import java.io.RandomAccessFile; /** - * A simple implementaion of {@link OffsetReader} using a file for + * A simple implementation of {@link OffsetReader} using a file for * dealing with offsets. * <p/> * The offset of lines are pre-computed in a file {@link #offsetFile}, generated @@ -52,7 +52,7 @@ /** writer used while creation or update */ protected RandomAccessFile writer; - public FileOffsetReader(File file) throws IOException { + public FileOffsetReader(File file) { this.offsetFile = file; } @@ -76,8 +76,6 @@ offsetReader = new RandomAccessFile(this.offsetFile, "r"); } catch (FileNotFoundException e) { throw new IllegalArgumentException(e); - } catch (IOException e) { - throw new IllegalArgumentException(e); } if (!needCreate()) { // we know extacly the number of line from the size of offsets file Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/io/LineReader.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/io/LineReader.java 2008-12-19 15:52:49 UTC (rev 1706) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/logging/io/LineReader.java 2008-12-19 16:14:28 UTC (rev 1707) @@ -182,7 +182,7 @@ * * @param position position of the line in the file * @return the line found, or null - * @throws java.io.IOException if any problem while reading + * @throws IOException if any problem while reading */ public String readLine(long position) throws IOException { ensureOpen(); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2008-12-19 15:52:49 UTC (rev 1706) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2008-12-19 16:14:28 UTC (rev 1707) @@ -1,45 +1,42 @@ package fr.ifremer.isisfish.ui.script; -/** - * - * @author letellier - */ -import fr.ifremer.isisfish.IsisFish; -import fr.ifremer.isisfish.datastore.AnalysePlanStorage; -import fr.ifremer.isisfish.datastore.CodeSourceStorage; -import fr.ifremer.isisfish.datastore.ExportStorage; -import fr.ifremer.isisfish.datastore.FormuleStorage; -import fr.ifremer.isisfish.datastore.JavaSourceStorage; -import fr.ifremer.isisfish.datastore.RuleStorage; -import fr.ifremer.isisfish.datastore.ScriptStorage; -import fr.ifremer.isisfish.datastore.SimulatorStorage; -import fr.ifremer.isisfish.ui.widget.ErrorDialogUI; -import fr.ifremer.isisfish.ui.widget.editor.GenericCell; -import fr.ifremer.isisfish.vcs.VCSException; +import static org.codelutin.i18n.I18n._; + import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.logging.Level; -import java.util.logging.Logger; -import static org.codelutin.i18n.I18n._; import java.io.File; import java.io.FileFilter; +import java.io.IOException; +import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; -import java.io.PrintStream; import java.lang.reflect.Method; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; + import javax.swing.JOptionPane; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; + import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.codelutin.util.FileUtil; -import static org.apache.commons.logging.LogFactory.getLog; -import static fr.ifremer.isisfish.equation.Language.JAVA; -import static javax.swing.JOptionPane.showMessageDialog; +import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.datastore.AnalysePlanStorage; +import fr.ifremer.isisfish.datastore.CodeSourceStorage; +import fr.ifremer.isisfish.datastore.ExportStorage; +import fr.ifremer.isisfish.datastore.FormuleStorage; +import fr.ifremer.isisfish.datastore.JavaSourceStorage; +import fr.ifremer.isisfish.datastore.RuleStorage; +import fr.ifremer.isisfish.datastore.ScriptStorage; +import fr.ifremer.isisfish.datastore.SimulatorStorage; +import fr.ifremer.isisfish.equation.Language; +import fr.ifremer.isisfish.ui.widget.ErrorDialogUI; +import fr.ifremer.isisfish.ui.widget.editor.GenericCell; +import fr.ifremer.isisfish.vcs.VCSException; + class ScriptFileFilter implements FileFilter { final FileFilter filter; @@ -51,20 +48,32 @@ return !filter.accept(dir) || dir.getName().equals("data"); } } + +/** + * + * @author letellier + */ public class ScriptAction { - CodeSourceStorage code; + /** to use log facility, just put in your code: log.info(\"...\"); */ - static private Log log = getLog(ScriptAction.class); - File fileOpen= null; - public ScriptAction(){ + static private Log log = LogFactory.getLog(ScriptAction.class); + + protected CodeSourceStorage code; + + protected File fileOpen = null; + public ScriptAction() { + } - protected void showMsgBox(Exception eee){ + + protected void showMsgBox(Exception eee) { ErrorDialogUI.showError(eee); } - public CodeSourceStorage getCode(){ + + public CodeSourceStorage getCode() { return code; } + /** @return an array of all script's modules names managed by this screen */ public static String[] getScriptTypesNames() { ScriptMapping[] values = ScriptMapping.values(); @@ -74,59 +83,72 @@ } return result; } - public List<String> getScriptNames(){ + + public List<String> getScriptNames() { return ScriptStorage.getScriptNames(); } - public List<String> getSimulatorNames(){ + + public List<String> getSimulatorNames() { return SimulatorStorage.getSimulatorNames(); } - public List<String> getExportNames(){ + + public List<String> getExportNames() { return ExportStorage.getExportNames(); } - public List<String> getRuleNames(){ + + public List<String> getRuleNames() { return RuleStorage.getRuleNames(); } - public List<String> getAnalysePlanNames(){ + + public List<String> getAnalysePlanNames() { return AnalysePlanStorage.getAnalysePlanNames(); } - public List<String> getCategories(){ + + public List<String> getCategories() { return FormuleStorage.getCategories(); } - public List<String> getFormuleNames(String Categories){ + + public List<String> getFormuleNames(String Categories) { return FormuleStorage.getFormuleNames(Categories); } - public File getScriptDirectory(){ + + public File getScriptDirectory() { return ScriptStorage.getScriptDirectory(); } - public File getSimulatorDirectory(){ + + public File getSimulatorDirectory() { return SimulatorStorage.getSimulatorDirectory(); } - public File getExportDirectory(){ + + public File getExportDirectory() { return ExportStorage.getExportDirectory(); } - public File getRuleDirectory(){ + + public File getRuleDirectory() { return RuleStorage.getRuleDirectory(); } - public File getAnalysePlanDirectory(){ + + public File getAnalysePlanDirectory() { return AnalysePlanStorage.getAnalysePlanDirectory(); } - public File getFormuleDirectory(){ + + public File getFormuleDirectory() { return FormuleStorage.getFormuleDirectory(); } + /* * JButton Action */ - /** - * Creer un nouveau script, ici un script peut-etre un Script, un Simulator, - * un Export. - * - * @param fileName - * @param scriptType le type que l'on souhaite Script, Simulator, - * ou Export. - * @return TODO - */ + /** + * Creer un nouveau script, ici un script peut-etre un Script, un Simulator, + * un Export. + * + * @param fileName + * @param scriptType le type que l'on souhaite Script, Simulator, + * ou Export. + */ public void newScript(String fileName, String scriptType) { -// log.info("newScript called [" + scriptType + "] " + uiContext); + // log.info("newScript called [" + scriptType + "] " + uiContext); Exception e; try { @@ -137,26 +159,32 @@ String realFilename; String category; ScriptMapping mapping = ScriptMapping.valueOf(scriptType); - if (mapping == null) { + if (mapping == null) { e = new RuntimeException("ScriptType unknown: " + scriptType); - returnError(_("isisfish.error.script.create",fileName, e.getMessage()),e); + returnError(_("isisfish.error.script.create", fileName, e + .getMessage()), e); } - + int pos = fileName.lastIndexOf('/'); if (pos != -1) { - if (mapping!= ScriptMapping.EquationModel) { + if (mapping != ScriptMapping.EquationModel) { // interdit pour le moment ? - String message = _("isisfish.error.invalid.file.name", fileName); + String message = _("isisfish.error.invalid.file.name", + fileName); e = new RuntimeException(message); - returnError(_("isisfish.error.script.create",fileName, e.getMessage()),e); - } + returnError(_("isisfish.error.script.create", fileName, e + .getMessage()), e); + } // il y a un sous type à traiter if (pos == fileName.length() - 1) { - String message = _("isisfish.error.invalid.file.name", fileName); + String message = _("isisfish.error.invalid.file.name", + fileName); e = new RuntimeException(message); - returnError(_("isisfish.error.script.create",fileName, e.getMessage()),e); + returnError(_("isisfish.error.script.create", fileName, e + .getMessage()), e); } - realFilename = fileName.substring(fileName.lastIndexOf('/') + 1); + realFilename = fileName + .substring(fileName.lastIndexOf('/') + 1); category = fileName.substring(0, fileName.lastIndexOf('/')); } else { realFilename = fileName; @@ -165,169 +193,201 @@ if (!realFilename.matches("[A-Z0-9_][a-zA-Z0-9_]*")) { String message = _("isisfish.error.invalid.file.name", fileName); e = new RuntimeException(message); - returnError(_("isisfish.error.script.create",fileName, e.getMessage()),e); + returnError(_("isisfish.error.script.create", fileName, e + .getMessage()), e); } //TODO do test on category CodeSourceStorage script = null; String template; template = mapping.getDefaultContent(); switch (mapping) { - case EquationModel: - script = FormuleStorage.createFormule(category, realFilename, JAVA); - break; - case AnalysePlan: - script = AnalysePlanStorage.getAnalysePlan(fileName); - break; - case Export: - script = ExportStorage.getExport(fileName); - break; - case Rule: - script = RuleStorage.getRule(fileName); - break; - case Script: - script = ScriptStorage.getScript(fileName); - break; - case Simulator: - script = SimulatorStorage.getSimulator(fileName); - break; - default: - log.fatal("ScriptType unknown: " + scriptType); + case EquationModel: + script = FormuleStorage.createFormule(category, realFilename, + Language.JAVA); + break; + case AnalysePlan: + script = AnalysePlanStorage.getAnalysePlan(fileName); + break; + case Export: + script = ExportStorage.getExport(fileName); + break; + case Rule: + script = RuleStorage.getRule(fileName); + break; + case Script: + script = ScriptStorage.getScript(fileName); + break; + case Simulator: + script = SimulatorStorage.getSimulator(fileName); + break; + default: + log.fatal("ScriptType unknown: " + scriptType); } if (script.exists()) { // Message d'erreur si le fichier existe en local. - String message = _("isisfish.error.file.already.exists", fileName); + String message = _("isisfish.error.file.already.exists", + fileName); e = new RuntimeException(message); - returnError(_("isisfish.error.script.create",fileName, e.getMessage()),e); + returnError(_("isisfish.error.script.create", fileName, e + .getMessage()), e); } // add default script content String content = MessageFormat.format(template, - category.isEmpty() ? "" : '.' + category.replaceAll("\\/", "."), - realFilename, - new Date(), - IsisFish.config.getUserName(), - IsisFish.config.getUserMail()); + category.isEmpty() ? "" : '.' + category.replaceAll("\\/", + "."), realFilename, new Date(), IsisFish.config + .getUserName(), IsisFish.config.getUserMail()); script.setContent(content); - code = script; + code = script; } catch (Exception eee) { - returnError(_("isisfish.error.script.create",fileName, eee.getMessage()),eee); + returnError(_("isisfish.error.script.create", fileName, eee + .getMessage()), eee); } } - protected void returnError(String s, Exception eee) { - log.error(s,eee); + + protected void returnError(String s, Exception eee) { + log.error(s, eee); showMsgBox(eee); } - public void loadScript(GenericCell c, String fileName, String type){ + + public void loadScript(GenericCell c, String fileName, String type) { ScriptMapping mapping = ScriptMapping.valueOf(type); CodeSourceStorage script = null; try { - + switch (mapping) { - case EquationModel: - script = FormuleStorage.getFormule((String)c.getValue(), fileName); - break; - case Rule: - script = RuleStorage.getRule(fileName); - break; - case AnalysePlan: - script = AnalysePlanStorage.getAnalysePlan(fileName); - break; - case Export: - script = ExportStorage.getExport(fileName); - break; - case Script: - script = ScriptStorage.getScript(fileName); - break; - case Simulator: - script = SimulatorStorage.getSimulator(fileName); - break; - default: - log.fatal("ScriptType unknown: " + fileName); + case EquationModel: + script = FormuleStorage.getFormule((String) c.getValue(), + fileName); + break; + case Rule: + script = RuleStorage.getRule(fileName); + break; + case AnalysePlan: + script = AnalysePlanStorage.getAnalysePlan(fileName); + break; + case Export: + script = ExportStorage.getExport(fileName); + break; + case Script: + script = ScriptStorage.getScript(fileName); + break; + case Simulator: + script = SimulatorStorage.getSimulator(fileName); + break; + default: + log.fatal("ScriptType unknown: " + fileName); } //frame.setInfoText(_("isisfish.message.load.finished")); } catch (Exception eee) { - returnError(_("isisfish.error.script.load",fileName, eee.getMessage()),eee); + returnError(_("isisfish.error.script.load", fileName, eee + .getMessage()), eee); - } - finally { + } finally { code = script; } } - public boolean fileLoaded(){ + + public boolean fileLoaded() { return code != null; } - public boolean isJavaScript(){ + + public boolean isJavaScript() { return JavaSourceStorage.class.isInstance(code); - } + } + public Object saveScript(String content) { log.info("saveScript called [" + code.getName() + "] "); try { code.setContent(content); } catch (Exception eee) { - returnError(_("isisfish.error.script.save", code.getFile(), eee.getMessage()),eee); + returnError(_("isisfish.error.script.save", code.getFile(), eee + .getMessage()), eee); } return null; } + public String commitScript(String content) { String result = null; try { log.debug("commitScript called for "); // save script before commit code.setContent(content); - String msg = JOptionPane.showInputDialog(_("Indiquez vos modifications")); -// String msg = VCSUIHelper.getCommitMessage(script.getFile(), true); + String msg = JOptionPane + .showInputDialog(_("Indiquez vos modifications")); if (msg == null) { result = _("isisfish.message.commit.cancelled"); } else { - code.commit(msg); - code.reload(); - result = _("isisfish.message.commit.finished"); + + try { + code.commit(msg); + code.reload(); + result = _("isisfish.message.commit.finished"); + } + catch(VCSException e) { + + // FIXME enable/disable button only + // if vcs can write + JOptionPane.showMessageDialog(null, e.getMessage(), + _("isisfish.common.error"), JOptionPane.ERROR_MESSAGE); + if(log.isWarnEnabled()) { + log.warn("Exception on commit", e); + } + } } return null; } catch (Exception ex) { - Logger.getLogger(ScriptAction.class.getName()).log(Level.SEVERE, null, ex); + if(log.isErrorEnabled()) { + log.error("Error on script commit", ex); + } } return result; } + /** - * Exporte le(s) script(s) sélectionnés dans l'arbe. + * Exporte le(s) script(s) sélectionnés dans l'arbre. * <br>L'arbre doit avoir au moins un script de selectionne * - * @param TreePath selected path - * @return <code>null</code> if everything is ok, - * an <code>OutputVie<</code> with an error to display otherwise + * @param selectedPaths selected path + * @return <code>null</code> if everything is ok. */ public static String exportScript(TreePath[] selectedPaths) { String message = null; // first step : acquire list of files required - int prefixLength = IsisFish.config.getDatabaseDirectory().getAbsolutePath().length() + 1; + int prefixLength = IsisFish.config.getDatabaseDirectory() + .getAbsolutePath().length() + 1; List<String> listFiles = extractFiles(prefixLength, selectedPaths); return message; } - protected static List<String> extractFiles(int prefixLength,TreePath[] selectedPaths) { + + protected static List<String> extractFiles(int prefixLength, + TreePath[] selectedPaths) { List<String> result = new ArrayList<String>(); List<File> dirFound = new ArrayList<File>(); List<File> dirWithFileFound = new ArrayList<File>(); for (TreePath selectedPath : selectedPaths) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) selectedPath.getPathComponent(1); + DefaultMutableTreeNode node = (DefaultMutableTreeNode) selectedPath + .getPathComponent(1); String moduleDisplayName = String.valueOf(node.getUserObject()); File file = ScriptMapping.valueOf(moduleDisplayName).getModule(); int nbPaths = selectedPath.getPathCount(); if (nbPaths > 2) for (int i = 2; i < nbPaths; i++) { - node = (DefaultMutableTreeNode) selectedPath.getPathComponent(i); + node = (DefaultMutableTreeNode) selectedPath + .getPathComponent(i); String pathName = String.valueOf(node.getUserObject()); file = new File(file, pathName); } if (file.isFile()) { File parentFile = file.getParentFile(); - if (!dirFound.contains(parentFile)) dirFound.add(parentFile); + if (!dirFound.contains(parentFile)) + dirFound.add(parentFile); dirWithFileFound.add(parentFile); result.add(file.getAbsolutePath().substring(prefixLength)); } else { @@ -346,6 +406,7 @@ for (File dir : dirFound) { FileFilter filter = new FileFilter() { FileFilter excludeFilter = getSCRIPT_FILE_FILTER(); + public boolean accept(File pathname) { return !excludeFilter.accept(pathname); } @@ -359,33 +420,38 @@ dirFound.clear(); return result; } - + public static FileFilter SCRIPT_FILE_FILTER; + public static FileFilter getSCRIPT_FILE_FILTER() { if (SCRIPT_FILE_FILTER == null) { SCRIPT_FILE_FILTER = new ScriptFileFilter(IsisFish.vcs); } return SCRIPT_FILE_FILTER; } + //public static Object updateScript() - public void updateScript() { - try { - log.debug("updateScript called for "); - //TODO Use VCS UI dialog - //TODO Use FileState new mecanism to obtain state - code.update(); - code.reload(); - } catch (VCSException ex) { - Logger.getLogger(ScriptAction.class.getName()).log(Level.SEVERE, null, ex); + public void updateScript() { + try { + log.debug("updateScript called for "); + //TODO Use VCS UI dialog + //TODO Use FileState new mecanism to obtain state + code.update(); + code.reload(); + } catch (VCSException ex) { + if(log.isErrorEnabled()) { + log.error("Error on script update", ex); } } - public String checkScript(String content) { + } + + public String checkScript(String content) { String resultLog = ""; try { log.debug("checkScript called"); // save script before commit code.setContent(content); - JavaSourceStorage javaCode = (JavaSourceStorage)code; + JavaSourceStorage javaCode = (JavaSourceStorage) code; StringWriter result = new StringWriter(); PrintWriter out = new PrintWriter(result); int compileResult = 0; @@ -394,7 +460,7 @@ compileResult = javaCode.compile(false, out); } catch (Exception eee) { compileResult = -1; - e=eee; + e = eee; } if (compileResult != 0) { out.flush(); @@ -402,20 +468,19 @@ if (e == null) { e = new RuntimeException("there is some problem in script"); } - } - else{ + } else { resultLog = "ok"; } } catch (IOException ex) { - Logger.getLogger(ScriptAction.class.getName()).log(Level.SEVERE, null, ex); + if(log.isErrorEnabled()) { + log.error("Error on script check", ex); + } } return resultLog; - } - public String evaluateScript(String content) { - - // FIXME disabled huge error box :) - //showMsgBox("Error.xml" + "test" + content); + } + public String evaluateScript(String content) { + log.debug("evaluateScript called"); String msg = ""; try { @@ -435,28 +500,33 @@ Class clazz = javaCode.getCodeClass(); Method main = clazz.getMethod("main", String[].class); //noinspection RedundantArrayCreation - main.invoke(null, new Object[]{new String[]{}}); + main.invoke(null, new Object[] { new String[] {} }); System.setOut(oldOut); System.setErr(oldErr); msg = result.toString(); } catch (Exception ex) { - Logger.getLogger(ScriptAction.class.getName()).log(Level.SEVERE, null, ex); + if(log.isErrorEnabled()) { + log.error("Error on script evaluation", ex); + } } return msg; } - public String importScript(){ - String msg = null; - log.debug("importScript "); - // TODO : a reimplanter - try { - msg = _("isisfish.message.import.scripts.file.cancelled"); - } catch (Exception eee) { - returnError(_("isisfish.error.script.import", eee.getMessage()), eee); - } - return msg; - } - public String deleteScript(int resp, boolean remote) { - String msg = ""; + + public String importScript() { + String msg = null; + log.debug("importScript "); + // TODO : a reimplanter + try { + msg = _("isisfish.message.import.scripts.file.cancelled"); + } catch (Exception eee) { + returnError(_("isisfish.error.script.import", eee.getMessage()), + eee); + } + return msg; + } + + public String deleteScript(int resp, boolean remote) { + String msg = ""; log.debug("deleteScript called"); try { @@ -468,29 +538,33 @@ code.delete(remote); if (code.getFile().exists()) { - RuntimeException exception = new RuntimeException("file could not be deleted"); - returnError(_("isisfish.error.script.delete",code.getFile(), exception.getMessage()), exception); + RuntimeException exception = new RuntimeException( + "file could not be deleted"); + returnError(_("isisfish.error.script.delete", code + .getFile(), exception.getMessage()), exception); } msg = _("isisfish.message.delete.finished"); } else { msg = _("isisfish.message.delete.canceled"); } } catch (Exception eee) { - returnError(_("isisfish.error.script.delete",code==null?null:code.getFile(), eee.getMessage()),eee); + returnError(_("isisfish.error.script.delete", code == null ? null + : code.getFile(), eee.getMessage()), eee); } return msg; } - public String diffScript(String content) { + public String diffScript(String content) { log.debug("commitScript called"); -// TODO a refaire + // TODO a refaire throw new UnsupportedOperationException("En reparation"); } - /** enum to encapsulate a script module */ + /** enum to encapsulate a script module */ enum ScriptMapping { - Script(ScriptStorage.getScriptDirectory(), + Script( + ScriptStorage.getScriptDirectory(), /** * 0 = package name, * 1 = class name, @@ -498,37 +572,38 @@ * 3 = author name, * 4 = author email */ - "package scripts{0};\n" + - "\n" + - "import org.apache.commons.logging.Log;\n" + - "import org.apache.commons.logging.LogFactory;\n" + - "\n" + - "import fr.ifremer.isisfish.util.Doc;\n" + - "\n" + - "import org.codelutin.math.matrix.*;\n" + - "\n" + - "import fr.ifremer.isisfish.entities.*;\n" + - "\n" + - "/**\n" + - " * {0}.{1}.java\n" + - " *\n" + - " * Created: {2,date, long}\n" + - " *\n" + - " * @author {3} <{4}>\n" + + "package scripts{0};\n" + + "\n" + + "import org.apache.commons.logging.Log;\n" + + "import org.apache.commons.logging.LogFactory;\n" + + "\n" + + "import fr.ifremer.isisfish.util.Doc;\n" + + "\n" + + "import org.codelutin.math.matrix.*;\n" + + "\n" + + "import fr.ifremer.isisfish.entities.*;\n" + + "\n" + + "/**\n" + + " * {1}.java\n" + + " *\n" + + " * Created: {2,date, long}\n" + + " *\n" + + " * @author {3} <{4}>\n" + + //" * @version $Revision: 1545 $\n" + - " *\n" + + " *\n" + + //" * Last update: $Date: 2008-10-08 16:13:44 +0200 (mer 08 oct 2008) $\n" + //" * by : $Author: sletellier $\n" + - " */\n" + - "public class {1} '{'\n" + - "\n" + - " /** to use log facility, just put in your code: log.info(\"...\"); */\n" + - " static private Log log = LogFactory.getLog({1}.class);\n" + - "\n" + - " // add your method here\n" + - "'}'\n"), + " */\n" + + "public class {1} '{'\n" + + "\n" + + " /** to use log facility, just put in your code: log.info(\"...\"); */\n" + + " static private Log log = LogFactory.getLog({1}.class);\n" + + "\n" + " // add your method here\n" + "'}'\n"), - Simulator(SimulatorStorage.getSimulatorDirectory(), + Simulator( + SimulatorStorage.getSimulatorDirectory(), /** * 0 = package name, * 1 = class name, @@ -536,40 +611,40 @@ * 3 = author name, * 4 = author email */ - "package simulators{0};\n" + - "\n" + - "import org.apache.commons.logging.Log;\n" + - "import org.apache.commons.logging.LogFactory;\n" + - "\n" + - "import org.codelutin.math.matrix.*;\n" + - "\n" + - "import fr.ifremer.isisfish.util.Doc;\n" + - "import fr.ifremer.isisfish.entities.*;\n" + - "import fr.ifremer.isisfish.simulator.Simulator;\n" + - "import fr.ifremer.isisfish.simulator.SimulationContext;\n" + - "\n" + - "/**\n" + - " * {1}.java\n" + - " *\n" + - " * Created: {2,date, long}\n" + - " *\n" + - " * @author {3} <{4}>\n" + + "package simulators{0};\n" + + "\n" + + "import org.apache.commons.logging.Log;\n" + + "import org.apache.commons.logging.LogFactory;\n" + + "\n" + + "import org.codelutin.math.matrix.*;\n" + + "\n" + + "import fr.ifremer.isisfish.util.Doc;\n" + + "import fr.ifremer.isisfish.entities.*;\n" + + "import fr.ifremer.isisfish.simulator.Simulator;\n" + + "import fr.ifremer.isisfish.simulator.SimulationContext;\n" + + "\n" + + "/**\n" + + " * {1}.java\n" + + " *\n" + + " * Created: {2,date, long}\n" + + " *\n" + + " * @author {3} <{4}>\n" + + //" * @version $Revision: 1545 $\n" + - " *\n" + + " *\n" + + //" * Last update$\n" + //" * by : $Author: sletellier $\n" + - " */\n" + - "public class {1} implements Simulator '{'\n" + - "\n" + - " /** to use log facility, just put in your code: log.info(\"...\"); */\n" + - " static private Log log = LogFactory.getLog({1}.class);\n" + - "\n" + - " public void simulate(SimulationContext context) throws Exception '{'\n" + - " // put your code here\n" + - " '}'\n" + - "\n" + - "'}'\n"), - Export(ExportStorage.getExportDirectory(), + " */\n" + + "public class {1} implements Simulator '{'\n" + + "\n" + + " /** to use log facility, just put in your code: log.info(\"...\"); */\n" + + " static private Log log = LogFactory.getLog({1}.class);\n" + + "\n" + + " public void simulate(SimulationContext context) throws Exception '{'\n" + + " // put your code here\n" + " '}'\n" + + "\n" + "'}'\n"), Export( + ExportStorage.getExportDirectory(), /** * 0 = package name, * 1 = class name, @@ -577,69 +652,70 @@ * 3 = author name, * 4 = author email */ - "package exports{0};\n" + - "\n" + - "import org.apache.commons.logging.Log;\n" + - "import org.apache.commons.logging.LogFactory;\n" + - "\n" + - "import java.io.Writer;\n" + - "\n" + + "package exports{0};\n" + + "\n" + + "import org.apache.commons.logging.Log;\n" + + "import org.apache.commons.logging.LogFactory;\n" + + "\n" + + "import java.io.Writer;\n" + + "\n" + + - "import static org.codelutin.i18n.I18n._;\n" + - "import org.codelutin.math.matrix.*;\n" + - "\n" + - "import fr.ifremer.isisfish.util.Doc;\n" + - "import fr.ifremer.isisfish.entities.*;\n" + - "import fr.ifremer.isisfish.export.Export;\n" + - "import fr.ifremer.isisfish.datastore.SimulationStorage;\n" + - "import fr.ifremer.isisfish.datastore.ResultStorage;\n" + - "\n" + - "/**\n" + - " * {1}.java\n" + - " *\n" + - " * Created: {2,date, long}\n" + - " *\n" + - " * @author {3} <{4}>\n" + + "import static org.codelutin.i18n.I18n._;\n" + + "import org.codelutin.math.matrix.*;\n" + + "\n" + + "import fr.ifremer.isisfish.util.Doc;\n" + + "import fr.ifremer.isisfish.entities.*;\n" + + "import fr.ifremer.isisfish.export.Export;\n" + + "import fr.ifremer.isisfish.datastore.SimulationStorage;\n" + + "import fr.ifremer.isisfish.datastore.ResultStorage;\n" + + "\n" + + "/**\n" + + " * {1}.java\n" + + " *\n" + + " * Created: {2,date, long}\n" + + " *\n" + + " * @author {3} <{4}>\n" + + //" * @version $Revision: 1545 $\n" + - " *\n" + + " *\n" + + //" * Last update: $Date: 2008-10-08 16:13:44 +0200 (mer 08 oct 2008) $\n" + //" * by : $Author: sletellier $\n" + - " */\n" + - "public class {1} implements Export '{'\n" + - "\n" + - " /** to use log facility, just put in your code: log.info(\"...\"); */\n" + - " static private Log log = LogFactory.getLog({1}.class);\n" + - "\n" + - " public String [] necessaryResult = '{'\n" + - " // put here all necessary result for this rule\n" + - " // example: \n" + - " // ResultName.MATRIX_BIOMASS,\n" + - " // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,\n" + - " '}';\n" + - "\n" + - " public String[] getNecessaryResult() '{'\n" + - " return this.necessaryResult;\n" + - " '}'\n" + - "\n" + - " public String getExportFilename() '{'\n" + - " // remove _(...) if you don''t want translation on filename\n" + - " return _(\"{0}\");\n" + - " '}'\n" + - "\n" + - " public String getExtensionFilename() '{'\n" + - " return \".csv\";\n" + - " '}'\n" + - "\n" + - " public String getDescription() '{'\n" + - " return _(\"TODO export description\");\n" + - " '}'\n" + - "\n" + - " public void export(SimulationStorage simulation, Writer out) throws Exception '{'\n" + - " // put your code here, and write export with: out.write(\"...\")\n" + - " '}'\n" + - "\n" + - "'}'\n"), - Rule(RuleStorage.getRuleDirectory(), + " */\n" + + "public class {1} implements Export '{'\n" + + "\n" + + " /** to use log facility, just put in your code: log.info(\"...\"); */\n" + + " static private Log log = LogFactory.getLog({1}.class);\n" + + "\n" + + " public String [] necessaryResult = '{'\n" + + " // put here all necessary result for this rule\n" + + " // example: \n" + + " // ResultName.MATRIX_BIOMASS,\n" + + " // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,\n" + + " '}';\n" + + "\n" + + " public String[] getNecessaryResult() '{'\n" + + " return this.necessaryResult;\n" + + " '}'\n" + + "\n" + + " public String getExportFilename() '{'\n" + + " // remove _(...) if you don''t want translation on filename\n" + + " return _(\"{0}\");\n" + + " '}'\n" + + "\n" + + " public String getExtensionFilename() '{'\n" + + " return \".csv\";\n" + + " '}'\n" + + "\n" + + " public String getDescription() '{'\n" + + " return _(\"TODO export description\");\n" + + " '}'\n" + + "\n" + + " public void export(SimulationStorage simulation, Writer out) throws Exception '{'\n" + + " // put your code here, and write export with: out.write(\"...\")\n" + + " '}'\n" + "\n" + "'}'\n"), Rule( + RuleStorage.getRuleDirectory(), /** * 0 = package name, * 1 = class name, @@ -648,101 +724,100 @@ * 4 = author email, * 5 = region name */ - "package rules{0};\n" + - "\n" + - "import static org.codelutin.i18n.I18n._;\n" + - "\n" + - "import org.apache.commons.logging.Log;\n" + - "import org.apache.commons.logging.LogFactory;\n" + - "\n" + - "import scripts.ResultName;\n" + - "\n" + - "import java.io.Writer;\n" + - "\n" + - "import org.codelutin.math.matrix.*;\n" + - "\n" + - "import fr.ifremer.isisfish.util.Doc;\n" + - "import fr.ifremer.isisfish.simulator.SimulationContext;\n" + - "import fr.ifremer.isisfish.types.Date;\n" + - "import fr.ifremer.isisfish.entities.*;\n" + - "import fr.ifremer.isisfish.rule.AbstractRule;\n" + - "import fr.ifremer.isisfish.datastore.SimulationStorage;\n" + - "import fr.ifremer.isisfish.datastore.ResultStorage;\n" + - "\n" + - "/**\n" + - " * {1}.java\n" + - " *\n" + - " * Created: {2,date, long}\n" + - " *\n" + - " * @author {3} <{4}>\n" + + "package rules{0};\n" + + "\n" + + "import static org.codelutin.i18n.I18n._;\n" + + "\n" + + "import org.apache.commons.logging.Log;\n" + + "import org.apache.commons.logging.LogFactory;\n" + + "\n" + + "import scripts.ResultName;\n" + + "\n" + + "import java.io.Writer;\n" + + "\n" + + "import org.codelutin.math.matrix.*;\n" + + "\n" + + "import fr.ifremer.isisfish.util.Doc;\n" + + "import fr.ifremer.isisfish.simulator.SimulationContext;\n" + + "import fr.ifremer.isisfish.types.Date;\n" + + "import fr.ifremer.isisfish.entities.*;\n" + + "import fr.ifremer.isisfish.rule.AbstractRule;\n" + + "import fr.ifremer.isisfish.datastore.SimulationStorage;\n" + + "import fr.ifremer.isisfish.datastore.ResultStorage;\n" + + "\n" + + "/**\n" + + " * {1}.java\n" + + " *\n" + + " * Created: {2,date, long}\n" + + " *\n" + + " * @author {3} <{4}>\n" + + //" * @version $Revision: 1545 $\n" + - " *\n" + + " *\n" + + //" * Last update: $Date: 2008-10-08 16:13:44 +0200 (mer 08 oct 2008) $\n" + //" * by : $Author: sletellier $\n" + - " */\n" + - "public class {1} extends AbstractRule '{'\n" + - "\n" + - " /** to use log facility, just put in your code: log.info(\"...\"); */\n" + - " static private Log log = LogFactory.getLog({1}.class);\n" + - "\n" + - " public String [] necessaryResult = '{'\n" + - " // put here all necessary result for this rule\n" + - " // example: \n" + - " // ResultName.MATRIX_BIOMASS,\n" + - " // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,\n" + - " '}';\n" + - "\n" + - " public String[] getNecessaryResult() '{'\n" + - " return this.necessaryResult;\n" + - " '}'\n" + - "\n" + - " /**\n" + - " * Permet d''afficher a l''utilisateur une aide sur la regle.\n" + - " * @return L''aide ou la description de la regle\n" + - " */\n" + - " public String getDescription() throws Exception '{'\n" + - " // TODO\n" + - " return _(\"TODO description rule\");\n" + - " '}'\n" + - " \n" + - " /**\n" + - " * Appelé au démarrage de la simulation, cette méthode permet d''initialiser\n" + - " * des valeurs\n" + - " * @param simulation La simulation pour lequel on utilise cette regle\n" + - " */\n" + - " public void init(SimulationContext context) throws Exception '{'\n" + - " // TODO\n" + - " '}'\n" + - " /**\n" + - " * La condition qui doit etre vrai pour faire les actions\n" + - " * @param simulation La simulation pour lequel on utilise cette regle\n" + - " * @return vrai si on souhaite que les actions soit faites\n" + - " */\n" + - " public boolean condition(SimulationContext context, Date date, Metier metier) throws Exception '{'\n" + - " // TODO\n" + - " return false;\n" + - " '}'\n" + - " \n" + - " /**\n" + - " * Si la condition est vrai alors cette action est executée avant le pas\n" + - " * de temps de la simulation.\n" + - " * @param simulation La simulation pour lequel on utilise cette regle\n" + - " */\n" + - " public void preAction(SimulationContext context, Date date, Metier metier) throws Exception '{'\n" + - " // TODO\n" + - " '}'\n" + - " \n" + - " /**\n" + - " * Si la condition est vrai alors cette action est executée apres le pas\n" + - " * de temps de la simulation.\n" + - " * @param simulation La simulation pour lequel on utilise cette regle\n" + - " */\n" + - " public void postAction(SimulationContext context, Date date, Metier metier) throws Exception '{'\n" + - " // TODO\n" + - " '}'\n" + - "\n" + - "'}'\n"), - AnalysePlan(AnalysePlanStorage.getAnalysePlanDirectory(), + " */\n" + + "public class {1} extends AbstractRule '{'\n" + + "\n" + + " /** to use log facility, just put in your code: log.info(\"...\"); */\n" + + " static private Log log = LogFactory.getLog({1}.class);\n" + + "\n" + + " public String [] necessaryResult = '{'\n" + + " // put here all necessary result for this rule\n" + + " // example: \n" + + " // ResultName.MATRIX_BIOMASS,\n" + + " // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,\n" + + " '}';\n" + + "\n" + + " public String[] getNecessaryResult() '{'\n" + + " return this.necessaryResult;\n" + + " '}'\n" + + "\n" + + " /**\n" + + " * Permet d''afficher a l''utilisateur une aide sur la regle.\n" + + " * @return L''aide ou la description de la regle\n" + + " */\n" + + " public String getDescription() throws Exception '{'\n" + + " // TODO\n" + + " return _(\"TODO description rule\");\n" + + " '}'\n" + + " \n" + + " /**\n" + + " * Appelé au démarrage de la simulation, cette méthode permet d''initialiser\n" + + " * des valeurs\n" + + " * @param simulation La simulation pour lequel on utilise cette regle\n" + + " */\n" + + " public void init(SimulationContext context) throws Exception '{'\n" + + " // TODO\n" + + " '}'\n" + + " /**\n" + + " * La condition qui doit etre vrai pour faire les actions\n" + + " * @param simulation La simulation pour lequel on utilise cette regle\n" + + " * @return vrai si on souhaite que les actions soit faites\n" + + " */\n" + + " public boolean condition(SimulationContext context, Date date, Metier metier) throws Exception '{'\n" + + " // TODO\n" + + " return false;\n" + + " '}'\n" + + " \n" + + " /**\n" + + " * Si la condition est vrai alors cette action est executée avant le pas\n" + + " * de temps de la simulation.\n" + + " * @param simulation La simulation pour lequel on utilise cette regle\n" + + " */\n" + + " public void preAction(SimulationContext context, Date date, Metier metier) throws Exception '{'\n" + + " // TODO\n" + + " '}'\n" + + " \n" + + " /**\n" + + " * Si la condition est vrai alors cette action est executée apres le pas\n" + + " * de temps de la simulation.\n" + + " * @param simulation La simulation pour lequel on utilise cette regle\n" + + " */\n" + + " public void postAction(SimulationContext context, Date date, Metier metier) throws Exception '{'\n" + + " // TODO\n" + " '}'\n" + "\n" + "'}'\n"), AnalysePlan( + AnalysePlanStorage.getAnalysePlanDirectory(), /** * 0 = package name, * 1 = class name, @@ -751,111 +826,105 @@ * 4 = author email, * 5 = region name */ - "package analyseplans{0};\n" + - "\n" + - "import static org.codelutin.i18n.I18n._;\n" + - "\n" + - "import org.apache.commons.logging.Log;\n" + - "import org.apache.commons.logging.LogFactory;\n" + - "\n" + - "import scripts.ResultName;\n" + - "\n" + - "import java.io.Writer;\n" + - "\n" + - "import org.codelutin.math.matrix.*;\n" + - "import org.codelutin.util.*;\n" + - "import org.codelutin.topia.*;\n" + - "\n" + - "import fr.ifremer.isisfish.util.Doc;\n" + - "import fr.ifremer.isisfish.*;\n" + - "import fr.ifremer.isisfish.simulator.SimulationContext;\n" + - "import fr.ifremer.isisfish.types.Date;\n" + - "import fr.ifremer.isisfish.entities.*;\n" + - "import fr.ifremer.isisfish.simulator.AnalysePlan;\n" + - "import fr.ifremer.isisfish.simulator.AnalysePlanContext;\n" + - "import fr.ifremer.isisfish.simulator.SimulationParameter;\n" + - "import fr.ifremer.isisfish.datastore.SimulationStorage;\n" + - "import fr.ifremer.isisfish.datastore.ResultStorage;\n" + - "\n" + - "/**\n" + - " * {1}.java\n" + - " *\n" + - " * Created: {2,date, long}\n" + - " *\n" + - " * @author {3} <{4}>\n" + + "package analyseplans{0};\n" + + "\n" + + "import static org.codelutin.i18n.I18n._;\n" + + "\n" + + "import org.apache.commons.logging.Log;\n" + + "import org.apache.commons.logging.LogFactory;\n" + + "\n" + + "import scripts.ResultName;\n" + + "\n" + + "import java.io.Writer;\n" + + "\n" + + "import org.codelutin.math.matrix.*;\n" + + "import org.codelutin.util.*;\n" + + "import org.codelutin.topia.*;\n" + + "\n" + + "import fr.ifremer.isisfish.util.Doc;\n" + + "import fr.ifremer.isisfish.*;\n" + + "import fr.ifremer.isisfish.simulator.SimulationContext;\n" + + "import fr.ifremer.isisfish.types.Date;\n" + + "import fr.ifremer.isisfish.entities.*;\n" + + "import fr.ifremer.isisfish.simulator.AnalysePlan;\n" + + "import fr.ifremer.isisfish.simulator.AnalysePlanContext;\n" + + "import fr.ifremer.isisfish.simulator.SimulationParameter;\n" + + "import fr.ifremer.isisfish.datastore.SimulationStorage;\n" + + "import fr.ifremer.isisfish.datastore.ResultStorage;\n" + + "\n" + + "/**\n" + + " * {1}.java\n" + + " *\n" + + " * Created: {2,date, long}\n" + + " *\n" + + " * @author {3} <{4}>\n" + + //" * @version $Revision: 1545 $\n" + - " *\n" + + " *\n" + + //" * Last update: $Date: 2008-10-08 16:13:44 +0200 (mer 08 oct 2008) $\n" + //" * by : $Author: sletellier $\n" + - " */\n" + - "public class {1} implements AnalysePlan '{'\n" + - "\n" + - " /** to use log facility, just put in your code: log.info(\"...\"); */\n" + - " static private Log log = LogFactory.getLog({1}.class);\n" + - "\n" + - " public String [] necessaryResult = '{'\n" + - " // put here all necessary result for this rule\n" + - " // example: \n" + - " // ResultName.MATRIX_BIOMASS,\n" + - " // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,\n" + - " '}';\n" + - "\n" + - " public String[] getNecessaryResult() '{'\n" + - " return this.necessaryResult;\n" + - " '}'\n" + - "\n" + - " /**\n" + - " * Permet d''afficher a l''utilisateur une aide sur le plan.\n" + - " * @return L''aide ou la description du plan\n" + - " */\n" + - " public String getDescription() throws Exception '{'\n" + - " // TODO\n" + - " return _(\"TODO description plan\");\n" + - " '}'\n" + - " \n" + - " /**\n" + - " * Appelé au démarrage de la simulation, cette méthode permet d''initialiser\n" + - " * des valeurs\n" + - " * @param simulation La simulation pour lequel on utilise cette regle\n" + - " */\n" + - " public void init(AnalysePlanContext context) throws Exception '{'\n" + - " // TODO\n" + - " '}'\n" + - " \n" + - " /**\n" + - " * Call before each simulation\n" + - " * @param context plan context\n" + - " * @param nextSimulation storage used for next simulation\n" + - " * @return true if we must do next simulation, false to stop plan\n" + - " * @throws Exception\n" + - " */\n" + - " public boolean next(AnalysePlanContext context, SimulationStorage nextSimulation) throws Exception '{'\n" + - " return false; // TODO\n" + - " '}'\n" + - "\n" + - "'}'\n"), - EquationModel(FormuleStorage.getFormuleDirectory(), - /** - * 0 = package name, - * 1 = class name, - * 2 = current date, - * 3 = author name, - * 4 = author email - */ - "/**\n" + - " * {1}.java\n" + - " *\n" + - " * Created: {2,date, long}\n" + - " *\n" + - " * @author {3} <{4}>\n" + - //" * @version $Revision: 1545 $\n" + - " *\n" + - //" * Last update: $7 $\n" + - //" * by : $Author: sletellier $\n" + - //" */\n" + - "\n" + - "// put your code here\n" + - "\n"); + " */\n" + + "public class {1} implements AnalysePlan '{'\n" + + "\n" + + " /** to use log facility, just put in your code: log.info(\"...\"); */\n" + + " static private Log log = LogFactory.getLog({1}.class);\n" + + "\n" + + " public String [] necessaryResult = '{'\n" + + " // put here all necessary result for this rule\n" + + " // example: \n" + + " // ResultName.MATRIX_BIOMASS,\n" + + " // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,\n" + + " '}';\n" + + "\n" + + " public String[] getNecessaryResult() '{'\n" + + " return this.necessaryResult;\n" + + " '}'\n" + + "\n" + + " /**\n" + + " * Permet d''afficher a l''utilisateur une aide sur le plan.\n" + + " * @return L''aide ou la description du plan\n" + + " */\n" + + " public String getDescription() throws Exception '{'\n" + + " // TODO\n" + + " return _(\"TODO description plan\");\n" + + " '}'\n" + + " \n" + + " /**\n" + + " * Appelé au démarrage de la simulation, cette méthode permet d''initialiser\n" + + " * des valeurs\n" + + " * @param simulation La simulation pour lequel on utilise cette regle\n" + + " */\n" + + " public void init(AnalysePlanContext context) throws Exception '{'\n" + + " // TODO\n" + + " '}'\n" + + " \n" + + " /**\n" + + " * Call before each simulation\n" + + " * @param context plan context\n" + + " * @param nextSimulation storage used for next simulation\n" + + " * @return true if we must do next simulation, false to stop plan\n" + + " * @throws Exception\n" + + " */\n" + + " public boolean next(AnalysePlanContext context, SimulationStorage nextSimulation) throws Exception '{'\n" + + " return false; // TODO\n" + " '}'\n" + + "\n" + "'}'\n"), EquationModel(FormuleStorage + .getFormuleDirectory(), + /** + * 0 = package name, + * 1 = class name, + * 2 = current date, + * 3 = author name, + * 4 = author email + */ + "/**\n" + " * {1}.java\n" + " *\n" + " * Created: {2,date, long}\n" + + " *\n" + " * @author {3} <{4}>\n" + + //" * @version $Revision: 1545 $\n" + + " *\n" + + //" * Last update: $7 $\n" + + //" * by : $Author: sletellier $\n" + + //" */\n" + + "\n" + "// put your code here\n" + "\n"); private File module; private String defaultContent; @@ -864,7 +933,7 @@ this.module = module; this.defaultContent = defaultContent; } - + File getModule() { return module; } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2008-12-19 15:52:49 UTC (rev 1706) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2008-12-19 16:14:28 UTC (rev 1707) @@ -33,6 +33,7 @@ <JPanel id="script" layout='{new BorderLayout()}'> <script><![CDATA[ + import static org.codelutin.i18n.I18n._; import jaxx.runtime.swing.Item; import javax.swing.event.TreeSelectionListener; import jaxx.runtime.swing.JAXXTree; @@ -41,8 +42,8 @@ import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeNode; - import static org.codelutin.i18n.I18n._; import fr.ifremer.isisfish.ui.WelcomePanelUI; + import fr.ifremer.isisfish.IsisFishRuntimeException; setContextValue(new ScriptAction()); setButton(); @@ -143,16 +144,18 @@ boolean isJavaScript = getContextValue(ScriptAction.class).isJavaScript(); buttonScriptExport.setEnabled(tree.getSelectionValue() != null); miExport.setEnabled(tree.getSelectionValue() != null); -// buttonScriptCommit -// buttonScriptUpdate + buttonScriptCommit.setEnabled(fileLoaded); + miCommitVCS.setEnabled(fileLoaded); + //buttonScriptUpdate.setEnabled(fileLoaded); buttonScriptSave.setEnabled(fileLoaded); miSave.setEnabled(fileLoaded); - buttonScriptCut.setEnabled(fileLoaded); - miCut.setEnabled(fileLoaded); - buttonScriptCopy.setEnabled(fileLoaded); - miCopy.setEnabled(fileLoaded); - buttonScriptPaste.setEnabled(fileLoaded); - miPaste.setEnabled(fileLoaded); + // FIXME use jaxx binding + //buttonScriptCut.setEnabled(fileLoaded); + //miCut.setEnabled(fileLoaded); + //buttonScriptCopy.setEnabled(fileLoaded); + //miCopy.setEnabled(fileLoaded); + //buttonScriptPaste.setEnabled(fileLoaded); + //miPaste.setEnabled(fileLoaded); buttonScriptCheck.setEnabled(isJavaScript); miCheckSyntax.setEnabled(isJavaScript); buttonScriptEval.setEnabled(isJavaScript); @@ -210,12 +213,16 @@ setInfoText(_("isisfish.message.save.finished")); } protected void exportScript(){ + new IsisFishRuntimeException("Not yet implemented"); getContextValue(ScriptAction.class).exportScript(tree.getSelectionPaths()); } protected void commitScript(){ - setInfoText(_(getContextValue(ScriptAction.class).commitScript(editor.getText()))); + new IsisFishRuntimeException("Not yet implemented"); + getContextValue(ScriptAction.class).commitScript(editor.getText()); + setInfoText(_("isisfish.message.commit.finished")); } protected void updateScript(){ + new IsisFishRuntimeException("Not yet implemented"); getContextValue(ScriptAction.class).updateScript(); setInfoText(_("isisfish.message.update.finished")); } @@ -237,7 +244,8 @@ setInfoText(getContextValue(ScriptAction.class).importScript()); } protected void deleteScript(boolean b){ - int resp = JOptionPane.showConfirmDialog(this,_("isisfish.message.confirm.remove.script" , getContextValue(ScriptAction.class).getCode().getName())); + int resp = JOptionPane.showConfirmDialog(this,_("isisfish.message.confirm.remove.script" , + getContextValue(ScriptAction.class).getCode().getName()), null, JOptionPane.YES_NO_OPTION); setInfoText(getContextValue(ScriptAction.class).deleteScript(resp,b)); } protected void diffScript(){ @@ -272,16 +280,16 @@ <JMenuItem id="miDelete" text="isisfish.script.menu.deleteLocaly" onActionPerformed='deleteScript(false)' accelerator="accDelete"/> </JMenu> <JMenu id="scriptTxtEdit" text="isisfish.script.menu.edit"> - <JMenuItem id="miCut" text="isisfish.script.menu.cut" onActionPerformed="cut()" accelerator="accCut"/> - <JMenuItem id="miCopy" text="isisfish.script.menu.copy" onActionPerformed="copy()" accelerator="accCopy"/> - <JMenuItem id="miPaste" text="isisfish.script.menu.paste" onActionPerformed="paste()" accelerator="accPaste"/> + <JMenuItem id="miCut" text="isisfish.script.menu.cut" enabled='false' onActionPerformed="cut()" accelerator="accCut"/> + <JMenuItem id="miCopy" text="isisfish.script.menu.copy" enabled='false' onActionPerformed="copy()" accelerator="accCopy"/> + <JMenuItem id="miPaste" text="isisfish.script.menu.paste" enabled='false' onActionPerformed="paste()" accelerator="accPaste"/> </JMenu> <JMenu id="scriptTxtVCS" text="isisfish.script.menu.txtVCS"> - <JMenuItem id="miCommitVCS" text="isisfish.script.menu.commit" accelerator="accCommitVCS" onActionPerformed="commitScript()"/> - <JMenuItem id="miDiffVCS" text="isisfish.script.menu.diff" accelerator="mnDiffVCS" onActionPerformed="diffScript()"/> - <JMenuItem id="miUpdateVCS" text="isisfish.script.menu.update" accelerator="accUpdateVCS" onActionPerformed="updateScript()"/> + <JMenuItem id="miCommitVCS" enabled='false' text="isisfish.script.menu.commit" accelerator="accCommitVCS" onActionPerformed="commitScript()"/> + <JMenuItem id="miDiffVCS" enabled='false' text="isisfish.script.menu.diff" accelerator="mnDiffVCS" onActionPerformed="diffScript()"/> + <JMenuItem id="miUpdateVCS" enabled='false' text="isisfish.script.menu.update" accelerator="accUpdateVCS" onActionPerformed="updateScript()"/> <JSeparator/> - <JMenuItem id="miDeleteVCS" text="isisfish.script.menu.deleteLocalyServer" onActionPerformed='deleteScript(true)' accelerator="accDeleteVCS"/> + <JMenuItem id="miDeleteVCS" enabled='false' text="isisfish.script.menu.deleteLocalyServer" onActionPerformed='deleteScript(true)' accelerator="accDeleteVCS"/> </JMenu> <JMenu id="scriptTxtCode" text="isisfish.script.menu.code"> <JMenuItem id="miCheckSyntax" text="isisfish.script.menu.checkSyntax" accelerator="accCheckSyntax" onActionPerformed="checkScript()"/> Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties =================================================================== --- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2008-12-19 15:52:49 UTC (rev 1706) +++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2008-12-19 16:14:28 UTC (rev 1707) @@ -50,6 +50,7 @@ Use\ branches,\ switch\ not\ needed= User\ stop\ simulation\ %s= Your\ database\ repository\:\ %s\\n\ don't\ use\ correct= +cant\ start\ nimbus= could\ not\ close\ reader\ %1$s=could not close reader %1$s could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s could\ not\ filter\ on\ simulations=could not filter on simulations @@ -513,7 +514,7 @@ isisfish.message.compilation.time=Compilation time %1$ss isisfish.message.confirm.delete.object=Do you really want delete object %1$s isisfish.message.confirm.remove.region=Do you really want to remove the region %1$s ? -isisfish.message.confirm.remove.script=Do you want to remove script ? '%1$s' +isisfish.message.confirm.remove.script=Do you want to remove script '%1$s' ? isisfish.message.copy.finished=Copy finished isisfish.message.copy.region=Copy region to %1$s isisfish.message.creating.region=Creating region %1$s Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties =================================================================== --- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2008-12-19 15:52:49 UTC (rev 1706) +++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2008-12-19 16:14:28 UTC (rev 1707) @@ -50,6 +50,7 @@ Use\ branches,\ switch\ not\ needed= User\ stop\ simulation\ %s= Your\ database\ repository\:\ %s\\n\ don't\ use\ correct= +cant\ start\ nimbus= could\ not\ close\ reader\ %1$s=could not close reader %1$s could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s could\ not\ filter\ on\ simulations=could not filter on simulations @@ -513,7 +514,7 @@ isisfish.message.compilation.time=Temps de compilation %1$ss isisfish.message.confirm.delete.object=Voulez-vous vraiment supprimer l'objet %1$s isisfish.message.confirm.remove.region=Voulez-vous vraiement supprimer la r\u00E9gion %1$s ? -isisfish.message.confirm.remove.script=Voulez-vous vraiment supprimer le script ? '%1$s' +isisfish.message.confirm.remove.script=Voulez-vous vraiment supprimer le script '%1$s' ? isisfish.message.copy.finished=Copie termin\u00E9e isisfish.message.copy.region=Copier la r\u00E9gion vers %1$s isisfish.message.creating.region=En train de cr\u00E9er la r\u00E9gion %1$s @@ -921,11 +922,11 @@ isisfish.vcs.updateconfirm.ok=confirmer isisfish.vcs.updateconfirm.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts que vous voulez traiter isisfish.vcs.updaterepository.confirm=Votre d\u00E9p\u00F4t des scripts n'est pas \u00E0 jour.\nVoulez-vous mettre \u00E0 jour votre d\u00E9p\u00F4t ?\n\nLes fichiers modifi\u00E9s sont \:\n%s -isisfish.vcs.vcssvn.add.error=Can't add file -isisfish.vcs.vcssvn.add.errorreadonly=You can't add file, this repository is readonly -isisfish.vcs.vcssvn.checkProtocol.error=Can't get address on serveur of local repository -isisfish.vcs.vcssvn.checkProtocol.relocate=Relocate repository %s from %s to %s -isisfish.vcs.vcssvn.checkout.error=Checkout impossible +isisfish.vcs.vcssvn.add.error=Impossible d'ajouter un fichier +isisfish.vcs.vcssvn.add.errorreadonly=Vous ne pouver pas ajouter de fichier, ce d\u00E9p\u00F4t est en lecture seule \! +isisfish.vcs.vcssvn.checkProtocol.error=Impossible d'obtenir l'adresse correspondant au d\u00E9p\u00F4t local +isisfish.vcs.vcssvn.checkProtocol.relocate=Transfert du d\u00E9p\u00F4t %s de %s vers %s +isisfish.vcs.vcssvn.checkout.error=Impossible de mettre \u00E0 jour isisfish.vcs.vcssvn.commit.error=Impossible de commiter isisfish.vcs.vcssvn.commit.errorreadonly=Vous ne pouvez pas commiter, le d\u00E9p\u00F4t est en lecture seule isisfish.vcs.vcssvn.delete.error=Impossible de supprimer des fichiers