Revision 33664 branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/impl/DefaultDataManager.java

View differences:

DefaultDataManager.java
12 12
import org.gvsig.fmap.dal.DataServerExplorer;
13 13
import org.gvsig.fmap.dal.DataServerExplorerParameters;
14 14
import org.gvsig.fmap.dal.DataStore;
15
import org.gvsig.fmap.dal.DataStoreFactory;
15 16
import org.gvsig.fmap.dal.DataStoreParameters;
16 17
import org.gvsig.fmap.dal.NewDataStoreParameters;
17 18
import org.gvsig.fmap.dal.exception.DataException;
......
32 33
import org.gvsig.fmap.dal.feature.spi.cache.FeatureCacheProviderFactory;
33 34
import org.gvsig.fmap.dal.feature.spi.index.FeatureIndexProvider;
34 35
import org.gvsig.fmap.dal.feature.spi.index.FeatureIndexProviderServices;
35
import org.gvsig.fmap.dal.raster.impl.DefaultCoverageStore;
36 36
import org.gvsig.fmap.dal.raster.spi.CoverageStoreProvider;
37 37
import org.gvsig.fmap.dal.resource.ResourceManager;
38 38
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
......
73 73
	final static private String DATA_MANAGER_EXPRESION_EVALUATOR = "Data.manager.expresion.evaluator";
74 74
	final static private String DATA_MANAGER_EXPRESION_EVALUATOR_DEFAULT = "default";
75 75
	final static private String DATA_MANAGER_EXPRESION_EVALUATOR_DESCRIPTION = "DAL expresion evaluators.";
76
	
77
	final static private String DATA_MANAGER_STORE_FACTORY = "Data.manager.stores.factory";
78
	final static private String DATA_MANAGER_STORE_FACTORY_DESCRIPTION = "DAL stores factories";
76 79

  
77 80
	/** This map contains the name of the default provider for each data type */
78 81
	private Map defaultDataIndexProviders;
......
177 180
				DATA_MANAGER_STORE_PARAMS_DESCRIPTION).append(name, null,
178 181
				parametersClass);
179 182
	}
183
	
184
	/*
185
	 * (non-Javadoc)
186
	 * @see org.gvsig.fmap.dal.spi.DataManagerProviderServices#registerStoreFactory(java.lang.String, java.lang.Class)
187
	 */
188
	public void registerStoreFactory(String name, Class storeProviderClass) {
189
		if (name == null || storeProviderClass == null) {
190
			// FIXME Exception
191
			throw new IllegalArgumentException("Any parameters can be null");
192
		}
180 193

  
194
		if(!(DataStoreFactory.class.isAssignableFrom(storeProviderClass))) {
195
			// FIXME Exception
196
			throw new IllegalArgumentException(
197
					"Not supported implemtation: name=" + name
198
							+ " provider class=" + storeProviderClass.getName());
199
		}
200

  
201
		ToolsLocator.getExtensionPointManager().add(DATA_MANAGER_STORE_FACTORY,
202
				DATA_MANAGER_STORE_FACTORY_DESCRIPTION).append(name, null,
203
				storeProviderClass);
204
	}
205

  
181 206
	public DataStoreParameters createStoreParameters(String name)
182 207
			throws InitializeException, ProviderNotRegisteredException {
183 208
		try {
......
220 245
		}
221 246

  
222 247
		if (CoverageStoreProvider.class.isAssignableFrom(providerClass)) {
223
			store = new DefaultCoverageStore();
224

  
248
			ExtensionPoint.Extension point = ToolsLocator.getExtensionPointManager().
249
				get(DATA_MANAGER_STORE_FACTORY).get(name);
250
			DataStoreFactory factory = null;
251
			try {
252
				factory = (DataStoreFactory)point.create();
253
			} catch (InstantiationException e) {
254
				throw new InitializeException(e);
255
			} catch (IllegalAccessException e) {
256
				throw new InitializeException(e);
257
			}
258
			factory.setParameters(parameters);
259
			store = factory.createStore();
225 260
		} else if (FeatureStoreProvider.class.isAssignableFrom(providerClass)) {
226 261

  
227 262
			store = new DefaultFeatureStore();

Also available in: Unified diff