/*
* Copyright 2012-2015 Aerospike, Inc.
*
* Portions may be licensed to Aerospike, Inc. under one or more contributor
* license agreements.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.aerospike.core.model;
import java.util.HashMap;
import java.util.Map;
public class NodeFolder implements IAsEntity{
private Map<String, AsNode> nodeList = null;
private AsCluster parent;
public NodeFolder(AsCluster parent) {
this.parent = parent;
}
public Object[] getChildren(){
if (nodeList == null)
return new AsNode[0];
return nodeList.values().toArray();
}
public boolean hasChildren(){
return (nodeList != null && nodeList.size() > 0);
}
@Override
public String toString() {
return "Nodes";
}
@Override
public String getName() {
return toString();
}
public AsNode fetchNode(AsNode sourceNode) {
if (this.nodeList == null)
this.nodeList = new HashMap<String, AsNode>();
AsNode asNode = this.nodeList.get(sourceNode.getName());
if (asNode == null) {
this.nodeList.put(sourceNode.getName(), sourceNode);
asNode = sourceNode;
} else {
asNode.stats = sourceNode.stats;
}
return asNode;
}
@Override
public Object getParent() {
return this.parent;
}
public AsNode getRandomNode() {
return (AsNode) getChildren()[0];
}
}