use of org.n52.io.IoParseException in project series-rest-api by 52North.
the class ChartIoHandler method encodeAndWriteTo.
@Override
public void encodeAndWriteTo(DataCollection<QuantityData> data, OutputStream stream) throws IoParseException {
try {
writeDataToChart(data);
ImageIO.write(createImage(), mimeType.getFormatName(), stream);
} catch (IOException e) {
throw new IoParseException("Could not write image to output stream.", e);
}
}
use of org.n52.io.IoParseException 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.IoParseException in project series-rest-api by 52North.
the class PDFReportGenerator method generateOutput.
public void generateOutput(DataCollection<QuantityData> data) throws IoParseException {
try {
generateTimeseriesChart(data);
generateTimeseriesMetadata();
} catch (IOException e) {
throw new IoParseException("Error handling (temp) file!", e);
}
}
use of org.n52.io.IoParseException in project series-rest-api by 52North.
the class IoParameters method getSpatialFilter.
/**
* Creates a {@link BoundingBox} instance from given spatial request parameters. The resulting bounding
* box is the merged extent of all spatial filters given. For example if {@value #NEAR} and {@value #BBOX}
* exist, the returned bounding box includes both extents.
*
* @return a spatial filter created from given spatial parameters.
* @throws IoParseException
* if parsing parameters fails, or if a requested {@value #CRS} object could not be created.
*/
public BoundingBox getSpatialFilter() {
if (!containsParameter(NEAR) && !containsParameter(BBOX)) {
return null;
}
BoundingBox bboxBounds = createBbox();
BoundingBox bounds = parseBoundsFromVicinity();
return mergeBounds(bounds, bboxBounds);
}
use of org.n52.io.IoParseException in project series-rest-api by 52North.
the class IoParameters method createBbox.
/**
* @return a {@link BBox} instance or <code>null</code> if no {@link #BBOX} parameter is present.
* @throws IoParseException
* if parsing parameter fails.
* @throws IoParseException
* if a requested {@value #CRS} object could not be created
*/
private BoundingBox createBbox() {
if (!containsParameter(BBOX)) {
return null;
}
String bboxValue = getAsString(BBOX);
CRSUtils crsUtils = CRSUtils.createEpsgForcedXYAxisOrder();
// Check if supplied in minx,miny,maxx,maxy format - else assume json
if (bboxMatching(bboxValue, 3)) {
String[] coordArray = bboxValue.split(SPLIT_REGEX);
Point lowerLeft = crsUtils.createPoint(Double.valueOf(coordArray[0].trim()), Double.valueOf(coordArray[1].trim()), CRSUtils.DEFAULT_CRS);
Point upperRight = crsUtils.createPoint(Double.valueOf(coordArray[2].trim()), Double.valueOf(coordArray[3].trim()), CRSUtils.DEFAULT_CRS);
return new BoundingBox(lowerLeft, upperRight, CRSUtils.DEFAULT_CRS);
}
try {
BBox bbox = handleJsonValueParseException(BBOX, BBox.class, this::parseJson);
return new BoundingBox(bbox.getLl(), bbox.getUr(), CRSUtils.DEFAULT_CRS);
} catch (IoParseException e) {
throw e.addHint(createInvalidParameterMessage(Parameters.BBOX)).addHint("Check http://epsg-registry.org for EPSG CRS definitions and codes.").addHint("(alternate format of 'llLon,llLat,urLon,urLat' couldn't be detected)");
}
}
Aggregations