/* * Required adaptions: <ul> <li>IGeoResourceInfo.class <li>IService.class * </ul> * * @see net.refractions.udig.catalog.IResolve#resolve(java.lang.Class, * org.eclipse.core.runtime.IProgressMonitor) */ public <T> T resolve(Class<T> adaptee, IProgressMonitor monitor) throws IOException { if (adaptee == null) return null; if (adaptee.isAssignableFrom(IGeoResourceInfo.class)) { return adaptee.cast(createInfo(monitor)); } if (adaptee.isAssignableFrom(IGeoResource.class)) { return adaptee.cast(this); } JDBCDataStore dataStore = parent.getDataStore(); if (adaptee.isAssignableFrom(DataStore.class)) { return adaptee.cast(dataStore); } if (adaptee.isAssignableFrom(SimpleFeatureStore.class)) { FeatureSource<SimpleFeatureType, SimpleFeature> fs = dataStore.getFeatureSource(typename); if (fs instanceof FeatureStore) { readOnly = false; return adaptee.cast(fs); } else { readOnly = true; } if (adaptee.isAssignableFrom(SimpleFeatureSource.class)) { return adaptee.cast(dataStore.getFeatureSource(typename)); } } if (adaptee.isAssignableFrom(Connection.class)) { return service.resolve(adaptee, monitor); } return super.resolve(adaptee, monitor); }
/** * returns the schema of the GeoResource * * @return the schema of the GeoResource * @throws IOException */ public SimpleFeatureType getSchema() throws IOException { return parent.getDataStore().getSchema(typename); }