blob: 4aa4947c7fabbcfeedc3303fbf8555cfeb4fcf59 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004-2010 Abel Hegedus and Daniel Varro
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Abel Hegedus - initial API and implementation
*******************************************************************************/
package org.eclipse.viatra2.core.tracebased.tracetree;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/**
* @author Abel Hegedus
*
*/
public abstract class AbstractTraceTreeNode implements ITraceTreeNode {
private Map<String,ITraceTreeNode> children;
private List<ITraceTreeNode> orderedChildren;
private ITraceTreeNode parent;
private String id;
private boolean terminated = false;
/* (non-Javadoc)
* @see org.eclipse.viatra2.trace.trace.ITraceTreeNode#getChildren()
*/
@Override
public Map<String,ITraceTreeNode> getChildren() {
if(children == null){
children = new TreeMap<String, ITraceTreeNode>();
orderedChildren = new ArrayList<ITraceTreeNode>();
}
return children;
}
@Override
public List<ITraceTreeNode> getOrderedChildrenList() {
if(orderedChildren == null){
children = new TreeMap<String, ITraceTreeNode>();
orderedChildren = new ArrayList<ITraceTreeNode>();
}
return orderedChildren;
}
@Override
public void addChild(ITraceTreeNode child) {
getChildren().put(child.getID(), child);
getOrderedChildrenList().add(child);
}
/* (non-Javadoc)
* @see org.eclipse.viatra2.trace.trace.ITraceTreeNode#getChildrenIDs()
*/
@Override
public Set<String> getChildrenIDs() {
return getChildren().keySet();
}
/* (non-Javadoc)
* @see org.eclipse.viatra2.trace.trace.ITraceTreeNode#getChild(java.lang.String)
*/
@Override
public ITraceTreeNode getChild(String childID) {
// TODO Auto-generated method stub
return getChildren().get(childID);
}
/* (non-Javadoc)
* @see org.eclipse.viatra2.trace.trace.ITraceTreeNode#getID()
*/
@Override
public String getID() {
return id;
}
/**
*
*/
public AbstractTraceTreeNode(ITraceTreeNode parent, String id) {
this.parent = parent;
this.id = id;
if(parent != null){
parent.addChild(this);
}
}
/* (non-Javadoc)
* @see org.eclipse.viatra2.trace.trace.ITraceTreeNode#getParent()
*/
@Override
public ITraceTreeNode getParent() {
return parent;
}
/**
* @param terminated the terminated to set
*/
public void setTerminated(boolean terminated) {
this.terminated = terminated;
}
/**
* @return the terminated
*/
public boolean isTerminated() {
return terminated;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("ID: ").append(id);
if(parent != null){
sb.append("; Parent: ").append(parent.getID());
}
if(terminated){
sb.append("; Terminated");
} else {
sb.append("; In progress");
}
return sb.toString();
}
/**
* @return the orderedChildren
*/
public List<ITraceTreeNode> getOrderedChildren() {
return orderedChildren;
}
}