package com.revolsys.record.io.format.xbase; import java.io.IOException; import java.io.OutputStream; import java.nio.charset.Charset; import com.revolsys.io.AbstractIoFactoryWithCoordinateSystem; import com.revolsys.record.Record; import com.revolsys.record.RecordFactory; import com.revolsys.record.io.RecordReader; import com.revolsys.record.io.RecordReaderFactory; import com.revolsys.record.io.RecordWriter; import com.revolsys.record.io.RecordWriterFactory; import com.revolsys.record.schema.RecordDefinition; import com.revolsys.spring.resource.OutputStreamResource; import com.revolsys.spring.resource.Resource; public class XBase extends AbstractIoFactoryWithCoordinateSystem implements RecordReaderFactory, RecordWriterFactory { public XBase() { super("D-Base"); addMediaTypeAndFileExtension("application/dbase", "dbf"); addMediaTypeAndFileExtension("application/dbf", "dbf"); } @Override public boolean isBinary() { return true; } @Override public boolean isGeometrySupported() { return false; } @Override public boolean isReadFromZipFileSupported() { return true; } @Override public RecordReader newRecordReader(final Resource resource, final RecordFactory<? extends Record> recordFactory) { try { return new XbaseRecordReader(resource, recordFactory); } catch (final IOException e) { throw new RuntimeException("Unable to create reader for " + resource, e); } } @Override public RecordWriter newRecordWriter(final RecordDefinition recordDefinition, final Resource resource) { return new XbaseRecordWriter(recordDefinition, resource); } @Override public RecordWriter newRecordWriter(final String baseName, final RecordDefinition recordDefinition, final OutputStream outputStream, final Charset charset) { return newRecordWriter(recordDefinition, new OutputStreamResource(baseName, outputStream)); } }