package no.priv.garshol.duke.genetic;
import java.io.Writer;
import java.io.FileWriter;
import java.io.IOException;
import no.priv.garshol.duke.LinkKind;
import no.priv.garshol.duke.DukeException;
import no.priv.garshol.duke.utils.YesNoConsole;
import no.priv.garshol.duke.utils.LinkFileWriter;
/**
* This oracle asks the user via the console.
*/
public class ConsoleOracle implements Oracle {
private YesNoConsole console;
private LinkFileWriter writer;
private Writer out;
public ConsoleOracle() {
this.console = new YesNoConsole();
}
public LinkKind getLinkKind(String id1, String id2) {
boolean match = console.yesorno();
if (writer != null)
try {
writer.write(id1, id2, match, 1.0);
out.flush(); // make sure everything's saved
} catch (IOException e) {
throw new DukeException(e);
}
return match ? LinkKind.SAME : LinkKind.DIFFERENT;
}
public void setLinkFile(String linkfile) throws IOException {
out = new FileWriter(linkfile, true);
writer = new LinkFileWriter(out);
// FIXME: strictly speaking, this leaks file handles. in practice it
// probably won't matter
}
}