From: Mathieu Baudier Date: Fri, 31 Jul 2009 10:36:04 +0000 (+0000) Subject: Fix flow tree display X-Git-Tag: argeo-slc-2.1.7~1567 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=d78a01fd40849caa6e55a66c9f048a06f509a374;p=gpl%2Fargeo-slc.git Fix flow tree display git-svn-id: https://svn.argeo.org/slc/trunk@2847 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java index 0d88c96fd..e41c8c84c 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java @@ -172,14 +172,21 @@ public class DefaultExecutionFlow implements ExecutionFlow, InitializingBean, .getAttributes().get(key).getValue() != null); } + @Override public String toString() { - return new StringBuffer("Flow ").append(name).toString(); + return new StringBuffer("Execution flow ").append(name).toString(); } + @Override public boolean equals(Object obj) { return ((ExecutionFlow) obj).getName().equals(name); } + @Override + public int hashCode() { + return name.hashCode(); + } + public String getPath() { return path; } diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java index 1ff50e0db..2d2d28bab 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java @@ -218,9 +218,17 @@ public class DefaultExecutionFlowDescriptorConverter implements Comparator { public int compare(ExecutionFlowDescriptor o1, ExecutionFlowDescriptor o2) { + // TODO: write unit tests for this if (StringUtils.hasText(o1.getPath()) && StringUtils.hasText(o2.getPath())) { - return o1.getPath().compareTo(o2.getPath()); + if (o1.getPath().equals(o2.getPath())) + return o1.getName().compareTo(o2.getName()); + else if (o1.getPath().startsWith(o2.getPath())) + return -1; + else if (o2.getPath().startsWith(o1.getPath())) + return 1; + else + return o1.getPath().compareTo(o2.getPath()); } else if (!StringUtils.hasText(o1.getPath()) && StringUtils.hasText(o2.getPath())) { return 1; diff --git a/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/execution/ExecutionFlowDescriptor.java b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/execution/ExecutionFlowDescriptor.java index f63703c88..89f0eac94 100644 --- a/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/execution/ExecutionFlowDescriptor.java +++ b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/execution/ExecutionFlowDescriptor.java @@ -59,4 +59,16 @@ public class ExecutionFlowDescriptor { this.description = description; } + @Override + public boolean equals(Object obj) { + if (obj instanceof ExecutionFlowDescriptor) + return name.equals(((ExecutionFlowDescriptor) obj).getName()); + return false; + } + + @Override + public int hashCode() { + return name.hashCode(); + } + }