package com.revolsys.record.io; import java.io.File; import java.io.OutputStream; import java.nio.charset.Charset; import java.util.Arrays; import com.revolsys.io.AbstractIoFactoryWithCoordinateSystem; import com.revolsys.record.schema.RecordDefinition; import com.revolsys.record.schema.RecordStore; import com.revolsys.spring.resource.Resource; public class RecordStoreRecordAndGeometryWriterFactory extends AbstractIoFactoryWithCoordinateSystem implements RecordWriterFactory { public RecordStoreRecordAndGeometryWriterFactory(final String name, final String mediaType, final boolean geometrySupported, final boolean customAttributionSupported, final Iterable<String> fileExtensions) { super(name); for (final String fileExtension : fileExtensions) { addMediaTypeAndFileExtension(mediaType, fileExtension); } } public RecordStoreRecordAndGeometryWriterFactory(final String name, final String mediaType, final boolean geometrySupported, final boolean customAttributionSupported, final String... fileExtensions) { this(name, mediaType, geometrySupported, customAttributionSupported, Arrays.asList(fileExtensions)); } @Override public RecordWriter newRecordWriter(final RecordDefinition recordDefinition, final Resource resource) { final File file = resource.getFile(); final RecordStore recordStore = RecordStore.newRecordStore(file); if (recordStore == null) { return null; } else { recordStore.initialize(); return new RecordStoreRecordWriter(recordStore, recordDefinition); } } @Override public RecordWriter newRecordWriter(final String baseName, final RecordDefinition recordDefinition, final OutputStream outputStream, final Charset charset) { throw new UnsupportedOperationException("Writing to a stream not currently supported"); } }