private synchronized void writeHeader(final SubsetInfo info) throws Exception { if (info.written) return; subsetInfo.productWriter.writeProductNodes(subsetInfo.subsetProduct, subsetInfo.file); info.written = true; }
private synchronized void writeHeader(final WriterInfo info) throws Exception { if (info.written) return; final File outputFile = targetFolder.toPath().resolve(info.folderName).resolve(info.targetBandName + ".par").toFile(); info.productWriter.writeProductNodes(info.product, outputFile); if (info.folderName.equals("diff0")) { writeBaselineFile(info); } info.written = true; }
@Override public void computeTile(Band targetBand, Tile targetTile, ProgressMonitor pm) throws OperatorException { try { final SubsetInfo subsetInfo = bandMap.get(targetBand); if(subsetInfo == null) return; subsetInfo.productWriter.writeProductNodes(subsetInfo.subsetProduct, subsetInfo.file); final Rectangle trgRect = subsetInfo.subsetBuilder.getSubsetDef().getRegion(); if (!subsetInfo.written) { writeTile(subsetInfo, trgRect); } } catch (Exception e) { if (e instanceof OperatorException) { throw (OperatorException) e; } else { throw new OperatorException(e); } } }
private void markTileDone(Band targetBand, Tile targetTile) throws IOException { boolean done; synchronized (todoLists) { MultiLevelImage sourceImage = targetBand.getSourceImage(); final List<Point> currentTodoList = getTodoList(sourceImage); currentTodoList.remove(new Point(sourceImage.XToTileX(targetTile.getMinX()), sourceImage.YToTileY(targetTile.getMinY()))); done = isDone(); } if (done) { // If we get here all tiles are written for (SubsetInfo info : subsetInfo) { if (info.productWriter instanceof DimapProductWriter) { // if we can update the header (only DIMAP) rewrite it! synchronized (info.productWriter) { info.productWriter.writeProductNodes(info.product, info.file); } } } } }
@Override public void computeTile(Band targetBand, Tile targetTile, ProgressMonitor pm) throws OperatorException { try { synchronized (this) { if (!productFileWritten) { for (SubsetInfo info : subsetInfo) { info.productWriter.writeProductNodes(info.product, info.file); } productFileWritten = true; } } final Rectangle rect = targetTile.getRectangle(); for (SubsetInfo info : subsetInfo) { final Rectangle trgRect = info.subsetBuilder.getSubsetDef().getRegion(); if (rect.intersects(trgRect)) { writeTile(info, targetBand.getName(), trgRect); } } markTileDone(targetBand, targetTile); } catch (Exception e) { if (e instanceof OperatorException) { throw (OperatorException) e; } else { throw new OperatorException(e); } } }