package org.signalml.plugin.newstager.logic.book.tag;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.signalml.plugin.newstager.data.book.NewStagerBookSample;
import org.signalml.plugin.newstager.data.tag.NewStagerBookAtomTagBuilderData;
import org.signalml.plugin.newstager.data.tag.NewStagerTagBuilderResult;
import org.signalml.plugin.newstager.data.tag.NewStagerTagCollection;
import org.signalml.plugin.newstager.data.tag.NewStagerTagCollectionType;
import org.signalml.plugin.newstager.logic.book.NewStagerTagBuilderSet;
public class NewStagerAtomTagBuilderChain extends NewStagerAbstractTagBuilder {
List<INewStagerTagBuilder> builders = new LinkedList<INewStagerTagBuilder>();
private NewStagerTagBuilderResult result;
public NewStagerAtomTagBuilderChain(NewStagerBookAtomTagBuilderData data) {
super(data);
}
public NewStagerAtomTagBuilderChain(NewStagerBookAtomTagBuilderData data, String description) {
super(data, description);
}
public NewStagerAtomTagBuilderChain compose(INewStagerTagBuilder builder) {
builders.add(builder);
return this;
}
public NewStagerAtomTagBuilderChain composeChain() {
return this.composeChain(null);
}
public NewStagerAtomTagBuilderChain composeChain(String description) {
NewStagerAtomTagBuilderChain chain = new NewStagerAtomTagBuilderChain(this.data, description);
this.compose(chain);
return chain;
}
@Override
public boolean process(NewStagerBookSample sample) {
for (INewStagerTagBuilder builder : this.builders) {
if (builder.process(sample)) {
return true;
}
}
return false;
}
@Override
public NewStagerTagBuilderResult getResult() {
if (this.result != null) {
return new NewStagerTagBuilderResult(this.result.tagMap, false);
}
NewStagerTagBuilderSet builderSet = new NewStagerTagBuilderSet(this.builders);
Map<NewStagerTagCollectionType, NewStagerTagCollection> builderSetResult = builderSet.getResult();
this.result = new NewStagerTagBuilderResult(builderSetResult, true);
return this.result;
}
@Override
protected NewStagerTagCollectionType getTagType() {
// TODO Auto-generated method stub
return null;
}
}