package org.ovirt.engine.ui.uicommon.models;
import java.util.Collections;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.common.vdscommands.*;
import org.ovirt.engine.core.common.queries.*;
import org.ovirt.engine.core.common.action.*;
import org.ovirt.engine.ui.frontend.*;
import org.ovirt.engine.ui.uicommon.*;
import org.ovirt.engine.ui.uicommon.models.*;
import org.ovirt.engine.core.common.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.ui.uicommon.*;
@SuppressWarnings("unused")
public class SystemTreeModel extends SearchableListModel
{
public static EventDefinition ResetRequestedEventDefinition;
private Event privateResetRequestedEvent;
public Event getResetRequestedEvent()
{
return privateResetRequestedEvent;
}
private void setResetRequestedEvent(Event value)
{
privateResetRequestedEvent = value;
}
private UICommand privateResetCommand;
public UICommand getResetCommand()
{
return privateResetCommand;
}
private void setResetCommand(UICommand value)
{
privateResetCommand = value;
}
private UICommand privateExpandAllCommand;
public UICommand getExpandAllCommand()
{
return privateExpandAllCommand;
}
private void setExpandAllCommand(UICommand value)
{
privateExpandAllCommand = value;
}
private UICommand privateCollapseAllCommand;
public UICommand getCollapseAllCommand()
{
return privateCollapseAllCommand;
}
private void setCollapseAllCommand(UICommand value)
{
privateCollapseAllCommand = value;
}
public java.util.ArrayList<SystemTreeItemModel> getItems()
{
return (java.util.ArrayList<SystemTreeItemModel>)super.getItems();
}
public void setItems(java.util.ArrayList<SystemTreeItemModel> value)
{
super.setItems(value);
}
static
{
ResetRequestedEventDefinition = new EventDefinition("ResetRequested", SystemTreeModel.class);
}
public SystemTreeModel()
{
setResetRequestedEvent(new Event(ResetRequestedEventDefinition));
setResetCommand(new UICommand("Reset", this));
setExpandAllCommand(new UICommand("ExpandAll", this));
setCollapseAllCommand(new UICommand("CollapseAll", this));
setItems(new java.util.ArrayList<SystemTreeItemModel>());
}
@Override
protected void AsyncSearch()
{
super.AsyncSearch();
SyncSearch();
}
@Override
protected void SyncSearch()
{
super.SyncSearch();
//Build maps.
java.util.ArrayList<storage_pool> dataCenters = DataProvider.GetDataCenterList();
//Cluster by data center map.
java.util.ArrayList<VDSGroup> clusters = DataProvider.GetClusterList();
java.util.HashMap<Guid, java.util.ArrayList<VDSGroup>> clusterMap = new java.util.HashMap<Guid, java.util.ArrayList<VDSGroup>>();
for (VDSGroup cluster : clusters)
{
if (cluster.getstorage_pool_id() != null)
{
Guid key = cluster.getstorage_pool_id().getValue();
if (!clusterMap.containsKey(key))
{
clusterMap.put(key, new java.util.ArrayList<VDSGroup>());
}
java.util.ArrayList<VDSGroup> list = clusterMap.get(key);
list.add(cluster);
}
}
//Host by cluster map.
java.util.ArrayList<VDS> hosts = DataProvider.GetHostList();
java.util.HashMap<Guid, java.util.ArrayList<VDS>> hostMap = new java.util.HashMap<Guid, java.util.ArrayList<VDS>>();
for (VDS host : hosts)
{
Guid key = host.getvds_group_id();
if (!hostMap.containsKey(key))
{
hostMap.put(key, new java.util.ArrayList<VDS>());
}
java.util.ArrayList<VDS> list = hostMap.get(key);
list.add(host);
}
//Build tree items.
SystemTreeItemModel systemItem = new SystemTreeItemModel();
systemItem.setType(SystemTreeItemType.System);
systemItem.setIsSelected(true);
systemItem.setTitle("System");
for (storage_pool dataCenter : dataCenters)
{
SystemTreeItemModel dataCenterItem = new SystemTreeItemModel();
dataCenterItem.setType(SystemTreeItemType.DataCenter);
dataCenterItem.setTitle(dataCenter.getname());
dataCenterItem.setEntity(dataCenter);
systemItem.getChildren().add(dataCenterItem);
SystemTreeItemModel storagesItem = new SystemTreeItemModel();
storagesItem.setType(SystemTreeItemType.Storages);
storagesItem.setTitle("Storage");
storagesItem.setParent(dataCenterItem);
storagesItem.setEntity(dataCenter);
dataCenterItem.getChildren().add(storagesItem);
java.util.ArrayList<storage_domains> storages = DataProvider.GetStorageDomainList(dataCenter.getId());
if (storages.size() > 0)
{
for (storage_domains storage : storages)
{
SystemTreeItemModel storageItem = new SystemTreeItemModel();
storageItem.setType(SystemTreeItemType.Storage);
storageItem.setTitle(storage.getstorage_name());
storageItem.setParent(dataCenterItem);
storageItem.setEntity(storage);
storagesItem.getChildren().add(storageItem);
}
}
SystemTreeItemModel templatesItem = new SystemTreeItemModel();
templatesItem.setType(SystemTreeItemType.Templates);
templatesItem.setTitle("Templates");
templatesItem.setParent(dataCenterItem);
templatesItem.setEntity(dataCenter);
dataCenterItem.getChildren().add(templatesItem);
SystemTreeItemModel clustersItem = new SystemTreeItemModel();
clustersItem.setType(SystemTreeItemType.Clusters);
clustersItem.setTitle("Clusters");
clustersItem.setParent(dataCenterItem);
clustersItem.setEntity(dataCenter);
dataCenterItem.getChildren().add(clustersItem);
if (clusterMap.containsKey(dataCenter.getId()))
{
for (VDSGroup cluster : clusterMap.get(dataCenter.getId()))
{
SystemTreeItemModel clusterItem = new SystemTreeItemModel();
clusterItem.setType(SystemTreeItemType.Cluster);
clusterItem.setTitle(cluster.getname());
clusterItem.setParent(dataCenterItem);
clusterItem.setEntity(cluster);
clustersItem.getChildren().add(clusterItem);
SystemTreeItemModel hostsItem = new SystemTreeItemModel();
hostsItem.setType(SystemTreeItemType.Hosts);
hostsItem.setTitle("Hosts");
hostsItem.setParent(clusterItem);
hostsItem.setEntity(cluster);
clusterItem.getChildren().add(hostsItem);
if (hostMap.containsKey(cluster.getID()))
{
for (VDS host : hostMap.get(cluster.getID()))
{
SystemTreeItemModel hostItem = new SystemTreeItemModel();
hostItem.setType(SystemTreeItemType.Host);
hostItem.setTitle(host.getvds_name());
hostItem.setParent(clusterItem);
hostItem.setEntity(host);
hostsItem.getChildren().add(hostItem);
}
}
SystemTreeItemModel vmsItem = new SystemTreeItemModel();
vmsItem.setType(SystemTreeItemType.VMs);
vmsItem.setTitle("VMs");
vmsItem.setParent(clusterItem);
vmsItem.setEntity(cluster);
clusterItem.getChildren().add(vmsItem);
}
}
}
setItems(new java.util.ArrayList<SystemTreeItemModel>(java.util.Arrays.asList(new SystemTreeItemModel[] { systemItem })));
}
@Override
public void ExecuteCommand(UICommand command)
{
super.ExecuteCommand(command);
if (command == getResetCommand())
{
Reset();
}
else if (command == getExpandAllCommand())
{
ExpandAll();
}
else if (command == getCollapseAllCommand())
{
CollapseAll();
}
}
private void CollapseAll()
{
SetIsExpandedRecursively(false, getItems().get(0));
}
private void ExpandAll()
{
SetIsExpandedRecursively(true, getItems().get(0));
}
private void SetIsExpandedRecursively(boolean value, SystemTreeItemModel root)
{
root.setIsExpanded(value);
for (SystemTreeItemModel model : root.getChildren())
{
SetIsExpandedRecursively(value, model);
}
}
private void Reset()
{
getResetRequestedEvent().raise(this, EventArgs.Empty);
}
}