//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.templates; import static java.util.Collections.singleton; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; import org.junit.After; import org.junit.Before; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest; import uk.gov.dstl.baleen.types.structure.Paragraph; import uk.gov.dstl.baleen.uima.BaleenAnnotator; public abstract class AbstractRecordAnnotatorTest extends AbstractAnnotatorTest { protected static final String PARA1 = "The quick brown fox jumped over the lazy dog's back."; protected static final String PARA2 = "The quick brown cat jumped over the lazy dog's back."; protected static final String PARA3 = "The quick brown rat jumped over the lazy dog's back."; protected static final String PARA4 = "The quick brown ant jumped over the lazy dog's back."; protected static final String PARA5 = "The quick brown elk jumped over the lazy dog's back."; protected static final String TEXT = String.join("\n", PARA1, PARA2, PARA3, PARA4, "", PARA5); protected static final ObjectMapper YAMLMAPPER = new ObjectMapper(new YAMLFactory()); protected Path tempDirectory; public AbstractRecordAnnotatorTest(Class<? extends BaleenAnnotator> annotatorClass) { super(annotatorClass); } @Before public void setup() throws IOException { tempDirectory = Files.createTempDirectory(getClass().getSimpleName()); jCas.setDocumentText(TEXT); addParagraphAnnotations(); } protected void addParagraphAnnotations() { Paragraph paragraph1 = new Paragraph(jCas); paragraph1.setBegin(0); paragraph1.setDepth(1); paragraph1.setEnd(52); paragraph1.addToIndexes(); Paragraph paragraph2 = new Paragraph(jCas); paragraph2.setBegin(53); paragraph2.setDepth(1); paragraph2.setEnd(105); paragraph2.addToIndexes(); Paragraph paragraph3 = new Paragraph(jCas); paragraph3.setBegin(106); paragraph3.setDepth(1); paragraph3.setEnd(158); paragraph3.addToIndexes(); Paragraph paragraph4 = new Paragraph(jCas); paragraph4.setBegin(159); paragraph4.setDepth(1); paragraph4.setEnd(211); paragraph4.addToIndexes(); Paragraph paragraph5 = new Paragraph(jCas); paragraph5.setBegin(212); paragraph5.setDepth(1); paragraph5.setEnd(212); paragraph5.addToIndexes(); Paragraph paragraph6 = new Paragraph(jCas); paragraph6.setBegin(213); paragraph6.setDepth(1); paragraph6.setEnd(265); paragraph6.addToIndexes(); } @After public void tearDown() throws IOException { Files.delete(tempDirectory); } 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; } }