Class ByteStringRangeHelper


  • @Internal
    public class ByteStringRangeHelper
    extends java.lang.Object
    Helper functions to evaluate the completeness of collection of ByteStringRanges.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static boolean coverSameKeySpace​(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> parentPartitions, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange childPartition)
      Returns true if parentPartitions form a proper superset of childPartition.
      static boolean doPartitionsOverlap​(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange first, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange second)
      Returns true if the two ByteStringRange overlaps, otherwise false.
      static java.lang.String formatByteStringRange​(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)
      Returns formatted string of a partition for debugging.
      static com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange getIntersectingPartition​(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p1, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p2)
      Return the overlapping parts of 2 partitions.
      static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> getMissingPartitionsFrom​(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions, com.google.protobuf.ByteString start, com.google.protobuf.ByteString end)
      Return missing partitions within partitions that are within start and end.
      static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> getMissingPartitionsFromEntireKeySpace​(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
      Return missing partitions from the entire keyspace.
      static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> getOverlappingPartitions​(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
      Return a list of overlapping partitions.
      static boolean isValidPartition​(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)
      Checks if the partition's start key is before its end key.
      static java.lang.String partitionsToString​(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
      Convert partitions to a string for debugging.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ByteStringRangeHelper

        public ByteStringRangeHelper()
    • Method Detail

      • coverSameKeySpace

        public static boolean coverSameKeySpace​(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> parentPartitions,
                                                com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange childPartition)
        Returns true if parentPartitions form a proper superset of childPartition.

        If ordered parentPartitions row ranges form a contiguous range without any overlaps, and start key equals to childPartition's start key, and end key equals to childPartition's end key, then parentPartitions form a proper superset of childPartition.

        Returns false if there are overlaps or missing partitions in parentPartitions.

        Parameters:
        parentPartitions - list of partitions to determine if it forms an exact contiguous range
        childPartition - the partition to match
        Returns:
        true if parentPartitions covers the same key space as childPartition, otherwise false.
      • partitionsToString

        public static java.lang.String partitionsToString​(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
        Convert partitions to a string for debugging.
        Parameters:
        partitions - to print
        Returns:
        string representation of partitions
      • getMissingPartitionsFrom

        public static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> getMissingPartitionsFrom​(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions,
                                                                                                                              com.google.protobuf.ByteString start,
                                                                                                                              com.google.protobuf.ByteString end)
        Return missing partitions within partitions that are within start and end. Gaps in partitions that are outside of start and end are ignored.
        Parameters:
        partitions - find missing partitions within
        start - start of the search range
        end - end of the search range
        Returns:
        missing partitions within the range
      • getMissingPartitionsFromEntireKeySpace

        public static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> getMissingPartitionsFromEntireKeySpace​(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
        Return missing partitions from the entire keyspace.
        Parameters:
        partitions - find missing partitions within
        Returns:
        a list of missing partitions.
      • getOverlappingPartitions

        public static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> getOverlappingPartitions​(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
        Return a list of overlapping partitions. The partitions outputted are valid partitions i.e. start < end. This represents 2 ordered partitions overlapping because the 2nd partition starts before the 1st ended. If end == start, it's not considered overlap.
        Parameters:
        partitions - find overlaps within
        Returns:
        a list of overlapping partitions.
      • formatByteStringRange

        public static java.lang.String formatByteStringRange​(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)
        Returns formatted string of a partition for debugging.
        Parameters:
        partition - partition to format.
        Returns:
        String representation of partition.
      • doPartitionsOverlap

        public static boolean doPartitionsOverlap​(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange first,
                                                  com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange second)
        Returns true if the two ByteStringRange overlaps, otherwise false. End = Start is not considered overlapping because end is open and start is closed.

        Assume the two ByteStringRange are valid such that the start <= end. There are 2 scenarios that's considered NOT overlapping. Otherwise, they are overlapping.

        • The second's start key is same or after first's end key
        • The first's start key is same or after second's end key
        Parameters:
        first - first ByteStringRange
        second - second ByteStringRange
        Returns:
        true if the two ByteStringRange overlaps, otherwise false.
      • isValidPartition

        public static boolean isValidPartition​(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)
        Checks if the partition's start key is before its end key.
        Parameters:
        partition - the partition to verify.
        Returns:
        true if partition is valid, otherwise false.
      • getIntersectingPartition

        public static com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange getIntersectingPartition​(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p1,
                                                                                                              com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p2)
                                                                                                       throws java.lang.IllegalArgumentException
        Return the overlapping parts of 2 partitions. Throw IllegalArgumentException if the 2 partitions don't overlap at all.
        Parameters:
        p1 - first partition
        p2 - second partition
        Returns:
        the intersection of the 2 partitions
        Throws:
        java.lang.IllegalArgumentException - if the 2 partitions don't overlap at all