package mods.eln.sim.mna.state; import mods.eln.sim.mna.RootSystem; import mods.eln.sim.mna.SubSystem; import mods.eln.sim.mna.component.Component; import mods.eln.sim.mna.component.IAbstractor; import java.util.ArrayList; public class State { private int id = -1; public double state; SubSystem subSystem; ArrayList<Component> components = new ArrayList<Component>(); boolean isPrivateSubSystem = false; boolean mustBeFarFromInterSystem = false; public IAbstractor abstractedBy; public int getId() { return id; } public void setId(int id) { this.id = id; } public void addedTo(SubSystem s) { this.subSystem = s; } public SubSystem getSubSystem() { if (isAbstracted()) return abstractedBy.getAbstractorSubSystem(); return subSystem; } public void quitSubSystem() { subSystem = null; } public ArrayList<Component> getConnectedComponents() { return components; } public ArrayList<Component> getConnectedComponentsNotAbstracted() { ArrayList<Component> list = new ArrayList<Component>(); for (Component c : components) { if (c.isAbstracted()) continue; list.add(c); } return list; } public void add(Component c) { components.add(c); //System.out.println("ADD " + c + " To " + this); } public void remove(Component c) { components.remove(c); } public boolean canBeSimplifiedByLine() { return false; } public State setAsPrivate() { isPrivateSubSystem = true; return this; } public State setAsMustBeFarFromInterSystem() { mustBeFarFromInterSystem = true; return this; } public boolean mustBeFarFromInterSystem() { return mustBeFarFromInterSystem; } public boolean isPrivateSubSystem() { return isPrivateSubSystem; } public void returnToRootSystem(RootSystem root) { root.addStates.add(this); } public boolean isAbstracted() { return abstractedBy != null; } public boolean isNotSimulated() { return subSystem == null && abstractedBy == null; } }