X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Ftest%2Ftree%2FTreeTestResultPersister.java;h=c16e70a76fb8cce420c38a59695f1dfc3ebf5b70;hb=7ec4252e8a8ec055b9310c3db0233e217b7e43c0;hp=29c73d2fff2e73aadd45abcbef3452d026ae62cf;hpb=875f97b054c6e996fa2d03c299c83cc80d336b54;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java index 29c73d2ff..c16e70a76 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java @@ -31,17 +31,9 @@ public class TreeTestResultPersister extends AsynchronousTreeTestResultListener TreeSPath path = treeSPathDao.getOrCreate(partStruct.path); + StructureRegistry localRegistry = partStruct.result.getRegistry(); TreeSRegistry registry = getOrCreateTreeSRegistry(path); - if (registry.getElement(path) == null) { - StructureRegistry localRegistry = partStruct.result - .getRegistry(); - if (localRegistry != null) { - registry.register(path, localRegistry.getElement(path)); - } else { - registry.register(path, new SimpleSElement(path.getName())); - } - treeSRegistryDao.update(registry); - } + syncPath(registry, localRegistry, path); if (persistedResult == null) { persistedResult = new TreeTestResult(); @@ -118,4 +110,20 @@ public class TreeTestResultPersister extends AsynchronousTreeTestResultListener this.treeSRegistryDao = treeSRegistryDao; } + private void syncPath(TreeSRegistry registry, + StructureRegistry localRegistry, TreeSPath path) { + if (registry.getElement(path) == null) { + if (localRegistry != null) { + registry.register(path, localRegistry.getElement(path)); + } else { + registry.register(path, new SimpleSElement(path.getName())); + } + treeSRegistryDao.update(registry); + } + + if (path.getParent() != null) { + TreeSPath parent = treeSPathDao.getOrCreate(path.getParent()); + syncPath(registry, localRegistry, parent); + } + } }