use of org.n52.io.MimeType in project series-rest-api by 52North.
the class PDFReportGenerator method encodeAndWriteTo.
@Override
public void encodeAndWriteTo(DataCollection<QuantityData> data, OutputStream stream) throws IoParseException {
try {
generateOutput(data);
DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
Configuration cfg = cfgBuilder.build(document.newInputStream());
FopFactory fopFactory = new FopFactoryBuilder(baseURI).setConfiguration(cfg).build();
final String mimeType = MimeType.APPLICATION_PDF.getMimeType();
Fop fop = fopFactory.newFop(mimeType, stream);
//FopFactory fopFactory = FopFactory.newInstance(cfg);
//Fop fop = fopFactory.newFop(APPLICATION_PDF.getMimeType(), stream);
//FopFactory fopFactory = fopFactoryBuilder.build();
//Fop fop = fopFactory.newFop(APPLICATION_PDF.getMimeType(), stream);
// Create PDF via XSLT transformation
TransformerFactory transFact = TransformerFactory.newInstance();
StreamSource transformationRule = getTransforamtionRule();
Transformer transformer = transFact.newTransformer(transformationRule);
Source source = new StreamSource(document.newInputStream());
Result result = new SAXResult(fop.getDefaultHandler());
if (LOGGER.isDebugEnabled()) {
try {
File tempFile = File.createTempFile(TEMP_FILE_PREFIX, ".xml");
StreamResult debugResult = new StreamResult(tempFile);
transformer.transform(source, debugResult);
String xslResult = XmlObject.Factory.parse(tempFile).xmlText();
LOGGER.debug("xsl-fo input (locale '{}'): {}", i18n.getTwoDigitsLanguageCode(), xslResult);
} catch (IOException | TransformerException | XmlException e) {
LOGGER.error("Could not debug XSL result output!", e);
}
}
// XXX debug, diagram is not embedded
transformer.transform(source, result);
} catch (FOPException e) {
throw new IoParseException("Failed to create Formatting Object Processor (FOP)", e);
} catch (SAXException | ConfigurationException | IOException e) {
throw new IoParseException("Failed to read config for Formatting Object Processor (FOP)", e);
} catch (TransformerConfigurationException e) {
throw new IoParseException("Invalid transform configuration. Inspect xslt!", e);
} catch (TransformerException e) {
throw new IoParseException("Could not generate PDF report!", e);
}
}
use of org.n52.io.MimeType in project series-rest-api by 52North.
the class QuantityIoFactory method createHandler.
@Override
public IoHandler<QuantityData> createHandler(String outputMimeType) {
IoParameters parameters = getParameters();
MimeType mimeType = MimeType.toInstance(outputMimeType);
if (mimeType == MimeType.IMAGE_PNG) {
return createMultiChartRenderer(mimeType);
} else if (mimeType == MimeType.APPLICATION_PDF) {
ChartIoHandler imgRenderer = createMultiChartRenderer(mimeType);
PDFReportGenerator reportGenerator = new PDFReportGenerator(getRequestParameters(), createProcessChain(), imgRenderer);
reportGenerator.setBaseURI(getBasePath());
return reportGenerator;
} else if (mimeType == MimeType.TEXT_CSV || mimeType == MimeType.APPLICATION_ZIP) {
QuantityCsvIoHandler handler = new QuantityCsvIoHandler(getRequestParameters(), createProcessChain(), getMetadatas());
handler.setTokenSeparator(parameters.getOther("tokenSeparator"));
boolean zipOutput = parameters.getAsBoolean(MimeType.APPLICATION_ZIP.name());
handler.setZipOutput(zipOutput || mimeType == MimeType.APPLICATION_ZIP);
boolean byteOderMark = Boolean.parseBoolean(parameters.getOther("bom"));
handler.setIncludeByteOrderMark(byteOderMark);
return handler;
}
String msg = "The requested media type '" + outputMimeType + "' is not supported.";
IllegalArgumentException exception = new IllegalArgumentException(msg);
throw exception;
}
use of org.n52.io.MimeType in project series-rest-api by 52North.
the class QuantityIoFactory method createMultiChartRenderer.
private MultipleChartsRenderer createMultiChartRenderer(MimeType mimeType) {
MultipleChartsRenderer chartRenderer = new MultipleChartsRenderer(getRequestParameters(), createProcessChain(), createContext());
chartRenderer.setMimeType(mimeType);
return chartRenderer;
}
Aggregations