Statistics
| Revision:

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

History | View | Annotate | Download (7.51 KB)

1 3651 fjp
package com.iver.cit.gvsig.fmap.edition;
2
3 3652 fjp
import java.awt.Image;
4 3721 caballero
import java.awt.geom.Rectangle2D;
5 3651 fjp
import java.io.IOException;
6
7 3940 caballero
import com.hardcode.driverManager.DriverLoadException;
8
import com.hardcode.gdbms.engine.data.DataSource;
9 3651 fjp
import com.iver.cit.gvsig.fmap.core.IRow;
10
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
11 4120 caballero
import com.iver.cit.gvsig.fmap.edition.commands.CommandRecord;
12 4026 caballero
import com.iver.cit.gvsig.fmap.layers.FBitSet;
13 3940 caballero
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
14 3651 fjp
15
16
/**
17
 * DOCUMENT ME!
18
 *
19
 * @author $author$
20
 */
21
public interface IEditableSource {
22 3652 fjp
    /**
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() throws EditionException;
31 3651 fjp
32 3652 fjp
    /**
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 3848 caballero
   void stopEdition(IWriter writer) throws EditionException;
41 3651 fjp
42 3652 fjp
    /**
43
     * Cancela la edici?n sin escribir los cambios
44
     *
45
     * @throws IOException Si se produce un error
46
     */
47
    void cancelEdition() throws IOException;
48 3651 fjp
49 3652 fjp
    /**
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 3653 fjp
    IRowEdited getRow(int index) throws DriverIOException, IOException;
64 3651 fjp
65 3652 fjp
    /**
66
     * Devuelve el n?mero de geometrias que hay actualmente en edici?n.
67
     *
68
     * @return N?mero de geometr?as.
69
     *
70 3653 fjp
     * @throws DriverIOException Si se produce un error accediendo a la capa
71 3848 caballero
     * @throws DriverException
72 3652 fjp
     */
73 3849 caballero
    int getRowCount() throws DriverIOException, IOException;
74 3651 fjp
75 3652 fjp
    /**
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 4553 caballero
     int addRow(IRow row,String descrip) throws DriverIOException, IOException;
86 3651 fjp
87 3652 fjp
    /**
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 3651 fjp
97 3652 fjp
    /**
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 3653 fjp
     * @throws DriverIOException Si se produce un error accediendo a las
132 3652 fjp
     *         geometr?as originales
133
     * @throws IOException Si se produce un error con el fichero de expansi?n
134
     */
135 4120 caballero
    void removeRow(int index,String descrip) throws DriverIOException, IOException;
136 3652 fjp
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 g Geometr?a nueva
147
     *
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 4637 caballero
    int modifyRow(int index, IRow row,String descrip)
153 3652 fjp
        throws IOException, DriverIOException;
154
155
156 3940 caballero
157 3652 fjp
    /**
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 4727 fjp
    // void setSelectionImage(Image i);
176 3652 fjp
177
    /**
178
     * Obtiene una imagen con las geometr?as seleccionadas
179
     *
180
     * @return imagen
181
     */
182 4727 fjp
    // Image getSelectionImage();
183 3652 fjp
184
    /**
185
     * DOCUMENT ME!
186
     */
187 3721 caballero
    void startComplexRow();
188 3652 fjp
189
    /**
190
     * DOCUMENT ME!
191
     *
192
     * @throws IOException DOCUMENT ME!
193
     * @throws DriverIOException DOCUMENT ME!
194
     */
195 3721 caballero
    void endComplexRow() throws IOException, DriverIOException;
196 3836 caballero
    public void undoModifyRow(int geometryIndex,int previousExpansionFileIndex) throws IOException, DriverIOException;
197 4191 fjp
    public IRow doRemoveRow(int index)throws DriverIOException, IOException;
198 3848 caballero
    public int doModifyRow(int index, IRow feat)throws IOException, DriverIOException;
199
    public int doAddRow(IRow feat) throws DriverIOException, IOException;
200 3836 caballero
    public void undoRemoveRow(int index)throws IOException, DriverIOException;
201
    public void undoAddRow(int index)throws DriverIOException, IOException;
202 3957 caballero
    public SelectableDataSource getRecordset() throws DriverLoadException;
203 3996 caballero
    public boolean isEditing();
204 4026 caballero
    public FBitSet getSelection();
205 4120 caballero
    public CommandRecord getCommandRecord();
206 4832 fjp
207
        public void addEditionListener(IEditionListener listener);
208
209
        public void removeEditionListener(IEditionListener listener);
210
211 3651 fjp
}