package com.revolsys.record.io.format.moep;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Iterator;
import com.revolsys.collection.map.MapEx;
import com.revolsys.io.AbstractReader;
import com.revolsys.record.Record;
import com.revolsys.record.RecordFactory;
import com.revolsys.record.io.RecordReader;
import com.revolsys.record.schema.RecordDefinition;
import com.revolsys.spring.resource.Resource;
public class MoepBinaryReader extends AbstractReader<Record> implements RecordReader {
private MoepBinaryIterator iterator;
/**
* Construct a new MoepBinaryReader.
*
* @param moepDirectoryReader
* @param file the file.
* @param factory The factory used to create Record instances.
*/
public MoepBinaryReader(final MoepDirectoryReader moepDirectoryReader, final Resource resource,
final RecordFactory factory) {
final InputStream in = resource.getInputStream();
this.iterator = new MoepBinaryIterator(moepDirectoryReader, resource.getBaseName(), in,
factory);
}
/**
* Construct a new MoepBinaryReader.
*
* @param url The url to the file.
* @param factory The factory used to create Record instances.
*/
public MoepBinaryReader(final URL url, final RecordFactory factory) {
try {
final InputStream in = url.openStream();
final String path = url.getPath();
String fileName = path;
final int slashIndex = fileName.lastIndexOf('/');
if (slashIndex != -1) {
fileName = fileName.substring(slashIndex + 1);
}
this.iterator = new MoepBinaryIterator(null, fileName, in, factory);
} catch (final IOException e) {
}
}
@Override
public void close() {
this.iterator.close();
}
@Override
public MapEx getProperties() {
return this.iterator.getProperties();
}
@Override
public RecordDefinition getRecordDefinition() {
return MoepConstants.RECORD_DEFINITION;
}
/**
* Get the iterator for the MOEP file.
*
* @return The iterator.
*/
@Override
public Iterator iterator() {
return this.iterator;
}
@Override
public void open() {
this.iterator.hasNext();
}
}