use of org.eclipse.persistence.internal.jpa.rs.metadata.model.v2.Reference in project cel-java by projectnessie.
the class Checker method setReference.
void setReference(Expr.Builder e, Reference r) {
Reference old = references.get(e.getId());
if (old != null && !old.equals(r)) {
throw new IllegalStateException(String.format("Reference already exists for expression: %s(%d) old:%s, new:%s", e, e.getId(), old, r));
}
references.put(e.getId(), r);
}
use of org.eclipse.persistence.internal.jpa.rs.metadata.model.v2.Reference in project geotoolkit by Geomatys.
the class ConvertersTestUtils method createReference.
/**
* Helper method that creates a Reference with all its field filled
* @param mimeType can be null
* @param encoding can be null
* @param schema can be null
* @param url must be set
* @return the reference with its field filled using the above parameters
*/
public static final Reference createReference(String version, String mimeType, String encoding, String schema, URL url) {
final Reference reference = new Reference();
reference.setMimeType(mimeType);
reference.setEncoding(encoding);
reference.setSchema(schema);
reference.setHref(url.toString());
return reference;
}
use of org.eclipse.persistence.internal.jpa.rs.metadata.model.v2.Reference in project geotoolkit by Geomatys.
the class FeatureSetToReferenceConverter method convert.
/**
* {@inheritDoc}
*/
@Override
public Reference convert(final FeatureSet 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 (params.get(TMP_DIR_URL) == null) {
throw new UnconvertibleObjectException("The output directory URL should be defined.");
}
if (source == null) {
throw new UnconvertibleObjectException("The output data should be defined.");
}
// TODO : useless test, null test above is all we need, fix this and other converters
if (!(source instanceof FeatureSet)) {
throw new UnconvertibleObjectException("The requested output data is not an instance of FeatureSet.");
}
Reference reference = new Reference();
reference.setMimeType((String) params.get(MIME));
reference.setEncoding((String) params.get(ENCODING));
final FeatureType ft;
try {
ft = source.getType();
} catch (DataStoreException ex) {
throw new UnconvertibleObjectException("Can't write acess FeatureSet type.", ex);
}
final String namespace = NamesExt.getNamespace(ft.getName());
final Map<String, String> schemaLocation = new HashMap<>();
final String randomFileName = UUID.randomUUID().toString();
if (WPSMimeType.APP_GEOJSON.val().equalsIgnoreCase(reference.getMimeType())) {
// create file
final Path dataFile = buildPath(params, randomFileName + ".json");
try (OutputStream fos = Files.newOutputStream(dataFile, CREATE, TRUNCATE_EXISTING, WRITE);
GeoJSONStreamWriter writer = new GeoJSONStreamWriter(fos, ft, WPSConvertersUtils.FRACTION_DIGITS);
Stream<Feature> st = source.features(false)) {
Iterator<Feature> iterator = st.iterator();
while (iterator.hasNext()) {
Feature next = iterator.next();
Feature neww = writer.next();
FeatureExt.copy(next, neww, false);
writer.write();
}
} catch (DataStoreException e) {
throw new UnconvertibleObjectException("Can't write Feature into GeoJSON output stream.", e);
} catch (IOException e) {
throw new UnconvertibleObjectException(e);
}
final String relLoc = getRelativeLocation(dataFile, params);
reference.setHref(params.get(TMP_DIR_URL) + "/" + relLoc);
reference.setSchema(null);
} else if (WPSMimeType.APP_GML.val().equalsIgnoreCase(reference.getMimeType()) || WPSMimeType.TEXT_XML.val().equalsIgnoreCase(reference.getMimeType()) || WPSMimeType.TEXT_GML.val().equalsIgnoreCase(reference.getMimeType())) {
try {
reference.setSchema(WPSConvertersUtils.writeSchema(ft, params));
schemaLocation.put(namespace, reference.getSchema());
} catch (JAXBException ex) {
throw new UnconvertibleObjectException("Can't write FeatureType into xsd schema.", ex);
} catch (IOException ex) {
throw new UnconvertibleObjectException("Can't create xsd schema file.", ex);
}
// Write Feature
final JAXPStreamFeatureWriter featureWriter = new JAXPStreamFeatureWriter(schemaLocation);
// create file
final Path dataFile = buildPath(params, randomFileName + ".xml");
try (final OutputStream dataStream = Files.newOutputStream(dataFile);
final AutoCloseable xmlCloser = () -> featureWriter.dispose()) {
// Write feature in file
featureWriter.write(source, dataStream);
final String relLoc = getRelativeLocation(dataFile, params);
reference.setHref(params.get(TMP_DIR_URL) + "/" + relLoc);
} catch (XMLStreamException ex) {
throw new UnconvertibleObjectException("Stax exception while writing the feature collection", ex);
} catch (DataStoreException ex) {
throw new UnconvertibleObjectException("FeatureStore exception while writing the feature collection", ex);
} catch (FeatureStoreRuntimeException ex) {
throw new UnconvertibleObjectException("FeatureStoreRuntimeException exception while writing the feature collection", ex);
} catch (Exception ex) {
throw new UnconvertibleObjectException(ex);
}
} else {
throw new UnconvertibleObjectException("Unsupported mime-type for " + this.getClass().getName() + " : " + reference.getMimeType());
}
return reference;
}
use of org.eclipse.persistence.internal.jpa.rs.metadata.model.v2.Reference in project geotoolkit by Geomatys.
the class FileToReferenceConverter method convert.
@Override
public Reference convert(File source, 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));
final Path targetDirectory = buildPath(params, null);
final String tmpDir = getTemproraryDirectoryPath(params);
final String tmpDirUrl = (String) params.get(TMP_DIR_URL);
try {
// if the source is already in the temp folder
if (source.getAbsolutePath().startsWith(tmpDir)) {
reference.setHref(source.getAbsolutePath().replace(tmpDir, tmpDirUrl));
// else we create a link from the source file in temp dir
} else {
final Path target = targetDirectory.resolve(source.getName());
Files.createSymbolicLink(target, source.toPath());
// IOUtilities.copy(source.toPath(),target);
String suffix = getRelativeLocation(target, tmpDir);
reference.setHref(tmpDirUrl + "/" + suffix);
}
} catch (IOException ex) {
throw new UnconvertibleObjectException("Error during moving file to output directory.", ex);
}
return reference;
}
use of org.eclipse.persistence.internal.jpa.rs.metadata.model.v2.Reference in project geotoolkit by Geomatys.
the class GeometryArrayToReferenceConverter method convert.
@Override
public Reference convert(Geometry[] source, 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));
final String randomFilename = UUID.randomUUID().toString() + ".json";
final Path geometryArrayFile = buildPath(params, randomFilename);
try {
if (WPSMimeType.APP_GEOJSON.val().equalsIgnoreCase(reference.getMimeType())) {
try (OutputStream geometryStream = Files.newOutputStream(geometryArrayFile)) {
GeometryFactory geometryFactory = org.geotoolkit.geometry.jts.JTS.getFactory();
Geometry toWrite = new GeometryCollection(source, geometryFactory);
GeoJSONStreamWriter.writeSingleGeometry(geometryStream, toWrite, JsonEncoding.UTF8, WPSConvertersUtils.FRACTION_DIGITS, true);
}
reference.setHref(geometryArrayFile.toUri().toURL().toString());
return reference;
} else
throw new UnconvertibleObjectException("Unsupported mime-type for " + this.getClass().getName() + " : " + reference.getMimeType());
} catch (FileNotFoundException ex) {
throw new UnconvertibleObjectException("Unable to find the reference file");
} catch (IOException ex) {
throw new UnconvertibleObjectException(ex);
}
}
Aggregations