Statistics
| Revision:

root / trunk / libraries / libRaster / src / org / gvsig / raster / RasterLibrary.java @ 11207

History | View | Annotate | Download (3.47 KB)

1
package org.gvsig.raster;
2

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

    
6
import org.gvsig.raster.dataset.io.EcwDriver;
7
import org.gvsig.raster.dataset.io.GdalDriver;
8
import org.gvsig.raster.dataset.io.GdalWriter;
9
import org.gvsig.raster.dataset.io.MemoryRasterDriver;
10

    
11
/**
12
 * 
13
 * @author Nacho Brodin (nachobrodin@gmail.com)
14
 *
15
 */
16
public class RasterLibrary {
17
        public static ArrayList readersClassList = new ArrayList();
18
        public static ArrayList writersClassList = new ArrayList();
19
        
20
        /**
21
         * En la generaci?n autom?tica de clases esta variable representa el n?mero de
22
         * clases en las que se hace la divisi?n.
23
         */
24
        public static int defaultNumberOfClasses = 64;
25
        /**
26
         * Tama?o de bloque en los procesos que recorren un raster completo a base de ventanas con recorrido 
27
         * descendente. Esta variable indica la altura de dicho bloque. Por lo tanto cada bloque ser? de 
28
         * raster.width X blockHeight. Tipicamente recorridos de este tipo se usan para el calculo de estad?sticas, 
29
         * histogramas, etc...
30
         */
31
        public static int blockHeight = 512;
32
        
33
        //*************CACHE*******************
34
        /**
35
         * Tama?o aproximado de cach? en Megas. Si este valor es alto cabr?n muchas p?ginas en memoria 
36
         * a la vez y si es bajo cabr?n pocas. Hay que tener en cuenta que al instanciar se convertira en bytes
37
         * para su mejor tratamiento. Al llamar al constructor esta variable contendr? el tama?o exacto
38
         * de la cache en bytes. El tama?o aqu? especificado es aproximado. Este variar? dependiendo de los
39
         * par?metros del raster a cachear ya que las p?ginas deben tener una altura potencia de 2.
40
         */
41
        public static long cacheSize = 40;
42
        /**
43
         * Tama?o m?ximo de la p?gina en Megas. Hay que tener en cuenta que al instanciar se convertira en bytes
44
         * para su mejor tratamiento. Al llamar al constructor esta variable contendr? el tama?o exacto
45
         * de la p?gina en bytes
46
         */
47
        public static double pageSize = 4;
48
        /**
49
         * N?mero de p?ginas que tiene cada conjunto de cach?
50
         */
51
        public static int pagsPerGroup = 5;
52
        
53
        //*************PATHS*******************
54
        
55
        /**
56
         * Directorio temporal para la cach?. Si gastamos el mismo que andami este se ocupar? de gestionar su
57
         * destrucci?n al cerrar gvSIG.
58
         */
59
        public static String tempCacheDirectoryPath = System.getProperty("java.io.tmpdir")+"/tmp-andami";
60
        
61
        /**
62
         * Ejecuta las acciones necesarias para arrancar la librer?a.
63
         */
64
        public static void wakeUp(){
65
                readersClassList.add(GdalDriver.class);
66
                readersClassList.add(EcwDriver.class);
67
                readersClassList.add(MemoryRasterDriver.class);
68
                writersClassList.add(GdalWriter.class);
69
                
70
                //Limpiamos el directorio temporal
71
                RasterLibrary.cleanUpTempFiles();
72
        }
73
        
74
        /**
75
         * Elimina los ficheros del directorio temporal. Realizamos esta acci?n al levantar la
76
         * librer?a.
77
         */
78
         public static void cleanUpTempFiles() {
79
                    try{
80
                            File tempDirectory = new File(tempCacheDirectoryPath);
81

    
82
                            File[] files = tempDirectory.listFiles();
83
                            if (files!=null) {
84
                                    for (int i = 0; i < files.length; i++) {
85
                                             // s?lo por si en un futuro se necesitan crear directorios temporales
86
                                            if (files[i].isDirectory())        deleteDirectory(files[i]);
87
                                            files[i].delete();
88
                                    }
89
                            }
90
                            tempDirectory.delete();
91
                    } catch (Exception e) {        }
92

    
93
         }
94
         
95
         /**
96
          * Recursive directory delete.
97
          * @param f
98
          */
99
         private static void deleteDirectory(File f) {
100
                 File[] files = f.listFiles();
101
                 for (int i = 0; i < files.length; i++) {
102
                         if (files[i].isDirectory()) deleteDirectory(files[i]);
103
                         files[i].delete();
104
                 }
105

    
106
         }
107
}