/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.communication.views.model;
import java.util.Collection;
import java.util.Map;
import de.rcenvironment.core.communication.common.NetworkGraph;
import de.rcenvironment.core.communication.common.NetworkGraphWithProperties;
import de.rcenvironment.core.communication.common.InstanceNodeSessionId;
import de.rcenvironment.core.communication.connection.api.ConnectionSetup;
import de.rcenvironment.core.component.api.DistributedComponentKnowledge;
import de.rcenvironment.core.gui.communication.views.NetworkView;
import de.rcenvironment.core.monitoring.system.api.model.FullSystemAndProcessDataSnapshot;
/**
* The complete model that the {@link NetworkView} is filled from.
*
* @author Robert Mischke
* @author David Scholz
*/
public class NetworkViewModel {
/**
* The reachable network graph, with no attached properties.
*/
public NetworkGraph networkGraph;
/**
* The latest {@link DistributedComponentKnowledge} object.
*/
public DistributedComponentKnowledge componentKnowledge;
/**
* The collection of connection setups.
*/
public Collection<ConnectionSetup> connectionSetups;
/**
* The collected node's property maps; the inner maps must be immutable.
*/
public Map<InstanceNodeSessionId, Map<String, String>> nodeProperties;
/**
* The merged {@link NetworkGraphWithProperties}, constructed from {@link #networkGraph} and {@link #nodeProperties}.
*/
public NetworkGraphWithProperties networkGraphWithProperties;
/**
* The map of {@link FullSystemAndProcessDataSnapshot}.
*/
public Map<InstanceNodeSessionId, FullSystemAndProcessDataSnapshot> monitoringDataModelMap;
public NetworkViewModel(NetworkGraph networkGraph, DistributedComponentKnowledge componentKnowledge,
Collection<ConnectionSetup> connectionSetups, Map<InstanceNodeSessionId, Map<String, String>> nodeProperties,
Map<InstanceNodeSessionId, FullSystemAndProcessDataSnapshot> monitoringDataModelMap) {
this.networkGraph = networkGraph;
this.nodeProperties = nodeProperties;
this.componentKnowledge = componentKnowledge;
this.connectionSetups = connectionSetups;
this.monitoringDataModelMap = monitoringDataModelMap;
updateGraphWithProperties();
}
public NetworkGraph getNetworkGraphWithProperties() {
return networkGraphWithProperties;
}
public DistributedComponentKnowledge getComponentKnowledge() {
return componentKnowledge;
}
public Collection<ConnectionSetup> getConnectionSetups() {
return connectionSetups;
}
public Map<InstanceNodeSessionId, Map<String, String>> getNodeProperties() {
return nodeProperties;
}
public Map<InstanceNodeSessionId, FullSystemAndProcessDataSnapshot> getMonitoringDataModelMap() {
return monitoringDataModelMap;
}
/**
* Updates the merged {@link NetworkGraphWithProperties} from {@link #networkGraph} and {@link #nodeProperties}.
*/
public void updateGraphWithProperties() {
if (networkGraph != null) {
networkGraphWithProperties = networkGraph.attachNodeProperties(nodeProperties);
} else {
networkGraphWithProperties = null;
}
}
}