diff --git a/src/main/java/fr/inra/po2vocabmanager/model/DataNode.java b/src/main/java/fr/inra/po2vocabmanager/model/DataNode.java index 93989b872c867ba15c87c67744590e733883cc99..24f6f344d30adfe1dfe66be334e9cc1e7db81712 100644 --- a/src/main/java/fr/inra/po2vocabmanager/model/DataNode.java +++ b/src/main/java/fr/inra/po2vocabmanager/model/DataNode.java @@ -257,11 +257,19 @@ public class DataNode implements Comparable<DataNode> { if(o == null) return 0; if(this.getType().equals(DataNodeType.STEP) && o.getType().equals(DataNodeType.STEP)) { // order by temporality - if(this.getItineraryFile() != null) { - if(getItineraryFile().isLinked((StepFile)this.getFile(),(StepFile)o.getFile())) { + StepFile current = (StepFile)this.getFile(); + StepFile otherStep = (StepFile)o.getFile(); + if(!current.isLeaf()) { + current = current.getSubStep().stream().findFirst().orElse(null); + } + if(!otherStep.isLeaf()) { + otherStep = otherStep.getSubStep().stream().findFirst().orElse(null); + } + if( current != null && otherStep != null && this.getItineraryFile() != null) { + if(getItineraryFile().isLinked(current,otherStep)) { return -1; } else { - if(getItineraryFile().isLinked((StepFile)o.getFile(), (StepFile)this.getFile())) { + if(getItineraryFile().isLinked(otherStep, current)) { return 1; } }