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); |