|
From: <bma...@us...> - 2011-07-08 14:01:31
|
Revision: 6326
http://fudaa.svn.sourceforge.net/fudaa/?rev=6326&view=rev
Author: bmarchan
Date: 2011-07-08 14:01:24 +0000 (Fri, 08 Jul 2011)
Log Message:
-----------
Add : Nouveau champ historique stockant les op?\195?\169ration pour une g?\195?\169om.
Modified Paths:
--------------
trunk/framework/ctulu-gis/src/main/java/org/fudaa/ctulu/gis/GISAttributeConstants.java
trunk/framework/ctulu-gis/src/main/java/org/fudaa/ctulu/gis/GISLib.java
trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java
trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java
Modified: trunk/framework/ctulu-gis/src/main/java/org/fudaa/ctulu/gis/GISAttributeConstants.java
===================================================================
--- trunk/framework/ctulu-gis/src/main/java/org/fudaa/ctulu/gis/GISAttributeConstants.java 2011-07-08 13:26:28 UTC (rev 6325)
+++ trunk/framework/ctulu-gis/src/main/java/org/fudaa/ctulu/gis/GISAttributeConstants.java 2011-07-08 14:01:24 UTC (rev 6326)
@@ -17,6 +17,8 @@
import org.fudaa.ctulu.editor.CtuluValueEditorChoice;
import com.memoire.fu.FuLib;
+import org.fudaa.ctulu.CtuluActivity;
+import org.fudaa.ctulu.editor.CtuluValueEditorDefaults;
/**
* Une classe pour d\xE9finir des attributs syst\xE8mes associables \xE0 des objets GIS. Les attributs syst\xE8mes
@@ -69,7 +71,7 @@
/**
* Un attribut nom, global.
*/
- public final static GISAttributeString TITRE = new GISAttributeString(CtuluLib.getS("Nom")) {
+ public final static GISAttributeString TITRE = new GISAttributeString(CtuluValueEditorDefaults.EXPR_STRING_EDITOR,CtuluLib.getS("Nom")) {
/** Numero d'identifiant, incr\xE9ment\xE9 \xE0 chaque nouvelle cr\xE9ation de nom. */
private int numid_=0;
String def_ = CtuluLib.getS("<Defaut>");
@@ -188,6 +190,16 @@
};
/**
+ * Un attribut historique, utilis\xE9 pour le stockage des manipulations sur une g\xE9om\xE9trie.
+ */
+ public final static GISAttributeString HISTORY = new GISAttributeString(CtuluLib.getS("Historique"), false) {
+ @Override
+ public String getID() {
+ return "ATTRIBUTE_HISTORY";
+ }
+ };
+
+ /**
* Un attribut label, atomique.
*/
public final static GISAttributeString LABEL = new GISAttributeString(CtuluLib.getS("Label"), true) {
Modified: trunk/framework/ctulu-gis/src/main/java/org/fudaa/ctulu/gis/GISLib.java
===================================================================
--- trunk/framework/ctulu-gis/src/main/java/org/fudaa/ctulu/gis/GISLib.java 2011-07-08 13:26:28 UTC (rev 6325)
+++ trunk/framework/ctulu-gis/src/main/java/org/fudaa/ctulu/gis/GISLib.java 2011-07-08 14:01:24 UTC (rev 6326)
@@ -1033,4 +1033,15 @@
str.append(_prop+"="+_value);
return str.toString();
}
+
+ /**
+ * Ajoute une op\xE9ration dans l'attribut l'historique
+ * @param _ope L'op\xE9ration
+ * @param _mes Le message li\xE9
+ * @param _history L'historique
+ * @return L'historique r\xE9sultant.
+ */
+ static public String appendHistory(String _ope, String _mes, String _history) {
+ return _ope+"("+_mes+")"+(_history.trim().length()==0 ? "":"; "+_history.trim());
+ }
}
\ No newline at end of file
Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java
===================================================================
--- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2011-07-08 13:26:28 UTC (rev 6325)
+++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2011-07-08 14:01:24 UTC (rev 6326)
@@ -22,7 +22,6 @@
import org.fudaa.ctulu.CtuluAnalyze;
import org.fudaa.ctulu.CtuluCommandComposite;
import org.fudaa.ctulu.CtuluCommandContainer;
-import org.fudaa.ctulu.CtuluLib;
import org.fudaa.ctulu.CtuluLibString;
import org.fudaa.ctulu.CtuluListSelectionInterface;
import org.fudaa.ctulu.CtuluUI;
@@ -47,6 +46,7 @@
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.LineString;
import org.fudaa.ctulu.CtuluNamedCommand;
+import org.fudaa.ctulu.gis.GISLib;
import org.fudaa.ebli.calque.ZModelListener;
/**
@@ -151,7 +151,7 @@
public boolean addGeometry(final Geometry _p,final CtuluCommandContainer _cmd,final CtuluUI _ui,
final ZEditionAttributesDataI _d){
if (_p.getNumPoints() < 2) {
- _ui.error(null,CtuluLib.getS("La polyligne doit contenir {0} points au moins",CtuluLibString.DEUX), false);
+ _ui.error(null,EbliLib.getS("La polyligne doit contenir {0} points au moins",CtuluLibString.DEUX), false);
return false;
}
if (!(_p instanceof LineString)) { throw new IllegalArgumentException("Bad geometry type"); }
@@ -226,7 +226,7 @@
}
private String getErrorMinPt() {
- return CtuluLib.getS("La ligne brisee doit contenir {0} points au moins",
+ return EbliLib.getS("La ligne brisee doit contenir {0} points au moins",
CtuluLibString.TROIS);
}
@@ -274,7 +274,7 @@
}
private String getErrorMin2Pt() {
- return CtuluLib.getS("La ligne brisee doit contenir {0} points au moins",
+ return EbliLib.getS("La ligne brisee doit contenir {0} points au moins",
CtuluLibString.DEUX);
}
@@ -327,7 +327,7 @@
final GISPolyligne line = (GISPolyligne) geometries_.getGeometry(_ligneIdx); // Old line
if (line == null || _idx[0] <= 0 || _idx[1] >= line.getNumPoints() - 1) { return null; }
- final CtuluCommandComposite cmp = new CtuluCommandComposite();
+ final CtuluCommandComposite cmp = new CtuluCommandComposite(EbliLib.getS("Scission de la g\xE9om\xE9trie"));
// Les coordonn\xE9es
final Coordinate[] clold = line.getCoordinates();
@@ -341,6 +341,8 @@
}
// Les datas
+ final int iattHisto=geometries_.getIndiceOf(GISAttributeConstants.HISTORY);
+
final Object[] dataline1 = new Object[getAttributeNb()];
final Object[] dataline2 = new Object[getAttributeNb()];
for (int i = 0; i < getAttributeNb(); i++) {
@@ -360,13 +362,20 @@
dataline2[i]=atomModel2;
}
else {
- // Cas particulier de l'attribut TITRE => <TITRE_GEOM>_1 et <TITRE_GEOM>_2
+ // Cas particulier de l'attribut TITRE => Conserv\xE9, op\xE9ration dans l'historique
if (attmodel.getAttribute()==GISAttributeConstants.TITRE) {
final String name = (String) attmodel.getObjectValueAt(_ligneIdx);
- dataline1[i]=name+"_1";
- dataline2[i]=name+"_2";
+ dataline1[i]=name;
+ dataline2[i]=name+"_";
+
+ if (iattHisto!=-1) {
+ dataline1[iattHisto]=GISLib.appendHistory(EbliLib.getS("Scission"),name, (String)geometries_.getModel(iattHisto).getObjectValueAt(_ligneIdx));
+ dataline2[iattHisto]=GISLib.appendHistory(EbliLib.getS("Scission"),name, (String)geometries_.getModel(iattHisto).getObjectValueAt(_ligneIdx));
+ }
}
- // CAs particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI
+ // Cas particulier de l'historique => Deja trait\xE9
+ else if(attmodel.getAttribute()==GISAttributeConstants.HISTORY) {}
+ // Cas particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI
else if(attmodel.getAttribute()==GISAttributeConstants.ETAT_GEOM) {
dataline1[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI;
dataline2[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI;
@@ -398,7 +407,7 @@
}
if (line == null || _idx <= 0 || _idx >= line.getNumPoints() - 1) { return null; }
- final CtuluCommandComposite cmp = new CtuluCommandComposite();
+ final CtuluCommandComposite cmp = new CtuluCommandComposite(EbliLib.getS("Scission de la g\xE9om\xE9trie"));
// Les coordonn\xE9es
final Coordinate[] clold = line.getCoordinates();
@@ -412,6 +421,8 @@
}
// Les datas
+ final int iattHisto=geometries_.getIndiceOf(GISAttributeConstants.HISTORY);
+
final Object[] dataline1 = new Object[getAttributeNb()];
final Object[] dataline2 = new Object[getAttributeNb()];
for (int i = 0; i < getAttributeNb(); i++) {
@@ -431,12 +442,19 @@
dataline1[i] = atomModel1;
dataline2[i] = atomModel2;
} else {
- // Cas particulier de l'attribut TITRE => <TITRE_GEOM>_1 et <TITRE_GEOM>_2
+ // Cas particulier de l'attribut TITRE => Conserv\xE9, op\xE9ration dans l'historique
if (attribute == GISAttributeConstants.TITRE) {
final String name = (String) model;
- dataline1[i] = name + "_1";
- dataline2[i] = name + "_2";
+ dataline1[i] = name;
+ dataline2[i] = name+"_";
+
+ if (iattHisto!=-1) {
+ dataline1[iattHisto]=GISLib.appendHistory(EbliLib.getS("Scission"),name, (String)geometries_.getModel(iattHisto).getObjectValueAt(_ligneIdx));
+ dataline2[iattHisto]=GISLib.appendHistory(EbliLib.getS("Scission"),name, (String)geometries_.getModel(iattHisto).getObjectValueAt(_ligneIdx));
+ }
}
+ // Cas particulier de l'historique => Deja trait\xE9
+ else if(attmodel.getAttribute()==GISAttributeConstants.HISTORY) {}
// CAs particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI
else if(attmodel.getAttribute()==GISAttributeConstants.ETAT_GEOM) {
dataline1[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI;
@@ -479,7 +497,7 @@
if (_idx[i]!=0 && _idx[i]!=lines[i].getNumPoints()-1) return -1; // Seuls les points extremit\xE9s sont autoris\xE9s.
}
- final CtuluCommandComposite cmp = new CtuluCommandComposite();
+ final CtuluCommandComposite cmp = new CtuluCommandComposite(EbliLib.getS("Jointure de polylignes"));
// Les coordonn\xE9es
Coordinate[] cline=new Coordinate[lines[0].getNumPoints()+lines[1].getNumPoints()];
@@ -506,6 +524,8 @@
}
// Les datas
+ final int iattHisto=geometries_.getIndiceOf(GISAttributeConstants.HISTORY);
+
Object[] dataline=new Object[geometries_.getNbAttributes()];
for (int att=0; att<geometries_.getNbAttributes(); att++) {
if (geometries_.getAttribute(att).isAtomicValue()) {
@@ -533,12 +553,19 @@
dataline[att]=mdl;
}
else {
- // Cas particulier de l'attribut TITRE => <TITRE_GEOM1>_<TITRE_GEOM2>
+ // Cas particulier de l'attribut TITRE => On prend le premier, l'autre va dans l'historique
if (geometries_.getModel(att).getAttribute()==GISAttributeConstants.TITRE) {
String name1=(String)geometries_.getModel(att).getObjectValueAt(_ligneIdx[0]);
String name2=(String)geometries_.getModel(att).getObjectValueAt(_ligneIdx[1]);
- dataline[att]=name1+"_"+name2;
+ dataline[att]=name1;
+
+ if (iattHisto!=-1) {
+ dataline[iattHisto]=GISLib.appendHistory(EbliLib.getS("Jonction"),name1+","+name2, (String)geometries_.getModel(iattHisto).getObjectValueAt(_ligneIdx[0]));
+ }
}
+ // Cas particulier de l'attribut HISTORY => D\xE9j\xE0 trait\xE9
+ else if (geometries_.getModel(att).getAttribute()==GISAttributeConstants.HISTORY) {}
+
// Cas particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI
else if (geometries_.getModel(att).getAttribute()==GISAttributeConstants.ETAT_GEOM) {
dataline[att]=GISAttributeConstants.ATT_VAL_ETAT_MODI;
@@ -730,7 +757,7 @@
}
if (!s.isValid()) {
if (_analyze!=null)
- _analyze.addFatalError(CtuluLib.getS("La nouvelle ligne bris\xE9e n'est pas valide", CtuluLibString.TROIS));
+ _analyze.addFatalError(EbliLib.getS("La nouvelle ligne bris\xE9e n'est pas valide", CtuluLibString.TROIS));
return false;
}
return true;
@@ -1028,7 +1055,7 @@
Object[] vals=new Object[geometries_.getNbAttributes()];
for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) {
Object val=geometries_.getValue(iatt,idx);
- if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val;
+ if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=EbliLib.getS("Copie de")+" "+val;
if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.ETAT_GEOM)) val=GISAttributeConstants.ATT_VAL_ETAT_MODI;
int nbpt=geom.getNumPoints();
vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt);
Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java
===================================================================
--- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2011-07-08 13:26:28 UTC (rev 6325)
+++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2011-07-08 14:01:24 UTC (rev 6326)
@@ -17,7 +17,6 @@
import org.fudaa.ctulu.CtuluAnalyze;
import org.fudaa.ctulu.CtuluCommandComposite;
import org.fudaa.ctulu.CtuluCommandContainer;
-import org.fudaa.ctulu.CtuluLib;
import org.fudaa.ctulu.CtuluLibString;
import org.fudaa.ctulu.CtuluListSelection;
import org.fudaa.ctulu.CtuluListSelectionInterface;
@@ -43,6 +42,7 @@
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.Geometry;
+import org.fudaa.ctulu.gis.GISLib;
import org.fudaa.ctulu.table.CtuluTable;
import org.fudaa.ebli.calque.ZCalqueGeometry.SelectionMode;
@@ -299,7 +299,7 @@
if (nb==1) {
final int idxPoly=layer.getLayerSelection().getMaxIndex();
_d.setTitle(EbliLib.getS("Semis {0}", CtuluLibString.getString(idxPoly+1)));
- _d.put(CtuluLib.getS("Valid"), getGeomData().getGeometry(idxPoly).isValid() ? CtuluLib.getS("vrai"):CtuluLib.getS("faux"));
+ _d.put(EbliLib.getS("Valid"), getGeomData().getGeometry(idxPoly).isValid() ? EbliLib.getS("vrai"):EbliLib.getS("faux"));
fillWithInfo(idxPoly, _d);
}
}
@@ -401,7 +401,7 @@
public boolean addGeometry(final Geometry _p,final CtuluCommandContainer _cmd,final CtuluUI _ui,
final ZEditionAttributesDataI _d){
if (_p.getNumPoints() < 1) {
- _ui.error(null,CtuluLib.getS("Le multi point doit contenir {0} points au moins",CtuluLibString.UN), false);
+ _ui.error(null,EbliLib.getS("Le multi point doit contenir {0} points au moins",CtuluLibString.UN), false);
return false;
}
if (geometries_ == null) {
@@ -532,7 +532,7 @@
CoordinateSequence cgeom=geom.getCoordinateSequence();
if (_idx.length<0 || _idx.length>=cgeom.size()) return null;
- final CtuluCommandComposite cmp = new CtuluCommandComposite();
+ final CtuluCommandComposite cmp = new CtuluCommandComposite(EbliLib.getS("Scission de la g\xE9om\xE9trie"));
CtuluListSelection sel=new CtuluListSelection(_idx);
// Les coordonn\xE9es
@@ -548,6 +548,8 @@
}
// Les datas
+ int iattHisto=geometries_.getIndiceOf(GISAttributeConstants.HISTORY);
+
Object[] datageom1=new Object[getAttributeNb()];
Object[] datageom2=new Object[getAttributeNb()];
for (int i=0; i<getAttributeNb(); i++) {
@@ -569,13 +571,20 @@
datageom2[i]=atomModel2;
}
else {
- // Cas particulier de l'attribut TITRE => <TITRE_GEOM>_1 et <TITRE_GEOM>_2
+ // Cas particulier de l'attribut TITRE => Conserv\xE9, op\xE9ration dans l'historique
if (attmodel.getAttribute()==GISAttributeConstants.TITRE) {
String name=(String)attmodel.getObjectValueAt(_geomIdx);
- datageom1[i]=name+"_1";
- datageom2[i]=name+"_2";
+ datageom1[i]=name;
+ datageom2[i]=name+"_";
+
+ if (iattHisto!=-1) {
+ datageom1[iattHisto]=GISLib.appendHistory(EbliLib.getS("Scission"),name, (String)geometries_.getModel(iattHisto).getObjectValueAt(_geomIdx));
+ datageom2[iattHisto]=GISLib.appendHistory(EbliLib.getS("Scission"),name, (String)geometries_.getModel(iattHisto).getObjectValueAt(_geomIdx));
+ }
}
- // CAs particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI
+ // Cas particulier de l'historique => Deja trait\xE9
+ else if(attmodel.getAttribute()==GISAttributeConstants.HISTORY) {}
+ // Cas particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI
else if(attmodel.getAttribute()==GISAttributeConstants.ETAT_GEOM) {
datageom1[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI;
datageom2[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI;
@@ -816,7 +825,7 @@
Object[] vals=new Object[geometries_.getNbAttributes()];
for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) {
Object val=geometries_.getValue(iatt,idx);
- if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val;
+ if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=EbliLib.getS("Copie de")+" "+val;
if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.ETAT_GEOM)) val=GISAttributeConstants.ATT_VAL_ETAT_MODI;
int nbpt=geom.getNumPoints();
vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt);
@@ -850,7 +859,7 @@
public int joinGeometries(int[] _idxSemis, final CtuluCommandContainer _cmd) {
if (geometries_ == null||_idxSemis==null||_idxSemis.length!=2)
return -1;
- final CtuluCommandComposite cmp = new CtuluCommandComposite("Jointure de semis de points");
+ final CtuluCommandComposite cmp = new CtuluCommandComposite(EbliLib.getS("Jointure de semis de points"));
// Nouvelles coordonn\xE9es
int nbPointMulti1=geometries_.getGeometry(_idxSemis[0]).getNumPoints();
@@ -864,6 +873,8 @@
}
// Les datas
+ final int iattHisto=geometries_.getIndiceOf(GISAttributeConstants.HISTORY);
+
Object[] dataSemis=new Object[geometries_.getNbAttributes()];
for (int att=0; att<geometries_.getNbAttributes(); att++) {
// Attributs atomiques
@@ -879,12 +890,19 @@
}
// Attributs globaux
else {
- // Cas particulier de l'attribut TITRE => <TITRE_GEOM1>_<TITRE_GEOM2>
+ // Cas particulier de l'attribut TITRE => On prend le premier, l'autre va dans l'historique
if (geometries_.getModel(att).getAttribute()==GISAttributeConstants.TITRE) {
String name1=(String)geometries_.getModel(att).getObjectValueAt(_idxSemis[0]);
String name2=(String)geometries_.getModel(att).getObjectValueAt(_idxSemis[1]);
- dataSemis[att]=name1+"_"+name2;
+ dataSemis[att]=name1;
+
+ if (iattHisto!=-1) {
+ dataSemis[iattHisto]=GISLib.appendHistory(EbliLib.getS("Jonction"),name1+","+name2, (String)geometries_.getModel(iattHisto).getObjectValueAt(_idxSemis[0]));
+ }
}
+ // Cas particulier de l'attribut HISTORY => D\xE9j\xE0 trait\xE9
+ else if (geometries_.getModel(att).getAttribute()==GISAttributeConstants.HISTORY) {}
+
// Cas particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI
else if (geometries_.getModel(att).getAttribute()==GISAttributeConstants.ETAT_GEOM) {
dataSemis[att]=GISAttributeConstants.ATT_VAL_ETAT_MODI;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|