From: Frederic D. <de...@us...> - 2004-03-31 08:26:21
|
Update of /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9937/src/org/fudaa/dodico/dunes/io Modified Files: DunesReader.java DunesWriter.java Log Message: Maj pour solutions initiales Index: DunesReader.java =================================================================== RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesReader.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** DunesReader.java 12 Feb 2004 15:32:44 -0000 1.13 --- DunesReader.java 31 Mar 2004 08:14:30 -0000 1.14 *************** *** 8,18 **** */ package org.fudaa.dodico.dunes.io; import java.io.EOFException; import java.io.IOException; import org.fudaa.ctulu.CtuluLib; ! ! import org.fudaa.dodico.commun.DodicoAnalyze; ! import org.fudaa.dodico.commun.DodicoLib; import org.fudaa.dodico.ef.EfElement; import org.fudaa.dodico.ef.EfGrid; --- 8,17 ---- */ package org.fudaa.dodico.dunes.io; + import java.io.EOFException; import java.io.IOException; import org.fudaa.ctulu.CtuluLib; ! import org.fudaa.dodico.commun.ProgressionUpdater; import org.fudaa.dodico.ef.EfElement; import org.fudaa.dodico.ef.EfGrid; *************** *** 30,34 **** --- 29,35 ---- */ public class DunesReader extends FileOpReadCharSimpleAbstract { + DunesFileFormat.DunesVersion version_; + /** * @param _in le flux d'entree non bufferise. *************** *** 37,51 **** this(DunesFileFormat.getInstance().getLastVersionImpl()); } public DunesReader(DunesFileFormat.DunesVersion _f) { ! version_= _f; } protected Object _read() { return readDunes(); } private DunesInterface readDunes() { ! DunesAdapter source_= null; ! EfNode[] points= null; ! EfElement[] elems= null; ! double[] adaptatifs= null; in_.setJumpBlankLine(true); try { --- 38,58 ---- this(DunesFileFormat.getInstance().getLastVersionImpl()); } + + /** + * @param _f le format a utiliser + */ public DunesReader(DunesFileFormat.DunesVersion _f) { ! version_ = _f; } + protected Object _read() { return readDunes(); } + private DunesInterface readDunes() { ! DunesAdapter source_ = null; ! EfNode[] points = null; ! EfElement[] elems = null; ! double[] adaptatifs = null; in_.setJumpBlankLine(true); try { *************** *** 54,63 **** in_.readFields(); if ((in_.getNumberOfFields() != 1) ! && (!version_.getNoeudCode().equals(in_.stringField(0)))) { analyze_.addError( ! H2dResource.getS( ! "L'identifiant {0} est attendu", ! version_.getNoeudCode()), ! in_); return null; } --- 61,70 ---- in_.readFields(); if ((in_.getNumberOfFields() != 1) ! && (!version_.getNoeudCode().equals(in_.stringField(0)))) { analyze_.addError( ! H2dResource.getS( ! "L'identifiant {0} est attendu", ! version_.getNoeudCode()), ! in_); return null; } *************** *** 65,150 **** //NOMBRE_DE_NOEUD TYPE_DE_MAILLAGE in_.readFields(); ! //verification que l'on a bien 2 champs if (in_.getNumberOfFields() != 2) { analyze_.addFatalError( ! H2dResource.getS("Nombre de noeuds non trouvé"), ! in_); return null; } //le nombre de noeud ! int nbNoeuds= in_.intField(0); //le type de maillage. //Si 2, des infos sur le maillage adaptatif seront presentes ! int typeMaillage= in_.intField(1); //Si adaptatif, on initialise le tableau stockant les valeurs. if (typeMaillage == version_.getAdaptatifCode()) { ! adaptatifs= new double[nbNoeuds]; //on affecte a source le tableau. } //Creation du tableau de point. ! points= new EfNode[nbNoeuds]; // maillage.points = points; ! int pourc= 0; ! boolean afficheAvance= (progress_ == null ? false : true); ! if (afficheAvance) ! progress_.setProgression(pourc); ! int step= DodicoLib.getStep(nbNoeuds); ! int pourcStep= (int) (50 / step); ! int pas= (int) (nbNoeuds / step); ! int pMax= pas; int temp; //lecture des noeuds ! for (int i= 0; i < nbNoeuds; i++) { in_.readFields(); if (in_.getNumberOfFields() != 4) { analyze_.addInfo( ! H2dResource.getS("Format attendu") + ": NUM_POINT X Y Z", ! in_); analyze_.addError( ! H2dResource.getS( ! "La définition du noeud {0} n'est pas valide", ! CtuluLib.getString(i + 1)), ! in_); return null; } ! temp= in_.intField(0); if (temp != (i + 1)) { analyze_.addInfo( ! H2dResource.getS( ! "Le numéro du point ne correspond pas au numéro réel"), ! in_); } ! points[i]= ! new EfNode( ! in_.doubleField(1), ! in_.doubleField(2), ! in_.doubleField(3)); if (adaptatifs != null) { in_.readFields(); if (in_.getNumberOfFields() != 1) { analyze_.addWarn( ! H2dResource.getS( ! "La ligne du coefficient adaptatif ne doit contenir qu'un champ"), ! in_); ! } ! adaptatifs[i]= in_.doubleField(0); ! } ! if (afficheAvance) { ! if (i > pMax) { ! pourc += pourcStep; ! progress_.setProgression(pourc); ! pMax += pas; } } } //Lecture du mot cle ELEMENT in_.readFields(); if ((in_.getNumberOfFields() != 1) ! && (!version_.getElementCode().equals(in_.stringField(0)))) { analyze_.addError( ! H2dResource.getS( ! "L'identifiant {0} est attendu", ! version_.getElementCode()), ! in_); return null; } --- 72,147 ---- //NOMBRE_DE_NOEUD TYPE_DE_MAILLAGE in_.readFields(); ! //verification que l'on a bien 2 champs if (in_.getNumberOfFields() != 2) { analyze_.addFatalError( ! H2dResource.getS("Nombre de noeuds non trouvé"), ! in_); return null; } //le nombre de noeud ! int nbNoeuds = in_.intField(0); //le type de maillage. //Si 2, des infos sur le maillage adaptatif seront presentes ! int typeMaillage = in_.intField(1); //Si adaptatif, on initialise le tableau stockant les valeurs. if (typeMaillage == version_.getAdaptatifCode()) { ! adaptatifs = new double[nbNoeuds]; //on affecte a source le tableau. } //Creation du tableau de point. ! points = new EfNode[nbNoeuds]; // maillage.points = points; ! int pourc = 0; ! ProgressionUpdater up = new ProgressionUpdater(progress_); ! up.setValue(2, nbNoeuds, 0, 50); ! up.majProgessionStateOnly(); int temp; //lecture des noeuds ! for (int i = 0; i < nbNoeuds; i++) { in_.readFields(); if (in_.getNumberOfFields() != 4) { analyze_.addInfo( ! H2dResource.getS("Format attendu") + ": NUM_POINT X Y Z", ! in_); analyze_.addError( ! H2dResource.getS( ! "La définition du noeud {0} n'est pas valide", ! CtuluLib.getString(i + 1)), ! in_); return null; } ! temp = in_.intField(0); if (temp != (i + 1)) { analyze_.addInfo( ! H2dResource.getS( ! "Le numéro du point ne correspond pas au numéro réel"), ! in_); } ! points[i] = ! new EfNode( ! in_.doubleField(1), ! in_.doubleField(2), ! in_.doubleField(3)); if (adaptatifs != null) { in_.readFields(); if (in_.getNumberOfFields() != 1) { analyze_.addWarn( ! H2dResource.getS( ! "La ligne du coefficient adaptatif ne doit contenir qu'un champ"), ! in_); } + adaptatifs[i] = in_.doubleField(0); } + up.majAvancement(); } //Lecture du mot cle ELEMENT in_.readFields(); if ((in_.getNumberOfFields() != 1) ! && (!version_.getElementCode().equals(in_.stringField(0)))) { analyze_.addError( ! H2dResource.getS( ! "L'identifiant {0} est attendu", ! version_.getElementCode()), ! in_); return null; } *************** *** 154,255 **** if (in_.getNumberOfFields() != 1) { analyze_.addFatalError( ! H2dResource.getS("Cette ligne est invalide"), ! in_); return null; } ! int nbElem= in_.intField(0); ! elems= new EfElement[nbElem]; //Les donnees utiles pour l'etat d'avancement ! step= DodicoLib.getStep(nbElem); ! pas= (int) (nbElem / step); ! pMax= pas; ! pourcStep= (int) (50 / step); int[] index; ! for (int i= 0; i < nbElem; i++) { in_.readFields(); if (in_.getNumberOfFields() < 2) { analyze_.addInfo( ! H2dResource.getS("Format attendu") ! + "NUM_ELEMENT NB_POINT P[1] ...P[NB_POINT]", ! in_); analyze_.addError( ! H2dResource.getS("La définition de l'élément {0} n'est pas valide"), ! in_); return null; } //le numero d'element ! temp= in_.intField(0); if (temp != (i + 1)) { analyze_.addInfo( ! H2dResource.getS( ! "L'index de l'élément ne correspond pas à l'index réel"), ! in_); } ! temp= in_.intField(1); if (temp <= 0) { analyze_.addError( ! H2dResource.getS( ! "Le nombre de points est négatif ou nul pour l'élément d'indice {0}", ! CtuluLib.getString(i + 1)), ! in_); return null; } if (in_.getNumberOfFields() != (temp + 2)) { analyze_.addInfo( ! H2dResource.getS("Nombre indiqué") ! + ": " ! + temp ! + "." ! + H2dResource.getS("Nombre lu") ! + ": " ! + (in_.getNumberOfFields() - 2), ! in_); analyze_.addFatalError( ! H2dResource.getS("Le nombre d'éléments est incorrect"), ! in_); return null; } ! index= new int[temp]; ! for (int j= 0; j < temp; j++) { //on stocke les indexs en commencant a 0. ! index[j]= in_.intField(2 + j) - 1; ! } ! elems[i]= new EfElement(index); ! if (afficheAvance) { ! if (i > pMax) { ! pourc += pourcStep; ! progress_.setProgression(pourc); ! pMax += pas; ! } } } in_.readFields(); if (!"0 0 0 0".equals(in_.getLine().trim())) { ! if (in_.getLine().trim() != "") ! analyze_.addWarn( ! H2dResource.getS("Cette ligne et les suivantes sont ignorées"), ! in_); } in_.readFields(); ! if (in_.getLine().trim() != "") ! analyze_.addWarn( ! H2dResource.getS("Cette ligne et les suivantes sont ignorées"), ! in_); } catch (EOFException e) { ! if (CtuluLib.DEBUG) ! CtuluLib.debug("Dunes Read end"); } catch (NumberFormatException fe) { ! analyze_.manageException(fe, in_); } catch (IOException _e) { analyze_.manageException(_e); } //Le mot clef noeud est trouve, on peut creer le maillage. ! EfGrid maillage= new EfGrid(points, elems); EfLib.orienteGrid(maillage, progress_, true, analyze_); ! source_= new DunesAdapter(); source_.setMaillage(maillage); source_.setAdaptatif(adaptatifs); return source_; } /** * @return --- 151,245 ---- if (in_.getNumberOfFields() != 1) { analyze_.addFatalError( ! H2dResource.getS("Cette ligne est invalide"), ! in_); return null; } ! int nbElem = in_.intField(0); ! elems = new EfElement[nbElem]; //Les donnees utiles pour l'etat d'avancement ! up.setValue(2, nbElem, 50, 50); ! up.majProgessionStateOnly(); int[] index; ! for (int i = 0; i < nbElem; i++) { in_.readFields(); if (in_.getNumberOfFields() < 2) { analyze_.addInfo( ! H2dResource.getS("Format attendu") ! + "NUM_ELEMENT NB_POINT P[1] ...P[NB_POINT]", ! in_); analyze_.addError( ! H2dResource.getS("La définition de l'élément {0} n'est pas valide"), ! in_); return null; } //le numero d'element ! temp = in_.intField(0); if (temp != (i + 1)) { analyze_.addInfo( ! H2dResource.getS( ! "L'index de l'élément ne correspond pas à l'index réel"), ! in_); } ! temp = in_.intField(1); if (temp <= 0) { analyze_.addError( ! H2dResource.getS( ! "Le nombre de points est négatif ou nul pour l'élément d'indice {0}", ! CtuluLib.getString(i + 1)), ! in_); return null; } if (in_.getNumberOfFields() != (temp + 2)) { analyze_.addInfo( ! H2dResource.getS("Nombre indiqué") ! + ": " ! + temp ! + "." ! + H2dResource.getS("Nombre lu") ! + ": " ! + (in_.getNumberOfFields() - 2), ! in_); analyze_.addFatalError( ! H2dResource.getS("Le nombre d'éléments est incorrect"), ! in_); return null; } ! index = new int[temp]; ! for (int j = 0; j < temp; j++) { //on stocke les indexs en commencant a 0. ! index[j] = in_.intField(2 + j) - 1; } + elems[i] = new EfElement(index); + up.majAvancement(); } in_.readFields(); if (!"0 0 0 0".equals(in_.getLine().trim())) { ! if (in_.getLine().trim() != "") ! analyze_.addWarn( ! H2dResource.getS("Cette ligne et les suivantes sont ignorées"), ! in_); } in_.readFields(); ! if (in_.getLine().trim() != "") ! analyze_.addWarn( ! H2dResource.getS("Cette ligne et les suivantes sont ignorées"), ! in_); } catch (EOFException e) { ! if (CtuluLib.DEBUG) ! CtuluLib.debug("Dunes Read end"); } catch (NumberFormatException fe) { ! analyze_.manageException(fe, in_); } catch (IOException _e) { analyze_.manageException(_e); } //Le mot clef noeud est trouve, on peut creer le maillage. ! EfGrid maillage = new EfGrid(points, elems); EfLib.orienteGrid(maillage, progress_, true, analyze_); ! source_ = new DunesAdapter(); source_.setMaillage(maillage); source_.setAdaptatif(adaptatifs); return source_; } + /** * @return *************** *** 258,266 **** return getDunesFileFormat(); } public DunesFileFormat getDunesFileFormat() { ! return (DunesFileFormat)version_.getFileFormat(); } /** ! * */ public FileFormatVersion getVersion() { --- 248,261 ---- return getDunesFileFormat(); } + + /** + * @return le format utilise + */ public DunesFileFormat getDunesFileFormat() { ! return (DunesFileFormat) version_.getFileFormat(); } + /** ! * @return la version utilisee */ public FileFormatVersion getVersion() { Index: DunesWriter.java =================================================================== RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesWriter.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** DunesWriter.java 12 Feb 2004 15:32:44 -0000 1.12 --- DunesWriter.java 31 Mar 2004 08:14:30 -0000 1.13 *************** *** 8,16 **** */ package org.fudaa.dodico.dunes.io; - import java.io.IOException; ! import org.fudaa.dodico.commun.DodicoAnalyze; import org.fudaa.dodico.commun.DodicoLib; import org.fudaa.dodico.commun.DodicoResource; import org.fudaa.dodico.ef.EfElement; import org.fudaa.dodico.ef.EfGrid; --- 8,16 ---- */ package org.fudaa.dodico.dunes.io; ! import java.io.IOException; import org.fudaa.dodico.commun.DodicoLib; import org.fudaa.dodico.commun.DodicoResource; + import org.fudaa.dodico.commun.ProgressionUpdater; import org.fudaa.dodico.ef.EfElement; import org.fudaa.dodico.ef.EfGrid; *************** *** 22,48 **** import org.fudaa.dodico.h2d.H2dResource; /** - * * @author deniger * @version $Id$ */ public class DunesWriter extends FileOpWriterCharSimpleAbstract { DunesFileFormat.DunesVersion version_; public DunesWriter() { this(DunesFileFormat.getInstance().getLastVersionImpl()); } public DunesWriter(DunesFileFormat.DunesVersion _f) { ! version_= _f; } public FileFormat getFileFormat() { return version_.getFileFormat(); } /** ! * Ecrire les donnees de l'interface <code>DunesInterface</code> ! * sur la sortie <code>Writer</code>. L'ecriture n'est effectuée ! * que si les points et elements du maillage sont non nuls. ! * La méthode se termine par un flush mais ne ferme pas le flux. */ protected void writeDunes(DunesInterface _d) { ! DunesInterface dunes_= _d; //Test sur les objets a ecrire if (dunes_ == null) { --- 22,60 ---- import org.fudaa.dodico.h2d.H2dResource; /** * @author deniger * @version $Id$ */ public class DunesWriter extends FileOpWriterCharSimpleAbstract { + DunesFileFormat.DunesVersion version_; + + /** + * Construit avec une version par defaut + */ public DunesWriter() { this(DunesFileFormat.getInstance().getLastVersionImpl()); } + + /** + * @param _f la version a utiliser + */ public DunesWriter(DunesFileFormat.DunesVersion _f) { ! version_ = _f; } + + /** + * @return le format utilise + */ public FileFormat getFileFormat() { return version_.getFileFormat(); } + /** ! * Ecrire les donnees de l'interface <code>DunesInterface</code> sur la sortie <code>Writer</code>. ! * L'ecriture n'est effectuée que si les points et elements du maillage sont non nuls. La méthode ! * se termine par un flush mais ne ferme pas le flux. */ protected void writeDunes(DunesInterface _d) { ! DunesInterface dunes_ = _d; //Test sur les objets a ecrire if (dunes_ == null) { *************** *** 54,66 **** return; } ! EfGrid maillage= dunes_.getGrid(); if (maillage == null) { analyze_.addFatalError("Le maillage est nul"); return; } ! int nPts= maillage.getPtsNb(); if (nPts == 0) { analyze_.addFatalError( ! H2dResource.getS("Le maillage ne contient pas de points")); return; } --- 66,78 ---- return; } ! EfGrid maillage = dunes_.getGrid(); if (maillage == null) { analyze_.addFatalError("Le maillage est nul"); return; } ! int nPts = maillage.getPtsNb(); if (nPts == 0) { analyze_.addFatalError( ! H2dResource.getS("Le maillage ne contient pas de points")); return; } *************** *** 71,91 **** // return; // } ! int nElems= maillage.getEltNb(); if (nElems == 0) { analyze_.addFatalError( ! H2dResource.getS("Le maillage ne contient pas d'éléments")); return; } ! StringBuffer b= new StringBuffer(600); b.append(version_.getNoeudCode()); b.append(' '); b.append(lineSep_); b.append(nPts); ! boolean printAdaptatifV= false; ! double[] adValeur= dunes_.getAdaptatifValeur(); b.append(' '); if (adValeur != null) { b.append(version_.getAdaptatifCode()); ! printAdaptatifV= true; } else { b.append(version_.getNonAdaptatifCode()); --- 83,103 ---- // return; // } ! int nElems = maillage.getEltNb(); if (nElems == 0) { analyze_.addFatalError( ! H2dResource.getS("Le maillage ne contient pas d'éléments")); return; } ! StringBuffer b = new StringBuffer(600); b.append(version_.getNoeudCode()); b.append(' '); b.append(lineSep_); b.append(nPts); ! boolean printAdaptatifV = false; ! double[] adValeur = dunes_.getAdaptatifValeur(); b.append(' '); if (adValeur != null) { b.append(version_.getAdaptatifCode()); ! printAdaptatifV = true; } else { b.append(version_.getNonAdaptatifCode()); *************** *** 94,111 **** //Gestion de l'etat d'avancement //le pas pour afficher l'etat d'avancement ! int pourc= 0; ! boolean afficheAvance= (progress_ == null ? false : true); if (afficheAvance) { progress_.setProgression(pourc); progress_.setDesc(H2dResource.getS("Ecriture fichier") + " dunes"); } ! int step= DodicoLib.getStep(nPts); ! int pas= (int) (nPts / step); ! int pMax= pas; ! int pourcStep= (int) (50 / step); EfNode pt; try { ! for (int i= 0; i < nPts; i++) { ! pt= maillage.getPt(i); b.append((i + 1)); b.append(' '); --- 106,121 ---- //Gestion de l'etat d'avancement //le pas pour afficher l'etat d'avancement ! int pourc = 0; ! boolean afficheAvance = (progress_ == null ? false : true); if (afficheAvance) { progress_.setProgression(pourc); progress_.setDesc(H2dResource.getS("Ecriture fichier") + " dunes"); } ! ProgressionUpdater up = new ProgressionUpdater(progress_); ! up.setValue(2, nPts); EfNode pt; try { ! for (int i = 0; i < nPts; i++) { ! pt = maillage.getPt(i); b.append((i + 1)); b.append(' '); *************** *** 121,131 **** } DodicoLib.writeTo(out_, b); ! if (afficheAvance) { ! if (i > pMax) { ! pourc += pourcStep; ! progress_.setProgression(pourc); ! pMax += pas; ! } ! } } //Cette ligne blanche est-elle utile ? --- 131,135 ---- } DodicoLib.writeTo(out_, b); ! up.majAvancement(); } //Cette ligne blanche est-elle utile ? *************** *** 138,152 **** b.append(lineSep_); //pour afficher l'etat d'avancement ! step= DodicoLib.getStep(nElems); ! pas= (int) (nElems / step); ! pMax= pas; ! pourcStep= (int) (50 / step); //les points par elements EfElement ppel; //le nombre de points par elements. int nppel; ! for (int i= 0; i < nElems; i++) { ! ppel= maillage.getElement(i); ! nppel= ppel.getPtNb(); //le num d'elements b.append((i + 1)); --- 142,154 ---- b.append(lineSep_); //pour afficher l'etat d'avancement ! up.setValue(2, nElems, 50, 50); ! up.majAvancement(); //les points par elements EfElement ppel; //le nombre de points par elements. int nppel; ! for (int i = 0; i < nElems; i++) { ! ppel = maillage.getElement(i); ! nppel = ppel.getPtNb(); //le num d'elements b.append((i + 1)); *************** *** 155,159 **** b.append(nppel); //les indices des points pour l'element i ! for (int j= 0; j < nppel; j++) { b.append(' '); //Les indices sont stockés a partir de 0. --- 157,161 ---- b.append(nppel); //les indices des points pour l'element i ! for (int j = 0; j < nppel; j++) { b.append(' '); //Les indices sont stockés a partir de 0. *************** *** 162,172 **** writeln(b); //mis a jour de l'etat d'avancement au cas ou. ! if (afficheAvance) { ! if (i > pMax) { ! pourc += pourcStep; ! progress_.setProgression(pourc); ! pMax += pas; ! } ! } } DodicoLib.writeTo(out_, b); --- 164,168 ---- writeln(b); //mis a jour de l'etat d'avancement au cas ou. ! up.majAvancement(); } DodicoLib.writeTo(out_, b); *************** *** 177,199 **** return; } /** ! * */ protected void _write(Object _o) { if (_o instanceof DunesInterface) { ! writeDunes((DunesInterface)_o); } else { analyze_.addFatalError(DodicoResource.getS("Données invalides")); } } /** ! * ! */ public final FileOperationSynthese write(DunesInterface _o) { writeDunes(_o); return closeOperation(_o); } /** ! * */ public FileFormatVersion getVersion() { --- 173,198 ---- return; } + /** ! * * */ protected void _write(Object _o) { if (_o instanceof DunesInterface) { ! writeDunes((DunesInterface) _o); } else { analyze_.addFatalError(DodicoResource.getS("Données invalides")); } } + /** ! * * ! */ public final FileOperationSynthese write(DunesInterface _o) { writeDunes(_o); return closeOperation(_o); } + /** ! * * */ public FileFormatVersion getVersion() { |