Statistics
| Revision:

gvsig-geoprocess / org.gvsig.geoprocess / trunk / org.gvsig.geoprocess / org.gvsig.geoprocess.lib / org.gvsig.geoprocess.lib.sextante / src / main / java / org / gvsig / geoprocess / lib / sextante / core / gvInputFactory.java @ 220

History | View | Annotate | Download (6.41 KB)

1
package org.gvsig.geoprocess.lib.sextante.core;
2

    
3
import java.awt.geom.Rectangle2D;
4
import java.util.ArrayList;
5
import java.util.List;
6

    
7
import es.unex.sextante.core.AbstractInputFactory;
8
import es.unex.sextante.core.NamedExtent;
9
import es.unex.sextante.dataObjects.I3DRasterLayer;
10
import es.unex.sextante.dataObjects.IDataObject;
11

    
12
import org.gvsig.andami.PluginServices;
13
import org.gvsig.app.extension.ProjectExtension;
14
import org.gvsig.app.project.Project;
15
import org.gvsig.app.project.documents.Document;
16
import org.gvsig.app.project.documents.table.TableDocument;
17
import org.gvsig.app.project.documents.table.TableManager;
18
import org.gvsig.app.project.documents.view.DefaultViewDocument;
19
import org.gvsig.app.project.documents.view.ViewManager;
20
import org.gvsig.fmap.mapcontext.layers.FLayer;
21
import org.gvsig.fmap.mapcontext.layers.FLayers;
22
import org.gvsig.fmap.mapcontext.layers.LayersIterator;
23
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
24
import org.gvsig.geoprocess.lib.sextante.dataObjects.FileTools;
25
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvRasterLayerRead;
26
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvTable;
27
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
28
import org.gvsig.raster.fmap.layers.FLyrRaster;
29

    
30
public class gvInputFactory extends AbstractInputFactory {
31

    
32
    public void createDataObjects() {
33

    
34
        final List<IDataObject> list = new ArrayList<IDataObject>();
35

    
36
        final Project project =
37
            ((ProjectExtension) PluginServices
38
                .getExtension(ProjectExtension.class)).getProject();
39
        final List<Document> views = project.getDocuments(ViewManager.TYPENAME);
40
        for (int i = 0; i < views.size(); i++) {
41
            final DefaultViewDocument view = (DefaultViewDocument) views.get(i);
42
            final FLayers layers = view.getMapContext().getLayers();
43
            final LayersIterator iter = new LayersIterator(layers);
44
            while (iter.hasNext()) {
45
                final FLayer layer = iter.nextLayer();
46
                if (layer instanceof FLyrRaster) {
47
                    final gvRasterLayerRead rasterLayer =
48
                        new gvRasterLayerRead();
49
                    rasterLayer.create((FLyrRaster) layer);
50
                    list.add(rasterLayer);
51
                } else
52
                    if (layer instanceof FLyrVect) {
53
                        final gvVectorLayer vectorLayer = new gvVectorLayer();
54
                        vectorLayer.create((FLyrVect) layer);
55
                        list.add(vectorLayer);
56
                    }
57
            }
58
        }
59

    
60
        final List<Document> tables =
61
            project.getDocuments(TableManager.TYPENAME);
62
        for (int i = 0; i < tables.size(); i++) {
63
            final gvTable table = new gvTable();
64
            table.create((TableDocument) tables.get(i));
65
            list.add(table);
66
        }
67

    
68
        m_Objects = list.toArray(new IDataObject[list.size()]);
69
    }
70

    
71
    public NamedExtent[] getPredefinedExtents() {
72

    
73
        final Project project =
74
            ((ProjectExtension) PluginServices
75
                .getExtension(ProjectExtension.class)).getProject();
76
        final List<Document> views = project.getDocuments(ViewManager.TYPENAME);
77
        final NamedExtent ne[] = new NamedExtent[views.size()];
78
        for (int i = 0; i < views.size(); i++) {
79
            final DefaultViewDocument view = (DefaultViewDocument) views.get(i);
80
            final Rectangle2D extent =
81
                view.getMapContext().getViewPort().getExtent();
82
            final String sName = view.getName();
83
            ne[i] = new NamedExtent(sName, extent);
84
        }
85

    
86
        return ne;
87
    }
88

    
89
    public String[] getRasterLayerInputExtensions() {
90

    
91
        return FileTools.RASTER_EXT_IN;
92

    
93
    }
94

    
95
    public String[] get3DRasterLayerInputExtensions() {
96

    
97
        return FileTools.RASTER3D_EXT_IN;
98

    
99
    }
100

    
101
    public String[] getVectorLayerInputExtensions() {
102

    
103
        return FileTools.VECTOR_EXT_IN;
104

    
105
    }
106

    
107
    public String[] getTableInputExtensions() {
108

    
109
        return FileTools.TABLE_EXT;
110

    
111
    }
112

    
113
    public IDataObject openDataObjectFromFile(final String sFilename) {
114

    
115
        final Object object = FileTools.open(sFilename);
116

    
117
        if (object == null) {
118
            return null;
119
        } else
120
            if (object instanceof FLyrRaster) {
121
                final gvRasterLayerRead layer = new gvRasterLayerRead();
122
                layer.create((FLyrRaster) object);
123
                return layer;
124
            } else
125
                if (object instanceof FLyrVect) {
126
                    final gvVectorLayer layer = new gvVectorLayer();
127
                    layer.create((FLyrVect) object);
128
                    return layer;
129
                } else
130
                    if (object instanceof I3DRasterLayer) {
131
                        return (I3DRasterLayer) object;
132
                    } else {
133
                        return null;
134
                    }
135

    
136
    }
137

    
138
    public void close(final String sName) {
139

    
140
        final IDataObject dataObject = this.getInputFromName(sName);
141

    
142
        final Object obj = dataObject.getBaseDataObject();
143
        if (obj instanceof FLayer) {
144
            removeLayer((FLayer) obj);
145
        } else {
146
            final Project project =
147
                ((ProjectExtension) PluginServices
148
                    .getExtension(ProjectExtension.class)).getProject();
149
            project.remove((Document) obj);
150
        }
151

    
152
    }
153

    
154
    private static void removeLayer(final FLayer baseLayer) {
155

    
156
        final Project project =
157
            ((ProjectExtension) PluginServices
158
                .getExtension(ProjectExtension.class)).getProject();
159
        final List<Document> views = project.getDocuments(ViewManager.TYPENAME);
160
        for (int i = 0; i < views.size(); i++) {
161
            final DefaultViewDocument view = (DefaultViewDocument) views.get(i);
162
            final FLayers layers = view.getMapContext().getLayers();
163
            final LayersIterator iter = new LayersIterator(layers);
164
            while (iter.hasNext()) {
165
                final FLayer layer = iter.nextLayer();
166
                if (layer.equals(baseLayer)) {
167
                    layers.removeLayer(baseLayer);
168
                    return;
169
                }
170
            }
171

    
172
        }
173

    
174
    }
175

    
176
    @Override
177
    public I3DRasterLayer[] get3DRasterLayers() {
178

    
179
        return new I3DRasterLayer[0];
180

    
181
    }
182

    
183
}