Author: chatellier Date: 2011-06-17 08:39:59 +0000 (Fri, 17 Jun 2011) New Revision: 3417 Log: Fix la compilation des sources community qui dependent de sources officiel. Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 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 2011-06-16 16:43:54 UTC (rev 3416) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2011-06-17 08:39:59 UTC (rev 3417) @@ -166,11 +166,23 @@ * @throws IOException */ public void setContent(String content) throws IOException { + setContent(content, true); + } + + /** + * Set file content. + * + * @param content new content + * @param saveToFile if {@code true} also save content to file + * @throws IOException + */ + public void setContent(String content, boolean saveToFile) throws IOException { this.content = content; - // FIXME hard coded encoding ? - FileUtil.writeString(getFile(), content, "utf-8"); - lastContentUpdate = System.nanoTime(); - lastContentLength = getFile().length(); + if (saveToFile) { + FileUtil.writeString(getFile(), content, "utf-8"); + lastContentUpdate = System.nanoTime(); + lastContentLength = getFile().length(); + } } /** Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2011-06-16 16:43:54 UTC (rev 3416) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2011-06-17 08:39:59 UTC (rev 3417) @@ -119,7 +119,7 @@ * @return context cache key */ protected static String getCommunityDatabaseCacheKey(String key) { - String result = getContextDatabaseDirectory().getAbsolutePath() + key; + String result = getCommunityDatabaseDirectory().getAbsolutePath() + key; return result; } 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 2011-06-16 16:43:54 UTC (rev 3416) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2011-06-17 08:39:59 UTC (rev 3417) @@ -509,12 +509,12 @@ } try { - //String content = scriptUI.getEditor().getText(); - //codeStorage.setContent(content); // setContent() or scriptUI.getEditor().save() // if setContent() only editor ask for t saving scriptUI.getEditor().save(); - + String content = scriptUI.getEditor().getText(); + codeStorage.setContent(content, false); + // notify tree to refresh ScriptTreeModel model = scriptUI.getScriptTreeModel(); model.fileModified(codeStorage.getFile()); @@ -686,49 +686,43 @@ public boolean checkScript() { boolean check = false; - String content = scriptUI.getEditor().getText(); // can't compile formule if (codeStorage instanceof FormuleStorage) { return false; } + if (log.isDebugEnabled()) { + log.debug("checkScript called"); + } + // save script before compile + saveScript(); + + JavaSourceStorage javaCode = (JavaSourceStorage) codeStorage; + StringWriter result = new StringWriter(); + PrintWriter out = new PrintWriter(result); try { - if (log.isDebugEnabled()) { - log.debug("checkScript called"); - } - // save script before commit - codeStorage.setContent(content); - JavaSourceStorage javaCode = (JavaSourceStorage) codeStorage; - StringWriter result = new StringWriter(); - PrintWriter out = new PrintWriter(result); - try { - int compileResult = javaCode.compile(false, out); + int compileResult = javaCode.compile(false, out); - if (compileResult == 0) { - check = true; - } - } catch (Exception eee) { - eee.printStackTrace(out); + if (compileResult == 0) { + check = true; } - out.flush(); + } catch (Exception eee) { + eee.printStackTrace(out); + } + out.flush(); - if (check) { - scriptUI.getActionLogArea().setText( - _("isisfish.script.compilation.ok", result.toString())); - scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS); - } else { - scriptUI.getActionLogArea().setText( - _("isisfish.script.compilation.failed", result - .toString())); - scriptUI.getActionLogArea().setBackground(COLOR_FAILURE); - } - - } catch (IOException ex) { - if (log.isErrorEnabled()) { - log.error("Error on script check", ex); - } + if (check) { + scriptUI.getActionLogArea().setText( + _("isisfish.script.compilation.ok", result.toString())); + scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS); + } else { + scriptUI.getActionLogArea().setText( + _("isisfish.script.compilation.failed", result + .toString())); + scriptUI.getActionLogArea().setBackground(COLOR_FAILURE); } + setStatusMessage(_("isisfish.message.check.finished")); return check; } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2011-06-16 16:43:54 UTC (rev 3416) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2011-06-17 08:39:59 UTC (rev 3417) @@ -139,8 +139,7 @@ boolean force, PrintWriter out) { File src = source.getFile(); File dst = new File(destDir, source.getFQN().replace('.', - File.separatorChar) - + ".class"); + File.separatorChar) + ".class"); if (force || FileUtil.isNewer(src, dst)) { return compile(source.getRoot(), src, destDir, out); } @@ -187,7 +186,14 @@ int result = -10000; try { List<File> classpath = new ArrayList<File>(); + classpath.add(rootSrc.getAbsoluteFile()); + // FIXME echatellier 20110617 : hack depuis qu'il y a un + // nouveau dossier de sources de script "communauté", mais + // qui peu dépendre de sources du dossier "officiel" + if (rootSrc.equals(IsisFish.config.getCommunityDatabaseDirectory())) { + classpath.add(IsisFish.config.getDatabaseDirectory()); + } result = compile(classpath, src, dest, out); } catch (Exception eee) {