(String filename, Map<String, Box> specialBoxes, Set<Box> created)
| 300 | Log.log("io.general", () -> " reading document :" + f); |
| 301 | |
| 302 | lastWasNew = false; |
| 303 | |
| 304 | if (!f.exists()) { |
| 305 | // new file |
| 306 | lastWasNew = true; |
| 307 | |
| 308 | Log.log("io.general", () -> " document doesn't exist "); |
| 309 | |
| 310 | Document d = new Document(); |
| 311 | d.externalList = new ArrayList<>(); |
| 312 | d.knownFiles = new LinkedHashMap<>(); |
| 313 | d.knownProperties = new LinkedHashSet<>(); |
| 314 | return d; |
| 315 | } |
| 316 | |
| 317 | |
| 318 | String m = readFromFile(f); |
| 319 | |
| 320 | Document d = (Document) new EDN().read(m); |
| 321 | Map<String, Box> loaded = new HashMap<String, Box>(); |
| 322 | |
| 323 | Log.log("io.general", () -> " document contains " + d.externalList.size() + " boxes "); |
| 324 | |
| 325 | |
| 326 | for (External e : d.externalList) { |
| 327 | fromExternal(e, specialBoxes); |
| 328 | if (e.box != null) { |
| 329 | loaded.put(e.id, e.box); |
| 330 | e.box.properties.put(id, e.id); |
| 331 | } |
| 332 | } |
| 333 | |
| 334 | for (External e : d.externalList) { |
| 335 | for (String id : e.children) { |
| 336 | Box mc = specialBoxes.getOrDefault(id, loaded.get(id)); |
| 337 | |
| 338 | if (mc != null) e.box.connect(mc); |
| 339 | else |
| 340 | Log.log("io.error", () -> " lost child ? " + id + " of " + e.box + " " + specialBoxes); |
| 341 | } |
| 342 | for (String id : e.parents) { |
| 343 | Box mc = specialBoxes.getOrDefault(id, loaded.get(id)); |
| 344 | |
| 345 | if (mc != null) mc.connect(e.box); |
| 346 | else |
| 347 | Log.log("io.error", () -> " lost child ? " + id + " of " + e.box + " " + specialBoxes); |
| 348 | } |
| 349 | } |
| 350 | created.addAll(loaded.values()); |
| 351 | |
| 352 | |
| 353 | |
| 354 | |
| 355 | LinkedHashSet<Box> failed = new LinkedHashSet<>(); |
| 356 | loaded.values() |
| 357 | .stream() |
| 358 | .filter(b -> b instanceof Loaded) |
| 359 | .forEach(b -> { |
no test coverage detected