From: <bma...@us...> - 2009-02-02 09:49:01
|
Revision: 4433 http://fudaa.svn.sourceforge.net/fudaa/?rev=4433&view=rev Author: bmarchan Date: 2009-02-02 09:48:56 +0000 (Mon, 02 Feb 2009) Log Message: ----------- Recup?\195?\169ration/sauvegarde des pk sur fichiers Rubar ST. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStCnFileFormat.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStWriter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2009-01-30 18:59:41 UTC (rev 4432) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2009-02-02 09:48:56 UTC (rev 4433) @@ -158,6 +158,15 @@ }; /** + * Un attribut commentaire hydraulique, utilis\xE9 dans la lecture/ecriture des fichiers. + */ + public final static GISAttributeString COMMENTAIRE_HYDRO = new GISAttributeString(CtuluLib.getS("Commentaire hydro"), false) { + public String getID() { + return "ATTRIBUTE_HYDRO_COMMENT"; + } + }; + + /** * Un attribut bathy, atomique. */ public final static GISAttributeDouble BATHY = new GISAttributeDouble(CtuluLib.getS("z"), true) { @@ -180,7 +189,7 @@ /** La liste des attributs syst\xE8mes. */ protected final static List<GISAttribute> attrs_= - Arrays.asList(new GISAttribute[]{BATHY,TITRE,NATURE,VISIBILITE,ETAT_GEOM}); + Arrays.asList(new GISAttribute[]{BATHY,TITRE,NATURE,VISIBILITE,ETAT_GEOM,COMMENTAIRE_HYDRO}); private GISAttributeConstants() {} @@ -242,6 +251,9 @@ else if (VISIBILITE.isSameContent(res)) { res = VISIBILITE; } + else if (COMMENTAIRE_HYDRO.isSameContent(res)) { + res = COMMENTAIRE_HYDRO; + } } return res; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStCnFileFormat.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStCnFileFormat.java 2009-01-30 18:59:41 UTC (rev 4432) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStCnFileFormat.java 2009-02-02 09:48:56 UTC (rev 4433) @@ -25,6 +25,9 @@ */ public class RubarStCnFileFormat extends FileFormatUnique { + /** Commentaire hydro PK. Utilis\xE9 pour transporter les infos de l'import vers l'export. */ + public static final String COMM_HYDRO_PK="PK"; + public RubarStCnFileFormat() { super(1); extensions_ = new String[] { "st", "cn", "m", "sem" }; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2009-01-30 18:59:41 UTC (rev 4432) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2009-02-02 09:48:56 UTC (rev 4433) @@ -75,6 +75,7 @@ final List<LineString> lignes = new ArrayList<LineString>(200); final List<String> names=new ArrayList<String>(200); + final List<String> pks=new ArrayList<String>(200); final List<Coordinate> coordinatesEnCours = new ArrayList<Coordinate>(); // Contient les listes de coordonn\xE9es pour les lignes directrices (Map<String,ArrayList<Coordinate>> en Java 1.5) final Map<String, List<Coordinate>> mdirs=new HashMap<String, List<Coordinate>>(20); @@ -83,12 +84,14 @@ final int[] fmt1Line=new int[]{6,6,6,6,13,1,42}; Coordinate last = null; String name=""; + String pk=""; try { while (true) { if (isSt_) { in_.readFields(fmt1Line); name=in_.stringField(6).trim(); + pk=RubarStCnFileFormat.COMM_HYDRO_PK+"="+in_.stringField(4).trim(); } String first = CtuluLibString.EMPTY_STRING; String sec = CtuluLibString.EMPTY_STRING; @@ -119,6 +122,7 @@ final LineString str = GISLib.createLineOrLinearFromList(coordinatesEnCours); if (str != null) { lignes.add(str); + pks.add(pk); if ("".equals(name)) { names.add(CtuluLib.getS(isSt_?"P":"N")+((GISGeometry)str).getId()); } @@ -149,7 +153,9 @@ if (lignes.size() > 0) { final GISZoneCollectionLigneBrisee zligs = new GISZoneCollectionLigneBrisee(null); zligs.addAllLineStringClosedOrNode((LineString[]) lignes.toArray(new LineString[lignes.size()]), null); - zligs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE}, null); + zligs.setAttributes(new GISAttributeInterface[] { + GISAttributeConstants.BATHY, GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE, GISAttributeConstants.COMMENTAIRE_HYDRO}, null); if(zligs.getAttributeIsZ()==null) zligs.setAttributeIsZ(GISAttributeConstants.BATHY); zligs.postImport(0); @@ -159,6 +165,13 @@ for (int i=0; i<names.size(); i++) { attmod.setObject(i,attmod.getAttribute().createDataForGeom(names.get(i),1),null); } + + // Affectation de l'attribut commentaire hydro. + attmod=zligs.getModel(GISAttributeConstants.COMMENTAIRE_HYDRO); + for (int i=0; i<pks.size(); i++) { + attmod.setObject(i,attmod.getAttribute().createDataForGeom(pks.get(i),1),null); + } + // Affectation de l'attribut nature attmod=zligs.getModel(GISAttributeConstants.NATURE); for (int i=0; i<attmod.getSize(); i++) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStWriter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStWriter.java 2009-01-30 18:59:41 UTC (rev 4432) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStWriter.java 2009-02-02 09:48:56 UTC (rev 4433) @@ -48,6 +48,31 @@ } /** + * Retourne la valeur pour une propri\xE9t\xE9 hydraulique de type double. + * @param _comm Commentaire hydro sous la forme "<prop1>=<val>; <prop2>=<val>" + * @param _prop La propri\xE9t\xE9 a extraire. + * @return La valeur de la propri\xE9t\xE9. + */ + private double getHydroCommentDouble(String _comm, String _prop) { + double r=0; + + if (_comm!=null && !_comm.trim().equals("")) { + for (String cpl : _comm.split(";")) { + String[] nameval=cpl.split("="); + if (nameval.length==2 && nameval[0].equalsIgnoreCase(_prop)) { + try { + r=Double.parseDouble(nameval[1]); + break; + } + // En cas d'erreur, retourne 0. + catch (NumberFormatException _exc) {} + } + } + } + return r; + } + + /** * Ecrit les profils et les lignes directrices. * param _o Un tableau GISDataModel[2]. * [0] : le modele des profils (ou null si aucun profil), @@ -68,6 +93,7 @@ // profs_ = ((GISDataModel[])_o)[0]; final int attName=profs_.getIndiceOf(GISAttributeConstants.TITRE); + final int attPk=profs_.getIndiceOf(GISAttributeConstants.COMMENTAIRE_HYDRO); final int attNameLines=bldirs?lines.getIndiceOf(GISAttributeConstants.TITRE):-1; final int[] fmtEntete = new int[] { 6, 6, 6, 6, 13, 1, 42 }; @@ -81,13 +107,18 @@ for (int i = 0; i < profs_.getNumGeometries(); i++) { HashMap<Integer,ArrayList<Integer>> pts2ld=bldirs?pts2lds_[i]:null; String name; + double pk=0; final CoordinateSequence str = ((LineString) profs_.getGeometry(i)).getCoordinateSequence(); if (isSt_) { if (attName==-1||(name=(String)profs_.getValue(attName, i))==null) name=""; + // PK, issu du commentaire hydrualique. + if (attPk!=-1) { + pk=getHydroCommentDouble((String)profs_.getValue(attPk, i),RubarStCnFileFormat.COMM_HYDRO_PK); + } writer.setSpaceBefore(false); writer.stringField(6, name); writer.stringField(5, ""); - writer.doubleField(4, 0); + writer.doubleField(4, pk); writer.intField(3, str.size()); writer.intField(2, 0); writer.intField(1, 0); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java 2009-01-30 18:59:41 UTC (rev 4432) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java 2009-02-02 09:48:56 UTC (rev 4433) @@ -31,6 +31,7 @@ GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE, + GISAttributeConstants.COMMENTAIRE_HYDRO, GISAttributeConstants.VISIBILITE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2009-01-30 18:59:41 UTC (rev 4432) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2009-02-02 09:48:56 UTC (rev 4433) @@ -195,11 +195,11 @@ int idxAtt=col.getIndiceOf(GISAttributeConstants.NATURE); if (idxAtt==-1) { mdlautres.add(GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.polyCq_.get(i)), - new GISAttributeInterface[]{GISAttributeConstants.TITRE})); + new GISAttributeInterface[]{GISAttributeConstants.TITRE, GISAttributeConstants.COMMENTAIRE_HYDRO})); } else { GISDataModel mdl=GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.polyCq_.get(i)), - new GISAttributeInterface[]{GISAttributeConstants.TITRE, GISAttributeConstants.NATURE}); + new GISAttributeInterface[]{GISAttributeConstants.TITRE, GISAttributeConstants.NATURE, GISAttributeConstants.COMMENTAIRE_HYDRO}); if (GISAttributeConstants.ATT_NATURE_CN.equals(col.getValue(idxAtt, 0))) { mdlniv.add(mdl); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |