/* * 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(IGeoResource.class)) { return adaptee.cast(this); } if (adaptee.isAssignableFrom(IGeoResourceInfo.class)) { return adaptee.cast(createInfo(monitor)); } if (adaptee.isAssignableFrom(FeatureStore.class)) { FeatureSource<SimpleFeatureType, SimpleFeature> fs = featureSource(monitor); if (fs instanceof FeatureStore) { return adaptee.cast(fs); } } if (adaptee.isAssignableFrom(FeatureSource.class)) { return adaptee.cast(featureSource(monitor)); } if (adaptee.isAssignableFrom(IndexedShapefileDataStore.class)) { return adaptee.cast(parent.getDS(monitor)); } if (adaptee.isAssignableFrom(Style.class)) { Style style = style(monitor); if (style != null) { return adaptee.cast(style(monitor)); } // proceed to ask the super class, someone may // of written an IResolveAdapaterFactory providing us // with a style ... } return super.resolve(adaptee, monitor); }
private FeatureSource<SimpleFeatureType, SimpleFeature> featureSource(IProgressMonitor monitor) throws IOException { return parent.getDS(monitor).getFeatureSource(); }