package org.solrmarc.index.specification; import java.util.Collection; import org.marc4j.marc.ControlField; import org.marc4j.marc.VariableField; import org.solrmarc.index.specification.conditional.Condition; public class SingleControlFieldSpecification extends SingleSpecification { public SingleControlFieldSpecification(String tag, Condition cond) { super(tag, cond); } public SingleControlFieldSpecification(String tag) { this(tag, null); } private SingleControlFieldSpecification(SingleControlFieldSpecification toClone) { super(toClone); } @Override public void addConditional(Condition cond) { if (this.cond == null) this.cond = cond; } public String getTag() { return tag; } @Override public String[] getTags() { return tags; } @Override public void addFieldValues(Collection<String> result, VariableField vf) throws Exception { final String data; data = ((ControlField) vf).getData(); StringBuilder sb = fmt.start(); fmt.addTag(sb, vf); Collection<String> prepped = fmt.prepData(vf, false, data); for (String val : prepped) { fmt.addVal(sb, null, val); fmt.addAfterSubfield(sb, result); } fmt.addAfterField(sb, result); } @Override public Object makeThreadSafeCopy() { return new SingleControlFieldSpecification(this); } }