package no.priv.garshol.duke.utils;
import java.util.Collection;
import java.io.Writer;
import java.io.IOException;
import no.priv.garshol.duke.Record;
import no.priv.garshol.duke.Property;
import no.priv.garshol.duke.Configuration;
import no.priv.garshol.duke.DukeException;
/**
* Utility class for writing link files. The format is
* _,id,id,confidence, where the first character is either '+' or '-'.
* @since 1.1
*/
public class LinkFileWriter {
private Writer out;
private Collection<Property> idprops;
public LinkFileWriter(Writer out) {
this(out, null);
}
public LinkFileWriter(Writer out, Configuration config) {
this.out = out;
if (config != null)
this.idprops = config.getIdentityProperties();
}
public void write(Record r1, Record r2, boolean match, double confidence)
throws IOException {
write(getid(r1), getid(r2), match, confidence);
}
public void write(String id1, String id2, boolean match, double confidence)
throws IOException {
out.write("" + (match ? "+," : "-,") + id1 + ',' + id2 + ',' + confidence +
"\n");
}
private String getid(Record r) {
for (Property p : idprops) {
String v = r.getValue(p.getName());
if (v == null)
continue;
return v;
}
throw new DukeException("No identity for record " + r);
}
}