package com.constellio.model.services.records.extractions;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.XMLOutputter;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
/**
* Created by Majid on 2016-03-29.
*/
public class DefaultMetadataPopulatorPersistenceManager implements MetadataPopulatorPersistenceManager {
@Override
public Element toXml(MetadataPopulator metadataPopulator) throws Exception {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
XMLEncoder xmlEncoder = new XMLEncoder(buffer);
xmlEncoder.writeObject(metadataPopulator);
xmlEncoder.close();
ByteArrayInputStream inputStream = new ByteArrayInputStream(buffer.toByteArray());
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(inputStream);
Element element = document.getRootElement();
element.detach();
return element;
}
@Override
public MetadataPopulator fromXML(Element xmlElement) throws Exception {
XMLOutputter converter = new XMLOutputter();
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
converter.output(xmlElement, buffer);
buffer.close();
XMLDecoder xmlDecoder = new XMLDecoder(new ByteArrayInputStream(buffer.toByteArray()));
return (MetadataPopulator) xmlDecoder.readObject();
}
}