Interface IDocumentExtension3

  • All Known Implementing Classes:
    AbstractDocument, ChildDocument, Document, ProjectionDocument

    public interface IDocumentExtension3
    Extension interface for IDocument.

    Adds the concept of multiple partitionings and the concept of zero-length partitions in conjunction with open and delimited partitions. A delimited partition has a well defined start delimiter and a well defined end delimiter. Between two delimited partitions there may be an open partition of length zero.

    In order to fulfill the contract of this interface, the document must be configured with a document partitioner implementing IDocumentPartitionerExtension2.

    Since:
    3.0
    See Also:
    IDocumentPartitionerExtension2
    • Field Detail

      • DEFAULT_PARTITIONING

        static final String DEFAULT_PARTITIONING
        The identifier of the default partitioning.
        See Also:
        Constant Field Values
    • Method Detail

      • getPartitionings

        String[] getPartitionings()
        Returns the existing partitionings for this document. This includes the default partitioning.
        Returns:
        the existing partitionings for this document
      • getLegalContentTypes

        String[] getLegalContentTypes​(String partitioning)
                               throws BadPartitioningException
        Returns the set of legal content types of document partitions for the given partitioning This set can be empty. The set can contain more content types than contained by the result of getPartitioning(partitioning, 0, getLength()).
        Parameters:
        partitioning - the partitioning for which to return the legal content types
        Returns:
        the set of legal content types
        Throws:
        BadPartitioningException - if partitioning is invalid for this document
      • getContentType

        String getContentType​(String partitioning,
                              int offset,
                              boolean preferOpenPartitions)
                       throws BadLocationException,
                              BadPartitioningException
        Returns the type of the document partition containing the given offset for the given partitioning. This is a convenience method for getPartition(partitioning, offset, boolean).getType().

        If preferOpenPartitions is true, precedence is given to an open partition ending at offset over a delimited partition starting at offset. If it is false, precedence is given to the partition that does not end at offset.

        This is only supported if the connected IDocumentPartitioner supports it, i.e. implements IDocumentPartitionerExtension2. Otherwise, preferOpenPartitions is ignored.

        Parameters:
        partitioning - the partitioning
        offset - the document offset
        preferOpenPartitions - true if precedence should be given to a open partition ending at offset over a closed partition starting at offset
        Returns:
        the partition type
        Throws:
        BadLocationException - if offset is invalid in this document
        BadPartitioningException - if partitioning is invalid for this document
      • getPartition

        ITypedRegion getPartition​(String partitioning,
                                  int offset,
                                  boolean preferOpenPartitions)
                           throws BadLocationException,
                                  BadPartitioningException
        Returns the document partition of the given partitioning in which the given offset is located.

        If preferOpenPartitions is true, precedence is given to an open partition ending at offset over a delimited partition starting at offset. If it is false, precedence is given to the partition that does not end at offset.

        This is only supported if the connected IDocumentPartitioner supports it, i.e. implements IDocumentPartitionerExtension2. Otherwise, preferOpenPartitions is ignored.

        Parameters:
        partitioning - the partitioning
        offset - the document offset
        preferOpenPartitions - true if precedence should be given to a open partition ending at offset over a closed partition starting at offset
        Returns:
        a specification of the partition
        Throws:
        BadLocationException - if offset is invalid in this document
        BadPartitioningException - if partitioning is invalid for this document
      • computePartitioning

        ITypedRegion[] computePartitioning​(String partitioning,
                                           int offset,
                                           int length,
                                           boolean includeZeroLengthPartitions)
                                    throws BadLocationException,
                                           BadPartitioningException
        Computes the partitioning of the given document range based on the given partitioning type.

        If includeZeroLengthPartitions is true, a zero-length partition of an open partition type (usually the default partition) is included between two closed partitions. If it is false, no zero-length partitions are included.

        This is only supported if the connected IDocumentPartitioner supports it, i.e. implements IDocumentPartitionerExtension2. Otherwise, includeZeroLengthPartitions is ignored.

        Parameters:
        partitioning - the document's partitioning type
        offset - the document offset at which the range starts
        length - the length of the document range
        includeZeroLengthPartitions - true if zero-length partitions should be returned as part of the computed partitioning
        Returns:
        a specification of the range's partitioning
        Throws:
        BadLocationException - if the range is invalid in this document$
        BadPartitioningException - if partitioning is invalid for this document
      • setDocumentPartitioner

        void setDocumentPartitioner​(String partitioning,
                                    IDocumentPartitioner partitioner)
        Sets this document's partitioner. The caller of this method is responsible for disconnecting the document's old partitioner from the document and to connect the new partitioner to the document. Informs all document partitioning listeners about this change.
        Parameters:
        partitioning - the partitioning for which to set the partitioner
        partitioner - the document's new partitioner
        See Also:
        IDocumentPartitioningListener
      • getDocumentPartitioner

        IDocumentPartitioner getDocumentPartitioner​(String partitioning)
        Returns the partitioner for the given partitioning or null if no partitioner is registered.
        Parameters:
        partitioning - the partitioning for which to set the partitioner
        Returns:
        the partitioner for the given partitioning