|
From: <de...@us...> - 2009-10-14 21:52:13
|
Revision: 5263
http://fudaa.svn.sourceforge.net/fudaa/?rev=5263&view=rev
Author: deniger
Date: 2009-10-14 21:52:02 +0000 (Wed, 14 Oct 2009)
Log Message:
-----------
Added Paths:
-----------
trunk/framework/fudaa-dico/
trunk/framework/fudaa-dico/pom.xml
trunk/framework/fudaa-dico/server/
trunk/framework/fudaa-dico/server/.settings/
trunk/framework/fudaa-dico/server/.settings/org.eclipse.core.resources.prefs
trunk/framework/fudaa-dico/server/.settings/org.eclipse.jdt.core.prefs
trunk/framework/fudaa-dico/server/pom.xml
trunk/framework/fudaa-dico/server/src/
trunk/framework/fudaa-dico/server/src/main/
trunk/framework/fudaa-dico/server/src/main/java/
trunk/framework/fudaa-dico/server/src/main/java/org/
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoAbstract.java.tpl
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoAnalyzer.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormat.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatAbstract.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatDefault.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatVersion.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatVersionAbstract.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasInterface.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasReader.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasResult.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasWriter.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoComponentVisitor.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoComportValues.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoDataType.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoDataTypeGenerate.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoDynamiqueGenerator.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoEntite.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoEntiteComparator.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoEntiteFileState.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoEntiteGenerate.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoEntiteList.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoExec.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoFactory.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoGenerator.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoKeyword.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoLanguage.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoManager.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoModelAbstract.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoModelAbstractDyn.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoParams.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoParamsChangeState.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoParamsChangeStateInterface.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoParamsChangeStateListener.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoParamsInterface.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoParamsLinkedSource.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoParamsListener.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoParamsPrevalid.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoResource.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoVersionManager.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/TelemacExec.java
trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/dico_en.fr_txt
trunk/framework/fudaa-dico/server/src/main/resources/
trunk/framework/fudaa-dico/server/src/main/resources/org/
trunk/framework/fudaa-dico/server/src/main/resources/org/fudaa/
trunk/framework/fudaa-dico/server/src/main/resources/org/fudaa/dodico/
trunk/framework/fudaa-dico/server/src/main/resources/org/fudaa/dodico/dico/
trunk/framework/fudaa-dico/server/src/main/resources/org/fudaa/dodico/dico/DicoAbstract.java.tpl
trunk/framework/fudaa-dico/server/src/main/resources/org/fudaa/dodico/dico/dico_en.fr_txt
trunk/framework/fudaa-dico/server/src/site/
trunk/framework/fudaa-dico/server/src/test/
trunk/framework/fudaa-dico/server/src/test/java/
trunk/framework/fudaa-dico/src/
trunk/framework/fudaa-dico/ui/
trunk/framework/fudaa-dico/ui/.settings/
trunk/framework/fudaa-dico/ui/.settings/org.eclipse.core.resources.prefs
trunk/framework/fudaa-dico/ui/.settings/org.eclipse.jdt.core.prefs
trunk/framework/fudaa-dico/ui/pom.xml
trunk/framework/fudaa-dico/ui/src/
trunk/framework/fudaa-dico/ui/src/main/
trunk/framework/fudaa-dico/ui/src/main/java/
trunk/framework/fudaa-dico/ui/src/main/java/org/
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDIcoFiltreChooserMode.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDico.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoBooleanCellEditor.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoCalculLocalBuilder.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoCalculLocalOp.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoChooserPanel.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoComparator.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoEditorInterface.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoEntiteFileTableModelInterface.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoEntitePanel.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoEntiteTableModel.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoFilleProjet.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoFiltre.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoFiltreChooserAbstract.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoFiltreChooserListAbstract.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoFiltreChooserModified.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoFiltreChooserName.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoFiltreChooserRubrique.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoFiltreChooserSimple.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoFiltreController.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoFiltreEntiteList.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoImplementation.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoLib.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoMultiEntiteViewer.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoNewProjectPanel.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoOpenDialog.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoParams.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoPreferences.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoProjectPanel.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoProjectState.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoProjet.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoProjetInterface.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoResource.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoTableColumn.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoTableColumnIdentifier.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoTableEditorChooser.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoTableRendererChooser.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/FDicoTableSortIndicator.java
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/fdico_en.fr_txt
trunk/framework/fudaa-dico/ui/src/main/java/org/fudaa/fudaa/fdico/package.html
trunk/framework/fudaa-dico/ui/src/main/resources/
trunk/framework/fudaa-dico/ui/src/main/resources/org/
trunk/framework/fudaa-dico/ui/src/main/resources/org/fudaa/
trunk/framework/fudaa-dico/ui/src/main/resources/org/fudaa/fudaa/
trunk/framework/fudaa-dico/ui/src/main/resources/org/fudaa/fudaa/fdico/
trunk/framework/fudaa-dico/ui/src/main/resources/org/fudaa/fudaa/fdico/fdico_en.fr_txt
trunk/framework/fudaa-dico/ui/src/main/resources/org/fudaa/fudaa/fdico/package.html
trunk/framework/fudaa-dico/ui/src/site/
trunk/framework/fudaa-dico/ui/src/test/
trunk/framework/fudaa-dico/ui/src/test/java/
Added: trunk/framework/fudaa-dico/pom.xml
===================================================================
--- trunk/framework/fudaa-dico/pom.xml (rev 0)
+++ trunk/framework/fudaa-dico/pom.xml 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </parent>
+ <groupId>org.fudaa.framework.dico</groupId>
+ <artifactId>project</artifactId>
+ <name>projet Dico</name>
+ <packaging>pom</packaging>
+ <modules>
+ <module>server</module>
+ <module>ui</module>
+ </modules>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.fudaa.framework.dico</groupId>
+ <artifactId>dico-server</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.fudaa.framework.dico</groupId>
+ <artifactId>dico-ui</artifactId>
+ <version>${version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project>
Added: trunk/framework/fudaa-dico/server/.settings/org.eclipse.core.resources.prefs
===================================================================
--- trunk/framework/fudaa-dico/server/.settings/org.eclipse.core.resources.prefs (rev 0)
+++ trunk/framework/fudaa-dico/server/.settings/org.eclipse.core.resources.prefs 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,3 @@
+#Tue Jul 21 11:46:37 CEST 2009
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-15
Added: trunk/framework/fudaa-dico/server/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- trunk/framework/fudaa-dico/server/.settings/org.eclipse.jdt.core.prefs (rev 0)
+++ trunk/framework/fudaa-dico/server/.settings/org.eclipse.jdt.core.prefs 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,5 @@
+#Tue Jul 21 11:57:47 CEST 2009
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
Added: trunk/framework/fudaa-dico/server/pom.xml
===================================================================
--- trunk/framework/fudaa-dico/server/pom.xml (rev 0)
+++ trunk/framework/fudaa-dico/server/pom.xml 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.fudaa.framework.dico</groupId>
+ <artifactId>project</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </parent>
+ <groupId>org.fudaa.framework.dico</groupId>
+ <artifactId>dico-server</artifactId>
+ <name>Server Dico</name>
+ <dependencies>
+ <dependency>
+ <groupId>org.fudaa.framework.dodico</groupId>
+ <artifactId>dodico-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoAbstract.java.tpl
===================================================================
--- trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoAbstract.java.tpl (rev 0)
+++ trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoAbstract.java.tpl 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,51 @@
+/*
+ *File generated by fudaa
+ */
+
+package
+${getPackage}
+
+import org.fudaa.dodico.dico.*;
+/**
+ * @author deniger
+ */
+
+public class
+${getClassName}
+ extends DicoModelAbstract
+{
+ public
+${getClassName}
+ ()
+ {
+ super();
+ }
+ public
+${getClassName}
+(int _l)
+ {
+ super(_l);
+ }
+ public
+${getClassName}
+(String _l)
+ {
+ super(_l);
+ }
+ public final String getCodeName()
+ {
+${getCodeName}
+ }
+ public final String getVersion()
+ {
+${getVersion}
+ }
+ protected String[] createNoms()
+ {
+${createNoms}
+ }
+ protected final DicoEntite[] createEntites()
+ {
+${createEntites}
+ }
+}
\ No newline at end of file
Added: trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoAnalyzer.java
===================================================================
--- trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoAnalyzer.java (rev 0)
+++ trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoAnalyzer.java 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,802 @@
+/*
+ * @file DicoAnalyzer.java
+ * @creation 4 avr. 2003
+ * @modification $Date: 2007-11-20 11:42:57 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.dodico.dico;
+
+import gnu.trove.TObjectIntHashMap;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import com.memoire.fu.FuLog;
+
+import org.fudaa.ctulu.CtuluAnalyze;
+import org.fudaa.ctulu.CtuluLibArray;
+import org.fudaa.ctulu.CtuluLibMessage;
+import org.fudaa.ctulu.CtuluLibString;
+
+/**
+ * @author deniger
+ * @version $Id: DicoAnalyzer.java,v 1.27 2007-11-20 11:42:57 bmarchan Exp $
+ */
+public class DicoAnalyzer // extends FileOpReaderWriterSimpleAbstract
+{
+
+ /**
+ * Permet d'obtenir a partir d'un nom du type telemac3dv4p3 le nom (telemac3d) et la version (v4p3). La version doit
+ * avoir une longueur de 4.
+ *
+ * @return le nom + la version
+ * @param _s la chaine a analyser
+ */
+ public final static String[] getNameAndVersion(final String _s) {
+ return getNameAndVersion(_s, _s.length());
+ }
+
+ /**
+ * Recupere a partir du nom de fichier dico <code>_s</code> le nom et la version du code correspondant. Il est suppose
+ * que la version est codee sur 4 caractere. Par exemple pour le fichier Telemac2dv2p5, la methode renvoie
+ * [telemac2d,v5p3] (nom en minuscule et version telle quelle).
+ *
+ * @param _s la chaine a analyser
+ * @param _endIndex le dernier index de la chaine a considerer
+ * @return le nom + version
+ */
+ public final static String[] getNameAndVersion(final String _s, final int _endIndex) {
+ final int versionLength = 4;
+ if (_endIndex > (versionLength + 1)) {
+ final String[] r = new String[2];
+ r[1] = _s.substring(_endIndex - versionLength, _endIndex - versionLength + 4);
+ r[0] = _s.substring(0, _endIndex - versionLength).toLowerCase();
+ return r;
+ }
+ return null;
+ }
+
+ CtuluAnalyze analyze_;
+
+ private boolean dicoDynamique_;
+
+ final private File dicoFile_;
+
+ // stocke les COMPORT
+ Map entiteComport_ = new HashMap();
+
+ private DicoEntiteGenerate[] entites_;
+
+ private DicoKeyword kw_;
+
+ private String name_;
+
+ private int nbLanguage_;
+
+ private LineNumberReader reader_;
+
+ private String version_;
+
+ /**
+ * @param _f le fichier dico
+ */
+ public DicoAnalyzer(final File _f) {
+ dicoFile_ = _f;
+ findNameAndVersion();
+ kw_ = new DicoKeyword();
+ }
+
+ /**
+ * @return le fichier dico
+ */
+ public File getDicoFile() {
+ return dicoFile_;
+ }
+
+ private boolean computeChoice(final DicoDataTypeGenerate _type, final String[] _choiceByLanguage, final int _index) {
+ if (_choiceByLanguage == null) { throw new IllegalArgumentException("argument _choice nul"); }
+ final int t = _choiceByLanguage.length;
+ String[] choiceList = CtuluLibString.parseString(_choiceByLanguage[0], DicoKeyword.getChoiceSep());
+ int nbChoix = choiceList.length;
+ String[] keys = new String[nbChoix];
+ String[][] values = new String[t][nbChoix];
+ final String[] stemp = new String[2];
+ boolean b;
+ boolean nokeys = false;
+ boolean orUsed = false;
+ for (int i = 0; i < nbChoix; i++) {
+ b = computeChoiceItem(choiceList[i], stemp);
+ if (!b) {
+ FuLog.warning("Errors while analyzing keywords " + choiceList[i]);
+ return false;
+ }
+ keys[i] = stemp[0];
+ if (stemp[0] == null) {
+ nokeys = true;
+ } else if (stemp[0].indexOf(getOuTxt()) >= 0) {
+ orUsed = true;
+ }
+ values[0][i] = stemp[1];
+ }
+ if (orUsed) {
+ final List newKeys = new ArrayList(nbChoix + 5);
+ final List newValues = new ArrayList(nbChoix + 5);
+ for (int i = 0; i < nbChoix; i++) {
+ /* b = */computeChoiceItem(choiceList[i], stemp);
+ StringTokenizer tk = null;
+ if (stemp[0].indexOf(getOuTxt()) >= 0) {
+ tk = new StringTokenizer(stemp[0], getOuTxt());
+ } else if (stemp[0].indexOf(getOrTxt()) >= 0) {
+ tk = new StringTokenizer(stemp[0], getOrTxt());
+ }
+ if (tk == null) {
+ newKeys.add(stemp[0]);
+ newValues.add(stemp[1]);
+ } else {
+ while (tk.hasMoreTokens()) {
+ final String s = tk.nextToken().trim();
+ newKeys.add(s);
+ newValues.add(stemp[1]);
+ }
+ }
+ }
+ keys = new String[newKeys.size()];
+ newKeys.toArray(keys);
+ values = new String[t][newKeys.size()];
+ newValues.toArray(values[0]);
+ nbChoix = keys.length;
+ }
+ for (int i = 1; i < t; i++) {
+ choiceList = CtuluLibString.parseString(_choiceByLanguage[i], DicoKeyword.getChoiceSep());
+ for (int j = 0; j < nbChoix; j++) {
+ b = computeChoiceItem(choiceList[j], stemp);
+ if (!b) {
+ analyze_.addFatalError("Error while analyzing " + choiceList[j], _index);
+ return false;
+ }
+ if (nokeys) {
+ values[i][j] = stemp[1];
+ } else {
+ if ((orUsed) && (stemp[0].indexOf(getOrTxt()) >= 0)) {
+ final StringTokenizer tk = new StringTokenizer(stemp[0], getOrTxt());
+ while (tk.hasMoreTokens()) {
+ final String k = tk.nextToken();
+ if (k.equals(keys[j])) {
+ values[i][j] = stemp[1];
+ } else {
+ System.out.println("keywords in bad order with or !!");
+ final int index = CtuluLibArray.findObject(keys, k);
+ if (index >= 0) {
+ values[i][index] = k;
+ } else {
+ analyze_.addFatalError("OR keywords not found" + k, _index);
+ return false;
+ }
+ }
+ j++;
+ }
+ } else {
+ if (stemp[0].equals(keys[j])) {
+ values[i][j] = stemp[1];
+ } else {
+ System.out.println("keywords in bad order");
+ final int index = CtuluLibArray.findObject(keys, stemp[0]);
+ if (index >= 0) {
+ values[i][index] = stemp[1];
+ } else {
+ analyze_.addFatalError(DicoResource.getS("Cl\xE9 \"{0}\" non trouv\xE9es", choiceList[j]), _index);
+ return false;
+ }
+ }
+ }
+ }
+ }
+ }
+ if (values.length != nbLanguage_) {
+ analyze_.addFatalError(DicoResource.getS("Les choix propos\xE9s ne sont pas suffisants"), _index);
+ }
+ String s = null;
+ if (nokeys) {
+ s = _type.setChoix(null, values);
+ } else {
+ s = _type.setChoix(keys, values);
+ }
+ if (s != null) {
+ analyze_.addFatalError(s, _index);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * @return ou
+ */
+ private String getOuTxt() {
+ return " ou ";
+ }
+
+ /**
+ * @return or
+ */
+ private String getOrTxt() {
+ return " or ";
+ }
+
+ private boolean computeChoiceItem(final String _choice, final String[] _destArray) {
+ final String stemp = DicoKeyword.computeValue(_choice);
+ final int index = stemp.indexOf('=');
+ String value = null;
+ if (index < 1) {
+ _destArray[0] = null;
+ value = stemp;
+ } else {
+ String key = stemp.substring(0, index).trim();
+ if (key.startsWith(getQuoteString())) {
+ if (!key.endsWith(getQuoteString())) { return false; }
+ key = key.substring(1, key.length() - 1);
+ }
+ _destArray[0] = key.trim();
+ value = stemp.substring(index + 1).trim();
+ }
+ if (value == null) { return false; }
+ if (value.startsWith(getQuoteString())) {
+ if (!value.endsWith(getQuoteString())) { return false; }
+ _destArray[1] = value.substring(1, value.length() - 1).trim();
+ } else {
+ _destArray[1] = value.trim();
+ }
+ _destArray[1] = _destArray[1].replace('\xC9', '\xE8');
+ return true;
+ }
+
+ /**
+ * @return
+ */
+ private String getQuoteString() {
+ return "'";
+ }
+
+ private void computeConditionAffichage() {
+ final int n = entites_.length;
+ for (int i = 0; i < n; i++) {
+ final List m = (List) entiteComport_.get(entites_[i]);
+ if (m != null) {
+ entites_[i].computeActionAffichage(kw_, entites_, m, analyze_);
+ }
+ }
+ }
+
+ private String[] computeDefautValues(final String[] _initValues, final boolean _isMulti, final String _sep,
+ final int _indexEntite) {
+ if (_initValues == null) { return null; }
+ if (_initValues.length == 0) { return _initValues; }
+ final StringBuffer b = new StringBuffer(_initValues[0].length());
+ final int t = _initValues.length;
+ final String[] r = new String[t];
+ StringTokenizer st;
+ // String q= kw_.getQuotedString();
+ for (int i = t - 1; i >= 0; i--) {
+ b.setLength(0);
+ st = new StringTokenizer(_initValues[i], "\n");
+ while (st.hasMoreTokens()) {
+ b.append(st.nextToken().trim());
+ }
+ if (_isMulti) {
+ final String[] rTemp = DicoEntite.Vecteur.getValues(b.toString(), _sep, false);
+ if (rTemp == null) {
+ analyze_.getInfoCanal().addMessage(
+ DicoResource.getS("Erreur avec la valeur par d\xE9faut") + CtuluLibString.ESPACE + b.toString(),
+ _indexEntite);
+ }
+ r[i] = DicoEntite.Vecteur.getStringValuesArray(rTemp, _sep);
+ if (r[i] == null) {
+ r[i] = CtuluLibString.EMPTY_STRING;
+ analyze_.getInfoCanal().addMessage(
+ DicoResource.getS("Erreur avec la valeur par d\xE9faut") + CtuluLibString.ESPACE + b.toString(),
+ _indexEntite);
+ }
+ } else {
+ r[i] = DicoKeyword.computeValue(b.toString());
+ }
+ }
+ return r;
+ }
+
+ /**
+ * A partir du nom du fichier dico trouve la version.
+ */
+ private void findNameAndVersion() {
+ final String t = dicoFile_.getName();
+ final int pointIndex = t.lastIndexOf('.');
+ final int versionLength = 4;
+ if (pointIndex > versionLength + 1) {
+ final String[] nameVersion = getNameAndVersion(t, pointIndex);
+ version_ = nameVersion[1];
+ name_ = nameVersion[0];
+ if (name_ != null && name_.length() > 2 && name_.endsWith("_")) {
+ name_ = name_.substring(0, name_.length() - 1);
+ }
+ } else {
+ version_ = DicoResource.getS("Inconnu");
+ name_ = DicoResource.getS("Inconnu");
+ }
+ }
+
+ /**
+ * Retrouve dans les champ _keys celles qui commencent par le prefixe _prefixKey (par exemples "RUBRIQUE"). Ensuite,
+ * recupere dans la table _map les valeurs pour ces champ dans l'ordre des langage (RUBRIQUE,RUBRIQUE1,...). Si
+ * _compute, les valeurs sont trait\xE9es avec la methode computeValue de DicoKeyword.
+ */
+ private String[] findValues(final String _prefixKey, final Set _keys, final Map _map, final boolean _compute) {
+ String stemp;
+ int t = 0;
+ for (final Iterator iter = _keys.iterator(); iter.hasNext();) {
+ stemp = (String) iter.next();
+ if (stemp.startsWith(_prefixKey)) {
+ t++;
+ }
+ }
+ if (t == 0) { return null; }
+ String[] noms = new String[t];
+ stemp = (String) _map.get(_prefixKey);
+ if ((stemp == null) || (stemp.trim().length() == 0)) { return null; }
+ if (_compute) {
+ noms[0] = DicoKeyword.computeValue(stemp);
+ } else {
+ noms[0] = stemp;
+ }
+ for (int j = 1; j < t; j++) {
+ if (_compute) {
+ noms[j] = DicoKeyword.computeValue((String) _map.get(_prefixKey + j));
+ } else {
+ noms[j] = (String) _map.get(_prefixKey + j);
+ }
+ }
+ if (nbLanguage_ == 0) {
+ nbLanguage_ = t;
+ } else {
+ if (t > nbLanguage_) {
+ analyze_.getInfoCanal().addMessage(
+ DicoResource.getS("Le mot-cl\xE9 {0} propose trop de traduction", (String) _map.get(getNomId())));
+ final String[] temp = new String[nbLanguage_];
+ System.arraycopy(noms, 0, temp, 0, nbLanguage_);
+ noms = temp;
+ } else if (t < nbLanguage_) {
+ final String copie = (t > 1) ? noms[1] : noms[0];
+ final String[] temp = new String[nbLanguage_];
+ System.arraycopy(noms, 0, temp, 0, t);
+ Arrays.fill(temp, t, nbLanguage_, copie);
+ noms = temp;
+ }
+ // t = nbLanguage_;
+ }
+ return noms;
+ }
+
+ /**
+ * @return
+ */
+ private String getNomId() {
+ return "NOM";
+ }
+
+ public DicoEntiteGenerate[] getEntites() {
+ return entites_;
+ }
+
+ public DicoKeyword getKw() {
+ return kw_;
+ }
+
+ /**
+ * @return le nom du code
+ */
+ public String getName() {
+ return name_;
+ }
+
+ /**
+ * @return l'indice du langage utilise
+ */
+ public int getNbLanguage() {
+ return nbLanguage_;
+ }
+
+ /**
+ * @return la version
+ */
+ public String getVersion() {
+ return version_;
+ }
+
+ Set knownFileName_ = null;
+
+ public static boolean isKnownFile(final String _frNom) {
+ return _frNom.startsWith("FICHIER ");
+
+ }
+
+ private void parseProprietes(final List _props, final TObjectIntHashMap _nomLigne) {
+ final int nProp = _props.size();
+ final Map[] maps = new Map[nProp];
+ _props.toArray(maps);
+ _props.clear();
+ entites_ = new DicoEntiteGenerate[nProp];
+ Map mapEncours;
+ Set keys;
+ String stemp;
+ DicoEntiteGenerate entite;
+ DicoDataTypeGenerate type;
+ for (int i = 0; i < nProp; i++) {
+ mapEncours = maps[i];
+ keys = mapEncours.keySet();
+ // recherche des noms.
+ final String[] noms = findValues(kw_.getNom(), keys, mapEncours, true);
+ if ((noms == null) || (noms.length == 0) || noms[0] == null) {
+ analyze_.addFatalError(DicoResource.getS("Noms nuls ou pas de version anglaise"));
+ return;
+ }
+ final int ligne = _nomLigne.get(noms[0]);
+ /**
+ * Type de donnee reel,entier,caractere,logique
+ */
+ type = kw_.getMatchingType((String) (mapEncours.get(kw_.getType())));
+ if (type == null) {
+ analyze_.addFatalError(DicoResource.getS("Type non reconnu"), ligne);
+ analyze_.getInfoCanal().addMessage(noms[0], ligne);
+ return;
+ }
+ // Si type chaine et represente un fichier
+ stemp = (String) mapEncours.get(kw_.getApparence());
+ if (isKnownFile(noms[0]) || ((stemp != null) && (stemp.indexOf("LISTE IS FICHIER") > 0))) {
+ if (!type.setFic(true)) {
+ analyze_.addWarn(DicoResource.getS("Le mot-cl\xE9 {0} ne peut pas \xEAtre de type fichier", noms[0]), ligne);
+ }
+ }
+ // certains choix sont editable: on recherche un champ dans apparence
+ type.setChoiceEditable((stemp != null) && (stemp.indexOf("LISTE IS EDITABLE") > 0));
+ final boolean uniqueValueInTab = (stemp != null) && stemp.indexOf("packing IS XmPACK_COLUMN") > 0;
+ // MARK: Choix
+ stemp = (String) mapEncours.get(kw_.getChoix());
+ if (stemp != null) {
+ if (!computeChoice(type, findValues(kw_.getChoix(), keys, mapEncours, false), ligne)) {
+ analyze_.addFatalError(DicoResource.getS("Erreur lors de l'analyse des choix"), ligne);
+ analyze_.getInfoCanal().addMessage(noms[0], ligne);
+ return;
+ }
+ }
+
+ // MARK: Controle
+ stemp = (String) mapEncours.get(kw_.getControle());
+ String[] arraytemp;
+ if (stemp != null) {
+ arraytemp = CtuluLibString.parseString(stemp, DicoKeyword.getChoiceSep());
+ if (arraytemp.length > 2) {
+ analyze_.addFatalError(DicoResource.getS("champ CONTROLE invalide"), ligne);
+ analyze_.getInfoCanal().addMessage(noms[0], ligne);
+ return;
+ }
+ boolean b = true;
+ if (arraytemp.length == 1) {
+ b = type.setControle(arraytemp[0]);
+ } else {
+ b = type.setControle(arraytemp[0], arraytemp[1]);
+ }
+ if (!b) {
+ analyze_.getInfoCanal().addMessage(noms[0] + " " + DicoResource.getS("CONTROLE non support\xE9"), ligne);
+ }
+ }
+ /**
+ * MARK: entite simple,tableau, vecteur
+ */
+ stemp = (String) mapEncours.get(kw_.getTaille());
+ boolean isMulti = false;
+
+ int temp = 0;
+ if (stemp != null) {
+ temp = Integer.parseInt(stemp);
+ }
+ final String compose = DicoKeyword.computeValue((String) mapEncours.get(kw_.getCompose()));
+
+ boolean isComposedVect = (compose != null) && (compose.length() > 0);
+ final String sepChar = isComposedVect ? compose : DicoKeyword.SEPARATEUR_TABLEAU;
+ // String sep=isComposedVect
+ // Correction du 7 mai 2007
+ // les mot-cl\xE9s qui ont une taille de 2 sont \xE9galement consid\xE9r\xE9s comme \xE9tant a taille variable
+ boolean isVect = (temp == 2);
+ // if(temp==2 || )
+ // si une taille est donnee et est differente de 2, c'est un tableau
+ if (temp > 0 && !isVect) {
+ final DicoEntiteGenerate.Tableau tab = new DicoEntiteGenerate.Tableau(type);
+ tab.setTaille(temp);
+ if (dicoDynamique_) {
+ tab.setDynamique(true);
+ }
+ tab.setDataColumn(uniqueValueInTab);
+ entite = tab;
+ isMulti = true;
+ // sepChar = DicoKeyword.SEPARATEUR_TABLEAU;
+ // vecteur si taille vaut 2 ou si un separateur est donne
+ } else if (isComposedVect || isVect) {
+ entite = new DicoEntiteGenerate.Vecteur(type, compose);
+ ((DicoEntiteGenerate.Vecteur) entite).setDataColumn(uniqueValueInTab);
+ isMulti = true;
+ // sepChar = compose;
+ } else {
+ entite = new DicoEntiteGenerate.Simple(type);
+ }
+ entites_[i] = entite;
+ entite.setNoms(noms);
+ // recherche des valeurs par defaut.
+ arraytemp = findValues(kw_.getDefaut(), keys, mapEncours, false);
+ arraytemp = computeDefautValues(arraytemp, isMulti, sepChar, ligne);
+ // MARK: valeurs par defaut.
+ if (arraytemp != null) {
+ boolean emptyStringCanBeDefaut = false;
+ if (type.isChoiceEnable()) {
+ String[] keysChoice = type.getKeys();
+ if (keysChoice == null) {
+ keysChoice = type.getValues()[0];
+ }
+ if (keysChoice == null) {
+ analyze_.getErrorCanal().addMessage("les choix sont nuls", ligne);
+ return;
+ }
+ for (int j = 0; j < keysChoice.length; j++) {
+ if (keysChoice[j].trim().length() == 0) {
+ emptyStringCanBeDefaut = true;
+ }
+ }
+ }
+ if ((emptyStringCanBeDefaut) || (arraytemp[0].trim().length() > 0)) {
+ entite.setDefautValues(arraytemp);
+ }
+ }
+ // recherche de l'aide.
+ arraytemp = findValues(kw_.getAide(), keys, mapEncours, true);
+ if (arraytemp == null) {
+ analyze_.getInfoCanal().addMessage(DicoResource.getS("Aide non trouv\xE9e"), ligne);
+ } else {
+ entite.setAides(arraytemp);
+ }
+ // index
+ String s = (String) mapEncours.get(kw_.getIndex());
+ if (s == null) {
+ entite.setIndex(0);
+ analyze_.getInfoCanal().addMessage(
+ DicoResource.getS("INDEX mis \xE0 0 pour") + CtuluLibString.ESPACE + entite.getNoms()[0], ligne);
+ } else {
+ entite.setIndex(Integer.parseInt(s));
+ }
+ s = (String) mapEncours.get(kw_.getNiveau());
+ if (s == null) {
+ entite.setNiveau(0);
+ analyze_.getInfoCanal().addMessage(
+ DicoResource.getS("NIVEAU mis \xE0 0 pour") + CtuluLibString.ESPACE + entite.getNoms()[0], ligne);
+ } else {
+ entite.setNiveau(Integer.parseInt(s));
+ }
+ // MARK: Comport (definition du comportement)
+ stemp = (String) mapEncours.get(kw_.getComport());
+ if ((stemp != null)) {
+ // les comports sont s\xE9par\xE9s par des du style '....';'.....'
+ // mais des ; peuvent appartenir au champ dans on parse sur les '
+ // et on vire les champs vide ou contenant les ;
+ // FRED 10/05/2007 les ; servent r\xE9ellement de s\xE9parateurs
+ arraytemp = CtuluLibString.parseString(stemp, ";");
+ if (arraytemp != null) {
+ final List validToken = new ArrayList();
+ for (int tokI = 0; tokI < arraytemp.length; tokI++) {
+ final String tk = arraytemp[tokI].trim();
+ // on evite les blancs et les ; separant les donn\xE9es
+ if (tk.length() > 1) {
+ validToken.add(tk);
+ }
+ }
+ arraytemp = new String[validToken.size()];
+ validToken.toArray(arraytemp);
+ }
+
+ final int l = arraytemp == null ? 0 : arraytemp.length;
+ // La cle represente l'affichage voulue (cela peut etre une
+ // rubrique ou un mot-cl\xE9) et la valeur represente la condition
+ // qui declenche cette affichage.
+ final List actionAffCondition = new ArrayList(5);
+ final String pref = kw_.getComportAffichageChamp();
+
+ for (int j = l - 1; j >= 0; j--) {
+ if (arraytemp != null) {
+ stemp = DicoKeyword.computeValue(arraytemp[j]);
+ } else {
+ stemp = null;
+ }
+ /*
+ * if (stemp == null) { System.err.println("ligne " + ligne); }
+ */
+ if (stemp != null && stemp.startsWith(pref)) {
+ actionAffCondition.add(stemp);
+ }
+ }
+ if (actionAffCondition.size() > 0) {
+ entiteComport_.put(entite, actionAffCondition);
+ }
+ }
+ // MARK: rubrique
+ arraytemp = findValues(kw_.getRubrique(), keys, mapEncours, false);
+ if (arraytemp == null) {
+ analyze_.getInfoCanal().addMessage(DicoResource.getS("Rubrique non trouv\xE9e"), ligne);
+ } else {
+ // int l= arraytemp.length;
+ // for (int j= 0; j < l; j++) {
+ // arraytemp[j]=
+ // kw_.computeValue(
+ // DodicoLib.parseString(arraytemp[j], kw_.getChoiceSep())[0]);
+ //
+ // }
+ entite.setRubriques(arraytemp);
+ }
+ stemp = entite.isDefautValuesValides();
+ final String app = (String) mapEncours.get(kw_.getApparence());
+
+ if (stemp != null && ((app == null) || (app.indexOf("IS REQUIRED") < 0))) {
+ analyze_.addFatalError(getQuoteString() + noms[0] + "': "
+ + DicoResource.getS("Les valeurs par d\xE9faut sont invalides"), ligne);
+ analyze_.getInfoCanal().addMessage(stemp, ligne);
+ return;
+ }
+ stemp = type.isChoicesValides();
+
+ if (stemp != null) {
+ analyze_.addFatalError(getQuoteString() + noms[0] + "': "
+ + DicoResource.getS("Les valeurs CHOIX sont invalides"), ligne);
+ analyze_.getInfoCanal().addMessage(stemp, ligne);
+ return;
+ }
+ if (entites_[i] == null) {
+ analyze_.addFatalError(getQuoteString() + noms[0] + "': " + DicoResource.getS("Donn\xE9es invalide"), ligne);
+ }
+ }
+ }
+
+ /**
+ * Stocke dans une structure interne les proprietes du fichier dico.
+ */
+ protected CtuluAnalyze read() {
+ analyze_ = new CtuluAnalyze();
+ final List props = new ArrayList(200);
+ final TObjectIntHashMap nomLigne = new TObjectIntHashMap(200);
+ try {
+ reader_ = new LineNumberReader(new FileReader(dicoFile_));
+ String line;
+ String trimLine;
+ final char commentaire = kw_.getCommentChar();
+ final char commande = kw_.getCommandChar();
+ final String nom = kw_.getNom();
+ final char eq = '=';
+ Map map = null;
+ int egalIndex = -1;
+ String currentKey = null;
+ final StringBuffer currentValue = new StringBuffer(200);
+ while ((line = reader_.readLine()) != null) {
+ trimLine = line.trim();
+ if (trimLine.length() == 0) {
+ continue;
+ }
+ if (trimLine.indexOf(commentaire) == 0) {
+ continue;
+ }
+ if (trimLine.indexOf(commande) == 0) {
+ if (kw_.getDynamique().equals(trimLine)) {
+ dicoDynamique_ = true;
+ }
+ continue;
+ }
+ egalIndex = trimLine.indexOf(eq);
+ // C'est une cle
+ if ((egalIndex > 0) && (kw_.isKey(trimLine.substring(0, egalIndex).trim()))) {
+ if (currentKey != null) {
+ // il se peut que le fichier dico soit mal decrit ( 2 fois aide) au
+ // lieu de aide et aide1
+ if (map != null && map.get(currentKey) != null) {
+ analyze_.getInfoCanal().addMessage(
+ DicoResource.getS("Le champ {0} est pr\xE9sent plusieurs fois", currentKey), reader_);
+ if (currentKey.endsWith("1")) {
+ analyze_
+ .addFatalError(DicoResource.getS("Ce type d'erreur n'est pas corrig\xE9"), reader_.getLineNumber());
+ analyze_.getInfoCanal().addMessage((String) map.get(getNomId()), reader_.getLineNumber());
+ return analyze_;
+ }
+ currentKey += "1";
+ if (map.get(currentKey) != null) {
+ analyze_.getErrorCanal().addMessage(DicoResource.getS("Ce type d'erreur n'est pas corrig\xE9"), reader_);
+ analyze_.getInfoCanal().addMessage((String) map.get(getNomId()), reader_.getLineNumber());
+ return analyze_;
+ }
+ }
+ if (map != null) {
+ map.put(currentKey, currentValue.toString().trim());
+ }
+ if (currentKey.equals(getNomId())) {
+ nomLigne.put(DicoKeyword.computeValue(currentValue.toString().trim()), reader_.getLineNumber());
+ }
+ currentValue.setLength(0);
+ }
+ currentKey = trimLine.substring(0, egalIndex).trim();
+ if (currentKey.equals(nom)) {
+ /*
+ * if (map != null) { props.add(map); }
+ */
+ map = new HashMap();
+ props.add(map);
+ }
+ if (trimLine.length() > egalIndex + 1) {
+ currentValue.append(trimLine.substring(egalIndex + 1).trim());
+ }
+ } else {
+ currentValue.append('\n').append(line);
+ }
+ }
+ } catch (final FileNotFoundException e) {
+ analyze_.getErrorCanal().addMessage(DicoResource.getS("Fichier non trouv\xE9") + ": " + dicoFile_.getAbsolutePath());
+ if (CtuluLibMessage.DEBUG) {
+ e.printStackTrace();
+ }
+ } catch (final IOException e1) {
+ analyze_.manageException(e1);
+ return analyze_;
+ } finally {
+ if (reader_ != null) {
+ try {
+ reader_.close();
+ } catch (final IOException _e) {
+ analyze_.manageException(_e);
+ }
+ }
+ }
+ if (analyze_.containsFatalError()) { return analyze_; }
+ // A partir des proprietes lues construit les entites utiles
+ // a la generation.
+ parseProprietes(props, nomLigne);
+ if (analyze_.containsFatalError() || analyze_.containsErrors()) {
+ entites_ = null;
+ return analyze_;
+ }
+ // Certains mots-cles dependent des autres : on gere cette dependance.
+ computeConditionAffichage();
+ return analyze_;
+ }
+
+ /**
+ * @return true si vide
+ */
+ public boolean isEmpty() {
+ return entites_ == null;
+ }
+
+ /**
+ * @param _kw le conteneur des identifiants utilises
+ */
+ public void setDicoKeyword(final DicoKeyword _kw) {
+ kw_ = _kw;
+ }
+
+ /**
+ * @return le comportement de certains mot-cles.
+ */
+ public Map getEntiteComportement() {
+ return entiteComport_;
+ }
+}
\ No newline at end of file
Added: trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormat.java
===================================================================
--- trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormat.java (rev 0)
+++ trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormat.java 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,89 @@
+/**
+ * @creation 14 avr. 2003
+ * @modification $Date: 2007-06-29 15:10:27 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.dodico.dico;
+
+import java.io.File;
+
+import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
+
+/**
+ * @author deniger
+ * @version $Id: DicoCasFileFormat.java,v 1.18 2007-06-29 15:10:27 deniger Exp $
+ */
+public abstract class DicoCasFileFormat extends DicoCasFileFormatAbstract {
+ /**
+ * @param _nom le nom du fichier dico lu ( telemac2d, ...\xB0
+ */
+ public DicoCasFileFormat(final String _nom) {
+ super(_nom);
+ }
+
+ /**
+ * @return le manager des dictionnaires
+ */
+ public abstract DicoManager getDicoManager();
+
+ public String getLastVersion() {
+ return getDicoManager().getLastVersion(this);
+ }
+
+ /**
+ * @param _language le langage voulu
+ * @return la version dans le langage demande
+ * @see DicoLanguage
+ */
+ public DicoCasFileFormatVersion getLastVersionImpl(final int _language) {
+ return getDicoManager().createLastVersionImpl(this, _language);
+ }
+
+ public FileFormatVersionInterface getLastVersionInstance(File _f) {
+ return getLastVersionImpl();
+ }
+
+ public FileFormatVersionInterface getLastVersionInstance() {
+ return getLastVersionImpl();
+ }
+
+ /**
+ * @return version
+ */
+ public DicoCasFileFormatVersion getLastVersionImpl() {
+ return getDicoManager().createLastVersionImpl(this, DicoLanguage.getCurrentID());
+ }
+
+ /**
+ *
+ */
+ public int getVersionNb() {
+ return getDicoManager().getVersionsNb(this);
+ }
+
+ /**
+ *
+ */
+ public String[] getVersions() {
+ return getDicoManager().getVersions(this);
+ }
+
+ /**
+ * @param _version
+ * @return la version
+ */
+ public DicoCasFileFormatVersion getVersionImpl(final String _version) {
+ return getDicoManager().createVersionImpl(this, _version);
+ }
+
+ /**
+ * @param _version
+ * @param _language
+ * @return la version
+ */
+ public DicoCasFileFormatVersion getVersionImpl(final String _version, final int _language) {
+ return getDicoManager().createVersionImpl(this, _version, _language);
+ }
+}
Added: trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatAbstract.java
===================================================================
--- trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatAbstract.java (rev 0)
+++ trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatAbstract.java 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,25 @@
+/**
+ * @creation 29 sept. 2003
+ * @modification $Date: 2007-07-16 13:40:26 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+* @mail de...@fu...
+ */
+package org.fudaa.dodico.dico;
+
+import org.fudaa.ctulu.fileformat.FileFormat;
+/**
+ * @author deniger
+ * @version $Id: DicoCasFileFormatAbstract.java,v 1.9 2007-07-16 13:40:26 bmarchan Exp $
+ */
+public abstract class DicoCasFileFormatAbstract extends FileFormat {
+ /**
+ * @param _nom le nom du code
+ */
+ public DicoCasFileFormatAbstract(final String _nom) {
+ super(1);
+ nom_= _nom;
+ id_= nom_.toUpperCase();
+ }
+
+}
Added: trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatDefault.java
===================================================================
--- trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatDefault.java (rev 0)
+++ trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatDefault.java 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,41 @@
+/**
+ * @creation 7 janv. 2005
+ * @modification $Date: 2007-06-29 15:10:27 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.dodico.dico;
+
+import java.io.File;
+
+import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
+
+/**
+ * @author Fred Deniger
+ * @version $Id: DicoCasFileFormatDefault.java,v 1.6 2007-06-29 15:10:27 deniger Exp $
+ */
+public class DicoCasFileFormatDefault extends DicoCasFileFormatAbstract {
+
+ DicoCasFileFormatVersion version_;
+
+ /**
+ * @param _version la version a utiliser
+ */
+ public DicoCasFileFormatDefault(final DicoModelAbstract _version) {
+ super(_version.getCodeName());
+ version_ = new DicoCasFileFormatVersion(this, _version);
+ }
+
+ public String getLastVersion() {
+ return version_.getVersionName();
+ }
+
+ public FileFormatVersionInterface getLastVersionInstance() {
+ return version_;
+ }
+
+ public FileFormatVersionInterface getLastVersionInstance(File _f) {
+ return version_;
+ }
+}
\ No newline at end of file
Added: trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatVersion.java
===================================================================
--- trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatVersion.java (rev 0)
+++ trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatVersion.java 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,99 @@
+/**
+ * @creation 14 ao\xFBt 2003
+ * @modification $Date: 2006-09-19 14:42:27 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+* @mail de...@fu...
+ */
+package org.fudaa.dodico.dico;
+
+import java.io.File;
+
+import org.fudaa.ctulu.CtuluIOOperationSynthese;
+import org.fudaa.ctulu.ProgressionInterface;
+import org.fudaa.ctulu.fileformat.FileReadOperationAbstract;
+import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract;
+
+import org.fudaa.dodico.fichiers.FileFormatSoftware;
+
+/**
+ * @author deniger
+ * @version $Id: DicoCasFileFormatVersion.java,v 1.17 2006-09-19 14:42:27 deniger Exp $
+ */
+public class DicoCasFileFormatVersion extends DicoCasFileFormatVersionAbstract {
+
+ /**
+ * @param _ft le format correspondant
+ * @param _dico le model contenant tous les mot-cles
+ */
+ public DicoCasFileFormatVersion(final DicoCasFileFormatAbstract _ft, final DicoModelAbstract _dico) {
+ super(_ft, _dico);
+ }
+
+ public FileFormatSoftware getSoftVersion(){
+ final FileFormatSoftware r = new FileFormatSoftware();
+ r.system_ = "LNHE";
+ r.soft_ = getCodeName();
+ r.language_ = super.getDico().getLanguage();
+ r.version_ = getDico().getVersion();
+ return r;
+ }
+
+ /**
+ * @return le nombre de caractere max par ligne
+ */
+ public int getMaxCharPerLine(){
+ return 72;
+ }
+
+ public DicoEntite getTitreEntite(){
+ return getEntiteFor(new String[] { "TITRE", "TITLE"});
+ }
+
+ public DicoEntite getFichierPrincipalEntite(){
+ return getEntiteFor(new String[] { "FICHIER DES PARAMETRES", "STEERING FILE"});
+ }
+
+ /**
+ * @return le lecteur pour un fichier cas
+ */
+ public DicoCasReader createDicoCasReader(){
+ return new DicoCasReader(this);
+ }
+
+ /**
+ * @return un writer pour un fichier cas.
+ */
+ public DicoCasWriter createDicoCasWriter(){
+ return new DicoCasWriter(this);
+ }
+
+ /**
+ * return lecteur fichier cas.
+ */
+ public FileReadOperationAbstract createReader(){
+ return createDicoCasReader();
+ }
+
+ public FileWriteOperationAbstract createWriter(){
+ return createDicoCasWriter();
+ }
+
+ /**
+ * @param _f le fichier a ecrire
+ * @param _source l'inteface contenant les donnees
+ * @param _prog la barre de progression
+ * @return la synthese de l'operation
+ */
+ public CtuluIOOperationSynthese write(final File _f,final DicoCasInterface _source,final ProgressionInterface _prog){
+ final DicoCasWriter i = createDicoCasWriter();
+ if (i == null) {
+ return super.write(_f, _source, _prog);
+ }
+ i.setFile(_f);
+ i.setProgressReceiver(_prog);
+ final CtuluIOOperationSynthese r = i.write(_source);
+ i.setProgressReceiver(null);
+ return r;
+ }
+}
Added: trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatVersionAbstract.java
===================================================================
--- trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatVersionAbstract.java (rev 0)
+++ trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasFileFormatVersionAbstract.java 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,252 @@
+/**
+ * @creation 29 sept. 2003
+ * @modification $Date: 2007-06-28 09:25:08 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.dodico.dico;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.fudaa.ctulu.CtuluLibString;
+import org.fudaa.ctulu.fileformat.FileFormat;
+import org.fudaa.ctulu.fileformat.FileFormatVersion;
+
+import org.fudaa.dodico.fichiers.FileFormatSoftware;
+
+/**
+ * @author deniger
+ * @version $Id: DicoCasFileFormatVersionAbstract.java,v 1.20 2007-06-28 09:25:08 deniger Exp $
+ */
+public abstract class DicoCasFileFormatVersionAbstract extends FileFormatVersion {
+
+ DicoModelAbstract dico_;
+
+ /**
+ * @param _ft le format
+ * @param _dico le modele contenant tous les mots-cles
+ */
+ public DicoCasFileFormatVersionAbstract(final FileFormat _ft, final DicoModelAbstract _dico) {
+ super(_ft, _dico.getVersion());
+ dico_ = _dico;
+ }
+
+ public abstract FileFormatSoftware getSoftVersion();
+
+ public final int getOtherLanguageIndex() {
+ return dico_.getOtherLanguageIndex();
+ }
+
+ public final int getLanguageIndex() {
+ return dico_.getLanguageIndex();
+ }
+
+ public String toString() {
+ return dico_.getCodeName() + CtuluLibString.ESPACE + dico_.getVersion();
+ }
+
+ /**
+ * @return le nom du code utilise
+ */
+ public String getCodeName() {
+ return dico_.getCodeName();
+ }
+
+ /**
+ * @return le mot-cle donne le nom du fichier cas
+ */
+ public abstract DicoEntite getFichierPrincipalEntite();
+
+ /**
+ * @return le mot-cle donnant le titre de l'etude
+ */
+ public abstract DicoEntite getTitreEntite();
+
+ /**
+ * @param _i le conteneur des mot-cl
+ * @param _l la collection a remplir avec les mots-cle requis mais non initialises.
+ */
+ public void fillListWithNotSetRequiredEntite(final DicoParamsInterface _i, final Set _l) {}
+
+ /**
+ * @return le model dico
+ */
+ public DicoModelAbstract getDico() {
+ return dico_;
+ }
+
+ /**
+ * @param _noms les noms possible (francai-anglais) du mots-cle a rechercher
+ * @return le mot-cle ayant le nom donnee dans le tableau
+ */
+ public final DicoEntite getEntiteFor(final String[] _noms) {
+ DicoEntite r = null;
+ if (_noms.length > dico_.getLanguageIndex()) {
+ r = dico_.getEntite(_noms[dico_.getLanguageIndex()]);
+ }
+ if (r != null) {
+ return r;
+ }
+ final int n = _noms.length;
+ for (int i = 0; i < n; i++) {
+ r = dico_.getEntite(_noms[i]);
+ if (r != null) {
+ return r;
+ }
+ }
+ return null;
+ }
+
+ public final DicoEntite getEntiteFor(final String _nomFr, final String _nomEn) {
+ DicoEntite r = null;
+ // on teste selon le langage
+ final int i = dico_.getLanguageIndex();
+ if (i == 0) {
+ r = dico_.getEntite(_nomFr);
+ if (r != null) {
+ return r;
+ }
+ } else if (i == 1) {
+ r = dico_.getEntite(_nomEn);
+ if (r != null) {
+ return r;
+ }
+ }
+ r = dico_.getEntite(_nomFr);
+ if (r != null) {
+ return r;
+ }
+ r = dico_.getEntite(_nomEn);
+ if (r != null) {
+ return r;
+ }
+ return r;
+ }
+
+ /**
+ * Search in the dict list, the keyword which heading is _r.
+ *
+ * @param _r la rubrique cherchee
+ * @return les mot-cles ayant comme rubrique _r
+ */
+ public DicoEntite[] getEntitesForHeading(final String _r) {
+ if (_r == null) {
+ return null;
+ }
+ final List r = new ArrayList();
+ for (final Iterator it = dico_.getList().iterator(); it.hasNext();) {
+ final DicoEntite ent = (DicoEntite) it.next();
+ if (_r.equals(ent.getRubrique())) {
+ r.add(ent);
+ }
+ }
+ return DicoParams.enTableau(r);
+ }
+
+ /**
+ * Search in the dict list, the keyword which heading is _rInLanguage in the right language.
+ *
+ * @param _rInlanguage les rubriques en francais/anglais
+ * @return les mot-cles du dico ayant comme rubrique rInLanguage
+ */
+ public DicoEntite[] getEntitesForHeading(final String[] _rInlanguage) {
+ if ((_rInlanguage == null) || (_rInlanguage.length != 2)) {
+ return null;
+ }
+ if (DicoLanguage.FRENCH_ID == dico_.getLanguageIndex()) {
+ return getEntitesForHeading(_rInlanguage[0]);
+ }
+ return getEntitesForHeading(_rInlanguage[1]);
+ }
+
+ /**
+ * Search whith the Iterator it, the keyword which heading is _r.
+ *
+ * @param _r la rubrique a considerer
+ * @param _it un iterateur sur les mot-cles
+ * @return les mot-cles ayant comme rubrique _r.
+ */
+ public DicoEntite[] getEntitesForHeading(final String _r, final Iterator _it) {
+ if (_r == null) {
+ return null;
+ }
+ final List r = new ArrayList();
+ while (_it.hasNext()) {
+ final DicoEntite ent = (DicoEntite) _it.next();
+ if (_r.equals(ent.getRubrique())) {
+ r.add(ent);
+ }
+ }
+ return DicoParams.enTableau(r);
+ }
+
+ /**
+ * Search whith the Iterator it, the keyword which heading is _rInLanguage in the right language.
+ *
+ * @param _rInlanguage le tableau contenant les donnees en francais/anglais
+ * @param _it un iterateur sur des mot-cles
+ * @return les mot-cles ayant comme rubrique rInLanguage
+ */
+ public DicoEntite[] getEntitesForHeading(final String[] _rInlanguage, final Iterator _it) {
+ if ((_rInlanguage == null) || (_rInlanguage.length != 2)) {
+ return null;
+ }
+ if (DicoLanguage.FRENCH_ID == dico_.getLanguageIndex()) {
+ return getEntitesForHeading(_rInlanguage[0], _it);
+ }
+ return getEntitesForHeading(_rInlanguage[1], _it);
+ }
+
+ /**
+ * @return le caractere identifiant un commentaire
+ */
+ public char getCommentChar() {
+ return '/';
+ }
+
+ /**
+ * @return le caractere identifiant un commentaire
+ */
+ public String getCommentString() {
+ return "/";
+ }
+
+ /**
+ * @return la chaine decrivant la fin d'un fichier cas.
+ */
+ public String getCommandStop() {
+ return "&FIN";
+ }
+
+ /**
+ * @return la chaine pour stopper le programme
+ */
+ public String getCommandStopProgram() {
+ return "&STO";
+ }
+
+ /**
+ * @return la chaine pour ecrire les mot-cles
+ */
+ public String getCommandPrintKeys() {
+ return "&LIS";
+ }
+
+ /**
+ * @return la chaine pour ecrire les mot-cles en version longue
+ */
+ public String getCommandPrintLongKeys() {
+ return "&IND";
+ }
+
+ /**
+ * @return chaine pour ecrire les valeurs des mot-cles
+ */
+ public String getCommandPrintKeysValues() {
+ return "&ETA";
+ }
+}
\ No newline at end of file
Added: trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasInterface.java
===================================================================
--- trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasInterface.java (rev 0)
+++ trunk/framework/fudaa-dico/server/src/main/java/org/fudaa/dodico/dico/DicoCasInterface.java 2009-10-14 21:52:02 UTC (rev 5263)
@@ -0,0 +1,80 @@
+/**
+ * @creation 15 avr. 2003
+ * @modification $Date: 2006-04-07 09:23:04 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-6...
[truncated message content] |