Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.lib / src / main / java / org / gvsig / tools / ToolsLocator.java @ 1405

History | View | Annotate | Download (19.2 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or modify it under
7
 * the terms of the GNU General Public License as published by the Free Software
8
 * Foundation; either version 2 of the License, or (at your option) any later
9
 * version.
10
 *
11
 * This program is distributed in the hope that it will be useful, but WITHOUT
12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
14
 * details.
15
 *
16
 * You should have received a copy of the GNU General Public License along with
17
 * this program; if not, write to the Free Software Foundation, Inc., 51
18
 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us at info AT
21
 * gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.tools;
24

    
25
import org.gvsig.tools.dataTypes.DataTypesManager;
26
import org.gvsig.tools.dispose.DisposableManager;
27
import org.gvsig.tools.dynobject.DynObjectManager;
28
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
29
import org.gvsig.tools.extensionpoint.impl.DefaultExtensionPointManager;
30
import org.gvsig.tools.firewall.FirewallConfiguration;
31
import org.gvsig.tools.i18n.I18nManager;
32
import org.gvsig.tools.identitymanagement.SimpleIdentityManager;
33
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
34
import org.gvsig.tools.locator.AbstractLocator;
35
import org.gvsig.tools.locator.Locator;
36
import org.gvsig.tools.locator.LocatorException;
37
import org.gvsig.tools.operations.OperationManager;
38
import org.gvsig.tools.packageutils.PackageManager;
39
import org.gvsig.tools.persistence.PersistenceManager;
40
import org.gvsig.tools.script.ScriptManager;
41
import org.gvsig.tools.task.TaskStatusManager;
42
import org.gvsig.tools.util.ServiceLoader;
43
import org.gvsig.tools.util.impl.DefaultServiceLoader;
44
import org.xmlpull.v1.XmlPullParser;
45
import org.xmlpull.v1.XmlPullParserFactory;
46
import org.xmlpull.v1.XmlSerializer;
47

    
48
public class ToolsLocator extends AbstractLocator {
49

    
50
    private static final String LOCATOR_NAME = "ToolsLocator";
51

    
52
    public static final String PERSISTENCE_MANAGER_NAME = "org.gvsig.tools.persistence.manager";
53
    private static final String PERSISTENCE_MANAGER_DESCRIPTION = "Persistence Manager of gvSIG";
54

    
55
    public static final String OPERATION_MANAGER_NAME = "org.gvsig.tools.operation.manager";
56
    private static final String OPERATION_MANAGER_DESCRIPTION = "Operation Manager of gvSIG";
57

    
58
    public static final String DYNOBJECT_MANAGER_NAME = "org.gvsig.tools.dynobject.manager";
59
    private static final String DYNOBJECT_MANAGER_DESCRIPTION = "DynObject Manager of gvSIG";
60

    
61
    public static final String DISPOSABLE_MANAGER_NAME = "org.gvsig.tools.dispose.manager";
62
    private static final String DISPOSABLE_MANAGER_DESCRIPTION = "Disposable Manager";
63

    
64
    public static final String DATATYPES_MANAGER_NAME = "org.gvsig.tools.datatypes.manager";
65
    private static final String DATATYPES_MANAGER_DESCRIPTION = "Datatypes Manager";
66

    
67
    public static final String SERVICE_LOADER_NAME = "org.gvsig.tools.service.loader";
68
    private static final String SERVICE_LOADER_DESCRIPTION = "Default Service Loader";
69

    
70
    public static final String I18N_MANAGER_NAME = "org.gvsig.tools.i18n.manager";
71
    private static final String I18N_MANAGER_DESCRIPTION = "Default I18n Manager";
72

    
73
    public static final String TASKSTATUS_MANAGER_NAME = "org.gvsig.tools.taststatus.manager";
74
    private static final String TASKSTATUS_MANAGER_DESCRIPTION = "Default Tast Status Manager";
75

    
76
    public static final String PACKAGE_MANAGER_NAME = "org.gvsig.tools.package.manager";
77
    private static final String PACKAGE_MANAGER_DESCRIPTION = "Default Package Manager";
78

    
79
    public static final String IDENTITY_MANAGER_NAME = "org.gvsig.tools.identity.manager";
80
    private static final String IDENTITY_MANAGER_DESCRIPTION = "Default Identity Manager";
81

    
82
    public static final String FIREWALL_MANAGER_NAME = "org.gvsig.tools.firewall.manager";
83
    private static final String FIREWALL_MANAGER_DESCRIPTION = "Default Firewall Manager";
84
    
85
    public static final String SCRIPT_MANAGER_NAME = "org.gvsig.tools.script.manager";
86
    private static final String SCRIPT_MANAGER_DESCRIPTION = "Default dummy script Manager";
87

    
88
    /**
89
     * Unique instance.
90
     */
91
    private static final ToolsLocator instance = new ToolsLocator();
92

    
93
    // Comma list of xml pull parser factories, parsers or serializers
94
    private String xmlPullParserFactoryClassNames = ""
95
            + "org.xmlpull.mxp1.MXParserFactory," + // MXP1 (XPP3) factory
96
            "org.kxml2.io.KXmlParser," + // KXML2 parser
97
            "org.kxml2.io.KXmlSerializer"; // KXML2 serializer
98

    
99
    private ToolsLocator() {
100
        // Register default ServiceLoader
101
        registerDefault(SERVICE_LOADER_NAME, SERVICE_LOADER_DESCRIPTION,
102
                DefaultServiceLoader.class);
103
    }
104

    
105
    /**
106
     * Return the singleton instance.
107
     *
108
     * @return the singleton instance
109
     */
110
    public static ToolsLocator getInstance() {
111
        return instance;
112
    }
113

    
114
    public String getLocatorName() {
115
        return LOCATOR_NAME;
116
    }
117

    
118
    /**
119
     * Return a reference to PersistenceManager.
120
     *
121
     * @return a reference to PersistenceManager
122
     * @throws LocatorException if there is no access to the class or the class
123
     * cannot be instantiated
124
     * @see Locator#get(String)
125
     */
126
    public static PersistenceManager getPersistenceManager()
127
            throws LocatorException {
128
        return (PersistenceManager) getInstance().get(PERSISTENCE_MANAGER_NAME);
129
    }
130

    
131
    /**
132
     * Registers the Class implementing the PersistenceManager interface.
133
     *
134
     * @param clazz implementing the PersistenceManager interface
135
     */
136
    public static void registerPersistenceManager(Class clazz) {
137
        getInstance().register(PERSISTENCE_MANAGER_NAME,
138
                PERSISTENCE_MANAGER_DESCRIPTION, clazz);
139
    }
140

    
141
    public static void registerDefaultPersistenceManager(Class clazz) {
142
        getInstance().registerDefault(PERSISTENCE_MANAGER_NAME,
143
                PERSISTENCE_MANAGER_DESCRIPTION, clazz);
144
    }
145

    
146
    /**
147
     * Return a reference to OperationManager.
148
     *
149
     * @return a reference to OperationManager
150
     * @throws LocatorException if there is no access to the class or the class
151
     * cannot be instantiated
152
     * @see Locator#get(String)
153
     */
154
    public static OperationManager getOperationManager()
155
            throws LocatorException {
156
        return (OperationManager) getInstance().get(OPERATION_MANAGER_NAME);
157
    }
158

    
159
    /**
160
     * Registers the Class implementing the OperationManager interface.
161
     *
162
     * @param clazz implementing the OperationManager interface
163
     */
164
    public static void registerOperationManager(Class clazz) {
165
        getInstance().register(OPERATION_MANAGER_NAME,
166
                OPERATION_MANAGER_DESCRIPTION, clazz);
167
    }
168

    
169
    public static void registerDefaultOperationManager(Class clazz) {
170
        getInstance().registerDefault(OPERATION_MANAGER_NAME,
171
                OPERATION_MANAGER_DESCRIPTION, clazz);
172
    }
173

    
174
    public static ExtensionPointManager getExtensionPointManager() {
175
        return DefaultExtensionPointManager.getManager();
176
    }
177

    
178
    /**
179
     * Return a reference to DynObjectManager.
180
     *
181
     * @return a reference to DynObjectManager
182
     * @throws LocatorException if there is no access to the class or the class
183
     * cannot be instantiated
184
     * @see Locator#get(String)
185
     */
186
    public static DynObjectManager getDynObjectManager()
187
            throws LocatorException {
188
        return (DynObjectManager) getInstance().get(DYNOBJECT_MANAGER_NAME);
189
    }
190

    
191
    /**
192
     * Registers the Class implementing the DynObjectManager interface.
193
     *
194
     * @param clazz implementing the {@link DynObjectManager} interface
195
     */
196
    public static void registerDynObjectManager(Class clazz) {
197
        getInstance().register(DYNOBJECT_MANAGER_NAME,
198
                DYNOBJECT_MANAGER_DESCRIPTION, clazz);
199
    }
200

    
201
    /**
202
     * Return a reference to DisposableManager.
203
     *
204
     * @return a reference to {@link DisposableManager}
205
     * @throws LocatorException if there is no access to the class or the class
206
     * cannot be instantiated
207
     * @see Locator#get(String)
208
     */
209
    public static DisposableManager getDisposableManager()
210
            throws LocatorException {
211
        return (DisposableManager) getInstance().get(DISPOSABLE_MANAGER_NAME);
212
    }
213

    
214
    /**
215
     * Registers the Class implementing the DisposableManager interface.
216
     *
217
     * @param clazz implementing the {@link DisposableManager} interface
218
     */
219
    public static void registerDisposableManager(Class clazz) {
220
        getInstance().register(DISPOSABLE_MANAGER_NAME,
221
                DISPOSABLE_MANAGER_DESCRIPTION, clazz);
222
    }
223

    
224
    /**
225
     * Return a reference to {@link ServiceLoader}.
226
     *
227
     * @return a reference to {@link ServiceLoader}
228
     * @throws LocatorException if there is no access to the class or the class
229
     * cannot be instantiated
230
     * @see Locator#get(String)
231
     */
232
    public static ServiceLoader getServiceLoader() throws LocatorException {
233
        return (ServiceLoader) getInstance().get(SERVICE_LOADER_NAME);
234
    }
235

    
236
    /**
237
     * Registers the Class implementing the {@link ServiceLoader} interface.
238
     *
239
     * @param clazz implementing the {@link ServiceLoader} interface
240
     */
241
    public static void registerServiceLoader(Class clazz) {
242
        getInstance().register(SERVICE_LOADER_NAME, SERVICE_LOADER_DESCRIPTION,
243
                clazz);
244
    }
245

    
246
    /**
247
     * Return a reference to {@link I18nManager}.
248
     *
249
     * @return a reference to {@link I18nManager}
250
     * @throws LocatorException if there is no access to the class or the class
251
     * cannot be instantiated
252
     * @see Locator#get(String)
253
     */
254
    public static I18nManager getI18nManager() throws LocatorException {
255
        return (I18nManager) getInstance().get(I18N_MANAGER_NAME);
256
    }
257

    
258
    /**
259
     * Registers the Class implementing the {@link I18nManager} interface.
260
     *
261
     * @param clazz implementing the {@link I18nManager} interface
262
     */
263
    public static void registerI18nManager(Class clazz) {
264
        getInstance().register(I18N_MANAGER_NAME, I18N_MANAGER_DESCRIPTION,
265
                clazz);
266
    }
267

    
268
    /**
269
     * Registers the default Class implementing the {@link I18nManager}
270
     * interface.
271
     *
272
     * @param clazz implementing the {@link I18nManager} interface
273
     */
274
    public static void registerDefaultI18nManager(Class clazz) {
275
        getInstance().registerDefault(I18N_MANAGER_NAME,
276
                I18N_MANAGER_DESCRIPTION, clazz);
277
    }
278

    
279
    /**
280
     * Return a reference to {@link ScriptManager}.
281
     *
282
     * @return a reference to {@link ScriptManager}
283
     * @throws LocatorException if there is no access to the class or the class
284
     * cannot be instantiated
285
     * @see Locator#get(String)
286
     */
287
    public static ScriptManager getScriptManager() throws LocatorException {
288
        return (ScriptManager) getInstance().get(SCRIPT_MANAGER_NAME);
289
    }
290

    
291
    /**
292
     * Registers the Class implementing the {@link ScriptManager} interface.
293
     *
294
     * @param clazz implementing the {@link ScriptManager} interface
295
     */
296
    public static void registerScriptManager(Class clazz) {
297
        getInstance().register(SCRIPT_MANAGER_NAME, SCRIPT_MANAGER_DESCRIPTION,
298
                clazz);
299
    }
300

    
301
    /**
302
     * Registers the default Class implementing the {@link ScriptManager}
303
     * interface.
304
     *
305
     * @param clazz implementing the {@link ScriptManager} interface
306
     */
307
    public static void registerDefaultScriptManager(Class clazz) {
308
        getInstance().registerDefault(SCRIPT_MANAGER_NAME,
309
                SCRIPT_MANAGER_DESCRIPTION, clazz);
310
    }
311

    
312
    /**
313
     * Registers the Class implementing the DataTypesManager interface.
314
     *
315
     * @param clazz implementing the {@link DataTypesManag} interface
316
     */
317
    public static void registerDataTypesManager(Class clazz) {
318
        getInstance().register(DATATYPES_MANAGER_NAME,
319
                DATATYPES_MANAGER_DESCRIPTION, clazz);
320
    }
321

    
322
    /**
323
     * Registers the default Class implementing the DataTypesManager interface.
324
     *
325
     * @param clazz implementing the {@link DataTypesManager} interface
326
     */
327
    public static void registerDefaultDataTypesManager(Class clazz) {
328
        getInstance().registerDefault(DATATYPES_MANAGER_NAME,
329
                DATATYPES_MANAGER_DESCRIPTION, clazz);
330
    }
331

    
332
    /**
333
     * Return a reference to {@link DataTypesManager}.
334
     *
335
     * @return a reference to {@link DataTypesManager}
336
     * @throws LocatorException if there is no access to the class or the class
337
     * cannot be instantiated
338
     * @see Locator#get(String)
339
     */
340
    public static DataTypesManager getDataTypesManager()
341
            throws LocatorException {
342
        return (DataTypesManager) getInstance().get(DATATYPES_MANAGER_NAME);
343
    }
344

    
345
    /**
346
     * Returns the comma separated list of XmlPullParserFactory, XmlPullParser
347
     * or XmlSerializer implementations to be used.
348
     * <p>
349
     * This parameter must be passed to the {@link XmlPullParserFactory} class
350
     * to get an instance of the factory with an available implementation. That
351
     * class will use the list to try to instance the classes included, and will
352
     * use the first one available in the list order.
353
     * </p>
354
     * <p>
355
     * <strong>Example getting an {@link XmlPullParser}:</strong>
356
     *
357
     * <pre>
358
     * XmlPullParserFactory factory = XmlPullParserFactory.newInstance(ToolsLocator
359
     *                 .getInstance().getXmlPullParserFactoryClassNames(), null);
360
     *
361
     * XmlPullParser xpp = factory.newPullParser();
362
     * </pre>
363
     *
364
     * </p>
365
     * <p>
366
     * <strong>Example getting an {@link XmlSerializer}:</strong>
367
     *
368
     * <pre>
369
     * XmlPullParserFactory factory = XmlPullParserFactory.newInstance(ToolsLocator
370
     *                 .getInstance().getXmlPullParserFactoryClassNames(), null);
371
     *
372
     * XmlSerializer serializer = factory.newSerializer();
373
     * </pre>
374
     *
375
     * </p>
376
     *
377
     * @return the xmlPullParserFactoryClassNames
378
     * @see XmlPullParserFactory#newInstance(String, Class).
379
     */
380
    public String getXmlPullParserFactoryClassNames() {
381
        return xmlPullParserFactoryClassNames;
382
    }
383

    
384
    /**
385
     * Sets a comma separated list of XmlPullParserFactory, XmlPullParser or
386
     * XmlSerializer implementations to be used.
387
     *
388
     * @param xmlPullParserFactoryClassNames the comma separated list of
389
     * XmlPullParserFactory class name
390
     */
391
    public void setXmlPullParserFactoryClassNames(
392
            String xmlPullParserFactoryClassNames) {
393
        this.xmlPullParserFactoryClassNames = xmlPullParserFactoryClassNames;
394
    }
395

    
396
    /**
397
     * Registers the Class implementing the {@link TaskStatusManager} interface.
398
     *
399
     * @param clazz implementing the {@link TaskStatusManager} interface
400
     */
401
    public static void registerTaskStatusManager(Class clazz) {
402
        getInstance().register(TASKSTATUS_MANAGER_NAME,
403
                TASKSTATUS_MANAGER_DESCRIPTION, clazz);
404
    }
405

    
406
    /**
407
     * Registers the default Class implementing the {@link TaskStatusManager}
408
     * interface.
409
     *
410
     * @param clazz implementing the {@link TaskStatusManager} interface
411
     */
412
    public static void registerDefaultTaskStatusManager(Class clazz) {
413
        getInstance().registerDefault(TASKSTATUS_MANAGER_NAME,
414
                TASKSTATUS_MANAGER_DESCRIPTION, clazz);
415
    }
416

    
417
    /**
418
     * Return a reference to {@link TaskStatusManager}.
419
     *
420
     * @return a reference to {@link TaskStatusManager}
421
     * @throws LocatorException if there is no access to the class or the class
422
     * cannot be instantiated
423
     * @see Locator#get(String)
424
     */
425
    public static TaskStatusManager getTaskStatusManager()
426
            throws LocatorException {
427
        return (TaskStatusManager) getInstance().get(TASKSTATUS_MANAGER_NAME);
428
    }
429

    
430
    /**
431
     * Registers the Class implementing the {@link PackageManager} interface.
432
     *
433
     * @param clazz implementing the {@link PackageManager} interface
434
     */
435
    public static void registerPackageManager(Class clazz) {
436
        getInstance().register(PACKAGE_MANAGER_NAME,
437
                PACKAGE_MANAGER_DESCRIPTION, clazz);
438
    }
439

    
440
    /**
441
     * Registers the default Class implementing the {@link PackageManager}
442
     * interface.
443
     *
444
     * @param clazz implementing the {@link PackageManager} interface
445
     */
446
    public static void registerDefaultPackageManager(Class clazz) {
447
        getInstance().registerDefault(PACKAGE_MANAGER_NAME,
448
                PACKAGE_MANAGER_DESCRIPTION, clazz);
449
    }
450

    
451
    /**
452
     * Return a reference to {@link PackageManager}.
453
     *
454
     * @return a reference to {@link PackageManager}
455
     * @throws LocatorException if there is no access to the class or the class
456
     * cannot be instantiated
457
     * @see Locator#get(String)
458
     */
459
    public static PackageManager getPackageManager()
460
            throws LocatorException {
461
        return (PackageManager) getInstance().get(PACKAGE_MANAGER_NAME);
462
    }
463

    
464
    /**
465
     * Registers the Class implementing the {@link SimpleIdentityManager}
466
     * interface.
467
     *
468
     * @param clazz implementing the {@link SimpleIdentityManager} interface
469
     */
470
    public static void registerIdentityManager(Class clazz) {
471
        getInstance().register(IDENTITY_MANAGER_NAME,
472
                IDENTITY_MANAGER_DESCRIPTION, clazz);
473
    }
474

    
475
    /**
476
     * Registers the default Class implementing the
477
     * {@link SimpleIdentityManager} interface.
478
     *
479
     * @param clazz implementing the {@link SimpleIdentityManager} interface
480
     */
481
    public static void registerDefaultIdentityManager(Class clazz) {
482
        getInstance().registerDefault(IDENTITY_MANAGER_NAME,
483
                IDENTITY_MANAGER_DESCRIPTION, clazz);
484
    }
485

    
486
    /**
487
     * Return a reference to {@link SimpleIdentityManager}.
488
     *
489
     * @return a reference to {@link SimpleIdentityManager}
490
     * @throws LocatorException if there is no access to the class or the class
491
     * cannot be instantiated
492
     * @see Locator#get(String)
493
     */
494
    public static SimpleIdentityManager getIdentityManager()
495
            throws LocatorException {
496
        return (SimpleIdentityManager) getInstance().get(IDENTITY_MANAGER_NAME);
497
    }
498

    
499
    /**
500
     * Registers the default Class implementing the FirewallManager interface.
501
     *
502
     * @param clazz implementing the {@link FirewallManager} interface
503
     */
504
    public static void registerDefaultFirewallManager(Class clazz) {
505
        getInstance().registerDefault(FIREWALL_MANAGER_NAME,
506
                FIREWALL_MANAGER_DESCRIPTION, clazz);
507
    }
508

    
509
    /**
510
     * Return a reference to {@link FirewallManager}.
511
     *
512
     * @return a reference to {@link FirewallManager}
513
     * @throws LocatorException if there is no access to the class or the class
514
     * cannot be instantiated
515
     * @see Locator#get(String)
516
     */
517
    public static FirewallConfiguration getFirewallManager()
518
            throws LocatorException {
519
        return (FirewallConfiguration) getInstance().get(FIREWALL_MANAGER_NAME);
520
    }
521

    
522
    public static void initializeLibraries() {
523
        new DefaultLibrariesInitializer().fullInitialize();
524
    }
525

    
526
    public static void initializeLibraries(ClassLoader classLoader, boolean ignoreerrors) {
527
        new DefaultLibrariesInitializer(classLoader).fullInitialize(ignoreerrors);
528
    }
529

    
530
}