private Collection<TemplateRecord> removeOtherRecord(Collection<TemplateRecord> selected) { Collection<TemplateRecord> remaining = new ArrayList<>(); for (TemplateRecord r : selected) { if (!"otherRecord".equals(r.getName())) { remaining.add(r); } } assertTrue(remaining.size() < selected.size()); return remaining; }
@Override protected void doProcess(final JCas jCas) throws AnalysisEngineProcessException { Multimap<String, ExtractedRecord> records = HashMultimap.create(); Collection<TemplateRecord> recordAnnotations = JCasUtil.select(jCas, TemplateRecord.class); HashSet<TemplateField> allFields = new HashSet<>(JCasUtil.select(jCas, TemplateField.class)); for (TemplateRecord recordAnnotation : recordAnnotations) { Collection<TemplateField> fieldAnnotations = JCasUtil.selectCovered(TemplateField.class, recordAnnotation); List<TemplateField> recordFieldAnnotations = fieldAnnotations .stream() .filter(f -> recordAnnotation.getSource().equals(f.getSource())) .collect(Collectors.toList()); allFields.removeAll(recordFieldAnnotations); Collection<ExtractedField> fieldValues = makeFieldValues(recordFieldAnnotations); records.put( recordAnnotation.getSource(), new ExtractedRecord(recordAnnotation.getName(), fieldValues)); } Multimap<String, TemplateField> remainingFields = HashMultimap.create(); for (TemplateField templateField : allFields) { remainingFields.put(templateField.getSource(), templateField); } for (String source : remainingFields.keySet()) { records.put(source, new ExtractedRecord(makeFieldValues(remainingFields.get(source)))); } String documentSourceName = SourceUtils.getDocumentSourceBaseName(jCas); writeRecords(jCas, documentSourceName, records.asMap()); }
assertEquals("quote1", r1.getName()); assertEquals(0, r1.getBegin()); assertEquals(link1.getBegin(), r1.getEnd()); assertEquals("quote2", r2.getName()); assertEquals(link1.getEnd(), r2.getBegin()); assertEquals(link2.getBegin(), r2.getEnd()); assertEquals("missing", r3.getName()); assertEquals(link2.getEnd(), r3.getBegin()); assertEquals(link3.getBegin(), r3.getEnd()); assertEquals("single", r4.getName()); assertEquals(link3.getEnd(), r4.getBegin()); assertEquals(table.getBegin(), r4.getEnd()); assertEquals(1, fields.size()); field = fields.get(0); assertEquals("row", r5.getName()); assertEquals(quotation5.getEnd(), r5.getBegin()); assertEquals(tableRow1.getEnd(), r5.getEnd()); assertEquals("row", r6.getName()); assertEquals(tableRow1.getEnd(), r6.getBegin()); assertEquals(tableRow2.getEnd(), r6.getEnd());
assertEquals("quote1", r1.getName()); assertEquals(0, r1.getBegin()); assertEquals(quotation1.getEnd(), r1.getEnd()); assertEquals("quote1", r2.getName()); assertEquals(quotation1.getEnd(), r2.getBegin()); assertEquals(quotation2.getEnd(), r2.getEnd()); assertEquals("quote2", r3.getName()); assertEquals(link1.getEnd(), r3.getBegin()); assertEquals(quotation3.getEnd(), r3.getEnd()); assertEquals("quote2", r4.getName()); assertEquals(quotation3.getEnd(), r4.getBegin()); assertEquals(quotation4.getEnd(), r4.getEnd()); assertEquals("single", r5.getName()); assertEquals(link3.getEnd(), r5.getBegin()); assertEquals(table.getBegin(), r5.getEnd()); assertEquals(1, fields.size()); field = fields.get(0); assertEquals("row", r6.getName()); assertEquals(quotation5.getEnd(), r6.getBegin()); assertEquals(tableRow1.getEnd(), r6.getEnd()); assertEquals("row", r7.getName()); assertEquals(tableRow1.getEnd(), r7.getBegin()); assertEquals(tableRow2.getEnd(), r7.getEnd());