package sushi.application.pages.transformation;
import java.io.Serializable;
import java.util.ArrayList;
/**
* representation of a tree node
*
* @param <T> type of content to be stored
*/
public class TransformationTreeTableElement<T> implements Serializable {
private static final long serialVersionUID = 1L;
private int ID;
private T content;
private TransformationTreeTableElement<T> parent;
private ArrayList<TransformationTreeTableElement<T>> children = new ArrayList<TransformationTreeTableElement<T>>();
private int probability;
/**
* creates a root node
*
* @param content the content to be stored in the new node
*/
public TransformationTreeTableElement(int ID, T content, int probability) {
this.ID = ID;
this.content = content;
this.probability = probability;
}
/**
* creates a node and adds it to its parent
*
* @param parent
* @param content the content to be stored in the node
*/
public TransformationTreeTableElement(TransformationTreeTableElement<T> parent, int ID, T content, int 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 TransformationTreeTableElement<T> getParent() {
return parent;
}
public ArrayList<TransformationTreeTableElement<T>> getChildren() {
return children;
}
@Override
public String toString() {
if (content == null) {
return new String();
}
return content.toString();
}
public int getProbability() {
return probability;
}
public void setProbability(int probability) {
this.probability = probability;
}
public void remove() {
if(this.parent != null){
this.parent.getChildren().remove(this);
}
//Müssen Kinder noch explizit entfernt werden?
}
public void setParent(TransformationTreeTableElement<T> parent) {
this.parent = parent;
}
}