package org.signalml.plugin.newstager.logic.book.tag;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.signalml.plugin.data.tag.IPluginTagDef;
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;
public abstract class NewStagerAbstractTagBuilder implements
INewStagerTagBuilder {
protected Collection<IPluginTagDef> tags;
protected NewStagerTagCollection computedResultCollection;
protected final NewStagerBookAtomTagBuilderData data;
protected String description;
public NewStagerAbstractTagBuilder(NewStagerBookAtomTagBuilderData data) {
this.data = data;
this.computedResultCollection = null;
}
public NewStagerAbstractTagBuilder(NewStagerBookAtomTagBuilderData data, String description) {
this(data);
this.description = description;
}
@Override
public NewStagerTagBuilderResult getResult() {
boolean freshFlag = true;
if (this.computedResultCollection == null) {
this.computedResultCollection = new NewStagerTagCollection(
this.getTagType(), this.tags);
} else {
freshFlag = false;
}
Map<NewStagerTagCollectionType, NewStagerTagCollection> map = new HashMap<NewStagerTagCollectionType, NewStagerTagCollection>(
1);
map.put(this.getTagType(), this.computedResultCollection);
return new NewStagerTagBuilderResult(map, freshFlag);
}
@Override
public String toString() {
return this.description != null ? this.description : super.toString();
}
protected abstract NewStagerTagCollectionType getTagType();
}