Open Source Repository

Home /csv/supercsv-1.52 | Repository Home


org/supercsv/io/AbstractCsvReader.java
package org.supercsv.io;

import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import org.supercsv.exception.SuperCSVException;
import org.supercsv.prefs.CsvPreference;

/**
 * This is a set of functionality used across the various readers
 
 @author Kasper B. Graversen
 */
public abstract class AbstractCsvReader implements ICsvReader {

/** A reference to the last read line */
protected List<String> line;

/** the tokenizer */
protected ITokenizer tokenizer;

/** the preferences */
protected CsvPreference preferences;

protected AbstractCsvReader() {
  line = new ArrayList<String>();
}

/**
 * {@inheritDoc}
 */
public void close() throws IOException {
  tokenizer.close();
}

/**
 * {@inheritDoc}
 */
public String get(final int Nthrows IOException, IndexOutOfBoundsException {
  return line.get(N);
}

/**
 * A convenience method for reading the header of a csv file as a string array. This array can serve as input when
 * reading maps or beans.
 
 @param firstLineCheck
 *            check to ensure that this method is only applied to the first line of the CSV file.
 @since 1.0
 */
public String[] getCSVHeader(final boolean firstLineCheckthrows IOException {
  iffirstLineCheck && tokenizer.getLineNumber() != ) {
    throw new SuperCSVException("CSV header can only be fetched as the first read operation on a source!");
  }
  final List<String> tmp = new ArrayList<String>();
  String[] res = null;
  iftokenizer.readStringList(tmp) ) {
    res = tmp.toArray(new String[0]);
  }
  return res;
}

/**
 * {@inheritDoc}
 */
public int getLineNumber() {
  return tokenizer.getLineNumber();
}

/**
 * {@inheritDoc}
 */
public int length() throws IOException {
  return line.size();
}

/**
 * Sets the input stream
 */
public ICsvReader setInput(final Reader stream) {
  tokenizer = new Tokenizer(stream, this.preferences);
  return this;
}

/**
 * {@inheritDoc}
 */
public ICsvReader setPreferences(final CsvPreference preference) {
  this.preferences = preference;
  return this;
}

/**
 * {@inheritDoc}
 */
public ICsvReader setTokenizer(final ITokenizer tokenizer) {
  this.tokenizer = tokenizer;
  return this;
}

}