@Override public List<Band> getBandsForProductLocation(ProductLocation location) { final List<Band> bands = new ArrayList<Band>(); Map<String, Product> products = location.getProducts(ProgressMonitor.NULL); for (Product product : products.values()) { String timeString = formatTimeString(product); // TODO relies on one timecoding per product... thats not good (mz, ts, 2010-07-12) for (Band band : tsProduct.getBands()) { if (band.getName().endsWith(timeString)) { bands.add(band); } } } return bands; }
private void reprojectProducts(List<Product> allProducts, ProgressMonitor pm) { pm.beginTask("Reprojecting source products...", allProducts.size()); try { for (Product product : allProducts) { if (pm.isCanceled()) { return; } if (!product.isCompatibleProduct(tsProduct, LAT_LON_EPSILON)) { HashMap<String, Product> productToBeReprojectedMap = new HashMap<String, Product>(); productToBeReprojectedMap.put("source", product); productToBeReprojectedMap.put("collocateWith", tsProduct); final Product collocatedProduct = GPF.createProduct("Reproject", createProjectionParameters(), productToBeReprojectedMap); collocatedProduct.setStartTime(product.getStartTime()); collocatedProduct.setEndTime(product.getEndTime()); product = collocatedProduct; } productTimeMap.put(formatTimeString(product), product); pm.worked(1); } } finally { pm.done(); } }
@Override public void removeProductLocation(ProductLocation productLocation) { // remove metadata final MetadataElement timeSeriesRootElement = tsProduct.getMetadataRoot().getElement(TIME_SERIES_ROOT_NAME); MetadataElement productLocationsElement = timeSeriesRootElement.getElement(PRODUCT_LOCATIONS); removeAttributeWithValue(PL_PATH, productLocation.getPath(), productLocationsElement); // remove variables for this productLocation updateAutoGrouping(); // TODO ??? final Band[] bands = tsProduct.getBands(); final MetadataElement sourceProductPaths = timeSeriesRootElement.getElement(SOURCE_PRODUCT_PATHS); for (Map.Entry<String, Product> productEntry : productLocation.getProducts(ProgressMonitor.NULL).entrySet()) { final Product product = productEntry.getValue(); removeAttributeWithValue(PL_PATH, productEntry.getKey(), sourceProductPaths); String timeString = formatTimeString(product); productTimeMap.remove(timeString); for (Band band : bands) { if (band.getName().endsWith(timeString)) { tsProduct.removeBand(band); } } } productLocation.closeProducts(); productLocationList.remove(productLocation); fireChangeEvent(new TimeSeriesChangeEvent(TimeSeriesChangeEvent.PROPERTY_PRODUCT_LOCATIONS, productLocationList, this)); }