Revision 5919

View differences:

trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/ClipCmd.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:08:45  azabala
48
* Revision 1.2  2006-06-20 18:21:48  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:08:45  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.2  2006/04/11 18:00:06  azabala
......
63 66
import com.iver.andami.PluginServices;
64 67
import com.iver.cit.gvsig.fmap.FMap;
65 68
import com.iver.cit.gvsig.fmap.layers.FLayers;
66
import com.iver.cit.gvsig.geoprocess.clip.ClipGeoprocessController;
67 69
import com.iver.cit.gvsig.geoprocess.core.gui.GeoProcessingOverlayPanel;
68 70
import com.iver.cit.gvsig.geoprocess.core.gui.GeoprocessPaneContainer;
71
import com.iver.cit.gvsig.geoprocess.impl.clip.ClipGeoprocessController;
69 72
import com.iver.cit.gvsig.gui.View;
70 73

  
71 74
public class ClipCmd implements AndamiCmd {
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/ConvexHullCmd.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:08:45  azabala
48
* Revision 1.2  2006-06-20 18:21:48  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:08:45  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.2  2006/04/11 18:00:06  azabala
......
63 66
import com.iver.andami.PluginServices;
64 67
import com.iver.cit.gvsig.fmap.FMap;
65 68
import com.iver.cit.gvsig.fmap.layers.FLayers;
66
import com.iver.cit.gvsig.geoprocess.convexhull.ConvexHullGeoprocessController;
67
import com.iver.cit.gvsig.geoprocess.convexhull.gui.GeoProcessingConvexHullPanel;
68 69
import com.iver.cit.gvsig.geoprocess.core.gui.GeoprocessPaneContainer;
70
import com.iver.cit.gvsig.geoprocess.impl.convexhull.ConvexHullGeoprocessController;
71
import com.iver.cit.gvsig.geoprocess.impl.convexhull.gui.GeoProcessingConvexHullPanel;
69 72
import com.iver.cit.gvsig.gui.View;
70 73

  
71 74
public class ConvexHullCmd implements AndamiCmd {
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/DissolveCmd.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:08:45  azabala
48
* Revision 1.2  2006-06-20 18:21:48  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:08:45  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.2  2006/04/11 18:00:06  azabala
......
64 67
import com.iver.cit.gvsig.fmap.FMap;
65 68
import com.iver.cit.gvsig.fmap.layers.FLayers;
66 69
import com.iver.cit.gvsig.geoprocess.core.gui.GeoprocessPaneContainer;
67
import com.iver.cit.gvsig.geoprocess.dissolve.DissolveGeoprocessController;
68
import com.iver.cit.gvsig.geoprocess.dissolve.gui.GeoProcessingDissolvePanel;
70
import com.iver.cit.gvsig.geoprocess.impl.dissolve.DissolveGeoprocessController;
71
import com.iver.cit.gvsig.geoprocess.impl.dissolve.gui.GeoProcessingDissolvePanel;
69 72
import com.iver.cit.gvsig.gui.View;
70 73

  
71 74
public class DissolveCmd implements AndamiCmd {
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/UnionCmd.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:08:45  azabala
48
* Revision 1.2  2006-06-20 18:21:48  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:08:45  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.2  2006/04/11 18:00:06  azabala
......
65 68
import com.iver.cit.gvsig.fmap.layers.FLayers;
66 69
import com.iver.cit.gvsig.geoprocess.core.gui.GeoProcessingOverlayPanel;
67 70
import com.iver.cit.gvsig.geoprocess.core.gui.GeoprocessPaneContainer;
68
import com.iver.cit.gvsig.geoprocess.union.UnionGeoprocessController;
71
import com.iver.cit.gvsig.geoprocess.impl.union.UnionGeoprocessController;
69 72
import com.iver.cit.gvsig.gui.View;
70 73

  
71 74
public class UnionCmd implements AndamiCmd {
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/DifferenceCmd.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:08:45  azabala
48
* Revision 1.2  2006-06-20 18:21:48  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:08:45  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.2  2006/04/11 18:00:06  azabala
......
65 68
import com.iver.cit.gvsig.fmap.layers.FLayers;
66 69
import com.iver.cit.gvsig.geoprocess.core.gui.GeoProcessingOverlayPanel;
67 70
import com.iver.cit.gvsig.geoprocess.core.gui.GeoprocessPaneContainer;
68
import com.iver.cit.gvsig.geoprocess.difference.DifferenceGeoprocessController;
71
import com.iver.cit.gvsig.geoprocess.impl.difference.DifferenceGeoprocessController;
69 72
import com.iver.cit.gvsig.gui.View;
70 73

  
71 74
public class DifferenceCmd implements AndamiCmd {
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/MergeCmd.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:08:45  azabala
48
* Revision 1.2  2006-06-20 18:21:48  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:08:45  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.2  2006/04/11 18:00:06  azabala
......
64 67
import com.iver.cit.gvsig.fmap.FMap;
65 68
import com.iver.cit.gvsig.fmap.layers.FLayers;
66 69
import com.iver.cit.gvsig.geoprocess.core.gui.GeoprocessPaneContainer;
67
import com.iver.cit.gvsig.geoprocess.merge.MergeGeoprocessController;
68
import com.iver.cit.gvsig.geoprocess.merge.gui.GeoProcessingMergePanel;
70
import com.iver.cit.gvsig.geoprocess.impl.merge.MergeGeoprocessController;
71
import com.iver.cit.gvsig.geoprocess.impl.merge.gui.GeoProcessingMergePanel;
69 72
import com.iver.cit.gvsig.gui.View;
70 73

  
71 74
public class MergeCmd implements AndamiCmd {
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/GeoProcessingPanel.java
64 64
import com.iver.cit.gvsig.fmap.edition.writers.shp.ShpWriter;
65 65
import com.iver.cit.gvsig.fmap.layers.FLayers;
66 66
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
67
import com.iver.cit.gvsig.geoprocess.buffer.BufferGeoprocessController;
68
import com.iver.cit.gvsig.geoprocess.buffer.fmap.BufferGeoprocess;
69
import com.iver.cit.gvsig.geoprocess.buffer.gui.GeoProcessingBufferPanel;
70
import com.iver.cit.gvsig.geoprocess.clip.ClipGeoprocessController;
71
import com.iver.cit.gvsig.geoprocess.clip.fmap.ClipGeoprocess;
72
import com.iver.cit.gvsig.geoprocess.convexhull.ConvexHullGeoprocessController;
73
import com.iver.cit.gvsig.geoprocess.convexhull.fmap.ConvexHullGeoprocess;
74
import com.iver.cit.gvsig.geoprocess.convexhull.gui.GeoProcessingConvexHullPanel;
75 67
import com.iver.cit.gvsig.geoprocess.core.fmap.GeoprocessException;
76 68
import com.iver.cit.gvsig.geoprocess.core.gui.AddResultLayerTask;
77 69
import com.iver.cit.gvsig.geoprocess.core.gui.GeoProcessingOverlayPanel;
78
import com.iver.cit.gvsig.geoprocess.difference.DifferenceGeoprocessController;
79
import com.iver.cit.gvsig.geoprocess.difference.fmap.DifferenceGeoprocess;
80
import com.iver.cit.gvsig.geoprocess.dissolve.DissolveGeoprocessController;
81
import com.iver.cit.gvsig.geoprocess.dissolve.fmap.DissolveGeoprocess;
82
import com.iver.cit.gvsig.geoprocess.dissolve.gui.GeoProcessingDissolvePanel;
83
import com.iver.cit.gvsig.geoprocess.intersection.IntersectionGeoprocessController;
84
import com.iver.cit.gvsig.geoprocess.intersection.fmap.IntersectionGeoprocess;
85
import com.iver.cit.gvsig.geoprocess.merge.MergeGeoprocessController;
86
import com.iver.cit.gvsig.geoprocess.merge.fmap.MergeGeoprocess;
87
import com.iver.cit.gvsig.geoprocess.merge.gui.GeoProcessingMergePanel;
88
import com.iver.cit.gvsig.geoprocess.spatialjoin.SpatialJoinGeoprocessController;
89
import com.iver.cit.gvsig.geoprocess.spatialjoin.fmap.SpatialJoinGeoprocess;
90
import com.iver.cit.gvsig.geoprocess.spatialjoin.gui.GeoProcessingSpatialjoinPanel;
91
import com.iver.cit.gvsig.geoprocess.union.UnionGeoprocessController;
92
import com.iver.cit.gvsig.geoprocess.union.fmap.UnionGeoprocess;
70
import com.iver.cit.gvsig.geoprocess.impl.buffer.BufferGeoprocessController;
71
import com.iver.cit.gvsig.geoprocess.impl.buffer.fmap.BufferGeoprocess;
72
import com.iver.cit.gvsig.geoprocess.impl.buffer.gui.GeoProcessingBufferPanel;
73
import com.iver.cit.gvsig.geoprocess.impl.clip.ClipGeoprocessController;
74
import com.iver.cit.gvsig.geoprocess.impl.clip.fmap.ClipGeoprocess;
75
import com.iver.cit.gvsig.geoprocess.impl.convexhull.ConvexHullGeoprocessController;
76
import com.iver.cit.gvsig.geoprocess.impl.convexhull.fmap.ConvexHullGeoprocess;
77
import com.iver.cit.gvsig.geoprocess.impl.convexhull.gui.GeoProcessingConvexHullPanel;
78
import com.iver.cit.gvsig.geoprocess.impl.difference.DifferenceGeoprocessController;
79
import com.iver.cit.gvsig.geoprocess.impl.difference.fmap.DifferenceGeoprocess;
80
import com.iver.cit.gvsig.geoprocess.impl.dissolve.DissolveGeoprocessController;
81
import com.iver.cit.gvsig.geoprocess.impl.dissolve.fmap.DissolveGeoprocess;
82
import com.iver.cit.gvsig.geoprocess.impl.dissolve.gui.GeoProcessingDissolvePanel;
83
import com.iver.cit.gvsig.geoprocess.impl.intersection.IntersectionGeoprocessController;
84
import com.iver.cit.gvsig.geoprocess.impl.intersection.fmap.IntersectionGeoprocess;
85
import com.iver.cit.gvsig.geoprocess.impl.merge.MergeGeoprocessController;
86
import com.iver.cit.gvsig.geoprocess.impl.merge.fmap.MergeGeoprocess;
87
import com.iver.cit.gvsig.geoprocess.impl.merge.gui.GeoProcessingMergePanel;
88
import com.iver.cit.gvsig.geoprocess.impl.spatialjoin.SpatialJoinGeoprocessController;
89
import com.iver.cit.gvsig.geoprocess.impl.spatialjoin.fmap.SpatialJoinGeoprocess;
90
import com.iver.cit.gvsig.geoprocess.impl.spatialjoin.gui.GeoProcessingSpatialjoinPanel;
91
import com.iver.cit.gvsig.geoprocess.impl.union.UnionGeoprocessController;
92
import com.iver.cit.gvsig.geoprocess.impl.union.fmap.UnionGeoprocess;
93 93
import com.iver.utiles.swing.threads.IMonitorableTask;
94 94
import com.iver.utiles.swing.threads.MonitorableDecoratorMainFirst;
95 95

  
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/IntersectionCmd.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:08:45  azabala
48
* Revision 1.2  2006-06-20 18:21:48  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:08:45  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.2  2006/04/11 18:00:06  azabala
......
65 68
import com.iver.cit.gvsig.fmap.layers.FLayers;
66 69
import com.iver.cit.gvsig.geoprocess.core.gui.GeoProcessingOverlayPanel;
67 70
import com.iver.cit.gvsig.geoprocess.core.gui.GeoprocessPaneContainer;
68
import com.iver.cit.gvsig.geoprocess.intersection.IntersectionGeoprocessController;
71
import com.iver.cit.gvsig.geoprocess.impl.intersection.IntersectionGeoprocessController;
69 72
import com.iver.cit.gvsig.gui.View;
70 73

  
71 74
public class IntersectionCmd implements AndamiCmd {
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/BufferCmd.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:08:45  azabala
48
* Revision 1.2  2006-06-20 18:21:48  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:08:45  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.3  2006/04/11 18:00:06  azabala
......
66 69

  
67 70
import com.iver.andami.PluginServices;
68 71
import com.iver.cit.gvsig.fmap.layers.FLayers;
69
import com.iver.cit.gvsig.geoprocess.buffer.BufferGeoprocessController;
70
import com.iver.cit.gvsig.geoprocess.buffer.gui.GeoProcessingBufferPanel;
71 72
import com.iver.cit.gvsig.geoprocess.core.gui.GeoprocessPaneContainer;
73
import com.iver.cit.gvsig.geoprocess.impl.buffer.BufferGeoprocessController;
74
import com.iver.cit.gvsig.geoprocess.impl.buffer.gui.GeoProcessingBufferPanel;
72 75
import com.iver.cit.gvsig.gui.View;
73 76
/**
74 77
 * It processes user button push on BufferGeoprocessToolbar
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/SpatialJoinCmd.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:08:45  azabala
48
* Revision 1.2  2006-06-20 18:21:48  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:08:45  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.2  2006/04/11 18:00:06  azabala
......
64 67
import com.iver.cit.gvsig.fmap.FMap;
65 68
import com.iver.cit.gvsig.fmap.layers.FLayers;
66 69
import com.iver.cit.gvsig.geoprocess.core.gui.GeoprocessPaneContainer;
67
import com.iver.cit.gvsig.geoprocess.spatialjoin.SpatialJoinGeoprocessController;
68
import com.iver.cit.gvsig.geoprocess.spatialjoin.gui.GeoProcessingSpatialjoinPanel;
70
import com.iver.cit.gvsig.geoprocess.impl.spatialjoin.SpatialJoinGeoprocessController;
71
import com.iver.cit.gvsig.geoprocess.impl.spatialjoin.gui.GeoProcessingSpatialjoinPanel;
69 72
import com.iver.cit.gvsig.gui.View;
70 73

  
71 74
public class SpatialJoinCmd implements AndamiCmd {
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/wizard/GeoProcessingExtension.java
46 46
import com.iver.andami.PluginServices;
47 47
import com.iver.andami.plugins.Extension;
48 48
import com.iver.cit.gvsig.fmap.FMap;
49
import com.iver.cit.gvsig.fmap.layers.FLayer;
50
import com.iver.cit.gvsig.fmap.layers.FLayers;
51
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
49 52
import com.iver.cit.gvsig.gui.View;
50 53
import com.iver.cit.gvsig.project.ProjectView;
51 54

  
......
103 106
		if (f == null) {
104 107
		    return false;
105 108
		}
106
		if (f.getClass() == View.class) {
109
		if (f instanceof View) {
107 110
		    View vista = (View) f;
108 111
		    ProjectView model = vista.getModel();
109
		    FMap mapa = model.getMapContext();
110
		    return mapa.getLayers().getLayersCount() > 0;
112
		    FLayers layers =  model.getMapContext().getLayers();
113
		    int numLayers = layers.getLayersCount();
114
		    for(int i = 0; i < numLayers; i++){
115
		    	FLayer layer = layers.getLayer(i);
116
		    	if(layer instanceof FLyrVect)
117
		    		return true;
118
		    }
119
		    return false;
111 120
		} else {
112 121
		    return false;
113 122
		}
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/core/MultiShpWriter.java
1
package com.iver.cit.gvsig.geoprocess.core;
2

  
3
import java.io.File;
4
import java.util.ArrayList;
5
import java.util.Properties;
6

  
7
import com.iver.cit.gvsig.fmap.core.IFeature;
8
import com.iver.cit.gvsig.fmap.drivers.FieldDescription;
9
import com.iver.cit.gvsig.fmap.drivers.ILayerDefinition;
10
import com.iver.cit.gvsig.fmap.drivers.ITableDefinition;
11
import com.iver.cit.gvsig.fmap.drivers.SHPLayerDefinition;
12
import com.iver.cit.gvsig.fmap.edition.EditionException;
13
import com.iver.cit.gvsig.fmap.edition.IRowEdited;
14
import com.iver.cit.gvsig.fmap.edition.ISchemaManager;
15
import com.iver.cit.gvsig.fmap.edition.IWriter;
16
import com.iver.cit.gvsig.fmap.edition.writers.shp.ShpWriter;
17
import com.iver.cit.gvsig.geoprocess.core.fmap.XTypes;
18
import com.iver.utiles.FileUtils;
19

  
20
/**
21
 * This writer wraps three ShpWriters, one for points, one for lines
22
 * and one for polygons geometry types.
23
 * <br>
24
 * 
25
 * It allows you to save a FLyrVect with MULTI shape type in SHP file
26
 * format (that doesnt allow to mix different geometry types).
27
 * To do that, this IWriter creates a different SHP file for any geometry
28
 * type, in a transparent manner for the programmer. <br>
29
 * If your geometries doesnt hava a given geometry type, the Writer wont
30
 * create a file for this geometry type.
31
 *<br>
32
 * <code>
33
 * MultiShpWriter writer = new MultiShpWriter();
34
 * writer.setFile(dxfFile);
35
 * writer.initialize(layerDefinition);
36
 * writer.preProcess();
37
 * # obtain features from an iterator
38
 * writer.process(feature);
39
 * writer.postProcess();
40
 * </code>
41
 * 
42
 */
43
public class MultiShpWriter implements IWriter{
44
	/**
45
	 * original file name selected by user
46
	 */
47
	String file = null;
48
	/**
49
	 * original layer definition
50
	 */
51
	ILayerDefinition layerDefinition;//only works with layers (no only tables)
52
	IWriter polygons;
53
	File polygonsFile;
54
	IWriter lines;
55
	File linesFile;
56
	IWriter points;
57
	File pointsFile;
58
	
59
	public void preProcess() throws EditionException {
60
	}
61
	/**
62
	 * Returns all ShpWriter's created by this wrapper
63
	 * (only those wich writes a type of the processed geometries)
64
	 * @return
65
	 */
66
	public IWriter[] getWriters(){
67
		IWriter[] solution;
68
		ArrayList list = new ArrayList();
69
		if(polygons != null)
70
			list.add(polygons);
71
		if(lines != null)
72
			list.add(lines);
73
		if(points != null)
74
			list.add(points);
75
		solution = new IWriter[list.size()];
76
		list.toArray(solution);
77
		return solution;
78
	}
79
	
80
	
81
	public void postProcess() throws EditionException {
82
		if(polygons != null)
83
			polygons.postProcess();
84
		if(lines != null)
85
			lines.postProcess();
86
		if(points != null)
87
			points.postProcess();
88
	}
89
	
90
	/**
91
	 * Give access to the Writer that processes polygon geometries
92
	 * (and creates it if it hasnt yet)
93
	 * @return
94
	 * @throws EditionException
95
	 */
96
	private IWriter getPolygonsWriter() throws EditionException{
97
		if(polygons == null){
98
			polygons = new ShpWriter();
99
			//TODO Hacer que LayerDefinition sea cloneable
100
			SHPLayerDefinition newDefinition = 
101
				(SHPLayerDefinition) cloneDef(layerDefinition);
102
			//we clone layerdefinition to change
103
			//shape type
104
			newDefinition.setShapeType(XTypes.POLYGON);
105
			polygonsFile = new File(file+"_POL.shp");
106
			newDefinition.setFile(polygonsFile);
107
			((ShpWriter)polygons).setFile(polygonsFile);
108
			polygons.initialize(newDefinition);
109
			
110
			getSchemaManager(polygons, polygonsFile).
111
				createOrAlterSchema(newDefinition);
112
		}
113
		return polygons;
114
	}
115
	
116
	/**
117
	 * Given a Writer, and the file where we want to save persistent features,
118
	 * it returns an associated ISchemaManager (whose responsability is 
119
	 * to create the new schema-for files create the new files)
120
	 * @param writer
121
	 * @param file
122
	 * @return
123
	 */
124
	
125
	private ISchemaManager getSchemaManager(final IWriter writer, 
126
												final File file){
127
		return new ISchemaManager(){
128
			public void createOrAlterSchema(ITableDefinition layerDefinition) throws EditionException {
129
				writer.preProcess();
130
			}
131

  
132
			public void drop() throws EditionException {
133
				if(!file.delete())
134
					throw new EditionException("No se pudo borrar el fichero shp");
135
				
136
				String strFichshx = file.
137
								getAbsolutePath().
138
								replaceAll("\\.shp", ".shx");
139
				String shxPath = strFichshx.replaceAll("\\.SHP", ".SHX");
140
				if(! new File(shxPath).delete())
141
					throw new EditionException("No se puede borrar el fichero shx");
142

  
143
				String strFichDbf = file.
144
								getAbsolutePath().
145
								replaceAll("\\.shp", ".dbf");
146
				String dbfPath = strFichDbf.replaceAll("\\.SHP", ".DBF");
147
				if(! new File(dbfPath).delete())
148
					throw new EditionException("No se puede borrar el fichero dbf");	
149
			}
150
		};
151
	}
152
		
153
	/**
154
	 * From a given layer definition, it creates a new layer definition
155
	 * 'clon' of the initial. 
156
	 * It is useful to avoid local changes made by individual Writers to the
157
	 * definition affects the others writers (for example, change the shape type
158
	 * of the writer)
159
	 * @param definition
160
	 * @return
161
	 */
162
	private ILayerDefinition cloneDef(ILayerDefinition definition){
163
		ILayerDefinition solution = null;
164
		if(definition instanceof SHPLayerDefinition){
165
			SHPLayerDefinition def = (SHPLayerDefinition)definition;
166
			solution = new SHPLayerDefinition();
167
			solution.setName(def.getName());
168
			FieldDescription[] fields = 
169
				def.getFieldsDesc();
170
			solution.setFieldsDesc(fields);
171
		}
172
		return solution;
173
	}
174
	
175
	/**
176
	 * Give access to the Writer that processes line geometries
177
	 * (and creates it if it hasnt yet)
178
	 * @return
179
	 * @throws EditionException
180
	 */
181
	private IWriter getLinesWriter() throws EditionException{
182
		if(lines == null){
183
			lines = new ShpWriter();
184
			SHPLayerDefinition newDefinition = 
185
				(SHPLayerDefinition) cloneDef(layerDefinition);
186
			//we clone layerdefinition to change
187
			//shape type
188
			newDefinition.setShapeType(XTypes.LINE);
189
			linesFile = new File(file+"_LIN.shp");
190
			newDefinition.setFile(linesFile);
191
			((ShpWriter)lines).setFile(linesFile);
192
			lines.initialize(newDefinition);
193
			getSchemaManager(lines, linesFile).
194
				createOrAlterSchema(newDefinition);
195
		}
196
		return lines;
197
	}
198
	
199
	/**
200
	 * Give access to the Writer that processes point geometries
201
	 * (and creates it if it hasnt yet)
202
	 * @return
203
	 * @throws EditionException
204
	 */
205
	
206
	private IWriter getPointsWriter() throws EditionException{
207
		if(points == null){
208
			points = new ShpWriter();
209
			//TODO Hacer que LayerDefinition sea cloneable
210
			SHPLayerDefinition newDefinition = 
211
				(SHPLayerDefinition) cloneDef(layerDefinition);
212
			//we clone layerdefinition to change
213
			//shape type
214
			newDefinition.setShapeType(XTypes.POINT);
215
			pointsFile = new File(file+"_PT.shp");
216
			newDefinition.setFile(pointsFile);
217
			((ShpWriter)points).setFile(pointsFile);
218
			points.initialize(newDefinition);
219
			
220
			getSchemaManager(points, pointsFile).
221
				createOrAlterSchema(newDefinition);
222
		}
223
		return points;
224
	}
225
	
226
	/**
227
	 * Giving an edited row, writes it with the Writer associated to
228
	 * its geometry type
229
	 */
230
	public void process(IRowEdited row) throws EditionException {
231
		IFeature feature = (IFeature) row.getLinkedRow();
232
		int geometryType = feature.getGeometry().getGeometryType();
233
		switch(geometryType){
234
		case XTypes.POINT:
235
			getPointsWriter().process(row);
236
		break;
237
		case XTypes.LINE:
238
		case XTypes.ELLIPSE:
239
		case XTypes.ARC:
240
		case XTypes.CIRCLE:
241
			getLinesWriter().process(row);
242
		break;
243
		
244
		case XTypes.POLYGON:
245
			getPolygonsWriter().process(row);
246
		break;
247
		}
248
	}
249
	
250
	/**
251
	 * Sets the file where save the results
252
	 * @param f
253
	 */
254
	public void setFile(File f)
255
	{
256
		file = FileUtils.
257
				getFileWithoutExtension(f);
258
	}
259
	
260
	public String getFileName(){
261
		return file;
262
	}
263

  
264
	public String getCapability(String capability) {
265
		return "";
266
	}
267

  
268
	public void setCapabilities(Properties capabilities) {
269
	}
270

  
271
	public boolean canWriteAttribute(int sqlType) {
272
		return true;
273
	}
274

  
275
	public void initialize(ITableDefinition layerDefinition) throws EditionException {
276
		this.layerDefinition = (ILayerDefinition) layerDefinition;
277
	}
278

  
279
	public String getName() {
280
		return "MULTI File Writer";
281
	}
282
}
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/core/fmap/AbstractGeoprocess.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.3  2006-06-12 19:15:38  azabala
48
* Revision 1.4  2006-06-20 18:19:43  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.3  2006/06/12 19:15:38  azabala
49 52
* cambios para poder trabajar en geoprocessing con capas MULTI (dxf, jdbc, etc)
50 53
*
51 54
* Revision 1.2  2006/05/31 09:10:12  fjp
......
91 94
import com.iver.cit.gvsig.fmap.edition.EditionException;
92 95
import com.iver.cit.gvsig.fmap.edition.ISchemaManager;
93 96
import com.iver.cit.gvsig.fmap.edition.IWriter;
97
import com.iver.cit.gvsig.fmap.edition.writers.shp.MultiShpWriter;
94 98
import com.iver.cit.gvsig.fmap.edition.writers.shp.ShpWriter;
95 99
import com.iver.cit.gvsig.fmap.layers.FLayer;
96 100
import com.iver.cit.gvsig.fmap.layers.FLayers;
97 101
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
98 102
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
99
import com.iver.cit.gvsig.geoprocess.core.MultiShpWriter;
100 103
import com.iver.cit.gvsig.gui.View;
101 104
/**
102 105
 * Base class with all commong logic to geoprocesses
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/core/fmap/AbstractGeoprocessController.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.4  2006-06-12 19:15:38  azabala
48
* Revision 1.5  2006-06-20 18:19:43  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.4  2006/06/12 19:15:38  azabala
49 52
* cambios para poder trabajar en geoprocessing con capas MULTI (dxf, jdbc, etc)
50 53
*
51 54
* Revision 1.3  2006/06/08 18:21:24  azabala
......
67 70

  
68 71
import com.iver.cit.gvsig.fmap.drivers.SHPLayerDefinition;
69 72
import com.iver.cit.gvsig.fmap.edition.IWriter;
73
import com.iver.cit.gvsig.fmap.edition.writers.shp.MultiShpWriter;
70 74
import com.iver.cit.gvsig.fmap.edition.writers.shp.ShpWriter;
71 75
import com.iver.cit.gvsig.geoprocess.core.IGeoprocessController;
72
import com.iver.cit.gvsig.geoprocess.core.MultiShpWriter;
73 76
import com.iver.cit.gvsig.geoprocess.core.gui.IGeoprocessPanel;
74 77

  
75 78
/**
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/core/fmap/DefinitionUtils.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:12:16  azabala
48
* Revision 1.2  2006-06-20 18:19:43  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:12:16  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.6  2006/05/08 15:38:31  azabala
......
70 73
*/
71 74
package com.iver.cit.gvsig.geoprocess.core.fmap;
72 75

  
73
import java.sql.Types;
74 76
import java.util.ArrayList;
75 77
import java.util.List;
76 78

  
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/core/fmap/AverageFunction.java
45 45
 *
46 46
 * $Id$
47 47
 * $Log$
48
 * Revision 1.1  2006-05-24 21:12:16  azabala
48
 * Revision 1.2  2006-06-20 18:19:43  azabala
49
 * refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
 *
51
 * Revision 1.1  2006/05/24 21:12:16  azabala
49 52
 * primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
 *
51 54
 * Revision 1.1  2006/02/26 20:55:28  azabala
......
68 71
	}
69 72

  
70 73
	public NumericValue getSumarizeValue() {
74
		if(numElements == 0)
75
			return ValueFactory.createValue(0d);
71 76
		double res = sum / (double)numElements;
72 77
		return ValueFactory.createValue(res);
73 78
	}
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/core/fmap/MinFunction.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:12:16  azabala
48
* Revision 1.2  2006-06-20 18:19:43  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:12:16  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.1  2006/02/26 20:55:28  azabala
......
74 77
	}
75 78

  
76 79
	public NumericValue getSumarizeValue() {
80
		if(minValue == Double.MAX_VALUE)
81
			return ValueFactory.createValue(0d);
77 82
		return ValueFactory.createValue(minValue);
78 83
	}
79 84
	
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/core/fmap/MaxFunction.java
45 45
 *
46 46
 * $Id$
47 47
 * $Log$
48
 * Revision 1.1  2006-05-24 21:12:16  azabala
48
 * Revision 1.2  2006-06-20 18:19:43  azabala
49
 * refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
 *
51
 * Revision 1.1  2006/05/24 21:12:16  azabala
49 52
 * primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
 *
51 54
 * Revision 1.1  2006/02/26 20:55:28  azabala
......
75 78
	}
76 79

  
77 80
	public NumericValue getSumarizeValue() {
81
		if(maxValue == Double.MIN_VALUE){
82
			//process method wasnt be called
83
			return ValueFactory.createValue(0d);
84
		}
78 85
		return ValueFactory.createValue(maxValue);
79 86
	}
80 87
	
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/core/gui/SpatialJoinNumericFieldSelection.java
45 45
 *
46 46
 * $Id$
47 47
 * $Log$
48
 * Revision 1.1  2006-05-24 21:13:09  azabala
48
 * Revision 1.2  2006-06-20 18:19:43  azabala
49
 * refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
 *
51
 * Revision 1.1  2006/05/24 21:13:09  azabala
49 52
 * primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
 *
51 54
 * Revision 1.4  2006/04/07 19:00:58  azabala
......
296 299
		sumarizeFuncDialog.resetCheckbox();
297 300
		sumarizeFuncDialog.setVisible(true);
298 301
		SummarizationFunction[] functions = sumarizeFuncDialog.getFunctions();
302
		if(functions.length == 0)
303
			return;
299 304
		String fieldName = (String) this.numericFieldJList.getSelectedValue();
300 305
		this.nField_sumFuntionList.put(fieldName, functions);
301 306
		SumFuncListModel functionListModel = new SumFuncListModel(
trunk/extensions/extGeoProcessing/src/com/iver/cit/gvsig/geoprocess/core/gui/SumFuncListModel.java
45 45
*
46 46
* $Id$
47 47
* $Log$
48
* Revision 1.1  2006-05-24 21:13:09  azabala
48
* Revision 1.2  2006-06-20 18:19:43  azabala
49
* refactorizaci?n para que todos los nuevos geoprocesos cuelguen del paquete impl
50
*
51
* Revision 1.1  2006/05/24 21:13:09  azabala
49 52
* primera version en cvs despues de refactoring orientado a crear un framework extensible de geoprocessing
50 53
*
51 54
* Revision 1.3  2006/05/08 15:37:08  azabala
......
95 98
		if (functions == null)
96 99
			return " ";//We use a blank space for an error of
97 100
		//abstractlistmodel
101
		if(functions.length == 0)
102
			return " ";
98 103
		for (int i = 0; i < functions.length - 1; i++) {
99 104
			solution += functions[i].toString();
100 105
			solution += ",";

Also available in: Unified diff