public static void deleteRasterDataNode(RasterDataNode raster) { Assert.notNull(raster); List<RasterDataNode> virtualBands = getReferencedVirtualBands(raster); List<RasterDataNode> validMaskNodes = getReferencedValidMasks(raster); List<RasterDataNode> masks = getReferencedMasks(raster); RasterDataNode[] rasters = new RasterDataNode[]{raster}; String typeName = getTypeName(rasters); String message = formatPromptMessage(typeName, rasters, virtualBands, validMaskNodes, masks); deleteRasterDataNodesImpl(rasters, message); }
public static void deleteVectorDataNode(VectorDataNode vectorDataNode) { Assert.notNull(vectorDataNode); Product product = vectorDataNode.getProduct(); ProductNodeGroup<Mask> maskGroup = product.getMaskGroup(); Mask vectorMask = null; for (int i = 0; i < maskGroup.getNodeCount(); i++) { Mask mask = maskGroup.get(i); if (mask.getImageType() == Mask.VectorDataType.INSTANCE && Mask.VectorDataType.getVectorData(mask) == vectorDataNode) { vectorMask = mask; break; } } String message; if (vectorMask != null) { List<RasterDataNode> virtualBands = getReferencedVirtualBands(vectorMask); List<RasterDataNode> validMaskNodes = getReferencedValidMasks(vectorMask); List<RasterDataNode> masks = getReferencedMasks(vectorMask); VectorDataNode[] nodes = new VectorDataNode[]{vectorDataNode}; message = formatPromptMessage("Geometry", nodes, virtualBands, validMaskNodes, masks); } else { message = MessageFormat.format("Do you really want to delete the geometry ''{0}''?\nThis action cannot be undone.\n\n", vectorDataNode.getName()); } final Dialogs.Answer answer = Dialogs.requestDecision("Delete Vector Data", message, true, null); if (answer == Dialogs.Answer.YES) { product.getVectorDataGroup().remove(vectorDataNode); } }
private static List<RasterDataNode> getReferencedVirtualBands(final RasterDataNode node) { final Product product = node.getProduct(); final List<RasterDataNode> rasterList = new ArrayList<RasterDataNode>(); if (product != null) { for (int i = 0; i < product.getNumBands(); i++) { final Band band = product.getBandAt(i); if (band instanceof VirtualBand) { final VirtualBand virtualBand = (VirtualBand) band; if (isNodeReferencedByExpression(node, virtualBand.getExpression())) { rasterList.add(virtualBand); } } } } return rasterList; }
@Override public void actionPerformed(ActionEvent e) { Mask[] selectedMasks = getMaskForm().getSelectedMasks(); getMaskForm().getMaskTable().clearSelection(); RasterDataNodeDeleter.deleteRasterDataNodes(selectedMasks); }
product.getMaskGroup().remove(mask); for (Band band : product.getBands()) { deleteMaskFromGroup(band.getOverlayMaskGroup(), mask); deleteMaskFromGroup(tiePointGrid.getOverlayMaskGroup(), mask);
private static List<RasterDataNode> getReferencedValidMasks(final RasterDataNode node) { final Product product = node.getProduct(); final List<RasterDataNode> rasterList = new ArrayList<RasterDataNode>(); if (product != null) { for (int i = 0; i < product.getNumBands(); i++) { final Band band = product.getBandAt(i); if (band != node) { if (isNodeReferencedByExpression(node, band.getValidPixelExpression())) { rasterList.add(band); } } } for (int i = 0; i < product.getNumTiePointGrids(); i++) { final TiePointGrid tiePointGrid = product.getTiePointGridAt(i); if (tiePointGrid != node) { if (isNodeReferencedByExpression(node, tiePointGrid.getValidPixelExpression())) { rasterList.add(tiePointGrid); } } } } return rasterList; }
public static void deleteRasterDataNodes(RasterDataNode[] rasterNodes) { Assert.notNull(rasterNodes); if (rasterNodes.length == 0) { return; } Set<RasterDataNode> virtualBandsSet = new HashSet<RasterDataNode>(); Set<RasterDataNode> validMaskNodesSet = new HashSet<RasterDataNode>(); Set<RasterDataNode> masksSet = new HashSet<RasterDataNode>(); for (RasterDataNode raster : rasterNodes) { virtualBandsSet.addAll(getReferencedVirtualBands(raster)); validMaskNodesSet.addAll(getReferencedValidMasks(raster)); masksSet.addAll(getReferencedMasks(raster)); } for (RasterDataNode raster : rasterNodes) { virtualBandsSet.remove(raster); validMaskNodesSet.remove(raster); masksSet.remove(raster); } String typeName = getTypeName(rasterNodes); String message = formatPromptMessage(typeName, rasterNodes, virtualBandsSet, validMaskNodesSet, masksSet); deleteRasterDataNodesImpl(rasterNodes, message); }
private static List<RasterDataNode> getReferencedMasks(final RasterDataNode node) { final Product product = node.getProduct(); final List<RasterDataNode> rasterList = new ArrayList<RasterDataNode>(); if (product != null) { final ProductNodeGroup<Mask> maskGroup = product.getMaskGroup(); final Mask[] masks = maskGroup.toArray(new Mask[maskGroup.getNodeCount()]); for (final Mask mask : masks) { final String expression; if (mask.getImageType() == Mask.BandMathsType.INSTANCE) { expression = Mask.BandMathsType.getExpression(mask); } else if (mask.getImageType() == Mask.RangeType.INSTANCE) { expression = Mask.RangeType.getRasterName(mask); } else { expression = null; } if (isNodeReferencedByExpression(node, expression)) { rasterList.add(mask); } } } return rasterList; }