Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libTools / src / org / gvsig / tools / extensionpoint2 / ExtensionPoint.java @ 24092

History | View | Annotate | Download (8.92 KB)

1
package org.gvsig.tools.extensionpoint2;
2

    
3
import java.lang.reflect.InvocationTargetException;
4
import java.util.Iterator;
5
import java.util.List;
6
import java.util.Map;
7

    
8
public interface ExtensionPoint {
9

    
10
        /**
11
         * Clase que representa un registro dentro de un punto de extension.
12
         *
13
         * @author jjdelcerro
14
         *
15
         */
16
        public interface Extension {
17

    
18
                /**
19
                 * Obtiene Nombre de la extension registrada.
20
                 *
21
                 * @return
22
                 */
23
                public String getName();
24

    
25
                /**
26
                 * Obtienen la descripcion de la extension registrada.
27
                 *
28
                 * @return
29
                 */
30
                public String getDescription();
31

    
32
                /**
33
                 * Obtiene la lista de alias que existen para este registro de
34
                 * extension.
35
                 *
36
                 * @return
37
                 */
38
                public List getAlias();
39

    
40
                /**
41
                 * Inica si el registro de la extension contiene una clase o una
42
                 * instancia que actua como factoria. En caso de que contenga una
43
                 * instancia esta implementara el interface ExtensionBuilder.
44
                 *
45
                 * @return true si el registro uso un ExtensioBuilder en lugar de una
46
                 *         clase.
47
                 */
48
                public boolean isBuilder();
49

    
50
                /**
51
                 * Obtiene la clase asociada a este registro de extension.
52
                 *
53
                 * @return la clase o null si isBuilder retorna true.
54
                 */
55
                public Class getExtension();
56

    
57
                /**
58
                 * Obtiene la instancia del ExtenstionBuilder asociada a este registro.
59
                 *
60
                 * @return una instancia de ExtensionBuilder o null si isBuilder retorna
61
                 *         false.
62
                 */
63
                public ExtensionBuilder getBuilder();
64
        }
65

    
66
        /**
67
         * Obtiene el nombre del punto de extension. El nombre de un punto de
68
         * extension se fija en la creacion de este y no puede ser modificado
69
         * posteriormente.
70
         *
71
         * @return
72
         */
73
        public String getName();
74

    
75
        /**
76
         * Obtiene la descripcion del punto de extension.
77
         *
78
         * @return
79
         */
80
        public String getDescription();
81

    
82
        /**
83
         * Permite actualizar la descripcion del punto de extension.
84
         *
85
         * @param description
86
         */
87
        public void setDescription(String description);
88

    
89
        /**
90
         * A?ade una extension nueva basada en una clase al registro de extensiones.
91
         * La nueva extension se a?adira al final de las ya existentes.
92
         *
93
         * @param name
94
         *            , nombre de la extension
95
         * @param description
96
         *            , descripcion de la extenscion.
97
         * @param extension
98
         *            , clase que implementa esa extension
99
         * @return una instancia de la extension creada.
100
         */
101
        public Extension append(String name, String description, Class extension);
102

    
103
        /**
104
         * A?ade una extension nueva basada en ExtensioBuilder al registro de
105
         * extensiones. La nueva extension se a?adira al final de las ya existentes.
106
         *
107
         * @param name
108
         *            , nombre de la extension
109
         * @param description
110
         *            , descripcion de la extenscion.
111
         * @param builder
112
         *            , instancia de ExtensionBuilder usada para crear la extension.
113
         * @return una instancia de la extension creada.
114
         */
115
        public Extension append(String name, String description,
116
                        ExtensionBuilder builder);
117

    
118
        /**
119
         * A?ade una extension nueva basada en una clase al registro de extensiones.
120
         * La nueva extension se insertara al principio de las ya existentes.
121
         *
122
         * @param name
123
         *            , nombre de la extension
124
         * @param description
125
         *            , descripcion de la extenscion.
126
         * @param extension
127
         *            , clase que implementa esa extension
128
         * @return una instancia de la extension creada.
129
         */
130
        public Extension insert(String name, String description, Class extension);
131

    
132
        /**
133
         * A?ade una extension nueva basada en ExtensioBuilder al registro de
134
         * extensiones. La nueva extension se insertara al principio de las ya
135
         * existentes.
136
         *
137
         * @param name
138
         *            , nombre de la extension
139
         * @param description
140
         *            , descripcion de la extenscion.
141
         * @param builder
142
         *            , instancia de ExtensionBuilder usada para crear la extension.
143
         * @return una instancia de la extension creada.
144
         */
145
        public Extension insert(String name, String description,
146
                        ExtensionBuilder builder);
147

    
148
        /**
149
         * A?ade una extension nueva basada en una clase al registro de extensiones.
150
         * La nueva extension se insertara antes de la extension registrada con el
151
         * nombre indicado en beforeName.
152
         *
153
         * @param beforeName
154
         *            , nombre de la extension delante de la que se insertara la
155
         *            nueva.
156
         * @param name
157
         *            , nombre de la extension
158
         * @param description
159
         *            , descripcion de la extenscion.
160
         * @param extension
161
         *            , clase que implementa esa extension
162
         * @return una instancia de la extension creada.
163
         */
164
        public Extension insert(String beforeName, String name, String description,
165
                        Class extension);
166

    
167
        /**
168
         * A?ade una extension nueva basada en ExtensioBuilder al registro de
169
         * extensiones. La nueva extension se insertara antes de la extension
170
         * registrada con el nombre indicado en beforeName.
171
         *
172
         * @param beforeName
173
         *            , nombre de la extension delante de la que se insertara la
174
         *            nueva.
175
         * @param name
176
         *            , nombre de la extension
177
         * @param description
178
         *            , descripcion de la extenscion.
179
         * @param builder
180
         *            , instancia de ExtensionBuilder usada para crear la extension.
181
         * @return una instancia de la extension creada.
182
         */
183
        public Extension insert(String beforeName, String name, String description,
184
                        ExtensionBuilder builder);
185

    
186
        /**
187
         * Crea un alias para un registro de extension.
188
         *
189
         * @param name
190
         *            , nombre de la extension sobre la que se va a a?adir un alias.
191
         * @param alias
192
         *            , alias a crear.
193
         * @return
194
         */
195
        public boolean addAlias(String name, String alias);
196

    
197
        /**
198
         * Devuelbe un iterador sobre las extensiones registradas en este punto de
199
         * extension.
200
         *
201
         * @return
202
         */
203
        public Iterator iterator();
204

    
205
        /**
206
         * Devuelbe una lista con los nombres de las extensiones registradas en el
207
         * punto de extension.
208
         *
209
         * @return
210
         */
211
        public List getNames();
212

    
213
        /**
214
         * Devuelbe el numero de registros que existen en el punto de extension.
215
         *
216
         * @return
217
         */
218
        public int getCount();
219

    
220
        /**
221
         * Permite obtener un registro de extension dado su nombre o alias.
222
         *
223
         * @param name
224
         *            , nombre o alias de la extension
225
         * @return extension pedida o null si no existe una con el nombre o alias
226
         *         indicado.
227
         */
228
        public Extension get(String name);
229

    
230
        /**
231
         * Crea una instancia asociada al contenido del registro de extension de
232
         * nombre o alias indicado. Si el registro tiene asociada una clase creara
233
         * una nueva instancia de esta y la devolbera. Si tiene asociado un builder
234
         * lo usara para construir una instancia y la devolvera.
235
         *
236
         * @param name
237
         *            , de la entrada del registro de la que queremos obtener la
238
         *            instancia.
239
         * @return instancia creada o null si no existen una con el nombre o alias
240
         *         indicado.
241
         * @throws InstantiationException
242
         * @throws IllegalAccessException
243
         */
244
        public Object create(String name) throws InstantiationException,
245
                        IllegalAccessException;
246

    
247
        /**
248
         * Crea una instancia asociada al contenido del registro de extension de
249
         * nombre o alias indicado. Si el registro tiene asociada una clase creara
250
         * una nueva instancia de esta y la devolbera. Si tiene asociado un builder
251
         * lo usara para construir una instancia y la devolvera.
252
         * 
253
         * 
254
         * @param name
255
         *            , de la entrada del registro de la que queremos obtener la
256
         *            instancia.
257
         * @param args
258
         *            , representa un array con los parametros a suministrar en la
259
         *            creacion de la nueva instancia.
260
         * @return instancia creada o null si no existen una con el nombre o alias
261
         *         indicado.
262
         * @throws SecurityException
263
         * @throws IllegalArgumentException
264
         * @throws NoSuchMethodException
265
         * @throws InstantiationException
266
         * @throws IllegalAccessException
267
         * @throws InvocationTargetException
268
         */
269
        public Object create(String name, Object[] args) throws SecurityException,
270
                        IllegalArgumentException, NoSuchMethodException,
271
                        InstantiationException, IllegalAccessException,
272
                        InvocationTargetException;
273

    
274
        /**
275
         * Crea una instancia asociada al contenido del registro de extension de
276
         * nombre o alias indicado. Si el registro tiene asociada una clase creara
277
         * una nueva instancia de esta y la devolbera. Si tiene asociado un builder
278
         * lo usara para construir una instancia y la devolvera.
279
         * 
280
         * 
281
         * @param name
282
         *            , de la entrada del registro de la que queremos obtener la
283
         *            instancia.
284
         * @param args
285
         *            , representa un map que se pasara como primer parametro en la
286
         *            construccion de la instancia.
287
         * @return instancia creada o null si no existen una con el nombre o alias
288
         *         indicado.
289
         * @throws SecurityException
290
         * @throws IllegalArgumentException
291
         * @throws NoSuchMethodException
292
         * @throws InstantiationException
293
         * @throws IllegalAccessException
294
         * @throws InvocationTargetException
295
         */
296
        public Object create(String name, Map args) throws SecurityException,
297
                        IllegalArgumentException, NoSuchMethodException,
298
                        InstantiationException, IllegalAccessException,
299
                        InvocationTargetException;
300

    
301

    
302
}