package org.solrmarc.marc;
import java.io.InputStream;
import java.util.List;
import org.marc4j.MarcReader;
import org.marc4j.MarcXmlReader;
import org.marc4j.marc.ControlField;
import org.marc4j.marc.DataField;
import org.marc4j.marc.Record;
import org.marc4j.marc.Subfield;
public class MarcUnprettyXmlReader implements MarcReader
{
private MarcXmlReader reader = null;
public MarcUnprettyXmlReader(InputStream input)
{
reader = new MarcXmlReader(input);
}
public boolean hasNext()
{
return (reader.hasNext());
}
public Record next()
{
Record rec = reader.next();
rec.getLeader().setCharCodingScheme('a');
List<?> varFields = rec.getVariableFields();
for (Object f : varFields)
{
if (f instanceof ControlField)
{
ControlField cf = (ControlField)f;
String data = cf.getData();
if (data.contains("\n"))
{
data = data.replaceAll("\\r?\\n[ \t]*", " ");
data = data.trim();
cf.setData(data);
}
}
else if (f instanceof DataField)
{
DataField df = (DataField)f;
List<?> subFields = df.getSubfields();
for (Object s : subFields)
{
Subfield sf = (Subfield)s;
String data = sf.getData();
if (data.contains("\n"))
{
data = data.replaceAll("\\r?\\n[ \t]*", " ");
data = data.trim();
sf.setData(data);
}
}
}
}
return(rec);
}
}