public static Map<String, Link> load(String testfile) throws IOException { Map<String, Link> links = new HashMap(); BufferedReader reader = new BufferedReader(new FileReader(testfile)); String line = reader.readLine(); while (line != null) { int pos = line.indexOf(','); String id1 = line.substring(1, pos); String id2 = line.substring(pos + 1, line.length()); links.put(id1 + "," + id2, new Link(id1, id2, LinkStatus.ASSERTED, line.charAt(0) == '+' ? LinkKind.SAME : LinkKind.DIFFERENT, 0.0)); line = reader.readLine(); } reader.close(); return links; } }
private Link makeLink(ResultSet rs) throws SQLException { return new Link(rs.getString("id1"), rs.getString("id2"), LinkStatus.getbyid(rs.getInt("status")), LinkKind.getbyid(rs.getInt("kind")), rs.getTimestamp("timestamp").getTime(), rs.getDouble("confidence")); }
public void matchesPerhaps(Record r1, Record r2, double confidence) { if (r1 != current) { // we've finished processing the previous record, so make the calls if (current != null) endRecord_(); startRecord_(r1); } String id1 = getIdentity(r1); String id2 = getIdentity(r2); curlinks.add(new Link(id1, id2, LinkStatus.INFERRED, LinkKind.MAYBESAME, confidence)); }
private Link link(String id1, String id2, LinkKind kind) { Link link = new Link(id1, id2, LinkStatus.ASSERTED, kind, 1.0); linkdb.assertLink(link); return link; }
public void matches(Record r1, Record r2, double confidence) { if (r1 != current) { // we've finished processing the previous record, so make the calls if (current != null) endRecord_(); startRecord_(r1); } String id1 = getIdentity(r1); String id2 = getIdentity(r2); curlinks.add(new Link(id1, id2, LinkStatus.INFERRED, LinkKind.SAME, confidence)); }
@Test public void testOverride() { Link l1 = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(l1); Link l2 = new Link("1", "2", LinkStatus.INFERRED, LinkKind.SAME, 1.0); linkdb.assertLink(l2); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0), all.iterator().next()); }
@Test public void testOverride2() { Link l1 = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); linkdb.assertLink(l1); Link l2 = new Link("1", "2", LinkStatus.INFERRED, LinkKind.SAME, 1.0); linkdb.assertLink(l2); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0), all.iterator().next()); }
@Test public void testAddOne() { Link link = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(link); Collection<Link> links = linkdb.getAllLinks(); assertEquals(links.size(), 1); assertTrue(links.contains(link)); links = linkdb.getAllLinksFor("1"); assertEquals(links.size(), 1); assertTrue(links.contains(link)); links = linkdb.getAllLinksFor("2"); assertEquals(links.size(), 1); assertTrue(links.contains(link)); }
@Test public void testAddIdempotent() { Link link = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(link); link = new Link("2", "1", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(link); Collection<Link> links = linkdb.getAllLinks(); assertEquals(links.size(), 1); assertTrue(links.contains(link)); links = linkdb.getAllLinksFor("1"); assertEquals(links.size(), 1); assertTrue(links.contains(link)); links = linkdb.getAllLinksFor("2"); assertEquals(links.size(), 1); assertTrue(links.contains(link)); }
@Test public void testGetSinceOnlyHalf() { Link l1 = new Link("1", "2", LinkStatus.INFERRED, LinkKind.SAME, 1.0); linkdb.assertLink(l1); pause(); long thetime = System.currentTimeMillis(); pause(); Link l2 = new Link("1", "3", LinkStatus.INFERRED, LinkKind.SAME, 1.0); linkdb.assertLink(l2); List<Link> links = linkdb.getChangesSince(thetime); assertEquals(1, links.size()); assertEquals(l2, links.get(0)); }
@Test public void testGetBeforeOnlyHalf() { Link l1 = new Link("1", "2", LinkStatus.INFERRED, LinkKind.SAME, 1.0); linkdb.assertLink(l1); pause(); long thetime = System.currentTimeMillis(); pause(); Link l2 = new Link("1", "3", LinkStatus.INFERRED, LinkKind.SAME, 1.0); linkdb.assertLink(l2); List<Link> links = linkdb.getChangesSince(0, thetime); assertEquals(1, links.size()); assertEquals(l1, links.get(0)); }
private void copyall(String id1, String id2) { Collection<String> class1 = getClass(id1); for (String id : class1) { for (Link tocopy : getAllLinksFor(id2)) { String other = tocopy.getOtherId(id2); if (id.equals(other)) continue; addLink2(new Link(id, other, tocopy.getStatus(), tocopy.getKind(), tocopy.getConfidence())); } } }
@Test public void testGetBeforeAndSince() { long since = System.currentTimeMillis(); pause(); Link l1 = new Link("1", "2", LinkStatus.INFERRED, LinkKind.SAME, 1.0); linkdb.assertLink(l1); pause(); long before = System.currentTimeMillis(); pause(); Link l2 = new Link("1", "3", LinkStatus.INFERRED, LinkKind.SAME, 1.0); linkdb.assertLink(l2); List<Link> links = linkdb.getChangesSince(since, before); assertEquals(1, links.size()); assertEquals(l1, links.get(0)); }
@Test public void testSingleLink() throws IOException { out.write("1", "2", true, 0.95); writer.close(); load(); assertEquals(1, db.getAllLinks().size()); Link link = db.getAllLinks().iterator().next(); verifySame(new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 0.95), link); }
@Test public void testOverride2() { Link l1 = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0); linkdb.assertLink(l1); Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); listener.startProcessing(); listener.batchReady(1); listener.matches(r1, r2, 1.0); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.ASSERTED, LinkKind.DIFFERENT, 1.0), all.iterator().next()); }
@Test public void testOverride() { Link l1 = new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0); linkdb.assertLink(l1); Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); listener.startProcessing(); listener.batchReady(1); listener.matches(r1, r2, 1.0); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.ASSERTED, LinkKind.SAME, 1.0), all.iterator().next()); }
@Test public void testSingleRecord() { Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); listener.startProcessing(); listener.batchReady(1); listener.matches(r1, r2, 0.95); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.INFERRED, LinkKind.SAME, 0.95), all.iterator().next()); }
@Test public void testSingleRecordPerhaps() { Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); listener.startProcessing(); listener.batchReady(1); listener.matchesPerhaps(r1, r2, 0.7); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.INFERRED, LinkKind.MAYBESAME, 0.7), all.iterator().next()); }
@Test public void testSingleRecordRetract() { testSingleRecord(); // now we've asserted they're equal. then let's retract pause(); // ensure timestamps are different Record r1 = makeRecord("id", "1"); listener.startProcessing(); listener.batchReady(0); listener.noMatchFor(r1); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.RETRACTED, LinkKind.SAME, 0.0), all.iterator().next()); }
@Test public void testUpgradeFromPerhaps() { testSingleRecordPerhaps(); pause(); // ensure timestamps are different Record r1 = makeRecord("id", "1"); Record r2 = makeRecord("id", "2"); listener.startProcessing(); listener.batchReady(1); listener.matches(r1, r2, 1.0); listener.batchDone(); listener.endProcessing(); Collection<Link> all = linkdb.getAllLinks(); assertEquals(1, all.size()); TestUtils.verifySame(new Link("1", "2", LinkStatus.INFERRED, LinkKind.SAME, 1.0), all.iterator().next()); }