package org.mapfish.print.servlet.job.impl.hibernate; import org.mapfish.print.servlet.job.PrintJob; import org.mapfish.print.servlet.job.PrintJobResult; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.net.URI; /** * A PrintJob implementation that write results to the database. * <p></p> */ public class HibernatePrintJob extends PrintJob { private byte[] data; @Override protected final URI withOpenOutputStream(final PrintAction function) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); BufferedOutputStream bout = new BufferedOutputStream(out); try { function.run(bout); this.data = out.toByteArray(); } finally { bout.close(); } return new URI("hibernate:" + getEntry().getReferenceId()); } @Override protected final PrintJobResult createResult(final URI reportURI, final String fileName, final String fileExtension, final String mimeType) { return new PrintJobResultExtImpl(reportURI, fileName, fileExtension, mimeType, this.data); } }