//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.uima.utils; import static uk.gov.dstl.baleen.uima.utils.StructureUtil.filterAnnotations; import java.util.List; import java.util.Set; import org.apache.uima.fit.util.JCasUtil; import org.apache.uima.jcas.JCas; import uk.gov.dstl.baleen.types.structure.Structure; import uk.gov.dstl.baleen.uima.utils.select.ItemHierarchy; import uk.gov.dstl.baleen.uima.utils.select.Node; /** * A hierarchy within the document of the structure annotations. * <p> * The hierarchy is build using offset and depth. */ public class StructureHierarchy extends ItemHierarchy<Structure> { protected StructureHierarchy(Node<Structure> root) { super(root); } /** * Build the structure hierarchy for the given jCas, using only the structural classes provided. * <p> * The structure is built by first using the offset of the Structure annotation and then using the * depth. * * @param jCas the jCas * @param types the structural classes * @return the Structure base AnnotationHierachy */ public static StructureHierarchy build(JCas jCas, Set<Class<? extends Structure>> types) { final List<Structure> structures = filterAnnotations(JCasUtil.select(jCas, Structure.class), types); return new StructureHierarchy(AnnotationHierarchyBuilder.build(structures)); } }