Statistics
| Revision:

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

History | View | Annotate | Download (3 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

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

    
73
                            File[] files = tempDirectory.listFiles();
74
                            if (files!=null) {
75
                                    for (int i = 0; i < files.length; i++) {
76
                                             // s?lo por si en un futuro se necesitan crear directorios temporales
77
                                            if (files[i].isDirectory())        deleteDirectory(files[i]);
78
                                            files[i].delete();
79
                                    }
80
                            }
81
                            tempDirectory.delete();
82
                    } catch (Exception e) {        }
83

    
84
         }
85
         
86
         /**
87
          * Recursive directory delete.
88
          * @param f
89
          */
90
         private static void deleteDirectory(File f) {
91
                 File[] files = f.listFiles();
92
                 for (int i = 0; i < files.length; i++) {
93
                         if (files[i].isDirectory()) deleteDirectory(files[i]);
94
                         files[i].delete();
95
                 }
96

    
97
         }
98
}