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:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The identifier of the default partitioning.
  • Method Summary

    Modifier and Type
    Method
    Description
    computePartitioning(String partitioning, int offset, int length, boolean includeZeroLengthPartitions)
    Computes the partitioning of the given document range based on the given partitioning type.
    getContentType(String partitioning, int offset, boolean preferOpenPartitions)
    Returns the type of the document partition containing the given offset for the given partitioning.
    Returns the partitioner for the given partitioning or null if no partitioner is registered.
    Returns the set of legal content types of document partitions for the given partitioning This set can be empty.
    getPartition(String partitioning, int offset, boolean preferOpenPartitions)
    Returns the document partition of the given partitioning in which the given offset is located.
    Returns the existing partitionings for this document.
    void
    Sets this document's partitioner.
  • Field Details

    • DEFAULT_PARTITIONING

      static final String DEFAULT_PARTITIONING
      The identifier of the default partitioning.
      See Also:
  • Method Details

    • 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:
    • 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