Browse Source

build a fiew minimal graphs that couses problems

Kolja Strohm 6 years ago
parent
commit
88676ffc62
5 changed files with 246 additions and 191 deletions
  1. 20 187
      error_after_combine.json
  2. 106 0
      error_after_combine2.json
  3. 106 0
      error_after_combine3.json
  4. 13 3
      src/bk/Compaction.java
  5. 1 1
      src/main/Main.java

+ 20 - 187
error_after_combine.json

@@ -1,16 +1,13 @@
 {
   "layers": [
     [
-      {
-        "layers": [],
-        "edges": [],
-        "name": "0"
-      },
       {
         "layers": [],
         "edges": [],
         "name": "1"
-      },
+      }
+    ],
+    [
       {
         "layers": [],
         "edges": [],
@@ -20,7 +17,9 @@
         "layers": [],
         "edges": [],
         "name": "3"
-      },
+      }
+    ],
+    [
       {
         "layers": [],
         "edges": [],
@@ -47,227 +46,61 @@
         "layers": [],
         "edges": [],
         "name": "8"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "9"
       }
     ],
     [
       {
         "layers": [],
         "edges": [],
-        "name": "10"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "11"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "12"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "13"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "14"
-      }
-    ],
-    [
-      {
-        "layers": [],
-        "edges": [],
-        "name": "15"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "16"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "17"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "18"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "19"
-      }
-    ],
-    [
-      {
-        "layers": [],
-        "edges": [],
-        "name": "20"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "21"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "22"
-      },
-      {
-        "layers": [],
-        "edges": [],
-        "name": "23"
+        "name": "9"
       },
       {
         "layers": [],
         "edges": [],
-        "name": "24"
+        "name": "10"
       }
     ]
   ],
   "edges": [
-    {
-      "source": "2",
-      "target": "6"
-    },
     {
       "source": "1",
-      "target": "6"
+      "target": "2"
     },
     {
-      "source": "3",
-      "target": "7"
-    },
-    {
-      "source": "4",
-      "target": "7"
-    },
-    {
-      "source": "2",
-      "target": "9"
+      "source": "1",
+      "target": "3"
     },
     {
       "source": "3",
-      "target": "9"
+      "target": "4"
     },
     {
       "source": "4",
-      "target": "9"
-    },
-    {
-      "source": "2",
-      "target": "5"
-    },
-    {
-      "source": "0",
-      "target": "5"
+      "target": "6"
     },
     {
       "source": "4",
       "target": "8"
     },
     {
-      "source": "9",
-      "target": "13"
+      "source": "5",
+      "target": "9"
     },
     {
-      "source": "8",
-      "target": "13"
+      "source": "6",
+      "target": "9"
     },
     {
-      "source": "5",
+      "source": "6",
       "target": "10"
     },
     {
       "source": "7",
-      "target": "12"
-    },
-    {
-      "source": "6",
-      "target": "11"
+      "target": "10"
     },
     {
       "source": "8",
-      "target": "11"
-    },
-    {
-      "source": "13",
-      "target": "17"
-    },
-    {
-      "source": "12",
-      "target": "17"
-    },
-    {
-      "source": "10",
-      "target": "16"
-    },
-    {
-      "source": "12",
-      "target": "16"
-    },
-    {
-      "source": "11",
-      "target": "16"
-    },
-    {
-      "source": "14",
-      "target": "18"
-    },
-    {
-      "source": "11",
-      "target": "18"
-    },
-    {
-      "source": "11",
-      "target": "15"
-    },
-    {
-      "source": "18",
-      "target": "24"
-    },
-    {
-      "source": "19",
-      "target": "24"
-    },
-    {
-      "source": "17",
-      "target": "22"
-    },
-    {
-      "source": "16",
-      "target": "20"
-    },
-    {
-      "source": "15",
-      "target": "20"
-    },
-    {
-      "source": "17",
-      "target": "23"
-    },
-    {
-      "source": "16",
-      "target": "23"
-    },
-    {
-      "source": "18",
-      "target": "23"
-    },
-    {
-      "source": "16",
-      "target": "21"
+      "target": "10"
     }
   ]
 }

+ 106 - 0
error_after_combine2.json

@@ -0,0 +1,106 @@
+{
+  "layers": [
+    [
+      {
+        "layers": [],
+        "edges": [],
+        "name": "4"
+      }
+    ],
+    [
+      {
+        "layers": [],
+        "edges": [],
+        "name": "8"
+      },
+      {
+        "layers": [],
+        "edges": [],
+        "name": "9"
+      }
+    ],
+    [
+      {
+        "layers": [],
+        "edges": [],
+        "name": "11"
+      }
+    ],
+    [
+      {
+        "layers": [],
+        "edges": [],
+        "name": "16"
+      },
+      {
+        "layers": [],
+        "edges": [],
+        "name": "17"
+      },
+      {
+        "layers": [],
+        "edges": [],
+        "name": "18"
+      },
+      {
+        "layers": [],
+        "edges": [],
+        "name": "19"
+      }
+    ],
+    [
+      {
+        "layers": [],
+        "edges": [],
+        "name": "23"
+      },
+      {
+        "layers": [],
+        "edges": [],
+        "name": "24"
+      }
+    ]
+  ],
+  "edges": [
+    {
+      "source": "4",
+      "target": "9"
+    },
+    {
+      "source": "4",
+      "target": "8"
+    },
+    {
+      "source": "8",
+      "target": "11"
+    },
+    {
+      "source": "11",
+      "target": "16"
+    },
+    {
+      "source": "11",
+      "target": "18"
+    },
+    {
+      "source": "18",
+      "target": "24"
+    },
+    {
+      "source": "19",
+      "target": "24"
+    },
+    {
+      "source": "17",
+      "target": "23"
+    },
+    {
+      "source": "16",
+      "target": "23"
+    },
+    {
+      "source": "18",
+      "target": "23"
+    }
+  ]
+}

+ 106 - 0
error_after_combine3.json

@@ -0,0 +1,106 @@
+{
+  "layers": [
+    [
+      {
+        "layers": [],
+        "edges": [],
+        "name": "1"
+      },
+      {
+        "layers": [],
+        "edges": [],
+        "name": "2"
+      }
+    ],
+    [
+      {
+        "layers": [],
+        "edges": [],
+        "name": "3"
+      },
+      {
+        "layers": [],
+        "edges": [],
+        "name": "4"
+      },
+      {
+        "layers": [],
+        "edges": [],
+        "name": "5"
+      },
+      {
+        "layers": [],
+        "edges": [],
+        "name": "6"
+      }
+    ],
+    [
+      {
+        "layers": [],
+        "edges": [],
+        "name": "7"
+      }
+    ],
+    [
+      {
+        "layers": [],
+        "edges": [],
+        "name": "8"
+      },
+      {
+        "layers": [],
+        "edges": [],
+        "name": "9"
+      }
+    ],
+    [
+      {
+        "layers": [],
+        "edges": [],
+        "name": "10"
+      }
+    ]
+  ],
+  "edges": [
+    {
+      "source": "1",
+      "target": "3"
+    },
+    {
+      "source": "1",
+      "target": "4"
+    },
+    {
+      "source": "1",
+      "target": "5"
+    },
+    {
+      "source": "2",
+      "target": "5"
+    },
+    {
+      "source": "2",
+      "target": "6"
+    },
+    {
+      "source": "3",
+      "target": "7"
+    },
+    {
+      "source": "5",
+      "target": "7"
+    },
+    {
+      "source": "7",
+      "target": "8"
+    },
+    {
+      "source": "8",
+      "target": "10"
+    },
+    {
+      "source": "9",
+      "target": "10"
+    }
+  ]
+}

+ 13 - 3
src/bk/Compaction.java

@@ -1,6 +1,7 @@
 package bk;
 
 import java.util.ArrayList;
+import java.util.Collections;
 
 import javax.swing.JTree;
 
@@ -74,12 +75,21 @@ public class Compaction implements AlgorithmStage{
 
     private LayeredGraphNode getNodeFromIndex( int index )
     {
-        for( ArrayList< LayeredGraphNode > l : graph.getContainedLayers() )
+        @SuppressWarnings("unchecked")
+        ArrayList<ArrayList<LayeredGraphNode>> layer = (ArrayList<ArrayList<LayeredGraphNode>>) graph.getContainedLayers().clone();
+        if( layout == LayoutType.BOTTOM_TOP_LEFT || layout == LayoutType.BOTTOM_TOP_RIGHT )
+            Collections.reverse( layer );
+        for( ArrayList< LayeredGraphNode > l : layer )
         {
             if( index >= l.size() )
                 index -= l.size();
             else
-                return l.get( index );
+            {
+                if( layout == LayoutType.BOTTOM_TOP_LEFT || layout == LayoutType.TOP_BOTTOM_LEFT )
+                    return l.get( index );
+                else
+                    return l.get( l.size() - index - 1 );
+            }
         }
         return null;
     }
@@ -395,7 +405,7 @@ public class Compaction implements AlgorithmStage{
                 applyLoopNode.setSelected( false );
                 return StageStatus.FINISHED;
             }
-            LayeredGraphNode v = graph.getContainedNodes().get( vIndex );
+            LayeredGraphNode v = getNodeFromIndex( vIndex );
             double oldX = v.getX( layout );
             boolean oldDef = !v.isXUndefined( layout );
 

+ 1 - 1
src/main/Main.java

@@ -17,7 +17,7 @@ public class Main {
      * @param args the command line arguments, currently not in use
      */
     public static void main(String[] args) {
-        Reader r = new Reader( "logo.json" );
+        Reader r = new Reader( "error_after_combine3.json" );
         LayeredGraphNode graph = r.readInputGraph();
         InitializeNodePositions.placeNodes( graph );
         new MainView( graph );