package com.revolsys.record.io.format.kml;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.util.Set;
import com.revolsys.geometry.cs.CoordinateSystem;
import com.revolsys.geometry.io.GeometryReader;
import com.revolsys.io.map.MapWriter;
import com.revolsys.io.map.MapWriterFactory;
import com.revolsys.record.io.GeometryRecordReaderFactory;
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 Kmz extends GeometryRecordReaderFactory
implements RecordWriterFactory, MapWriterFactory {
public Kmz() {
super(Kml22Constants.KMZ_FORMAT_DESCRIPTION);
addMediaTypeAndFileExtension(Kml22Constants.KMZ_MEDIA_TYPE, Kml22Constants.KMZ_FILE_EXTENSION);
}
@Override
public Set<CoordinateSystem> getCoordinateSystems() {
return Kml.COORDINATE_SYSTEMS;
}
@Override
public boolean isBinary() {
return true;
}
@Override
public GeometryReader newGeometryReader(final Resource resource) {
final KmzGeometryIterator iterator = new KmzGeometryIterator(resource);
return iterator;
}
@Override
public MapWriter newMapWriter(final java.io.Writer out) {
throw new IllegalArgumentException("Cannot use a writer");
}
@Override
public MapWriter newMapWriter(final OutputStream out) {
return new KmzMapWriter(out);
}
@Override
public MapWriter newMapWriter(final OutputStream out, final Charset charset) {
return newMapWriter(out);
}
@Override
public RecordWriter newRecordWriter(final String baseName,
final RecordDefinition recordDefinition, final OutputStream outputStream,
final Charset charset) {
return new KmzRecordWriter(outputStream, charset);
}
}