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 | } |