Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libRaster / src / org / gvsig / raster / RasterLibrary.java @ 11237

History | View | Annotate | Download (4.21 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
import org.gvsig.raster.util.extensionPoints.ExtensionPoint;
11
import org.gvsig.raster.util.extensionPoints.ExtensionPoints;
12
import org.gvsig.raster.util.extensionPoints.ExtensionPointsSingleton;
13

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

    
96
                            File[] files = tempDirectory.listFiles();
97
                            if (files!=null) {
98
                                    for (int i = 0; i < files.length; i++) {
99
                                             // s?lo por si en un futuro se necesitan crear directorios temporales
100
                                            if (files[i].isDirectory())        deleteDirectory(files[i]);
101
                                            files[i].delete();
102
                                    }
103
                            }
104
                            tempDirectory.delete();
105
                    } catch (Exception e) {        }
106

    
107
         }
108
         
109
         /**
110
          * Recursive directory delete.
111
          * @param f
112
          */
113
         private static void deleteDirectory(File f) {
114
                 File[] files = f.listFiles();
115
                 for (int i = 0; i < files.length; i++) {
116
                         if (files[i].isDirectory()) deleteDirectory(files[i]);
117
                         files[i].delete();
118
                 }
119

    
120
         }
121
}