package com.revolsys.geometry.io; import java.io.OutputStream; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.Set; import com.revolsys.collection.set.Sets; import com.revolsys.datatype.DataType; import com.revolsys.datatype.DataTypes; import com.revolsys.io.FileIoFactory; import com.revolsys.io.IoFactoryWithCoordinateSystem; import com.revolsys.spring.resource.Resource; public interface GeometryWriterFactory extends FileIoFactory, IoFactoryWithCoordinateSystem { static Set<DataType> ALL_GEOMETRY_TYPES = Sets.newLinkedHash(// DataTypes.GEOMETRY, // DataTypes.GEOMETRY_COLLECTION, // DataTypes.POINT, // DataTypes.MULTI_POINT, // DataTypes.LINEAR_RING, // DataTypes.LINE_STRING, // DataTypes.MULTI_LINE_STRING, // DataTypes.POLYGON, // DataTypes.MULTI_POLYGON); default GeometryWriter newGeometryWriter(final Object source) { final Resource resource = Resource.getResource(source); return newGeometryWriter(resource); } /** * Construct a new writer to write to the specified resource. * * @param resource The resource to write to. * @return The writer. */ default GeometryWriter newGeometryWriter(final Resource resource) { final OutputStream out = resource.newBufferedOutputStream(); final String baseName = resource.getBaseName(); return newGeometryWriter(baseName, out); } default GeometryWriter newGeometryWriter(final String baseName, final OutputStream out) { return newGeometryWriter(baseName, out, StandardCharsets.UTF_8); } GeometryWriter newGeometryWriter(String baseName, OutputStream out, Charset charset); }