public void renameCluster(Integer tenantId, String clusterName, String newName) throws ClusterException {
ClusterVO cluster = loadCluster(tenantId, idMappingDAO.lookup(clusterName),
itemTypeDAO.getIdOfType(tenantId, ClusterService.ITEMTYPE_CLUSTER));
DelegateTree<ClusterVO, ItemAssocVO<Integer,Integer>> tree =
clusters.get(tenantId);
if (tree.isRoot(cluster)) throw new ClusterException("ROOT cluster cannot be renamed!");
ClusterVO parent = tree.getParent(cluster);
ClusterVO newCluster = new ClusterVO(tenantId, idMappingDAO.lookup(newName),
itemTypeDAO.getIdOfType(tenantId, ClusterService.ITEMTYPE_CLUSTER), newName, cluster.getDescription());
addCluster(newCluster, parent);
for (ClusterVO child : tree.getChildren(cluster)) {
moveCluster(tenantId, child.getName(), newName);
}
if (logger.isDebugEnabled()) {
logger.debug("removed all children: " + tree.isLeaf(cluster));
}
for (ItemVO<Integer, Integer> item : getItemsOfCluster(cluster)) {
addItemToCluster(newCluster, item);
}
removeCluster(tenantId, clusterName);
}