Statistics
| Revision:

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

History | View | Annotate | Download (3.91 KB)

1 213 fernando
/* Generated by Together */
2
3
package com.iver.cit.gvsig.fmap.write;
4
5 305 fjp
import com.iver.cit.gvsig.fmap.core.IGeometry;
6 214 fernando
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
7 213 fernando
/**
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 214 fernando
    public int deleteGeometry(int id){
25
            //TODO implementar bien
26
            return -1;
27
    }
28 213 fernando
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 305 fjp
    public void setGeometry(int index, IGeometry g){ }
33 213 fernando
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 305 fjp
    public int addGeometry(IGeometry g) {
38 214 fernando
            //TODO implementar bien
39
            return -1;
40 213 fernando
    }
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 305 fjp
    public IGeometry modifyGeometry(int i, IGeometry g){
46 214 fernando
            //TODO implementar bien
47
            return null;
48
    }
49 213 fernando
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 305 fjp
    public IGeometry getShape(int index) throws DriverIOException{
66 214 fernando
            //TODO implementar bien
67
            return null;
68
    }
69 213 fernando
70
    /**
71
     * Devuelve el n?mero de registros del fichero contando los que ya han sido eliminados
72
     */
73 214 fernando
    public int getShapeCount() throws DriverIOException{
74
            //TODO implementar bien
75
            return -1;
76
    }
77 213 fernando
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
}