Statistics
| Revision:

svn-gvsig-desktop / tags / v1_0_2_Build_915 / libraries / libFMap / src / com / iver / cit / gvsig / fmap / edition / IEditableSource.java @ 12217

History | View | Annotate | Download (8.03 KB)

1 3651 fjp
package com.iver.cit.gvsig.fmap.edition;
2
3
import java.io.IOException;
4
5 6356 fjp
import com.hardcode.driverManager.Driver;
6 3940 caballero
import com.hardcode.driverManager.DriverLoadException;
7 5558 fjp
import com.iver.cit.gvsig.fmap.DriverException;
8 3651 fjp
import com.iver.cit.gvsig.fmap.core.IRow;
9
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
10 6628 fjp
import com.iver.cit.gvsig.fmap.drivers.FieldDescription;
11 5558 fjp
import com.iver.cit.gvsig.fmap.drivers.ITableDefinition;
12 4120 caballero
import com.iver.cit.gvsig.fmap.edition.commands.CommandRecord;
13 4026 caballero
import com.iver.cit.gvsig.fmap.layers.FBitSet;
14 3940 caballero
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
15 3651 fjp
16
17
/**
18
 * DOCUMENT ME!
19
 *
20
 * @author $author$
21
 */
22
public interface IEditableSource {
23 5115 caballero
        /**
24 3652 fjp
     * M?todo invocado cuando se comienza la edici?n, para poner en marcha las
25
     * estructuras de datos necesarias para la misma, notificar al servidor en
26
     * protocolos en los que sea necesario, ...
27
     *
28
     * @throws EditionException Si no se logra poner la fuente de datos en
29
     *         edici?n
30
     */
31 5184 caballero
    void startEdition(int sourceType) throws EditionException;
32 3651 fjp
33 3652 fjp
    /**
34
     * Invocado cuando termina la edici?n. En funci?n de la clase concreta que
35
     * implemente este m?todo se generar? el fichero con los resultados de la
36
     * edici?n, se realizar? una transacci?n a la base de datos, etc.
37
     *
38
     * @throws EditionException Si no se consiguen llevar a cabo las
39
     *         modificaciones
40
     */
41 5184 caballero
   void stopEdition(IWriter writer, int sourceType) throws EditionException;
42 3651 fjp
43 3652 fjp
    /**
44
     * Cancela la edici?n sin escribir los cambios
45
     *
46
     * @throws IOException Si se produce un error
47
     */
48 5184 caballero
    void cancelEdition(int sourceType) throws IOException;
49 3651 fjp
50 3652 fjp
    /**
51
     * Si el ?ndice se corresponde a una geometria de las originales de la capa
52
     * en edici?n y no ha sido modificada ni eliminada devuelve la geometria
53
     * original. Si ha sido modificada debera de buscar en el fichero de
54
     * expansi?n y si ha sido eliminada debera devolver null
55
     *
56
     * @param index ?ndice de la geometr?a.
57
     *
58
     * @return Geometr?a.
59
     *
60
     * @throws IOException Si se produce un error con el fichero de expansi?n
61
     * @throws DriverIOException Si se produce un error accediendo a las
62
     *         geometr?as originales
63
     */
64 3653 fjp
    IRowEdited getRow(int index) throws DriverIOException, IOException;
65 3651 fjp
66 3652 fjp
    /**
67
     * Devuelve el n?mero de geometrias que hay actualmente en edici?n.
68
     *
69
     * @return N?mero de geometr?as.
70
     *
71 3653 fjp
     * @throws DriverIOException Si se produce un error accediendo a la capa
72 3848 caballero
     * @throws DriverException
73 3652 fjp
     */
74 3849 caballero
    int getRowCount() throws DriverIOException, IOException;
75 3651 fjp
76 3652 fjp
    /**
77
     * A?ade una geometria al fichero de expansi?n y guarda la correspondencia
78
     * en una tabla asociada.
79
     *
80
     * @param g geometr?a a guardar.
81
     *
82
     * @throws DriverIOException Si se produce un error accediendo a las
83
     *         geometr?as originales
84
     * @throws IOException Si se produce un error con el fichero de expansi?n
85
     */
86 5184 caballero
     int addRow(IRow row,String descrip, int sourceType) throws DriverIOException, IOException;
87 3651 fjp
88 3652 fjp
    /**
89
     * Deshace la ?ltima acci?n realizada. Si no hay m?s acciones no realiza
90
     * ninguna acci?n
91
     *
92
     * @throws DriverIOException Si se produce un error accediendo a las
93
     *         geometr?as originales
94
     * @throws IOException Si se produce un error con el fichero de expansi?n
95
     */
96
    void undo() throws DriverIOException, IOException;
97 3651 fjp
98 3652 fjp
    /**
99
     * Rehace la ?ltima acci?n deshecha. Si no hay m?s acciones no hace nada
100
     *
101
     * @throws DriverIOException Si se produce un error accediendo a las
102
     *         filas originales
103
     */
104
    void redo() throws DriverIOException, IOException;
105
106
    /**
107
     * Elimina una geometria. Si es una geometr?a original de la capa en
108
     * edici?n se marca como eliminada (haya sido modificada o no). Si es una
109
     * geometr?a a?adida posteriormente se invalida en el fichero de
110
     * expansi?n, para que una futura compactaci?n termine con ella.
111
     *
112
     * @param index ?ndice de la geometr?a que se quiere eliminar
113
     *
114 3653 fjp
     * @throws DriverIOException Si se produce un error accediendo a las
115 3652 fjp
     *         geometr?as originales
116
     * @throws IOException Si se produce un error con el fichero de expansi?n
117
     */
118 5184 caballero
    void removeRow(int index,String descrip, int sourceType) throws DriverIOException, IOException;
119 3652 fjp
120
    /**
121
     * Si se intenta modificar una geometr?a original de la capa en edici?n se
122
     * a?ade al fichero de expansi?n y se registra la posici?n en la que se
123
     * a?adi?. Si se intenta modificar una geometria que se encuentra en el
124
     * fichero de expansi?n (por ser nueva o original pero modificada) se
125
     * invoca el m?todo modifyGeometry y se actualiza el ?ndice de la
126
     * geometria en el fichero.
127
     *
128
     * @param index ?ndice de la geometr?a que se quiere eliminar
129 5115 caballero
     * @param type TODO
130 3652 fjp
     * @param g Geometr?a nueva
131
     * @throws IOException Si se produce un error con el fichero de expansi?n
132
     * @throws DriverIOException Si se produce un error accediendo a las
133
     *         geometr?as originales
134
     */
135 5184 caballero
    int modifyRow(int index, IRow row,String descrip, int sourceType)
136 3652 fjp
        throws IOException, DriverIOException;
137
138
139 3940 caballero
140 3652 fjp
    /**
141
     * Compacta el almacenamiento de las geometr?as que est?n en edici?n. Tras
142
     * esta operaci?n, el orden de las geometr?as seguramente cambiar? y toda
143
     * llamada a getGeometry devolver? una geometr?a distinta de null, ya que
144
     * las eliminadas son borradas definitivamente. Hay que tener especial
145
     * cuidado al invocar este m?todo ya que cualquier tipo de asociaci?n
146
     * entre geometr?as y otro tipo de objetos (comandos de edici?n, snapping,
147
     * ...) que use el ?ndice de la geometr?a se ver? afectado por ?ste m?todo
148
     */
149
    void compact();
150
151
    /**
152
     * Establece la imagen de las geometr?as seleccionadas con el fin de que en
153
     * una edici?n interactiva se pueda obtener dicha imagen para simular el
154
     * copiado, rotado, etc
155
     *
156
     * @param i imagen
157
     */
158 4727 fjp
    // void setSelectionImage(Image i);
159 3652 fjp
160
    /**
161
     * Obtiene una imagen con las geometr?as seleccionadas
162
     *
163
     * @return imagen
164
     */
165 4727 fjp
    // Image getSelectionImage();
166 3652 fjp
167
    /**
168
     * DOCUMENT ME!
169
     */
170 3721 caballero
    void startComplexRow();
171 3652 fjp
172 6071 caballero
    void endComplexRow(String description) throws IOException, DriverIOException;
173 5184 caballero
    public void undoModifyRow(int geometryIndex,int previousExpansionFileIndex, int sourceType) throws IOException, DriverIOException;
174
    public IRow doRemoveRow(int index, int sourceType)throws DriverIOException, IOException;
175
    public int doModifyRow(int index, IRow feat, int sourceType)throws IOException, DriverIOException;
176
    public int doAddRow(IRow feat, int sourceType) throws DriverIOException, IOException;
177
    public void undoRemoveRow(int index, int sourceType)throws IOException, DriverIOException;
178
    public void undoAddRow(int index, int sourceType)throws DriverIOException, IOException;
179 3957 caballero
    public SelectableDataSource getRecordset() throws DriverLoadException;
180 3996 caballero
    public boolean isEditing();
181 4026 caballero
    public FBitSet getSelection();
182 4120 caballero
    public CommandRecord getCommandRecord();
183 5115 caballero
184 4832 fjp
        public void addEditionListener(IEditionListener listener);
185
186
        public void removeEditionListener(IEditionListener listener);
187 6071 caballero
188 5558 fjp
        public ITableDefinition getTableDefinition() throws DriverLoadException, com.hardcode.gdbms.engine.data.driver.DriverException;
189 6071 caballero
190 10234 caballero
        public void validateRow(IRow row, int sourceType) throws EditionException;
191
192 6212 fjp
        /**
193
         *  Use it to add, remove or rename fields. If null, you cannot modifiy the table structure
194
         *  (for example, with dxf files, dgn files, etc).
195
         *  The changes will be applied when stopEditing() is called.
196
         */
197
        public IFieldManager getFieldManager();
198 10234 caballero
199 6212 fjp
        public void saveEdits(IWriter writer, int sourceType) throws EditionException;
200 10234 caballero
201 6365 fjp
        /**
202
         * @return
203
         */
204
        public Driver getOriginalDriver();
205 10234 caballero
206 6628 fjp
        /**
207
         * Please, use this if you need support for defaultValues.
208
         * Don't user getRecordset().getFieldsDescription()!!.
209
         * The reason is ResultSetMetadata has no information about
210
         * defaultValues in fields.
211
         * @return
212
         */
213
        public FieldDescription[] getFieldsDescription();
214 5115 caballero
215 5886 fjp
216 3651 fjp
}