Statistics
| Revision:

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

History | View | Annotate | Download (5.1 KB)

1
/* Generated by Together */
2

    
3
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
4
 *
5
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
6
 *
7
 * This program is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU General Public License
9
 * as published by the Free Software Foundation; either version 2
10
 * of the License, or (at your option) any later version.
11
 *
12
 * This program is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 * GNU General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU General Public License
18
 * along with this program; if not, write to the Free Software
19
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
20
 *
21
 * For more information, contact:
22
 *
23
 *  Generalitat Valenciana
24
 *   Conselleria d'Infraestructures i Transport
25
 *   Av. Blasco Ib??ez, 50
26
 *   46010 VALENCIA
27
 *   SPAIN
28
 *
29
 *      +34 963862235
30
 *   gvsig@gva.es
31
 *      www.gvsig.gva.es
32
 *
33
 *    or
34
 *
35
 *   IVER T.I. S.A
36
 *   Salamanca 50
37
 *   46005 Valencia
38
 *   Spain
39
 *
40
 *   +34 963163400
41
 *   dac@iver.es
42
 */
43
package com.iver.cit.gvsig.fmap.write;
44

    
45
import com.iver.cit.gvsig.fmap.core.IGeometry;
46
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
47
/**
48
 * 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
49
 */
50
public class ExtensibleFile {
51
    /**
52
     * Crea un fichero temporal y lo abre para escritura
53
     */
54
    public void open() throws DriverIOException{ }
55

    
56
    /**
57
     * Cierra el fichero abierto con create
58
     */
59
    public void close() throws DriverIOException{ }
60

    
61
    /**
62
     * Mete el ?ndice en el bitset deleted para saber que dicho registro est? eliminado
63
     */
64
    public int deleteGeometry(int id){
65
            //TODO implementar bien
66
            return -1;
67
    }
68

    
69
    /**
70
     * 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.
71
     */
72
    public void setGeometry(int index, IGeometry g){ }
73

    
74
    /**
75
     * 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. 
76
     */
77
    public int addGeometry(IGeometry g) {
78
            //TODO implementar bien
79
            return -1;
80
    }
81

    
82
    /**
83
     * 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
84
     */
85
    public IGeometry modifyGeometry(int i, IGeometry g){
86
            //TODO implementar bien
87
            return null;
88
    }
89

    
90
    /**
91
     * Deshace la eliminaci?n de la geometr?a. El par?metro que se pasa es el ?ndice del registro eliminado.
92
     */
93
    public void restoreGeometry(int i, int type) {
94
    }
95

    
96
    /**
97
     * Comprime el fichero ya que las features modificadas pueden estar encadenadas en m?s de un registro.
98
     */
99
    public void compact() {
100
    }
101

    
102
    /**
103
     * 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. 
104
     */
105
    public IGeometry getShape(int index) throws DriverIOException{
106
            //TODO implementar bien
107
            return null;
108
    }
109

    
110
    /**
111
     * Devuelve el n?mero de registros del fichero contando los que ya han sido eliminados
112
     */
113
    public int getShapeCount() throws DriverIOException{
114
            //TODO implementar bien
115
            return -1;
116
    }
117

    
118
    private static int MODIFIED = 1000;
119
    private int shapeCount;
120

    
121
    /**
122
     * ?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. 
123
     */
124
    private int firstGeometry;
125
}