package rtt.core.manager.data.history;
import java.io.InputStream;
import java.util.List;
import rtt.core.archive.output.Output;
import rtt.core.loader.ArchiveLoader;
import rtt.core.loader.fetching.OutputDataFetching;
import rtt.core.manager.data.AbstractDataManager;
import rtt.core.testing.compare.OutputCompare;
import rtt.core.testing.compare.results.TestFailure;
public class OutputManager extends AbstractDataManager<Output> {
OutputDataFetching fetching;
public OutputManager(ArchiveLoader loader, String path) {
super(loader);
fetching = new OutputDataFetching(path);
setFetchingStrategy(fetching);
}
public void setData(Output data, Integer version) {
fetching.setVersion(version);
marshall(Output.class, data);
}
public Output getData(Integer version) {
fetching.setVersion(version);
try {
return unmarshall(Output.class);
} catch (Exception e) {
return null;
}
}
public InputStream getStreamData(Integer version) {
fetching.setVersion(version);
return loader.getInputStream(strategy.getFileName(),
strategy.getFolders());
}
@Override
protected Output doLoad() {
throw new RuntimeException(
"Use getData(Version) for loading output");
}
@Override
protected void doSave(Output data) {
throw new RuntimeException(
"Use setData(Version) for loading output");
}
public static boolean dataEqual(Output oldData, Output newData) {
if (oldData == newData) {
return true;
}
List<TestFailure> failures = OutputCompare
.compareOutput(oldData, newData, false);
if (failures != null && failures.isEmpty() == false) {
return false;
}
return true;
}
@Override
protected Output getEmptyData() {
return new Output();
}
}