private Path createNoFieldsRecordDefinition() throws IOException { List<TemplateFieldConfiguration> fields = new ArrayList<>(); Path definitionFile = Files.createTempFile( tempDirectory, AbstractRecordAnnotatorTest.class.getSimpleName(), ".yml"); String precedingPath = "Paragraph:nth-of-type(3)"; String followingPath = "Paragraph:nth-of-type(5)"; TemplateRecordConfiguration recordDefinition = new TemplateRecordConfiguration("test", precedingPath, followingPath, fields, 0); YAMLMAPPER.writeValue(definitionFile.toFile(), singleton(recordDefinition)); return definitionFile; }
protected Path createRecord(String name, TemplateFieldConfiguration... fields) throws IOException, JsonGenerationException, JsonMappingException { Path definitionFile = Files.createTempFile( tempDirectory, AbstractRecordAnnotatorTest.class.getSimpleName(), ".yml"); String precedingPath = "Paragraph:nth-of-type(1)"; String followingPath = "Paragraph:nth-of-type(5)"; TemplateRecordConfiguration recordDefinition = new TemplateRecordConfiguration( name, precedingPath, followingPath, Arrays.asList(fields), 0); YAMLMAPPER.writeValue(definitionFile.toFile(), singleton(recordDefinition)); return definitionFile; } }
@Override protected void doProcess(final JCas jCas) throws AnalysisEngineProcessException { CoveringStructureHierarchy structureHierarchy = CoveringStructureHierarchy.build(jCas, structuralClasses); Collection<TemplateRecordDefinition> recordDefinitions = JCasUtil.select(jCas, TemplateRecordDefinition.class); Collection<TemplateFieldDefinition> fieldDefinitions = new HashSet<>(JCasUtil.select(jCas, TemplateFieldDefinition.class)); Map<String, TemplateRecordConfiguration> recordConfigurations = new HashMap<>(); for (TemplateRecordDefinition recordDefinition : recordDefinitions) { processRecordDefinition( jCas, structureHierarchy, fieldDefinitions, recordConfigurations, recordDefinition); } List<TemplateRecordConfiguration> configurations = new ArrayList<>(recordConfigurations.values()); if (!fieldDefinitions.isEmpty()) { for (TemplateFieldDefinition field : fieldDefinitions) { configurations.add( new TemplateRecordConfiguration( makeFields(structureHierarchy, ImmutableList.of(field)), field.getBegin())); } } String documentSourceName = SourceUtils.getDocumentSourceBaseName(jCas); try (Writer w = createOutputWriter(documentSourceName)) { Collections.sort(configurations, Comparator.comparing(TemplateRecordConfiguration::getOrder)); objectMapper.writeValue(w, configurations); } catch (IOException e) { throw new AnalysisEngineProcessException(e); } }
private Path createDefaultRecordDefinition() throws IOException { List<TemplateFieldConfiguration> fields = new ArrayList<>(); fields.add(new TemplateFieldConfiguration("field", "Paragraph:nth-of-type(2)")); Path definitionFile = Files.createTempFile( tempDirectory, AbstractRecordAnnotatorTest.class.getSimpleName(), ".yml"); TemplateRecordConfiguration recordDefinition = new TemplateRecordConfiguration(fields, 0); YAMLMAPPER.writeValue(definitionFile.toFile(), singleton(recordDefinition)); return definitionFile; }
private Path createNoFollowingRecordDefinition() throws IOException { List<TemplateFieldConfiguration> fields = new ArrayList<>(); fields.add(new TemplateFieldConfiguration("field", "Paragraph:nth-of-type(6)")); Path definitionFile = Files.createTempFile( tempDirectory, AbstractRecordAnnotatorTest.class.getSimpleName(), ".yml"); String precedingPath = "Paragraph:nth-of-type(5)"; String followingPath = ""; TemplateRecordConfiguration recordDefinition = new TemplateRecordConfiguration("test", precedingPath, followingPath, fields, 0); YAMLMAPPER.writeValue(definitionFile.toFile(), singleton(recordDefinition)); return definitionFile; } }
private Path createGoodRecordDefinitionRequiredMissing() throws IOException { List<TemplateFieldConfiguration> fields = new ArrayList<>(); TemplateFieldConfiguration field = new TemplateFieldConfiguration("field", "Paragraph:nth-of-type(5)"); field.setRequired(true); fields.add(field); Path definitionFile = Files.createTempFile( tempDirectory, AbstractRecordAnnotatorTest.class.getSimpleName(), ".yml"); TemplateRecordConfiguration recordDefinition = new TemplateRecordConfiguration(fields, 0); YAMLMAPPER.writeValue(definitionFile.toFile(), singleton(recordDefinition)); return definitionFile; }
private Path createGoodRecordDefinitionWithDefaultAndMissing() throws IOException { TemplateFieldConfiguration fieldDefinitionConfiguration = new TemplateFieldConfiguration("field", "Paragraph:nth-of-type(5)"); fieldDefinitionConfiguration.setDefaultValue("default value"); List<TemplateFieldConfiguration> fields = new ArrayList<>(); fields.add(fieldDefinitionConfiguration); Path definitionFile = Files.createTempFile( tempDirectory, AbstractRecordAnnotatorTest.class.getSimpleName(), ".yml"); TemplateRecordConfiguration recordDefinition = new TemplateRecordConfiguration(fields, 0); YAMLMAPPER.writeValue(definitionFile.toFile(), singleton(recordDefinition)); return definitionFile; }
new TemplateRecordConfiguration( name, precedingPath, recordConfigurations.put( name, new TemplateRecordConfiguration( name, precedingPath, followingPath, fields, recordDefinition.getBegin())); for (TemplateFieldDefinition field : fieldDefinitions) { configurations.add( new TemplateRecordConfiguration( makeFields(structureHierarchy, ImmutableList.of(field)), field.getBegin()));
private TemplateRecordConfiguration createRepeatQuoteRecord1() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("quote1"); record.setOrder(1); record.setPrecedingPath(""); record.setFollowingPath("Document > Link"); record.setKind(Kind.NAMED); TemplateFieldConfiguration field = new TemplateFieldConfiguration("quote", "Document > Quotation:nth-of-type(1)"); field.setRepeat(true); record.setFieldPaths(ImmutableList.of(field)); return record; }
private TemplateRecordConfiguration createMissingRepeatQuoteRecord() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("missing"); record.setOrder(3); record.setPrecedingPath("Document > Link:nth-of-type(2)"); record.setFollowingPath("Document > Link:nth-of-type(3)"); record.setKind(Kind.NAMED); TemplateFieldConfiguration field = new TemplateFieldConfiguration("quote", "Document > Quotation:nth-of-type(3)"); field.setRepeat(true); record.setFieldPaths(ImmutableList.of(field)); return record; }
private TemplateRecordConfiguration createRepeatQuoteRecord2() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("quote2"); record.setOrder(2); record.setPrecedingPath("Document > Link"); record.setFollowingPath("Document > Link:nth-of-type(2)"); record.setKind(Kind.NAMED); TemplateFieldConfiguration field = new TemplateFieldConfiguration("quote", "Document > Quotation:nth-of-type(2)"); field.setRepeat(true); record.setFieldPaths(ImmutableList.of(field)); return record; }
private TemplateRecordConfiguration createSingleQuoteRecord() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("single"); record.setOrder(4); record.setPrecedingPath("Document > Link:nth-of-type(3)"); record.setFollowingPath("Document > Table"); record.setRepeat(false); record.setKind(Kind.NAMED); List<TemplateFieldConfiguration> fields = ImmutableList.of( new TemplateFieldConfiguration("quote", "Document > Quotation:nth-of-type(4)")); record.setFieldPaths(fields); return record; }
private TemplateRecordConfiguration createSingleQuoteRecord() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("single"); record.setOrder(4); record.setPrecedingPath("Document > Link:nth-of-type(3)"); record.setFollowingPath("Document > Table"); record.setRepeat(false); record.setKind(Kind.NAMED); List<TemplateFieldConfiguration> fields = ImmutableList.of( new TemplateFieldConfiguration("quote", "Document > Quotation:nth-of-type(4)")); record.setFieldPaths(fields); return record; }
private TemplateRecordConfiguration createMissingRepeatQuoteRecord() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("missing"); record.setOrder(3); record.setPrecedingPath("Document > Link:nth-of-type(2)"); record.setFollowingPath("Document > Link:nth-of-type(3)"); record.setCoveredPaths(ImmutableList.of("Document > Quotation")); record.setMinimalRepeat("Document > Quotation"); record.setRepeat(true); record.setKind(Kind.NAMED); List<TemplateFieldConfiguration> fields = ImmutableList.of( new TemplateFieldConfiguration("quote", "Document > Quotation:nth-of-type(3)")); record.setFieldPaths(fields); return record; }
private TemplateRecordConfiguration createRepeatQuoteRecord1() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("quote1"); record.setOrder(1); record.setPrecedingPath(""); record.setFollowingPath("Document > Link"); record.setCoveredPaths(ImmutableList.of("Document > Quotation")); record.setMinimalRepeat("Document > Quotation"); record.setRepeat(true); record.setKind(Kind.NAMED); List<TemplateFieldConfiguration> fields = ImmutableList.of( new TemplateFieldConfiguration("quote", "Document > Quotation:nth-of-type(1)")); record.setFieldPaths(fields); return record; }
private TemplateRecordConfiguration createRepeatQuoteRecord2() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("quote2"); record.setOrder(2); record.setPrecedingPath("Document > Link"); record.setFollowingPath("Document > Link:nth-of-type(2)"); record.setCoveredPaths(ImmutableList.of("Document > Quotation")); record.setMinimalRepeat("Document > Quotation"); record.setRepeat(true); record.setKind(Kind.NAMED); List<TemplateFieldConfiguration> fields = ImmutableList.of( new TemplateFieldConfiguration("quote", "Document > Quotation:nth-of-type(2)")); record.setFieldPaths(fields); return record; }
private TemplateRecordConfiguration createSectionRecord() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("section"); record.setOrder(6); record.setPrecedingPath("Document > Table > TableBody > TableRow > TableCell:nth-of-type(2)"); record.setFollowingPath(""); record.setCoveredPaths( ImmutableList.of("Document > Section > Heading", "Document > Section > Paragraph")); record.setMinimalRepeat(""); record.setRepeat(true); record.setKind(Kind.NAMED); List<TemplateFieldConfiguration> fields = ImmutableList.of( new TemplateFieldConfiguration("heading", "Document > Section > Heading"), new TemplateFieldConfiguration("para", "Document > Section > Paragraph")); record.setFieldPaths(fields); return record; }
private TemplateRecordConfiguration createRowRecord() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("row"); record.setOrder(5); record.setPrecedingPath("Document > Quotation:nth-of-type(4)"); record.setFollowingPath("Document > Section"); record.setCoveredPaths(ImmutableList.of("Document > Table")); record.setMinimalRepeat("Document > Table > TableBody > TableRow"); record.setRepeat(true); record.setKind(Kind.NAMED); List<TemplateFieldConfiguration> fields = ImmutableList.of( new TemplateFieldConfiguration( "cell1", "Document > Table > TableBody > TableRow > TableCell:nth-of-type(1)"), new TemplateFieldConfiguration( "cell2", "Document > Table > TableBody > TableRow > TableCell:nth-of-type(2)")); record.setFieldPaths(fields); return record; }
private TemplateRecordConfiguration createRowRecord() { TemplateRecordConfiguration record = new TemplateRecordConfiguration(); record.setName("row"); record.setOrder(5); record.setPrecedingPath("Document > Quotation:nth-of-type(4)"); record.setFollowingPath("Document > Section"); record.setCoveredPaths(ImmutableList.of("Document > Table")); record.setMinimalRepeat("Document > Table > TableBody > TableRow"); record.setRepeat(true); record.setKind(Kind.NAMED); TemplateFieldConfiguration cell1 = new TemplateFieldConfiguration( "cell1", "Document > Table > TableBody > TableRow > TableCell:nth-of-type(1) > Paragraph"); cell1.setRepeat(true); TemplateFieldConfiguration cell2 = new TemplateFieldConfiguration( "cell2", "Document > Table > TableBody > TableRow > TableCell:nth-of-type(2)> Paragraph"); cell2.setRepeat(true); record.setFieldPaths(ImmutableList.of(cell1, cell2)); return record; }