Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_dal / src / org / gvsig / fmap / dal / DALLibrary.java @ 25957

History | View | Annotate | Download (2.58 KB)

1
package org.gvsig.fmap.dal;
2

    
3
import org.gvsig.fmap.dal.feature.FeatureStore;
4
import org.gvsig.fmap.dal.impl.DefaultDataManager;
5
import org.gvsig.fmap.dal.resource.ResourceManager;
6
import org.gvsig.fmap.dal.resource.impl.DefaultResourceManager;
7
import org.gvsig.tools.ToolsLibrary;
8
import org.gvsig.tools.ToolsLocator;
9
import org.gvsig.tools.dynobject.DynClass;
10
import org.gvsig.tools.dynobject.DynField;
11
import org.gvsig.tools.dynobject.DynObjectManager;
12
import org.gvsig.tools.locator.BaseLibrary;
13
import org.gvsig.tools.locator.ReferenceNotRegisteredException;
14

    
15
/**
16
 * Initializes gvSIG's desktop DAL by registering the default implementation for {@link DataManager}
17
 * and {@link ResourceManager}.
18
 *
19
 */
20
public class DALLibrary extends BaseLibrary {
21

    
22
    public void initialize() throws ReferenceNotRegisteredException {
23
        super.initialize();
24
                ToolsLibrary toolsLib = new ToolsLibrary();
25

    
26
                toolsLib.initialize();
27
                toolsLib.postInitialize();
28

    
29
                DALLocator.registerDefaultDataManager(DefaultDataManager.class);
30
                DALLocator.registerResourceManager(DefaultResourceManager.class);
31

    
32
                DynObjectManager dynManager = ToolsLocator.getDynObjectManager();
33

    
34
                DynField field;
35
                DynClass dataStoreDynClass = dynManager.get(DataStore.DYNCLASS_NAME);
36

    
37
                if (dataStoreDynClass == null) {
38
                        dataStoreDynClass = dynManager.add(DataStore.DYNCLASS_NAME);
39

    
40
                        field = dataStoreDynClass.addDynField("DefaultSRS");
41
                        field.setType(DataTypes.SRSID);
42
                        field.setDescription("Spatial Referencing System");
43

    
44
                        field = dataStoreDynClass.addDynField("Envelope");
45
                        field.setType(DataTypes.OBJECT); // FIXME ???
46
                        field.setDescription("Envelope");
47
                }
48

    
49
                DynClass featureStoreDynClass = dynManager
50
                                .get(FeatureStore.DYNCLASS_NAME);
51

    
52
                if (featureStoreDynClass == null) {
53
                        featureStoreDynClass = dynManager.add(FeatureStore.DYNCLASS_NAME);
54

    
55
                        featureStoreDynClass.extend(dataStoreDynClass);
56

    
57
                        //                        XXX ???
58
                        //                        field = featureStoreDynClass.addDynField("nativeGeometrySupported");
59
                        //                        field.setType(DataTypes.STRING);
60
                        //                        field.setDescription("Goemtry data type is supported natively");
61
                }
62

    
63
        }
64

    
65
        public void postInitialize() {
66
                super.postInitialize();
67

    
68
                // Validate there is any implementation registered.
69
                DataManager dataManager = DALLocator.getDataManager();
70
                if (dataManager == null) {
71
                        throw new ReferenceNotRegisteredException(
72
                                        DALLocator.DATA_MANAGER_NAME, DALLocator.getInstance());
73
                }
74

    
75
                ResourceManager resourceManager = DALLocator.getResourceManager();
76
                if (resourceManager == null) {
77
                        throw new ReferenceNotRegisteredException(
78
                                        DALLocator.RESOURCE_MANAGER_NAME, DALLocator.getInstance());
79
                }
80
        }
81

    
82
}