Revision 1055

View differences:

org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/SextanteGeoProcessLibrary.java
25 25

  
26 26
import org.gvsig.andami.IconThemeHelper;
27 27
import org.gvsig.fmap.dal.DALLibrary;
28
import org.gvsig.fmap.dal.coverage.RasterLibrary;
28
//import org.gvsig.fmap.dal.coverage.RasterLibrary;
29 29
import org.gvsig.fmap.mapcontext.MapContextLibrary;
30 30
import org.gvsig.fmap.mapcontrol.MapControlLibrary;
31 31
import org.gvsig.geoprocess.lib.api.GeoProcessLibrary;
32 32
import org.gvsig.geoprocess.lib.api.GeoProcessLocator;
33 33
import org.gvsig.i18n.Messages;
34
import org.gvsig.raster.fmap.FmapRasterLibrary;
34
//import org.gvsig.raster.fmap.FmapRasterLibrary;
35 35
import org.gvsig.tools.library.AbstractLibrary;
36 36
import org.gvsig.tools.library.LibraryException;
37 37

  
......
51 51
        require(DALLibrary.class);
52 52
        require(MapContextLibrary.class);
53 53
        require(MapControlLibrary.class);
54
        require(FmapRasterLibrary.class);
55
        require(RasterLibrary.class);
54
        //require(FmapRasterLibrary.class);
55
        //require(RasterLibrary.class);
56 56
    }
57 57

  
58 58
    @Override
org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/SimpleTaskStatusDelegated.java
66 66
        this.status.setAutoremove(true);
67 67
    }
68 68

  
69
    @Override
69 70
    public void addObserver(Observer o) {
70 71
        status.addObserver(o);
71 72
    }
72 73

  
74
    @Override
73 75
    public void deleteObserver(Observer o) {
74 76
        status.deleteObserver(o);
75 77
    }
76 78

  
79
    @Override
77 80
    public void deleteObservers() {
78 81
        status.deleteObservers();
79 82
    }
80 83

  
84
    @Override
81 85
    public void setTittle(String tittle) {
82 86
        status.setTitle(tittle);
83 87
    }
84 88

  
89
    @Override
85 90
    public void setTitle(String title) {
86 91
        status.setTitle(title);
87 92
    }
88 93

  
94
    @Override
89 95
    public void message(String message) {
90 96
        status.message(message);
91 97
        if (this.monitor != null) {
......
93 99
        }
94 100
    }
95 101

  
102
    @Override
96 103
    public void setRangeOfValues(long min, long max) {
97 104
        this.min = min;
98 105
        this.max = max;
......
102 109
        }
103 110
    }
104 111

  
112
    @Override
105 113
    public void setCurValue(long value) {
106 114
        status.setCurValue(value);
107 115
        if (this.monitor != null) {
......
109 117
        }
110 118
    }
111 119

  
120
    @Override
112 121
    public boolean isCancellationRequested() {
113 122
        return status.isCancellationRequested();
114 123
    }
115 124

  
125
    @Override
116 126
    public void cancelRequest() {
117 127
        status.cancelRequest();
118 128
    }
119 129

  
130
    @Override
120 131
    public void terminate() {
121 132
        status.terminate();
122 133
        if (this.monitor != null) {
......
124 135
        }
125 136
    }
126 137

  
138
    @Override
127 139
    public String getTitle() {
128 140
        return status.getTitle();
129 141
    }
130 142

  
143
    @Override
131 144
    public void cancel() {
132 145
        status.cancel();
133 146
    }
134 147

  
148
    @Override
135 149
    public String getCode() {
136 150
        return status.getCode();
137 151
    }
138 152

  
153
    @Override
139 154
    public void abort() {
140 155
        status.abort();
141 156
        if (this.monitor != null) {
......
143 158
        }
144 159
    }
145 160

  
161
    @Override
146 162
    public int getCompleted() {
147 163
        return status.getCompleted();
148 164
    }
149 165

  
166
    @Override
150 167
    public void remove() {
151 168
        status.remove();
152 169
    }
153 170

  
171
    @Override
154 172
    public void add() {
155 173
        status.add();
156 174
    }
157 175

  
176
    @Override
158 177
    public String getLabel() {
159 178
        return status.getLabel();
160 179
    }
161 180

  
181
    @Override
162 182
    public void setCancellable(boolean cancellable) {
163 183
        status.setCancellable(cancellable);
164 184
    }
......
168 188
            || (monitor != null && monitor.isCanceled());
169 189
    }
170 190

  
191
    @Override
171 192
    public void setAutoremove(boolean autoremove) {
172 193
        status.setAutoremove(autoremove);
173 194
    }
174 195

  
196
    @Override
175 197
    public boolean isAborted() {
176 198
        return status.isAborted();
177 199
    }
178 200

  
201
    @Override
179 202
    public boolean isRunning() {
180 203
        return status.isRunning();
181 204
    }
182 205

  
206
    @Override
183 207
    public boolean getAutoRemove() {
184 208
        return status.getAutoRemove();
185 209
    }
186 210

  
211
    @Override
187 212
    public Date getLastModification() {
188 213
        return status.getLastModification();
189 214
    }
190 215

  
216
    @Override
191 217
    public TaskStatusManager getManager() {
192 218
        return status.getManager();
193 219
    }
194 220

  
221
    @Override
195 222
    public boolean isIndeterminate() {
196 223
        return status.isIndeterminate();
197 224
    }
198 225

  
226
    @Override
199 227
    public boolean isCancellable() {
200 228
        return status.isCancellable();
201 229
    }
202 230

  
231
    @Override
203 232
	public void pop() {
204 233
		status.pop();
205 234
	}
206 235

  
236
    @Override
207 237
	public void push() {
208 238
		status.push();
209 239
	}
210 240

  
241
    @Override
211 242
	public void setIndeterminate() {
212 243
		status.setIndeterminate();
213 244
	}
214
        
215
        public void restart() {
216
            status.restart();
217
        }
218 245

  
219 246
}
org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/SextanteGeoProcessManager.java
99 99
        geoprocesses = new HashMap<String, GeoAlgorithm>();
100 100
    }
101 101

  
102
    @Override
102 103
    public String getTranslation(String label) {
103 104
        // Just in case an algorithm is using a sextante label
104 105
        String text = i18nManager.getTranslation(label);
105 106
        return text == null ? Sextante.getText(label) : text;
106 107
    }
107 108

  
109
    @Override
108 110
    public void registerGeoProcess(GeoProcess geoProcess) {
109 111
        if (geoProcess instanceof GeoAlgorithm) {
110 112
            GeoAlgorithm geoAlgorithm = (GeoAlgorithm) geoProcess;
......
116 118
        }
117 119
    }
118 120

  
121
    @Override
119 122
    public void registerGeoProcess(Class<? extends GeoProcess> geoProcessClazz,
120 123
        Map<String, String> localeStrings) {
121 124
        try {
......
132 135
        }
133 136
    }
134 137

  
138
    @Override
135 139
    public void initialize() {
136 140
        // Nothing to do
137 141
    }
138 142

  
143
    @Override
139 144
    public String getName() {
140 145
        return Messages.getText("gv_algorithms");
141 146
    }
142 147

  
148
    @Override
143 149
    public HashMap<String, GeoAlgorithm> getAlgorithms() {
144 150
        return new HashMap<String, GeoAlgorithm>(geoprocesses);
145 151
    }
146 152

  
153
    @Override
147 154
    public HashMap<String, Class> getCustomModelerParameterPanels() {
148 155
        final HashMap<String, Class> map = new HashMap<String, Class>();
149 156
        final Set<String> set = getAlgorithms().keySet();
......
155 162
        return map;
156 163
    }
157 164

  
165
    @Override
158 166
    public HashMap<String, Class> getCustomParameterPanels() {
159 167
        final HashMap<String, Class> map = new HashMap<String, Class>();
160 168
        final Set<Entry<String, GeoAlgorithm>> set = getAlgorithms().entrySet();
......
175 183
        return map;
176 184
    }
177 185

  
186
    @Override
178 187
    public ImageIcon getIcon() {
179 188
        return IconThemeHelper.getImageIcon("gvsig-icon16x16");
180 189
    }
181 190

  
191
    @Override
182 192
    public Setting getSettings() {
183 193
        return new GeoprocessSetting();
184 194
    }
185 195

  
196
    @Override
186 197
    public void update() {
187 198
        // Nothing to do
188 199
    }
189 200

  
201
    @Override
190 202
    public Object getAlgorithmHelp(GeoAlgorithm alg) {
191 203
        String algName = alg.getClass().getSimpleName();
192 204
        String helpFileName =
......
388 400
        return doc.getHTMLCode();
389 401
    }
390 402

  
403
    @Override
391 404
    public String getAlgorithmHelpFilename(GeoAlgorithm alg,
392 405
        boolean bForceCurrentLocale) {
393 406
        // TODO Auto-generated method stub
394 407
        return null;
395 408
    }
396 409

  
410
    @Override
397 411
    public boolean canEditHelp() {
398 412
        return false;
399 413
    }
......
504 518

  
505 519
    }
506 520

  
521
    @Override
507 522
    public HashMap<NameAndIcon, ArrayList<ToolboxAction>> getToolboxActions() {
508 523
        return new HashMap<NameAndIcon, ArrayList<ToolboxAction>>();
509 524
     }
510 525

  
511 526

  
527
    @Override
512 528
     public IToolboxRightButtonAction[] getToolboxRightButtonActions() {
513 529
        return new IToolboxRightButtonAction[0];
514 530
     }
org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/DALIFeatureIterator.java
43 43
import org.gvsig.fmap.dal.feature.FeatureSet;
44 44
import org.gvsig.fmap.dal.feature.FeatureStore;
45 45
import org.gvsig.fmap.dal.feature.FeatureType;
46
import org.gvsig.fmap.geom.operation.GeometryOperationException;
47
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
46 48
import org.gvsig.fmap.geom.operation.tojts.ToJTS;
47 49
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
48 50
import org.gvsig.tools.dispose.DisposableIterator;
......
104 106
        }
105 107

  
106 108
        boolean bFound = false;
107
        ;
108 109
        while (!bFound && m_FeatureIterator.hasNext()) {
109 110
            try {
110 111
                final Feature f = (Feature) m_FeatureIterator.next();
111
                final org.gvsig.fmap.geom.Geometry geometry =
112
                    f.getDefaultGeometry();
112
                final org.gvsig.fmap.geom.Geometry geometry;
113
                geometry = f.getDefaultGeometry();
113 114
                final Geometry geom =
114 115
                    (Geometry) geometry.invokeOperation(ToJTS.CODE, null);
115 116
                final FeatureType type = f.getType();
116 117
                @SuppressWarnings("unchecked")
117
                final Iterator<FeatureAttributeDescriptor> iter =
118
                    type.iterator();
118
                final Iterator<FeatureAttributeDescriptor> iter;
119
                iter = type.iterator();
119 120
                final List<Object> objects = new ArrayList<Object>();
120 121
                while (iter.hasNext()) {
121 122
                    final FeatureAttributeDescriptor descriptor = iter.next();
......
134 135
                    m_CurrentValue = feature;
135 136
                    m_bIsNextConsumed = false;
136 137
                }
137
            } catch (final Exception e) {
138
            } catch (final GeometryOperationException e) {
138 139
                Sextante.addErrorToLog(e);
139 140
                return false;
141
            } catch (final GeometryOperationNotSupportedException e) {
142
                Sextante.addErrorToLog(e);
143
                return false;
140 144
            }
141 145
        }
142 146
        if (!bFound) {
......
145 149
        return bFound;
146 150
    }
147 151

  
152
    @Override
148 153
    public IFeature next() {
149 154

  
150 155
        if (!m_bIsNextConsumed) {
......
162 167
        throw new NoSuchElementException();
163 168
    }
164 169

  
170
    @Override
165 171
    public boolean hasNext() {
166 172

  
167 173
        if (m_bFinished) {
......
176 182

  
177 183
    }
178 184

  
185
    @Override
179 186
    public void close() {
180 187
    }
181 188

  
org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/FileTools.java
26 26
import java.io.File;
27 27

  
28 28
import es.unex.sextante.core.Sextante;
29
import java.util.logging.Level;
30
import java.util.logging.Logger;
29 31

  
30 32
import org.cresques.cts.IProjection;
31 33
import org.gvsig.app.ApplicationLocator;
......
35 37
import org.gvsig.app.project.documents.table.TableManager;
36 38
import org.gvsig.fmap.dal.DALLocator;
37 39
import org.gvsig.fmap.dal.DataManager;
40
import org.gvsig.fmap.dal.DataServerExplorer;
41
import org.gvsig.fmap.dal.DataServerExplorerParameters;
42
import org.gvsig.fmap.dal.DataStore;
38 43
import org.gvsig.fmap.dal.DataStoreParameters;
39
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
44
import org.gvsig.fmap.dal.NewDataStoreParameters;
45
import org.gvsig.fmap.dal.exception.DataException;
46
import org.gvsig.fmap.dal.exception.InitializeException;
47
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
48
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
40 49
import org.gvsig.fmap.dal.feature.FeatureStore;
50
import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
51
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
41 52
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
42
import org.gvsig.fmap.dal.store.dbf.DBFStoreParameters;
43
import org.gvsig.fmap.dal.store.dbf.DBFStoreProvider;
44 53
import org.gvsig.fmap.mapcontext.MapContextLocator;
54
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
45 55
import org.gvsig.fmap.mapcontext.layers.FLayer;
46 56

  
47 57
public class FileTools {
......
51 61
    public final static String[] RASTER_EXT_IN = { "tif", "asc", "dat", "tiff",
52 62
        "bmp", "gif", "img", "jpg", "png", "vrt", "lan", "gis", "pix", "aux",
53 63
        "adf", "mpr", "mpl", "map", "hdr" };
54
    public final static String[] RASTER_DRIVERS_IN = { "RasterStore",
55
        "RasterStore", "RasterStore", "RasterStore", "RasterStore",
56
        "RasterStore", "RasterStore", "RasterStore", "RasterStore",
57
        "RasterStore", "RasterStore", "RasterStore", "RasterStore",
58
        "RasterStore", "RasterStore", "RasterStore", "RasterStore",
59
        "RasterStore", "RasterStore" };
64
//    public final static String[] RASTER_DRIVERS_IN = { "RasterStore",
65
//        "RasterStore", "RasterStore", "RasterStore", "RasterStore",
66
//        "RasterStore", "RasterStore", "RasterStore", "RasterStore",
67
//        "RasterStore", "RasterStore", "RasterStore", "RasterStore",
68
//        "RasterStore", "RasterStore", "RasterStore", "RasterStore",
69
//        "RasterStore", "RasterStore" };
60 70

  
61 71
    public final static String[] VECTOR_EXT_IN = { "shp", "gml", "dxf", "dgn",
62 72
        "dwg" };
......
68 78
    public static final String[] LAYERS_EXT_IN = { "tif", "asc", "dat", "tiff",
69 79
        "bmp", "gif", "img", "jpg", "png", "vrt", "lan", "gis", "pix", "aux",
70 80
        "adf", "mpr", "mpl", "map", "shp", "gml", "dxf", "dgn", "dwg" };
71
    public static final String[] LAYER_DRIVERS_IN = { "Gdal Store",
72
        "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store",
73
        "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store",
74
        "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store",
75
        "Gdal Store", "Gdal Store", "Shape", "GML", "DXF", "DGN", "DWG" };
76
    public static final boolean[] LAYER_RASTER = { true, true, true, true,
77
        true, true, true, true, true, true, true, true, true, true, true, true,
78
        true, true, false, false, false, false, false, };
81
//    public static final String[] LAYER_DRIVERS_IN = { "Gdal Store",
82
//        "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store",
83
//        "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store",
84
//        "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store", "Gdal Store",
85
//        "Gdal Store", "Gdal Store", "Shape", "GML", "DXF", "DGN", "DWG" };
86
//    public static final boolean[] LAYER_RASTER = { true, true, true, true,
87
//        true, true, true, true, true, true, true, true, true, true, true, true,
88
//        true, true, false, false, false, false, false, };
79 89

  
80 90
    public static FLayer openLayer(final String sFilename,
81
        final String sName, final IProjection projection) {
91
            final String sName, final IProjection projection) {
82 92

  
83
        final String sExtension =
84
            sFilename.substring(sFilename.lastIndexOf('.') + 1,
85
                sFilename.length());
93
        try {
86 94

  
87
        for (int i = 0; i < LAYERS_EXT_IN.length; i++) {
88
            if (sExtension.equals(LAYERS_EXT_IN[i])) {
89
                try {
90
                    FLayer layer;
91
                    final DataManager dm = DALLocator.getDataManager();
92
                    final DataStoreParameters params =
93
                        dm.createStoreParameters(FileTools.LAYER_DRIVERS_IN[i]);
94
                    ((FilesystemStoreParameters) params).setFile(new File(sFilename));
95

  
96
                    if(!(params instanceof RasterDataParameters)) {
97
                    	params.setDynValue("crs", projection);
98
                    }
99
                    layer = MapContextLocator.getMapContextManager().createLayer(sName, params);
100

  
101
                    if ((layer != null) && layer.isAvailable()) {
102
                        return layer;
103
                    } else {
104
                        return null;
105
                    }
106
                } catch (final Exception e) {
107
                    Sextante.addErrorToLog(e);
108
                    return null;
109
                }
95
            final DataManager dm = DALLocator.getDataManager();
96
            DataServerExplorerParameters serverParameters = dm.createServerExplorerParameters(FilesystemServerExplorer.NAME);
97
            FilesystemServerExplorer server = (FilesystemServerExplorer) dm.openServerExplorer(FilesystemServerExplorer.NAME, serverParameters);
98
            File file = new File(sFilename);
99
            DataStoreParameters parameters = server.createStoreParameters(file);
100
            if (!(parameters instanceof NewRasterStoreParameters)) {
101
                parameters.setDynValue("crs", projection);
110 102
            }
103
            DataStore store = dm.openStore(parameters.getDataStoreName(), parameters);
104
            FLayer layer = MapContextLocator.getMapContextManager().createLayer(sName, store);
105
            if ((layer != null) && layer.isAvailable()) {
106
                return layer;
107
            } else {
108
                return null;
109
            }
110
        } catch (Exception e) {
111
            Sextante.addErrorToLog(e);
111 112
        }
112 113
        return null;
113 114
    }
......
117 118
        final DataManager dm = DALLocator.getDataManager();
118 119
        try {
119 120
            DataStoreParameters storeParameters =
120
                dm.createStoreParameters(DBFStoreProvider.NAME);
121
            storeParameters.setDynValue(
122
                DBFStoreParameters.DBFFILE_PARAMTER_NAME, sFilename);
121
                dm.createStoreParameters("DBF");
122
            storeParameters.setDynValue("dbfFile", sFilename);
123 123
            final FeatureStore store =
124
                (FeatureStore) dm.openStore(DBFStoreProvider.NAME,
125
                    storeParameters);
124
                (FeatureStore) dm.openStore("DBF",storeParameters);
126 125
            final TableDocument pt =
127 126
                (TableDocument) ProjectManager.getInstance().createDocument(
128 127
                    TableManager.TYPENAME, sName);
......
132 131
            Sextante.addErrorToLog(e);
133 132
            return null;
134 133
        }
135
    }
134
    }   
136 135

  
137 136
    public static Object open(final String sFilename) {
138 137

  
org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/FLyrRasterIRasterLayer.java
28 28

  
29 29
import org.gvsig.fmap.dal.DALLocator;
30 30
import org.gvsig.fmap.dal.DataManager;
31
import org.gvsig.fmap.dal.coverage.RasterLocator;
32
import org.gvsig.fmap.dal.coverage.RasterManager;
33
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
34
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
35
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
36
import org.gvsig.fmap.dal.coverage.exception.QueryException;
37
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
38
import org.gvsig.fmap.dal.coverage.store.RasterQuery;
39
import org.gvsig.fmap.dal.coverage.store.parameter.RasterFileStoreParameters;
40
import org.gvsig.fmap.dal.exception.CloseException;
31

  
41 32
import org.gvsig.fmap.dal.exception.InitializeException;
42 33
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
43 34
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
44 35
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
45
import org.gvsig.raster.fmap.layers.DefaultFLyrRaster;
46
import org.gvsig.raster.fmap.layers.FLyrRaster;
47 36

  
48 37
import es.unex.sextante.core.AnalysisExtent;
49 38
import es.unex.sextante.core.Sextante;
50 39
import es.unex.sextante.dataObjects.AbstractRasterLayer;
51 40
import es.unex.sextante.outputs.IOutputChannel;
41
import org.gvsig.fmap.dal.exception.DataException;
42
import org.gvsig.fmap.dal.raster.api.BandDescriptor;
43
import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
44
import org.gvsig.fmap.dal.raster.api.RasterQuery;
45
import org.gvsig.fmap.dal.raster.api.RasterStore;
46
import org.gvsig.fmap.geom.GeometryLocator;
47
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
48
import org.gvsig.fmap.geom.primitive.Envelope;
49
import org.gvsig.fmap.mapcontext.MapContextLocator;
50
import org.gvsig.fmap.mapcontext.layers.FLayer;
51
import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
52
import org.gvsig.fmap.mapcontext.raster.impl.DefaultRasterLayer;
53
import org.gvsig.raster.lib.buffer.api.Buffer;
54
import org.gvsig.raster.lib.buffer.api.BufferManager;
55
import org.gvsig.raster.lib.buffer.api.NoData;
56
import org.gvsig.tools.dispose.DisposeUtils;
57
import org.gvsig.tools.locator.LocatorException;
52 58

  
53 59
/**
54 60
 * A wrapper for a gvSIG Raster layer. Allows only reading, but not writing to
......
58 64
 * 
59 65
 */
60 66
public class FLyrRasterIRasterLayer extends AbstractRasterLayer {
61
    private FLyrRaster      lyr            = null;
67
    private RasterLayer      lyr            = null;
62 68
    private Buffer          m_Buffer       = null;
63 69
    private int             xTranslate     = 0;
64 70
    private int             yTranslate     = 0;
......
73 79
    	this.fName = fName;
74 80
    }
75 81

  
76
    public void create(final FLyrRaster lyr) {
82
    public void create(final RasterLayer lyr) {
77 83
    	this.lyr = lyr;
78 84
    }
79 85
    
80
    private RasterDataStore getDataStore() {
81
    	return lyr == null ? null : lyr.getDataStore();
86
    private RasterStore getDataStore() {
87
    	return lyr == null ? null : lyr.getRasterStore();
82 88
    }
83 89

  
90
    @Override
84 91
    public int getDataType() {
85
        return getDataStore().getDataType()[0];
92
        return getDataStore().getBandDescriptor(0).getDataType();
86 93
    }
87 94

  
95
    @Override
88 96
    public void setCellValue(final int x, final int y, final int iBand,
89 97
        final double dValue) {
90 98
    }
91 99

  
100
    @Override
92 101
    public void setNoDataValue(final double dNoDataValue) {
93
    	getDataStore().getNoDataValue().setValue(Double.valueOf(dNoDataValue));
102
        //TODO aplicar a todas las bandas
103
    	getDataStore().getBandDescriptor(0).getNoData().setValue(dNoDataValue);
94 104
    }
95 105

  
96 106
    @Override
......
98 108

  
99 109
    }
100 110

  
111
    @Override
101 112
    public double getNoDataValue() {
102
    	if(getDataStore().getNoDataValue().getValue() != null)
103
    		return getDataStore().getNoDataValue().getValue().doubleValue();
113
        NoData noData = getDataStore().getBandDescriptor(0).getNoData();
114
    	if(noData!=null && noData.getValue() != null)
115
                return noData.getValue().doubleValue();
104 116
    	return -99999.0;
105 117
    }
106 118

  
119
    @Override
107 120
    public double getCellValueInLayerCoords(final int x, final int y,
108 121
    		final int iBand) {
109 122
    	int newx = x - xTranslate;
110 123
    	int newy = y - yTranslate;
111 124
    	if(m_Buffer == null)
112 125
    		open();
126
        
113 127
    	if (m_Buffer.isInside(newx, newy)) {
114
    		switch (getDataStore().getDataType()[0]) {
115
    		case Buffer.TYPE_BYTE:
116
    			return (m_Buffer.getElemByte(newy, newx, iBand) & 0xff);
117
    		case Buffer.TYPE_SHORT:
118
    			return m_Buffer.getElemShort(newy, newx, iBand);
119
    		case Buffer.TYPE_INT:
120
    			return m_Buffer.getElemInt(newy, newx, iBand);
121
    		case Buffer.TYPE_FLOAT:
122
    			return m_Buffer.getElemFloat(newy, newx, iBand);
123
    		case Buffer.TYPE_DOUBLE:
128
    		switch (getDataStore().getBandDescriptor(iBand).getDataType()) {
129
    		case BufferManager.TYPE_BYTE:
130
    			return (m_Buffer.getBandByte(iBand).getValue(newx, newy) & 0xff);
131
    		case BufferManager.TYPE_SHORT:
132
    			return m_Buffer.getBandShort(iBand).getValue(newx, newy);
133
    		case BufferManager.TYPE_INT:
134
    			return m_Buffer.getBandInt(iBand).getValue(newx, newy);
135
    		case BufferManager.TYPE_FLOAT:
136
    			return m_Buffer.getBandFloat(iBand).getValue(newx, newy);
137
    		case BufferManager.TYPE_DOUBLE:
124 138
    		default:
125
    			return m_Buffer.getElemDouble(newy, newx, iBand);
126
    		}
139
    			return m_Buffer.getBandFloat(iBand).getValue(newx, newy);    		}
127 140
    	} else {
128 141
    		return getNoDataValue();
129 142
    	}
130 143
    }
131 144

  
145
    @Override
132 146
    public int getBandsCount() {
133
        return getDataStore().getBandCount();
147
        return getDataStore().getBands();
134 148
    }
135 149

  
150
    @Override
136 151
    public String getName() {
137 152
    	if(lyr != null) {
138 153
    		return lyr.getName();
......
148 163
    	return null;
149 164
    }
150 165

  
166
    @Override
151 167
    public void postProcess() {
152 168

  
153 169
    }
154 170

  
171
    @Override
155 172
    public void open() {
156 173
    	if(getDataStore() == null)
157
    		setBaseDataObject(fName);
158
    	RasterQuery query = RasterLocator.getManager().createQuery();
159
		query.setAllDrawableBands();
174
    		try {
175
                    setBaseDataObject(fName);
176
            } catch (LoadLayerException e) {
177
                Sextante.addErrorToLog(e);
178
            } catch (ValidateDataParametersException e) {
179
                Sextante.addErrorToLog(e);
180
            }
181
        RasterQuery query = getDataStore().createRasterQuery();
160 182
		try {
161
			query.setAreaOfInterest();
162
			query.setReadOnly(true);
163
			m_Buffer = getDataStore().query(query);
164
		} catch (QueryException e) {
165
			 Sextante.addErrorToLog(e);
166
		} catch (ProcessInterruptedException e) {
167
			 Sextante.addErrorToLog(e);
168
		} 
183
			m_Buffer = getDataStore().getRasterSet(query);
184
		} catch (DataException e) { 
185
                        Sextante.addErrorToLog(e);
186
        } 
169 187
    }
170 188

  
189
    @Override
171 190
    public void close() {
172 191
    	if(m_Buffer != null)
173 192
    		m_Buffer.dispose();
174 193
    }
175 194

  
195
    @Override
176 196
    public Rectangle2D getFullExtent() {
177
        return getDataStore().getExtent().toRectangle2D();
197
        try {
198
            return getDataStore().getEnvelope().getGeometry().getBounds().getBounds2D();
199
        } catch (DataException e) {
200
            Sextante.addErrorToLog(e);
201
            return null;
202
        } catch (LocatorException e) {
203
            Sextante.addErrorToLog(e);
204
            return null;
205
        } catch (CreateEnvelopeException e) {
206
            Sextante.addErrorToLog(e);
207
            return null;
208
        }
209
        
178 210
    }
179 211

  
212
    @Override
180 213
    public AnalysisExtent getLayerGridExtent() {
181 214
    	if(layerExtent == null) {
182 215
    		try {
183 216
    			layerExtent = new AnalysisExtent();
184
    			layerExtent.setCellSize(getDataStore().getCellSize());
185
    			Extent bbox = getDataStore().getExtent();
186
    			layerExtent.setXRange(bbox.getMin().getX(), bbox.getMax().getX(), true);
187
    			layerExtent.setYRange(bbox.getMin().getY(), bbox.getMax().getY(), true);
188
    		} catch (final Exception e) {
189
    			return null;
190
    		}
217
    			layerExtent.setCellSize(getLayerCellSize());
218
    			Envelope bbox = getDataStore().getEnvelope();
219
    			layerExtent.setXRange(bbox.getLowerCorner().getX(), bbox.getUpperCorner().getX(), true);
220
    			layerExtent.setYRange(bbox.getLowerCorner().getY(), bbox.getUpperCorner().getY(), true);
221
    		} catch (final DataException e) {
222
    			Sextante.addErrorToLog(e);
223
    		} catch (final CreateEnvelopeException e) {
224
                        Sextante.addErrorToLog(e);    			layerExtent = new AnalysisExtent();
225
                } catch (final LocatorException e) {
226
                        Sextante.addErrorToLog(e);
227
                }
191 228
    	}
192 229
    	return layerExtent;
193 230
    }
194 231
    
232
    @Override
195 233
    public void setWindowExtent(final AnalysisExtent extent) {
196 234
    	super.setWindowExtent(extent);
197 235

  
198
    	RasterManager rManager = RasterLocator.getManager();
199
        RasterQuery query = rManager.createQuery();
200
        query.setReadOnly(true);
201
        int[] bands = new int[getDataStore().getBandCount()];
202
        for (int i = 0; i < getDataStore().getBandCount(); i++) {
203
			bands[i] = i;
204
		}
205
        query.setDrawableBands(bands);
206
        Extent ext = RasterLocator.getManager().getDataStructFactory().createExtent(
207
        		extent.getXMin(), 
208
        		extent.getYMax(), 
209
        		extent.getXMax(), 
210
        		extent.getYMin());
211
        query.setAreaOfInterest(ext, extent.getNX(), extent.getNY());
236
    	RasterQuery query = getDataStore().createRasterQuery();
237
        //int[] bands = new int[getDataStore().getBands()];
238
        //for (int i = 0; i < getDataStore().getBands(); i++) {
239
	//		bands[i] = i;
240
	//	}
241
        //query.setDrawableBands(bands);
242
        
243
        Envelope ext;
244
        try {
245
            ext = GeometryLocator.getGeometryManager().createEnvelope(
246
                    extent.getXMin(),
247
                    extent.getYMax(),
248
                    extent.getXMax(),
249
                    extent.getYMin(),
250
                    2);
251
        } catch (CreateEnvelopeException e) {
252
            Sextante.addErrorToLog(e);
253
            ext = null;
254
        }
255
        query.setClip(ext);
212 256
        Buffer entireBuf = m_Buffer;
213 257
        try {
214
			m_Buffer = getDataStore().query(query);
258
			m_Buffer = getDataStore().getRasterSet(query);
215 259
			//Calculamos la traslaci?n respecto a la ventana recortada pq Sextante pedir? 
216 260
			//p?xeles en relaci?n a la imagen completa
217
			Extent bbox = getDataStore().getExtent();
218
			double distx = extent.getXMin() - bbox.getMin().getX();
219
			double disty = bbox.getMax().getY() - extent.getYMax();
261
			Rectangle2D bbox = getDataStore().getEnvelope().getGeometry().getBounds().getBounds2D();
262
			double distx;
263
                        distx = extent.getXMin() - bbox.getMinX();
264
			double disty = bbox.getMaxY() - extent.getYMax();
220 265
			xTranslate = (int)Math.round((distx * extent.getNX()) / (extent.getXMax() - extent.getXMin()));
221 266
			yTranslate = (int)Math.round((disty * extent.getNY()) / (extent.getYMax() - extent.getYMin()));
222
		} catch (QueryException e) {
223
			m_Buffer = entireBuf;
224
		} catch (ProcessInterruptedException e) {
225
		} 
267
		} catch (final Exception e) {
268
			m_Buffer = entireBuf;                                                                                                     
269
		}
226 270
     }
227 271

  
272
    @Override
228 273
    public double getLayerCellSize() {
229
        return getDataStore().getCellSize();
274
        try {
275
            //return getDataStore().getCellSize();
276
            return getDataStore().getDimensions().getPixelSizeX();
277
        } catch (InitializeException e) {
278
           Sextante.addErrorToLog(e);
279
        }
280
        return 0;
230 281
    }
231 282

  
283
    @Override
232 284
    public Object getCRS() {
233
        return getDataStore().getProjection();
285
        try {
286
            return getDataStore().getRasterSet().getProjection();
287
        } catch (DataException e) {
288
            Sextante.addErrorToLog(e);
289
        }
290
        return null;
234 291
    }
235 292

  
293
    @Override
236 294
    public void setName(final String name) {
237 295
    	lyr.setName(name);
238 296
    }
239 297

  
298
    @Override
240 299
    public void free() {
241
    	if(m_Buffer != null)
242
    		m_Buffer.dispose();
243
        try {
244
			getDataStore().close();
245
		} catch (CloseException e) {
246
			Sextante.addErrorToLog(e);
247
		}
300
        DisposeUtils.disposeQuietly(m_Buffer);
301
        DisposeUtils.disposeQuietly(lyr);
248 302
    }
249 303

  
304
    @Override
250 305
    public Object getBaseDataObject() {
251 306
        return lyr;
252 307
    }
253 308
    
254
    public void setBaseDataObject(FLyrRaster lyr) {
309
    public void setBaseDataObject(RasterLayer lyr) {
255 310
        this.lyr = lyr;
256 311
    }
257 312
    
258
    public void setBaseDataObject(RasterDataStore store) {
259
    	DefaultFLyrRaster lyr = new DefaultFLyrRaster();
260
        try {
261
			lyr.setDataStore(store);
262
		} catch (LoadLayerException e) {
263
			Sextante.addErrorToLog(e);
264
			return;
265
		}
266
        this.lyr = lyr;
313
    public void setBaseDataObject(RasterStore store) throws LoadLayerException {
314
        //DefaultRasterLayer newlyr = new DefaultRasterLayer();
315
        FLayer newlyr = MapContextLocator.getMapContextManager().createLayer(store.getName(), store);
316
        
317
//        try {
318
//			newlyr.setDataStore(store);
319
//		} catch (LoadLayerException e) {
320
//			Sextante.addErrorToLog(e);
321
//			return;
322
//		}
323
        this.lyr = (RasterLayer) newlyr;
267 324
    }
268 325
    
269
    public void setBaseDataObject(String fileName) {
270
    	DataManager dataManager = DALLocator.getDataManager();
326
    public void setBaseDataObject(String fileName) throws LoadLayerException, ValidateDataParametersException {
327
    	DataManager dataManager = DALLocator.getDataManager();      
271 328
    	try {
272
    		RasterFileStoreParameters params = 
273
        		(RasterFileStoreParameters)dataManager.createStoreParameters("Gdal Store");
274
    		params.setURI(new File(fileName).toURI());
275
			RasterDataStore dataStore = (RasterDataStore)dataManager.openStore(params.getDataStoreName(), params);
329
    		NewRasterStoreParameters params;
330
                params = (NewRasterStoreParameters)dataManager.createStoreParameters("Gdal Store");
331
                        
332
    		params.setDynValue("uri",new File(fileName).toURI());
333
		RasterStore dataStore;
334
                dataStore = (RasterStore)dataManager.openStore(params.getDataStoreName(), params);
276 335
			setBaseDataObject(dataStore);
277
		} catch (ValidateDataParametersException e) {
278
			Sextante.addErrorToLog(e);
279 336
		} catch (InitializeException e) {
280 337
			Sextante.addErrorToLog(e);
281 338
		} catch (ProviderNotRegisteredException e) {
......
285 342
    
286 343
    
287 344

  
345
    @Override
288 346
    public IOutputChannel getOutputChannel() {
289 347
        return new IOutputChannel() {
348
            @Override
290 349
            public String getAsCommandLineParameter() {
291 350
                return lyr.getName();
292 351
            }
org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/FeatureSetIRecordsetIterator.java
53 53

  
54 54
    }
55 55

  
56
    @Override
56 57
    public boolean hasNext() {
57 58
        return featureIterator.hasNext();
58 59
    }
59 60

  
61
    @Override
60 62
    public IRecord next() {
61 63
        final Feature feature = (Feature) featureIterator.next();
62 64
        final FeatureType fType = feature.getType();
......
74 76
        return record;
75 77
    }
76 78

  
79
    @Override
77 80
    public void close() {
78 81
        if (featureIterator != null) {
79 82
            featureIterator.dispose();
org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/FlyrVectIVectorLayer.java
38 38
import org.gvsig.fmap.dal.DataStoreParameters;
39 39
import org.gvsig.fmap.dal.exception.DataException;
40 40
import org.gvsig.fmap.dal.exception.ReadException;
41
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
42 41
import org.gvsig.fmap.dal.feature.EditableFeature;
43 42
import org.gvsig.fmap.dal.feature.EditableFeatureType;
44 43
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
......
64 63
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
65 64
import org.gvsig.tools.ToolsLocator;
66 65
import org.gvsig.tools.dataTypes.DataTypesManager;
67
import org.gvsig.tools.locator.LocatorException;
68 66

  
69 67
import com.vividsolutions.jts.geom.Geometry;
70 68

  
......
267 265

  
268 266
    private int[] getTypes(Class<?>[] classes) {
269 267
        DataTypesManager typesManager = ToolsLocator.getDataTypesManager();
270
        int[] types = new int[classes.length];
268
        int[] dataTypes = new int[classes.length];
271 269
        for (int i = 0; i < classes.length; i++) {
272
            types[i] = typesManager.getDataType(classes[i]).getType();
270
            dataTypes[i] = typesManager.getDataType(classes[i]).getType();
273 271
        }
274
        return types;
272
        return dataTypes;
275 273
    }
276 274

  
277 275
    public void create(final FLyrVect layer) {
......
287 285

  
288 286
    }
289 287

  
288
    @Override
290 289
    public void open() {
291 290
        if (m_Layer == null) {
292 291
            try {
......
300 299
        }
301 300
    }
302 301

  
302
    @Override
303 303
    public void close() {
304 304
        if( this.m_Layer==null ) {           
305 305
            this.free();
......
336 336
    }
337 337

  
338 338
    @SuppressWarnings("unchecked")
339
    @Override
339 340
    public void addFeature(final Geometry geom, final Object[] values) {
340 341
        try {
341
            org.gvsig.fmap.geom.Geometry iGeo = null;
342
            org.gvsig.fmap.geom.Geometry iGeo;
342 343

  
343 344
            final GeometryOperationContext ctx = new GeometryOperationContext();
344 345
            ctx.setAttribute(FromJTS.PARAM, geom);
......
375 376
        }
376 377
    }
377 378

  
379
    @Override
378 380
    public IFeatureIterator iterator() {
379 381
        if (m_Layer != null) {
380 382
            return new DALIFeatureIterator(m_Layer, getFilters());
......
384 386
        }
385 387
    }
386 388

  
389
    @Override
387 390
    public String getFieldName(final int i) {
388 391
        if (featureStore != null) {
389 392
            return ((FeatureAttributeDescriptor) featureType.get(i)).getName();
......
391 394
        return null;
392 395
    }
393 396

  
397
    @Override
394 398
    public Class<?> getFieldType(final int i) {
395 399
    	return types.get(i);
396 400
    }
397 401

  
402
    @Override
398 403
    public int getFieldCount() {
399 404
        if (featureStore != null) {
400 405
            return names.size();
......
420 425
        return 0;
421 426
    }
422 427

  
428
    @Override
423 429
    public int getShapeType() {
424 430
        if (featureStore != null) {
425 431
            return getShapeTypeFromGvSIGShapeType(((FeatureAttributeDescriptor) featureType
......
476 482
        }
477 483
    }
478 484

  
485
    @Override
479 486
    public String getName() {
480 487
        if (m_Layer != null) {
481 488
            return m_Layer.getName();
......
484 491
        }
485 492
    }
486 493

  
494
    @Override
487 495
    public void postProcess() {
488 496
        if (featureStore == null) {
489 497
            return;
......
509 517
    		return m_sName;
510 518
    }
511 519

  
520
    @Override
512 521
    public Object getCRS() {
513 522

  
514 523
        return m_Projection;
515 524

  
516 525
    }
517 526

  
527
    @Override
518 528
    public void setName(final String name) {
519 529
        m_sName = name;
520 530
    }
......
524 534
        return m_Layer;
525 535
    }
526 536

  
537
    @Override
527 538
    public void free() {
528 539
        if( this.featureStore!=null ) {
529 540
            if( featureStore.isEditing() || featureStore.isAppending() ) {
......
542 553
        }
543 554
    }
544 555

  
556
    @Override
545 557
    public IOutputChannel getOutputChannel() {
546 558
        if (featureStore != null) {
547 559
            final DataStoreParameters dsp = featureStore.getParameters();
......
558 570
        }
559 571
    }
560 572

  
573
    @Override
561 574
    public boolean canBeEdited() {
562 575
        // we support only file-based, so we can overwrite
563 576
        return true;
......
569 582
    }
570 583

  
571 584

  
585
    @Override
572 586
    public Rectangle2D getFullExtent() {
573 587
    	org.gvsig.fmap.geom.primitive.Envelope envelope;
574 588
		try {
......
581 595

  
582 596

  
583 597

  
598
    @Override
584 599
    public String[] getFieldNames() {
585 600
    	return (String[]) names.toArray(new String[names.size()]);
586 601
    }
587 602

  
603
    @Override
588 604
    public int getFieldIndexByName(final String sFieldName) {
589
    	String[] names = getFieldNames();
590
    	for (int i = 0; i < names.length; i++) {
591
			if(names[i].equalsIgnoreCase(sFieldName)) {
605
    	String[] fieldNames = getFieldNames();
606
    	for (int i = 0; i < fieldNames.length; i++) {
607
			if(fieldNames[i].equalsIgnoreCase(sFieldName)) {
592 608
				return i;
593 609
			}
594 610
		}
595 611
    	return -1;
596 612
    }
597 613

  
614
    @Override
598 615
    public Class<?>[] getFieldTypes() {
599 616
    	return (Class<?>[]) types.toArray(new Class<?>[types.size()]);
600 617
    }
org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/TableDocumentITable.java
58 58
    private FeatureType featureType;
59 59
    private FeatureStore featureStore;
60 60

  
61
    @Override
61 62
    public String getName() {
62 63

  
63 64
        if (m_Table != null) {
......
142 143
        return types;
143 144
    }
144 145

  
146
    @Override
145 147
    public void addRecord(final Object[] record) {
146 148
        try {
147 149
            final EditableFeature ef = featureStore.createNewFeature();
......
163 165

  
164 166
    }
165 167

  
168
    @Override
166 169
    public IRecordsetIterator iterator() {
167 170
        try {
168 171
            return new FeatureSetIRecordsetIterator(featureStore.getFeatureSet(m_Table
......
172 175
        }
173 176
    }
174 177

  
178
    @Override
175 179
    public String getFieldName(final int i) {
176 180
        return ((FeatureAttributeDescriptor) featureType.get(i)).getName();
177 181
    }
178 182

  
183
    @Override
179 184
    public Class<?> getFieldType(final int i) {
180 185
        return featureType.getAttributeDescriptor(i).getDataType()
181 186
            .getDefaultClass();
182 187
    }
183 188

  
189
    @Override
184 190
    public int getFieldCount() {
185 191
        return featureType.size();
186 192
    }
187 193

  
194
    @Override
188 195
    public long getRecordCount() {
189 196
        try {
190 197
            return featureStore.getFeatureSet(m_Table.getQuery()).getSize();
......
194 201
        return 0;
195 202
    }
196 203

  
204
    @Override
197 205
    public void postProcess() {
198 206
        if(featureStore.isAppending() || featureStore.isEditing()) {
199 207
            try {
......
215 223
        create(table);
216 224
    }
217 225

  
226
    @Override
218 227
    public void open() {
219 228

  
220 229
    }
221 230

  
231
    @Override
222 232
    public void close() {
223 233
        // Nothing to do
224 234
    }
......
229 239

  
230 240
    }
231 241

  
242
    @Override
232 243
    public void setName(final String name) {
233 244

  
234 245
        if (m_Table != null) {
......
239 250

  
240 251
    }
241 252

  
253
    @Override
242 254
    public Object getBaseDataObject() {
243 255

  
244 256
        return m_Table;
245 257

  
246 258
    }
247 259

  
260
    @Override
248 261
    public void free() {
249 262

  
250 263
        m_Table = null;
251 264

  
252 265
    }
253 266

  
267
    @Override
254 268
    public IOutputChannel getOutputChannel() {
255 269

  
256 270
        return new FileOutputChannel(m_sFilename);
org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/RasterDriver.java
23 23
 */
24 24
package org.gvsig.geoprocess.lib.sextante.dataObjects;
25 25

  
26
import java.awt.geom.AffineTransform;
27 26
import java.awt.image.DataBuffer;
28 27
import java.io.File;
29 28

  
......
33 32
import org.cresques.cts.IProjection;
34 33

  
35 34
import org.gvsig.andami.Utilities;
36
import org.gvsig.fmap.dal.coverage.RasterLocator;
37
import org.gvsig.fmap.dal.coverage.RasterManager;
38
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
39
import org.gvsig.fmap.dal.coverage.datastruct.NoData;
40
import org.gvsig.fmap.dal.coverage.datastruct.Params;
41
import org.gvsig.fmap.dal.coverage.store.DataServerWriter;
42
import org.gvsig.fmap.dal.coverage.store.RasterWriter;
35
import org.gvsig.fmap.dal.DALLocator;
36
import org.gvsig.fmap.dal.DataManager;
37
import org.gvsig.fmap.dal.DataServerExplorerParameters;
38
import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
39
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
40
import org.gvsig.raster.lib.buffer.api.Buffer;
41
import org.gvsig.raster.lib.buffer.api.BufferLocator;
42
import org.gvsig.raster.lib.buffer.api.BufferManager;
43
import org.gvsig.raster.lib.buffer.api.NoData;
44
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
43 45

  
46

  
44 47
public class RasterDriver {
45 48

  
46 49
    public static final int RASTER_DATA_TYPE_FLOAT = DataBuffer.TYPE_FLOAT;
......
54 57
    private String name = null;
55 58

  
56 59
    public RasterDriver(final AnalysisExtent ae, final int iDataType,
57
        final int iNumBands) {
60
        final int iNumBands) throws BufferException {
58 61

  
59 62
        super();
60

  
61
        buf =
62
            RasterLocator.getManager().createBuffer(iDataType,
63
                ae.getNX(),
64
                ae.getNY(),
65
                iNumBands, true);
63
        IProjection projection = null; //TODO check create bufefr without projection
64
        int[] listDataType; //TODO check how listDataType is made.
65
        listDataType = new int[1];
66
        listDataType[0] = (iDataType);
67
        buf = BufferLocator.getBufferManager().createBuffer(ae.getNX(), ae.getNY(), listDataType, projection);
66 68
        m_GridExtent = ae;
67 69

  
68 70
    }
69 71

  
70
    public RasterDriver(final AnalysisExtent ae, final int iDataType) {
72
    public RasterDriver(final AnalysisExtent ae, final int iDataType) throws BufferException {
71 73
        this(ae, iDataType, 1);
72 74
    }
73 75

  
......
99 101
        final double dValue) {
100 102

  
101 103
        if (isInGrid(x, y) && (iBand < buf.getBandCount())) {
102
            switch (buf.getDataType()) {
103
            case Buffer.TYPE_BYTE:
104
                buf.setElem(y, x, iBand, (byte) dValue);
104
            switch (buf.getBand(iBand).getDataType()) {
105
            case BufferManager.TYPE_BYTE:
106
                buf.getBand(iBand).set(y,x, (byte) dValue);
105 107
                break;
106
            case Buffer.TYPE_SHORT:
107
                buf.setElem(y, x, iBand, (short) dValue);
108
            case BufferManager.TYPE_SHORT:
109
                buf.getBand(iBand).set(y, x,(short) dValue);
108 110
                break;
109
            case Buffer.TYPE_INT:
110
                buf.setElem(y, x, iBand, (int) dValue);
111
            case BufferManager.TYPE_INT:
112
                buf.getBand(iBand).set(y, x, (int) dValue);
111 113
                break;
112
            case Buffer.TYPE_FLOAT:
113
                buf.setElem(y, x, iBand, (float) dValue);
114
            case BufferManager.TYPE_FLOAT:
115
                buf.getBand(iBand).set(y, x,(float) dValue);
114 116
                break;
115
            case Buffer.TYPE_DOUBLE:
117
            case BufferManager.TYPE_DOUBLE:
116 118
            default:
117
                buf.setElem(y, x, iBand, dValue);
119
                buf.getBand(iBand).set(y, x, dValue);
118 120
                break;
119 121
            }
120 122
        }
121 123
    }
122 124

  
123 125
    public double getNoDataValue() {
124
        NoData nodata = buf.getNoDataValue();
126
        NoData nodata;
127
        nodata = buf.getBandNoData()[0];
125 128
        return nodata != null ? (nodata.getValue() != null ? nodata.getValue()
126 129
            .doubleValue() : 0.0d) : 0.0d;
127 130
    }
128 131

  
129 132
    public void setNoDataValue(final double dNoDataValue) {
130 133
        // TODO: hablar con NACHO
131
        if (buf.getNoDataValue() == null) {
132
            NoData nodata =
133
                RasterLocator.getManager().getDataStructFactory()
134
                    .createNoData(dNoDataValue, null, null);
135
            buf.setNoDataValue(nodata);
136
        } else {
137
            buf.getNoDataValue().setValue(dNoDataValue);
134
        for (int i = 0; i < buf.getBandCount(); i++) {
135
                if (buf.getBand(i).getNoData()== null) {
136
                    NoData nodata = BufferLocator.getBufferManager().createNoData(dNoDataValue, null);
137
                    buf.getBand(i).getNoData().setValue(nodata.getValue());
138
                } else {
139
                    buf.getBand(i).getNoData().setValue(dNoDataValue);
140
                }
138 141
        }
139 142
    }
140 143

  
......
145 148
    public double getCellValue(final int x, final int y, final int iBand) {
146 149

  
147 150
        if (isInGrid(x, y) && (iBand < buf.getBandCount())) {
148
            switch (buf.getDataType()) {
149
            case Buffer.TYPE_BYTE:
150
                return buf.getElemByte(y, x, iBand);
151
            case Buffer.TYPE_SHORT:
152
                return buf.getElemShort(y, x, iBand);
153
            case Buffer.TYPE_INT:
154
                return buf.getElemInt(y, x, iBand);
155
            case Buffer.TYPE_FLOAT:
156
                return buf.getElemFloat(y, x, iBand);
157
            case Buffer.TYPE_DOUBLE:
158
                return buf.getElemDouble(y, x, iBand);
151
            switch (buf.getBand(iBand).getDataType()) {
152
            case BufferManager.TYPE_BYTE:
153
                return buf.getBandByte(iBand).getValue(y, x);
154
            case BufferManager.TYPE_SHORT:
155
                return buf.getBandShort(iBand).getValue(y, x);
156
            case BufferManager.TYPE_INT:
157
                return buf.getBandInt(iBand).getValue(y,x);
158
            case BufferManager.TYPE_FLOAT:
159
                return buf.getBandFloat(iBand).getValue(y,x);
160
            case BufferManager.TYPE_DOUBLE:
161
                return buf.getBandDouble(iBand).getValue(y,x);
159 162
            default:
160 163
                return getNoDataValue();
161 164
            }
......
174 177
        if ((x < 0) || (y < 0)) {
175 178
            return false;
176 179
        }
177

  
180
        
178 181
        if ((x >= m_GridExtent.getNX()) || (y >= m_GridExtent.getNY())) {
179 182
            return false;
180 183
        }
......
220 223

  
221 224
    public boolean export(final String sFilename, final IProjection projection) {
222 225

  
223
        try {
224
            RasterManager manager = RasterLocator.getManager();
225
            final DataServerWriter writerBufferServer =
226
                manager.createDataServerWriter();
227
            writerBufferServer.setBuffer(buf, -1);
228
            final Params params = manager.createWriterParams(sFilename);
229
            final AffineTransform affineTransform =
230
                new AffineTransform(m_GridExtent.getCellSize(), 0, 0,
231
                    -m_GridExtent.getCellSize(), m_GridExtent.getXMin(),
232
                    m_GridExtent.getYMax());
233 226

  
234
            final RasterWriter writer =
235
                manager.createWriter(writerBufferServer, sFilename,
236
                    buf.getBandCount(), affineTransform, buf.getWidth(),
237
                    buf.getHeight(), buf.getDataType(), params, projection);
238
            writer.dataWrite();
239
            writer.writeClose();
240

  
241
        } catch (final Exception e) {
227
        try {
228
            final DataManager dm = DALLocator.getDataManager();
229
            DataServerExplorerParameters serverParameters = dm.createServerExplorerParameters(FilesystemServerExplorer.NAME);
230
            FilesystemServerExplorer server = (FilesystemServerExplorer) dm.openServerExplorer(FilesystemServerExplorer.NAME, serverParameters);
231
            File file = new File(sFilename);
232
            NewRasterStoreParameters parameters = (NewRasterStoreParameters) server.getAddParameters(file);
233
            parameters.setDynValue("crs", projection);
234
            parameters.setBuffer(buf);
235
            server.add(parameters.getDataStoreName(), parameters, true);
236
            
237
            return true;
238
        } catch (Exception e) {
242 239
            Sextante.addErrorToLog(e);
243
            return false;
244 240
        }
245

  
246
        return true;
247

  
241
        return false;
248 242
    }
249 243

  
250 244
    public void setName(final String name) {
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff