From: <bma...@us...> - 2009-02-24 17:31:18
|
Revision: 4495 http://fudaa.svn.sourceforge.net/fudaa/?rev=4495&view=rev Author: bmarchan Date: 2009-02-24 17:31:06 +0000 (Tue, 24 Feb 2009) Log Message: ----------- Tache #179 : Finalisation recherche sur attributs atomiques. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindActionAtomic.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMulti.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionContainerInterface.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneShowLabelAction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dCloud.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dConstraintLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dContour.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLevel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dZone.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindExpressionAtomic.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/test/org/fudaa/ebli/commun/TestJEbliListeSelectionMulti.java Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dCloud.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dConstraintLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLevel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dZone.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -15,13 +15,7 @@ import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.fudaa.ctulu.CtuluExpr; -import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.CtuluListSelection; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.gis.GISAttributeInterface; @@ -30,9 +24,8 @@ import org.fudaa.ctulu.gis.GISGeometryFactory; import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISZoneCollection; -import org.fudaa.ebli.calque.edition.ZModeleEditable; import org.fudaa.ebli.calque.find.CalqueFindActionAtomic; -import org.fudaa.ebli.calque.find.CalqueFindExpression; +import org.fudaa.ebli.calque.find.CalqueFindExpressionAtomic; import org.fudaa.ebli.commun.EbliLib; import org.fudaa.ebli.commun.EbliListeSelectionMulti; import org.fudaa.ebli.commun.EbliListeSelectionMultiInterface; @@ -51,7 +44,6 @@ import org.fudaa.ebli.trace.TraceLigneModel; import org.fudaa.ebli.trace.TraceSurface; import org.fudaa.ebli.trace.TraceSurfaceModel; -import org.nfunk.jep.Variable; import com.memoire.fu.FuLog; import com.vividsolutions.jts.algorithm.SIRtreePointInRing; @@ -72,117 +64,6 @@ */ public class ZCalqueGeometry extends ZCalqueAffichageDonneesLineAbstract implements ZModelGeometryListener { - /** - * @author Fred Deniger - * @version $Id$ - */ - private class VariableFindExpression extends CalqueFindExpression { - - Map<Variable,Integer> vars_; - Variable varX_; - Variable varY_; - List<Double> ord_=new ArrayList<Double>(50); - - public VariableFindExpression() { - super(ZCalqueGeometry.this.modeleDonnees()); - } - - public void initialiseExpr(final CtuluExpr _expr) { - if (isAtomicMode_) { - initialiseExprWhenAtomic(_expr); - return; - } - - super.initialiseExpr(_expr); - final GISZoneCollection coll = ((ZModeleEditable) super.data_).getGeomData(); - final int nb = coll.getNbAttributes(); - if (nb > 0) { - if (vars_ == null) { - vars_ = new HashMap<Variable,Integer>(nb); - } else { - vars_.clear(); - } - for (int i = 0; i < nb; i++) { - final GISAttributeInterface att = coll.getAttribute(i); - if (!att.isAtomicValue() /*&& Number.class.isAssignableFrom(att.getDataClass())*/) { - vars_.put(_expr.addVar(att.getName(), att.getLongName()), i); - } - } - } - } - - public void majVariable(final int _idx, final Variable[] _varToUpdate, final Object[] _values) { - if (isAtomicMode_) { - majVariableWhenAtomic(_idx, _varToUpdate, _values); - return; - } - - super.majVariable(_idx, _varToUpdate, _values); - if (vars_ != null && !CtuluLibArray.isEmpty(_varToUpdate)) { - final GISZoneCollection coll = ((ZModeleEditable) super.data_).getGeomData(); - for (int i = _varToUpdate.length - 1; i >= 0; i--) { - if (vars_.containsKey(_varToUpdate[i])) { - _values[i]=coll.getDataModel(vars_.get(_varToUpdate[i])).getObjectValueAt(_idx); - } - } - } - } - - public void initialiseExprWhenAtomic(CtuluExpr _expr) { - _expr.initVar(); - _expr.getParser().getFunctionTable().remove("str"); - - - // Indice, ajout\xE9 par defaut. - _expr.removeVar("i"); - - final GISZoneCollection coll = modeleDonnees().getGeomData(); - final int nb = coll.getNbAttributes(); - if (nb > 0) { - if (vars_ == null) { - vars_ = new HashMap<Variable,Integer>(nb); - } else { - vars_.clear(); - } - for (int i = 0; i < nb; i++) { - final GISAttributeInterface att = coll.getAttribute(i); - if (att.isAtomicValue() /*&& Number.class.isAssignableFrom(att.getDataClass())*/) { - vars_.put(_expr.addVar(att.getName(), att.getLongName()),i); - } - } - } - - varX_=_expr.addVar("x","L'abscisse des sommets"); - varY_=_expr.addVar("y","L'ordonn\xE9e des sommets"); - } - - public void majVariableWhenAtomic(int _idx, Variable[] _varToUpdate, Object[] _values) { - - final GISZoneCollection coll = modeleDonnees().getGeomData(); - int ivar; - if ((ivar=CtuluLibArray.getIndex(varX_, _varToUpdate))!=-1) - _values[ivar]=getOrdinate(_idx, 0); - if ((ivar=CtuluLibArray.getIndex(varY_, _varToUpdate))!=-1) - _values[ivar]=getOrdinate(_idx, 1); - - for (int i=0; i<_varToUpdate.length; i++) { - if ((vars_.containsKey(_varToUpdate[i]))) { - _values[i]= - ((GISAttributeModel)coll.getDataModel(vars_.get(_varToUpdate[i])).getObjectValueAt(_idx)).getObjectValues(); - } - } - } - - private Double[] getOrdinate(int _idxGeom, int _ordonnee) { - CoordinateSequence seq=((GISCoordinateSequenceContainerInterface)modeleDonnees().getObject(_idxGeom)).getCoordinateSequence(); - ord_.clear(); - for (int i=0; i<seq.size(); i++) - ord_.add(seq.getOrdinate(i, _ordonnee)); - - return ord_.toArray(new Double[0]); - } - } - /** true si selection en mode sommets */ transient protected boolean isAtomicMode_; /** Le mod\xE8le des g\xE9om\xE9tries */ @@ -339,9 +220,11 @@ sentEvent = selectionMulti_.xor(_s); break; case EbliSelectionState.ACTION_REPLACE: - selectionMulti_.setSelection(_s); - sentEvent = true; + sentEvent = selectionMulti_.setSelection(_s); break; + case EbliSelectionState.ACTION_AND: + sentEvent = selectionMulti_.intersection(_s); + break; default: break; } @@ -375,7 +258,7 @@ } public EbliFindExpressionContainerInterface getExpressionContainer() { - return new VariableFindExpression(); + return new CalqueFindExpressionAtomic(this); } public EbliListeSelectionMultiInterface getLayerSelectionMulti() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindActionAtomic.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindActionAtomic.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindActionAtomic.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -15,6 +15,7 @@ import org.fudaa.ebli.calque.ZCalqueGeometry; import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.commun.EbliListeSelectionMulti; +import org.fudaa.ebli.commun.EbliSelectionState; import org.fudaa.ebli.find.EbliFindComponent; import org.fudaa.ebli.find.EbliFindComponentExpr; import org.fudaa.ebli.find.EbliFindable; @@ -26,7 +27,7 @@ * Une action de recherche permettant de rechercher des geometries ou des sommets. Cette action r\xE9agit au changement de mode de * selection sommet<->geometrie. * @author Bertrand Marchand - * @version $Id:$ + * @version $Id$ */ public class CalqueFindActionAtomic extends CalqueFindActionDefault implements PropertyChangeListener { Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindExpressionAtomic.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindExpressionAtomic.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindExpressionAtomic.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -0,0 +1,150 @@ +package org.fudaa.ebli.calque.find; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.fudaa.ctulu.CtuluExpr; +import org.fudaa.ctulu.CtuluLibArray; +import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISAttributeModel; +import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; +import org.fudaa.ctulu.gis.GISZoneCollection; +import org.fudaa.ebli.calque.ZCalqueGeometry; +import org.nfunk.jep.Variable; + +import com.vividsolutions.jts.geom.CoordinateSequence; + +/** + * Une recherche d'expression gerant le mode atomique ou global d'un calque. + * @author Bertrand Marchand + * @version $Id$ + */ +public class CalqueFindExpressionAtomic extends CalqueFindExpression { + + /** Le calque associ\xE9 */ + ZCalqueGeometry layer_; + /** La table des variables g\xE9r\xE9es par le calque */ + Map<Variable,Integer> vars_; + /** La variable X, dont le traitement est sp\xE9cial */ + Variable varX_; + /** La variable Y, dont le traitement est sp\xE9cial */ + Variable varY_; + /** Une table de stockage temporaire */ + List<Double> ord_=new ArrayList<Double>(50); + + public CalqueFindExpressionAtomic(ZCalqueGeometry _layer) { + super(_layer.modeleDonnees()); + layer_=_layer; + } + + public void initialiseExpr(final CtuluExpr _expr) { + if (layer_.isAtomicMode()) { + initialiseExprWhenAtomic(_expr); + return; + } + + super.initialiseExpr(_expr); + final GISZoneCollection coll = layer_.modeleDonnees().getGeomData(); + final int nb = coll.getNbAttributes(); + if (nb > 0) { + if (vars_ == null) { + vars_ = new HashMap<Variable,Integer>(nb); + } else { + vars_.clear(); + } + for (int i = 0; i < nb; i++) { + final GISAttributeInterface att = coll.getAttribute(i); + if (!att.isAtomicValue()) { + vars_.put(_expr.addVar(att.getName(), att.getLongName()), i); + } + } + } + } + + public void majVariable(final int _idx, final Variable[] _varToUpdate, final Object[] _values) { + if (layer_.isAtomicMode()) { + majVariableWhenAtomic(_idx, _varToUpdate, _values); + return; + } + + super.majVariable(_idx, _varToUpdate, _values); + if (vars_ != null && !CtuluLibArray.isEmpty(_varToUpdate)) { + final GISZoneCollection coll = layer_.modeleDonnees().getGeomData(); + for (int i = _varToUpdate.length - 1; i >= 0; i--) { + if (vars_.containsKey(_varToUpdate[i])) { + _values[i]=coll.getDataModel(vars_.get(_varToUpdate[i])).getObjectValueAt(_idx); + } + } + } + } + + /** + * Initialise le container d'expressions avec des variables atomiques uniquement. + * @param _expr Le container. + */ + public void initialiseExprWhenAtomic(CtuluExpr _expr) { + _expr.initVar(); + _expr.getParser().getFunctionTable().remove("str"); + + + // Suppression de l'indice, ajout\xE9 par defaut par la classe m\xE8re. + _expr.removeVar("i"); + + final GISZoneCollection coll = layer_.modeleDonnees().getGeomData(); + final int nb = coll.getNbAttributes(); + if (nb > 0) { + if (vars_ == null) { + vars_ = new HashMap<Variable,Integer>(nb); + } else { + vars_.clear(); + } + for (int i = 0; i < nb; i++) { + final GISAttributeInterface att = coll.getAttribute(i); + if (att.isAtomicValue()) { + vars_.put(_expr.addVar(att.getName(), att.getLongName()),i); + } + } + } + + varX_=_expr.addVar("x","L'abscisse des sommets"); + varY_=_expr.addVar("y","L'ordonn\xE9e des sommets"); + } + + /** + * Le traitement pour les variables atomiques. + * @param _idx L'indice de g\xE9om\xE9trie. + * @param _varToUpdate Les variables \xE0 mettre a jour. + * @param _values Les valeurs pour chaque variable. + */ + public void majVariableWhenAtomic(int _idx, Variable[] _varToUpdate, Object[] _values) { + + final GISZoneCollection coll = layer_.modeleDonnees().getGeomData(); + int ivar; + if ((ivar=CtuluLibArray.getIndex(varX_, _varToUpdate))!=-1) + _values[ivar]=getOrdinate(_idx, 0); + if ((ivar=CtuluLibArray.getIndex(varY_, _varToUpdate))!=-1) + _values[ivar]=getOrdinate(_idx, 1); + + for (int i=0; i<_varToUpdate.length; i++) { + if ((vars_.containsKey(_varToUpdate[i]))) { + _values[i]= + ((GISAttributeModel)coll.getDataModel(vars_.get(_varToUpdate[i])).getObjectValueAt(_idx)).getObjectValues(); + } + } + } + + protected Double[] getOrdinate(int _idxGeom, int _ordonnee) { + CoordinateSequence seq=((GISCoordinateSequenceContainerInterface)layer_.modeleDonnees().getObject(_idxGeom)).getCoordinateSequence(); + ord_.clear(); + + if (_ordonnee==2) + layer_.modeleDonnees().getGeomData().initZCoordinate(_idxGeom); + + for (int i=0; i<seq.size(); i++) + ord_.add(seq.getOrdinate(i, _ordonnee)); + + return ord_.toArray(new Double[0]); + } +} \ No newline at end of file Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindExpressionAtomic.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMulti.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMulti.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMulti.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -31,6 +31,11 @@ idxListSelection_ = new TIntObjectHashMap(_n); } + /** + * Une op\xE9ration (and) d'intersection de la liste <code>this</code> avec une liste donn\xE9e. + * @param _selection La liste donn\xE9e. + * @return true : Si la liste <code>this</code> est modifi\xE9e par l'op\xE9ration. + */ public boolean intersection(final EbliListeSelectionMultiInterface _selection) { if ((_selection == null) || _selection.isEmpty()) { final boolean r = !isEmpty(); @@ -45,12 +50,8 @@ final CtuluListSelection thisSelection = (CtuluListSelection) it.value(); final CtuluListSelection selection = (CtuluListSelection)_selection.getSelection(idx); r |= thisSelection.intersection(selection); - if (thisSelection.remove((CtuluListSelection) it.value())) { - r = true; - if (thisSelection.isEmpty()) { - it.remove(); - } - + if (thisSelection.isEmpty()) { + it.remove(); } } return r; @@ -113,6 +114,11 @@ return true; } + /** + * Une op\xE9ration (xor) d'ajout si non existant et suppression si existant sur la liste <code>this</code> depuis une liste donn\xE9e. + * @param _selection La liste donn\xE9e. + * @return true : Si la liste <code>this</code> est modifi\xE9e par l'op\xE9ration. + */ public boolean xor(final EbliListeSelectionMultiInterface _m) { if ((_m == null) || _m.isEmpty()) { return false; @@ -142,6 +148,11 @@ return r; } + /** + * Une op\xE9ration (or) d'ajout de la liste donn\xE9e \xE0 la liste <code>this</code>. + * @param _m La liste donn\xE9e. + * @return true : Si la liste <code>this</code> est modifi\xE9e par l'op\xE9ration. + */ public boolean add(final EbliListeSelectionMultiInterface _m) { if ((_m == null) || _m.isEmpty()) { return false; @@ -182,6 +193,11 @@ return r; } + /** + * Une op\xE9ration de suppression de la liste donn\xE9e \xE0 la liste <code>this</code>. + * @param _m La liste donn\xE9e. + * @return true : Si la liste <code>this</code> est modifi\xE9e par l'op\xE9ration. + */ public boolean remove(final EbliListeSelectionMultiInterface _m) { if ((_m == null) || _m.isEmpty()) { return false; @@ -203,6 +219,11 @@ return r; } + /** + * Une op\xE9ration de remplacement de la liste <code>this</code> par la liste donn\xE9e. + * @param _m La liste donn\xE9e. + * @return true dans tous les cas. + */ public boolean setSelection(final EbliListeSelectionMultiInterface _m) { clear(); if (_m == null) { @@ -228,6 +249,11 @@ return idxListSelection_.iterator(); } + /** + * Efface la liste avant de definir l'unique sommet. + * @param _idxGlobal L'indice global + * @param _idxSelected L'indice de sommet. + */ public void set(final int _idxGlobal, final int _idxSelected) { idxListSelection_.clear(); final CtuluListSelection l = new CtuluListSelection(); @@ -235,6 +261,11 @@ idxListSelection_.put(_idxGlobal, l); } + /** + * Ajoute un sommet a la liste. + * @param _idxGlobal L'indice global + * @param _idxSelected L'indice de sommet. + */ public void add(final int _idxGlobal, final int _idxSelected) { CtuluListSelection l = (CtuluListSelection) idxListSelection_.get(_idxGlobal); if (l == null) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionContainerInterface.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionContainerInterface.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionContainerInterface.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -29,7 +29,8 @@ * lancement de la selection. * @param _idx L'indice de l'objet dans le calque. * @param _varToUpdate Les variables dont la valeur est a intialiser. - * @param _values Les valeurs pour les variables, dans le m\xEAme ordre. + * @param _values Les valeurs pour les variables, dans le m\xEAme ordre. Pour des variables atomiques, les valeurs sont sous + * forme d'un tableau Object[][] dont la longueur correspond au nombre d'atomiques. */ void majVariable(int _idx,Variable[] _varToUpdate, Object[] _values); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionDefault.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionDefault.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -48,7 +48,6 @@ int i=CtuluLibArray.getIndex(i_,_varToUpdate); if (i!=-1) _values[i]=CtuluLib.getDouble(_idx + 1); -// i_.setValue(CtuluLib.getDouble(_idx + 1)); } } Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/test/org/fudaa/ebli/commun/TestJEbliListeSelectionMulti.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/test/org/fudaa/ebli/commun/TestJEbliListeSelectionMulti.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/test/org/fudaa/ebli/commun/TestJEbliListeSelectionMulti.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -0,0 +1,124 @@ +/* + * @creation 24 f\xE9vr. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ebli.commun; + +import junit.framework.TestCase; + +/** + * Pour tester les listes de selection multi. + * @author Bertrand Marchand + * @version $Id:$ + */ +public class TestJEbliListeSelectionMulti extends TestCase { + + /** + * Teste les listes issues des op\xE9rations. + */ + public void testOperation() { + EbliListeSelectionMulti l; + + // and + l=getListe1(); + l.intersection(getListe2()); + assertNull(l.get(0)); + assertNotNull(l.get(1)); + assertNull(l.get(2)); + assertNotNull(l.get(5)); + assertEquals(l.getNbSelectedItem(),2); + assertEquals(l.get(5).getNbSelectedIndex(),1); + + // or + l=getListe1(); + l.add(getListe2()); + assertNotNull(l.get(0)); + assertNotNull(l.get(1)); + assertNotNull(l.get(2)); + assertNotNull(l.get(5)); + assertEquals(l.getNbSelectedItem(),8); + assertEquals(l.get(5).getNbSelectedIndex(),3); + + // remove + l=getListe1(); + l.remove(getListe2()); + assertNotNull(l.get(0)); + assertNull(l.get(1)); + assertNull(l.get(2)); + assertNotNull(l.get(5)); + assertEquals(l.getNbSelectedItem(),3); + assertEquals(l.get(5).getNbSelectedIndex(),1); + + // xor + l=getListe1(); + l.xor(getListe2()); + assertNotNull(l.get(0)); + assertNull(l.get(1)); + assertNotNull(l.get(2)); + assertNotNull(l.get(5)); + assertEquals(l.getNbSelectedItem(),6); + assertEquals(l.get(5).getNbSelectedIndex(),2); + } + + /** + * Teste la modification des listes au cours des op\xE9rations. + */ + public void testModification() { + EbliListeSelectionMulti l; + + l=getListe1(); + assertFalse(l.add(getListe3())); + assertFalse(l.add(getListe1())); + assertTrue(l.add(getListe2())); + + l=getListe1(); + assertFalse(l.intersection(getListe1())); + assertTrue(l.intersection(getListe3())); + + l=getListe3(); + assertFalse(l.intersection(getListe1())); + assertFalse(l.intersection(getListe3())); + + l=getListe1(); + assertTrue(l.remove(getListe3())); + assertFalse(l.remove(getListe3())); + + l=getListe3(); + assertFalse(l.xor(null)); + assertTrue(l.xor(getListe2())); + assertTrue(l.xor(getListe2())); + assertFalse(l.add(getListe3())); + assertFalse(l.intersection(getListe3())); + } + + EbliListeSelectionMulti getListe1() { + EbliListeSelectionMulti l=new EbliListeSelectionMulti(3); + l.add(0,1); + l.add(0,5); + l.add(1,6); + l.add(5,12); + l.add(5,1); + return l; + } + + EbliListeSelectionMulti getListe2() { + EbliListeSelectionMulti l=new EbliListeSelectionMulti(3); + l.add(2,1); + l.add(2,5); + l.add(1,6); + l.add(5,12); + l.add(5,7); + return l; + } + + EbliListeSelectionMulti getListe3() { + EbliListeSelectionMulti l=new EbliListeSelectionMulti(2); + l.add(0,1); + l.add(5,12); + l.add(5,1); + return l; + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/test/org/fudaa/ebli/commun/TestJEbliListeSelectionMulti.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneShowLabelAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneShowLabelAction.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneShowLabelAction.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -14,6 +14,7 @@ import org.fudaa.ebli.calque.BArbreCalqueModel; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalqueVisitor; +import org.fudaa.ebli.calque.ZCalqueGeometry; import org.fudaa.ebli.calque.ZCalqueLigneBrisee; import org.fudaa.ebli.calque.ZCalqueMultiPoint; import org.fudaa.ebli.commun.EbliActionChangeState; @@ -41,10 +42,8 @@ private void applyConf(){ treeModel_.getRootCalque().apply(new BCalqueVisitor(){ public boolean visit(BCalque _cq) { - if(_cq instanceof ZCalqueLigneBrisee) - ((ZCalqueLigneBrisee)_cq).setAttributForLabels(isSelected()?GISAttributeConstants.LABEL:null); - else if(_cq instanceof ZCalqueMultiPoint) - ((ZCalqueMultiPoint)_cq).setAttributForLabels(isSelected()?GISAttributeConstants.LABEL:null); + if(_cq instanceof ZCalqueGeometry) + ((ZCalqueGeometry)_cq).setAttributForLabels(isSelected()?GISAttributeConstants.LABEL:null); return true; } }); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dCloud.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dCloud.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dCloud.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -28,7 +28,7 @@ /** * Un calque pour le stockage et la manipulation des donn\xE9es altim\xE9triques. * @author Bertrand Marchand - * @version $Id: MdlLayer2dCloud.java,v 1.1.2.4 2008/05/13 12:10:42 bmarchan Exp $ + * @version $Id$ */ public class MdlLayer2dCloud extends MdlLayer2dMultiPoint { @@ -42,7 +42,7 @@ setName(getExtName()); setIconModel(0, new TraceIconModel(TraceIcon.CARRE_PLEIN, 2, new Color(0,190,0))); setTitle(MdlResource.MDL.getString("Semis de points")); - setAttributForLabels(GISAttributeConstants.BATHY); + setAttributForLabels(GISAttributeConstants.LABEL); } public MdlLayer2dCloud(FSigEditor _editor) { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dCloud.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dConstraintLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dConstraintLine.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dConstraintLine.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -22,7 +22,7 @@ /** * Un calque pour le stockage et la manipulation des lignes de constraintes. * @author Bertrand Marchand - * @version $Id: MdlLayer2dProfile.java,v 1.1.2.5 2008/05/13 12:10:43 bmarchan Exp $ + * @version $Id$ */ public class MdlLayer2dConstraintLine extends MdlLayer2dLine { @@ -37,7 +37,7 @@ setLineModelOuvert(getLineModel(0)); setName(getExtName()); setTitle(MdlResource.MDL.getString("Lignes de contraintes")); - setAttributForLabels(GISAttributeConstants.BATHY); + setAttributForLabels(GISAttributeConstants.LABEL); } public MdlLayer2dConstraintLine(FSigEditor _editor) { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dConstraintLine.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dContour.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dContour.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dContour.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -41,7 +41,7 @@ setIconModel(1, new TraceIconModel(getIconModel(0))); setName(getExtName()); setTitle(MdlResource.MDL.getString("Contours d'\xE9tude")); - setAttributForLabels(GISAttributeConstants.BATHY); + setAttributForLabels(GISAttributeConstants.LABEL); } public MdlLayer2dContour(FSigEditor _editor) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLevel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLevel.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLevel.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -9,23 +9,60 @@ import java.awt.Color; +import org.fudaa.ctulu.CtuluExpr; +import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ebli.calque.BCalquePersistenceInterface; +import org.fudaa.ebli.calque.ZCalqueGeometry; import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; +import org.fudaa.ebli.calque.find.CalqueFindExpressionAtomic; +import org.fudaa.ebli.find.EbliFindExpressionContainerInterface; import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; import org.fudaa.fudaa.modeleur.MdlResource; import org.fudaa.fudaa.modeleur.persistence.MdlLayer2dLevelPersistence; import org.fudaa.fudaa.sig.layer.FSigEditor; +import org.nfunk.jep.Variable; /** * Un calque pour le stockage et la manipulation des donn\xE9es altim\xE9triques. * @author Bertrand Marchand - * @version $Id: MdlLayer2dLevel.java,v 1.1.2.8 2008/05/13 12:10:40 bmarchan Exp $ + * @version $Id$ */ public class MdlLayer2dLevel extends MdlLayer2dLine { /** + * Sp\xE9cifique, la valeur Z atomique pour les courbes de niveau. + * @author Bertrand Marchand + * @version $Id:$ + */ + class CalqueFindExpressionAtomicLevel extends CalqueFindExpressionAtomic { + Variable varZ_; + + @Override + public void initialiseExprWhenAtomic(CtuluExpr _expr) { + super.initialiseExprWhenAtomic(_expr); + + varZ_=_expr.addVar(GISAttributeConstants.BATHY.getName(), GISAttributeConstants.BATHY.getLongName()); + } + + @Override + public void majVariableWhenAtomic(int _idx, Variable[] varToUpdate, Object[] _values) { + super.majVariableWhenAtomic(_idx, varToUpdate, _values); + + int ivar=CtuluLibArray.getIndex(varZ_, varToUpdate); + if (ivar!=-1) { + _values[ivar]=getOrdinate(_idx, 2); + } + } + + public CalqueFindExpressionAtomicLevel(ZCalqueGeometry _layer) { + super(_layer); + } + + } + + /** * Constructeur. Utilise un mod\xE8le de donn\xE9es et un editeur. * @param _model Modele * @param _editor Editeur. @@ -38,7 +75,7 @@ setLineModelOuvert(getLineModel(0)); setTitle(MdlResource.MDL.getString("Lignes de niveau")); - setAttributForLabels(GISAttributeConstants.BATHY); + setAttributForLabels(GISAttributeConstants.LABEL); } public MdlLayer2dLevel(FSigEditor _editor) { @@ -54,6 +91,10 @@ return new MdlLayer2dLevelPersistence(); } + public EbliFindExpressionContainerInterface getExpressionContainer() { + return new CalqueFindExpressionAtomicLevel(this); + } + /** * Retourne le nom par defaut du calque. * @return Le nom. Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLevel.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dZone.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dZone.java 2009-02-24 12:28:49 UTC (rev 4494) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dZone.java 2009-02-24 17:31:06 UTC (rev 4495) @@ -24,7 +24,7 @@ /** * Un calque pour le stockage et la manipulation des zones g\xE9om\xE9triques 2d. * @author Bertrand Marchand - * @version $Id: MdlLayer2dProfile.java,v 1.1.2.5 2008/05/13 12:10:43 bmarchan Exp $ + * @version $Id$ */ public class MdlLayer2dZone extends MdlLayer2dLine { @@ -41,7 +41,7 @@ setIconModel(1, new TraceIconModel(getIconModel(0))); setName(getExtName()); setTitle(MdlResource.MDL.getString("Zones")); - setAttributForLabels(GISAttributeConstants.BATHY); + setAttributForLabels(GISAttributeConstants.LABEL); } public MdlLayer2dZone(FSigEditor _editor) { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dZone.java ___________________________________________________________________ Added: svn:keywords + Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |