From d5e962d4f976881fb6094e17efd336cc85ca74ef Mon Sep 17 00:00:00 2001 From: Bernard Normier Date: Thu, 11 Aug 2005 11:28:21 +0000 Subject: Missing file --- java/src/IceGrid/TreeNode/Nodes.java | 153 +++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100755 java/src/IceGrid/TreeNode/Nodes.java (limited to 'java/src/IceGrid/TreeNode/Nodes.java') diff --git a/java/src/IceGrid/TreeNode/Nodes.java b/java/src/IceGrid/TreeNode/Nodes.java new file mode 100755 index 00000000000..d8aa6a9c644 --- /dev/null +++ b/java/src/IceGrid/TreeNode/Nodes.java @@ -0,0 +1,153 @@ +// ********************************************************************** +// +// 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; +import IceGrid.Model; +import IceGrid.NodeDescriptor; +import IceGrid.NodeDynamicInfo; +import IceGrid.NodeUpdateDescriptor; +import IceGrid.ServerDynamicInfo; +import IceGrid.AdapterDynamicInfo; +import IceGrid.ServerState; + +public class Nodes extends Parent +{ + public Nodes(java.util.Map nodeMap, Application application) + { + super("Nodes", application.getModel()); + _descriptors = nodeMap; + + java.util.Iterator p = nodeMap.entrySet().iterator(); + while(p.hasNext()) + { + java.util.Map.Entry entry = (java.util.Map.Entry)p.next(); + String nodeName = (String)entry.getKey(); + NodeDescriptor nodeDescriptor = (NodeDescriptor)entry.getValue(); + addChild(new Node(nodeName, nodeDescriptor, application)); + } + + // + // Also create a Node for each node that is up + // + Root root = _model.getRoot(); + p = root.getNodesUp().iterator(); + while(p.hasNext()) + { + String nodeName = (String)p.next(); + if(findChild(nodeName) == null) + { + addChild(new Node(nodeName, application.getModel())); + } + } + } + + void update(java.util.List updates, String[] removeNodes) + { + Application application = (Application)getParent(); + + // + // Note: _descriptors has already the nodes removed but + // needs to get the updated and new NodeDescriptors + // + + // + // One big set of removes + // + removeChildren(removeNodes); + + // + // One big set of updates, followed by inserts + // + java.util.Vector newChildren = new java.util.Vector(); + + java.util.Iterator p = updates.iterator(); + while(p.hasNext()) + { + NodeUpdateDescriptor update = (NodeUpdateDescriptor)p.next(); + Node node = findNode(update.name); + if(node == null) + { + NodeDescriptor nodeDescriptor = new NodeDescriptor(update.variables, + update.serverInstances, + update.servers); + _descriptors.put(update.name, nodeDescriptor); + node = new Node(update.name, nodeDescriptor, application); + newChildren.add(node); + } + else + { + NodeDescriptor nodeDescriptor = node.update(update, application); + if(nodeDescriptor != null) + { + _descriptors.put(update.name, nodeDescriptor); + } + } + } + + addChildren((CommonBaseI[])newChildren.toArray(new CommonBaseI[0])); + p = newChildren.iterator(); + while(p.hasNext()) + { + ServerTemplate serverTemplate = (ServerTemplate)p.next(); + serverTemplate.setParent(this); + } + } + + void nodeUp(String nodeName) + { + Node node = findNode(nodeName); + if(node == null) + { + node = new Node(nodeName, _model); + addChild(node, true); + } + else + { + node.up(); + } + } + + void nodeDown(String nodeName) + { + // + // We remove nodes that are down and without descriptor + // + Node node = findNode(nodeName); + if(node != null) + { + if(node.down()) + { + removeChild(nodeName, true); + } + } + // + // Else log a warning? + // + } + + public void cleanup() + { + java.util.Iterator p = _children.iterator(); + while(p.hasNext()) + { + Node node = (Node)p.next(); + node.cleanup(); + } + } + + Node findNode(String nodeName) + { + return (Node)findChild(nodeName); + } + + private java.util.Map _descriptors; +} -- cgit v1.2.3