package cz.nkp.differ.io; import cz.nkp.differ.compare.io.SerializableImageProcessorResults; import cz.nkp.differ.model.Result; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import org.springframework.oxm.jaxb.Jaxb2Marshaller; /** * * @author xrosecky */ public class ResultManager { private static final String EXTENSION = ".xml"; private Jaxb2Marshaller marshaller; private String directory; public void save(SerializableImageProcessorResults result) throws IOException { String name = new Date().toString(); File outputFile = new File(directory, name + EXTENSION); OutputStream os; os = new FileOutputStream(outputFile); StreamResult streamResult = new StreamResult(os); marshaller.marshal(result, streamResult); } public List<Result> getResults() { List<Result> results = new ArrayList<Result>(); File dir = new File(directory); for (File file : dir.listFiles()) { Result result = new Result(); result.setName(file.getName()); results.add(result); } return results; } public SerializableImageProcessorResults getResult(Result result) throws IOException { File input = new File(directory, result.getName()); StreamSource source = new StreamSource(new FileInputStream(input)); return (SerializableImageProcessorResults) marshaller.unmarshal(source); } public String getDirectory() { return directory; } public void setDirectory(String directory) { this.directory = directory; } public Jaxb2Marshaller getMarshaller() { return marshaller; } public void setMarshaller(Jaxb2Marshaller marshaller) { this.marshaller = marshaller; } }