blob: 1af573118e66f6f5686a4457012ca6cc057e4999 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>ByteStringRangeHelper (Apache Beam 2.47.0)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ByteStringRangeHelper (Apache Beam 2.47.0)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/changestreams/ChangeStreamContinuationTokenHelper.html" title="class in org.apache.beam.sdk.io.gcp.bigtable.changestreams"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../index.html?org/apache/beam/sdk/io/gcp/bigtable/changestreams/ByteStringRangeHelper.html" target="_top">Frames</a></li>
<li><a href="ByteStringRangeHelper.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.sdk.io.gcp.bigtable.changestreams</div>
<h2 title="Class ByteStringRangeHelper" class="title">Class ByteStringRangeHelper</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.io.gcp.bigtable.changestreams.ByteStringRangeHelper</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre><a href="../../../../../../../../org/apache/beam/sdk/annotations/Internal.html" title="annotation in org.apache.beam.sdk.annotations">@Internal</a>
public class <span class="typeNameLabel">ByteStringRangeHelper</span>
extends java.lang.Object</pre>
<div class="block">Helper functions to evaluate the completeness of collection of ByteStringRanges.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/changestreams/ByteStringRangeHelper.html#ByteStringRangeHelper--">ByteStringRangeHelper</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/changestreams/ByteStringRangeHelper.html#doPartitionsOverlap-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-">doPartitionsOverlap</a></span>(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;first,
com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;second)</code>
<div class="block">Returns true if the two ByteStringRange overlaps, otherwise false.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/changestreams/ByteStringRangeHelper.html#formatByteStringRange-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-">formatByteStringRange</a></span>(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;partition)</code>
<div class="block">Returns formatted string of a partition for debugging.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/changestreams/ByteStringRangeHelper.html#getIntersectingPartition-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-">getIntersectingPartition</a></span>(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;p1,
com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;p2)</code>
<div class="block">Return the overlapping parts of 2 partitions.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static java.util.List&lt;com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/changestreams/ByteStringRangeHelper.html#getMissingAndOverlappingPartitionsFromKeySpace-java.util.List-">getMissingAndOverlappingPartitionsFromKeySpace</a></span>(java.util.List&lt;com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&gt;&nbsp;partitions)</code>
<div class="block">Figure out if partitions cover the entire keyspace.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/changestreams/ByteStringRangeHelper.html#isSuperset-java.util.List-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-">isSuperset</a></span>(java.util.List&lt;com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&gt;&nbsp;parentPartitions,
com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;childPartition)</code>
<div class="block">Returns true if parentPartitions is a superset of childPartition.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/changestreams/ByteStringRangeHelper.html#isValidPartition-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-">isValidPartition</a></span>(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;partition)</code>
<div class="block">Checks if the partition's start key is before its end key.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/changestreams/ByteStringRangeHelper.html#partitionsToString-java.util.List-">partitionsToString</a></span>(java.util.List&lt;com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&gt;&nbsp;partitions)</code>
<div class="block">Convert partitions to a string for debugging.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="ByteStringRangeHelper--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ByteStringRangeHelper</h4>
<pre>public&nbsp;ByteStringRangeHelper()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="isSuperset-java.util.List-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSuperset</h4>
<pre>public static&nbsp;boolean&nbsp;isSuperset(java.util.List&lt;com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&gt;&nbsp;parentPartitions,
com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;childPartition)</pre>
<div class="block">Returns true if parentPartitions is a superset of childPartition.
<p>If ordered parentPartitions row ranges form a contiguous range, and start key is before or
at childPartition's start key, and end key is at or after childPartition's end key, then
parentPartitions is a superset of childPartition.
<p>Overlaps from parents are valid because arbitrary partitions can merge and they may overlap.
They will form a valid new partition. However, if there are any missing parent partitions, then
merge cannot happen with missing row ranges.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>parentPartitions</code> - list of partitions to determine if it forms a large contiguous range</dd>
<dd><code>childPartition</code> - the smaller partition</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if parentPartitions is a superset of childPartition, otherwise false.</dd>
</dl>
</li>
</ul>
<a name="partitionsToString-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>partitionsToString</h4>
<pre>public static&nbsp;java.lang.String&nbsp;partitionsToString(java.util.List&lt;com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&gt;&nbsp;partitions)</pre>
<div class="block">Convert partitions to a string for debugging.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>partitions</code> - to print</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>string representation of partitions</dd>
</dl>
</li>
</ul>
<a name="getMissingAndOverlappingPartitionsFromKeySpace-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMissingAndOverlappingPartitionsFromKeySpace</h4>
<pre>public static&nbsp;java.util.List&lt;com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&gt;&nbsp;getMissingAndOverlappingPartitionsFromKeySpace(java.util.List&lt;com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&gt;&nbsp;partitions)</pre>
<div class="block">Figure out if partitions cover the entire keyspace. If it doesn't, return a list of missing and
overlapping partitions.
<p>partitions covers the entire key space if, when ordered, the end key is the same as the
start key of the next row range in the list, and the first start key is "" and the last end key
is "". There should be no overlap.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>partitions</code> - to determine if they cover entire keyspace</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>list of missing and overlapping partitions</dd>
</dl>
</li>
</ul>
<a name="formatByteStringRange-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>formatByteStringRange</h4>
<pre>public static&nbsp;java.lang.String&nbsp;formatByteStringRange(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;partition)</pre>
<div class="block">Returns formatted string of a partition for debugging.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>partition</code> - partition to format.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String representation of partition.</dd>
</dl>
</li>
</ul>
<a name="doPartitionsOverlap-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doPartitionsOverlap</h4>
<pre>public static&nbsp;boolean&nbsp;doPartitionsOverlap(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;first,
com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;second)</pre>
<div class="block">Returns true if the two ByteStringRange overlaps, otherwise false. End = Start is not
considered overlapping because end is open and start is closed.
<p>Assume the two ByteStringRange are valid such that the start <= end. There are 2 scenarios
that's considered NOT overlapping. Otherwise, they are overlapping.
<ul>
<li>The second's start key is same or after first's end key
<li>The first's start key is same or after second's end key
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>first</code> - first ByteStringRange</dd>
<dd><code>second</code> - second ByteStringRange</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the two ByteStringRange overlaps, otherwise false.</dd>
</dl>
</li>
</ul>
<a name="isValidPartition-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isValidPartition</h4>
<pre>public static&nbsp;boolean&nbsp;isValidPartition(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;partition)</pre>
<div class="block">Checks if the partition's start key is before its end key.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>partition</code> - the partition to verify.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if partition is valid, otherwise false.</dd>
</dl>
</li>
</ul>
<a name="getIntersectingPartition-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getIntersectingPartition</h4>
<pre>public static&nbsp;com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;getIntersectingPartition(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;p1,
com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange&nbsp;p2)
throws java.lang.IllegalArgumentException</pre>
<div class="block">Return the overlapping parts of 2 partitions. Throw IllegalArgumentException if the 2
partitions don't overlap at all.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>p1</code> - first partition</dd>
<dd><code>p2</code> - second partition</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the intersection of the 2 partitions</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - if the 2 partitions don't overlap at all</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/changestreams/ChangeStreamContinuationTokenHelper.html" title="class in org.apache.beam.sdk.io.gcp.bigtable.changestreams"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../index.html?org/apache/beam/sdk/io/gcp/bigtable/changestreams/ByteStringRangeHelper.html" target="_top">Frames</a></li>
<li><a href="ByteStringRangeHelper.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>