Statistics
| Revision:

root / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / write / ExtensibleFile.java @ 1029

History | View | Annotate | Download (3.91 KB)

1
/* Generated by Together */
2

    
3
package com.iver.cit.gvsig.fmap.write;
4

    
5
import com.iver.cit.gvsig.fmap.core.IGeometry;
6
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
7
/**
8
 * Clase que representa el fichero donde se pueden meter features creadas por el usuario durante la edici?n. Si se elimina una geometr?a se marca como eliminada. La geometria sigue estando pero se devuelve una geometria nula si se accede a tal geometria. Si se a?ade, se a?ade al final del fichero y si se modifica se pone el shapetype a MODIFIED y a continuaci?n del shapetype se pone el n?mero de registro donde se inserta la modificaci?n. Hay que destacar que un ExtensibleFile no deja de crecer. Si hay n features, y se eliminan 2, sigue habiendo n features, aunque algunas de ellas sean null. Esto se hace con la finalidad de que los ?ndices en los que a?aden las features no cambien por eliminaciones de otras features
9
 */
10
public class ExtensibleFile {
11
    /**
12
     * Crea un fichero temporal y lo abre para escritura
13
     */
14
    public void open() throws DriverIOException{ }
15

    
16
    /**
17
     * Cierra el fichero abierto con create
18
     */
19
    public void close() throws DriverIOException{ }
20

    
21
    /**
22
     * Mete el ?ndice en el bitset deleted para saber que dicho registro est? eliminado
23
     */
24
    public int deleteGeometry(int id){
25
            //TODO implementar bien
26
            return -1;
27
    }
28

    
29
    /**
30
     * A?ade la feature en la posici?n index del fichero. Puede darse que la posici?n no sea la ?ltima del fichero, en cuyo caso se copiar? en dicho registro la geometr?a si cabe y lanzar? una excepci?n en caso de que no pueda. Generalmente se debe de invocar ?ste m?todo con un ?ndice distinto al ?ltimo en un marco de comandos con opci?n de deshacer.
31
     */
32
    public void setGeometry(int index, IGeometry g){ }
33

    
34
    /**
35
     * A?ade una geometr?a al final del fichero y devuelve la posici?n que ocupa. Dicha posici?n no es valida despues de que se haya eliminado alguna geometry del fichero. 
36
     */
37
    public int addGeometry(IGeometry g) {
38
            //TODO implementar bien
39
            return -1;
40
    }
41

    
42
    /**
43
     * Marca la feature i-esima del fichero como modificada (MODIFED), y a continuaci?n del shapetype mete un entero con el n?mero de registro de la feature modificada. Inserta la feature modificada al final del fichero. Llama al m?todo addGeometry(int) para esto ?ltimo. Retorna la geometry que se va a sustituir
44
     */
45
    public IGeometry modifyGeometry(int i, IGeometry g){
46
            //TODO implementar bien
47
            return null;
48
    }
49

    
50
    /**
51
     * Deshace la eliminaci?n de la geometr?a. El par?metro que se pasa es el ?ndice del registro eliminado.
52
     */
53
    public void restoreGeometry(int i, int type) {
54
    }
55

    
56
    /**
57
     * Comprime el fichero ya que las features modificadas pueden estar encadenadas en m?s de un registro.
58
     */
59
    public void compact() {
60
    }
61

    
62
    /**
63
     * Accede al registro index-?simo del fichero y se cuenta el n?mero de registros eliminados anteriores a dicho registro (n). Se accede al registro (index+n) y se cuentan nuevamente el n?mero de registros eliminados entre index y index+n (m). Se accede a (index+n+m) y asi sucesivamente, hasta que se estabiliza la operaci?n. Entonces se lee el registro y si el shapetype es MODIFIED se salta a la direcci?n siguiente sucesivamente hasta que se encuentra el registro correcto. 
64
     */
65
    public IGeometry getShape(int index) throws DriverIOException{
66
            //TODO implementar bien
67
            return null;
68
    }
69

    
70
    /**
71
     * Devuelve el n?mero de registros del fichero contando los que ya han sido eliminados
72
     */
73
    public int getShapeCount() throws DriverIOException{
74
            //TODO implementar bien
75
            return -1;
76
    }
77

    
78
    private static int MODIFIED = 1000;
79
    private int shapeCount;
80

    
81
    /**
82
     * ?ndice de la primera feature del fichero. En un fichero de extensi?n valdr? el n?mero de features que tenga el ReadableVectorial que se extiende y en un fichero de edici?n valdr? 0. 
83
     */
84
    private int firstGeometry;
85
}