/** * Find a resource from its url and add it to the map * * @param url the resources url * @param progressMonitor * @param addPosition the position into which to put it, 0 is most lower * @param map the map to which to add the resource to */ public static void addResourceFromUrlToMap( URL url, IProgressMonitor progressMonitor, int addPosition, IMap map) { synchronized (url) { ICatalog catalog = CatalogPlugin.getDefault().getLocalCatalog(); // first search the local catalog. List<IResolve> matches = catalog.find(url, new SubProgressMonitor(progressMonitor, 2)); for (IResolve resolve : matches) { List<IResolve> members = null; try { List<IGeoResource> geoResources = new ArrayList<IGeoResource>(); members = resolve.members(progressMonitor); if (members.size() < 1 && resolve.canResolve(IGeoResource.class)) { // if it is a map, it has no members geoResources.add(resolve.resolve(IGeoResource.class, progressMonitor)); } else if (members.get(0).canResolve(IGeoResource.class)) { for (IResolve tmp : members) { IGeoResource finalResolve = tmp.resolve(IGeoResource.class, progressMonitor); geoResources.add(finalResolve); } } List<? extends ILayer> addedLayers = ApplicationGIS.addLayersToMap(map, geoResources, addPosition); if (addedLayers.size() == 0) { System.out.println("strange"); } } catch (IOException e) { e.printStackTrace(); } } } }