Statistics
| Revision:

root / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / edition / IEditableSource.java @ 5184

History | View | Annotate | Download (7.7 KB)

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

    
3
import java.awt.Image;
4
import java.awt.geom.Rectangle2D;
5
import java.io.IOException;
6

    
7
import com.hardcode.driverManager.DriverLoadException;
8
import com.hardcode.gdbms.engine.data.DataSource;
9
import com.iver.cit.gvsig.fmap.core.IRow;
10
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
11
import com.iver.cit.gvsig.fmap.edition.commands.CommandRecord;
12
import com.iver.cit.gvsig.fmap.layers.FBitSet;
13
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
14

    
15

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

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

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

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

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

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

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

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

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

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

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

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

    
155

    
156

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

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

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

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

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

    
207
        public void addEditionListener(IEditionListener listener);
208

    
209
        public void removeEditionListener(IEditionListener listener);
210

    
211
}