Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libFMap_data / src / org / gvsig / data / DataManager.java @ 20851

History | View | Annotate | Download (5.39 KB)

1 19399 vcaballero
package org.gvsig.data;
2
3
import java.util.ArrayList;
4
import java.util.Iterator;
5
6 19442 vcaballero
import org.gvsig.data.exception.InitializeException;
7 19399 vcaballero
8 19908 vcaballero
public class DataManager {
9 19399 vcaballero
        private static ArrayList registers = new ArrayList();
10
11 19908 vcaballero
        private static DataManager manager = null;
12 19399 vcaballero
13 19908 vcaballero
        public static DataManager getManager() {
14 19399 vcaballero
                if( manager == null ) {
15 19908 vcaballero
                        manager = new DataManager();
16 19399 vcaballero
                }
17
                return manager;
18
        }
19
20
        public static ResourceManager getResourceManager() {
21
                return ResourceManager.getResourceManager();
22
        }
23
24 19908 vcaballero
        public DataManager() {
25 19399 vcaballero
//                org.gvsig.data.datastores.vectorial.driver.shp.Register.selfRegister();
26
//                org.gvsig.data.datastores.vectorial.driver.Register.selfRegister();
27
28
//                org.gvsig.data.datastores.gml.Register.selfRegister();
29
        }
30
31
        public void registerGeometryHandler(String dataStoreID, Class geometryHandlerClass) {
32
33
        }
34
35
        public void registerDataStore(String name, Class dataStoreClass, Class parametersClass) {
36
                RegisterInfo register=new RegisterInfo(name,dataStoreClass,parametersClass);
37 19616 jmvivo
                if (registers.contains(register)){
38
                        return;
39
                }
40 19399 vcaballero
                registers.add(register);
41
        }
42
        /**
43
         * Levanta una instancia de los parametros solicitados
44
         * inicializa el nombre en la instancia
45
         * y la devuelve.
46
         **/
47
        public IDataStoreParameters createDataStoreParameters(String name){
48
                Iterator iterator=registers.iterator();
49
                while (iterator.hasNext()) {
50
                        RegisterInfo registerInfo = (RegisterInfo) iterator.next();
51
                        if (name.equals(registerInfo.name)){
52
                                try {
53
                                        return (IDataStoreParameters)registerInfo.parametersClazz.newInstance();
54
                                } catch (InstantiationException e) {
55
                                        // TODO Auto-generated catch block
56
                                        e.printStackTrace();
57
                                } catch (IllegalAccessException e) {
58
                                        // TODO Auto-generated catch block
59
                                        e.printStackTrace();
60
                                }
61
                        }
62
                }
63
                return null;
64
        }
65
        /**
66
         * Levanta la instancia del datasource,
67
         * levanta una instancia del driver que precisa el datasource
68
         * y por ultimo invoca al metodo init del datasource.
69 19442 vcaballero
         * @throws InitializeException
70 19399 vcaballero
         **/
71 19442 vcaballero
        public IDataStore createDataStore(IDataStoreParameters parameters) throws InitializeException {
72 19399 vcaballero
                Iterator iterator=registers.iterator();
73
                while (iterator.hasNext()) {
74
                        RegisterInfo registerInfo = (RegisterInfo) iterator.next();
75 20088 jmvivo
                        if (parameters.getDataStoreName().equals(registerInfo.name)){
76 19399 vcaballero
                                try {
77
                                        IDataStore dataStore= (IDataStore)registerInfo.clazz.newInstance();
78
                                        dataStore.init(parameters);
79
                                        return dataStore;
80
                                } catch (InstantiationException e) {
81
                                        // TODO Auto-generated catch block
82
                                        e.printStackTrace();
83
                                } catch (IllegalAccessException e) {
84
                                        // TODO Auto-generated catch block
85
                                        e.printStackTrace();
86
                                }
87
                        }
88
                }
89
                return null;
90
        }
91
92
93
        /* Como conjunto de propiedades genericas a un tipo de DataStore
94
         * a las que se puede acceder sin tener que crear un DataStore/Driver.
95
         *
96
         * Por ejemplo para "DriverDataSource.shp" podria tener el
97
         * tamaƱo de identificador de campo.
98
         *
99
         * En "DriverDataSource.postgres" podria aportar informacion sobre
100
         * las tablas disponibles o cosas asi. Hay que ver que precisa
101
         * GeoDB y de donde lo puede obtener.
102
         *
103
         * Hay que pensarlo bien.
104
         *
105
         */
106
107 20084 jmvivo
        public void registerDataExplorer(String name, Class dataSourceClass, Class parametersClass) {
108 19399 vcaballero
                RegisterInfo register=new RegisterInfo(name,dataSourceClass,parametersClass);
109 19616 jmvivo
                if (registers.contains(register)){
110
                        return;
111
                }
112 19399 vcaballero
                registers.add(register);
113
        }
114
        /**
115
         * Levanta una instancia de los parametros solicitados
116
         * inicializa el nombre en la instancia
117
         * y la devuelve.
118
         **/
119 19908 vcaballero
        public IDataExplorerParameters createDataExplorerParameters(String name){
120 19399 vcaballero
                Iterator iterator=registers.iterator();
121
                while (iterator.hasNext()) {
122
                        RegisterInfo registerInfo = (RegisterInfo) iterator.next();
123
                        if (name.equals(registerInfo.name)){
124
                                try {
125 19908 vcaballero
                                        return (IDataExplorerParameters)registerInfo.parametersClazz.newInstance();
126 19399 vcaballero
                                } catch (InstantiationException e) {
127
                                        // TODO Auto-generated catch block
128
                                        e.printStackTrace();
129
                                } catch (IllegalAccessException e) {
130
                                        // TODO Auto-generated catch block
131
                                        e.printStackTrace();
132
                                }
133
                        }
134
                }
135
                return null;
136
        }
137
138 20084 jmvivo
        public IDataExplorer createDataExplorer(IDataExplorerParameters parameters) throws InitializeException {
139 19399 vcaballero
                Iterator iterator=registers.iterator();
140
                while (iterator.hasNext()) {
141
                        RegisterInfo registerInfo = (RegisterInfo) iterator.next();
142 20088 jmvivo
                        if (parameters.getDataExplorerName().equals(registerInfo.name)){
143 19399 vcaballero
                                try {
144 19908 vcaballero
                                        IDataExplorer dataSource= (IDataExplorer)registerInfo.clazz.newInstance();
145 19399 vcaballero
                                        dataSource.init(parameters);
146
                                        return dataSource;
147
                                } catch (InstantiationException e) {
148
                                        // TODO Auto-generated catch block
149
                                        e.printStackTrace();
150
                                } catch (IllegalAccessException e) {
151
                                        // TODO Auto-generated catch block
152
                                        e.printStackTrace();
153
                                }
154
                        }
155
                }
156
157
                return null;
158
        }
159
        private class RegisterInfo{
160
                private String name;
161
                private Class clazz;
162
                private Class parametersClazz;
163
164
                public RegisterInfo(String name, Class dsc, Class pc){
165
                        this.name=name;
166
                        this.clazz=dsc;
167
                        this.parametersClazz=pc;
168
                }
169
170 19616 jmvivo
                public boolean equals(Object obj) {
171
                        if (obj instanceof RegisterInfo){
172
                                RegisterInfo ri = (RegisterInfo)obj;
173
                                return ri.name.equals(this.name) &&
174
                                        ri.clazz.equals(this.clazz) &&
175
                                        ri.parametersClazz.equals(this.parametersClazz);
176
                        }
177
                        return super.equals(obj);
178
                }
179
180
181
182 19399 vcaballero
        }
183
184
}