package org.solrmarc.index.extractor.formatter;
import java.util.Collection;
import java.util.EnumSet;
import org.marc4j.marc.VariableField;
import org.solrmarc.index.extractor.ExternalMethod;
import org.solrmarc.index.mapping.AbstractMultiValueMapping;
public interface FieldFormatter extends ExternalMethod
{
public final static EnumSet<eCleanVal> TITLE_SORT_UPPER = EnumSet.of(eCleanVal.CLEAN_EACH, eCleanVal.STRIP_ACCCENTS,
eCleanVal.STRIP_ALL_PUNCT, eCleanVal.TO_UPPER, eCleanVal.STRIP_INDICATOR_2);
public final static EnumSet<eCleanVal> TITLE_SORT_LOWER = EnumSet.of(eCleanVal.CLEAN_EACH, eCleanVal.STRIP_ACCCENTS,
eCleanVal.STRIP_ALL_PUNCT, eCleanVal.TO_LOWER, eCleanVal.STRIP_INDICATOR_2);
public enum eJoinVal
{
SEPARATE, JOIN;
};
public enum eCleanVal
{
CLEAN_END, CLEAN_EACH, STRIP_ALL_PUNCT, STRIP_ACCCENTS, TO_UPPER, TO_LOWER, STRIP_INDICATOR_2, UNTRIMMED, TO_TITLECASE;
};
public abstract String getFieldTagFmt();
public abstract FieldFormatter setFieldTagFmt(String fieldTagFmt);
public abstract String getIndicatorFmt();
public abstract FieldFormatter setIndicatorFmt(String indicatorFmt);
public abstract FieldFormatter setSfCodeFmt(String[] sfCodeFmt);
public abstract String getSeparator();
public abstract FieldFormatter setSeparator(String separator);
public abstract eJoinVal getJoinVal();
public abstract FieldFormatter setJoinVal(eJoinVal joinVal);
public abstract FieldFormatter setSubstring(int offset, int endOffset);
public abstract EnumSet<eCleanVal> getCleanVal();
public abstract FieldFormatter setCleanVal(EnumSet<eCleanVal> cleanVal);
public abstract FieldFormatter addCleanVal(eCleanVal cleanVal);
public abstract FieldFormatter addMap(AbstractMultiValueMapping valueMapping);
public abstract StringBuilder start();
public abstract void addTag(StringBuilder sb, VariableField df);
public abstract void addIndicators(StringBuilder sb, VariableField df);
public abstract void addCode(StringBuilder sb, String codeStr);
public Collection<String> prepData(VariableField vf, boolean isSubfieldA, String data) throws Exception;
public abstract void addVal(StringBuilder sb, String sfcode, String data);
public abstract void addSeparator(StringBuilder sb, int cnt);
public abstract void addAfterSubfield(StringBuilder sb, Collection<String> result);
public abstract void addAfterField(StringBuilder sb, Collection<String> result);
public abstract String cleanData(VariableField vf, boolean isSubfieldA, String data);
public abstract Collection<String> handleMapping(Collection<String> cleaned) throws Exception;
public abstract String handleSubFieldFormat(String sfCode, String mappedDataVal);
public abstract boolean hasFieldFormat();
public abstract String getFieldFormat();
}