package hu.sztaki.ilab.longneck.process.block;
import hu.sztaki.ilab.longneck.Record;
import hu.sztaki.ilab.longneck.process.AbstractSourceInfoContainer;
import hu.sztaki.ilab.longneck.process.VariableSpace;
import java.util.ArrayList;
import java.util.List;
/**
* Sequence of transformation blocks.
*
* @author Molnar Peter <molnarp@sztaki.mta.hu>
*/
public class Sequence extends AbstractSourceInfoContainer
implements CompoundBlock, Cloneable {
/** The sequence id. */
private int id;
/** The blocks contained in this compound block. */
protected List<? extends Block> blocks;
@Override
public List<Block> getBlocks() {
return (List<Block>) blocks;
}
@Override
public void setBlocks(List<? extends Block> blocks) {
this.blocks = blocks;
}
@Override
public Sequence clone() {
Sequence copy = (Sequence) super.clone();
if (blocks != null) {
copy.blocks = new ArrayList<Block>(blocks.size());
for (final Block b : blocks) {
Block bc = b.clone() ;
((List<Block>) copy.blocks).add(bc);
}
}
return copy;
}
@Override
public void apply(Record record, VariableSpace parentScope) {
}
public int getSeqId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public boolean hasPosition(int pos) {
if (blocks == null) {
return false;
}
return (pos >= 0 && pos < blocks.size());
}
}