Statistics
| Revision:

root / branches / FMap_CAD / libraries / libFMap / src / com / iver / cit / gvsig / fmap / edition / ExpansionFile.java @ 3513

History | View | Annotate | Download (2.95 KB)

1
package com.iver.cit.gvsig.fmap.edition;
2

    
3
import com.iver.cit.gvsig.fmap.core.IGeometry;
4

    
5
import java.io.IOException;
6

    
7
import java.util.HashMap;
8

    
9

    
10
/**
11
 * Maneja el fichero de extensi?n en el que se almacenan las modificacionesy
12
 * adici?nes durante la edici?n. Los ?ndices que devuelve esta clase en sus
13
 * m?todos addGeometry y modifyGeometry son invariables, es decir, que si se
14
 * invoca un m?todo addGeometry que retorna un 8, independientemente de las
15
 * operaciones que se realicen posteriormente, una llamada a getGeometry(8)
16
 * retornar? dicha geometr?a. Si esta geometr?a es eliminada posteriormente,
17
 * se retornar? un null. Esto ?ltimo se cumple mientras no se invoque el
18
 * m?todo compact, mediante el que se reorganizan las geometr?as dejando en el
19
 * fichero s?lo las que tienen validez en el momento de realizar la
20
 * invocaci?n.
21
 */
22
public interface ExpansionFile {
23
    /**
24
     * A?ade una geometria al final del fichero y retorna el ?ndice que ocupa
25
     * esta geometria en el mismo
26
     *
27
     * @param g DOCUMENT ME!
28
     *
29
     * @return DOCUMENT ME!
30
     *
31
     * @throws IOException
32
     */
33
    int addGeometry(IGeometry g) throws IOException;
34

    
35
    /**
36
     * Modifica la index-?sima geometr?a del fichero devolviendo la posici?n en
37
     * la que se pone la geometria modificada.
38
     *
39
     * @param index DOCUMENT ME!
40
     * @param g DOCUMENT ME!
41
     *
42
     * @return DOCUMENT ME!
43
     *
44
     * @throws IOException
45
     */
46
    int modifyGeometry(int index, IGeometry g) throws IOException;
47

    
48
    /**
49
     * Obtiene la geometria que hay en el ?ndice 'index' o null si la geometr?a
50
     * ha sido invalidada.
51
     *
52
     * @param index DOCUMENT ME!
53
     *
54
     * @return DOCUMENT ME!
55
     *
56
     * @throws IOException
57
     */
58
    IGeometry getGeometry(int index) throws IOException;
59

    
60
    /**
61
     * Invalida una geometr?a, de cara a una futura compactaci?n del fichero
62
     *
63
     * @param index DOCUMENT ME!
64
     */
65
    void invalidateGeometry(int index);
66

    
67
    /**
68
     * Valida una geometr?a, de cara a una futura compactaci?n del fichero
69
     *
70
     * @param index ?ndice de la geometr?a a desmarcar como invalidada.
71
     */
72
    void validateGeometry(int index);
73

    
74
    /**
75
     * Realiza una compactaci?n del fichero que maneja esta clase
76
     *
77
     * @param relations DOCUMENT ME!
78
     */
79
    void compact(HashMap relations);
80

    
81
    /**
82
     * Devuelve el n?mero de geometr?as del fichero.
83
     *
84
     * @return n?mero de geometr?as.
85
     */
86
    int getGeometryCount();
87

    
88
    /**
89
     * Mueve el puntero de escritura de manera que las siguientes escrituras
90
     * machacar?n la ?ltima geometr?a
91
     */
92
    void deleteLastGeometry();
93

    
94
    /**
95
     * Abre el fichero de expansi?n para comenzar la edici?n
96
     *
97
     * @throws IOException Si se produce alg?n error al abrir
98
     */
99
    void open() throws IOException;
100

    
101
    /**
102
     * Cierra el fichero de expansi?n al terminar la edici?n
103
     *
104
     * @throws IOException Si se produce alg?n error
105
     */
106
    void close() throws IOException;
107
}