package com.revolsys.record.io.format.gpx; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.nio.charset.Charset; import com.revolsys.io.FileUtil; import com.revolsys.record.Record; import com.revolsys.record.RecordFactory; import com.revolsys.record.io.AbstractRecordIoFactory; import com.revolsys.record.io.RecordReader; import com.revolsys.record.io.RecordWriter; import com.revolsys.record.io.RecordWriterFactory; import com.revolsys.record.schema.RecordDefinition; import com.revolsys.spring.resource.Resource; public class Gpx extends AbstractRecordIoFactory implements RecordWriterFactory { public Gpx() { super("GPS Exchange Format"); addMediaTypeAndFileExtension("application/gpx+xml", "gpx"); } @Override public boolean isCustomFieldsSupported() { return false; } public RecordReader newRecordReader(final RecordDefinition recordDefinition, final Resource resource, final RecordFactory<? extends Record> factory) { throw new UnsupportedOperationException(); } /** * Construct a new reader for the file using the specified data object factory. * * @param inputStream The file to read. * @param factory The factory used to create data objects. * @return The reader for the file. */ @Override public RecordReader newRecordReader(final Resource resource, final RecordFactory<? extends Record> recordFactory) { try { return new GpxIterator(resource, recordFactory, null); } catch (final IOException e) { throw new IllegalArgumentException("Unable to open resource " + resource, e); } } @Override public RecordWriter newRecordWriter(final String baseName, final RecordDefinition recordDefinition, final OutputStream outputStream, final Charset charset) { final OutputStreamWriter writer = FileUtil.newUtf8Writer(outputStream); return new GpxWriter(writer); } }