Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / edition / IEditableSource.java @ 5558

History | View | Annotate | Download (7.85 KB)

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

    
3
import java.io.IOException;
4

    
5
import com.hardcode.driverManager.DriverLoadException;
6
import com.iver.cit.gvsig.fmap.DriverException;
7
import com.iver.cit.gvsig.fmap.core.IRow;
8
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
9
import com.iver.cit.gvsig.fmap.drivers.ITableDefinition;
10
import com.iver.cit.gvsig.fmap.edition.commands.CommandRecord;
11
import com.iver.cit.gvsig.fmap.layers.FBitSet;
12
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
13

    
14

    
15
/**
16
 * DOCUMENT ME!
17
 *
18
 * @author $author$
19
 */
20
public interface IEditableSource {
21
        /**
22
     * M?todo invocado cuando se comienza la edici?n, para poner en marcha las
23
     * estructuras de datos necesarias para la misma, notificar al servidor en
24
     * protocolos en los que sea necesario, ...
25
     *
26
     * @throws EditionException Si no se logra poner la fuente de datos en
27
     *         edici?n
28
     */
29
    void startEdition(int sourceType) throws EditionException;
30

    
31
    /**
32
     * Invocado cuando termina la edici?n. En funci?n de la clase concreta que
33
     * implemente este m?todo se generar? el fichero con los resultados de la
34
     * edici?n, se realizar? una transacci?n a la base de datos, etc.
35
     *
36
     * @throws EditionException Si no se consiguen llevar a cabo las
37
     *         modificaciones
38
     */
39
   void stopEdition(IWriter writer, int sourceType) throws EditionException;
40

    
41
    /**
42
     * Cancela la edici?n sin escribir los cambios
43
     *
44
     * @throws IOException Si se produce un error
45
     */
46
    void cancelEdition(int sourceType) throws IOException;
47

    
48
    /**
49
     * Si el ?ndice se corresponde a una geometria de las originales de la capa
50
     * en edici?n y no ha sido modificada ni eliminada devuelve la geometria
51
     * original. Si ha sido modificada debera de buscar en el fichero de
52
     * expansi?n y si ha sido eliminada debera devolver null
53
     *
54
     * @param index ?ndice de la geometr?a.
55
     *
56
     * @return Geometr?a.
57
     *
58
     * @throws IOException Si se produce un error con el fichero de expansi?n
59
     * @throws DriverIOException Si se produce un error accediendo a las
60
     *         geometr?as originales
61
     */
62
    IRowEdited getRow(int index) throws DriverIOException, IOException;
63

    
64
    /**
65
     * Devuelve el n?mero de geometrias que hay actualmente en edici?n.
66
     *
67
     * @return N?mero de geometr?as.
68
     *
69
     * @throws DriverIOException Si se produce un error accediendo a la capa
70
     * @throws DriverException
71
     */
72
    int getRowCount() throws DriverIOException, IOException;
73

    
74
    /**
75
     * A?ade una geometria al fichero de expansi?n y guarda la correspondencia
76
     * en una tabla asociada.
77
     *
78
     * @param g geometr?a a guardar.
79
     *
80
     * @throws DriverIOException Si se produce un error accediendo a las
81
     *         geometr?as originales
82
     * @throws IOException Si se produce un error con el fichero de expansi?n
83
     */
84
     int addRow(IRow row,String descrip, int sourceType) throws DriverIOException, IOException;
85

    
86
    /**
87
     * Deshace la ?ltima acci?n realizada. Si no hay m?s acciones no realiza
88
     * ninguna acci?n
89
     *
90
     * @throws DriverIOException Si se produce un error accediendo a las
91
     *         geometr?as originales
92
     * @throws IOException Si se produce un error con el fichero de expansi?n
93
     */
94
    void undo() throws DriverIOException, IOException;
95

    
96
    /**
97
     * Rehace la ?ltima acci?n deshecha. Si no hay m?s acciones no hace nada
98
     *
99
     * @throws DriverIOException Si se produce un error accediendo a las
100
     *         filas originales
101
     */
102
    void redo() throws DriverIOException, IOException;
103

    
104
    /**
105
     * Devuelve true si se puede deshacer un comando invocando undo o si por el
106
     * contrario se ha llegado al principio de la lista de comandos y ya no se
107
     * pueden deshacer m?s comandos
108
     *
109
     * @return boolean
110
     */
111
    boolean moreUndoCommands();
112

    
113
    /**
114
     * Devuelve true si se puede rehacer un comando invocando redo o si por el
115
     * contrario se est? al final de la lista de comandos y ya no se pueden
116
     * deshacer m?s comandos
117
     *
118
     * @return boolean
119
     */
120
    boolean moreRedoCommands();
121

    
122
    /**
123
     * Elimina una geometria. Si es una geometr?a original de la capa en
124
     * edici?n se marca como eliminada (haya sido modificada o no). Si es una
125
     * geometr?a a?adida posteriormente se invalida en el fichero de
126
     * expansi?n, para que una futura compactaci?n termine con ella.
127
     *
128
     * @param index ?ndice de la geometr?a que se quiere eliminar
129
     *
130
     * @throws DriverIOException Si se produce un error accediendo a las
131
     *         geometr?as originales
132
     * @throws IOException Si se produce un error con el fichero de expansi?n
133
     */
134
    void removeRow(int index,String descrip, int sourceType) throws DriverIOException, IOException;
135

    
136
    /**
137
     * Si se intenta modificar una geometr?a original de la capa en edici?n se
138
     * a?ade al fichero de expansi?n y se registra la posici?n en la que se
139
     * a?adi?. Si se intenta modificar una geometria que se encuentra en el
140
     * fichero de expansi?n (por ser nueva o original pero modificada) se
141
     * invoca el m?todo modifyGeometry y se actualiza el ?ndice de la
142
     * geometria en el fichero.
143
     *
144
     * @param index ?ndice de la geometr?a que se quiere eliminar
145
     * @param type TODO
146
     * @param g Geometr?a nueva
147
     * @throws IOException Si se produce un error con el fichero de expansi?n
148
     * @throws DriverIOException Si se produce un error accediendo a las
149
     *         geometr?as originales
150
     */
151
    int modifyRow(int index, IRow row,String descrip, int sourceType)
152
        throws IOException, DriverIOException;
153

    
154

    
155

    
156
    /**
157
     * Compacta el almacenamiento de las geometr?as que est?n en edici?n. Tras
158
     * esta operaci?n, el orden de las geometr?as seguramente cambiar? y toda
159
     * llamada a getGeometry devolver? una geometr?a distinta de null, ya que
160
     * las eliminadas son borradas definitivamente. Hay que tener especial
161
     * cuidado al invocar este m?todo ya que cualquier tipo de asociaci?n
162
     * entre geometr?as y otro tipo de objetos (comandos de edici?n, snapping,
163
     * ...) que use el ?ndice de la geometr?a se ver? afectado por ?ste m?todo
164
     */
165
    void compact();
166

    
167
    /**
168
     * Establece la imagen de las geometr?as seleccionadas con el fin de que en
169
     * una edici?n interactiva se pueda obtener dicha imagen para simular el
170
     * copiado, rotado, etc
171
     *
172
     * @param i imagen
173
     */
174
    // void setSelectionImage(Image i);
175

    
176
    /**
177
     * Obtiene una imagen con las geometr?as seleccionadas
178
     *
179
     * @return imagen
180
     */
181
    // Image getSelectionImage();
182

    
183
    /**
184
     * DOCUMENT ME!
185
     */
186
    void startComplexRow();
187

    
188
    /**
189
     * DOCUMENT ME!
190
     *
191
     * @throws IOException DOCUMENT ME!
192
     * @throws DriverIOException DOCUMENT ME!
193
     */
194
    void endComplexRow() throws IOException, DriverIOException;
195
    public void undoModifyRow(int geometryIndex,int previousExpansionFileIndex, int sourceType) throws IOException, DriverIOException;
196
    public IRow doRemoveRow(int index, int sourceType)throws DriverIOException, IOException;
197
    public int doModifyRow(int index, IRow feat, int sourceType)throws IOException, DriverIOException;
198
    public int doAddRow(IRow feat, int sourceType) throws DriverIOException, IOException;
199
    public void undoRemoveRow(int index, int sourceType)throws IOException, DriverIOException;
200
    public void undoAddRow(int index, int sourceType)throws DriverIOException, IOException;
201
    public SelectableDataSource getRecordset() throws DriverLoadException;
202
    public boolean isEditing();
203
    public FBitSet getSelection();
204
    public CommandRecord getCommandRecord();
205

    
206
        public void addEditionListener(IEditionListener listener);
207

    
208
        public void removeEditionListener(IEditionListener listener);
209
        
210
        public IWriter getWriter();
211
        public ITableDefinition getTableDefinition() throws DriverLoadException, com.hardcode.gdbms.engine.data.driver.DriverException;
212

    
213
}