package com.aconex.scrutineer;
import com.google.common.base.Function;
import java.io.PrintStream;
public class PrintStreamOutputVersionStreamVerifierListener implements IdAndVersionStreamVerifierListener {
public static final Function<Long, Object> DEFAULT_FORMATTER = new DefaultVersionFormatter();
private final PrintStream printStream;
private final Function<Long, Object> versionFormatter;
public PrintStreamOutputVersionStreamVerifierListener(PrintStream printStream) {
this(printStream, DEFAULT_FORMATTER);
}
public PrintStreamOutputVersionStreamVerifierListener(PrintStream printStream, Function<Long, Object> versionFormatter) {
this.printStream = printStream;
this.versionFormatter = versionFormatter;
}
@Override
public void onMissingInSecondaryStream(IdAndVersion idAndVersion) {
printStream.println(String.format("NOTINSECONDARY\t%s\t%s", idAndVersion.getId(), versionFormatter.apply(idAndVersion.getVersion())));
}
@Override
public void onMissingInPrimaryStream(IdAndVersion idAndVersion) {
printStream.println(String.format("NOTINPRIMARY\t%s\t%s", idAndVersion.getId(), versionFormatter.apply(idAndVersion.getVersion())));
}
@Override
public void onVersionMisMatch(IdAndVersion primaryItem, IdAndVersion secondaryItem) {
printStream.println(String.format("MISMATCH\t%s\t%s\tsecondaryVersion=%s", primaryItem.getId(), versionFormatter.apply(primaryItem.getVersion()), versionFormatter.apply(secondaryItem.getVersion())));
}
private static class DefaultVersionFormatter implements Function<Long, Object> {
@Override
public Object apply(Long aLong) {
return aLong;
}
}
}