view src/main/java/alice/topology/manager/ParentManager.java @ 477:f644dc9e0589 dispose

TODO : add ReceiveCloseOrder CodeSegment in alice.topology.node package
author sugi
date Tue, 02 Dec 2014 14:49:20 +0900
parents 8968b24c1ce3
children 8227a2fd5a55
line wrap: on
line source

package alice.topology.manager;

import java.util.LinkedList;

public class ParentManager {

    private int BINARY_TREE = 2;
    private int position = 0;
    private LinkedList<Parent> list;
    public ParentManager(){
        list = new LinkedList<Parent>();
    }

    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() < BINARY_TREE)
                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 void decrementChild(String name) {
        list.get(position).decrement();
    }

    private Parent find(String name) {
        boolean found = false;
        int i = 0;
        for (;i<list.size();i++) {
            if (list.get(i).equals(name)) {
                found = true;
                break;
            }
        }
        if (found) {
            return list.get(i);
        } else {
            return null;
        }
    }
}