blob: 0d8b1c67ea86c74bdd240fe93861c10779970665 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.4) on Fri Sep 20 12:10:30 CEST 2019 -->
<title>TreeTableFormat (Apache SIS 1.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2019-09-20">
<meta name="keywords" content="org.apache.sis.util.collection.TreeTableFormat class">
<meta name="keywords" content="getValueType()">
<meta name="keywords" content="getColumns()">
<meta name="keywords" content="setColumns()">
<meta name="keywords" content="getIndentation()">
<meta name="keywords" content="setIndentation()">
<meta name="keywords" content="getVerticalLinePosition()">
<meta name="keywords" content="setVerticalLinePosition()">
<meta name="keywords" content="getNodeFilter()">
<meta name="keywords" content="setNodeFilter()">
<meta name="keywords" content="parse()">
<meta name="keywords" content="format()">
<meta name="keywords" content="createFormat()">
<meta name="keywords" content="writeColumnSeparator()">
<meta name="keywords" content="clone()">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="TreeTableFormat (Apache SIS 1.0 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/TreeTableFormat.html">Use</a></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" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&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 id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.util.collection</a></div>
<h2 title="Class TreeTableFormat" class="title">Class TreeTableFormat</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></li>
<li>
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/text/Format.html?is-external=true" title="class or interface in java.text" class="externalLink">Format</a></li>
<li>
<ul class="inheritance">
<li><a href="../../io/CompoundFormat.html" title="class in org.apache.sis.io">CompoundFormat</a>&lt;T&gt;</li>
<li>
<ul class="inheritance">
<li><a href="../../io/TabularFormat.html" title="class in org.apache.sis.io">TabularFormat</a>&lt;<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">TreeTable</a>&gt;</li>
<li>
<ul class="inheritance">
<li>TreeTableFormat</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io" class="externalLink">Serializable</a></code>, <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Cloneable</a></code>, <code><a href="../Localized.html" title="interface in org.apache.sis.util">Localized</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">TreeTableFormat</span>
extends <a href="../../io/TabularFormat.html" title="class in org.apache.sis.io">TabularFormat</a>&lt;<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">TreeTable</a>&gt;</pre>
<div class="block">A parser and formatter for <a href="TreeTable.html" title="interface in org.apache.sis.util.collection"><code>Tree­Table</code></a> instances.
This formatter is given an arbitrary number of <a href="TableColumn.html" title="class in org.apache.sis.util.collection"><code>Table­Column</code></a>s
to use during the formatting. The first column is taken as the node label.
If a <code>Tree­Table</code> is formatted with only that column,
then the <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink"><code>String</code></a> result is like the following example:
<blockquote><pre>Node #1
  ├─Node #2
  │   └─Node #4
  └─Node #3</pre></blockquote>
If the same <code>Tree­Table</code> is formatted with two columns,
then the <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink"><code>String</code></a> result is like the following example:
<blockquote><pre>Node #1……………………… More #1
  ├─Node #2…………… More #2
  │   └─Node #4… More #4
  └─Node #3…………… More #3</pre></blockquote>
This representation can be printed to the <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Console.html?is-external=true#writer()" title="class or interface in java.io" class="externalLink">console output</a>
(for example) if the stream uses a monospaced font and supports Unicode characters.
<div class="section">Customization</div>
Some formatting characteristics (indentation width, column where to draw the vertical line
below nodes) can be modified by calls to the setter methods defined in this formatter.
In particular, the dots joining the node labels to their values can be specified by the
<a href="../../io/TabularFormat.html#setColumnSeparatorPattern(java.lang.String)">column separator pattern</a>.
The default pattern is <code>"?……[…] "</code>, which means <cite>"If the next value is non-null,
then insert the <code>"……"</code> string, repeat the <code>'…'</code> character as many time as needed
(may be zero), and finally insert a space"</cite>.
<div class="section">Safety against infinite recursivity</div>
Some <code>Tree­Table</code> implementations generate the nodes dynamically as wrappers around Java objects.
Such Java objects may contain cyclic associations (<var>A</var> contains <var>B</var> contains <var>C</var>
contains <var>A</var>), which result in a tree of infinite depth. Some examples can been found in ISO 19115
metadata. This <code>Tree­Table­Format</code> class contains a safety against such cycles. The algorithm is based
on the assumption that for each node, the values and children are fully determined by the
<a href="TreeTable.Node.html#getUserObject()">user object</a>, if non-null. Consequently for each node <var>C</var>
to be formatted, if the user object of that node is the same instance (in the sense of the <code>==</code> operator)
than the user object of a parent node <var>A</var>, then the children of the <var>C</var> node will not be formatted.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../serialized-form.html#org.apache.sis.util.collection.TreeTableFormat">Serialized Form</a></dd>
<p><font size="-1">Defined in the <code>sis-utility</code> module</font></p>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.java.text.Format">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/text/Format.html?is-external=true" title="class or interface in java.text" class="externalLink">Format</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/text/Format.Field.html?is-external=true" title="class or interface in java.text" class="externalLink">Format​.Field</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.TabularFormat">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;<a href="../../io/TabularFormat.html" title="class in org.apache.sis.io">TabularFormat</a></h3>
<code><a href="../../io/TabularFormat.html#beforeFill">before­Fill</a>, <a href="../../io/TabularFormat.html#columnSeparator">column­Separator</a>, <a href="../../io/TabularFormat.html#fillCharacter">fill­Character</a>, <a href="../../io/TabularFormat.html#lineSeparator">line­Separator</a>, <a href="../../io/TabularFormat.html#omitTrailingNulls">omit­Trailing­Nulls</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.util.Locale,java.util.TimeZone)">TreeTableFormat</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util" class="externalLink">Locale</a>&nbsp;locale,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util" class="externalLink">TimeZone</a>&nbsp;timezone)</code></th>
<td class="colLast">
<div class="block">Creates a new tree table format.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance 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="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="TreeTableFormat.html" title="class in org.apache.sis.util.collection">TreeTableFormat</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#clone()">clone</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a clone of this format.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/text/Format.html?is-external=true" title="class or interface in java.text" class="externalLink">Format</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createFormat(java.lang.Class)">createFormat</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang" class="externalLink">Class</a>&lt;?&gt;&nbsp;valueType)</code></th>
<td class="colLast">
<div class="block">Creates a new format to use for parsing and formatting values of the given type.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#format(org.apache.sis.util.collection.TreeTable,java.lang.Appendable)">format</a></span>&#8203;(<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">TreeTable</a>&nbsp;tree,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Appendable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Appendable</a>&nbsp;toAppendTo)</code></th>
<td class="colLast">
<div class="block">Writes a graphical representation of the specified tree table in the given stream or buffer.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="TableColumn.html" title="class in org.apache.sis.util.collection">TableColumn</a>&lt;?&gt;[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getColumns()">getColumns</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the table columns to parse and format, or <code>null</code> for the default list of columns.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getIndentation()">getIndentation</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the number of spaces to add on the left margin for each indentation level.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html?is-external=true" title="class or interface in java.util.function" class="externalLink">Predicate</a>&lt;<a href="TreeTable.Node.html" title="interface in org.apache.sis.util.collection">TreeTable.Node</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNodeFilter()">getNodeFilter</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the filter that specify whether a node should be formatted or ignored.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang" class="externalLink">Class</a>&lt;<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">TreeTable</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getValueType()">getValueType</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the type of objects formatted by this class.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getVerticalLinePosition()">getVerticalLinePosition</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the position of the vertical line, relative to the position of the root label.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="TreeTable.html" title="interface in org.apache.sis.util.collection">TreeTable</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#parse(java.lang.CharSequence,java.text.ParsePosition)">parse</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/CharSequence.html?is-external=true" title="class or interface in java.lang" class="externalLink">CharSequence</a>&nbsp;text,
<a href="https://docs.oracle.com/javase/8/docs/api/java/text/ParsePosition.html?is-external=true" title="class or interface in java.text" class="externalLink">ParsePosition</a>&nbsp;pos)</code></th>
<td class="colLast">
<div class="block">Creates a tree from the given character sequence,
or returns <code>null</code> if the given text does not look like a tree for this method.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setColumns(org.apache.sis.util.collection.TableColumn...)">setColumns</a></span>&#8203;(<a href="TableColumn.html" title="class in org.apache.sis.util.collection">TableColumn</a>&lt;?&gt;...&nbsp;columns)</code></th>
<td class="colLast">
<div class="block">Sets the table columns to parse and format.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setIndentation(int)">setIndentation</a></span>&#8203;(int&nbsp;indentation)</code></th>
<td class="colLast">
<div class="block">Sets the number of spaces to add on the left margin for each indentation level.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setNodeFilter(java.util.function.Predicate)">setNodeFilter</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html?is-external=true" title="class or interface in java.util.function" class="externalLink">Predicate</a>&lt;<a href="TreeTable.Node.html" title="interface in org.apache.sis.util.collection">TreeTable.Node</a>&gt;&nbsp;filter)</code></th>
<td class="colLast">
<div class="block">Sets a filter specifying whether a node should be formatted or ignored.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setVerticalLinePosition(int)">setVerticalLinePosition</a></span>&#8203;(int&nbsp;verticalLinePosition)</code></th>
<td class="colLast">
<div class="block">Sets the position of the vertical line, relative to the position of the root label.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#writeColumnSeparator(int,org.apache.sis.io.TableAppender)">writeColumnSeparator</a></span>&#8203;(int&nbsp;nextColumn,
<a href="../../io/TableAppender.html" title="class in org.apache.sis.io">TableAppender</a>&nbsp;out)</code></th>
<td class="colLast">
<div class="block">Writes characters between columns.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.TabularFormat">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;<a href="../../io/TabularFormat.html" title="class in org.apache.sis.io">TabularFormat</a></h3>
<code><a href="../../io/TabularFormat.html#getColumnSeparatorMatcher(java.lang.CharSequence)">get­Column­Separator­Matcher</a>, <a href="../../io/TabularFormat.html#getColumnSeparatorPattern()">get­Column­Separator­Pattern</a>, <a href="../../io/TabularFormat.html#getLineSeparator()">get­Line­Separator</a>, <a href="../../io/TabularFormat.html#setColumnSeparatorPattern(java.lang.String)">set­Column­Separator­Pattern</a>, <a href="../../io/TabularFormat.html#setLineSeparator(java.lang.String)">set­Line­Separator</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.CompoundFormat">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;<a href="../../io/CompoundFormat.html" title="class in org.apache.sis.io">CompoundFormat</a></h3>
<code><a href="../../io/CompoundFormat.html#format(java.lang.Object,java.lang.StringBuffer,java.text.FieldPosition)">format</a>, <a href="../../io/CompoundFormat.html#getFormat(java.lang.Class)">get­Format</a>, <a href="../../io/CompoundFormat.html#getLocale()">get­Locale</a>, <a href="../../io/CompoundFormat.html#getLocale(java.util.Locale.Category)">get­Locale</a>, <a href="../../io/CompoundFormat.html#getTimeZone()">get­Time­Zone</a>, <a href="../../io/CompoundFormat.html#parseObject(java.lang.String)">parse­Object</a>, <a href="../../io/CompoundFormat.html#parseObject(java.lang.String,java.text.ParsePosition)">parse­Object</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Format">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/text/Format.html?is-external=true" title="class or interface in java.text" class="externalLink">Format</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/text/Format.html?is-external=true#format(java.lang.Object)" title="class or interface in java.text" class="externalLink">format</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/text/Format.html?is-external=true#formatToCharacterIterator(java.lang.Object)" title="class or interface in java.text" class="externalLink">format­To­Character­Iterator</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">get­Class</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hash­Code</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notify­All</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">to­String</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(java.util.Locale,java.util.TimeZone)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>TreeTableFormat</h4>
<pre>public&nbsp;TreeTableFormat&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util" class="externalLink">Locale</a>&nbsp;locale,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util" class="externalLink">TimeZone</a>&nbsp;timezone)</pre>
<div class="block">Creates a new tree table format.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>locale</code> - the locale to use for numbers, dates and angles formatting,
or <code>null</code> for the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true#ROOT" title="class or interface in java.util" class="externalLink">root locale</a>.</dd>
<dd><code>timezone</code> - the timezone, or <code>null</code> for UTC.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="getValueType()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getValueType</h4>
<pre class="methodSignature">public final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang" class="externalLink">Class</a>&lt;<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">TreeTable</a>&gt;&nbsp;getValueType()</pre>
<div class="block">Returns the type of objects formatted by this class.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../io/CompoundFormat.html#getValueType()">get­Value­Type</a></code>&nbsp;in class&nbsp;<code><a href="../../io/CompoundFormat.html" title="class in org.apache.sis.io">Compound­Format</a>&lt;<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">Tree­Table</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>Tree­Table​.class</code></dd>
</dl>
</li>
</ul>
<a id="getColumns()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getColumns</h4>
<pre class="methodSignature">public&nbsp;<a href="TableColumn.html" title="class in org.apache.sis.util.collection">TableColumn</a>&lt;?&gt;[]&nbsp;getColumns()</pre>
<div class="block">Returns the table columns to parse and format, or <code>null</code> for the default list of columns.
The default is:
<ul>
<li>On parsing, a single column containing the node label as a <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink"><code>String</code></a>.</li>
<li>On formatting, <a href="TreeTable.html#getColumns()">all <code>Tree­Table</code>columns</a>.</li>
</ul></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the table columns to parse and format, or <code>null</code> for the default.</dd>
</dl>
</li>
</ul>
<a id="setColumns(org.apache.sis.util.collection.TableColumn...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setColumns</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setColumns&#8203;(<a href="TableColumn.html" title="class in org.apache.sis.util.collection">TableColumn</a>&lt;?&gt;...&nbsp;columns)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink">IllegalArgumentException</a></pre>
<div class="block">Sets the table columns to parse and format. A <code>null</code> value means to use the default
list of columns, as defined in the <a href="#getColumns()"><code>get­Columns()</code></a> method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>columns</code> - the table columns to parse and format, or <code>null</code> for the default.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink">Illegal­Argument­Exception</a></code> - if the given array is empty, contains a null element
or a duplicated value.</dd>
</dl>
</li>
</ul>
<a id="getIndentation()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIndentation</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getIndentation()</pre>
<div class="block">Returns the number of spaces to add on the left margin for each indentation level.
The default value is 4.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the current indentation.</dd>
</dl>
</li>
</ul>
<a id="setIndentation(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setIndentation</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setIndentation&#8203;(int&nbsp;indentation)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink">IllegalArgumentException</a></pre>
<div class="block">Sets the number of spaces to add on the left margin for each indentation level.
If the new indentation is smaller than the <a href="#getVerticalLinePosition()">vertical line position</a>, then the later is also set to the given indentation value.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>indentation</code> - the new indentation.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink">Illegal­Argument­Exception</a></code> - if the given value is negative.</dd>
</dl>
</li>
</ul>
<a id="getVerticalLinePosition()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getVerticalLinePosition</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getVerticalLinePosition()</pre>
<div class="block">Returns the position of the vertical line, relative to the position of the root label.
The default value is 2, which means that the vertical line is drawn below the third
letter of the root label.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the current vertical line position.</dd>
</dl>
</li>
</ul>
<a id="setVerticalLinePosition(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setVerticalLinePosition</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setVerticalLinePosition&#8203;(int&nbsp;verticalLinePosition)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink">IllegalArgumentException</a></pre>
<div class="block">Sets the position of the vertical line, relative to the position of the root label.
The given value can not be greater than the <a href="#getIndentation()">indentation</a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>vertical­Line­Position</code> - the new vertical line position.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink">Illegal­Argument­Exception</a></code> - if the given value is negative or greater than the indentation.</dd>
</dl>
</li>
</ul>
<a id="getNodeFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNodeFilter</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html?is-external=true" title="class or interface in java.util.function" class="externalLink">Predicate</a>&lt;<a href="TreeTable.Node.html" title="interface in org.apache.sis.util.collection">TreeTable.Node</a>&gt;&nbsp;getNodeFilter()</pre>
<div class="block">Returns the filter that specify whether a node should be formatted or ignored.
This is the predicate specified in the last call to <a href="#setNodeFilter(java.util.function.Predicate)"><code>set­Node­Filter(Predicate)</code></a>.
If no filter has been set, then this method returns <code>null</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a filter for specifying whether a node should be formatted, or <code>null</code> if no filtering is applied.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="setNodeFilter(java.util.function.Predicate)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setNodeFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setNodeFilter&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html?is-external=true" title="class or interface in java.util.function" class="externalLink">Predicate</a>&lt;<a href="TreeTable.Node.html" title="interface in org.apache.sis.util.collection">TreeTable.Node</a>&gt;&nbsp;filter)</pre>
<div class="block">Sets a filter specifying whether a node should be formatted or ignored.
Filters are tested at formatting time for all children of the root node (but not for the root node itself).
Filters are ignored at parsing time.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>filter</code> - filter for specifying whether a node should be formatted, or <code>null</code> for no filtering.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="parse(java.lang.CharSequence,java.text.ParsePosition)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parse</h4>
<pre class="methodSignature">public&nbsp;<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">TreeTable</a>&nbsp;parse&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/CharSequence.html?is-external=true" title="class or interface in java.lang" class="externalLink">CharSequence</a>&nbsp;text,
<a href="https://docs.oracle.com/javase/8/docs/api/java/text/ParsePosition.html?is-external=true" title="class or interface in java.text" class="externalLink">ParsePosition</a>&nbsp;pos)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/text/ParseException.html?is-external=true" title="class or interface in java.text" class="externalLink">ParseException</a></pre>
<div class="block">Creates a tree from the given character sequence,
or returns <code>null</code> if the given text does not look like a tree for this method.
This method can parse the trees created by the <code>format(…)</code> methods
defined in this class.
<div class="section">Parsing rules</div>
<ul>
<li>Each node shall be represented by a single line made of two parts, in that order:
<ol>
<li>white spaces and tree drawing characters (<code>'│'</code>, <code>'├'</code>, <code>'└'</code> or <code>'─'</code>);</li>
<li>string representations of node values, separated by the
<a href="../../io/TabularFormat.html#getColumnSeparatorPattern()">colunm separator</a>.</li>
</ol>
</li>
<li>The number of spaces and drawing characters before the node values determines the node
indentation. This indentation does not need to be a factor of the <a href="#getIndentation()"><code>get­Indentation()</code></a>
value, but must be consistent across all the parsed tree.</li>
<li>The indentation determines the parent of each node.</li>
<li>Parsing stops at first empty line (ignoring whitespaces), or at the end of the given text.</li>
</ul>
<div class="section">Error index</div>
If the given text does not seem to be a tree table, then this method returns <code>null</code>.
Otherwise if parsing started but failed, then:
<ul>
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/text/ParsePosition.html?is-external=true#getErrorIndex()" title="class or interface in java.text" class="externalLink"><code>Parse­Position​.get­Error­Index()</code></a> will give the index at the beginning
of line or beginning of cell where the error occurred, and</li>
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/text/ParseException.html?is-external=true#getErrorOffset()" title="class or interface in java.text" class="externalLink"><code>Parse­Exception​.get­Error­Offset()</code></a> will give either the same value,
or a slightly more accurate value inside the cell.</li>
</ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../io/CompoundFormat.html#parse(java.lang.CharSequence,java.text.ParsePosition)">parse</a></code>&nbsp;in class&nbsp;<code><a href="../../io/CompoundFormat.html" title="class in org.apache.sis.io">Compound­Format</a>&lt;<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">Tree­Table</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>text</code> - the character sequence for the tree to parse.</dd>
<dd><code>pos</code> - the position where to start the parsing.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the parsed tree, or <code>null</code> if the given character sequence can not be parsed.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/text/ParseException.html?is-external=true" title="class or interface in java.text" class="externalLink">Parse­Exception</a></code> - if an error occurred while parsing a node value.</dd>
</dl>
</li>
</ul>
<a id="format(org.apache.sis.util.collection.TreeTable,java.lang.Appendable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>format</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;format&#8203;(<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">TreeTable</a>&nbsp;tree,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Appendable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Appendable</a>&nbsp;toAppendTo)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a></pre>
<div class="block">Writes a graphical representation of the specified tree table in the given stream or buffer.
This method iterates recursively over all <a href="TreeTable.Node.html#getChildren()">children</a>.
For each <a href="#getColumns()">column to format</a> in each node, this method gets a textual
representation of the <a href="TreeTable.Node.html#getValue(org.apache.sis.util.collection.TableColumn)">value in that column</a>
using the formatter obtained by a call to <a href="../../io/CompoundFormat.html#getFormat(java.lang.Class)"><code>Compound­Format​.get­Format(Class)</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../io/CompoundFormat.html#format(T,java.lang.Appendable)">format</a></code>&nbsp;in class&nbsp;<code><a href="../../io/CompoundFormat.html" title="class in org.apache.sis.io">Compound­Format</a>&lt;<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">Tree­Table</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>tree</code> - the tree to format.</dd>
<dd><code>to­Append­To</code> - where to format the tree.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a></code> - if an error occurred while writing to the given appendable.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="TreeTables.html#toString(org.apache.sis.util.collection.TreeTable)"><code>Tree­Tables​.to­String(Tree­Table)</code></a></dd>
</dl>
</li>
</ul>
<a id="createFormat(java.lang.Class)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createFormat</h4>
<pre class="methodSignature">protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/text/Format.html?is-external=true" title="class or interface in java.text" class="externalLink">Format</a>&nbsp;createFormat&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang" class="externalLink">Class</a>&lt;?&gt;&nbsp;valueType)</pre>
<div class="block">Creates a new format to use for parsing and formatting values of the given type.
This method is invoked by the first time that a format is needed for the given type.
Subclasses can override this method if they want to configure the way dates, numbers
or other objects are formatted.
See <a href="../../io/CompoundFormat.html#createFormat(java.lang.Class)">parent class documentation</a>
for more information.
<p>The implementation in <code>Tree­Table­Format</code> differs from the default implementation
in the following aspects:</p>
<ul>
<li><code>Unit­Format</code> uses <a href="../../measure/UnitFormat.Style.html#NAME"><code>Unit­Format​.Style​.NAME</code></a>.</li>
</ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../io/CompoundFormat.html#createFormat(java.lang.Class)">create­Format</a></code>&nbsp;in class&nbsp;<code><a href="../../io/CompoundFormat.html" title="class in org.apache.sis.io">Compound­Format</a>&lt;<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">Tree­Table</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value­Type</code> - the base type of values to parse or format.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the format to use for parsing of formatting values of the given type, or <code>null</code> if none.</dd>
</dl>
</li>
</ul>
<a id="writeColumnSeparator(int,org.apache.sis.io.TableAppender)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeColumnSeparator</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;writeColumnSeparator&#8203;(int&nbsp;nextColumn,
<a href="../../io/TableAppender.html" title="class in org.apache.sis.io">TableAppender</a>&nbsp;out)</pre>
<div class="block">Writes characters between columns. The default implementation applies the configuration
specified by <a href="../../io/TabularFormat.html#setColumnSeparatorPattern(java.lang.String)"><code>Tabular­Format​.set­Column­Separator­Pattern(String)</code></a> as below:
<blockquote><code>
out​.append(<a href="../../io/TabularFormat.html#beforeFill">before­Fill</a>);
out​.next­Column(<a href="../../io/TabularFormat.html#fillCharacter">fill­Character</a>);
out​.append(<a href="../../io/TabularFormat.html#columnSeparator">column­Separator</a>);
</code></blockquote>
The output with default values is like below:
<blockquote><pre>root
└─column0…… column1…… column2…… column3</pre></blockquote>
Subclasses can override this method if different column separators are desired.
Note however that doing so may prevent the <a href="#parse(java.lang.CharSequence,java.text.ParsePosition)"><code>parse(…)</code></a> method to work.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>next­Column</code> - zero-based index of the column to be written after the separator.</dd>
<dd><code>out</code> - where to write the column separator.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../io/TableAppender.html#nextColumn(char)"><code>Table­Appender​.next­Column(char)</code></a></dd>
</dl>
</li>
</ul>
<a id="clone()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>clone</h4>
<pre class="methodSignature">public&nbsp;<a href="TreeTableFormat.html" title="class in org.apache.sis.util.collection">TreeTableFormat</a>&nbsp;clone()</pre>
<div class="block">Returns a clone of this format.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../io/TabularFormat.html#clone()">clone</a></code>&nbsp;in class&nbsp;<code><a href="../../io/TabularFormat.html" title="class in org.apache.sis.io">Tabular­Format</a>&lt;<a href="TreeTable.html" title="interface in org.apache.sis.util.collection">Tree­Table</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a clone of this format.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/TreeTableFormat.html">Use</a></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" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&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 id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2010&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>