summaryrefslogtreecommitdiff
path: root/java/src/IceGrid/TreeNode/NodeViewRoot.java
blob: 19b2ad432e21fb71e81dba5d6583db9c5c04292b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// **********************************************************************
//
// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
package IceGrid.TreeNode;

import IceGrid.ApplicationDescriptor;
import IceGrid.NodeDescriptor;
import IceGrid.TreeModelI;

public class NodeViewRoot extends Parent
{
    public NodeViewRoot()
    {
	super("Nodes", TreeModelI.NODE_VIEW);
    }

    public void init(java.util.List applications)
    {
	assert(_children.size() == 0);
	java.util.Iterator p = applications.iterator();
	while(p.hasNext())
	{
	    ApplicationDescriptor descriptor = (ApplicationDescriptor)p.next();
	    put(descriptor.name, descriptor.nodes, false);
	}
    }
    
    public void clear()
    {
	_nodeMap.clear();
	clearChildren();
	fireStructureChangedEvent(this);
    }

    public void put(String applicationName, java.util.List nodeDescriptors,
		    boolean fireEvent)
    {
	java.util.Iterator p = nodeDescriptors.iterator();

	while(p.hasNext())
	{
	    NodeDescriptor descriptor = (NodeDescriptor)p.next();
	    String nodeName = descriptor.name;
	    
	    Node child = (Node)findChild(nodeName);
	    if(child == null)
	    {
		child = new Node(applicationName, descriptor);
		_nodeMap.put(nodeName, child);
		child.addParent(this);
		addChild(child, fireEvent);
	    }
	    else
	    {
		child.addApplication(applicationName, 
				     descriptor);
	    }
	}
    }

    public void remove(String applicationName)
    {
	int i = 0;
	java.util.Iterator p = _children.iterator();

	while(p.hasNext())
	{
	    Node child = (Node)p.next();
	    if(child.removeApplication(applicationName))
	    {
		_nodeMap.remove(child.getId());
		p.remove();
		fireNodeRemovedEvent(this, child, i);
	    }
	    else
	    {
		++i;
	    }
	}
    }
    
    public void remove(String applicationName, String nodeName)
    {
	Node child = (Node)_nodeMap.get(nodeName);
	assert(child != null);

	if(child.removeApplication(applicationName))
	{
	    _nodeMap.remove(nodeName);
	    removeChild(nodeName, true);
	}
    }

    public void removeServers(String[] removeServers)
    {
	if(removeServers.length > 0)
	{
	    java.util.List serverList = 
		new java.util.LinkedList(java.util.Arrays.asList(removeServers));
	    
	    java.util.Iterator p = _nodeMap.values().iterator();
	    while(p.hasNext() && serverList.size() > 0)
	    {
		Node node = (Node)p.next();
		node.removeChildren(serverList);
	    }
	}
    }


    Node findNode(String name)
    {
	return (Node)_nodeMap.get(name);
    }

    private java.util.Map _nodeMap = new java.util.HashMap();
}