From: <emm...@us...> - 2008-10-08 13:37:10
|
Revision: 4046 http://fudaa.svn.sourceforge.net/fudaa/?rev=4046&view=rev Author: emmanuel_martin Date: 2008-10-08 13:36:53 +0000 (Wed, 08 Oct 2008) Log Message: ----------- modification du wizard d'import pour permettre de choisir l'ETAT_GEOM de chaque fichier import?\195?\169. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderCsv.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGIS.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGrid.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderI.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderInp.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadBER.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadPRO.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadSEM.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRefluxRefondeResult.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarCox.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarInx.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSem.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderSerafin.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderSinusX.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardFileMng.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardFileModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardImport.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardImportStepDestination.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrGisProjectEditor.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -0,0 +1,226 @@ +/* + * @creation 7 oct. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ctulu.gis; + +import java.util.ArrayList; +import java.util.List; + +import org.fudaa.ctulu.CtuluLibArray; +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Cet Adapter permet d'ajouter d'attributs globaux au DataModel. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class GISDataModelAttributAdapter implements GISDataModel{ + + // Le model adapt\xE9 + private GISDataModel dataModel_; + // Les nouveaux attributs + private List<GISAttributeInterface> newAttr_; + private List<Object[]> newValues_; + + public GISDataModelAttributAdapter(GISDataModel _dataModel){ + dataModel_ = _dataModel; + newAttr_ = new ArrayList<GISAttributeInterface>(1); + newValues_ = new ArrayList<Object[]>(1); + } + + /** + * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. + * L'atomicit\xE9 (ou la globalit\xE9) de l'attribut est respect\xE9. + * @param _attr l'attribut a ajouter + * @param _value une valeur unique qui sera dupliquer pour toutes les g\xE9om\xE9tries + * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) + * -2 si _attr ou _value sont null + */ + public int addAttribut(GISAttributeInterface _attr, Object _value){ + if(_attr==null||_value==null) + return -2; + if (dataModel_.getIndiceOf(_attr)==-1 && !newAttr_.contains(_attr)) { + newAttr_.add(_attr); + // Attribut atomique + if (_attr.isAtomicValue()) { + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++) + tmp[i]=_attr.createDataForGeom(_value, dataModel_.getGeometry(i).getNumPoints()); + newValues_.add(tmp); + } + // Attribut global + else { + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++) + tmp[i]=_value; + newValues_.add(tmp); + } + return 1; + } + else + return 0; + } + + /** + * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. + * si _attr est un attribut atomique, chaque valeur sera dupliqu\xE9 pour + * chaque sommet de la g\xE9om\xE9trie. + * @param _attr l'attribut a ajouter + * @param _values une valeur pour chaque g\xE9om\xE9trie. + * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) + * -1 en cas de tableau _values de mauvaise taille + * -2 si _attr ou _values sont null + */ + public int addAttribut(GISAttributeInterface _attr, Object[] _values){ + if(_attr==null||_values==null) + return -2; + if(dataModel_.getIndiceOf(_attr) == -1 && !newAttr_.contains(_attr)){ + if(_values.length != dataModel_.getNumGeometries()) + return -1; + // Attribut atomique + if (_attr.isAtomicValue()) { + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++) + tmp[i]=_attr.createDataForGeom(_values[i], dataModel_.getGeometry(i).getNumPoints()); + newAttr_.add(_attr); + newValues_.add(tmp); + } + // Attribut global + else { + newAttr_.add(_attr); + newValues_.add(_values); + } + return 1; + } + else + return 0; + } + + /** + * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. + * Cette m\xE9thode n'est d\xE9finie que pour les attributs atomiques. + * @param _attr l'attribut a ajouter + * @param _values une valeur pour chaque sommet de chaque g\xE9om\xE9trie. + * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) + * -1 en cas de tableau _values de mauvaise taille + * -2 si _attr ou _values sont null + * -3 si l'attribut n'est pas atomique + */ + public int addAttribut(GISAttributeInterface _attr, Object[][] _values){ + if(_attr==null||_values==null) + return -2; + if (_attr.isAtomicValue()) + if (dataModel_.getIndiceOf(_attr)==-1 && !newAttr_.contains(_attr)) { + if (_values.length!=dataModel_.getNumGeometries()) + return -1; + // Attribut atomique + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++){ + if(_values[i].length != dataModel_.getGeometry(i).getNumPoints()) + return -1; + tmp[i]=_attr.createDataForGeom(_values[i], _values[i].length); + } + newAttr_.add(_attr); + newValues_.add(tmp); + return 1; + } + else + return 0; + else + return -3; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int att) { + if(att<0) + return null; + if (dataModel_.getNbAttributes() > att) + return dataModel_.getAttribute(att); + else if(newAttr_.size() > att - dataModel_.getNbAttributes()) + return newAttr_.get(att - dataModel_.getNbAttributes()); + else return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int att, int geom) { + if(att>=0&&geom>=0){ + if (dataModel_.getNbAttributes() > att) + return dataModel_.getDoubleValue(att, geom); + else if(newAttr_.size() > att - dataModel_.getNbAttributes()) + return (Double)newValues_.get(att)[geom]; + else return 0; + } + return 0; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return dataModel_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int geom) { + if(geom<0||geom>=getNumGeometries()) + return null; + return dataModel_.getGeometry(geom); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + if(dataModel_.getIndiceOf(_att) != -1) + return dataModel_.getIndiceOf(_att); + else if(CtuluLibArray.findObjectEgalEgal(newAttr_, _att)!=-1) + return dataModel_.getNbAttributes()+CtuluLibArray.findObjectEgalEgal(newAttr_, _att); + else return -1; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return dataModel_.getNbAttributes()+newAttr_.size(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return dataModel_.getNumGeometries(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int att, int geom) { + if(att<0||geom<0) return null; + if (dataModel_.getNbAttributes() > att && geom < dataModel_.getNumGeometries()) + return dataModel_.getValue(att, geom); + else if(newAttr_.size() > att - dataModel_.getNbAttributes() && geom < dataModel_.getNumGeometries()) + return newValues_.get(att - dataModel_.getNbAttributes())[geom]; + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + dataModel_.preload(_att, _prog); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -650,6 +650,9 @@ if (GISAttributeConstants.TITRE.getID().equals(_name)) { return GISAttributeConstants.TITRE; } + else if (GISAttributeConstants.ETAT_GEOM.getID().equals(_name)) { + return GISAttributeConstants.ETAT_GEOM; + } return new GISAttributeString(_name); } else if (!Geometry.class.isAssignableFrom(_c)) { return new GISAttribute(CtuluValueEditorDefaults.STRING_EDITOR, _name); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -333,8 +333,9 @@ public int getIndiceOf(final GISAttributeInterface _att) { if (attListHasChanged_) { att2Idx_.clear(); - for (int i=0; i<attr_.length; i++) - att2Idx_.put(attr_[i].getAttribute(),new Integer(i)); + if(attr_!=null) + for (int i=0; i<attr_.length; i++) + att2Idx_.put(attr_[i].getAttribute(),new Integer(i)); attListHasChanged_=false; } Integer idx=att2Idx_.get(_att); Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -0,0 +1,303 @@ +/* + * @creation 8 oct. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ctulu.gis; + +import junit.framework.TestCase; + +import org.fudaa.ctulu.gui.CtuluValueEditorDouble; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.Point; + +/** + * Test de la classe GISDataModelAttributAdapter. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class TestGISDataModelAttributAdapter extends TestCase { + + private GISZoneCollection zoneEmpty_; + private GISZoneCollection zoneNoEmpty_; + private GISAttributeInterface[] attr_; + private Geometry[] geometries_; + private GISDataModelAttributAdapter adapterInitialised_; + + /** + * @param name + */ + public TestGISDataModelAttributAdapter(String name) { + super(name); + } + + public void testAddAttribut_1(){ + // TEST SUR LA ZONE NON VIDE \\ + // Test de la valeur de retour Sur un attribut global + assertEquals(1, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI)); + assertEquals(0, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI)); + // Test de de la valeur de retour sur un attribut atomique + GISAttribute attr = new GISAttribute(new CtuluValueEditorDouble(), "MyAttributAtomique", true); + assertEquals(1, adapterInitialised_.addAttribut(attr, new Double(2))); + assertEquals(0, adapterInitialised_.addAttribut(attr, new Double(12))); + // Test de coh\xE9rence des attributs + assertEquals(GISAttributeConstants.ETAT_GEOM, adapterInitialised_.getAttribute(attr_.length)); + assertEquals(attr, adapterInitialised_.getAttribute(attr_.length+1)); + // Test de coh\xE9rence des valeurs d'attribut + assertEquals(GISAttributeConstants.ATT_VAL_ETAT_MODI, adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-2, 0)); + assertEquals(GISAttributeConstants.ATT_VAL_ETAT_MODI, adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-2, adapterInitialised_.getNumGeometries()-1)); + Object result = adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-1, 0); + assertTrue(result instanceof GISAttributeModelObjectArray); + assertNotNull(result); + GISAttributeModelObjectArray expected = (GISAttributeModelObjectArray)attr.createDataForGeom(new Double(2), zoneNoEmpty_.getGeometry(0).getNumPoints()); + assertEquals(expected.getSize(), ((GISAttributeModelObjectArray)result).getSize()); + for(int i=0;i<expected.getSize();i++) + assertEquals(expected.getValue(i), ((GISAttributeModelObjectArray)result).getValue(i)); + + // TEST SUR LA ZONE VIDE \\ + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(zoneEmpty_); + // Test de la valeur de retour Sur un attribut global + assertEquals(1, adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI)); + assertEquals(0, adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI)); + // Test de de la valeur de retour sur un attribut atomique + assertEquals(1, adapter.addAttribut(attr, new Double(2))); + assertEquals(0, adapter.addAttribut(attr, new Double(12))); + // Test de coh\xE9rence des attributs + assertEquals(GISAttributeConstants.ETAT_GEOM, adapter.getAttribute(0)); + assertEquals(attr, adapter.getAttribute(1)); + + // TEST AVEC VALEURS NULL \\ + assertEquals(-2, adapterInitialised_.addAttribut(null, new Double(2))); + assertEquals(-2, adapterInitialised_.addAttribut(GISAttributeConstants.VISIBILITE, null)); + assertEquals(-2, adapterInitialised_.addAttribut(null, null)); + } + + public void testAddAttribut_2(){ + // TEST SUR LA ZONE NON VIDE \\ + // Test de la valeur de retour Sur un attribut global + Object[] valuesEtatGeom = new Object[geometries_.length]; + for(int i=0;i<geometries_.length;i++) + if(i>0 && valuesEtatGeom[i-1]==GISAttributeConstants.ATT_VAL_ETAT_ORIG) + valuesEtatGeom[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + else + valuesEtatGeom[i]=GISAttributeConstants.ATT_VAL_ETAT_ORIG; + assertEquals(-1, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, new Object[0])); + assertEquals(1, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, valuesEtatGeom)); + assertEquals(0, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, valuesEtatGeom)); + // Test de de la valeur de retour sur un attribut atomique + Object[] valuesMyAttr = new Object[geometries_.length]; + for(int i=0;i<geometries_.length;i++) + valuesMyAttr[i]=new Double(i); + GISAttribute attr = new GISAttribute(new CtuluValueEditorDouble(), "MyAttributAtomique", true); + assertEquals(1, adapterInitialised_.addAttribut(attr, valuesMyAttr)); + assertEquals(0, adapterInitialised_.addAttribut(attr, valuesMyAttr)); + // Test de coh\xE9rence des attributs + assertEquals(GISAttributeConstants.ETAT_GEOM, adapterInitialised_.getAttribute(attr_.length)); + assertEquals(attr, adapterInitialised_.getAttribute(attr_.length+1)); + // Test de coh\xE9rence des valeurs d'attribut + assertEquals(valuesEtatGeom[0], adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-2, 0)); + assertEquals(valuesEtatGeom[adapterInitialised_.getNumGeometries()-1], adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-2, adapterInitialised_.getNumGeometries()-1)); + Object result = adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-1, 0); + assertTrue(result instanceof GISAttributeModelObjectArray); + assertNotNull(result); + GISAttributeModelObjectArray expected = (GISAttributeModelObjectArray)attr.createDataForGeom(valuesMyAttr[0], zoneNoEmpty_.getGeometry(0).getNumPoints()); + assertEquals(expected.getSize(), ((GISAttributeModelObjectArray)result).getSize()); + for(int i=0;i<expected.getSize();i++) + assertEquals(expected.getValue(i), ((GISAttributeModelObjectArray)result).getValue(i)); + + // TEST SUR LA ZONE VIDE \\ + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(zoneEmpty_); + // Test de la valeur de retour Sur un attribut global + assertEquals(-1, adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, valuesEtatGeom)); + assertEquals(1, adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, new Object[0])); + assertEquals(0, adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, new Object[0])); + // Test de de la valeur de retour sur un attribut atomique + assertEquals(-1, adapter.addAttribut(attr, valuesMyAttr)); + assertEquals(1, adapter.addAttribut(attr, new Object[0])); + assertEquals(0, adapter.addAttribut(attr, new Object[0])); + // Test de coh\xE9rence des attributs + assertEquals(GISAttributeConstants.ETAT_GEOM, adapter.getAttribute(0)); + assertEquals(attr, adapter.getAttribute(1)); + + // TEST AVEC VALEURS NULL \\ + assertEquals(-2, adapterInitialised_.addAttribut(null, new Double[geometries_.length])); + } + + public void testAddAttribut_3(){ + // TEST SUR LA ZONE NON VIDE \\ + // Test de la valeur de retour Sur un attribut global + assertEquals(-3, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, new Object[0][0])); + // Test de de la valeur de retour sur un attribut atomique + Object[][] valuesMyAttr = new Object[geometries_.length][]; + for(int i=0;i<geometries_.length;i++){ + valuesMyAttr[i] = new Object[geometries_[i].getNumPoints()]; + for(int j=0;j<valuesMyAttr[i].length;j++) + valuesMyAttr[i][j] = new Double(i+j); + } + GISAttribute attr = new GISAttribute(new CtuluValueEditorDouble(), "MyAttributAtomique", true); + assertEquals(-1, adapterInitialised_.addAttribut(attr, new Object[0][0])); + assertEquals(-1, adapterInitialised_.addAttribut(attr, new Object[geometries_.length][0])); + assertEquals(1, adapterInitialised_.addAttribut(attr, valuesMyAttr)); + assertEquals(0, adapterInitialised_.addAttribut(attr, valuesMyAttr)); + // Test de coh\xE9rence des attributs + assertEquals(attr, adapterInitialised_.getAttribute(attr_.length)); + // Test de coh\xE9rence des valeurs d'attribut + Object result = adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-1, 0); + assertTrue(result instanceof GISAttributeModelObjectArray); + assertNotNull(result); + GISAttributeModelObjectArray expected = (GISAttributeModelObjectArray)attr.createDataForGeom(valuesMyAttr[0], zoneNoEmpty_.getGeometry(0).getNumPoints()); + assertEquals(expected.getSize(), ((GISAttributeModelObjectArray)result).getSize()); + for(int i=0;i<expected.getSize();i++) + assertEquals(expected.getValue(i), ((GISAttributeModelObjectArray)result).getValue(i)); + + + // TEST SUR LA ZONE VIDE \\ + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(zoneEmpty_); + // Test de la valeur de retour Sur un attribut global + assertEquals(-3, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, new Object[0][0])); + // Test de de la valeur de retour sur un attribut atomique + assertEquals(-1, adapter.addAttribut(attr, valuesMyAttr)); + assertEquals(1, adapter.addAttribut(attr, new Object[0][])); + assertEquals(0, adapter.addAttribut(attr, new Object[0][])); + // Test de coh\xE9rence des attributs + assertEquals(attr, adapter.getAttribute(0)); + + // TEST AVEC VALEURS NULL \\ + assertEquals(-2, adapterInitialised_.addAttribut(null, new Double[geometries_.length][])); + assertEquals(-2, adapterInitialised_.addAttribut(null, new Double[geometries_.length][0])); + } + + public void testGetAttribut(){ + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(attr_[0], adapterInitialised_.getAttribute(0)); + assertEquals(GISAttributeConstants.ETAT_GEOM, adapterInitialised_.getAttribute(attr_.length)); + assertNull(adapterInitialised_.getAttribute(-1)); + assertNull(adapterInitialised_.getAttribute(attr_.length+1)); + } + + public void testGetDoubleValue(){ + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals((Double)GISAttributeConstants.BATHY.getDefaultValue(), adapterInitialised_.getDoubleValue(0, 0), 0.00001); + assertEquals(0.0, adapterInitialised_.getDoubleValue(-1, 0), 0.00001); + assertEquals(0.0, adapterInitialised_.getDoubleValue(0, -1), 0.00001); + assertEquals(0.0, adapterInitialised_.getDoubleValue(-1, -1), 0.00001); + } + + public void testGetEnvelopeInternal(){ + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(zoneNoEmpty_.getEnvelopeInternal(), adapterInitialised_.getEnvelopeInternal()); + } + + public void testGetGeometry(){ + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(geometries_[0], adapterInitialised_.getGeometry(0)); + assertEquals(geometries_[attr_.length-1], adapterInitialised_.getGeometry(attr_.length-1)); + assertNull(adapterInitialised_.getGeometry(-1)); + assertNull(adapterInitialised_.getGeometry(attr_.length)); + } + + public void testGetIndiceOf(){ + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(0, adapterInitialised_.getIndiceOf(attr_[0])); + assertEquals(attr_.length-1, adapterInitialised_.getIndiceOf(attr_[attr_.length-1])); + assertEquals(attr_.length, adapterInitialised_.getIndiceOf(GISAttributeConstants.ETAT_GEOM)); + assertEquals(-1, adapterInitialised_.getIndiceOf(GISAttributeConstants.VISIBILITE)); + assertEquals(-1, adapterInitialised_.getIndiceOf(null)); + } + + public void testGetNbAttributes(){ + assertEquals(attr_.length, adapterInitialised_.getNbAttributes()); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(zoneEmpty_); + assertEquals(0, adapter.getNbAttributes()); + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(attr_.length+1, adapterInitialised_.getNbAttributes()); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(1, adapter.getNbAttributes()); + } + + public void testGetNumGeometries(){ + assertEquals(geometries_.length, adapterInitialised_.getNumGeometries()); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(zoneEmpty_); + assertEquals(0, adapter.getNumGeometries()); + } + + public void testGetValue(){ + GISAttributeModelDoubleArray reel = (GISAttributeModelDoubleArray) GISAttributeConstants.BATHY.createDataForGeom(GISAttributeConstants.BATHY.getDefaultValue(), geometries_[0].getNumGeometries()); + Object actual = adapterInitialised_.getValue(0, 0); + assertTrue(actual instanceof GISAttributeModelDoubleArray); + assertNotNull(actual); + assertTrue(reel.getSize()==((GISAttributeModelDoubleArray)actual).getSize()); + for(int i=0;i<reel.getSize();i++) + assertEquals((Double)reel.getValue(i),(Double) ((GISAttributeModelDoubleArray)actual).getValue(i), 0.00001); + + Object result = GISAttributeConstants.NATURE.createDataForGeom(GISAttributeConstants.NATURE.getDefaultValue(), geometries_[0].getNumGeometries()); + assertEquals(result, (String)adapterInitialised_.getValue(1, 0)); + + GISAttributeModelObjectArray reel2 = (GISAttributeModelObjectArray) attr_[2].createDataForGeom(attr_[2].getDefaultValue(), geometries_[0].getNumGeometries()); + actual = adapterInitialised_.getValue(2, 0); + assertTrue(actual instanceof GISAttributeModelObjectArray); + assertNotNull(actual); + assertTrue(reel2.getSize()==((GISAttributeModelObjectArray)actual).getSize()); + for(int i=0;i<reel2.getSize();i++) + assertEquals(reel2.getValue(i),((GISAttributeModelObjectArray)actual).getValue(i)); + + reel2 = (GISAttributeModelObjectArray) attr_[2].createDataForGeom(attr_[2].getDefaultValue(), geometries_[1].getNumGeometries()); + actual = adapterInitialised_.getValue(2, 1); + assertTrue(actual instanceof GISAttributeModelObjectArray); + assertNotNull(actual); + assertTrue(reel2.getSize()==((GISAttributeModelObjectArray)actual).getSize()); + for(int i=0;i<reel2.getSize();i++) + assertEquals(reel2.getValue(i),((GISAttributeModelObjectArray)actual).getValue(i)); + + assertNull(adapterInitialised_.getValue(-1, 0)); + assertNull(adapterInitialised_.getValue(0, -1)); + assertNull(adapterInitialised_.getValue(-1, -1)); + assertNull(adapterInitialised_.getValue(attr_.length, 0)); + assertNull(adapterInitialised_.getValue(0, geometries_.length)); + assertNull(adapterInitialised_.getValue(attr_.length, geometries_.length)); + } + + /* (non-Javadoc) + * @see junit.framework.TestCase#setUp() + */ + protected void setUp() throws Exception { + super.setUp(); + zoneEmpty_ = new GISZoneCollectionGeometry(); + zoneNoEmpty_ = new GISZoneCollectionGeometry(); + // Ajout d'attributs \\ + attr_ = new GISAttributeInterface[]{ + GISAttributeConstants.BATHY, + GISAttributeConstants.NATURE, + new GISAttribute(new CtuluValueEditorDouble(), "MyAttribut", true) + }; + zoneNoEmpty_.setAttributes(attr_, null); + // Ajout de g\xE9om\xE9tries \\ + geometries_ = new Geometry[]{ + GISGeometryFactory.INSTANCE.createPoint(0, 0, 0), + GISGeometryFactory.INSTANCE.createMultiPoint(new Point[]{GISGeometryFactory.INSTANCE.createPoint(1, 2, 3), GISGeometryFactory.INSTANCE.createPoint(4, 5, 6)}), + GISGeometryFactory.INSTANCE.createLinearRing(new Coordinate[]{new Coordinate(7, 8), new Coordinate(4, 10), new Coordinate(9, 10), new Coordinate(7, 8)}) + }; + for (int j=0; j<geometries_.length; j++) { + Object[] attrModel=new Object[attr_.length]; + for (int i=0; i<attr_.length; i++) + attrModel[i] =attr_[i].createDataForGeom(attr_[i].getDefaultValue(), geometries_[j].getNumPoints()); + zoneNoEmpty_.addGeometry(geometries_[j], attrModel, null); + } + adapterInitialised_ = new GISDataModelAttributAdapter(zoneNoEmpty_); + } + + /* (non-Javadoc) + * @see junit.framework.TestCase#tearDown() + */ + protected void tearDown() throws Exception { + super.tearDown(); + zoneEmpty_=null; + zoneNoEmpty_=null; + attr_=null; + } + +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -758,9 +758,9 @@ if (geometries_ == null) { return false; } - geometries_.removeGeometries(_idx, _cmd); for(int i=0 ; i<_idx.length;i++) setGeomModif(_idx[i], _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie + geometries_.removeGeometries(_idx, _cmd); return true; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -8,50 +8,39 @@ package org.fudaa.fudaa.modeleur; import java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import javax.swing.filechooser.FileFilter; - import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.CtuluRunnable; -import org.fudaa.ctulu.CtuluTaskDelegate; import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.gis.factory.GISExportDataStoreFactory; import org.fudaa.ctulu.gui.CtuluDialogPanel; -import org.fudaa.ctulu.gui.CtuluFileChooser; -import org.fudaa.ctulu.gui.CtuluFileChooserTestWritable; import org.fudaa.ctulu.gui.CtuluLibSwing; -import org.fudaa.dodico.rubar.io.RubarStCnFileFormat; -import org.fudaa.dodico.telemac.io.SinusxFileFormat; import org.fudaa.ebli.calque.BCalque; +import org.fudaa.ebli.calque.BGroupeCalque; +import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.action.SceneSplitAction; import org.fudaa.ebli.calque.edition.ZCalqueEditable; import org.fudaa.ebli.commun.EbliActionAbstract; import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.fudaa.commun.FudaaLib; -import org.fudaa.fudaa.commun.impl.FudaaGuiLib; -import org.fudaa.fudaa.commun.save.FudaaSaveLib; -import org.fudaa.fudaa.commun.save.FudaaSaveZipLoader; +import org.fudaa.fudaa.modeleur.action.CalqueNewCalqueAction; import org.fudaa.fudaa.modeleur.action.SceneDecimationAction; import org.fudaa.fudaa.modeleur.action.SceneInterpolationAction; import org.fudaa.fudaa.modeleur.action.SceneMoveInLayerAction; import org.fudaa.fudaa.modeleur.action.SceneProjectionAction; import org.fudaa.fudaa.modeleur.action.SceneRefinementAction; +import org.fudaa.fudaa.modeleur.layer.MdlLayerFactory; +import org.fudaa.fudaa.modeleur.layer.MdlLayerInterface; +import org.fudaa.fudaa.ressource.FudaaResource; import org.fudaa.fudaa.sig.layer.FSigEditor; import org.fudaa.fudaa.sig.layer.FSigLayerExporter; import org.fudaa.fudaa.sig.layer.FSigLayerFilter; +import org.fudaa.fudaa.sig.layer.FSigLayerGroup; import org.fudaa.fudaa.sig.layer.FSigVisuPanel; -import org.geotools.data.FileDataStoreFactorySpi; -import com.memoire.bu.BuFileFilter; import com.memoire.bu.BuWizardDialog; -import com.memoire.fu.FuLog; /** * Un manager pour l'\xE9dition des calques SIG. @@ -93,7 +82,21 @@ */ public void importSelectedLayer() { final ZCalqueEditable ed = super.getTarget(); - final MdlWizardImport importWizard = new MdlWizardImport(getEnglobPolygone(), ed, + + BGroupeCalque dest = null; + BCalque parent = null; + if (ed == null) { + parent = super.getPanel().getArbreCalqueModel().getSelectedCalque(); + } else { + parent = (BCalque) ((BCalque) ed).getParent(); + } + if (parent instanceof BGroupeCalque) { + dest = (BGroupeCalque) parent; + } else { + return; + } + + final MdlWizardImport importWizard = new MdlWizardImport(dest, this, getEnglobPolygone(), ed, ((FSigVisuPanel) getPanel()).getImpl(),((FSigVisuPanel) getPanel()).getCmdMng()); final BuWizardDialog dialog = new BuWizardDialog(CtuluLibSwing.getFrameAncestorHelper(super.getPanel()), importWizard); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -7,6 +7,15 @@ */ package org.fudaa.fudaa.modeleur; +import java.awt.Dimension; +import java.util.Map; + +import javax.swing.JComponent; +import javax.swing.event.ListDataEvent; +import javax.swing.event.ListDataListener; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; + import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandManager; @@ -19,18 +28,29 @@ import org.fudaa.ctulu.gis.GISDataModel; import org.fudaa.ctulu.gis.GISDataModelFilterAdapter; import org.fudaa.ctulu.gis.GISDataModelPointMultiPointAdapter; +import org.fudaa.ctulu.gis.GISDataModelPointPolyAdapter; import org.fudaa.ctulu.gis.GISPolygone; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint; +import org.fudaa.ctulu.gis.GISZoneCollectionPoint; +import org.fudaa.ebli.calque.BGroupeCalque; +import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.ZCalqueEditable; +import org.fudaa.ebli.calque.edition.ZCalqueEditionGroup; import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.modeleur.layer.MdlLayer2dLine; import org.fudaa.fudaa.modeleur.layer.MdlLayer2dMultiPoint; +import org.fudaa.fudaa.modeleur.layer.MdlLayerFactory; +import org.fudaa.fudaa.modeleur.layer.MdlLayerInterface; import org.fudaa.fudaa.modeleur.layer.MdlModel2dLine; import org.fudaa.fudaa.modeleur.layer.MdlModel2dMultiPoint; +import org.fudaa.fudaa.sig.FSigExportImportAttributesMapper; import org.fudaa.fudaa.sig.FSigLib; +import org.fudaa.fudaa.sig.layer.FSigEditor; +import org.fudaa.fudaa.sig.wizard.FSigFileLoaderPanel; import org.fudaa.fudaa.sig.wizard.FSigWizardImport; +import org.fudaa.fudaa.sig.wizard.FSigWizardImportStepDestination; /** * Un wizard d'import de donn\xE9es dans le calque cible. Il est limit\xE9 \xE0 1 etape. @@ -40,17 +60,75 @@ public class MdlWizardImport extends FSigWizardImport { CtuluCommandManager mng_; + private BGroupeCalque mdlDest_; + private FSigEditor mdlEditor_; + + + /** * @param _previewZone * @param _selectedLayer * @param _impl */ - public MdlWizardImport(GISPolygone[] _previewZone, ZCalqueEditable _selectedLayer, CtuluUI _impl, CtuluCommandManager _mng) { + public MdlWizardImport(BGroupeCalque _dest, FSigEditor _editor, GISPolygone[] _previewZone, ZCalqueEditable _selectedLayer, CtuluUI _impl, CtuluCommandManager _mng) { super(null, _previewZone, _selectedLayer, _impl); mng_=_mng; + mdlDest_=_dest; + mdlEditor_=_editor; + + // Exemple de cr\xE9ation d'un sous calque pour un BGroupeCalque + /* + int cqType_ = MdlLayerFactory.LAYER2D_CLOUD; + ZCalqueAffichageDonnees cq=MdlLayerFactory.getInstance().createLayer(cqType_, editor_); + cq.setName(BGroupeCalque.findUniqueChildName(parent_, ((MdlLayerInterface)cq).getExtName())); + parent_.enDernier(cq); + */ } + + public JComponent getStepComponent() { + if (current_ == 0) { + if (fileLoader_ == null) { + srcAtt_.addListDataListener(new ListDataListener() { - @Override + public void contentsChanged(final ListDataEvent _e) { + rebuildAtt(); + } + + public void intervalAdded(final ListDataEvent _e) { + rebuildAtt(); + } + + public void intervalRemoved(final ListDataEvent _e) { + rebuildAtt(); + } + }); + fileLoader_ = new FSigFileLoaderPanel(srcAtt_, impl_, previewZone_); + fileLoader_.setPreferredSize(new Dimension(450, 400)); + fileLoader_.setAttributeRequired(false); + fileLoader_.getFileMng().getModel().addTableModelListener(new TableModelListener() { + + public void tableChanged(final TableModelEvent _e) { + data_ = null; + } + }); + } + return fileLoader_; + } else if (current_ == 1) { + if (mapper_ == null) { + if (dest_!=null && dest_.getAttributes()!=null) + mapper_ = new FSigExportImportAttributesMapper(src_, dest_.getAttributes(), false); + } + if (pnDest_==null) pnDest_=new FSigWizardImportStepDestination(mdlDest_); + pnDest_.setMapper(mapper_); + pnDest_.setSrc(data_); + pnDest_.setSelectedLayer(selectedLayer_); + pnDest_.update(); + return pnDest_; + } + return null; + } + + public void doTask() { CtuluAnalyze analyze=new CtuluAnalyze(); if (data_==null) data_ = fileLoader_.loadAll(null, analyze); @@ -124,12 +202,84 @@ } if (mng_!=null) mng_.addCmd(cmp.getSimplify()); } + + /*protected void importData(final ProgressionInterface _prog) { + if (data_ == null || mapper_ == null) { + return; + } + final Map r = mapper_.getDestReadMap(); + final GISAttributeInterface[] dest = dest_.getAttributes(); + final GISAttributeInterface[] attChosen = new GISAttributeInterface[dest == null ? 0 : dest.length]; + boolean doPost = true; + for (int i = attChosen.length - 1; i >= 0; i--) { + // dest n'est pas null ici + attChosen[i] = (GISAttributeInterface) r.get(dest[i]); + if (dest[i] == GISAttributeConstants.BATHY && attChosen[i] != null) { + doPost = false; + } + } + data_.preload(attChosen, _prog); + final CtuluCommandComposite cmp = new CtuluCommandComposite(); + if (pnDest_.importPoint_.isOk() && data_.getNbPoints() > 0) { + // creation du calque de dest. + final GISZoneCollectionPoint pt = createPointLayer(cmp); + final GISDataModel[] pts = data_.getPoints(); + final int nb = pts.length; + for (int i = 0; i < nb; i++) { + final GISDataModel model = GISDataModelFilterAdapter.buildPointAdapter(pts[i], attChosen); + pt.addAll(model, cmp, false); + } + } + if (pnDest_.importLignes_.isOk()) { + GISZoneCollectionLigneBrisee line = null; + if (data_.getNbPolygones() > 0 || data_.getNbPolylignes() > 0) { + // creation du calque de dest. + line = createLineLayer(cmp); + GISDataModel[] lines = data_.getPolylignes(); + if (line != null) { + final int nb = lines.length; + for (int i = 0; i < nb; i++) { + final GISDataModel model = GISDataModelFilterAdapter.buildLigneAdapter(lines[i], attChosen); + line.addAll(model, cmp, doPost); + } + } + lines = data_.getPolygones(); + if (lines != null && line != null) { + final int nb = lines.length; + for (int i = 0; i < nb; i++) { + final GISDataModel model = GISDataModelFilterAdapter.buildLigneAdapter(lines[i], attChosen); + line.addAll(model, cmp, doPost); + } + } + } + if (pnDest_.cbImportLignesFromPt_.isSelected() && data_.getNbPoints() > 0) { + final GISDataModel[] pts = data_.getPoints(); + final int nb = pts.length; + final GISDataModelPointPolyAdapter.PolyOption option = new GISDataModelPointPolyAdapter.PolyOption(); + if (pnDest_.cmbImpLinesFromPt_.getSelectedIndex() == 1) { + option.setPoly(); + } else if (pnDest_.cmbImpLinesFromPt_.getSelectedIndex() == 2) { + option.setCheck(); + } + for (int i = 0; i < nb; i++) { + if (pts[i].getNumGeometries() > 2) { + if (line == null) { + line = createLineLayer(cmp); + } + line.addAll(new GISDataModelPointPolyAdapter(pts[i], attChosen, option), cmp, doPost); + } + } + } + } + + dest_.getCmdMng().addCmd(cmp.getSimplify()); + }*/ + @Override public int getStepCount() { return 1; } - } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -35,8 +35,8 @@ private boolean first_ = true; - public Set allAttribute_ = new HashSet(); - public Set attribute_ = new HashSet(); + public Set<GISAttributeInterface> allAttribute_ = new HashSet<GISAttributeInterface>(); + public Set<GISAttributeInterface> attribute_ = new HashSet<GISAttributeInterface>(); /** La somme des points contenus dans tous les mod\xE8les de points */ public int nbPoint_; @@ -47,11 +47,11 @@ /** La somme des poylignes contenus dans tous les mod\xE8les de polylignes */ public int nbPolylignes_; /** La liste des mod\xE8les {@link GISDataModel} de polylignes */ - public List ligneModel_ = new ArrayList(); + public List<GISDataModel> ligneModel_ = new ArrayList<GISDataModel>(); /** La liste des mod\xE8les {@link GISDataModel} de points */ - public List pointModel_ = new ArrayList(); + public List<GISDataModel> pointModel_ = new ArrayList<GISDataModel>(); /** La liste des mod\xE8les {@link GISDataModel} de polygones */ - public List polygoneModel_ = new ArrayList(); + public List<GISDataModel> polygoneModel_ = new ArrayList<GISDataModel>(); /** La liste des mod\xE8les {@link GISDataModel} de multipoints */ public void addUsedAttributes(final GISAttributeInterface[] _att) { @@ -112,7 +112,7 @@ } private GISAttributeInterface findAttributes(final String _name, final Class _clazz, final boolean _isAtomic) { - for (final Iterator it = allAttribute_.iterator(); it.hasNext();) { + for (final Iterator<GISAttributeInterface> it = allAttribute_.iterator(); it.hasNext();) { final GISAttributeInterface att = (GISAttributeInterface) it.next(); if (att.isAtomicValue() == _isAtomic && att.getName().equals(_name) && att.getDataClass().equals(_clazz)) { return att; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderCsv.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderCsv.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderCsv.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -13,23 +13,23 @@ import java.util.List; import java.util.Map; -import com.memoire.bu.BuFileFilter; - import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluDoubleParser; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; import org.fudaa.ctulu.gis.GISDataModelListPtAdapter; import org.fudaa.ctulu.gis.GISPoint; - import org.fudaa.dodico.mesure.DodicoCsvReader; - import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.sig.FSigLib; +import com.memoire.bu.BuFileFilter; + /** * @author Fred Deniger * @version $Id: FSigFileLoaderCsv.java,v 1.2 2007-05-04 14:00:26 deniger Exp $ @@ -134,7 +134,7 @@ return ft_; } - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { final XYCsvReader reader = new XYCsvReader(); final CtuluDoubleParser parser = new CtuluDoubleParser(); @@ -158,7 +158,7 @@ double[][] attValues = null; final String[] name = reader.getName(); GISAttributeInterface[] att = null; - if (values.length > 2) { + if (values.length > 2) { // On ne prend pas le x et le y att = new GISAttributeInterface[values.length - 2]; attValues = new double[att.length][]; for (int i = att.length - 1; i >= 0; i--) { @@ -171,7 +171,12 @@ } _r.nbPoint_ += pt.length; _r.nbPointTotal_ += pt.length; - _r.pointModel_.add(new GISDataModelListPtAdapter(pt, att, attValues)); + // Ajout de l'attribut ETAT_GEOM + _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(new GISDataModelListPtAdapter(pt, att, attValues)); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); + // + _r.pointModel_.add(adapter); } } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGIS.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGIS.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGIS.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -23,6 +23,9 @@ import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; +import org.fudaa.ctulu.gis.GISDataModelListPtAdapter; import org.fudaa.ctulu.gis.GISGeometry; import org.fudaa.ctulu.gis.GISVisitorDefault; @@ -96,7 +99,7 @@ } - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { if (src_ == null) { try { @@ -120,15 +123,20 @@ if (src_ != null && src_.getNumGeometries() > 0) { src_.atts_ = null; src_.buildAttributes(_r); + // Ajout de l'attribut ETAT_GEOM + _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(src_); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); + // _r.addUsedAttributes(src_.atts_); if (nbPoint_ > 0) { - _r.pointModel_.add(src_); + _r.pointModel_.add(adapter); } if (nbPolygone_ > 0) { - _r.polygoneModel_.add(src_); + _r.polygoneModel_.add(adapter); } if (nbPolyligne_ > 0) { - _r.ligneModel_.add(src_); + _r.ligneModel_.add(adapter); } _r.nbPoint_ += nbPoint_; _r.nbPointTotal_ += nbPointTotal_; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGrid.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGrid.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGrid.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -16,6 +16,7 @@ import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; import org.fudaa.dodico.ef.EfGridInterface; import org.fudaa.dodico.ef.EfGridSource; @@ -51,7 +52,7 @@ EfGridGisAdapter adapter_; - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { if (adapter_ == null) { final CtuluIOOperationSynthese op = version_.readGrid(_f, _prog); @@ -72,7 +73,12 @@ if (adapter_ != null) { _r.addUsedAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY }); _r.allAttribute_.add(GISAttributeConstants.BATHY); - _r.pointModel_.add(adapter_); + // Ajout de l'attribut ETAT_GEOM + _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(adapter_); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); + // + _r.pointModel_.add(adapter); _r.nbPoint_ += adapter_.getNumGeometries(); _r.nbPointTotal_ += adapter_.getNumGeometries(); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderI.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderI.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderI.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -34,10 +34,11 @@ * \xEAtre produites et g\xE9r\xE9es par _analyse. * @param _r le conteneur de resultat * @param _f le fichier a lire si necessaire + * @param _fileOrigine un string indiquant \xE0 la valeur \xE0 mettre dans l'attribut ETAT_GEOM * @param _prog la barre de progression * @param _analyze L'analyseur d'informations. */ - void setInResult(FSigFileLoadResult _r, File _f, ProgressionInterface _prog, CtuluAnalyze _analyze); + void setInResult(FSigFileLoadResult _r, File _f, String _fileOrigine, ProgressionInterface _prog, CtuluAnalyze _analyze); /** * Le filtre pour les fichiers accept\xE9s par ce lecteur. Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderInp.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderInp.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderInp.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -20,8 +20,10 @@ import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISDataModel; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; import org.fudaa.ctulu.gis.GISPoint; import org.fudaa.dodico.ef.EfGridInterface; @@ -133,7 +135,7 @@ return ft_; } - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { if (inp_ == null) { final CtuluIOOperationSynthese op = INPFileFormat.getInstance().getLastINPVersionImpl().read(_f, _prog); @@ -159,7 +161,12 @@ } _r.nbPoint_ += inp_.getGrid().getEltNb(); _r.nbPointTotal_ += inp_.getGrid().getEltNb(); - _r.pointModel_.add(new INPAdapter(att)); + // Ajout de l'attribut ETAT_GEOM + _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(new INPAdapter(att)); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); + // + _r.pointModel_.add(adapter); _r.addUsedAttributes(att); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -147,6 +147,8 @@ pnFiles_.setValueListCellRenderer(new FileListCellRenderer()); pnFiles_.getTableColumnModel().getColumn(2).setCellEditor(fileMng_.getFmtRowEditor()); pnFiles_.getTableColumnModel().getColumn(2).setCellRenderer(fileMng_.getFmtRowRenderer()); + pnFiles_.getTableColumnModel().getColumn(3).setCellEditor(fileMng_.getFmtRowOrigineEditor()); + pnFiles_.getTableColumnModel().getColumn(3).setCellRenderer(fileMng_.getFmtRowOrigineRenderer()); final BuButton btPreview = new BuButton(FSigLib.getS("Pr\xE9visualiser")); btPreview.addActionListener(new ActionListener() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadBER.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadBER.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadBER.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -12,6 +12,8 @@ import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.dodico.reflux.io.ReflucadBERFileFormat; @@ -55,7 +57,7 @@ } /* @override */ - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { final CtuluIOOperationSynthese op=ReflucadBERFileFormat.getInstance().read(_f, _prog); // En cas d'erreur, fin d'import. @@ -67,8 +69,12 @@ lines_=(GISZoneCollectionLigneBrisee)op.getSource(); _r.nbPointTotal_+=lines_.getNumPoints(); _r.nbPolylignes_+=lines_.getNumGeometries(); - - _r.ligneModel_.add(lines_); + // Ajout de l'attribut ETAT_GEOM + _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(lines_); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); + // + _r.ligneModel_.add(adapter); _r.addUsedAttributes(GISLib.getAttributeFrom(lines_)); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadPRO.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadPRO.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadPRO.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -12,6 +12,8 @@ import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.dodico.reflux.io.ReflucadPROFileFormat; @@ -55,7 +57,7 @@ } /* @override */ - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { final CtuluIOOperationSynthese op=ReflucadPROFileFormat.getInstance().read(_f, ... [truncated message content] |