All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.marc4j.samples.PersonalNamesReader Maven / Gradle / Ivy


package org.marc4j.samples;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.marc4j.MarcException;
import org.marc4j.MarcReader;
import org.marc4j.marc.ControlField;
import org.marc4j.marc.DataField;
import org.marc4j.marc.MarcFactory;
import org.marc4j.marc.Record;

public class PersonalNamesReader implements MarcReader {

    private BufferedReader br = null;

    private final MarcFactory factory;

    private String line;

    /**
     * Creates a PersonalNamesReader from the supplied InputStream.
     *
     * @param in
     */
    public PersonalNamesReader(final InputStream in) {
        factory = MarcFactory.newInstance();
        br = new BufferedReader(new InputStreamReader(in));
    }

    /**
     * Returns true if the PersonalNamesReader has another Record.
     */
    @Override
    public boolean hasNext() {
        try {
            if ((line = br.readLine()) != null) {
                return true;
            } else {
                return false;
            }
        } catch (final IOException e) {
            throw new MarcException(e.getMessage(), e);
        }
    }

    /**
     * Returns the next Record in the PersonalNamesReader.
     */
    @Override
    public Record next() {
        final String[] tokens = line.trim().split("\t");

        if (tokens.length != 3) {
            throw new MarcException("Index out of bounds");
        }

        final Record record = factory.newRecord("00000nz  a2200000o  4500");

        final ControlField cf = factory.newControlField("001", tokens[0]);
        record.addVariableField(cf);

        final DataField df = factory.newDataField("100", '1', ' ');
        df.addSubfield(factory.newSubfield('a', tokens[1]));
        df.addSubfield(factory.newSubfield('d', tokens[2]));
        record.addVariableField(df);

        return record;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy