annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
1 package christie.topology.manager;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
2
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
3 import java.util.LinkedList;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
4
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
5 public class ParentManager {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
6
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
7 private int maxChildren;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
8 private int position = 0;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
9 private LinkedList<Parent> list;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
10 public ParentManager(int hasChildren){
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
11 list = new LinkedList<Parent>();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
12 maxChildren = hasChildren;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
13 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
14
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
15 public String getMyParent() {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
16 checkChildNumber();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
17 return list.get(position).getName();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
18 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
19
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
20 public int getMyNumber() {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
21 checkChildNumber();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
22 int num = list.get(position).children();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
23 list.get(position).increment();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
24 return num;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
25 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
26
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
27 private void checkChildNumber() {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
28 for (;;next()) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
29 if (list.get(position).children() < maxChildren)
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
30 break;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
31 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
32 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
33
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
34 public void register(String name) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
35 Parent p = new Parent(name);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
36 list.add(p);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
37 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
38
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
39 public void next() {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
40 position++;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
41 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
42
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
43 public void previous() {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
44 position--;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
45 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
46
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
47 public void replaceAndRemove(String remove, String replace) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
48 Parent removeNode = find(remove);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
49 remove(replace);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
50 removeNode.setName(replace);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
51 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
52
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
53 public void remove(String remove) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
54 Parent removeNode = find(remove);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
55 list.remove(removeNode);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
56 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
57
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
58 public Parent find(String name) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
59 boolean found = false;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
60 int i = 0;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
61 for (;i<list.size();i++) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
62 if (list.get(i).getName().equals(name)) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
63 found = true;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
64 break;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
65 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
66 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
67 if (found) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
68 return list.get(i);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
69 } else {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
70 return null;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
71 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
72 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
73
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
74 public Parent getLastNode(){
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
75 return list.getLast();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
76 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
77
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
78 public void show() {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
79 int counter = 0;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
80 System.out.print("| ");
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
81 for (Parent p :list) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
82 if (counter==position)
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
83 System.out.print("P ");
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
84 System.out.print(p.getName()+" "+p.children()+" | ");
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
85 counter++;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
86 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
87 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
88
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
89 public LinkedList<Parent> getList() {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
90 return list;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
91 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
92 }