| 278 | | for (int index = 0; index < layers.size(); ++index) { |
| 279 | | Layer layer = layers.get(index); |
| 280 | | SessionLayerExporter exporter = exporters.get(layer); |
| 281 | | ExportSupport support = new ExportSupport(doc, index+1); |
| 282 | | Element el = exporter.export(support); |
| 283 | | if (el == null) continue; |
| 284 | | el.setAttribute("index", Integer.toString(index+1)); |
| 285 | | el.setAttribute("name", layer.getName()); |
| 286 | | el.setAttribute("visible", Boolean.toString(layer.isVisible())); |
| 287 | | if (!Utils.equalsEpsilon(layer.getOpacity(), 1.0)) { |
| 288 | | el.setAttribute("opacity", Double.toString(layer.getOpacity())); |
| 289 | | } |
| 290 | | Set<Layer> deps = dependencies.get(layer); |
| 291 | | final String depends = deps == null ? "" : deps.stream().map(depLayer -> { |
| 292 | | int depIndex = layers.indexOf(depLayer); |
| 293 | | if (depIndex == -1) { |
| 294 | | Logging.warn("Unable to find " + depLayer); |
| 295 | | return null; |
| 296 | | } else { |
| 297 | | return Integer.toString(depIndex+1); |
| | 278 | for (int stage = 0; stage < 2; stage++) { |
| | 279 | for (int index = 0; index < layers.size(); ++index) { |
| | 280 | Layer layer = layers.get(index); |
| | 281 | SessionLayerExporter exporter = exporters.get(layer); |
| | 282 | final boolean isImage = exporter instanceof GeoImageSessionExporter; |
| | 283 | if (stage == 0 && isImage || stage == 1 && !isImage) |
| | 284 | continue; |
| | 285 | ExportSupport support = new ExportSupport(doc, index+1); |
| | 286 | Element el = exporter.export(support); |
| | 287 | if (el == null) continue; |
| | 288 | el.setAttribute("index", Integer.toString(index+1)); |
| | 289 | el.setAttribute("name", layer.getName()); |
| | 290 | el.setAttribute("visible", Boolean.toString(layer.isVisible())); |
| | 291 | if (!Utils.equalsEpsilon(layer.getOpacity(), 1.0)) { |
| | 292 | el.setAttribute("opacity", Double.toString(layer.getOpacity())); |
| 299 | | }).filter(Objects::nonNull).collect(Collectors.joining(",")); |
| 300 | | if (!depends.isEmpty()) { |
| 301 | | el.setAttribute("depends", depends); |
| | 294 | Set<Layer> deps = dependencies.get(layer); |
| | 295 | final String depends = deps == null ? "" : deps.stream().map(depLayer -> { |
| | 296 | int depIndex = layers.indexOf(depLayer); |
| | 297 | if (depIndex == -1) { |
| | 298 | Logging.warn("Unable to find " + depLayer); |
| | 299 | return null; |
| | 300 | } else { |
| | 301 | return Integer.toString(depIndex+1); |
| | 302 | } |
| | 303 | }).filter(Objects::nonNull).collect(Collectors.joining(",")); |
| | 304 | if (!depends.isEmpty()) { |
| | 305 | el.setAttribute("depends", depends); |
| | 306 | } |
| | 307 | layersEl.appendChild(el); |