diff src/main/java/christie/topology/manager/ParentManager.java @ 83:2314c55534ef

add TreeTopology
author akahori
date Sat, 15 Sep 2018 09:24:36 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/christie/topology/manager/ParentManager.java	Sat Sep 15 09:24:36 2018 +0900
@@ -0,0 +1,92 @@
+package christie.topology.manager;
+
+import java.util.LinkedList;
+
+public class ParentManager {
+
+    private int maxChildren;
+    private int position = 0;
+    private LinkedList<Parent> list;
+    public ParentManager(int hasChildren){
+        list = new LinkedList<Parent>();
+        maxChildren = hasChildren;
+    }
+
+    public String getMyParent() {
+        checkChildNumber();
+        return list.get(position).getName();
+    }
+
+    public int getMyNumber() {
+        checkChildNumber();
+        int num = list.get(position).children();
+        list.get(position).increment();
+        return num;
+    }
+
+    private void checkChildNumber() {
+        for (;;next()) {
+            if (list.get(position).children() < maxChildren)
+                break;
+        }
+    }
+
+    public void register(String name) {
+        Parent p = new Parent(name);
+        list.add(p);
+    }
+
+    public void next() {
+        position++;
+    }
+
+    public void previous() {
+        position--;
+    }
+
+    public void replaceAndRemove(String remove, String replace) {
+        Parent removeNode = find(remove);
+        remove(replace);
+        removeNode.setName(replace);
+    }
+
+    public void remove(String remove) {
+        Parent removeNode = find(remove);
+        list.remove(removeNode);
+    }
+
+    public Parent find(String name) {
+        boolean found = false;
+        int i = 0;
+        for (;i<list.size();i++) {
+            if (list.get(i).getName().equals(name)) {
+                found = true;
+                break;
+            }
+        }
+        if (found) {
+            return list.get(i);
+        } else {
+            return null;
+        }
+    }
+
+    public Parent getLastNode(){
+        return list.getLast();
+    }
+
+    public void show() {
+        int counter = 0;
+        System.out.print("| ");
+        for (Parent p :list) {
+            if (counter==position)
+                System.out.print("P ");
+            System.out.print(p.getName()+" "+p.children()+" | ");
+            counter++;
+        }
+    }
+
+    public LinkedList<Parent> getList() {
+        return list;
+    }
+}