/******************************************************************************* | |
* 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; | |
} | |
} |