package org.constellation.database.api; import org.apache.sis.metadata.iso.DefaultMetadata; import org.constellation.utils.ISOMarshallerPool; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import java.io.InputStream; import java.io.StringReader; import java.io.StringWriter; public class MetadataIOUtils { public static DefaultMetadata unmarshallMetadata(final String xml) throws JAXBException { final Unmarshaller um = ISOMarshallerPool.getInstance().acquireUnmarshaller(); try (StringReader reader = new StringReader(xml)) { final DefaultMetadata meta = (DefaultMetadata) um.unmarshal(reader); ISOMarshallerPool.getInstance().recycle(um); return meta; } } public static DefaultMetadata unmarshallMetadata(final InputStream stream) throws JAXBException { final Unmarshaller um = ISOMarshallerPool.getInstance().acquireUnmarshaller(); final DefaultMetadata meta = (DefaultMetadata) um.unmarshal(stream); ISOMarshallerPool.getInstance().recycle(um); return meta; } public static StringReader marshallMetadata(final DefaultMetadata meta) throws JAXBException { return new StringReader(marshallMetadataToString(meta)); } public static String marshallMetadataToString(final DefaultMetadata meta) throws JAXBException { final StringWriter swIso = new StringWriter(); final Marshaller mi = ISOMarshallerPool.getInstance().acquireMarshaller(); //FIXME which timezone if is not set ?? UTC ?? //mi.setProperty(XML.TIMEZONE, TimeZone.getTimeZone("GMT+2:00")); mi.marshal(meta, swIso); ISOMarshallerPool.getInstance().recycle(mi); return swIso.toString(); } }