@Override public void complete() { // if smart exclusions enabled and tile is not empty, send them to // writer if (!StatsHelper.isTileEmpty(stats) && XplaneOptionsHelper.getOptions().isSmartExclusions()) { String exclusions = exclusionsHelper.exportExclusions(); writer.complete(exclusions); } else { writer.complete(null); } if (!StatsHelper.isTileEmpty(stats)) { Osm2xpLogger.info( "Tile " + (int) currentTile.x + "/" + (int) currentTile.y + " stats : " + stats.getBuildingsNumber() + " buildings, " + stats.getForestsNumber() + " forests, " + stats.getStreetlightsNumber() + " street lights, " + stats.getObjectsNumber() + " objects. (generation took " + MiscUtils.getTimeDiff(startTime, new Date()) + ")"); // stats try { if (XplaneOptionsHelper.getOptions().isGenerateXmlStats() || XplaneOptionsHelper.getOptions().isGeneratePdfStats()) { StatsHelper.getStatsList().add(stats); } if (XplaneOptionsHelper.getOptions().isGenerateXmlStats()) { StatsHelper.saveStats(folderPath, currentTile, stats); } if (XplaneOptionsHelper.getOptions().isGeneratePdfStats()) { StatsHelper.generatePdfReport(folderPath, stats); } } catch (Osm2xpBusinessException e) { Osm2xpLogger.error("Error saving stats file for tile " + currentTile, e); } } else if (!GuiOptionsHelper.getOptions().isSinglePass()) { Osm2xpLogger.info( "Tile " + (int) currentTile.x + "/" + (int) currentTile.y + " is empty, no dsf generated"); } }