|
From: <de...@us...> - 2013-01-23 21:45:38
|
Revision: 8247
http://fudaa.svn.sourceforge.net/fudaa/?rev=8247&view=rev
Author: deniger
Date: 2013-01-23 21:45:29 +0000 (Wed, 23 Jan 2013)
Log Message:
-----------
Modified Paths:
--------------
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerLineEditable.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigDataModelStoreAdapter.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java
Added Paths:
-----------
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigLoadResultToAtomicProcess.java
Modified: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java 2013-01-23 21:44:55 UTC (rev 8246)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java 2013-01-23 21:45:29 UTC (rev 8247)
@@ -53,7 +53,7 @@
/**
* Une implementation d'un groupe de calques GIS. Il peut contenir des calques SIG points ou polylignes, avec attributs.
- *
+ *
* @author Fred Deniger
* @version $Id$
*/
@@ -64,6 +64,7 @@
* @version $Id$
*/
static final class CommandForLayerCreation implements CtuluCommand {
+
private final BCalque parent_;
private final ZCalqueAffichageDonnees la_;
@@ -91,16 +92,17 @@
* @author fred deniger
* @version $Id$
*/
- static final class NewNamePanel extends CtuluDialogPanel {
+ public static final class NewNamePanel extends CtuluDialogPanel {
+
/**
- *
+ *
*/
private final BuTextField ft_;
/**
* @param _ft
*/
- NewNamePanel(final BuTextField _ft) {
+ public NewNamePanel(final BuTextField _ft) {
ft_ = _ft;
}
@@ -114,35 +116,26 @@
return true;
}
}
-
int grIdx_;
-
EbliActionInterface actionAddGroup_;
-
- protected EbliActionInterface actionAddPoint_;
-
- protected EbliActionInterface actionAddPoly_;
-
+ protected EbliActionInterface actionAddPoint_;
+ protected EbliActionInterface actionAddPoly_;
EbliActionInterface actionModifyAtt_;
-
transient FSigAttibuteTypeManager att_;
-
GISAttributeInterface[] attributes_;
-
// final boolean canAddGroup_;
-
protected transient final FSigVisuPanel visu_;
FSigLayerGroup(final FSigVisuPanel _impl, final EbliActionInterface _actPoint, final EbliActionInterface _actPoly,
- final EbliActionInterface _modifyAttributes) {
+ final EbliActionInterface _modifyAttributes) {
// canAddGroup_ = false;
visu_ = _impl;
att_ = visu_.getAttributeMng();
actionAddPoly_ = _actPoly;
actionAddPoint_ = _actPoint;
actionModifyAtt_ = _modifyAttributes;
- setActions(new EbliActionInterface[] { actionAddPoly_, actionAddPoint_, null, actionModifyAtt_, null,
- visu_.getEditor().getExportAction(), visu_.getEditor().getImportAction() });
+ setActions(new EbliActionInterface[]{actionAddPoly_, actionAddPoint_, null, actionModifyAtt_, null,
+ visu_.getEditor().getExportAction(), visu_.getEditor().getImportAction()});
}
/**
@@ -160,7 +153,7 @@
buildAddPoint();
buildAddPoly();
buildModifyAtt();
- setActions(new EbliActionInterface[] { actionAddGroup_, null, visu_.getEditor().getExportAction() });
+ setActions(new EbliActionInterface[]{actionAddGroup_, null, visu_.getEditor().getExportAction()});
att_ = visu_.getAttributeMng();
attributes_ = _att;
}
@@ -170,7 +163,7 @@
}
public FSigLayerGroup addGroupAct(final String _title, final BCalque _parent, final boolean _enPremier,
- final GISAttributeInterface[] _att) {
+ final GISAttributeInterface[] _att) {
/*
* if (!canAddGroup_) { return null; }
*/
@@ -198,7 +191,6 @@
visu_.getEditor().updatePalette();
}
-
/**
* Pour le titre propose par d\xE9faut d'un calque de lignes bris\xE9es.
*/
@@ -210,7 +202,7 @@
protected String askForName(final String _title, final boolean _poly) {
final BuTextField ft = new BuTextField(CtuluLib.getS("Nouveau")
- + CtuluLibString.getEspaceString(_poly ? idxPoly_ : idxPt_));
+ + CtuluLibString.getEspaceString(_poly ? idxPoly_ : idxPt_));
ft.setColumns(12);
final CtuluDialogPanel pn = new NewNamePanel(ft);
pn.addLabel(BuResource.BU.getString("Nom"));
@@ -243,14 +235,18 @@
}
}
+ protected void setAttributes(GISAttributeInterface[] attributes_) {
+ this.attributes_ = attributes_;
+ }
+
protected void buildModifyAtt() {
if (actionModifyAtt_ == null) {
actionModifyAtt_ = new FSigLayerAction.ModifyAttributeAction(visu_.getArbreCalqueModel());
}
}
- private void finishActionCreation(final BCalque _parent, final CtuluCommandContainer _cmd,
- final ZCalqueAffichageDonnees _la, final boolean _addCancel) {
+ protected void finishActionCreation(final BCalque _parent, final CtuluCommandContainer _cmd,
+ final ZCalqueAffichageDonnees _la, final boolean _addCancel) {
final List action = new ArrayList(5);
action.addAll(Arrays.asList(visu_.getEditor().getEditAction()));
action.add(visu_.getEditor().getActionDelete());
@@ -276,12 +272,12 @@
@Override
public ZCalqueLigneBrisee addLigneBriseeLayerAct(final String _title, final GISZoneCollectionLigneBrisee _zone,
- final CtuluCommandContainer _cmd) {
+ final CtuluCommandContainer _cmd) {
return addLigneBriseeLayerAct(_title, new ZModeleLigneBriseeEditable(_zone), _cmd);
}
public ZCalqueLigneBrisee addLigneBriseeLayerAct(final String _title, final ZModeleLigneBriseeEditable _model,
- final CtuluCommandContainer _cmd) {
+ final CtuluCommandContainer _cmd) {
final ZCalqueLigneBriseeEditable la = new FSigLayerLineEditable(_model, visu_.getEditor());
la.setName(BGroupeCalque.findUniqueChildName(this, "poly"));
la.setTitle(_title);
@@ -295,12 +291,12 @@
@Override
public ZCalquePointEditable addPointLayerAct(final String _title, final GISZoneCollectionPoint _zone,
- final CtuluCommandContainer _cmd) {
+ final CtuluCommandContainer _cmd) {
return addPointLayerAct(_title, new ZModelePointEditable(_zone), _cmd);
}
public ZCalquePointEditable addPointLayerAct(final String _title, final ZModelePointEditable _modele,
- final CtuluCommandContainer _cmd) {
+ final CtuluCommandContainer _cmd) {
final FSigLayerPointEditable la = new FSigLayerPointEditable(_modele, visu_.getEditor());
la.setName(BGroupeCalque.findUniqueChildName(this, "point"));
la.setTitle(_title);
@@ -337,7 +333,6 @@
basicDetruire(_c);
if (idx >= 0) {
getCmdMng().addCmd(new CtuluCommand() {
-
@Override
public void redo() {
FSigLayerGroup.this.basicDetruire(_c);
@@ -348,7 +343,6 @@
FSigLayerGroup.this.add(_c, idx);
}
-
});
}
@@ -365,7 +359,6 @@
/*
* public final boolean isCanAddGroup() { return canAddGroup_; }
*/
-
@Override
public boolean isTitleModifiable() {
return true;
@@ -377,7 +370,9 @@
}
public static void editFor(final FSigLayerGroup _layer) {
- if (_layer == null) { return; }
+ if (_layer == null) {
+ return;
+ }
final FSigAttributeTableModel model = new FSigAttributeTableModel(_layer.getAttributes(), true);
final CtuluListEditorPanel panel = model.buildEditor();
final CtuluDialogPanel pn = new CtuluDialogPanel();
@@ -388,9 +383,10 @@
final BCalque[] cq = _layer.getCalques();
final GISAttributeInterface[] att = model.getAttributes();
final Map newName = model.getRenamedAttribute();
- if (Arrays.equals(att, _layer.attributes_) && newName.size() == 0) { return; }
+ if (Arrays.equals(att, _layer.attributes_) && newName.size() == 0) {
+ return;
+ }
final CtuluCommandComposite cmp = new CtuluCommandComposite() {
-
@Override
protected void actionToDoAfterUndoOrRedo() {
_layer.visu_.getArbreCalqueModel().fireObservableChanged();
@@ -404,7 +400,7 @@
};
for (int i = 0; i < cq.length; i++) {
if (cq[i] instanceof ZCalqueAffichageDonneesInterface
- && ((ZCalqueAffichageDonneesInterface) cq[i]).modeleDonnees() instanceof ZModeleGeometry) {
+ && ((ZCalqueAffichageDonneesInterface) cq[i]).modeleDonnees() instanceof ZModeleGeometry) {
final ZModeleGeometry donnees = (ZModeleGeometry) ((ZCalqueAffichageDonneesInterface) cq[i]).modeleDonnees();
donnees.getGeomData().setAttributes(att, cmp);
}
@@ -412,7 +408,6 @@
final GISAttributeInterface[] old = _layer.attributes_;
_layer.attributes_ = att;
cmp.addCmd(new CtuluCommand() {
-
@Override
public void redo() {
_layer.attributes_ = att;
@@ -424,14 +419,12 @@
_layer.attributes_ = old;
}
-
});
final boolean changed = FSigAttributeTableModel.rename(newName);
if (changed) {
cmp.addCmd(new CtuluCommand() {
-
@Override
public void redo() {
FSigAttributeTableModel.rename(newName);
@@ -442,7 +435,6 @@
public void undo() {
FSigAttributeTableModel.rename(newName);
}
-
});
}
if (cmp.getNbCmd() > 0) {
@@ -460,11 +452,10 @@
/**
* On autorise la modification du manager d'attribut
- *
+ *
* @param _att the att to set
*/
public void setAtt(FSigAttibuteTypeManager _att) {
att_ = _att;
}
-
}
Modified: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerLineEditable.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerLineEditable.java 2013-01-23 21:44:55 UTC (rev 8246)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerLineEditable.java 2013-01-23 21:45:29 UTC (rev 8247)
@@ -30,5 +30,6 @@
public BCalquePersistenceInterface getPersistenceMng() {
return new FSigLayerLinePersistence();
}
+
}
Modified: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigDataModelStoreAdapter.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigDataModelStoreAdapter.java 2013-01-23 21:44:55 UTC (rev 8246)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigDataModelStoreAdapter.java 2013-01-23 21:45:29 UTC (rev 8247)
@@ -45,13 +45,9 @@
GISAttributeInterface[] atts_;
Object[][] cacheAtt_;
-
final FeatureType features_;
-
Geometry[] geoms_;
-
int[] idxInSrc_;
-
int nbGeom_ = -1;
final FeatureSource src_;
@@ -65,15 +61,14 @@
features_ = src_.getSchema();
updateNumGeom(_progress);
}
-
+
@Override
public GISDataModel createTranslate(GISPoint xyToAdd) {
- if(xyToAdd==null){
+ if (xyToAdd == null) {
return this;
}
return new GisDataModelTranslated(this, xyToAdd);
}
-
/**
* @param _factory l'usine de dataStore
@@ -82,7 +77,7 @@
* @throws IOException
*/
public FSigDataModelStoreAdapter(final FileDataStoreFactorySpi _factory, final File _f,
- final ProgressionInterface _progress) throws IOException {
+ final ProgressionInterface _progress) throws IOException {
final DataStore dataStore = _factory.createDataStore(_f.toURI().toURL());
final String[] name = dataStore.getTypeNames();
if (name == null || name.length == 0) {
@@ -186,7 +181,6 @@
* 0; i--) { r[i] = feature.getAttribute(idxInSrc_[i]); } return r; } } catch (final Exception e) { if
* (FuLog.isTrace()) FuLog.warning(e); } finally { if (it != null) it.close(); } return null; }
*/
-
protected void replacePolygonWithLine(final int _i) {
geoms_[_i] = ((Polygon) geoms_[_i]).getExteriorRing();
}
@@ -426,5 +420,4 @@
}
}
-
}
Modified: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java 2013-01-23 21:44:55 UTC (rev 8246)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java 2013-01-23 21:45:29 UTC (rev 8247)
@@ -22,36 +22,49 @@
import org.fudaa.fudaa.sig.FSigGeomSrcData;
/**
- * Une classe contenant des objets GIS import\xE9s depuis un ou plusieurs fichiers contenant des
- * informations GIS. Cette classe est charg\xE9e par l'interface de chargement
- * {@link FSigFileLoaderI}, qui peut \xEAtre appel\xE9e plusieurs fois de facon iterative.
- *
+ * Une classe contenant des objets GIS import\xE9s depuis un ou plusieurs fichiers contenant des informations GIS. Cette classe est charg\xE9e par
+ * l'interface de chargement {@link FSigFileLoaderI}, qui peut \xEAtre appel\xE9e plusieurs fois de facon iterative.
+ *
* @author Fred Deniger
* @version $Id: FSigFileLoadResult.java,v 1.1.6.2 2008-04-01 17:11:49 bmarchan Exp $
*/
public class FSigFileLoadResult {
private boolean first_ = true;
-
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 */
+ /**
+ * La somme des points contenus dans tous les mod\xE8les de points
+ */
public int nbPoint_;
- /** La somme des points contenus dans tous les mod\xE8les (points, polylignes, polygones, etc.) */
+ /**
+ * La somme des points contenus dans tous les mod\xE8les (points, polylignes, polygones, etc.)
+ */
public int nbPointTotal_;
- /** La somme des polygones contenus dans tous les mod\xE8les de polygones */
+ /**
+ * La somme des polygones contenus dans tous les mod\xE8les de polygones
+ */
public int nbPolygones_;
- /** La somme des poylignes contenus dans tous les mod\xE8les de polylignes */
+ /**
+ * La somme des poylignes contenus dans tous les mod\xE8les de polylignes
+ */
public int nbPolylignes_;
- /** La liste des mod\xE8les {@link GISDataModel} de polylignes */
+ /**
+ * La liste des mod\xE8les {@link GISDataModel} de polylignes
+ */
public List<GISDataModel> ligneModel_ = new ArrayList<GISDataModel>();
- /** La liste des mod\xE8les {@link GISDataModel} de points */
+ /**
+ * La liste des mod\xE8les {@link GISDataModel} de points
+ */
public List<GISDataModel> pointModel_ = new ArrayList<GISDataModel>();
- /** La liste des mod\xE8les {@link GISDataModel} de polygones */
+ /**
+ * La liste des mod\xE8les {@link GISDataModel} de polygones
+ */
public List<GISDataModel> polygoneModel_ = new ArrayList<GISDataModel>();
- /** La liste des mod\xE8les {@link GISDataModel} de multipoints */
-
+
+ /**
+ * La liste des mod\xE8les {@link GISDataModel} de multipoints
+ */
public void addUsedAttributes(final GISAttributeInterface[] _att) {
if (_att == null) {
return;
@@ -84,6 +97,20 @@
return res;
}
+ /**
+ * permet de prendre en compte les attributs atomiques stock\xE9s comme tableau dans les attributs globaux.
+ *
+ * @return
+ */
+ public FSigGeomSrcData createDataWithAtomic() {
+ if (isEmpty()) {
+ return null;
+ }
+ final FSigGeomSrcData res = createData();
+ FSigLoadResultToAtomicProcess process = new FSigLoadResultToAtomicProcess();
+ return process.transform(res);
+ }
+
public GISAttributeInterface findOrCreateAttribute(final H2dVariableType _t, final boolean _isAtomic) {
if (_t == H2dVariableType.BATHYMETRIE && _isAtomic) {
allAttribute_.add(GISAttributeConstants.BATHY);
@@ -102,7 +129,7 @@
GISAttributeInterface res = findAttributes(_name, _data, _isAtomic);
if (res == null) {
res = GISLib.createAttributeFrom(_name, _data, _isAtomic);
- if(res!=null) {
+ if (res != null) {
allAttribute_.add(res);
}
}
Modified: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java 2013-01-23 21:44:55 UTC (rev 8246)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java 2013-01-23 21:45:29 UTC (rev 8247)
@@ -276,7 +276,7 @@
}
}
super.valideData();
- return res == null ? null : res.createData();
+ return res == null ? null : res.createDataWithAtomic();
}
/**
Added: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigLoadResultToAtomicProcess.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigLoadResultToAtomicProcess.java (rev 0)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigLoadResultToAtomicProcess.java 2013-01-23 21:45:29 UTC (rev 8247)
@@ -0,0 +1,72 @@
+/*
+ GPL 2
+ */
+package org.fudaa.fudaa.sig.wizard;
+
+import org.fudaa.ctulu.gis.GISAttributeInterface;
+import org.fudaa.ctulu.gis.GISDataModel;
+import org.fudaa.ctulu.gis.GISDataModelAttributeToAtomicSubstitutionAdapter;
+import org.fudaa.ctulu.gis.GISLib;
+import org.fudaa.fudaa.sig.FSigGeomSrcData;
+
+/**
+ * Permet de transformer les attributs d'un chargement en atomique.
+ *
+ * @author Frederic Deniger
+ */
+public class FSigLoadResultToAtomicProcess {
+
+ private GISDataModel transform(GISDataModel gisDataModel) {
+ GISDataModel res = gisDataModel;
+ int nbAttributes = gisDataModel.getNbAttributes();
+ for (int i = 0; i < nbAttributes; i++) {
+ GISAttributeInterface attribute = gisDataModel.getAttribute(i);
+ GISAttributeInterface target = null;
+ if (!attribute.isAtomicValue()) {
+ target = GISLib.createAttributeFrom(attribute.getName(), attribute.getDataClass());
+ if (!target.isAtomicValue()) {
+ target = null;
+ }
+ }
+ if (target != null) {
+ res = new GISDataModelAttributeToAtomicSubstitutionAdapter(res, attribute, target);
+ }
+ }
+ return res;
+ }
+
+ public FSigGeomSrcData transform(FSigGeomSrcData init) {
+ FSigGeomSrcData res = new FSigGeomSrcData();
+ res.setNbPoints(init.getNbPoints());
+ res.setNbPointsTotal(init.getNbPointsTotal());
+ res.setNbPolygones(init.getNbPolygones());
+ res.setNbPolylignes(init.getNbPolylignes());
+ //doit on transformer les points
+ res.setPoints(init.getPoints());
+ res.setPolygones(transformPolygons(init));
+ res.setPolylignes(transformPolylines(init));
+
+ return res;
+
+ }
+
+ public GISDataModel[] transformPolygons(FSigGeomSrcData init) {
+ GISDataModel[] polygones = init.getPolygones();
+ GISDataModel[] targetPolygones = new GISDataModel[polygones.length];
+ for (int i = 0; i < targetPolygones.length; i++) {
+ targetPolygones[i] = transform(polygones[i]);
+ }
+ return targetPolygones;
+
+ }
+
+ public GISDataModel[] transformPolylines(FSigGeomSrcData init) {
+ GISDataModel[] polylines = init.getPolylignes();
+ GISDataModel[] targetPolylines = new GISDataModel[polylines.length];
+ for (int i = 0; i < targetPolylines.length; i++) {
+ targetPolylines[i] = transform(polylines[i]);
+ }
+ return targetPolylines;
+
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|