package sushi.application.pages.simulator.model; import java.io.Serializable; import java.util.ArrayList; import sushi.application.pages.simulator.DurationEntryPanel; import sushi.bpmn.decomposition.Component; import sushi.simulation.DerivationType; import sushi.event.attribute.SushiAttribute; /** * representation of a tree node * * @param <T> type of content to be stored */ public class SimulationTreeTableElement<T> implements Serializable { private static final long serialVersionUID = 1L; private int ID; private T content; private SimulationTreeTableElement<T> parent; private ArrayList<SimulationTreeTableElement<T>> children = new ArrayList<SimulationTreeTableElement<T>>(); private String probability; private String input; private DerivationType derivationType; private String derivation; private DurationEntryPanel durationEntryPanel; private String duration; public SimulationTreeTableElement(int ID, T content) { this(ID, content, "1"); } /** * creates a root node * * @param content the content to be stored in the new node */ public SimulationTreeTableElement(int ID, T content, String probability) { this.ID = ID; this.content = content; this.setProbability(probability); this.setDerivationType(DerivationType.FIXED); this.setDuration("0"); this.setDerivation("0"); } /** * creates a node and adds it to its parent * * @param parent * @param content the content to be stored in the node */ public SimulationTreeTableElement(SimulationTreeTableElement<T> parent, int ID, T content, String probability) { this(ID, content, probability); this.parent = parent; this.parent.getChildren().add(this); } public Integer getID() { return ID; } public void setID(int ID) { this.ID = ID; } public T getContent() { return content; } public boolean hasParent() { return parent != null; } public SimulationTreeTableElement<T> getParent() { return parent; } public ArrayList<SimulationTreeTableElement<T>> getChildren() { return children; } @Override public String toString() { if (content == null) { return new String(); } return content.toString(); } public void remove() { if(this.parent != null){ this.parent.getChildren().remove(this); } } public void setParent(SimulationTreeTableElement<T> parent) { this.parent = parent; } public String getInput() { return input; } public void setInput(String input) { this.input = input; } public boolean editableColumnsVisible() { return content instanceof SushiAttribute; } public boolean canHaveSubElements() { return content instanceof Component; } public DerivationType getDerivationType(){ return derivationType; } public void setDerivationType(DerivationType derivationType){ this.derivationType = derivationType; if(durationEntryPanel != null){ durationEntryPanel.setDerivationType(derivationType); } } public void setDerivation(String derivation) { this.derivation = derivation; } public String getDerivation() { return derivation; } public void setDurationEntryPanel(DurationEntryPanel durationEntryPanel) { this.durationEntryPanel = durationEntryPanel; } public String getDuration(){ return duration; } public void setDuration(String duration){ this.duration = duration; } public String getProbability() { return probability; } public void setProbability(String probability) { this.probability = probability; } }