Statistics
| Revision:

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

History | View | Annotate | Download (16.6 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
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.tools;
25

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

    
46
public class ToolsLocator extends AbstractLocator {
47

    
48
        private static final String LOCATOR_NAME = "ToolsLocator";
49

    
50
        public static final String PERSISTENCE_MANAGER_NAME =
51
                        "org.gvsig.tools.persistence.manager";
52

    
53
        private static final String PERSISTENCE_MANAGER_DESCRIPTION =
54
                        "Persistence Manager of gvSIG";
55

    
56
        public static final String OPERATION_MANAGER_NAME =
57
                        "org.gvsig.tools.operation.manager";
58

    
59
        private static final String OPERATION_MANAGER_DESCRIPTION =
60
                        "Operation Manager of gvSIG";
61

    
62
        public static final String DYNOBJECT_MANAGER_NAME =
63
                        "org.gvsig.tools.dynobject.manager";
64

    
65
        private static final String DYNOBJECT_MANAGER_DESCRIPTION =
66
                        "DynObject Manager of gvSIG";
67

    
68
        public static final String DISPOSABLE_MANAGER_NAME =
69
                        "org.gvsig.tools.dispose.manager";
70

    
71
        private static final String DISPOSABLE_MANAGER_DESCRIPTION =
72
                "Disposable Manager";
73

    
74
        public static final String DATATYPES_MANAGER_NAME =
75
                "org.gvsig.tools.datatypes.manager";
76

    
77
        private static final String DATATYPES_MANAGER_DESCRIPTION =
78
                "Datatypes Manager";
79

    
80
        public static final String SERVICE_LOADER_NAME =
81
                        "org.gvsig.tools.service.loader";
82

    
83
        private static final String SERVICE_LOADER_DESCRIPTION =
84
                        "Default Service Loader";
85

    
86
        public static final String I18N_MANAGER_NAME =
87
                "org.gvsig.tools.i18n.manager";
88

    
89
        private static final String I18N_MANAGER_DESCRIPTION =
90
                "Default I18n Manager";
91

    
92
        public static final String TASKSTATUS_MANAGER_NAME =
93
                "org.gvsig.tools.taststatus.manager";
94

    
95
        private static final String TASKSTATUS_MANAGER_DESCRIPTION =
96
                "Default Tast Status Manager";
97

    
98
        public static final String PACKAGE_MANAGER_NAME =
99
                        "org.gvsig.tools.package.manager";
100

    
101
        private static final String PACKAGE_MANAGER_DESCRIPTION =
102
                        "Default Package Manager";
103

    
104
    public static final String IDENTITY_MANAGER_NAME =
105
                        "org.gvsig.tools.identity.manager";
106

    
107
        private static final String IDENTITY_MANAGER_DESCRIPTION =
108
                        "Default Identity Manager";
109

    
110
    public static final String FIREWALL_MANAGER_NAME =
111
                        "org.gvsig.tools.firewall.manager";
112

    
113
        private static final String FIREWALL_MANAGER_DESCRIPTION =
114
                        "Default Firewall Manager";
115
/**
116
         * Unique instance.
117
         */
118
        private static final ToolsLocator instance = new ToolsLocator();
119

    
120
        // Comma list of xml pull parser factories, parsers or serializers
121
        private String xmlPullParserFactoryClassNames = ""
122
                        + "org.xmlpull.mxp1.MXParserFactory," + // MXP1 (XPP3) factory
123
                        "org.kxml2.io.KXmlParser," + // KXML2 parser
124
                        "org.kxml2.io.KXmlSerializer"; // KXML2 serializer
125

    
126
        private ToolsLocator() {
127
                // Register default ServiceLoader
128
                registerDefault(SERVICE_LOADER_NAME, SERVICE_LOADER_DESCRIPTION,
129
                                DefaultServiceLoader.class);
130
        }
131

    
132
        /**
133
         * Return the singleton instance.
134
         *
135
         * @return the singleton instance
136
         */
137
        public static ToolsLocator getInstance() {
138
                return instance;
139
        }
140

    
141
        public String getLocatorName() {
142
                return LOCATOR_NAME;
143
        }
144

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

    
159
        /**
160
         * Registers the Class implementing the PersistenceManager interface.
161
         *
162
         * @param clazz
163
         *            implementing the PersistenceManager interface
164
         */
165
        public static void registerPersistenceManager(Class clazz) {
166
                getInstance().register(PERSISTENCE_MANAGER_NAME,
167
                                PERSISTENCE_MANAGER_DESCRIPTION, clazz);
168
        }
169

    
170
        public static void registerDefaultPersistenceManager(Class clazz) {
171
                getInstance().registerDefault(PERSISTENCE_MANAGER_NAME,
172
                                PERSISTENCE_MANAGER_DESCRIPTION, clazz);
173
        }
174

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

    
189
        /**
190
         * Registers the Class implementing the OperationManager interface.
191
         *
192
         * @param clazz
193
         *            implementing the OperationManager interface
194
         */
195
        public static void registerOperationManager(Class clazz) {
196
                getInstance().register(OPERATION_MANAGER_NAME,
197
                                OPERATION_MANAGER_DESCRIPTION, clazz);
198
        }
199

    
200
        public static void registerDefaultOperationManager(Class clazz) {
201
                getInstance().registerDefault(OPERATION_MANAGER_NAME,
202
                                OPERATION_MANAGER_DESCRIPTION, clazz);
203
        }
204

    
205
        public static ExtensionPointManager getExtensionPointManager() {
206
                return DefaultExtensionPointManager.getManager();
207
        }
208

    
209
        /**
210
         * Return a reference to DynObjectManager.
211
         *
212
         * @return a reference to DynObjectManager
213
         * @throws LocatorException
214
         *             if there is no access to the class or the class cannot be
215
         *             instantiated
216
         * @see Locator#get(String)
217
         */
218
        public static DynObjectManager getDynObjectManager()
219
                        throws LocatorException {
220
                return (DynObjectManager) getInstance().get(DYNOBJECT_MANAGER_NAME);
221
        }
222

    
223
        /**
224
         * Registers the Class implementing the DynObjectManager interface.
225
         *
226
         * @param clazz
227
         *            implementing the {@link DynObjectManager} interface
228
         */
229
        public static void registerDynObjectManager(Class clazz) {
230
                getInstance().register(DYNOBJECT_MANAGER_NAME,
231
                                DYNOBJECT_MANAGER_DESCRIPTION, clazz);
232
        }
233

    
234
        /**
235
         * Return a reference to DisposableManager.
236
         *
237
         * @return a reference to {@link DisposableManager}
238
         * @throws LocatorException
239
         *             if there is no access to the class or the class cannot be
240
         *             instantiated
241
         * @see Locator#get(String)
242
         */
243
        public static DisposableManager getDisposableManager()
244
                        throws LocatorException {
245
                return (DisposableManager) getInstance().get(DISPOSABLE_MANAGER_NAME);
246
        }
247

    
248
        /**
249
         * Registers the Class implementing the DisposableManager interface.
250
         *
251
         * @param clazz
252
         *            implementing the {@link DisposableManager} interface
253
         */
254
        public static void registerDisposableManager(Class clazz) {
255
                getInstance().register(DISPOSABLE_MANAGER_NAME,
256
                                DISPOSABLE_MANAGER_DESCRIPTION, clazz);
257
        }
258

    
259
        /**
260
         * Return a reference to {@link ServiceLoader}.
261
         *
262
         * @return a reference to {@link ServiceLoader}
263
         * @throws LocatorException
264
         *             if there is no access to the class or the class cannot be
265
         *             instantiated
266
         * @see Locator#get(String)
267
         */
268
        public static ServiceLoader getServiceLoader() throws LocatorException {
269
                return (ServiceLoader) getInstance().get(SERVICE_LOADER_NAME);
270
        }
271

    
272
        /**
273
         * Registers the Class implementing the {@link ServiceLoader} interface.
274
         *
275
         * @param clazz
276
         *            implementing the {@link ServiceLoader} interface
277
         */
278
        public static void registerServiceLoader(Class clazz) {
279
                getInstance().register(SERVICE_LOADER_NAME, SERVICE_LOADER_DESCRIPTION,
280
                                clazz);
281
        }
282

    
283
        /**
284
         * Return a reference to {@link I18nManager}.
285
         *
286
         * @return a reference to {@link I18nManager}
287
         * @throws LocatorException
288
         *             if there is no access to the class or the class cannot be
289
         *             instantiated
290
         * @see Locator#get(String)
291
         */
292
        public static I18nManager getI18nManager() throws LocatorException {
293
                return (I18nManager) getInstance().get(I18N_MANAGER_NAME);
294
        }
295

    
296
        /**
297
         * Registers the Class implementing the {@link I18nManager} interface.
298
         *
299
         * @param clazz
300
         *            implementing the {@link I18nManager} interface
301
         */
302
        public static void registerI18nManager(Class clazz) {
303
                getInstance().register(I18N_MANAGER_NAME, I18N_MANAGER_DESCRIPTION,
304
                                clazz);
305
        }
306

    
307
        /**
308
         * Registers the default Class implementing the {@link I18nManager}
309
         * interface.
310
         *
311
         * @param clazz
312
         *            implementing the {@link I18nManager} interface
313
         */
314
        public static void registerDefaultI18nManager(Class clazz) {
315
                getInstance().registerDefault(I18N_MANAGER_NAME,
316
                                I18N_MANAGER_DESCRIPTION, clazz);
317
        }
318

    
319
        /**
320
         * Registers the Class implementing the DataTypesManager interface.
321
         *
322
         * @param clazz
323
         *            implementing the {@link DataTypesManag} interface
324
         */
325
        public static void registerDataTypesManager(Class clazz) {
326
                getInstance().register(DATATYPES_MANAGER_NAME,
327
                                DATATYPES_MANAGER_DESCRIPTION, clazz);
328
        }
329

    
330
        /**
331
         * Registers the default Class implementing the DataTypesManager interface.
332
         *
333
         * @param clazz
334
         *            implementing the {@link DataTypesManager} interface
335
         */
336
        public static void registerDefaultDataTypesManager(Class clazz) {
337
                getInstance().registerDefault(DATATYPES_MANAGER_NAME,
338
                                DATATYPES_MANAGER_DESCRIPTION, clazz);
339
        }
340

    
341
        /**
342
         * Return a reference to {@link DataTypesManager}.
343
         *
344
         * @return a reference to {@link DataTypesManager}
345
         * @throws LocatorException
346
         *             if there is no access to the class or the class cannot be
347
         *             instantiated
348
         * @see Locator#get(String)
349
         */
350
        public static DataTypesManager getDataTypesManager()
351
                        throws LocatorException {
352
                return (DataTypesManager) getInstance().get(DATATYPES_MANAGER_NAME);
353
        }
354

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

    
394
        /**
395
         * Sets a comma separated list of XmlPullParserFactory, XmlPullParser or
396
         * XmlSerializer implementations to be used.
397
         *
398
         * @param xmlPullParserFactoryClassNames
399
         *            the comma separated list of XmlPullParserFactory class name
400
         */
401
        public void setXmlPullParserFactoryClassNames(
402
                        String xmlPullParserFactoryClassNames) {
403
                this.xmlPullParserFactoryClassNames = xmlPullParserFactoryClassNames;
404
        }
405

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

    
417
        /**
418
         * Registers the default Class implementing the {@link TaskStatusManager} interface.
419
         *
420
         * @param clazz
421
         *            implementing the {@link TaskStatusManager} interface
422
         */
423
        public static void registerDefaultTaskStatusManager(Class clazz) {
424
                getInstance().registerDefault(TASKSTATUS_MANAGER_NAME,
425
                                TASKSTATUS_MANAGER_DESCRIPTION, clazz);
426
        }
427

    
428
        /**
429
         * Return a reference to {@link TaskStatusManager}.
430
         *
431
         * @return a reference to {@link TaskStatusManager}
432
         * @throws LocatorException
433
         *             if there is no access to the class or the class cannot be
434
         *             instantiated
435
         * @see Locator#get(String)
436
         */
437
        public static TaskStatusManager getTaskStatusManager()
438
                        throws LocatorException {
439
                return (TaskStatusManager) getInstance().get(TASKSTATUS_MANAGER_NAME);
440
        }
441

    
442

    
443

    
444
        /**
445
         * Registers the Class implementing the {@link PackageManager} interface.
446
         *
447
         * @param clazz
448
         *            implementing the {@link PackageManager} interface
449
         */
450
        public static void registerPackageManager(Class clazz) {
451
                getInstance().register(PACKAGE_MANAGER_NAME,
452
                                PACKAGE_MANAGER_DESCRIPTION, clazz);
453
        }
454
        /**
455
         * Registers the default Class implementing the {@link PackageManager} interface.
456
         *
457
         * @param clazz
458
         *            implementing the {@link PackageManager} interface
459
         */
460
        public static void registerDefaultPackageManager(Class clazz) {
461
                getInstance().registerDefault(PACKAGE_MANAGER_NAME,
462
                                PACKAGE_MANAGER_DESCRIPTION, clazz);
463
        }
464

    
465
        /**
466
         * Return a reference to {@link PackageManager}.
467
         *
468
         * @return a reference to {@link PackageManager}
469
         * @throws LocatorException
470
         *             if there is no access to the class or the class cannot be
471
         *             instantiated
472
         * @see Locator#get(String)
473
         */
474
        public static PackageManager getPackageManager()
475
                        throws LocatorException {
476
                return (PackageManager) getInstance().get(PACKAGE_MANAGER_NAME);
477
        }
478

    
479
        /**
480
         * Registers the Class implementing the {@link SimpleIdentityManager} interface.
481
         *
482
         * @param clazz
483
         *            implementing the {@link SimpleIdentityManager} interface
484
         */
485
        public static void registerIdentityManager(Class clazz) {
486
                getInstance().register(IDENTITY_MANAGER_NAME,
487
                                IDENTITY_MANAGER_DESCRIPTION, clazz);
488
        }
489
        /**
490
         * Registers the default Class implementing the {@link SimpleIdentityManager} interface.
491
         *
492
         * @param clazz
493
         *            implementing the {@link SimpleIdentityManager} interface
494
         */
495
        public static void registerDefaultIdentityManager(Class clazz) {
496
                getInstance().registerDefault(IDENTITY_MANAGER_NAME,
497
                                IDENTITY_MANAGER_DESCRIPTION, clazz);
498
        }
499

    
500
        /**
501
         * Return a reference to {@link SimpleIdentityManager}.
502
         *
503
         * @return a reference to {@link SimpleIdentityManager}
504
         * @throws LocatorException
505
         *             if there is no access to the class or the class cannot be
506
         *             instantiated
507
         * @see Locator#get(String)
508
         */
509
        public static SimpleIdentityManager getIdentityManager()
510
                        throws LocatorException {
511
                return (SimpleIdentityManager) getInstance().get(IDENTITY_MANAGER_NAME);
512
        }
513

    
514
        /**
515
         * Registers the default Class implementing the FirewallManager interface.
516
         *
517
         * @param clazz
518
         *            implementing the {@link FirewallManager} interface
519
         */
520
        public static void registerDefaultFirewallManager(Class clazz) {
521
                getInstance().registerDefault(FIREWALL_MANAGER_NAME,
522
                                FIREWALL_MANAGER_DESCRIPTION, clazz);
523
        }
524

    
525
        /**
526
         * Return a reference to {@link FirewallManager}.
527
         *
528
         * @return a reference to {@link FirewallManager}
529
         * @throws LocatorException
530
         *             if there is no access to the class or the class cannot be
531
         *             instantiated
532
         * @see Locator#get(String)
533
         */
534
        public static DataTypesManager getFirewallManager()
535
                        throws LocatorException {
536
                return (DataTypesManager) getInstance().get(FIREWALL_MANAGER_NAME);
537
        }
538

    
539

    
540
}