package classes.holonControlUnit; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; import classes.Holon; import classes.holonControlUnit.messages.Message; import classes.holonControlUnit.messages.NeighborhoodMsg; public class HolonControlUnit { private Holon holon, superHolon; private FlexibilityManager flexMan; private ForecastComputationUnit forecaster; private HierarchyControlUnit hierarchyController; private OptimizationManager optimizer; private StateEstimator stateEstimator; private TargetStateAssembler stateAssembler; private CommunicationModule communicator; public HolonControlUnit(Holon h) { this.holon = h; this.hierarchyController = new HierarchyControlUnit(this); this.flexMan = new FlexibilityManager(); this.forecaster = new ForecastComputationUnit(); this.optimizer = new OptimizationManager(); this.stateEstimator = new StateEstimator(); this.stateAssembler = new TargetStateAssembler(); this.communicator = new CommunicationModule(this); } public Holon getSuperHolon() { return superHolon; } public void setSuperHolon(Holon superHolon) { this.superHolon = superHolon; } public ArrayList getSubHolon() { return this.holon.childHolons; } public void addSubHolon(Holon subHolon) { this.hierarchyController.addSubHolon(subHolon.getUniqueID()); } public void addNewVirtualNeighbor(String virtualNeighbor) { this.hierarchyController.addVirtualNeighbor(virtualNeighbor); } public void addNewVirtualNeighbors(ArrayList virtualNeighbor) { this.hierarchyController.addVirtualNeighbors(virtualNeighbor); } public Holon getHolon() { return holon; } public FlexibilityManager getFlexMan() { return flexMan; } public ForecastComputationUnit getForecaster() { return forecaster; } public HierarchyControlUnit getHierarchyController() { return hierarchyController; } public OptimizationManager getOptimizer() { return optimizer; } public StateEstimator getStateEstimator() { return stateEstimator; } public TargetStateAssembler getStateAssembler() { return stateAssembler; } public CommunicationModule getCommunicator() { return communicator; } }