Revision 47557

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/csv/CSVSetProvider.java
180 180
    }
181 181

  
182 182
    public CSVSetProvider(CSVStoreProvider store, FeatureQuery query,
183
            FeatureType featureType)
183
            FeatureType providerFeatureType, FeatureType featureType)
184 184
            throws DataException {
185
        super(store, query, featureType);
185
        super(store, query, providerFeatureType, featureType);
186 186
    }
187 187

  
188 188
    @Override
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/csv/CSVStoreProvider.java
857 857
    }
858 858

  
859 859
    @Override
860
    public FeatureSetProvider createSet(FeatureQuery query, FeatureType providerFeatureType, FeatureType featureType)
861
            throws DataException {
862
        this.open();
863
        if (this.virtualrows == null) {
864
            return super.createSet(query, providerFeatureType, featureType);
865
        }
866
        return new CSVSetProvider(this, query, providerFeatureType, featureType);
867
    }
868

  
869
    @Override
860 870
    public FeatureSetProvider createSet(FeatureQuery query, FeatureType featureType)
861 871
            throws DataException {
862 872
        this.open();
863 873
        if (this.virtualrows == null) {
864 874
            return super.createSet(query, featureType);
865 875
        }
866
        return new CSVSetProvider(this, query, featureType);
876
        return new CSVSetProvider(this, query, featureType, featureType);
867 877
    }
868 878

  
869 879
    public List<String> getRowByIndex(long index) {
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/ShowTable.java
22 22
 */
23 23
package org.gvsig.app.extension;
24 24

  
25
import javax.swing.JComponent;
26 25
import javax.swing.JOptionPane;
27 26
import org.gvsig.andami.IconThemeHelper;
28 27
import org.gvsig.andami.plugins.Extension;
......
38 37
import org.gvsig.fmap.dal.feature.FeatureStore;
39 38
import org.gvsig.fmap.dal.feature.FeatureType;
40 39
import org.gvsig.fmap.mapcontext.MapContext;
41
import org.gvsig.fmap.mapcontext.layers.CancelationException;
42 40
import org.gvsig.fmap.mapcontext.layers.FLayer;
43 41
import org.gvsig.fmap.mapcontext.layers.FLayers;
42
import org.gvsig.fmap.mapcontext.layers.LayerCollectionAdapter;
44 43
import org.gvsig.fmap.mapcontext.layers.LayerCollectionEvent;
45
import org.gvsig.fmap.mapcontext.layers.LayerCollectionListener;
46
import org.gvsig.fmap.mapcontext.layers.LayerPositionEvent;
47 44
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
48 45
import org.gvsig.tools.ToolsLocator;
49 46
import org.gvsig.tools.i18n.I18nManager;
......
57 54
 * Extensi?n que abre las tablas asociadas a las vistas.
58 55
 *
59 56
 */
60
public class ShowTable extends Extension implements LayerCollectionListener {
57
public class ShowTable extends Extension {
61 58

  
62 59
    @Override
63 60
    public boolean isEnabled() {
......
107 104
                    FLyrVect layerVect = (FLyrVect) layer;                    
108 105
                    TableDocument tableDoc = tableManager.getTableDocument(layerVect);
109 106
                    if (tableDoc == null) {
110
                        tableDoc = (TableDocument) tableManager.createDocument();
111
                        tableDoc.setName(layerVect.getName());
112
                        tableDoc.setStore(layerVect.getFeatureStore());
107
                        tableDoc = tableManager.getTableDocument(layerVect.getFeatureStore());
108
                        if (tableDoc == null) {
109
                            tableDoc = (TableDocument) tableManager.createDocument();
110
                            tableDoc.setName(layerVect.getName());
111
                            tableDoc.setStore(layerVect.getFeatureStore());
112
                            layerVect.getParentLayer().addLayerCollectionListener(new LayerCollectionAdapter() {
113
                                @Override
114
                                public void layerRemoved(LayerCollectionEvent e) {
115
                                    FLayer layer = e.getAffectedLayer();
116
                                    // Remove the related table document, if any
117
                                    if (layer == layerVect) {
118
                                        getTableManager().removeTableDocument((FLyrVect) layer);
119
                                        // If the parent layers has not other child layers, for sure there
120
                                        // are not related tables opened, don't need to listen
121
                                        // LayerCollectionEvents anymore.
122
                                        // TODO: remove us also when there are not any child layers with
123
                                        // related table documents
124
                                        FLayers layers = layer.getParentLayer();
125
                                        if (layers != null && layers.getLayersCount() == 0) {
126
                                            layers.removeLayerCollectionListener(this);
127
                                        }
128
                                    }
129
                                }
130
                            });
131
                            project.addDocument(tableDoc);
132
                        }
113 133
                        tableDoc.setAssociatedLayer(layerVect);
114
                        layerVect.getParentLayer().addLayerCollectionListener(this);
115
                        project.addDocument(tableDoc);
116 134
                    }
117 135
                    try {
118 136
                        FeatureStore store = tableDoc.getDataStore();
......
159 177
    public void initialize() {
160 178
        IconThemeHelper.registerIcon("action", "layer-show-attributes-table", this);
161 179
    }
162

  
163
    @Override
164
    public void layerAdded(LayerCollectionEvent e) {
165
        // Nothing to do
166
    }
167

  
168
    @Override
169
    public void layerMoved(LayerPositionEvent e) {
170
        // Nothing to do
171
    }
172

  
173
    @Override
174
    public void layerRemoved(LayerCollectionEvent e) {
175
        FLayer layer = e.getAffectedLayer();
176
        // Just in case we where listening to a group of layers being removed
177
        // remove us from there
178
        if (layer instanceof FLayers) {
179
            ((FLayers) layer).removeLayerCollectionListener(this);
180
        }
181
        // Remove the related table document, if any
182
        if (layer instanceof FLyrVect) {
183
            getTableManager().removeTableDocument((FLyrVect) layer);
184
            // If the parent layers has not other child layers, for sure there
185
            // are not related tables opened, don't need to listen
186
            // LayerCollectionEvents anymore.
187
            // TODO: remove us also when there are not any child layers with
188
            // related table documents
189
            FLayers layers = layer.getParentLayer();
190
            if (layers != null && layers.getLayersCount() == 0) {
191
                layers.removeLayerCollectionListener(this);
192
            }
193
        }
194
    }
195

  
196
    @Override
197
    public void layerAdding(LayerCollectionEvent e) throws CancelationException {
198
        // Nothing to do
199
    }
200

  
201
    @Override
202
    public void layerMoving(LayerPositionEvent e) throws CancelationException {
203
        // Nothing to do
204
    }
205

  
206
    @Override
207
    public void layerRemoving(LayerCollectionEvent e)
208
            throws CancelationException {
209
        // Nothing to do
210
    }
211

  
212
    @Override
213
    public void visibilityChanged(LayerCollectionEvent e)
214
            throws CancelationException {
215
        // Nothing to do
216
    }
217 180
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/project/documents/table/TableManager.java
531 531
        return null;
532 532
    }
533 533

  
534
    public TableDocument getTableDocument(FeatureStore store) {
535
        if (store == null) {
536
            return null;
537
        }
538
        List<Document> tableDocs =
539
            getProject().getDocuments(TableManager.TYPENAME);
540
        for (Document document : tableDocs) {
541
            if (store == ((TableDocument) document).getFeatureStore()) {
542
                return (TableDocument) document;
543
            }
544
        }
545
        return null;
546
    }
547

  
534 548
    public void removeTableDocument(VectorLayer layer) {
535 549
        TableDocument doc = getTableDocument(layer);
536 550
        // Only remove it if it exists
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.daltransform.app/org.gvsig.daltransform.app.join/src/main/java/org/gvsig/app/join/RemoveTableUnion.java
30 30
import org.gvsig.app.join.dal.feature.JoinTransform;
31 31
import org.gvsig.app.project.documents.table.TableDocument;
32 32
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
33
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
33 34
import org.gvsig.fmap.dal.feature.FeatureStore;
34 35
import org.gvsig.fmap.dal.feature.FeatureStoreTransform;
35 36
import org.gvsig.fmap.dal.feature.FeatureStoreTransforms;
37
import org.gvsig.fmap.mapcontext.layers.vectorial.VectorLayer;
36 38

  
37 39

  
38 40
/**
......
56 58
			TableDocument pt = t.getModel();
57 59
			FeatureStore fs = pt.getStore();
58 60
			this.removeJoinTransfor(fs);
61
                        VectorLayer layer = pt.getAssociatedLayer();
62
                        if(layer != null){
63
                            FeatureAttributeDescriptor geomAttr = fs.getDefaultFeatureTypeQuietly().getDefaultGeometryAttribute();
64
                            if(geomAttr == null){
65
                                layer.getParentLayer().remove(layer);
66
                            }
67
                        }
68
                        
59 69
	
60 70
			//		TODO
61 71
			//		if (fs instanceof JoinFeatureStore) {
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.daltransform.app/org.gvsig.daltransform.app.join/src/main/java/org/gvsig/app/join/dal/feature/JoinTransform.java
282 282

  
283 283
        String attName = featureAttributeDescriptor.getName();
284 284
        if( (prefix != null) && (!prefix.equals("")) ) {
285
            attName = prefix + "_" + attName;
285
            attName = prefix + attName;
286 286
        }
287 287
        
288 288
        FeatureAttributeDescriptor geomAttr = targetFeatureType.getDefaultGeometryAttribute();
......
290 290
        // If an attribute already exists, calculate an alternate name and add it to our type
291 291
        int j = 0;
292 292
        while( targetFeatureType.getIndex(attName) >= 0 ) {
293
            attName = targetFeatureType.getAttributeDescriptor(attName).getName() + "_" + ++j;
293
            attName = targetFeatureType.getAttributeDescriptor(attName).getName() + (++j);
294 294
        }
295 295

  
296 296
        EditableFeatureAttributeDescriptor editableFeatureAttributeDescriptor
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.daltransform.app/org.gvsig.daltransform.app.mainplugin/src/main/java/org/gvsig/daltransform/swing/impl/DataTransformSelectionAction.java
51 51
package org.gvsig.daltransform.swing.impl;
52 52

  
53 53
import javax.swing.JOptionPane;
54

  
55 54
import jwizardcomponent.FinishAction;
56

  
57
import org.slf4j.Logger;
58
import org.slf4j.LoggerFactory;
59

  
60 55
import org.gvsig.andami.PluginServices;
61 56
import org.gvsig.app.ApplicationLocator;
57
import org.gvsig.app.project.ProjectManager;
58
import org.gvsig.app.project.documents.table.TableDocument;
59
import org.gvsig.app.project.documents.table.TableManager;
62 60
import org.gvsig.daltransform.swing.DataTransformGui;
63
import org.gvsig.fmap.dal.exception.DataException;
64 61
import org.gvsig.fmap.dal.feature.FeatureStore;
65 62
import org.gvsig.fmap.dal.feature.FeatureStoreTransform;
66 63
import org.gvsig.fmap.mapcontext.MapContext;
67 64
import org.gvsig.fmap.mapcontext.MapContextLocator;
68 65
import org.gvsig.fmap.mapcontext.MapContextManager;
69
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
66
import org.gvsig.fmap.mapcontext.layers.CancelationException;
70 67
import org.gvsig.fmap.mapcontext.layers.FLayer;
68
import org.gvsig.fmap.mapcontext.layers.FLayers;
69
import org.gvsig.fmap.mapcontext.layers.LayerCollectionAdapter;
70
import org.gvsig.fmap.mapcontext.layers.LayerCollectionEvent;
71
import org.gvsig.fmap.mapcontext.layers.LayerCollectionListener;
72
import org.gvsig.fmap.mapcontext.layers.LayerPositionEvent;
73
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
74
import org.gvsig.fmap.mapcontext.layers.vectorial.VectorLayer;
71 75
import org.gvsig.i18n.Messages;
76
import org.slf4j.Logger;
77
import org.slf4j.LoggerFactory;
72 78

  
73 79

  
74 80
/**
......
83 89
		this.dataTransformWizard = dataTransformWizard;
84 90
	}
85 91

  
86
	/* (non-Javadoc)
92
    /* (non-Javadoc)
87 93
	 * @see jwizardcomponent.Action#performAction()
88
	 */
89
	public void performAction() {	
90
	    
91
	    /*
94
     */
95
        @Override
96
    public void performAction() {
97

  
98
        /*
92 99
	     * For layer attributes table, this depends on the user
93 100
	     * decision. For tables without layer, for example, this is
94 101
	     * always false
95
	     */
96
	    boolean result_added_separately = dataTransformWizard.isLayerLoaded();
97
		//Gets the selected transformation
98
		DataTransformGui featureTransformGui = dataTransformWizard.getDataTransformGui();
99
			
100
		//Gets the selected FeatureStore
101
		FeatureStore fsto = dataTransformWizard.getFeatureStore();
102
		// FeatureStore cloned_store = null;
103
		
104
		if (result_added_separately) {
105
	        try {
106
	            /*
107
	             * Clone if added separately
108
	             */
109
	            fsto = (FeatureStore) fsto.clone();
110
	        } catch (CloneNotSupportedException e1) {
111
	            // FeatureStore always implements the clone method
112
	        }
113
		}
102
         */
103
        boolean result_added_separately = dataTransformWizard.isLayerLoaded();
104
        //Gets the selected transformation
105
        DataTransformGui featureTransformGui = dataTransformWizard.getDataTransformGui();
114 106

  
115
		try {			
116
			//Gets the transform
117
			FeatureStoreTransform fst = null;
118
			
119
			// Apply the transformation
120
			fst = featureTransformGui.createFeatureStoreTransform(fsto);
121
			fsto.getTransforms().add(fst);
107
        //Gets the selected FeatureStore
108
        FeatureStore fsto = dataTransformWizard.getFeatureStore();
109
        // FeatureStore cloned_store = null;
122 110

  
123
			//Create and load a new layer...
124
			if (result_added_separately){
125
			    MapContextManager manager = MapContextLocator.getMapContextManager();
126
			    FLayer layer = manager.createLayer(
127
			        featureTransformGui.toString(),
128
			        fsto);
129
			    
130
			    MapContext mco = dataTransformWizard.getMapContext();
131
			    if (mco != null) {
132
			        mco.getLayers().addLayer(layer);
133
			    } else {
134
			        ApplicationLocator.getManager().messageDialog(
135
                        Messages.getText("_Layer_was_not_added_to_any_view"),
136
                        Messages.getText("transform_apply"),
137
			            JOptionPane.ERROR_MESSAGE);
138
			    }
139
				
140
				layer.dispose();
141
			}
142
		} catch (DataException e) {
143
			logger.error("Error creating the transformation", e);
144
		} catch (LoadLayerException e) {
145
			logger.error("Error loading the layer", e);
146
		}
147
		//Closing the window
148
		PluginServices.getMDIManager().closeWindow(dataTransformWizard);
149
	}
111
//		if (result_added_separately) {
112
//	        try {
113
//	            /*
114
//	             * Clone if added separately
115
//	             */
116
//	            fsto = (FeatureStore) fsto.clone();
117
//	        } catch (CloneNotSupportedException e1) {
118
//	            // FeatureStore always implements the clone method
119
//	        }
120
//		}
121
        try {
122
            //Gets the transform
123
            FeatureStoreTransform fst = null;
150 124

  
125
            // Apply the transformation
126
            fst = featureTransformGui.createFeatureStoreTransform(fsto);
127
            fsto.getTransforms().add(fst);
128

  
129
            //Create and load a new layer...
130
            if (result_added_separately) {
131
                MapContextManager manager = MapContextLocator.getMapContextManager();
132
                VectorLayer layer = (VectorLayer) manager.createLayer(
133
                        featureTransformGui.toString(),
134
                        fsto);
135

  
136
                MapContext mco = dataTransformWizard.getMapContext();
137
                if (mco != null) {
138
                    mco.getLayers().addLayer(layer);
139
                } else {
140
                    ApplicationLocator.getManager().messageDialog(
141
                            Messages.getText("_Layer_was_not_added_to_any_view"),
142
                            Messages.getText("transform_apply"),
143
                            JOptionPane.ERROR_MESSAGE);
144
                }
145
                ProjectManager projectManager = ApplicationLocator.getProjectManager();
146
                final TableManager tableManager = (TableManager) projectManager.getDocumentManager(TableManager.TYPENAME);
147
                TableDocument tableDoc = tableManager.getTableDocument(layer);
148
                if (tableDoc == null) {
149
                    tableDoc = tableManager.getTableDocument(layer.getFeatureStore());
150
                    if (tableDoc == null) {
151
                        tableDoc = (TableDocument) tableManager.createDocument();
152
                        tableDoc.setName(layer.getName());
153
                        tableDoc.setStore(layer.getFeatureStore());
154
                        layer.getParentLayer().addLayerCollectionListener(new LayerCollectionAdapter() {
155
                            @Override
156
                            public void layerRemoved(LayerCollectionEvent e) {
157
                                FLayer affectedLayer = e.getAffectedLayer();
158
                                if (layer == affectedLayer) {
159
                                    // Just in case we where listening to a group of layers being removed
160
                                    // remove us from there
161
                                    // if (layer instanceof FLayers) {
162
                                    //      ((FLayers) layer).removeLayerCollectionListener(this);
163
                                    // }
164
                                    // Remove the related table document, if any
165
                                    if (layer instanceof FLyrVect) {
166
                                        TableDocument tableDoc = tableManager.getTableDocument(layer);
167
                                        tableDoc.setAssociatedLayer(null);
168
                                        // If the parent layers has not other child layers, for sure there
169
                                        // are not related tables opened, don't need to listen
170
                                        // LayerCollectionEvents anymore.
171
                                        // TODO: remove us also when there are not any child layers with
172
                                        // related table documents
173
                                        FLayers layers = layer.getParentLayer();
174
                                        if (layers != null && layers.getLayersCount() == 0) {
175
                                            layers.removeLayerCollectionListener(this);
176
                                        }
177
                                    }
178
                                }
179
                            }
180
                        });
181
                        projectManager.getCurrentProject().addDocument(tableDoc);
182
                    }
183
                }
184
                tableDoc.setAssociatedLayer(layer);
185

  
186
                layer.dispose();
187
            }
188
        } catch (Exception e) {
189
            logger.error("Error loading the layer", e);
190
        }
191
        //Closing the window
192
        PluginServices.getMDIManager().closeWindow(dataTransformWizard);
193
    }
194

  
151 195
}
152 196

  

Also available in: Unified diff