package ru.csu.stan.java.cfg.automaton.base;
import java.math.BigInteger;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
/**
*
* @author mz
*
*/
public class FlowCursor implements Cloneable
{
private int currentId = 1;
private Set<Integer> parentIds = new LinkedHashSet<Integer>();
public int getCurrentId()
{
return currentId;
}
public void setCurrentId(int value){
this.currentId = value;
}
public BigInteger getCurrentIdBigInteger(){
return BigInteger.valueOf(currentId);
}
public void incrementCurrentId()
{
this.currentId++;
}
public List<Integer> getParentIds()
{
return new LinkedList<Integer>(parentIds);
}
public void clearParentIds(){
for (Iterator<Integer> it = parentIds.iterator(); it.hasNext();){
if (it.next().intValue() > 0)
it.remove();
}
}
public void setParentIds(List<Integer> parentIds){
clearParentIds();
for (Integer i: parentIds)
addParentId(i.intValue());
}
public void addParentId(int id)
{
this.parentIds.add(Integer.valueOf(id));
}
@Override
public FlowCursor clone()
{
FlowCursor newObject = new FlowCursor();
newObject.currentId = this.currentId;
for (Integer i: parentIds)
newObject.addParentId(i.intValue());
return newObject;
}
}