Statistics
| Revision:

gvsig-raster / org.gvsig.raster / branches / org.gvsig.raster.2.4 / org.gvsig.raster / org.gvsig.raster.tilecache / org.gvsig.raster.tilecache.app / org.gvsig.raster.tilecache.app.mainplugin / src / main / java / org / gvsig / raster / tilecache / app / mainplugin / AddTestRasterLayerExtension.java @ 6491

History | View | Annotate | Download (25.5 KB)

1
package org.gvsig.raster.tilecache.app.mainplugin;
2

    
3
import java.io.File;
4
import java.io.IOException;
5
import java.security.MessageDigest;
6
import java.security.NoSuchAlgorithmException;
7
import java.util.ArrayList;
8
import java.util.HashMap;
9
import java.util.List;
10
import java.util.Map;
11

    
12
import javax.xml.parsers.DocumentBuilder;
13
import javax.xml.parsers.DocumentBuilderFactory;
14
import javax.xml.parsers.ParserConfigurationException;
15
import javax.xml.transform.Transformer;
16
import javax.xml.transform.TransformerException;
17
import javax.xml.transform.TransformerFactory;
18
import javax.xml.transform.dom.DOMSource;
19
import javax.xml.transform.stream.StreamResult;
20

    
21
import org.slf4j.Logger;
22
import org.slf4j.LoggerFactory;
23
import org.w3c.dom.Attr;
24
import org.w3c.dom.Document;
25
import org.w3c.dom.Element;
26

    
27
import org.gvsig.andami.IconThemeHelper;
28
import org.gvsig.andami.Launcher;
29
import org.gvsig.andami.plugins.Extension;
30
import org.gvsig.app.ApplicationLocator;
31
import org.gvsig.app.ApplicationManager;
32
import org.gvsig.app.project.documents.view.ViewDocument;
33
import org.gvsig.app.project.documents.view.gui.IView;
34
import org.gvsig.fmap.crs.CRSFactory;
35
import org.gvsig.fmap.dal.DALLocator;
36
import org.gvsig.fmap.dal.DataManager;
37
import org.gvsig.fmap.dal.DataServerExplorer;
38
import org.gvsig.fmap.dal.DataServerExplorerParameters;
39
import org.gvsig.fmap.dal.DataStore;
40
import org.gvsig.fmap.dal.DataStoreProviderFactory;
41
import org.gvsig.fmap.dal.exception.DataException;
42
import org.gvsig.fmap.dal.exception.InitializeException;
43
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
44
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
45
import org.gvsig.fmap.dal.raster.RasterStoreProviderFactory;
46
import org.gvsig.fmap.dal.raster.api.RasterSet;
47
import org.gvsig.fmap.dal.raster.api.RasterStore;
48
import org.gvsig.fmap.dal.raster.spi.NewRasterStoreParameters;
49
import org.gvsig.fmap.dal.spi.DALSPILocator;
50
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
51
import org.gvsig.fmap.geom.Geometry.DIMENSIONS;
52
import org.gvsig.fmap.geom.primitive.Envelope;
53
import org.gvsig.fmap.mapcontext.MapContext;
54
import org.gvsig.fmap.mapcontext.MapContextLocator;
55
import org.gvsig.fmap.mapcontext.MapContextManager;
56
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
57
import org.gvsig.fmap.mapcontext.layers.FLayer;
58
import org.gvsig.fmap.mapcontrol.MapControl;
59
import org.gvsig.raster.lib.buffer.api.Buffer;
60
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
61
import org.gvsig.raster.tilecache.provider.TileCacheStoreProvider;
62
import org.gvsig.tools.dynobject.DynObject;
63

    
64
/**
65
 * Class for test purpose only. It serves to load a test layer in the active View.
66
 * @author fdiaz
67
 *
68
 */
69
public class AddTestRasterLayerExtension extends Extension {
70

    
71
    private static final Logger logger = LoggerFactory.getLogger(AddTestRasterLayerExtension.class);
72

    
73
    @Override
74
    public void initialize() {
75
        IconThemeHelper.registerIcon("action", "view-test-layer-add", this);
76
    }
77

    
78
    @Override
79
    public void execute(String actionCommand) {
80
        ApplicationManager application = ApplicationLocator.getManager();
81

    
82
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
83
        if (view == null) {
84
            return;
85
        }
86
        ViewDocument document = view.getViewDocument();
87

    
88
        MapControl mapControl = view.getMapControl();
89

    
90
        final MapContextManager mapContextManager = MapContextLocator.getMapContextManager();
91
        FLayer layer = null;
92
        DataManager dataManager = DALLocator.getDataManager();
93
//        DataStore dataStore = openFileCached(new File("/home/paco/data/cartography/raster/ecw/valencia_1980_tif.tif"));
94
        DataStore dataStore = openFileCached(new File("/home/paco/data/Testdata/raster/JPG/relieve_andalucia.png"));
95
        String layerName = dataStore.getName();
96
        try {
97
            layer = mapContextManager.createLayer(layerName, dataStore);
98
        } catch (LoadLayerException e) {
99
            logger.warn("Cant load test layer", e);
100
        }
101

    
102
        MapContext mapContext = mapControl.getMapContext();
103
        mapContext.getLayers().add(layer);
104
        mapContext.callLegendChanged();
105
        document.setModified(true);
106
    }
107

    
108
    @Override
109
    public boolean isEnabled() {
110
        return true;
111
    }
112

    
113
    @Override
114
    public boolean isVisible() {
115
        ApplicationManager application = ApplicationLocator.getManager();
116

    
117
        return application.getActiveComponent(ViewDocument.class) != null;
118
    }
119

    
120
    /**
121
     * TO TEST ONLY
122
     *
123
     * @return
124
     */
125
    private RasterStore openWMS() {
126
        DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices();
127
        DataStoreProviderFactory providerFactory = manager.getStoreProviderFactory("WMS");
128
        DynObject params = providerFactory.createParameters();
129

    
130
        if (params.getDynClass().getDynField("crs") != null) {
131
            params.setDynValue("crs", CRSFactory.getCRS("EPSG:23030"));
132
        }
133

    
134
        RasterStore store = null;
135
        try {
136
            store = (RasterStore) manager.openStore("WMS", params);
137
        } catch (ValidateDataParametersException | InitializeException | ProviderNotRegisteredException e) {
138
            logger.info("**** error opening store *****", e);
139
        }
140
        if (store != null) {
141
            logger.info("**** ??????? O.K !!!!!!! *****");
142
        } else {
143
            logger.info("**** K.O ;_( *****");
144
        }
145
        try {
146
            exportGTiff(store);
147
        } catch (ValidateDataParametersException | DataException | BufferException e) {
148
            logger.info("failed to copy");
149
        }
150
        return store;
151

    
152
    }
153

    
154
    /**
155
     * TO TEST ONLY
156
     *
157
     * @return
158
     */
159
    private RasterStore openWCS() {
160
        DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices();
161
        DataStoreProviderFactory providerFactory = manager.getStoreProviderFactory("WCS");
162
        DynObject params = providerFactory.createParameters();
163

    
164
        if (params.getDynClass().getDynField("url") != null) {
165
            params.setDynValue("url", "http://inspire.cop.gva.es/mapserver/wcs?");
166
        }
167
        if (params.getDynClass().getDynField("coverage") != null) {
168
            params.setDynValue("coverage", "MDT");
169
        }
170
        if (params.getDynClass().getDynField("crs") != null) {
171
            params.setDynValue("crs", CRSFactory.getCRS("EPSG:23030"));
172
        }
173

    
174
        RasterStore store = null;
175
        try {
176
            store = (RasterStore) manager.openStore("WCS", params);
177
        } catch (ValidateDataParametersException | InitializeException | ProviderNotRegisteredException e) {
178
            logger.info("**** error opening store *****", e);
179
        }
180
        if (store != null) {
181
            logger.info("**** ??????? O.K !!!!!!! *****");
182
        } else {
183
            logger.info("**** K.O ;_( *****");
184
        }
185
        try {
186
            exportGTiff(store);
187
        } catch (ValidateDataParametersException | DataException | BufferException e) {
188
            logger.info("failed to copy");
189
        }
190
        return store;
191

    
192
    }
193

    
194
    /**
195
     * TO TEST ONLY
196
     *
197
     * @return
198
     */
199
    private RasterStore openPOSTGIS() {
200
        DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices();
201
        DataStoreProviderFactory providerFactory = manager.getStoreProviderFactory("PostGISRaster");
202
        DynObject params = providerFactory.createParameters();
203
        // PG:host='gvsig-training.com' port='5432'
204
        // dbname='andalucia' user='curso' password='curso' schema='public'
205
        // table='tr_relieve_andalucia2'
206
        if (params.getDynClass().getDynField("host") != null) {
207
            params.setDynValue("host", "gvsig-training.com");
208
        }
209
        if (params.getDynClass().getDynField("dbname") != null) {
210
            params.setDynValue("dbname", "andalucia");
211
        }
212
        if (params.getDynClass().getDynField("table") != null) {
213
            params.setDynValue("table", "tr_relieve_andalucia2");
214
        }
215
        if (params.getDynClass().getDynField("schema") != null) {
216
            params.setDynValue("schema", "public");
217
        }
218
        if (params.getDynClass().getDynField("user") != null) {
219
            params.setDynValue("user", "curso");
220
        }
221
        if (params.getDynClass().getDynField("password") != null) {
222
            params.setDynValue("password", "curso");
223
        }
224
        if (params.getDynClass().getDynField("port") != null) {
225
            params.setDynValue("port", 5432);
226
        }
227
        if (params.getDynClass().getDynField("crs") != null) {
228
            params.setDynValue("crs", CRSFactory.getCRS("EPSG:23030"));
229
        }
230

    
231
        RasterStore store = null;
232
        try {
233
            store = (RasterStore) manager.openStore("PostGISRaster", params);
234
        } catch (ValidateDataParametersException | InitializeException | ProviderNotRegisteredException e) {
235
            logger.info("**** error opening store *****", e);
236
        }
237
        if (store != null) {
238
            logger.info("**** ??????? O.K !!!!!!! *****");
239
        } else {
240
            logger.info("**** K.O ;_( *****");
241
        }
242
        try {
243
            exportPNG(store);
244
        } catch (ValidateDataParametersException | DataException | BufferException e) {
245
            logger.info("failed to copy");
246
        }
247
        return store;
248

    
249
    }
250

    
251
    /**
252
     * TO TEST ONLY
253
     *
254
     * @return
255
     */
256
    private RasterStore openTileCache() {
257
        DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices();
258
        DataStoreProviderFactory providerFactory = manager.getStoreProviderFactory("TileCache");
259
        DynObject params = providerFactory.createParameters();
260

    
261
        if (params.getDynClass().getDynField("name") != null) {
262
            params.setDynValue("name", "TilecacheTEST");
263
        }
264
        if (params.getDynClass().getDynField("crs") != null) {
265
            params.setDynValue("crs", CRSFactory.getCRS("EPSG:25830"));
266
        }
267

    
268
        RasterStore store = null;
269
        try {
270
            store = (RasterStore) manager.openStore("TileCache", params);
271
        } catch (ValidateDataParametersException | InitializeException | ProviderNotRegisteredException e) {
272
            logger.info("**** error opening store *****", e);
273
        }
274
        if (store != null) {
275
            logger.info("**** ??????? O.K !!!!!!! *****");
276
        } else {
277
            logger.info("**** K.O ;_( *****");
278
        }
279
        // try {
280
        // exportGTiff(store);
281
        // } catch (ValidateDataParametersException | DataException
282
        // | BufferException e) {
283
        // logger.info("failed to copy");
284
        // }
285
        return store;
286
    }
287

    
288
    private RasterStore openFileCached(File file){
289
        DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices();
290
//        DataStoreProviderFactory providerFactory = manager.getStoreProviderFactory("GTiff");
291
        DataStoreProviderFactory providerFactory = manager.getStoreProviderFactory("JIMI");
292
        DynObject params = providerFactory.createParameters();
293

    
294
        if (params.getDynClass().getDynField("file") != null) {
295
            params.setDynValue("file", file);
296
        }
297
        if (params.getDynClass().getDynField("crs") != null) {
298
            params.setDynValue("crs", CRSFactory.getCRS("EPSG:25830"));
299
        }
300

    
301
        RasterStore store = null;
302
        try {
303
//            store = (RasterStore) manager.openStore("GTiff", params);
304
            store = (RasterStore) manager.openStore("JIMI", params);
305
        } catch (ValidateDataParametersException | InitializeException | ProviderNotRegisteredException e) {
306
            logger.info("**** error opening store *****", e);
307
        }
308
        if (store != null) {
309
            logger.info("**** ??????? O.K !!!!!!! *****");
310
        } else {
311
            logger.info("**** K.O ;_( *****");
312
        }
313

    
314
        RasterStoreProviderFactory tileCacheProviderFactory = (RasterStoreProviderFactory) manager.getStoreProviderFactory(TileCacheStoreProvider.NAME);
315
        DynObject tileParameters = tileCacheProviderFactory.createParameters();
316

    
317
        // FIXME: Ver qu? datos ser?an los adecuados para generar una carpeta
318
        // ?nica para la cach?
319

    
320
        StringBuilder builder = new StringBuilder();
321
        builder.append(store.getProviderName());
322
        // builder.append(store.getMetadataName());
323
        builder.append(store.getName());
324
        builder.append(store.getFullName());
325
        builder.append(store.getBands());
326

    
327
        MessageDigest md = null;
328

    
329
        String hex = "";
330
        try {
331
            md = java.security.MessageDigest.getInstance("MD5");
332
            md.update(builder.toString().getBytes());
333
            hex = convertToHex(md.digest());
334
        } catch (NoSuchAlgorithmException e) {
335
            logger.warn("Can't get a MD5 instance.", e);
336
        }
337

    
338
        String name = (hex.isEmpty()) ? store.getName() : hex + "-" + store.getName();
339

    
340
        if (tileParameters.getDynClass().getDynField("name") != null) {
341
            tileParameters.setDynValue("name", hex);
342
        }
343

    
344
        //FIXME:
345
        String rcacheDir = Launcher.getAppHomeDir() + File.separator + "gvsig_rcache";
346
        File folder = new File(rcacheDir + File.separator + name);
347

    
348
        createTileCacheStructXMLFile(store, folder);
349

    
350
        if (tileParameters.getDynClass().getDynField("cacheFolder") != null) {
351
            tileParameters.setDynValue("cacheFolder", folder);
352
        }
353
        if (tileParameters.getDynClass().getDynField("crs") != null) {
354
            tileParameters.setDynValue("crs", params.getDynValue("crs"));
355
        }
356

    
357

    
358
        try {
359
            store.useCache(TileCacheStoreProvider.NAME, tileParameters);
360
        } catch (DataException e) {
361
            logger.warn("Can't cache the layer.", e);
362
        }
363

    
364
        return store;
365
    }
366

    
367
    private void createTileCacheStructXMLFile(RasterStore store, File folder) {
368
        // FIXME: ?Coger estos valores de alguna constante o de una preferencia?
369
        int tileSizeX = 256;
370
        int tileSizeY = 256;
371

    
372
        File file = new File(folder, "tileCacheStruct.xml");
373

    
374
        if (!file.exists()) {
375
            try {
376
                DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
377
                DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
378

    
379
                // root elements
380
                Document doc = (Document) docBuilder.newDocument();
381
                Element rootElement = doc.createElement("TileCacheStruct");
382
                doc.appendChild(rootElement);
383

    
384
                // tileSize
385
                Element tileSize = doc.createElement("tileSize");
386
                rootElement.appendChild(tileSize);
387

    
388
                // tileSize Rows
389
                Attr rows = doc.createAttribute("rows");
390
                rows.setValue(String.valueOf(tileSizeY));
391
                tileSize.setAttributeNode(rows);
392

    
393
                // tileSize Columns
394
                Attr columns = doc.createAttribute("columns");
395
                columns.setValue(String.valueOf(tileSizeX));
396
                tileSize.setAttributeNode(columns);
397

    
398
                // format
399
                Element format = doc.createElement("format");
400
                format.setTextContent("GTiff");
401
                rootElement.appendChild(format);
402

    
403
                // structExtent
404
                Element structExtent = doc.createElement("structExtent");
405
                rootElement.appendChild(structExtent);
406

    
407
                Envelope envelope = store.getEnvelope();//store.getRasterSet().getEnvelope();
408
                // structExtent minX
409
                Element minX = doc.createElement("minX");
410
                minX.setTextContent(String.valueOf(envelope.getMinimum(DIMENSIONS.X)));
411
                structExtent.appendChild(minX);
412

    
413
                // structExtent minY
414
                Element minY = doc.createElement("minY");
415
                minY.setTextContent(String.valueOf(envelope.getMinimum(DIMENSIONS.Y)));
416
                structExtent.appendChild(minY);
417

    
418
                // structExtent maxX
419
                Element maxX = doc.createElement("maxX");
420
                maxX.setTextContent(String.valueOf(envelope.getMaximum(DIMENSIONS.X)));
421
                structExtent.appendChild(maxX);
422

    
423
                // structExtent maxY
424
                Element maxY = doc.createElement("maxY");
425
                maxY.setTextContent(String.valueOf(envelope.getMaximum(DIMENSIONS.Y)));
426
                structExtent.appendChild(maxY);
427

    
428
                Element levels = doc.createElement("levels");
429
                rootElement.appendChild(levels);
430

    
431
                // FIXME: ?alguna otra forma de obtener el pixelSize del store completo?
432
                RasterSet rasterSet = store.getRasterSet();
433
                int storeRows = rasterSet.getRows();
434
                int storeColumns = rasterSet.getColumns();
435
                double storePixelSizeX = rasterSet.getPixelSizeX();
436
                double storePixelSizeY = rasterSet.getPixelSizeY();
437

    
438
                int storeLength = storeColumns;
439
                int tileLength = tileSizeX;
440
                double storePixelSize = storePixelSizeX;
441

    
442
                if (storeRows * tileSizeY > storeColumns * tileSizeX) {
443
                    storeLength = storeRows;
444
                    tileLength = tileSizeY;
445
                    storePixelSize = storePixelSizeY;
446
                }
447

    
448
                List<Double> pixelSizes = new ArrayList<Double>();
449
                Map<Integer, Double> zoomLevels = new HashMap<Integer, Double>();
450

    
451
                double pixelSize = storePixelSize;
452
                while(storeLength*storePixelSize/pixelSize>tileLength){
453
                    pixelSizes.add(pixelSize);
454
                    pixelSize = pixelSize*2;
455
                }
456
                pixelSizes.add(pixelSize);
457

    
458
                int i=0;
459
                for(int zoomLevel = pixelSizes.size()-1; zoomLevel >= 0; zoomLevel--){
460
                  zoomLevels.put(i, pixelSizes.get(zoomLevel));
461
                  appendZoomLevel(doc, levels, i, pixelSizes.get(zoomLevel));
462
                  i++;
463
                }
464

    
465
                // write the content into xml file
466
                TransformerFactory transformerFactory = TransformerFactory.newInstance();
467
                Transformer transformer = transformerFactory.newTransformer();
468
                DOMSource source = new DOMSource(doc);
469
                File parent = file.getParentFile();
470
                if(!parent.exists()){
471
                    parent.mkdirs();
472
                }
473
                file.createNewFile();
474
                StreamResult result = new StreamResult(file.toURI().getPath());
475

    
476
                transformer.transform(source, result);
477

    
478
            } catch (ParserConfigurationException | TransformerException | DataException | IOException e) {
479
                logger.warn("Can't create tileCacheStruct.xml file", e);
480
            }
481
        }
482
    }
483

    
484
    /**
485
     * @param doc
486
     * @param rootElement
487
     * @param levels
488
     * @param zoomLevel
489
     * @param pixelSize
490
     */
491
    private void appendZoomLevel(Document doc, Element levels, int zoomLevel, double pixelSize) {
492
        Element level = doc.createElement("level");
493
        levels.appendChild(level);
494

    
495
        // level zoomLevel
496
        Attr index = doc.createAttribute("index");
497
        index.setValue(String.valueOf(zoomLevel));
498
        level.setAttributeNode(index);
499

    
500
        // level pixelSize
501
        Attr pxSize = doc.createAttribute("pixelSize");
502
        pxSize.setValue(String.valueOf(pixelSize));
503
        level.setAttributeNode(pxSize);
504
    }
505

    
506
    /**
507
     * Converts an array of bytes to hexadecimal string
508
     *
509
     * @param data
510
     * @return
511
     */
512
    private String convertToHex(byte[] data) {
513
        StringBuffer buf = new StringBuffer();
514
        for (int i = 0; i < data.length; i++) {
515
            int halfbyte = (data[i] >>> 4) & 0x0F;
516
            int two_halfs = 0;
517
            do {
518
                if ((0 <= halfbyte) && (halfbyte <= 9))
519
                    buf.append((char) ('0' + halfbyte));
520
                else
521
                    buf.append((char) ('a' + (halfbyte - 10)));
522
                halfbyte = data[i] & 0x0F;
523
            } while (two_halfs++ < 1);
524
        }
525
        return buf.toString();
526
    }
527

    
528
    /**
529
     * TO TEST ONLY
530
     *
531
     * @return
532
     */
533
    private void exportPNG(RasterStore store) throws InitializeException, ProviderNotRegisteredException,
534
        ValidateDataParametersException, DataException, BufferException {
535
        String providerName = "PNG";
536
        String extension = "png";
537

    
538
        DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices();
539
        DataServerExplorerParameters eparams = manager.createServerExplorerParameters("FilesystemExplorer");
540
        int count = 0;
541
        String path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile." + extension;
542
        File destFile = new File(path);
543
        while (destFile.exists()) {
544
            count++;
545
            path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile_" + count + "." + extension;
546
            destFile = new File(path);
547
        }
548
        eparams.setDynValue("initialpath", path);
549
        DataServerExplorer serverExplorer = manager.createServerExplorer(eparams);
550

    
551
        NewRasterStoreParameters params = (NewRasterStoreParameters) serverExplorer.getAddParameters(providerName);
552
        params.setDynValue("file", destFile);
553

    
554
        params.setDynValue("worldfile", false);
555
        params.setDynValue("zlevel", 1);
556

    
557
        Buffer buffer = store.getRasterSet().clip(store.getEnvelope());
558
        params.setBuffer(buffer);
559
        serverExplorer.add(providerName, params, true);
560
    }
561

    
562
    /**
563
     * TO TEST ONLY
564
     *
565
     * @return
566
     */
567
    private void exportGTiff(RasterStore store) throws InitializeException, ProviderNotRegisteredException,
568
        ValidateDataParametersException, DataException, BufferException {
569
        String providerName = "GTiff";
570
        String extension = "tif";
571

    
572
        DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices();
573
        DataServerExplorerParameters eparams = manager.createServerExplorerParameters("FilesystemExplorer");
574
        int count = 0;
575
        String path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile." + extension;
576
        File destFile = new File(path);
577
        while (destFile.exists()) {
578
            count++;
579
            path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile_" + count + "." + extension;
580
            destFile = new File(path);
581
        }
582
        eparams.setDynValue("initialpath", path);
583
        DataServerExplorer serverExplorer = manager.createServerExplorer(eparams);
584

    
585
        NewRasterStoreParameters params = (NewRasterStoreParameters) serverExplorer.getAddParameters(providerName);
586
        params.setDynValue("file", destFile);
587

    
588
        params.setDynValue("compress", "NONE");
589
        params.setDynValue("tfw", false);
590
        params.setDynValue("photometric", "RGB");
591

    
592
        Buffer buffer = store.getRasterSet().clip(store.getEnvelope());
593
        params.setBuffer(buffer);
594
        serverExplorer.add(providerName, params, true);
595
    }
596

    
597
    /**
598
     * TO TEST ONLY
599
     *
600
     * @return
601
     */
602
    private void exportBMP(RasterStore store) throws InitializeException, ProviderNotRegisteredException,
603
        ValidateDataParametersException, DataException, BufferException {
604
        String providerName = "BMP";
605
        String extension = "bmp";
606

    
607
        DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices();
608
        DataServerExplorerParameters eparams = manager.createServerExplorerParameters("FilesystemExplorer");
609
        int count = 0;
610
        String path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile." + extension;
611
        File destFile = new File(path);
612
        while (destFile.exists()) {
613
            count++;
614
            path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile_" + count + "." + extension;
615
            destFile = new File(path);
616
        }
617
        eparams.setDynValue("initialpath", path);
618
        DataServerExplorer serverExplorer = manager.createServerExplorer(eparams);
619

    
620
        NewRasterStoreParameters params = (NewRasterStoreParameters) serverExplorer.getAddParameters(providerName);
621
        params.setDynValue("file", destFile);
622

    
623
        params.setDynValue("worldfile", true);
624

    
625
        Buffer buffer = store.getRasterSet().clip(store.getEnvelope());
626
        params.setBuffer(buffer);
627
        serverExplorer.add(providerName, params, true);
628
    }
629

    
630
    /**
631
     * TO TEST ONLY
632
     *
633
     * @return
634
     */
635
    private void exportNetCDF(RasterStore store) throws InitializeException, ProviderNotRegisteredException,
636
        ValidateDataParametersException, DataException, BufferException {
637
        String providerName = "netCDF";
638
        String extension = "nc";
639

    
640
        DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices();
641
        DataServerExplorerParameters eparams = manager.createServerExplorerParameters("FilesystemExplorer");
642
        int count = 0;
643
        String path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile." + extension;
644
        File destFile = new File(path);
645
        while (destFile.exists()) {
646
            count++;
647
            path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile_" + count + "." + extension;
648
            destFile = new File(path);
649
        }
650
        eparams.setDynValue("initialpath", path);
651
        DataServerExplorer serverExplorer = manager.createServerExplorer(eparams);
652

    
653
        NewRasterStoreParameters params = (NewRasterStoreParameters) serverExplorer.getAddParameters(providerName);
654
        params.setDynValue("file", destFile);
655
        // params.setDynValue("format", "NC4C");
656
        // params.setDynValue("pixeltype", "DEFAULT");
657
        params.setDynValue("chunking", false);
658

    
659
        Buffer buffer = store.getRasterSet().clip(store.getEnvelope());
660
        params.setBuffer(buffer);
661
        serverExplorer.add(providerName, params, true);
662
    }
663

    
664
}