package com.vistatec.ocelot.segment.model;
import java.util.ArrayList;
import java.util.List;
/**
* SegmentVariant implementation for use in tests.
*/
public class SimpleSegmentVariant extends BaseSegmentVariant {
private List<SegmentAtom> atoms = new ArrayList<>();
private SimpleSegmentVariant() {
}
public SimpleSegmentVariant(String text) {
atoms.add(new TextAtom(text));
}
public SimpleSegmentVariant(List<SegmentAtom> atoms) {
this.atoms = atoms;
}
@Override
public List<SegmentAtom> getAtoms() {
return atoms;
}
@Override
public SegmentVariant createEmptyTarget() {
return new SimpleSegmentVariant();
}
@Override
public SegmentVariant createCopy() {
throw new UnsupportedOperationException();
}
@Override
public void setContent(SegmentVariant variant) {
atoms.clear();
atoms.addAll(((SimpleSegmentVariant)variant).getAtoms());
}
@Override
public void modifyChars(int offset, int charsToReplace, String newText) {
throw new UnsupportedOperationException("Test code doesn't implement modifyChars");
}
@Override
protected void setAtoms(List<SegmentAtom> atoms) {
this.atoms = atoms;
}
public static class Builder {
List<SegmentAtom> segAtoms = new ArrayList<>();
public Builder text(String text) {
segAtoms.add(new TextAtom(text));
return this;
}
public Builder code(String id, String basic, String verbose) {
segAtoms.add(new CodeAtom(id, basic, verbose));
return this;
}
public SegmentVariant build() {
return new SimpleSegmentVariant(segAtoms);
}
}
}