Statistics
| Revision:

gvsig-geoprocess / org.gvsig.sextante / trunk / org.gvsig.sextante.app / org.gvsig.sextante.app.extension / src / main / java / org / gvsig / sextante / app / extension / core / FileTools.java @ 31

History | View | Annotate | Download (6.03 KB)

1
package org.gvsig.sextante.app.extension.core;
2

    
3
import java.io.File;
4

    
5
import org.cresques.cts.IProjection;
6
import org.gvsig.andami.messages.NotificationManager;
7
import org.gvsig.app.ApplicationLocator;
8
import org.gvsig.app.project.ProjectManager;
9
import org.gvsig.app.project.ProjectPreferences;
10
import org.gvsig.app.project.documents.table.TableDocument;
11
import org.gvsig.app.project.documents.table.TableManager;
12
import org.gvsig.fmap.dal.DALLocator;
13
import org.gvsig.fmap.dal.DataManager;
14
import org.gvsig.fmap.dal.DataStoreParameters;
15
import org.gvsig.fmap.dal.feature.FeatureStore;
16
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
17
import org.gvsig.fmap.dal.store.dbf.DBFStoreParameters;
18
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
19
import org.gvsig.fmap.mapcontext.layers.FLayer;
20
import org.gvsig.fmap.mapcontext.layers.LayerFactory;
21
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
22
import org.gvsig.raster.dataset.RasterDataset;
23

    
24

    
25

    
26
public class FileTools {
27

    
28
        public final static String [] RASTER_EXT_IN = {"tif","asc", "dat", "tiff", "bmp", "gif", "img", "jpg", "png", "vrt",
29
                                                                                                        "lan", "gis", "pix", "aux", "adf", "mpr", "mpl", "map", "hdr"};
30
        public final static String [] RASTER_DRIVERS_IN = {"gvSIG Image Driver", "gvSIG Image Driver",
31
                                                                                                                "gvSIG Image Driver", "gvSIG Image Driver",
32
                                                                                                                "gvSIG Image Driver", "gvSIG Image Driver",
33
                                                                                                                "gvSIG Image Driver", "gvSIG Image Driver",
34
                                                                                                                "gvSIG Image Driver", "gvSIG Image Driver",
35
                                                                                                                "gvSIG Image Driver", "gvSIG Image Driver",
36
                                                                                                                "gvSIG Image Driver", "gvSIG Image Driver",
37
                                                                                                                "gvSIG Image Driver", "gvSIG Image Driver",
38
                                                                                                                "gvSIG Image Driver", "gvSIG Image Driver",
39
                                                                                                                "gvSIG Image Driver"
40
                                                                                                                };
41

    
42
        public final static String [] VECTOR_EXT_IN = {"shp","gml","dxf","dgn","dwg"};
43
        public final static String [] VECTOR_DRIVERS_IN = {"gvSIG shp driver",
44
                                                                                                        "gvSIG GML Memory Driver", "gvSIG DXF Memory Driver",
45
                                                                                                        "gvSIG DGN Memory Driver", "gvSIG DWG Memory Driver"};
46
        public final static String [] TABLE_EXT = {"dbf"};
47
        public static final String[] LAYERS_EXT_IN = {"tif","asc", "dat", "tiff", "bmp", "gif", "img", "jpg", "png", "vrt",
48
                                                                                                "lan", "gis", "pix", "aux", "adf", "mpr", "mpl", "map", "shp","gml",
49
                                                                                                "dxf","dgn","dwg"};
50
        public static final String[] LAYER_DRIVERS_IN = {"RasterStore", "RasterStore",
51
                                                                                                        "RasterStore", "RasterStore",
52
                                                                                                        "RasterStore", "RasterStore",
53
                                                                                                        "RasterStore", "RasterStore",
54
                                                                                                        "RasterStore", "RasterStore",
55
                                                                                                        "RasterStore", "RasterStore",
56
                                                                                                        "RasterStore", "RasterStore",
57
                                                                                                        "RasterStore", "RasterStore",
58
                                                                                                        "RasterStore", "RasterStore",
59
                                                                                                        "Shape",
60
                                                                                                        "GML", "DXF",
61
                                                                                                        "DGN", "DWG"};
62

    
63
        
64
        /**
65
         * Open a gvSIG layer using a {@link:DataStoreParameters}
66
         * @param inputParams
67
         * @param layerName
68
         * @param projection
69
         * @return FLayer
70
         */
71
        public static FLayer openLayer(Object inputParams, String layerName, IProjection projection) {
72
                LayerFactory layerFactor = LayerFactory.getInstance();
73
                DataStoreParameters params = null;
74

    
75
                if(inputParams instanceof DataStoreParameters)
76
                        params = (DataStoreParameters)inputParams;
77
                else
78
                        if(inputParams instanceof String)
79
                                openLayer((String) inputParams, layerName, projection);
80
                        else 
81
                                return null;
82

    
83
                try {
84
                        return layerFactor.createLayer(layerName, params);
85
                } catch (LoadLayerException e) {
86
                        NotificationManager.addError(e);
87
                        return null;
88
                }
89
        }
90
        
91
        @SuppressWarnings("deprecation")
92
        public static FLayer openLayer(String sFilename, String sName, IProjection projection) {
93

    
94
                String sExtension = sFilename.substring(sFilename.lastIndexOf('.') + 1, sFilename.length());
95

    
96
                String[] extensionSupported = RasterDataset.getExtensionsSupported();
97
                FLyrRasterSE rlayer = null;
98
                for (int i = 0; i < extensionSupported.length; i++) {
99
                        if(sExtension.equals(extensionSupported[i]))
100
                                try {
101
                                        rlayer = FLyrRasterSE.createLayer(sName, new File(sFilename), projection);
102
                                } catch (LoadLayerException e) {
103
                                        e.printStackTrace();
104
                                        return null;
105
                                }
106
                        if (rlayer != null && rlayer.isAvailable()){
107
                                return rlayer;
108
                        }
109
                }
110

    
111
                for (int i = 0; i < LAYERS_EXT_IN.length; i++) {
112
                        if (sExtension.equals(LAYERS_EXT_IN[i])){
113
                                try {
114
                                        FLayer layer;
115
//                                        Driver driver = LayerFactory.getDM().getDriver(FileTools.LAYER_DRIVERS_IN[i]);
116
                                        DataManager dm=DALLocator.getDataManager();
117
                                        DataStoreParameters params=dm.createStoreParameters(FileTools.LAYER_DRIVERS_IN[i]);
118
                                        ((FilesystemStoreParameters)params).setFile(new File(sFilename));
119

    
120
                                        params.setDynValue("srs", projection);
121
                                        layer = LayerFactory.getInstance().createLayer(sName, params);
122

    
123

    
124
                                        if (layer != null && layer.isAvailable()){
125
                                                return layer;
126
                                        }
127
                                        else{
128
                                                return null;
129
                                        }
130
                                } catch (Exception e) {
131
                                        e.printStackTrace();
132
                                        return null;
133
                                }
134
                        }
135
                }
136
                return null;
137
        }
138

    
139
        public static TableDocument openTable(String sFilename, String sName) {
140
                DBFStoreParameters dbfParams=new DBFStoreParameters();
141
                dbfParams.setDBFFileName(sFilename);
142
                DataManager dm=DALLocator.getDataManager();
143
                try {
144
                        FeatureStore store=(FeatureStore)dm.createStore(dbfParams);
145
                        TableDocument pt = (TableDocument) ProjectManager.getInstance().createDocument(TableManager.TYPENAME, sName);
146
                        pt.setStore(store);
147
//                        FeatureTableDocument pt = ProjectFactory.createTable(sName, store);
148
                        return pt;
149

    
150
                } catch (Exception e) {
151
                        return null;
152
                }
153

    
154
        }
155

    
156
        public static Object open(String sFilename){
157

    
158
                IProjection projection =
159
                                ((ProjectPreferences) ApplicationLocator.getManager()
160
                                                .getPreferences("project")).getDefaultProjection();
161
                FLayer layer = openLayer(sFilename, sFilename, projection);
162
                if (layer != null){
163
                        return layer;
164
                }
165

    
166
                TableDocument table = openTable(sFilename, sFilename);
167

    
168
                return table;
169

    
170

    
171
        }
172

    
173
}