package ui.model;

import java.util.ArrayList;

import classes.CpsNode;
import classes.CpsUpperNode;
import classes.IntermediateCalculationCable;
import classes.ExitCable;
/**
 * For the @VisualRepresentationalState only.
 * @author Tom
 *
 */
public class DecoratedGroupNode {
	private CpsUpperNode model;
	private ArrayList<Supplier> supplierList;
	private ArrayList<Passiv> passivList;
	private ArrayList<Consumer> consumerList;
	private ArrayList<CpsNode> nodeList;
	/**
	 * Cables that only exist on that group node. From a object in that group node to a object in that group Node.
	 * Not exit the group node (a layer down).
	 */
	private ArrayList<DecoratedCable> internCableList;
	/**
	 * Cables that exit this group node (a Layer Up). From a object in this group node to a object in a upper layer.
	 */
	private ArrayList<ExitCable> exitCableList;	
	private ArrayList<DecoratedSwitch> switchList;
	private ArrayList<DecoratedGroupNode> groupNodeList;



	public DecoratedGroupNode(CpsUpperNode model) {
		this.model = model;
		this.supplierList = new ArrayList<Supplier>();
		this.passivList = new ArrayList<Passiv>();
		this.consumerList = new ArrayList<Consumer>();
		this.nodeList = new ArrayList<CpsNode>();
		this.internCableList = new ArrayList<DecoratedCable>();
		this.exitCableList = new ArrayList<ExitCable>();
		this.switchList = new ArrayList<DecoratedSwitch>();
		this.groupNodeList = new ArrayList<DecoratedGroupNode>();
	}
	public CpsUpperNode getModel() {
		return model;
	}
	public ArrayList<Supplier> getSupplierList() {
		return supplierList;
	}
	public ArrayList<Passiv> getPassivList() {
		return passivList;
	}
	public ArrayList<Consumer> getConsumerList() {
		return consumerList;
	}
	public ArrayList<CpsNode> getNodeList() {
		return nodeList;
	}
	public ArrayList<DecoratedCable> getInternCableList() {
		return internCableList;
	}
	public ArrayList<ExitCable> getExitCableList() {
		return exitCableList;
	}
	public ArrayList<DecoratedSwitch> getSwitchList() {
		return switchList;
	}
	public ArrayList<DecoratedGroupNode> getGroupNodeList() {
		return groupNodeList;
	}
	
}
