use of org.geotoolkit.wps.xml.v200.Reference in project geotoolkit by Geomatys.
the class GeometryToReferenceConverter method convert.
/**
* {@inheritDoc}
*/
@Override
public Reference convert(final Geometry source, final Map<String, Object> params) throws UnconvertibleObjectException {
if (params.get(TMP_DIR_PATH) == null) {
throw new UnconvertibleObjectException("The output directory should be defined.");
}
if (source == null) {
throw new UnconvertibleObjectException("The output data should be defined.");
}
if (!(source instanceof Geometry)) {
throw new UnconvertibleObjectException("The geometry is not an JTS geometry.");
}
Reference reference = new Reference();
reference.setMimeType((String) params.get(MIME));
reference.setEncoding((String) params.get(ENCODING));
reference.setSchema((String) params.get(SCHEMA));
String gmlVersion = (String) params.get(GMLVERSION);
if (gmlVersion == null) {
gmlVersion = "3.1.1";
}
final String randomPathName = UUID.randomUUID().toString() + getFileExtension(reference.getMimeType());
final Path geometryFile = buildPath(params, randomPathName);
final String tmpDirUrl = (String) params.get(TMP_DIR_URL);
OutputStream geometryStream = null;
try {
geometryStream = Files.newOutputStream(geometryFile);
if (WPSMimeType.APP_GML.val().equalsIgnoreCase(reference.getMimeType()) || WPSMimeType.TEXT_XML.val().equalsIgnoreCase(reference.getMimeType()) || WPSMimeType.TEXT_GML.val().equalsIgnoreCase(reference.getMimeType()) || reference.getMimeType() == null) {
// default to XML
final Marshaller m = WPSMarshallerPool.getInstance().acquireMarshaller();
m.marshal(JTStoGeometry.toGML(gmlVersion, source), geometryStream);
final String relLoc = getRelativeLocation(geometryFile, params);
reference.setHref(tmpDirUrl + '/' + relLoc.replace('\\', '/'));
WPSMarshallerPool.getInstance().recycle(m);
} else if (WPSMimeType.APP_GEOJSON.val().equalsIgnoreCase(reference.getMimeType())) {
GeoJSONStreamWriter.writeSingleGeometry(geometryStream, source, JsonEncoding.UTF8, WPSConvertersUtils.FRACTION_DIGITS, true);
final String relLoc = getRelativeLocation(geometryFile, params);
reference.setHref(tmpDirUrl + '/' + relLoc.replace('\\', '/'));
} else {
throw new UnconvertibleObjectException("Unsupported mime-type for " + this.getClass().getName() + " : " + reference.getMimeType());
}
} catch (FactoryException ex) {
throw new UnconvertibleObjectException("Can't convert the JTS geometry to OpenGIS.", ex);
} catch (FileNotFoundException ex) {
throw new UnconvertibleObjectException("Can't create output reference file.", ex);
} catch (JAXBException ex) {
throw new UnconvertibleObjectException("JAXB exception while writing the geometry", ex);
} catch (IOException ex) {
throw new UnconvertibleObjectException(ex);
} finally {
try {
if (geometryStream != null)
geometryStream.close();
} catch (IOException ex) {
throw new UnconvertibleObjectException("Can't close the output reference file stream.", ex);
}
}
return reference;
}
use of org.geotoolkit.wps.xml.v200.Reference in project geotoolkit by Geomatys.
the class NumberToReferenceConverter method convert.
@Override
public Reference convert(final Number source, final Map<String, Object> params) throws UnconvertibleObjectException {
if (params.get(TMP_DIR_PATH) == null) {
throw new UnconvertibleObjectException("The output directory should be defined.");
}
if (source == null) {
throw new UnconvertibleObjectException("The output data should be defined.");
}
Reference reference = new Reference();
reference.setMimeType((String) params.get(MIME));
reference.setEncoding((String) params.get(ENCODING));
reference.setSchema((String) params.get(SCHEMA));
reference.setMimeType("text/plain");
reference.setEncoding("UTF-8");
reference.setSchema(null);
final String randomFileName = UUID.randomUUID().toString();
try {
// create file
final Path literalFile = buildPath(params, randomFileName);
IOUtilities.writeString(String.valueOf(source), literalFile);
final String relLoc = getRelativeLocation(literalFile, params);
reference.setHref((String) params.get(TMP_DIR_URL) + "/" + relLoc);
} catch (IOException ex) {
throw new UnconvertibleObjectException("Error occurs during string writing.", ex);
}
return reference;
}
use of org.geotoolkit.wps.xml.v200.Reference in project geotoolkit by Geomatys.
the class UriToReferenceConverter method convert.
@Override
public Reference convert(URI source, Map<String, Object> params) throws UnconvertibleObjectException {
if (source == null)
return null;
final Reference reference = new Reference();
reference.setHref(source.toString());
mapParameters(reference, params);
return reference;
}
use of org.geotoolkit.wps.xml.v200.Reference in project geotoolkit by Geomatys.
the class UrlConnectionToReferenceConverter method convert.
@Override
public Reference convert(URLConnection source, Map<String, Object> params) throws UnconvertibleObjectException {
final Reference reference = new Reference();
reference.setHref(source.getURL().toString());
mapParameters(reference, params);
return reference;
}
use of org.geotoolkit.wps.xml.v200.Reference in project geotoolkit by Geomatys.
the class UrlToReferenceConverter method convert.
@Override
public Reference convert(URL source, Map<String, Object> params) throws UnconvertibleObjectException {
final Reference reference = new Reference();
reference.setHref(source.toString());
mapParameters(reference, params);
return reference;
}
Aggregations