|
From: <de...@us...> - 2009-10-15 18:23:08
|
Revision: 5280
http://fudaa.svn.sourceforge.net/fudaa/?rev=5280&view=rev
Author: deniger
Date: 2009-10-15 18:22:55 +0000 (Thu, 15 Oct 2009)
Log Message:
-----------
Added Paths:
-----------
trunk/business/fudaa-sig/
trunk/business/fudaa-sig/.settings/
trunk/business/fudaa-sig/.settings/org.eclipse.core.resources.prefs
trunk/business/fudaa-sig/.settings/org.eclipse.jdt.core.prefs
trunk/business/fudaa-sig/pom.xml
trunk/business/fudaa-sig/src/
trunk/business/fudaa-sig/src/main/
trunk/business/fudaa-sig/src/main/java/
trunk/business/fudaa-sig/src/main/java/org/
trunk/business/fudaa-sig/src/main/java/org/fudaa/
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttibuteTypeManager.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttributeEditorPanel.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttributeTableModel.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigExportImportAttributesMapper.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigFilterZone.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigFilterZoneActivity.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigGeomDataClosedLayerFilter.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigGeomSrcData.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigGeomSrcDataUtils.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigLayerGroupSaver.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigLayerLineAddedSaver.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigLayerPointAddedSaver.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigLib.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigLineSingleModel.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigLoaderPreviewer.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigProjectPersistence.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigProjet.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigResource.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigVarAttrMapperTableModel.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigVarPolygoneModifierActivity.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigVariableModifResult.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigVariableModifResultSub.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigEditor.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigGrillePalette.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigImageImportAction.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerAction.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java
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/FSigLayerLine.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/layer/FSigLayerPointEditable.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigTempLineInLayer.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/layer/FSigVisuPanelController.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/persistence/
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/persistence/FSigLayerGroupPersistence.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/persistence/FSigLayerLinePersistence.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/persistence/FSigLayerMultiPointPersistence.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/persistence/FSigLayerPointPersistence.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSIgImageWizartStepCalageUI.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigDataModelSinusxAdapter.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/FSigFileLoaderCsv.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGIS.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGrid.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderI.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderInp.java
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/FSigFileLoaderReflucadBER.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadPRO.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadSEM.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRefluxRefondeResult.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarCox.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarInx.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSem.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderSerafin.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigFileLoaderSinusX.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigImageWizardPanelController.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigImageWizardStepCalage.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigImageWizardStepCalageLogic.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigImageWizardStepImage.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigImageWizardTableModel.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigImageWizardTask.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigVariableInterpolator.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigWizardDefaultPanel.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigWizardFileMng.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigWizardFileModel.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigWizardImport.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigWizardImportHelper.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigWizardImportStepDestination.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigWizardStepInterface.java
trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/wizard/FSigWizardVariableModifier.java
trunk/business/fudaa-sig/src/main/resources/
trunk/business/fudaa-sig/src/main/resources/org/
trunk/business/fudaa-sig/src/main/resources/org/fudaa/
trunk/business/fudaa-sig/src/main/resources/org/fudaa/fudaa/
trunk/business/fudaa-sig/src/main/resources/org/fudaa/fudaa/sig/
trunk/business/fudaa-sig/src/main/resources/org/fudaa/fudaa/sig/fsig_en.fr_txt
trunk/business/fudaa-sig/src/main/resources/org/fudaa/fudaa/sig/package.html
trunk/business/fudaa-sig/src/main/resources/org/fudaa/fudaa/sig/persistence/
trunk/business/fudaa-sig/src/main/resources/org/fudaa/fudaa/sig/persistence/lisez-moi.txt
trunk/business/fudaa-sig/src/main/resources/org/fudaa/fudaa/sig/persistence/readme.txt
trunk/business/fudaa-sig/src/site/
trunk/business/fudaa-sig/src/test/
trunk/business/fudaa-sig/src/test/java/
trunk/business/fudaa-sig/src/test/java/org/
trunk/business/fudaa-sig/src/test/java/org/fudaa/
trunk/business/fudaa-sig/src/test/java/org/fudaa/fudaa/
trunk/business/fudaa-sig/src/test/java/org/fudaa/fudaa/sig/
trunk/business/fudaa-sig/src/test/java/org/fudaa/fudaa/sig/TestSigAttributesExample.java
Added: trunk/business/fudaa-sig/.settings/org.eclipse.core.resources.prefs
===================================================================
--- trunk/business/fudaa-sig/.settings/org.eclipse.core.resources.prefs (rev 0)
+++ trunk/business/fudaa-sig/.settings/org.eclipse.core.resources.prefs 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,3 @@
+#Tue Jul 21 11:46:37 CEST 2009
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-15
Added: trunk/business/fudaa-sig/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- trunk/business/fudaa-sig/.settings/org.eclipse.jdt.core.prefs (rev 0)
+++ trunk/business/fudaa-sig/.settings/org.eclipse.jdt.core.prefs 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,5 @@
+#Tue Jul 21 11:57:47 CEST 2009
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
Added: trunk/business/fudaa-sig/pom.xml
===================================================================
--- trunk/business/fudaa-sig/pom.xml (rev 0)
+++ trunk/business/fudaa-sig/pom.xml 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <properties>
+ <dodico-h2d.version>1.0-SNAPSHOT</dodico-h2d.version>
+ </properties>
+
+ <parent>
+ <groupId>org.fudaa.pom</groupId>
+ <artifactId>business-pom</artifactId>
+ <version>0.3</version>
+ </parent>
+ <groupId>org.fudaa.business.sig</groupId>
+ <artifactId>sig-ui</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <name>sig-ui</name>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.fudaa.business.h2d</groupId>
+ <artifactId>project</artifactId>
+ <version>${dodico-h2d.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.fudaa.business.h2d</groupId>
+ <artifactId>h2d-io</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.fudaa.framework.ebli</groupId>
+ <artifactId>ebli-2d</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.fudaa.framework.fudaa</groupId>
+ <artifactId>fudaa-common-save</artifactId>
+ </dependency>
+ </dependencies>
+</project>
Added: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttibuteTypeManager.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttibuteTypeManager.java (rev 0)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttibuteTypeManager.java 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,123 @@
+/*
+ * @creation 18 mai 2005
+ * @modification $Date: 2006-09-19 15:10:21 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.sig;
+
+import gnu.trove.TObjectIntHashMap;
+
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.fudaa.ctulu.CtuluVariable;
+import org.fudaa.ctulu.gis.GISAttributeBoolean;
+import org.fudaa.ctulu.gis.GISAttributeConstants;
+import org.fudaa.ctulu.gis.GISAttributeDouble;
+import org.fudaa.ctulu.gis.GISAttributeInteger;
+import org.fudaa.ctulu.gis.GISAttributeInterface;
+import org.fudaa.ctulu.gis.GISAttributeString;
+
+/**
+ * @author Fred Deniger
+ * @version $Id: FSigAttibuteTypeManager.java,v 1.4 2006-09-19 15:10:21 deniger Exp $
+ */
+public class FSigAttibuteTypeManager {
+
+ final Map atts_ = new TreeMap();
+ final TObjectIntHashMap attUsed_ = new TObjectIntHashMap();
+
+ public GISAttributeInterface getAttribute(final String _name) {
+ return (GISAttributeInterface) atts_.get(_name);
+ }
+
+ public boolean contains(final String _name) {
+ return atts_.containsKey(_name);
+ }
+
+ public int getNbUsed(final GISAttributeInterface _att) {
+ return attUsed_.get(_att);
+ }
+
+ public GISAttributeDouble addDoubleAttribute(final String _name) {
+ return addDoubleAttribute(_name, false);
+ }
+
+ public void fillListWithAtt(final List _dest) {
+ _dest.addAll(atts_.values());
+ }
+
+ public GISAttributeDouble addDoubleAttribute(final CtuluVariable _var, final boolean _atomic) {
+ final GISAttributeDouble r = addDoubleAttribute(_var.getName(), _atomic);
+ if (r != null) {
+ r.setUserData(_var.getID());
+ }
+ return r;
+ }
+
+ public GISAttributeDouble addDoubleAttribute(final String _name, final boolean _atomic) {
+ if (contains(_name)) { return null; }
+ final GISAttributeDouble r = new GISAttributeDouble(_name, _atomic);
+ atts_.put(_name, r);
+ return r;
+ }
+
+ public GISAttributeInteger addIntegerAttribute(final String _name) {
+ return addIntegerAttribute(_name, false);
+
+ }
+
+ public GISAttributeInteger addIntegerAttribute(final String _name, final boolean _atomic) {
+ if (contains(_name)) { return null; }
+ final GISAttributeInteger r = new GISAttributeInteger(_name, _atomic);
+ atts_.put(_name, r);
+ return r;
+ }
+
+ public GISAttributeBoolean addBooleanAttribute(final String _name, final boolean _atomic) {
+ if (contains(_name)) { return null; }
+ final GISAttributeBoolean r = new GISAttributeBoolean(_name, _atomic);
+ atts_.put(_name, r);
+ return r;
+ }
+
+ public GISAttributeString addTextAttribute(final String _name) {
+ if (contains(_name)) { return null; }
+ final GISAttributeString r = new GISAttributeString(_name);
+ atts_.put(_name, r);
+ return r;
+ }
+
+ /**
+ *
+ */
+ public FSigAttibuteTypeManager() {
+ super();
+ atts_.put("name", GISAttributeConstants.TITRE);
+ atts_.put("Z", GISAttributeConstants.BATHY);
+ }
+
+ /**
+ * @param _att attribut utilisee par un groupe de calque SIG
+ */
+ public void setUsed(final GISAttributeInterface _att) {
+ attUsed_.put(_att, getNbUsed(_att) + 1);
+ }
+
+ /**
+ * @param _att attribut qui n'est plus utilisr par un groupe de calque SIG
+ */
+ public void setUnUsed(final GISAttributeInterface _att) {
+ final int newUsed = getNbUsed(_att) - 1;
+ if (newUsed <= 0) {
+ attUsed_.remove(_att);
+ atts_.remove(_att);
+ } else {
+ attUsed_.put(_att, newUsed);
+ }
+ }
+
+}
Added: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttributeEditorPanel.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttributeEditorPanel.java (rev 0)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttributeEditorPanel.java 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,243 @@
+/*
+ * @creation 18 mai 2005
+ * @modification $Date: 2008-01-11 12:20:39 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.sig;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.swing.AbstractListModel;
+import javax.swing.BorderFactory;
+import javax.swing.ComboBoxModel;
+import javax.swing.DefaultCellEditor;
+import javax.swing.JComboBox;
+import javax.swing.JTable;
+
+import org.fudaa.ctulu.CtuluLibString;
+import org.fudaa.ctulu.gis.GISAttributeDouble;
+import org.fudaa.ctulu.gis.GISAttributeInterface;
+import org.fudaa.ctulu.gis.GISZoneCollection;
+import org.fudaa.ctulu.gui.CtuluCellTextRenderer;
+import org.fudaa.ctulu.gui.CtuluDialogPanel;
+import org.fudaa.ctulu.gui.CtuluListEditorModel;
+import org.fudaa.ctulu.gui.CtuluListEditorPanel;
+import org.fudaa.dodico.h2d.type.H2dVariableType;
+
+import com.memoire.bu.BuBorderLayout;
+import com.memoire.bu.BuResource;
+import com.memoire.fu.FuEmptyArrays;
+import com.memoire.fu.FuLog;
+
+/**
+ * Un panneau d'\xE9dition des attributs d'un groupe de calque SIG utilis\xE9 lors de la
+ * cr\xE9ation du groupe.
+ *
+ * @author Fred Deniger
+ * @version $Id: FSigAttributeEditorPanel.java,v 1.12 2008-01-11 12:20:39 bmarchan Exp $
+ */
+public class FSigAttributeEditorPanel extends CtuluDialogPanel {
+
+ final GISZoneCollection collect_;
+ final FSigAttibuteTypeManager mng_;
+ SpecModel model_;
+
+ private class SpecModel extends CtuluListEditorModel {
+
+ SpecModel() {
+ super(collect_ == null ? FuEmptyArrays.OBJECT0 : collect_.getAttributes(), true);
+ }
+
+ public int getRowCount() {
+ return super.getRowCount() + 1;
+ }
+
+ public boolean actionAdd() {
+ return false;
+ }
+
+ public boolean isCellEditable(final int _rowIndex, final int _columnIndex) {
+ return _columnIndex == 1 && _rowIndex == getRowCount() - 1;
+ }
+
+ public void setValueAt(final Object _value, final int _rowIndex, final int _columnIndex) {
+ if (_value == null || _value.toString().trim().length() == 0) {
+ return;
+ }
+ Object newValue = mng_.getAttribute(_value.toString());
+ if (newValue == null) {
+ newValue = _value;
+ }
+ v_.add(newValue);
+ final int n = v_.size();
+ fireTableRowsInserted(n, n);
+ }
+
+ public Object getValueAt(final int _row, final int _col) {
+ if (_col == 1 && _row == getRowCount() - 1) {
+ return null;
+ }
+ return super.getValueAt(_row, _col);
+ }
+
+ public boolean actionInserer(final int _r) {
+ return false;
+ }
+
+ }
+
+ private class SpecCbModel extends AbstractListModel implements ComboBoxModel {
+
+ Object select_;
+ List att_ = new ArrayList();
+
+ SpecCbModel() {
+ fillModel();
+ }
+
+ public Object getSelectedItem() {
+ return select_;
+ }
+
+ final void fillModel() {
+ att_.clear();
+ mng_.fillListWithAtt(att_);
+ if (proposedVar_ != null) {
+ att_.addAll(Arrays.asList(proposedVar_));
+ fireIntervalAdded(this, 0, att_.size());
+ }
+ }
+
+ public void setSelectedItem(final Object _anItem) {
+ if (_anItem != select_) {
+ select_ = _anItem;
+ fireContentsChanged(this, -1, -1);
+ }
+ }
+
+ public Object getElementAt(final int _index) {
+ if (_index == 0) {
+ return null;
+ }
+ return att_.get(_index - 1);
+ }
+
+ public int getSize() {
+ return 1 + att_.size();
+ }
+ }
+
+ H2dVariableType[] proposedVar_;
+
+ Set initAtt_;
+
+ public boolean valide() {
+ if (t_.isEditing()) {
+ t_.getCellEditor().stopCellEditing();
+ }
+ return true;
+ }
+
+ public void fillWithAddedRemovedAttribute(final Set _add, final Set _removed) {
+ final Object[] o = model_.getValues();
+ _removed.addAll(initAtt_);
+ for (int i = o.length - 1; i >= 0; i--) {
+ final Object oi = o[i];
+ if (oi instanceof GISAttributeInterface) {
+ if (initAtt_.contains(oi)) {
+ _removed.remove(oi);
+ } else {
+ _add.add(oi);
+ }
+ } else if (oi instanceof H2dVariableType) {
+ final GISAttributeDouble d = mng_.addDoubleAttribute((H2dVariableType) oi, false);
+ if (d == null) {
+ FuLog.warning(new Throwable());
+ } else {
+ _add.add(d);
+ }
+ } else if (oi instanceof String) {
+ final GISAttributeDouble d = mng_.addDoubleAttribute((String) oi, false);
+ if (d == null) {
+ FuLog.warning(new Throwable());
+ } else {
+ _add.add(d);
+ }
+ }
+
+ }
+ }
+
+ JTable t_;
+
+ /**
+ * @param _collect
+ * @param _mng
+ * @param _proposedVar
+ */
+ public FSigAttributeEditorPanel(final GISZoneCollection _collect, final FSigAttibuteTypeManager _mng,
+ final H2dVariableType[] _proposedVar, final String _titleForEditor) {
+ super();
+ collect_ = _collect;
+ initAtt_ = new HashSet();
+
+ if (collect_ != null) {
+ initAtt_.addAll(Arrays.asList(collect_.getAttributes()));
+ }
+ mng_ = _mng;
+ model_ = new SpecModel();
+ proposedVar_ = _proposedVar;
+ final CtuluListEditorPanel editor = new CtuluListEditorPanel(model_, false, true, false);
+ t_ = editor.getTable();
+ final JComboBox cb = new JComboBox(new SpecCbModel());
+ cb.setEditable(true);
+ final DefaultCellEditor cellEditor = new DefaultCellEditor(cb);
+ final CtuluCellTextRenderer cbRenderer = createCbCellRenderer();
+ final CtuluCellTextRenderer cellRenderer = createCellRenderer();
+ cb.setRenderer(cbRenderer);
+ editor.setValueListCellEditor(cellEditor);
+ editor.setValueListCellRenderer(cellRenderer);
+ setLayout(new BuBorderLayout());
+ if (_titleForEditor != null) {
+ editor.setBorder(BorderFactory.createTitledBorder(_titleForEditor));
+ }
+ add(editor, BuBorderLayout.CENTER);
+ }
+
+ private static CtuluCellTextRenderer createCellRenderer() {
+ return new CtuluCellTextRenderer() {
+
+ protected void setValue(final Object _value) {
+ if (_value == null) {
+ setText(BuResource.BU.getString("Ajouter..."));
+ } else if (_value instanceof GISAttributeInterface) {
+ setText(((GISAttributeInterface) _value).getLongName());
+ } else {
+ super.setValue(_value);
+ }
+ }
+ };
+ }
+
+ private static CtuluCellTextRenderer createCbCellRenderer() {
+ return new CtuluCellTextRenderer() {
+
+ protected void setValue(final Object _value) {
+ if (_value == null) {
+ setText(CtuluLibString.EMPTY_STRING);
+ } else if (_value instanceof GISAttributeInterface) {
+ final GISAttributeInterface att = (GISAttributeInterface) _value;
+ setText(att.getLongName());
+ } else {
+ super.setValue(_value);
+ }
+ }
+ };
+ }
+}
Added: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttributeTableModel.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttributeTableModel.java (rev 0)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigAttributeTableModel.java 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,279 @@
+/*
+ * @creation 18 janv. 2006
+ * @modification $Date: 2008-01-11 12:20:37 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.sig;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.ComboBoxModel;
+import javax.swing.DefaultCellEditor;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.ListSelectionModel;
+
+import org.fudaa.ctulu.gis.GISAttributeConstants;
+import org.fudaa.ctulu.gis.GISAttributeDouble;
+import org.fudaa.ctulu.gis.GISAttributeInterface;
+import org.fudaa.ctulu.gui.CtuluCellTextRenderer;
+import org.fudaa.ctulu.gui.CtuluListEditorModel;
+import org.fudaa.ctulu.gui.CtuluListEditorPanel;
+
+import com.memoire.bu.BuComboBox;
+
+/**
+ * Un mod\xE8le pour les attributs d'un groupe SIG.
+ *
+ * @author Fred Deniger
+ * @version $Id: FSigAttributeTableModel.java,v 1.10 2008-01-11 12:20:37 bmarchan Exp $
+ */
+public final class FSigAttributeTableModel extends CtuluListEditorModel {
+
+ Map attributeNewName_ = new HashMap();
+
+ public boolean canAdd() {
+ return true;
+ }
+
+ public Map getRenamedAttribute() {
+ return new HashMap(attributeNewName_);
+ }
+
+ protected Object createAttribute(final int _i) {
+ final Object o = v_.get(_i);
+ if (o instanceof GISAttributeInterface) {
+ return o;
+ }
+ final String s = ((String) o).trim();
+ if (s.length() > 0) {
+ return new GISAttributeDouble(s, false);
+ }
+ return null;
+ }
+
+ /**
+ * @return les attributs non renomme
+ */
+ public GISAttributeInterface[] getAttributes() {
+ final int nb = getRowCount();
+ final List r = new ArrayList(nb);
+ for (int i = 0; i < nb; i++) {
+ final Object o = createAttribute(i);
+ if (o != null) {
+ r.add(o);
+ }
+ }
+ return (GISAttributeInterface[]) r.toArray(new GISAttributeInterface[r.size()]);
+ }
+
+ /**
+ *
+ */
+ public FSigAttributeTableModel() {
+ super();
+ buildProposedValue();
+
+ }
+
+ /**
+ * @param _showNumber
+ */
+ public FSigAttributeTableModel(final boolean _showNumber) {
+ super(_showNumber);
+ buildProposedValue();
+ }
+
+ /**
+ * @param _maxNumber
+ */
+ public FSigAttributeTableModel(final int _maxNumber) {
+ super(_maxNumber);
+ buildProposedValue();
+ }
+
+ /**
+ * @param _l
+ * @param _showNumber
+ * @param _maxNbValue
+ */
+ public FSigAttributeTableModel(final List _l, final boolean _showNumber, final int _maxNbValue) {
+ super(_l, _showNumber, _maxNbValue);
+ buildProposedValue();
+ }
+
+ /**
+ * @param _l
+ * @param _showNumber
+ */
+ public FSigAttributeTableModel(final List _l, final boolean _showNumber) {
+ super(_l, _showNumber);
+ buildProposedValue();
+ }
+
+ /**
+ * @param _o
+ * @param _showNumber
+ * @param _maxNbValue
+ */
+ public FSigAttributeTableModel(final Object[] _o, final boolean _showNumber, final int _maxNbValue) {
+ super(_o, _showNumber, _maxNbValue);
+ buildProposedValue();
+ }
+
+ /**
+ * @param _o
+ * @param _showNumber
+ */
+ public FSigAttributeTableModel(final Object[] _o, final boolean _showNumber) {
+ super(_o, _showNumber);
+ buildProposedValue();
+ }
+
+ public Class getColumnClass(final int _columnIndex) {
+ return String.class;
+ }
+
+ public boolean canRemove() {
+ return true;
+ }
+
+ public void edit(final int _r) {}
+
+ protected void buildProposedValue() {
+
+ final List defaultAtt = GISAttributeConstants.getDefaults();
+ defaultAtt.removeAll(super.v_);
+ if (model_ != null) {
+ model_.removeAllElements();
+ final int nb = defaultAtt.size();
+ for (int i = 0; i < nb; i++) {
+ model_.addElement(defaultAtt.get(i));
+ }
+ }
+ }
+
+ DefaultComboBoxModel model_;
+
+ public ComboBoxModel getProposedValueModel() {
+ if (model_ == null) {
+ model_ = new DefaultComboBoxModel();
+ }
+ buildProposedValue();
+ return model_;
+ }
+
+ public Object getValueAt(final int _i) {
+
+ final Object o = super.getValueAt(_i);
+ if (attributeNewName_.containsKey(o)) {
+ return attributeNewName_.get(o);
+ } else if (o instanceof GISAttributeInterface) {
+ return ((GISAttributeInterface) o).getName();
+ }
+ return o.toString();
+ }
+
+ public boolean isCellEditable(final int _rowIndex, final int _columnIndex) {
+ if (super.isShowNumber() && _columnIndex == 0) {
+ return false;
+ }
+ final Object o = super.getValueAt(_rowIndex);
+ if (o instanceof GISAttributeInterface) {
+ return !GISAttributeConstants.isConstant((GISAttributeInterface) o);
+ }
+ return super.isCellEditable(_rowIndex, _columnIndex);
+ }
+
+ public CtuluListEditorPanel buildEditor() {
+ final CtuluListEditorPanel ed = new CtuluListEditorPanel(this);
+ final ComboBoxModel cbModel = getProposedValueModel();
+ final BuComboBox cb = new BuComboBox();
+ createRendererFor(cb);
+ cb.setModel(cbModel);
+ cb.setEditable(true);
+ final DefaultCellEditor cellEd = new DefaultCellEditor(cb);
+ ed.getTable().getColumnModel().getColumn(1).setCellEditor(cellEd);
+ return ed;
+ }
+
+ static void createRendererFor(final BuComboBox _cb) {
+ _cb.setRenderer(new CtuluCellTextRenderer() {
+
+ protected void setValue(final Object _value) {
+ if (_value instanceof GISAttributeInterface) {
+ super.setValue(((GISAttributeInterface) _value).getName());
+ } else {
+ super.setValue(_value);
+ }
+ }
+
+ });
+ }
+
+ public static boolean rename(final Map _attNewName) {
+ boolean changed = false;
+ if (_attNewName.size() > 0) {
+ for (final Iterator it = _attNewName.entrySet().iterator(); it.hasNext();) {
+ final Map.Entry e = (Map.Entry) it.next();
+ final GISAttributeInterface attChanged = (GISAttributeInterface) e.getKey();
+ final String oldName = attChanged.getName();
+ final boolean add = attChanged.setName((String) e.getValue());
+ if (add) {
+ e.setValue(oldName);
+ } else {
+ it.remove();
+ }
+ changed |= add;
+ }
+ }
+ return changed;
+
+ }
+
+ public void setValueAt(final Object _value, final int _rowIndex, final int _columnIndex) {
+ if (_value == null || _value.toString().trim().length() == 0) {
+ return;
+ }
+ final Object o = super.getValueAt(_rowIndex);
+ if (o instanceof GISAttributeInterface) {
+ attributeNewName_.put(o, _value);
+ } else {
+ super.setValueAt(_value, _rowIndex, _columnIndex);
+ }
+ }
+
+ public void addElement(final Object _o) {
+ super.addElement(_o);
+ buildProposedValue();
+ }
+
+ public void remove(final ListSelectionModel _m) {
+ super.remove(_m);
+ buildProposedValue();
+ }
+
+ public String getChanged() {
+ final StringBuffer buf = new StringBuffer(100);
+ final GISAttributeInterface[] att = getAttributes();
+ if (att == null) {
+ buf.append("No change");
+ } else {
+ for (int i = 0; i < att.length; i++) {
+ buf.append(att[i].getName());
+ if (attributeNewName_.containsKey(att[i])) {
+ buf.append(" non chang\xE9 = ").append(attributeNewName_.get(att[i]));
+ }
+ buf.append('\n');
+ }
+ }
+ return buf.toString();
+
+ }
+
+}
Added: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigExportImportAttributesMapper.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigExportImportAttributesMapper.java (rev 0)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigExportImportAttributesMapper.java 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,314 @@
+/*
+ * @creation 20 mai 2005
+ * @modification $Date: 2007-05-04 14:00:26 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.sig;
+
+import java.awt.Component;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.DefaultCellEditor;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.JTable;
+import javax.swing.ListCellRenderer;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+
+import org.fudaa.ctulu.CtuluLibArray;
+import org.fudaa.ctulu.gis.GISAttributeConstants;
+import org.fudaa.ctulu.gis.GISAttributeInterface;
+import org.fudaa.ctulu.gis.GISDataModel;
+import org.fudaa.ctulu.gui.CtuluCellTextRenderer;
+import org.fudaa.dodico.h2d.type.H2dVariableType;
+
+/**
+ * Import de donn\xE9es spatiales pour double, String le reste est ignor\xE9...
+ *
+ * @author Fred Deniger
+ * @version $Id: FSigExportImportAttributesMapper.java,v 1.12 2007-05-04 14:00:26 deniger Exp $
+ */
+public class FSigExportImportAttributesMapper {
+
+ // la source
+ // Les attributs de destination
+ final GISAttributeInterface[] src_;
+ final AttributesTableModel model_;
+ JTable t_;
+ /**
+ * Donne pour chaque classe, les attributs de destination qui serait valides.
+ */
+ Map srcClassDestValid_;
+
+ class AttributesTableModel extends AbstractTableModel {
+
+ GISAttributeInterface[] selectedAttributes_ = new GISAttributeInterface[src_ == null ? 0 : src_.length];
+
+ public int getColumnCount() {
+ return 2;
+ }
+
+ public String getColumnName(final int _column) {
+ if (_column == 0) {
+ return FSigLib.getS("Variable source (lue)");
+ }
+ return FSigLib.getS("Variable destination");
+ }
+
+ public int getRowCount() {
+ return src_.length;
+ }
+
+ Map getReadDestMap() {
+ final Map r = new HashMap();
+ for (int i = src_.length - 1; i >= 0; i--) {
+ r.put(src_[i], selectedAttributes_[i]);
+ }
+ return r;
+ }
+
+ Map getDestReadMap() {
+ final Map r = new HashMap();
+ for (int i = src_.length - 1; i >= 0; i--) {
+ if (selectedAttributes_[i] != null) {
+ r.put(selectedAttributes_[i], src_[i]);
+ }
+ }
+ return r;
+ }
+
+ public Object getValueAt(final int _rowIndex, final int _columnIndex) {
+ if (_columnIndex == 0) {
+ return src_[_rowIndex];
+ }
+ return selectedAttributes_[_rowIndex];
+ }
+
+ public void setValueAt(final Object _value, final int _rowIndex, final int _columnIndex) {
+ if (_columnIndex == 1 && CtuluLibArray.findObjectEgalEgal(selectedAttributes_, _value) < 0) {
+ selectedAttributes_[_rowIndex] = (GISAttributeInterface) _value;
+ fireTableCellUpdated(_rowIndex, _columnIndex);
+ }
+ }
+
+ public boolean isCellEditable(final int _rowIndex, final int _columnIndex) {
+ return (_columnIndex == 1 && srcClassDestValid_.get(src_[_rowIndex].getDataClass()) != null);
+ }
+ }
+
+ /**
+ * @param _src les attributs sources : lus dans un fichier
+ * @param _dest les attributs de destination
+ * @param _filterAtomic true si on doit prendre en compte l'aspect atomique
+ */
+ public FSigExportImportAttributesMapper(final GISAttributeInterface[] _src, final GISAttributeInterface[] _dest,
+ final boolean _filterAtomic) {
+ super();
+ src_ = _src == null ? new GISAttributeInterface[0] : _src;
+ final int nb = src_.length;
+ srcClassDestValid_ = new HashMap(nb);
+ if (_src != null) {
+ for (int i = nb - 1; i >= 0; i--) {
+ if (!srcClassDestValid_.containsKey(_src[i].getDataClass())) {
+ srcClassDestValid_.put(_src[i].getDataClass(), filtreAttributes(_dest, _src[i].getDataClass(),
+ _filterAtomic ? Boolean.valueOf(_src[i].isAtomicValue()) : null));
+ }
+ }
+ }
+ model_ = new AttributesTableModel();
+ t_ = new JTable();
+ t_.setModel(model_);
+ final CtuluCellTextRenderer renderer = new CtuluCellTextRenderer() {
+
+ protected void setValue(final Object _value) {
+ if (_value == null) {
+ super.setText(ignoreObject_);
+ } else if (_value instanceof String) {
+ setText((String) _value);
+ } else if (_value == GISAttributeConstants.BATHY) {
+ super.setText(GISAttributeConstants.BATHY.getLongName() + " :" + H2dVariableType.BATHYMETRIE);
+ } else {
+ super.setText(((GISAttributeInterface) _value).getName());
+ }
+ }
+ };
+ final TableColumnModel colModel = t_.getColumnModel();
+ colModel.getColumn(0).setCellRenderer(renderer);
+ final TableColumn c2 = colModel.getColumn(1);
+ c2.setCellRenderer(renderer);
+ c2.setCellEditor(new ComboCellEditor(renderer));
+ }
+
+ final String ignoreObject_ = FSigLib.getS("Ignorer");
+
+ /**
+ * @return la table utilisee pour editer les correspondance source->destination
+ */
+ public final JTable getTable() {
+ return t_;
+ }
+
+ /**
+ * @return la table de correpondance attribut source (lu) -> attribut de destination
+ */
+ public Map getReadDestMap() {
+ return model_.getReadDestMap();
+ }
+
+ /**
+ * @return la table de correpondance attribut attribut de destination -> source (lu)
+ */
+ public Map getDestReadMap() {
+ return model_.getDestReadMap();
+ }
+
+ private class ComboCellEditor extends DefaultCellEditor {
+
+ DefaultComboBoxModel cbModel_;
+
+ protected ComboCellEditor(final ListCellRenderer _renderer) {
+ super(new JComboBox(new DefaultComboBoxModel()));
+ cbModel_ = (DefaultComboBoxModel) ((JComboBox) super.editorComponent).getModel();
+ ((JComboBox) super.editorComponent).setRenderer(_renderer);
+ }
+
+ public Component getTableCellEditorComponent(final JTable _table, final Object _value, final boolean _isSelected,
+ final int _row, final int _column) {
+ final GISAttributeInterface[] attributes = (GISAttributeInterface[]) srcClassDestValid_.get(src_[_row]
+ .getDataClass());
+ cbModel_.removeAllElements();
+ if (_value != null && !_value.equals(ignoreObject_)) {
+ cbModel_.addElement(_value);
+ }
+ cbModel_.addElement(ignoreObject_);
+ if (attributes != null) {
+ for (int i = 0; i < attributes.length; i++) {
+ if (CtuluLibArray.findObjectEgalEgal(FSigExportImportAttributesMapper.this.model_.selectedAttributes_,
+ attributes[i]) < 0) {
+ cbModel_.addElement(attributes[i]);
+ }
+ }
+ }
+ return super.getTableCellEditorComponent(_table, _value == null ? ignoreObject_ : _value, _isSelected, _row,
+ _column);
+ }
+
+ public Object getCellEditorValue() {
+ // on renvoie null si c'est l'objet a ignorer
+ if (cbModel_.getSelectedItem() == ignoreObject_) {
+ return null;
+ }
+ return super.getCellEditorValue();
+ }
+ }
+
+ /**
+ * @param _src les attributs a filtrer
+ * @param _c les classes demandees
+ * @param _isAtomic si non null, un filtre est fait sur le caractere atomique
+ * @return les attributs du style demande. Renvoie null si aucun.
+ */
+ public static GISAttributeInterface[] filtreAttributes(final GISAttributeInterface[] _src, final Class[] _c,
+ final Boolean _isAtomic) {
+ if (_src == null || _src.length == 0 || _c == null || _c.length == 0) {
+ return null;
+ }
+ final List resList = new ArrayList();
+
+ for (int i = 0; i < _src.length; i++) {
+ if ((_isAtomic == null || _src[i].isAtomicValue() == _isAtomic.booleanValue())
+ && CtuluLibArray.findObject(_c, _src[i].getDataClass()) >= 0) {
+ resList.add(_src[i]);
+ }
+ }
+
+ final GISAttributeInterface[] res = new GISAttributeInterface[resList.size()];
+ resList.toArray(res);
+ return res;
+ }
+
+ /**
+ * @param _src les attributs a filtrer
+ * @param _c les classes demandees
+ * @param _isAtomic si non null, un filtre est fait sur le caractere atomique
+ * @return les attributs du style demande. Renvoie null si aucun.
+ */
+ public static GISAttributeInterface[] filtreAttributes(final GISDataModel _src, final Class[] _c,
+ final Boolean _isAtomic) {
+ if (_src == null || _src.getNbAttributes() == 0 || _c == null || _c.length == 0) {
+ return null;
+ }
+ final List resList = new ArrayList();
+
+ for (int i = 0; i < _src.getNbAttributes(); i++) {
+ if ((_isAtomic == null || _src.getAttribute(i).isAtomicValue() == _isAtomic.booleanValue())
+ && CtuluLibArray.findObject(_c, _src.getAttribute(i).getDataClass()) >= 0) {
+ resList.add(_src.getAttribute(i));
+ }
+ }
+
+ final GISAttributeInterface[] res = new GISAttributeInterface[resList.size()];
+ resList.toArray(res);
+ return res;
+ }
+
+ /**
+ * @param _src la source des attribut
+ * @param _c les classes demandees
+ * @param _isAtomic si non null, un filtre est fait sur le caractere atomique
+ * @return les attributs du style demande. Renvoie null si aucun.
+ */
+ public static GISAttributeInterface[] filtreAttributes(final GISDataModel _src, final Class _c,
+ final Boolean _isAtomic) {
+ if (_src == null || _src.getNbAttributes() == 0) {
+ return null;
+ }
+ final List resList = new ArrayList();
+
+ for (int i = 0; i < _src.getNbAttributes(); i++) {
+ if ((_isAtomic == null || _src.getAttribute(i).isAtomicValue() == _isAtomic.booleanValue())
+ && _src.getAttribute(i).getDataClass().equals(_c)) {
+ resList.add(_src.getAttribute(i));
+ }
+ }
+ if (resList.size() == 0) {
+ return null;
+ }
+ final GISAttributeInterface[] res = new GISAttributeInterface[resList.size()];
+ resList.toArray(res);
+ return res;
+ }
+
+ /**
+ * @param _src la source des attribut
+ * @param _c les classes demandees
+ * @param _isAtomic si non null, un filtre est fait sur le caractere atomique
+ * @return les attributs du style demande. Renvoie null si aucun.
+ */
+ public static GISAttributeInterface[] filtreAttributes(final GISAttributeInterface[] _src, final Class _c,
+ final Boolean _isAtomic) {
+ if (_src == null || _src.length == 0) {
+ return null;
+ }
+ final List resList = new ArrayList();
+ for (int i = 0; i < _src.length; i++) {
+ if ((_isAtomic == null || _src[i].isAtomicValue() == _isAtomic.booleanValue())
+ && _src[i].getDataClass().equals(_c)) {
+ resList.add(_src[i]);
+ }
+ }
+ if (resList.size() == 0) {
+ return null;
+ }
+ final GISAttributeInterface[] res = new GISAttributeInterface[resList.size()];
+ resList.toArray(res);
+ return res;
+ }
+}
Added: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigFilterZone.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigFilterZone.java (rev 0)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigFilterZone.java 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,68 @@
+/*
+ * @creation 25 mai 2005
+ * @modification $Date: 2006-09-19 15:10:20 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.sig;
+
+import org.fudaa.dodico.ef.EfElement;
+import org.fudaa.dodico.ef.EfFilter;
+import org.fudaa.dodico.ef.EfGridInterface;
+
+import com.vividsolutions.jts.algorithm.SIRtreePointInRing;
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.LinearRing;
+
+/**
+ * @author Fred Deniger
+ * @version $Id: FSigFilterZone.java,v 1.3 2006-09-19 15:10:20 deniger Exp $
+ */
+public class FSigFilterZone implements EfFilter {
+
+ final EfGridInterface grid_;
+ final LinearRing poly_;
+
+ final Envelope envelop_;
+ SIRtreePointInRing tester_;
+ private final Coordinate c_ = new Coordinate();
+
+ /**
+ * @param _grid
+ * @param _poly
+ */
+ public FSigFilterZone(final EfGridInterface _grid, final LinearRing _poly) {
+ super();
+ grid_ = _grid;
+ envelop_ = _poly.getEnvelopeInternal();
+ poly_ = _poly;
+ }
+
+ public boolean isActivated(final int _idxPt) {
+ c_.x = grid_.getPtX(_idxPt);
+ c_.y = grid_.getPtY(_idxPt);
+ if (envelop_.contains(c_.x, c_.y)) {
+ if (tester_ == null) {
+ tester_ = new SIRtreePointInRing(poly_);
+ }
+ return tester_.isInside(c_);
+ }
+ return false;
+ }
+
+ public boolean isActivatedElt(final int _idxElt, final EfGridInterface _grid, final boolean _strict) {
+ final EfElement el = grid_.getElement(_idxElt);
+ for (int i = el.getPtNb() - 1; i >= 0; i--) {
+ final boolean isContained = isActivated(el.getPtIndex(i));
+ if (isContained && !_strict) {
+ return true;
+ }
+ if (!isContained && _strict) {
+ return false;
+ }
+ }
+ return _strict;
+ }
+}
Added: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigFilterZoneActivity.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigFilterZoneActivity.java (rev 0)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigFilterZoneActivity.java 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,110 @@
+/*
+ * @creation 25 mai 2005
+ * @modification $Date: 2007-05-04 14:00:26 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.sig;
+
+import gnu.trove.TIntIntHashMap;
+
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.List;
+
+import org.fudaa.ctulu.CtuluActivity;
+import org.fudaa.ctulu.ProgressionInterface;
+import org.fudaa.ctulu.ProgressionUpdater;
+import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
+import org.fudaa.dodico.ef.EfFilter;
+import org.fudaa.dodico.ef.EfGridInterface;
+
+import com.vividsolutions.jts.geom.LinearRing;
+
+/**
+ * @author Fred Deniger
+ * @version $Id: FSigFilterZoneActivity.java,v 1.5 2007-05-04 14:00:26 deniger Exp $
+ */
+public class FSigFilterZoneActivity implements CtuluActivity {
+
+ boolean stop_;
+ EfGridInterface grid_;
+ GISZoneCollectionLigneBrisee lines_;
+
+ public final GISZoneCollectionLigneBrisee getLines() {
+ return lines_;
+ }
+
+ public void stop() {}
+
+ /**
+ * @param _src le maillage a parcourir
+ * @param _lignes les listes utilisees pour la selection
+ */
+ public FSigFilterZoneActivity(final EfGridInterface _src, final GISZoneCollectionLigneBrisee _lignes) {
+ super();
+ grid_ = _src;
+ lines_ = _lignes;
+ }
+
+ EfFilter[] filters_;
+
+ /**
+ * @param _progression la barre de progression
+ * @param _busyPts les indices des points deja pris
+ * @return la table indice du polygone -> liste (TintArraylist) dans l'ordre des indices des points contenus par le
+ * polygone
+ */
+ public TIntIntHashMap findPoint(final ProgressionInterface _progression, final BitSet _busyPts,
+ final boolean _onElement, final boolean _strict) {
+ stop_ = false;
+ final int nbGeomInit = lines_.getNumGeometries();
+ final TIntIntHashMap idxList = new TIntIntHashMap(nbGeomInit);
+ // construction des filtres
+ if (filters_ == null) {
+ final List listFiltre = new ArrayList(nbGeomInit);
+ for (int i = 0; i < nbGeomInit; i++) {
+ if (lines_.getGeometry(i) instanceof LinearRing) {
+ listFiltre.add(new FSigFilterZone(grid_, (LinearRing) lines_.getGeometry(i)));
+ }
+ }
+ filters_ = new EfFilter[listFiltre.size()];
+ listFiltre.toArray(filters_);
+ }
+ if (stop_) {
+ return null;
+ }
+ // fin construction des filtres
+ final ProgressionUpdater updater = new ProgressionUpdater(_progression);
+ final int nbObject = _onElement ? grid_.getEltNb() : grid_.getPtsNb();
+ updater.setValue(9, nbObject);
+ final int nbFiltre = filters_.length;
+ if (nbFiltre == 0) {
+ return null;
+ }
+ updater.majProgessionStateOnly(FSigLib.getS("s\xE9lection des points"));
+
+ for (int i = 0; i < nbObject; i++) {
+ if (stop_) {
+ return null;
+ }
+ if (_busyPts == null || !_busyPts.get(i)) {
+ boolean set = false;
+ for (int k = nbFiltre - 1; k >= 0 && !set; k--) {
+ if ((_onElement && filters_[k].isActivatedElt(i, grid_, _strict))
+ || (!_onElement && filters_[k].isActivated(i))) {
+ set = true;
+ idxList.put(i, k);
+ if (set && _busyPts != null) {
+ _busyPts.set(i);
+ }
+ }
+ }
+
+ }
+ updater.majAvancement();
+ }
+ return idxList;
+ }
+}
Added: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigGeomDataClosedLayerFilter.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigGeomDataClosedLayerFilter.java (rev 0)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigGeomDataClosedLayerFilter.java 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,141 @@
+/*
+ * @creation 26 mai 2005
+ * @modification $Date: 2007-05-04 14:00:26 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.sig;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.fudaa.ctulu.gis.GISDataModel;
+import org.fudaa.ctulu.gis.GISDataModelZoneAdapter;
+import org.fudaa.ctulu.gis.GISVisitorDefault;
+import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
+import org.fudaa.ebli.calque.BCalque;
+import org.fudaa.ebli.calque.BCalqueVisitor;
+import org.fudaa.ebli.calque.ZCalqueLigneBrisee;
+import org.fudaa.ebli.calque.ZModeleGeom;
+
+import com.vividsolutions.jts.geom.LineString;
+import com.vividsolutions.jts.geom.LinearRing;
+import com.vividsolutions.jts.geom.Point;
+import com.vividsolutions.jts.geom.Polygon;
+
+/**
+ * @author Fred Deniger
+ * @version $Id: FSigGeomDataClosedLayerFilter.java,v 1.8 2007-05-04 14:00:26 deniger Exp $
+ */
+public class FSigGeomDataClosedLayerFilter implements BCalqueVisitor {
+
+ final List r_ = new ArrayList();
+ final List polyligne_ = new ArrayList();
+ final PolyCounter counter_ = new PolyCounter();
+
+ final static class PolyCounter extends GISVisitorDefault {
+
+ int nbPolyligne_;
+ int nbPolygones_;
+ int nbPoint_;
+
+ void init() {
+ nbPolygones_ = 0;
+ nbPolyligne_ = 0;
+ }
+
+ public boolean visitPoint(final Point _p) {
+ return true;
+ }
+
+ public boolean visitPolygone(final LinearRing _p) {
+ nbPolygones_++;
+ nbPoint_ += _p.getNumPoints();
+ return true;
+ }
+
+ public boolean visitPolygoneWithHole(final Polygon _p) {
+ return true;
+ }
+
+ public boolean visitPolyligne(final LineString _p) {
+ nbPolyligne_++;
+ nbPoint_ += _p.getNumPoints();
+ return true;
+ }
+ }
+
+ public final int getNbPointTotal() {
+ return nbPointTotal_;
+ }
+
+ public GISZoneCollectionLigneBrisee[] getGeomClosedData() {
+ final GISZoneCollectionLigneBrisee[] res = new GISZoneCollectionLigneBrisee[r_.size()];
+ for (int i = res.length - 1; i >= 0; i--) {
+ res[i] = (GISZoneCollectionLigneBrisee) ((ZCalqueLigneBrisee) r_.get(i)).getModele().getGeomData();
+ }
+ return res;
+ }
+
+ public GISDataModel[] getGeomClosedDataModel() {
+ final GISDataModel[] res = new GISDataModel[r_.size()];
+ for (int i = res.length - 1; i >= 0; i--) {
+ res[i] = new GISDataModelZoneAdapter(((ZCalqueLigneBrisee) r_.get(i)).getModele().getGeomData(), null);
+ }
+ return res;
+ }
+
+ public GISZoneCollectionLigneBrisee[] getGeomData() {
+ final GISZoneCollectionLigneBrisee[] res = new GISZoneCollectionLigneBrisee[polyligne_.size()];
+ for (int i = res.length - 1; i >= 0; i--) {
+ res[i] = (GISZoneCollectionLigneBrisee) ((ZCalqueLigneBrisee) polyligne_.get(i)).getModele().getGeomData();
+ }
+ return res;
+ }
+
+ public GISDataModel[] getGeomDataModel() {
+ final GISDataModel[] res = new GISDataModel[polyligne_.size()];
+ for (int i = res.length - 1; i >= 0; i--) {
+ res[i] = new GISDataModelZoneAdapter(((ZCalqueLigneBrisee) polyligne_.get(i)).getModele().getGeomData(), null);
+ }
+ return res;
+ }
+
+ public final int getNbPolylignes() {
+ return nbPolylignesTotal_;
+ }
+
+ public final int getNbPolygones() {
+ return nbPolygonesTotal_;
+ }
+
+ int nbPolygonesTotal_;
+ int nbPolylignesTotal_;
+ int nbPointTotal_;
+
+ Set visited_ = new HashSet();
+
+ public boolean visit(final BCalque _cq) {
+ if (visited_.contains(_cq)) {
+ return true;
+ }
+ if (_cq instanceof ZCalqueLigneBrisee) {
+ counter_.init();
+ final ZModeleGeom geom = ((ZCalqueLigneBrisee) _cq).getModele();
+ geom.getGeomData().accept(counter_);
+ nbPointTotal_ += counter_.nbPoint_;
+ if (counter_.nbPolygones_ > 0) {
+ r_.add(_cq);
+ nbPolygonesTotal_ += counter_.nbPolygones_;
+ }
+ if (counter_.nbPolyligne_ > 0) {
+ polyligne_.add(_cq);
+ nbPolylignesTotal_ += counter_.nbPolyligne_;
+ }
+ }
+ return true;
+ }
+}
Added: trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigGeomSrcData.java
===================================================================
--- trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigGeomSrcData.java (rev 0)
+++ trunk/business/fudaa-sig/src/main/java/org/fudaa/fudaa/sig/FSigGeomSrcData.java 2009-10-15 18:22:55 UTC (rev 5280)
@@ -0,0 +1,279 @@
+/*
+ * @creation 31 mai 2005
+ * @modification $Date: 2007-05-04 14:00:26 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.sig;
+
+import java.awt.Color;
+import java.awt.Dialog;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.swing.SwingUtilities;
+
+import org.fudaa.ctulu.CtuluLibString;
+import org.fudaa.ctulu.CtuluUI;
+import org.fudaa.ctulu.ProgressionInterface;
+import org.fudaa.ctulu.gis.GISAttributeInterface;
+import org.fudaa.ctulu.gis.GISDataModel;
+import org.fudaa.ctulu.gis.GISGeometry;
+import org.fudaa.ctulu.gis.GISLib;
+import org.fudaa.ctulu.gis.GISPolygone;
+import org.fudaa.ctulu.gis.GISVisitorChooser;
+import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
+import org.fudaa.ctulu.gis.GISZoneCollectionPoint;
+import org.fudaa.ctulu.gis.GISZoneCollectionPolygone;
+import org.fudaa.ctulu.gui.CtuluDialogPanel;
+import org.fudaa.ebli.calque.BCalque;
+import org.fudaa.ebli.calque.BGroupeCalque;
+import org.fudaa.ebli.calque.ZCalqueLigneBrisee;
+import org.fudaa.ebli.calque.edition.ZModelClassLayerFilter;
+import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeDefault;
+import org.fudaa.ebli.commun.EbliLib;
+import org.fudaa.ebli.trace.TraceLigne;
+import org.fudaa.fudaa.commun.FudaaLib;
+import org.fudaa.fudaa.sig.wizard.FSigWizardImportHelper;
+
+import com.memoire.bu.BuBorderLayout;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.LineString;
+import com.vividsolutions.jts.geom.Polygon;
+
+/**
+ * @author Fred Deniger
+ * @version $Id: FSigGeomSrcData.java,v 1.14 2007-05-04 14:00:26 deniger Exp $
+ */
+public class FSigGeomSrcData {
+
+ int nbPoints_;
+
+ int nbPointsTotal_;
+
+ int nbPolygones_;
+
+ int nbPolylignes_;
+
+ GISDataModel[] points_;
+
+ GISDataModel[] polygones_;
+
+ GISDataModel[] polylignes_;
+
+ private void preload(final GISAttributeInterface[] _att, final GISDataModel[] _models,
+ final ProgressionInterface _prog) {
+
+ if (_models != null) {
+ for (int i = _models.length - 1; i >= 0; i--) {
+ _models[i].preload(_att, _prog);
+ }
+ }
+
+ }
+
+ public void preload(final GISAttributeInterface[] _att, final ProgressionInterface _prog) {
+ preload(_att, points_, _prog);
+ preload(_att, polygones_, _prog);
+ preload(_att, polylignes_, _prog);
+ }
+
+ private void previsu(final Dialog _d, final CtuluUI _parent, final CtuluDialogPanel _dest,
+ final GISPolygone[] _zoneCible) {
+ final BGroupeCalque gc = new BGroupeCalque();
+ final Set doneLigneBrisee = new HashSet();
+ final GISZoneCollectionPolygone polygone = new GISZoneCollectionPolygone(null);
+ final int nb = _zoneCible.length;
+
+ for (int i = 0; i < nb; i++) {
+ polygone.addPolygone(_zoneCible[i], null);
+ }
+
+ final ZModeleLigneBriseeDefault model = new ZModeleLigneBriseeDefault(polygone);
+ final ZCalqueLigneBrisee lay = new ZCalqueLigneBrisee(model);
+ lay.setIconModel(0, null);
+ final GISZoneCollectionLigneBrisee dest = new GISZoneCollectionLigneBrisee(null);
+ final GISVisitorChooser chooser = new GISVisitorChooser();
+ if (polygones_ != null) {
+ previsuForPolygones(doneLigneBrisee, dest, chooser);
+ }
+ if (polylignes_ != null) {
+
+ previsuForPolylignes(doneLigneBrisee, dest, chooser);
+ }
+ final Envelope envConvex = new Envelope();
+ // List convex = new ArrayList();
+ if (dest.getNumGeometries() > 0) {
+ final ZCalqueLigneBrisee cq = FSigGeomSrcDataUtils.buildPrevisuCq(dest);
+ gc.add(cq);
+ envConvex.expandToInclude(dest.getEnvelopeInternal());
+ // convex.add(dest);
+ }
+// final Envelope ptRing = new Envelope();
+// if (points_ != null) {
+// // List geoms = new ArrayList();
+// for (int i = points_.length - 1; i >= 0; i--) {
+// for (int k = points_[i].getNumGeometries() - 1; k >= 0; k--) {
+// ptRing.expandToInclude(points_[i].getGeometry(k).getEnvelopeInternal());
+// }
+// }
+// if (!ptRing.isNull()) {
+// envConvex.expandToInclude(ptRing);
+// final ZCalqueLigneBrisee cq = FSigGeomSrcDataUtils.buildPrevisuDomaines(ptRing);
+// gc.add(cq);
+// }
+// }
+ if (!envConvex.isNull()) {
+ final ZCalqueLigneBrisee cq = FSigGeomSrcDataUtils.buildPrevisuDomaineTotal(envConvex);
+ gc.add(cq);
+ }
+ lay.setForeground(Color.BLUE.darker());
+ lay.getLineModel(0).setTypeTrait(TraceLigne.LISSE);
+ lay.setTitle(FudaaLib.getS("Projet"));
+ gc.add(lay);
+ SwingUtilities.invokeLater(FSigGeomSrcDataUtils.buildRunnableForPrevisu(_d, _parent, _dest, gc));
+ }
+
+ protected void previsuForPolylignes(final Set _doneLigneBrisee, final GISZoneCollectionLigneBrisee _dest,
+ final GISVisitorChooser _chooser) {
+ for (int i = 0; i < polylignes_.length; i++) {
+ if (!_doneLigneBrisee.contains(polylignes_[i])) {
+ _doneLigneBrisee.add(polylignes_[i]);
+ final int nbPol = polylignes_[i].getNumGeometries();
+ for (int j = 0; j < nbPol; j++) {
+ final Geometry geom = polylignes_[i].getGeometry(j);
+ ((GISGeometry) geom).accept(_chooser);
+ if (_chooser.isPolyligne()) {
+ _dest.addCoordinateSequence(((LineString) (geom)).getCoordinateSequence(), null, null);
+ }
+ }
+ }
+ }
+ }
+
+ protected void previsuForPolygones(final Set _doneLigneBrisee, final GISZoneCollectionLigneBrisee _dest,
+ final GISVisitorChooser _chooser) {
+ for (int i = 0; i < polygones_.length; i++) {
+ if (!_doneLigneBrisee.contains(polygones_[i])) {
+ _doneLigneBrisee.add(polygones_[i]);
+ final int nbPol = polygones_[i].getNumGeometries();
+ for (int j = 0; j < nbPol; j++) {
+ final Geometry geom = polygones_[i].getGeometry(j);
+ ((GISGeometry) geom).accept(_chooser);
+ if (_chooser.isPolygoneWithHole()) {
+ _dest.addCoordinateSequence((((Polygon) (geom))).getExteriorRing().getCoordinateSequence(), null, null)...
[truncated message content] |