package com.revolsys.record.io.format.kml; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import com.revolsys.io.AbstractRecordWriter; import com.revolsys.io.FileUtil; import com.revolsys.record.Record; public class KmzRecordWriter extends AbstractRecordWriter { private final KmlRecordWriter kmlWriter; private final ZipOutputStream zipOut; public KmzRecordWriter(final OutputStream out, final Charset charset) { try { final BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(out); this.zipOut = new ZipOutputStream(bufferedOutputStream); final ZipEntry entry = new ZipEntry("doc.kml"); this.zipOut.putNextEntry(entry); final OutputStreamWriter writer = FileUtil.newUtf8Writer(this.zipOut); this.kmlWriter = new KmlRecordWriter(writer); } catch (final Throwable e) { throw new RuntimeException("Unable to create KMZ file", e); } } @Override public void close() { try { this.kmlWriter.close(); this.zipOut.close(); } catch (final IOException e) { } } @Override public void flush() { try { this.kmlWriter.flush(); this.zipOut.flush(); } catch (final IOException e) { throw new RuntimeException("Unable to flush: ", e); } } @Override public void open() { this.kmlWriter.open(); } @Override public void setProperty(final String name, final Object value) { super.setProperty(name, value); this.kmlWriter.setProperty(name, value); } @Override public String toString() { return "KMZ Writer"; } @Override public void write(final Record object) { this.kmlWriter.write(object); } }