gitlab #470
Change-Id: I678361037ec23258c3c1710a475dc25b2971ab4c
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Iterator;
import java.util.Map;
-import java.util.TreeMap;
+import java.util.stream.Collectors;
import org.simantics.diagram.connection.rendering.arrows.ILineEndStyle;
import org.simantics.diagram.connection.rendering.arrows.PlainLineEndStyle;
import org.simantics.diagram.connection.rendering.arrows.ILineEndStyle;
import org.simantics.diagram.connection.rendering.arrows.PlainLineEndStyle;
- Map<RoutePoint, RouteLine> begins =
-// new THashMap<RoutePoint, RouteLine>(); //The ordering of the coordinates in the path should be deterministic between scenegraphs
- new TreeMap<RoutePoint, RouteLine>(RG_COMP);
+ Map<RoutePoint, RouteLine> begins = new HashMap<RoutePoint, RouteLine>();
for(RouteLine line : lines) {
add(begins, line);
}
for(RouteLine line : lines) {
add(begins, line);
}
- for(RoutePoint begin : begins.keySet().toArray(new RoutePoint[begins.size()])) {
+ // Sort the begins so that the order of segments is deterministic. This is required when comparing e.g. SVG diagrams.
+ // In case of overlapping begins the order may vary.
+ for(RoutePoint begin : begins.keySet().stream().sorted(RG_COMP).collect(Collectors.toList())) {
RouteLine curLine = begins.remove(begin);
drawContinuousPath(path, begins, begin, curLine);
}
RouteLine curLine = begins.remove(begin);
drawContinuousPath(path, begins, begin, curLine);
}