<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>StringUtils xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../apidocs/org/apache/velocity/util/StringUtils.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.velocity.util;
<a name="2" href="#2">2</a>   
<a name="3" href="#3">3</a>   <em class="jxr_comment">/*</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> *</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="19" href="#19">19</a>  <em class="jxr_comment"> * under the License.    </em>
<a name="20" href="#20">20</a>  <em class="jxr_comment"> */</em>
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.ByteArrayOutputStream;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.File;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.io.FileReader;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.PrintWriter;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Hashtable;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.StringTokenizer;
<a name="31" href="#31">31</a>  
<a name="32" href="#32">32</a>  
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment">/**</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * This class provides some methods for dynamically</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * invoking methods in objects, and some string</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * manipulation methods used by torque. The string</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * methods will soon be moved into the turbine</em>
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> * string utilities class.</em>
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> *</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> *  @author &lt;a href="<a href="mailto:jvanzyl@apache.org" target="alexandria_uri">mailto:jvanzyl@apache.org</a>"&gt;Jason van Zyl&lt;/a&gt;</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> *  @author &lt;a href="<a href="mailto:dlr@finemaltcoding.com" target="alexandria_uri">mailto:dlr@finemaltcoding.com</a>"&gt;Daniel Rall&lt;/a&gt;</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> *  @version $Id: StringUtils.java 685685 2008-08-13 21:43:27Z nbubna $</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> */</em>
<a name="44" href="#44">44</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/velocity/util/StringUtils.html">StringUtils</a>
<a name="45" href="#45">45</a>  {
<a name="46" href="#46">46</a>      <em class="jxr_javadoccomment">/**</em>
<a name="47" href="#47">47</a>  <em class="jxr_javadoccomment">     * Line separator for the OS we are operating on.</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment">     */</em>
<a name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String EOL = System.getProperty(<span class="jxr_string">"line.separator"</span>);
<a name="50" href="#50">50</a>  
<a name="51" href="#51">51</a>      <em class="jxr_javadoccomment">/**</em>
<a name="52" href="#52">52</a>  <em class="jxr_javadoccomment">     * Concatenates a list of objects as a String.</em>
<a name="53" href="#53">53</a>  <em class="jxr_javadoccomment">     *</em>
<a name="54" href="#54">54</a>  <em class="jxr_javadoccomment">     * @param list The list of objects to concatenate.</em>
<a name="55" href="#55">55</a>  <em class="jxr_javadoccomment">     * @return     A text representation of the concatenated objects.</em>
<a name="56" href="#56">56</a>  <em class="jxr_javadoccomment">     */</em>
<a name="57" href="#57">57</a>      <strong class="jxr_keyword">public</strong> String concat(List list)
<a name="58" href="#58">58</a>      {
<a name="59" href="#59">59</a>          StringBuffer sb = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="60" href="#60">60</a>          <strong class="jxr_keyword">int</strong> size = list.size();
<a name="61" href="#61">61</a>  
<a name="62" href="#62">62</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; size; i++)
<a name="63" href="#63">63</a>          {
<a name="64" href="#64">64</a>              sb.append(list.get(i).toString());
<a name="65" href="#65">65</a>          }
<a name="66" href="#66">66</a>          <strong class="jxr_keyword">return</strong> sb.toString();
<a name="67" href="#67">67</a>      }
<a name="68" href="#68">68</a>  
<a name="69" href="#69">69</a>      <em class="jxr_javadoccomment">/**</em>
<a name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     * Return a package name as a relative path name</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     *</em>
<a name="72" href="#72">72</a>  <em class="jxr_javadoccomment">     * @param pckge package name to convert to a directory.</em>
<a name="73" href="#73">73</a>  <em class="jxr_javadoccomment">     * @return String directory path.</em>
<a name="74" href="#74">74</a>  <em class="jxr_javadoccomment">     */</em>
<a name="75" href="#75">75</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> String getPackageAsPath(String pckge)
<a name="76" href="#76">76</a>      {
<a name="77" href="#77">77</a>          <strong class="jxr_keyword">return</strong> pckge.replace( '.', File.separator.charAt(0) ) + File.separator;
<a name="78" href="#78">78</a>      }
<a name="79" href="#79">79</a>  
<a name="80" href="#80">80</a>      <em class="jxr_javadoccomment">/**</em>
<a name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="82" href="#82">82</a>  <em class="jxr_javadoccomment">     * Remove underscores from a string and replaces first</em>
<a name="83" href="#83">83</a>  <em class="jxr_javadoccomment">     * letters with capitals.  Other letters are changed to lower case.</em>
<a name="84" href="#84">84</a>  <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="85" href="#85">85</a>  <em class="jxr_javadoccomment">     *</em>
<a name="86" href="#86">86</a>  <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="87" href="#87">87</a>  <em class="jxr_javadoccomment">     * For example &lt;code&gt;foo_bar&lt;/code&gt; becomes &lt;code&gt;FooBar&lt;/code&gt;</em>
<a name="88" href="#88">88</a>  <em class="jxr_javadoccomment">     * but &lt;code&gt;foo_barBar&lt;/code&gt; becomes &lt;code&gt;FooBarbar&lt;/code&gt;.</em>
<a name="89" href="#89">89</a>  <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="90" href="#90">90</a>  <em class="jxr_javadoccomment">     *</em>
<a name="91" href="#91">91</a>  <em class="jxr_javadoccomment">     * @param data string to remove underscores from.</em>
<a name="92" href="#92">92</a>  <em class="jxr_javadoccomment">     * @return String</em>
<a name="93" href="#93">93</a>  <em class="jxr_javadoccomment">     * @deprecated Use the org.apache.commons.util.StringUtils class</em>
<a name="94" href="#94">94</a>  <em class="jxr_javadoccomment">     * instead.  Using its firstLetterCaps() method in conjunction</em>
<a name="95" href="#95">95</a>  <em class="jxr_javadoccomment">     * with a StringTokenizer will achieve the same result.</em>
<a name="96" href="#96">96</a>  <em class="jxr_javadoccomment">     */</em>
<a name="97" href="#97">97</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> String removeUnderScores (String data)
<a name="98" href="#98">98</a>      {
<a name="99" href="#99">99</a>          String temp = <strong class="jxr_keyword">null</strong>;
<a name="100" href="#100">100</a>         StringBuffer out = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="101" href="#101">101</a>         temp = data;
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>         StringTokenizer st = <strong class="jxr_keyword">new</strong> StringTokenizer(temp, <span class="jxr_string">"_"</span>);
<a name="104" href="#104">104</a> 
<a name="105" href="#105">105</a>         <strong class="jxr_keyword">while</strong> (st.hasMoreTokens())
<a name="106" href="#106">106</a>         {
<a name="107" href="#107">107</a>             String element = (String) st.nextElement();
<a name="108" href="#108">108</a>             out.append ( firstLetterCaps(element));
<a name="109" href="#109">109</a>         }
<a name="110" href="#110">110</a> 
<a name="111" href="#111">111</a>         <strong class="jxr_keyword">return</strong> out.toString();
<a name="112" href="#112">112</a>     }
<a name="113" href="#113">113</a> 
<a name="114" href="#114">114</a>     <em class="jxr_javadoccomment">/**</em>
<a name="115" href="#115">115</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="116" href="#116">116</a> <em class="jxr_javadoccomment">     *  'Camels Hump' replacement of underscores.</em>
<a name="117" href="#117">117</a> <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="118" href="#118">118</a> <em class="jxr_javadoccomment">     *</em>
<a name="119" href="#119">119</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="120" href="#120">120</a> <em class="jxr_javadoccomment">     * Remove underscores from a string but leave the capitalization of the</em>
<a name="121" href="#121">121</a> <em class="jxr_javadoccomment">     * other letters unchanged.</em>
<a name="122" href="#122">122</a> <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="123" href="#123">123</a> <em class="jxr_javadoccomment">     *</em>
<a name="124" href="#124">124</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="125" href="#125">125</a> <em class="jxr_javadoccomment">     * For example &lt;code&gt;foo_barBar&lt;/code&gt; becomes &lt;code&gt;FooBarBar&lt;/code&gt;.</em>
<a name="126" href="#126">126</a> <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="127" href="#127">127</a> <em class="jxr_javadoccomment">     *</em>
<a name="128" href="#128">128</a> <em class="jxr_javadoccomment">     * @param data string to hump</em>
<a name="129" href="#129">129</a> <em class="jxr_javadoccomment">     * @return String</em>
<a name="130" href="#130">130</a> <em class="jxr_javadoccomment">     */</em>
<a name="131" href="#131">131</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> String removeAndHump (String data)
<a name="132" href="#132">132</a>     {
<a name="133" href="#133">133</a>         <strong class="jxr_keyword">return</strong> removeAndHump(data,<span class="jxr_string">"_"</span>);
<a name="134" href="#134">134</a>     }
<a name="135" href="#135">135</a> 
<a name="136" href="#136">136</a>     <em class="jxr_javadoccomment">/**</em>
<a name="137" href="#137">137</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="138" href="#138">138</a> <em class="jxr_javadoccomment">     * 'Camels Hump' replacement.</em>
<a name="139" href="#139">139</a> <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="140" href="#140">140</a> <em class="jxr_javadoccomment">     *</em>
<a name="141" href="#141">141</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="142" href="#142">142</a> <em class="jxr_javadoccomment">     * Remove one string from another string but leave the capitalization of the</em>
<a name="143" href="#143">143</a> <em class="jxr_javadoccomment">     * other letters unchanged.</em>
<a name="144" href="#144">144</a> <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="145" href="#145">145</a> <em class="jxr_javadoccomment">     *</em>
<a name="146" href="#146">146</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="147" href="#147">147</a> <em class="jxr_javadoccomment">     * For example, removing "_" from &lt;code&gt;foo_barBar&lt;/code&gt; becomes &lt;code&gt;FooBarBar&lt;/code&gt;.</em>
<a name="148" href="#148">148</a> <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="149" href="#149">149</a> <em class="jxr_javadoccomment">     *</em>
<a name="150" href="#150">150</a> <em class="jxr_javadoccomment">     * @param data string to hump</em>
<a name="151" href="#151">151</a> <em class="jxr_javadoccomment">     * @param replaceThis string to be replaced</em>
<a name="152" href="#152">152</a> <em class="jxr_javadoccomment">     * @return String</em>
<a name="153" href="#153">153</a> <em class="jxr_javadoccomment">     */</em>
<a name="154" href="#154">154</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> String removeAndHump (String data,String replaceThis)
<a name="155" href="#155">155</a>     {
<a name="156" href="#156">156</a>         String temp = <strong class="jxr_keyword">null</strong>;
<a name="157" href="#157">157</a>         StringBuffer out = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="158" href="#158">158</a>         temp = data;
<a name="159" href="#159">159</a> 
<a name="160" href="#160">160</a>         StringTokenizer st = <strong class="jxr_keyword">new</strong> StringTokenizer(temp, replaceThis);
<a name="161" href="#161">161</a> 
<a name="162" href="#162">162</a>         <strong class="jxr_keyword">while</strong> (st.hasMoreTokens())
<a name="163" href="#163">163</a>         {
<a name="164" href="#164">164</a>             String element = (String) st.nextElement();
<a name="165" href="#165">165</a>             out.append ( capitalizeFirstLetter(element));
<a name="166" href="#166">166</a>         }<em class="jxr_comment">//while</em>
<a name="167" href="#167">167</a> 
<a name="168" href="#168">168</a>         <strong class="jxr_keyword">return</strong> out.toString();
<a name="169" href="#169">169</a>     }
<a name="170" href="#170">170</a> 
<a name="171" href="#171">171</a>     <em class="jxr_javadoccomment">/**</em>
<a name="172" href="#172">172</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="173" href="#173">173</a> <em class="jxr_javadoccomment">     *  Makes the first letter caps and the rest lowercase.</em>
<a name="174" href="#174">174</a> <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="175" href="#175">175</a> <em class="jxr_javadoccomment">     *</em>
<a name="176" href="#176">176</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="177" href="#177">177</a> <em class="jxr_javadoccomment">     *  For example &lt;code&gt;fooBar&lt;/code&gt; becomes &lt;code&gt;Foobar&lt;/code&gt;.</em>
<a name="178" href="#178">178</a> <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="179" href="#179">179</a> <em class="jxr_javadoccomment">     *</em>
<a name="180" href="#180">180</a> <em class="jxr_javadoccomment">     * @param data capitalize this</em>
<a name="181" href="#181">181</a> <em class="jxr_javadoccomment">     * @return String</em>
<a name="182" href="#182">182</a> <em class="jxr_javadoccomment">     */</em>
<a name="183" href="#183">183</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> String firstLetterCaps ( String data )
<a name="184" href="#184">184</a>     {
<a name="185" href="#185">185</a>         String firstLetter = data.substring(0,1).toUpperCase();
<a name="186" href="#186">186</a>         String restLetters = data.substring(1).toLowerCase();
<a name="187" href="#187">187</a>         <strong class="jxr_keyword">return</strong> firstLetter + restLetters;
<a name="188" href="#188">188</a>     }
<a name="189" href="#189">189</a> 
<a name="190" href="#190">190</a>     <em class="jxr_javadoccomment">/**</em>
<a name="191" href="#191">191</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="192" href="#192">192</a> <em class="jxr_javadoccomment">     * Capitalize the first letter but leave the rest as they are.</em>
<a name="193" href="#193">193</a> <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="194" href="#194">194</a> <em class="jxr_javadoccomment">     *</em>
<a name="195" href="#195">195</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="196" href="#196">196</a> <em class="jxr_javadoccomment">     *  For example &lt;code&gt;fooBar&lt;/code&gt; becomes &lt;code&gt;FooBar&lt;/code&gt;.</em>
<a name="197" href="#197">197</a> <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="198" href="#198">198</a> <em class="jxr_javadoccomment">     *</em>
<a name="199" href="#199">199</a> <em class="jxr_javadoccomment">     * @param data capitalize this</em>
<a name="200" href="#200">200</a> <em class="jxr_javadoccomment">     * @return String</em>
<a name="201" href="#201">201</a> <em class="jxr_javadoccomment">     */</em>
<a name="202" href="#202">202</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> String capitalizeFirstLetter ( String data )
<a name="203" href="#203">203</a>     {
<a name="204" href="#204">204</a>         String firstLetter = data.substring(0,1).toUpperCase();
<a name="205" href="#205">205</a>         String restLetters = data.substring(1);
<a name="206" href="#206">206</a>         <strong class="jxr_keyword">return</strong> firstLetter + restLetters;
<a name="207" href="#207">207</a>     }
<a name="208" href="#208">208</a> 
<a name="209" href="#209">209</a>     <em class="jxr_javadoccomment">/**</em>
<a name="210" href="#210">210</a> <em class="jxr_javadoccomment">     * Create a string array from a string separated by delim</em>
<a name="211" href="#211">211</a> <em class="jxr_javadoccomment">     *</em>
<a name="212" href="#212">212</a> <em class="jxr_javadoccomment">     * @param line the line to split</em>
<a name="213" href="#213">213</a> <em class="jxr_javadoccomment">     * @param delim the delimter to split by</em>
<a name="214" href="#214">214</a> <em class="jxr_javadoccomment">     * @return a string array of the split fields</em>
<a name="215" href="#215">215</a> <em class="jxr_javadoccomment">     */</em>
<a name="216" href="#216">216</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String [] split(String line, String delim)
<a name="217" href="#217">217</a>     {
<a name="218" href="#218">218</a>         List list = <strong class="jxr_keyword">new</strong> ArrayList();
<a name="219" href="#219">219</a>         StringTokenizer t = <strong class="jxr_keyword">new</strong> StringTokenizer(line, delim);
<a name="220" href="#220">220</a>         <strong class="jxr_keyword">while</strong> (t.hasMoreTokens())
<a name="221" href="#221">221</a>         {
<a name="222" href="#222">222</a>             list.add(t.nextToken());
<a name="223" href="#223">223</a>         }
<a name="224" href="#224">224</a>         <strong class="jxr_keyword">return</strong> (String []) list.toArray(<strong class="jxr_keyword">new</strong> String[list.size()]);
<a name="225" href="#225">225</a>     }
<a name="226" href="#226">226</a> 
<a name="227" href="#227">227</a>     <em class="jxr_javadoccomment">/**</em>
<a name="228" href="#228">228</a> <em class="jxr_javadoccomment">     * Chop i characters off the end of a string.</em>
<a name="229" href="#229">229</a> <em class="jxr_javadoccomment">     * This method assumes that any EOL characters in String s</em>
<a name="230" href="#230">230</a> <em class="jxr_javadoccomment">     * and the platform EOL will be the same.</em>
<a name="231" href="#231">231</a> <em class="jxr_javadoccomment">     * A 2 character EOL will count as 1 character.</em>
<a name="232" href="#232">232</a> <em class="jxr_javadoccomment">     *</em>
<a name="233" href="#233">233</a> <em class="jxr_javadoccomment">     * @param s String to chop.</em>
<a name="234" href="#234">234</a> <em class="jxr_javadoccomment">     * @param i Number of characters to chop.</em>
<a name="235" href="#235">235</a> <em class="jxr_javadoccomment">     * @return String with processed answer.</em>
<a name="236" href="#236">236</a> <em class="jxr_javadoccomment">     */</em>
<a name="237" href="#237">237</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String chop(String s, <strong class="jxr_keyword">int</strong> i)
<a name="238" href="#238">238</a>     {
<a name="239" href="#239">239</a>         <strong class="jxr_keyword">return</strong> chop(s, i, EOL);
<a name="240" href="#240">240</a>     }
<a name="241" href="#241">241</a> 
<a name="242" href="#242">242</a>     <em class="jxr_javadoccomment">/**</em>
<a name="243" href="#243">243</a> <em class="jxr_javadoccomment">     * Chop i characters off the end of a string.</em>
<a name="244" href="#244">244</a> <em class="jxr_javadoccomment">     * A 2 character EOL will count as 1 character.</em>
<a name="245" href="#245">245</a> <em class="jxr_javadoccomment">     *</em>
<a name="246" href="#246">246</a> <em class="jxr_javadoccomment">     * @param s String to chop.</em>
<a name="247" href="#247">247</a> <em class="jxr_javadoccomment">     * @param i Number of characters to chop.</em>
<a name="248" href="#248">248</a> <em class="jxr_javadoccomment">     * @param eol A String representing the EOL (end of line).</em>
<a name="249" href="#249">249</a> <em class="jxr_javadoccomment">     * @return String with processed answer.</em>
<a name="250" href="#250">250</a> <em class="jxr_javadoccomment">     */</em>
<a name="251" href="#251">251</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String chop(String s, <strong class="jxr_keyword">int</strong> i, String eol)
<a name="252" href="#252">252</a>     {
<a name="253" href="#253">253</a>         <strong class="jxr_keyword">if</strong> ( i == 0 || s == <strong class="jxr_keyword">null</strong> || eol == <strong class="jxr_keyword">null</strong> )
<a name="254" href="#254">254</a>         {
<a name="255" href="#255">255</a>            <strong class="jxr_keyword">return</strong> s;
<a name="256" href="#256">256</a>         }
<a name="257" href="#257">257</a> 
<a name="258" href="#258">258</a>         <strong class="jxr_keyword">int</strong> length = s.length();
<a name="259" href="#259">259</a> 
<a name="260" href="#260">260</a>         <em class="jxr_comment">/*</em>
<a name="261" href="#261">261</a> <em class="jxr_comment">         * if it is a 2 char EOL and the string ends with</em>
<a name="262" href="#262">262</a> <em class="jxr_comment">         * it, nip it off.  The EOL in this case is treated like 1 character</em>
<a name="263" href="#263">263</a> <em class="jxr_comment">         */</em>
<a name="264" href="#264">264</a>         <strong class="jxr_keyword">if</strong> ( eol.length() == 2 &amp;&amp; s.endsWith(eol ))
<a name="265" href="#265">265</a>         {
<a name="266" href="#266">266</a>             length -= 2;
<a name="267" href="#267">267</a>             i -= 1;
<a name="268" href="#268">268</a>         }
<a name="269" href="#269">269</a> 
<a name="270" href="#270">270</a>         <strong class="jxr_keyword">if</strong> ( i &gt; 0)
<a name="271" href="#271">271</a>         {
<a name="272" href="#272">272</a>             length -= i;
<a name="273" href="#273">273</a>         }
<a name="274" href="#274">274</a> 
<a name="275" href="#275">275</a>         <strong class="jxr_keyword">if</strong> ( length &lt; 0)
<a name="276" href="#276">276</a>         {
<a name="277" href="#277">277</a>             length = 0;
<a name="278" href="#278">278</a>         }
<a name="279" href="#279">279</a> 
<a name="280" href="#280">280</a>         <strong class="jxr_keyword">return</strong> s.substring( 0, length);
<a name="281" href="#281">281</a>     }
<a name="282" href="#282">282</a> 
<a name="283" href="#283">283</a>     <em class="jxr_javadoccomment">/**</em>
<a name="284" href="#284">284</a> <em class="jxr_javadoccomment">     * @param argStr</em>
<a name="285" href="#285">285</a> <em class="jxr_javadoccomment">     * @param vars</em>
<a name="286" href="#286">286</a> <em class="jxr_javadoccomment">     * @return Substituted String.</em>
<a name="287" href="#287">287</a> <em class="jxr_javadoccomment">     */</em>
<a name="288" href="#288">288</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> StringBuffer stringSubstitution( String argStr,
<a name="289" href="#289">289</a>                                                    Hashtable vars )
<a name="290" href="#290">290</a>     {
<a name="291" href="#291">291</a>         <strong class="jxr_keyword">return</strong> stringSubstitution( argStr, (Map) vars );
<a name="292" href="#292">292</a>     }
<a name="293" href="#293">293</a> 
<a name="294" href="#294">294</a>     <em class="jxr_javadoccomment">/**</em>
<a name="295" href="#295">295</a> <em class="jxr_javadoccomment">     * Perform a series of substitutions. The substitions</em>
<a name="296" href="#296">296</a> <em class="jxr_javadoccomment">     * are performed by replacing $variable in the target</em>
<a name="297" href="#297">297</a> <em class="jxr_javadoccomment">     * string with the value of provided by the key "variable"</em>
<a name="298" href="#298">298</a> <em class="jxr_javadoccomment">     * in the provided hashtable.</em>
<a name="299" href="#299">299</a> <em class="jxr_javadoccomment">     *</em>
<a name="300" href="#300">300</a> <em class="jxr_javadoccomment">     * @param argStr target string</em>
<a name="301" href="#301">301</a> <em class="jxr_javadoccomment">     * @param vars name/value pairs used for substitution</em>
<a name="302" href="#302">302</a> <em class="jxr_javadoccomment">     * @return String target string with replacements.</em>
<a name="303" href="#303">303</a> <em class="jxr_javadoccomment">     */</em>
<a name="304" href="#304">304</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> StringBuffer stringSubstitution(String argStr,
<a name="305" href="#305">305</a>             Map vars)
<a name="306" href="#306">306</a>     {
<a name="307" href="#307">307</a>         StringBuffer argBuf = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="308" href="#308">308</a> 
<a name="309" href="#309">309</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> cIdx = 0 ; cIdx &lt; argStr.length();)
<a name="310" href="#310">310</a>         {
<a name="311" href="#311">311</a>             <strong class="jxr_keyword">char</strong> ch = argStr.charAt(cIdx);
<a name="312" href="#312">312</a> 
<a name="313" href="#313">313</a>             <strong class="jxr_keyword">switch</strong> (ch)
<a name="314" href="#314">314</a>             {
<a name="315" href="#315">315</a>                 <strong class="jxr_keyword">case</strong> '$':
<a name="316" href="#316">316</a>                     StringBuffer nameBuf = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="317" href="#317">317</a>                     <strong class="jxr_keyword">for</strong> (++cIdx ; cIdx &lt; argStr.length(); ++cIdx)
<a name="318" href="#318">318</a>                     {
<a name="319" href="#319">319</a>                         ch = argStr.charAt(cIdx);
<a name="320" href="#320">320</a>                         <strong class="jxr_keyword">if</strong> (ch == '_' || Character.isLetterOrDigit(ch))
<a name="321" href="#321">321</a>                             nameBuf.append(ch);
<a name="322" href="#322">322</a>                         <strong class="jxr_keyword">else</strong>
<a name="323" href="#323">323</a>                             <strong class="jxr_keyword">break</strong>;
<a name="324" href="#324">324</a>                     }
<a name="325" href="#325">325</a> 
<a name="326" href="#326">326</a>                     <strong class="jxr_keyword">if</strong> (nameBuf.length() &gt; 0)
<a name="327" href="#327">327</a>                     {
<a name="328" href="#328">328</a>                         String value =
<a name="329" href="#329">329</a>                                 (String) vars.get(nameBuf.toString());
<a name="330" href="#330">330</a> 
<a name="331" href="#331">331</a>                         <strong class="jxr_keyword">if</strong> (value != <strong class="jxr_keyword">null</strong>)
<a name="332" href="#332">332</a>                         {
<a name="333" href="#333">333</a>                             argBuf.append(value);
<a name="334" href="#334">334</a>                         }
<a name="335" href="#335">335</a>                     }
<a name="336" href="#336">336</a>                     <strong class="jxr_keyword">break</strong>;
<a name="337" href="#337">337</a> 
<a name="338" href="#338">338</a>                 <strong class="jxr_keyword">default</strong>:
<a name="339" href="#339">339</a>                     argBuf.append(ch);
<a name="340" href="#340">340</a>                     ++cIdx;
<a name="341" href="#341">341</a>                     <strong class="jxr_keyword">break</strong>;
<a name="342" href="#342">342</a>             }
<a name="343" href="#343">343</a>         }
<a name="344" href="#344">344</a> 
<a name="345" href="#345">345</a>         <strong class="jxr_keyword">return</strong> argBuf;
<a name="346" href="#346">346</a>     }
<a name="347" href="#347">347</a> 
<a name="348" href="#348">348</a>     <em class="jxr_javadoccomment">/**</em>
<a name="349" href="#349">349</a> <em class="jxr_javadoccomment">     * Read the contents of a file and place them in</em>
<a name="350" href="#350">350</a> <em class="jxr_javadoccomment">     * a string object.</em>
<a name="351" href="#351">351</a> <em class="jxr_javadoccomment">     *</em>
<a name="352" href="#352">352</a> <em class="jxr_javadoccomment">     * @param file path to file.</em>
<a name="353" href="#353">353</a> <em class="jxr_javadoccomment">     * @return String contents of the file.</em>
<a name="354" href="#354">354</a> <em class="jxr_javadoccomment">     */</em>
<a name="355" href="#355">355</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String fileContentsToString(String file)
<a name="356" href="#356">356</a>     {
<a name="357" href="#357">357</a>         String contents = <span class="jxr_string">""</span>;
<a name="358" href="#358">358</a> 
<a name="359" href="#359">359</a>         File f = <strong class="jxr_keyword">null</strong>;
<a name="360" href="#360">360</a>         <strong class="jxr_keyword">try</strong>
<a name="361" href="#361">361</a>         {
<a name="362" href="#362">362</a>             f = <strong class="jxr_keyword">new</strong> File(file);
<a name="363" href="#363">363</a> 
<a name="364" href="#364">364</a>             <strong class="jxr_keyword">if</strong> (f.exists())
<a name="365" href="#365">365</a>             {
<a name="366" href="#366">366</a>                 FileReader fr = <strong class="jxr_keyword">null</strong>;
<a name="367" href="#367">367</a>                 <strong class="jxr_keyword">try</strong>
<a name="368" href="#368">368</a>                 {
<a name="369" href="#369">369</a>                     fr = <strong class="jxr_keyword">new</strong> FileReader(f);
<a name="370" href="#370">370</a>                     <strong class="jxr_keyword">char</strong>[] template = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">char</strong>[(<strong class="jxr_keyword">int</strong>) f.length()];
<a name="371" href="#371">371</a>                     fr.read(template);
<a name="372" href="#372">372</a>                     contents = <strong class="jxr_keyword">new</strong> String(template);
<a name="373" href="#373">373</a>                 }
<a name="374" href="#374">374</a>                 <strong class="jxr_keyword">catch</strong> (Exception e)
<a name="375" href="#375">375</a>                 {
<a name="376" href="#376">376</a>                     e.printStackTrace();
<a name="377" href="#377">377</a>                 }
<a name="378" href="#378">378</a>                 <strong class="jxr_keyword">finally</strong>
<a name="379" href="#379">379</a>                 {
<a name="380" href="#380">380</a>                     <strong class="jxr_keyword">if</strong> (fr != <strong class="jxr_keyword">null</strong>)
<a name="381" href="#381">381</a>                     {
<a name="382" href="#382">382</a>                         fr.close();
<a name="383" href="#383">383</a>                     }
<a name="384" href="#384">384</a>                 }
<a name="385" href="#385">385</a>             }
<a name="386" href="#386">386</a>         }
<a name="387" href="#387">387</a>         <strong class="jxr_keyword">catch</strong> (Exception e)
<a name="388" href="#388">388</a>         {
<a name="389" href="#389">389</a>             e.printStackTrace();
<a name="390" href="#390">390</a>         }
<a name="391" href="#391">391</a>         <strong class="jxr_keyword">return</strong> contents;
<a name="392" href="#392">392</a>     }
<a name="393" href="#393">393</a> 
<a name="394" href="#394">394</a>     <em class="jxr_javadoccomment">/**</em>
<a name="395" href="#395">395</a> <em class="jxr_javadoccomment">     * Remove/collapse multiple newline characters.</em>
<a name="396" href="#396">396</a> <em class="jxr_javadoccomment">     *</em>
<a name="397" href="#397">397</a> <em class="jxr_javadoccomment">     * @param argStr string to collapse newlines in.</em>
<a name="398" href="#398">398</a> <em class="jxr_javadoccomment">     * @return String</em>
<a name="399" href="#399">399</a> <em class="jxr_javadoccomment">     */</em>
<a name="400" href="#400">400</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String collapseNewlines(String argStr)
<a name="401" href="#401">401</a>     {
<a name="402" href="#402">402</a>         <strong class="jxr_keyword">char</strong> last = argStr.charAt(0);
<a name="403" href="#403">403</a>         StringBuffer argBuf = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="404" href="#404">404</a> 
<a name="405" href="#405">405</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> cIdx = 0 ; cIdx &lt; argStr.length(); cIdx++)
<a name="406" href="#406">406</a>         {
<a name="407" href="#407">407</a>             <strong class="jxr_keyword">char</strong> ch = argStr.charAt(cIdx);
<a name="408" href="#408">408</a>             <strong class="jxr_keyword">if</strong> (ch != '\n' || last != '\n')
<a name="409" href="#409">409</a>             {
<a name="410" href="#410">410</a>                 argBuf.append(ch);
<a name="411" href="#411">411</a>                 last = ch;
<a name="412" href="#412">412</a>             }
<a name="413" href="#413">413</a>         }
<a name="414" href="#414">414</a> 
<a name="415" href="#415">415</a>         <strong class="jxr_keyword">return</strong> argBuf.toString();
<a name="416" href="#416">416</a>     }
<a name="417" href="#417">417</a> 
<a name="418" href="#418">418</a>     <em class="jxr_javadoccomment">/**</em>
<a name="419" href="#419">419</a> <em class="jxr_javadoccomment">     * Remove/collapse multiple spaces.</em>
<a name="420" href="#420">420</a> <em class="jxr_javadoccomment">     *</em>
<a name="421" href="#421">421</a> <em class="jxr_javadoccomment">     * @param argStr string to remove multiple spaces from.</em>
<a name="422" href="#422">422</a> <em class="jxr_javadoccomment">     * @return String</em>
<a name="423" href="#423">423</a> <em class="jxr_javadoccomment">     */</em>
<a name="424" href="#424">424</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String collapseSpaces(String argStr)
<a name="425" href="#425">425</a>     {
<a name="426" href="#426">426</a>         <strong class="jxr_keyword">char</strong> last = argStr.charAt(0);
<a name="427" href="#427">427</a>         StringBuffer argBuf = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="428" href="#428">428</a> 
<a name="429" href="#429">429</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> cIdx = 0 ; cIdx &lt; argStr.length(); cIdx++)
<a name="430" href="#430">430</a>         {
<a name="431" href="#431">431</a>             <strong class="jxr_keyword">char</strong> ch = argStr.charAt(cIdx);
<a name="432" href="#432">432</a>             <strong class="jxr_keyword">if</strong> (ch != ' ' || last != ' ')
<a name="433" href="#433">433</a>             {
<a name="434" href="#434">434</a>                 argBuf.append(ch);
<a name="435" href="#435">435</a>                 last = ch;
<a name="436" href="#436">436</a>             }
<a name="437" href="#437">437</a>         }
<a name="438" href="#438">438</a> 
<a name="439" href="#439">439</a>         <strong class="jxr_keyword">return</strong> argBuf.toString();
<a name="440" href="#440">440</a>     }
<a name="441" href="#441">441</a> 
<a name="442" href="#442">442</a>     <em class="jxr_javadoccomment">/**</em>
<a name="443" href="#443">443</a> <em class="jxr_javadoccomment">      * Replaces all instances of oldString with newString in line.</em>
<a name="444" href="#444">444</a> <em class="jxr_javadoccomment">      * Taken from the Jive forum package.</em>
<a name="445" href="#445">445</a> <em class="jxr_javadoccomment">      *</em>
<a name="446" href="#446">446</a> <em class="jxr_javadoccomment">      * @param line original string.</em>
<a name="447" href="#447">447</a> <em class="jxr_javadoccomment">      * @param oldString string in line to replace.</em>
<a name="448" href="#448">448</a> <em class="jxr_javadoccomment">      * @param newString replace oldString with this.</em>
<a name="449" href="#449">449</a> <em class="jxr_javadoccomment">      * @return String string with replacements.</em>
<a name="450" href="#450">450</a> <em class="jxr_javadoccomment">      */</em>
<a name="451" href="#451">451</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String sub(String line, String oldString,
<a name="452" href="#452">452</a>             String newString)
<a name="453" href="#453">453</a>     {
<a name="454" href="#454">454</a>         <strong class="jxr_keyword">int</strong> i = 0;
<a name="455" href="#455">455</a>         <strong class="jxr_keyword">if</strong> ((i = line.indexOf(oldString, i)) &gt;= 0)
<a name="456" href="#456">456</a>         {
<a name="457" href="#457">457</a>             <strong class="jxr_keyword">char</strong> [] line2 = line.toCharArray();
<a name="458" href="#458">458</a>             <strong class="jxr_keyword">char</strong> [] newString2 = newString.toCharArray();
<a name="459" href="#459">459</a>             <strong class="jxr_keyword">int</strong> oLength = oldString.length();
<a name="460" href="#460">460</a>             StringBuffer buf = <strong class="jxr_keyword">new</strong> StringBuffer(line2.length);
<a name="461" href="#461">461</a>             buf.append(line2, 0, i).append(newString2);
<a name="462" href="#462">462</a>             i += oLength;
<a name="463" href="#463">463</a>             <strong class="jxr_keyword">int</strong> j = i;
<a name="464" href="#464">464</a>             <strong class="jxr_keyword">while</strong> ((i = line.indexOf(oldString, i)) &gt; 0)
<a name="465" href="#465">465</a>             {
<a name="466" href="#466">466</a>                 buf.append(line2, j, i - j).append(newString2);
<a name="467" href="#467">467</a>                 i += oLength;
<a name="468" href="#468">468</a>                 j = i;
<a name="469" href="#469">469</a>             }
<a name="470" href="#470">470</a>             buf.append(line2, j, line2.length - j);
<a name="471" href="#471">471</a>             <strong class="jxr_keyword">return</strong> buf.toString();
<a name="472" href="#472">472</a>         }
<a name="473" href="#473">473</a>         <strong class="jxr_keyword">return</strong> line;
<a name="474" href="#474">474</a>     }
<a name="475" href="#475">475</a> 
<a name="476" href="#476">476</a>     <em class="jxr_javadoccomment">/**</em>
<a name="477" href="#477">477</a> <em class="jxr_javadoccomment">     * Returns the output of printStackTrace as a String.</em>
<a name="478" href="#478">478</a> <em class="jxr_javadoccomment">     *</em>
<a name="479" href="#479">479</a> <em class="jxr_javadoccomment">     * @param e A Throwable.</em>
<a name="480" href="#480">480</a> <em class="jxr_javadoccomment">     * @return A String.</em>
<a name="481" href="#481">481</a> <em class="jxr_javadoccomment">     */</em>
<a name="482" href="#482">482</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String stackTrace(Throwable e)
<a name="483" href="#483">483</a>     {
<a name="484" href="#484">484</a>         String foo = <strong class="jxr_keyword">null</strong>;
<a name="485" href="#485">485</a>         <strong class="jxr_keyword">try</strong>
<a name="486" href="#486">486</a>         {
<a name="487" href="#487">487</a>             <em class="jxr_comment">// And show the Error Screen.</em>
<a name="488" href="#488">488</a>             ByteArrayOutputStream ostr = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
<a name="489" href="#489">489</a>             e.printStackTrace( <strong class="jxr_keyword">new</strong> PrintWriter(ostr,<strong class="jxr_keyword">true</strong>) );
<a name="490" href="#490">490</a>             foo = ostr.toString();
<a name="491" href="#491">491</a>         }
<a name="492" href="#492">492</a>         <strong class="jxr_keyword">catch</strong> (Exception f)
<a name="493" href="#493">493</a>         {
<a name="494" href="#494">494</a>             <em class="jxr_comment">// Do nothing.</em>
<a name="495" href="#495">495</a>         }
<a name="496" href="#496">496</a>         <strong class="jxr_keyword">return</strong> foo;
<a name="497" href="#497">497</a>     }
<a name="498" href="#498">498</a> 
<a name="499" href="#499">499</a>     <em class="jxr_javadoccomment">/**</em>
<a name="500" href="#500">500</a> <em class="jxr_javadoccomment">     * Return a context-relative path, beginning with a "/", that represents</em>
<a name="501" href="#501">501</a> <em class="jxr_javadoccomment">     * the canonical version of the specified path after ".." and "." elements</em>
<a name="502" href="#502">502</a> <em class="jxr_javadoccomment">     * are resolved out.  If the specified path attempts to go outside the</em>
<a name="503" href="#503">503</a> <em class="jxr_javadoccomment">     * boundaries of the current context (i.e. too many ".." path elements</em>
<a name="504" href="#504">504</a> <em class="jxr_javadoccomment">     * are present), return &lt;code&gt;null&lt;/code&gt; instead.</em>
<a name="505" href="#505">505</a> <em class="jxr_javadoccomment">     *</em>
<a name="506" href="#506">506</a> <em class="jxr_javadoccomment">     * @param path Path to be normalized</em>
<a name="507" href="#507">507</a> <em class="jxr_javadoccomment">     * @return String normalized path</em>
<a name="508" href="#508">508</a> <em class="jxr_javadoccomment">     */</em>
<a name="509" href="#509">509</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String normalizePath(String path)
<a name="510" href="#510">510</a>     {
<a name="511" href="#511">511</a>         <em class="jxr_comment">// Normalize the slashes and add leading slash if necessary</em>
<a name="512" href="#512">512</a>         String normalized = path;
<a name="513" href="#513">513</a>         <strong class="jxr_keyword">if</strong> (normalized.indexOf('&#92;&#92;') &gt;= 0)
<a name="514" href="#514">514</a>         {
<a name="515" href="#515">515</a>             normalized = normalized.replace('&#92;&#92;', '/');
<a name="516" href="#516">516</a>         }
<a name="517" href="#517">517</a> 
<a name="518" href="#518">518</a>         <strong class="jxr_keyword">if</strong> (!normalized.startsWith(<span class="jxr_string">"/"</span>))
<a name="519" href="#519">519</a>         {
<a name="520" href="#520">520</a>             normalized = <span class="jxr_string">"/"</span> + normalized;
<a name="521" href="#521">521</a>         }
<a name="522" href="#522">522</a> 
<a name="523" href="#523">523</a>         <em class="jxr_comment">// Resolve occurrences of "//" in the normalized path</em>
<a name="524" href="#524">524</a>         <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>)
<a name="525" href="#525">525</a>         {
<a name="526" href="#526">526</a>             <strong class="jxr_keyword">int</strong> index = normalized.indexOf(<span class="jxr_string">"//"</span>);
<a name="527" href="#527">527</a>             <strong class="jxr_keyword">if</strong> (index &lt; 0)
<a name="528" href="#528">528</a>                 <strong class="jxr_keyword">break</strong>;
<a name="529" href="#529">529</a>             normalized = normalized.substring(0, index) +
<a name="530" href="#530">530</a>             normalized.substring(index + 1);
<a name="531" href="#531">531</a>         }
<a name="532" href="#532">532</a> 
<a name="533" href="#533">533</a>         <em class="jxr_comment">// Resolve occurrences of "%20" in the normalized path</em>
<a name="534" href="#534">534</a>         <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>)
<a name="535" href="#535">535</a>         {
<a name="536" href="#536">536</a>             <strong class="jxr_keyword">int</strong> index = normalized.indexOf(<span class="jxr_string">"%20"</span>);
<a name="537" href="#537">537</a>             <strong class="jxr_keyword">if</strong> (index &lt; 0)
<a name="538" href="#538">538</a>                 <strong class="jxr_keyword">break</strong>;
<a name="539" href="#539">539</a>             normalized = normalized.substring(0, index) + <span class="jxr_string">" "</span> +
<a name="540" href="#540">540</a>             normalized.substring(index + 3);
<a name="541" href="#541">541</a>         }
<a name="542" href="#542">542</a> 
<a name="543" href="#543">543</a>         <em class="jxr_comment">// Resolve occurrences of "/./" in the normalized path</em>
<a name="544" href="#544">544</a>         <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>)
<a name="545" href="#545">545</a>         {
<a name="546" href="#546">546</a>             <strong class="jxr_keyword">int</strong> index = normalized.indexOf(<span class="jxr_string">"/./"</span>);
<a name="547" href="#547">547</a>             <strong class="jxr_keyword">if</strong> (index &lt; 0)
<a name="548" href="#548">548</a>                 <strong class="jxr_keyword">break</strong>;
<a name="549" href="#549">549</a>             normalized = normalized.substring(0, index) +
<a name="550" href="#550">550</a>             normalized.substring(index + 2);
<a name="551" href="#551">551</a>         }
<a name="552" href="#552">552</a> 
<a name="553" href="#553">553</a>         <em class="jxr_comment">// Resolve occurrences of "/../" in the normalized path</em>
<a name="554" href="#554">554</a>         <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>)
<a name="555" href="#555">555</a>         {
<a name="556" href="#556">556</a>             <strong class="jxr_keyword">int</strong> index = normalized.indexOf(<span class="jxr_string">"/../"</span>);
<a name="557" href="#557">557</a>             <strong class="jxr_keyword">if</strong> (index &lt; 0)
<a name="558" href="#558">558</a>                 <strong class="jxr_keyword">break</strong>;
<a name="559" href="#559">559</a>             <strong class="jxr_keyword">if</strong> (index == 0)
<a name="560" href="#560">560</a>                 <strong class="jxr_keyword">return</strong> (<strong class="jxr_keyword">null</strong>);  <em class="jxr_comment">// Trying to go outside our context</em>
<a name="561" href="#561">561</a>             <strong class="jxr_keyword">int</strong> index2 = normalized.lastIndexOf('/', index - 1);
<a name="562" href="#562">562</a>             normalized = normalized.substring(0, index2) +
<a name="563" href="#563">563</a>             normalized.substring(index + 3);
<a name="564" href="#564">564</a>         }
<a name="565" href="#565">565</a> 
<a name="566" href="#566">566</a>         <em class="jxr_comment">// Return the normalized path that we have completed</em>
<a name="567" href="#567">567</a>         <strong class="jxr_keyword">return</strong> (normalized);
<a name="568" href="#568">568</a>     }
<a name="569" href="#569">569</a> 
<a name="570" href="#570">570</a>     <em class="jxr_javadoccomment">/**</em>
<a name="571" href="#571">571</a> <em class="jxr_javadoccomment">     * If state is true then return the trueString, else</em>
<a name="572" href="#572">572</a> <em class="jxr_javadoccomment">     * return the falseString.</em>
<a name="573" href="#573">573</a> <em class="jxr_javadoccomment">     *</em>
<a name="574" href="#574">574</a> <em class="jxr_javadoccomment">     * @param state</em>
<a name="575" href="#575">575</a> <em class="jxr_javadoccomment">     * @param trueString</em>
<a name="576" href="#576">576</a> <em class="jxr_javadoccomment">     * @param falseString</em>
<a name="577" href="#577">577</a> <em class="jxr_javadoccomment">     * @return Selected result.</em>
<a name="578" href="#578">578</a> <em class="jxr_javadoccomment">     */</em>
<a name="579" href="#579">579</a>     <strong class="jxr_keyword">public</strong> String select(<strong class="jxr_keyword">boolean</strong> state, String trueString, String falseString)
<a name="580" href="#580">580</a>     {
<a name="581" href="#581">581</a>         <strong class="jxr_keyword">if</strong> (state)
<a name="582" href="#582">582</a>         {
<a name="583" href="#583">583</a>             <strong class="jxr_keyword">return</strong> trueString;
<a name="584" href="#584">584</a>         }
<a name="585" href="#585">585</a>         <strong class="jxr_keyword">else</strong>
<a name="586" href="#586">586</a>         {
<a name="587" href="#587">587</a>             <strong class="jxr_keyword">return</strong> falseString;
<a name="588" href="#588">588</a>         }
<a name="589" href="#589">589</a>     }
<a name="590" href="#590">590</a> 
<a name="591" href="#591">591</a>     <em class="jxr_javadoccomment">/**</em>
<a name="592" href="#592">592</a> <em class="jxr_javadoccomment">     * Check to see if all the string objects passed</em>
<a name="593" href="#593">593</a> <em class="jxr_javadoccomment">     * in are empty.</em>
<a name="594" href="#594">594</a> <em class="jxr_javadoccomment">     *</em>
<a name="595" href="#595">595</a> <em class="jxr_javadoccomment">     * @param list A list of {@link java.lang.String} objects.</em>
<a name="596" href="#596">596</a> <em class="jxr_javadoccomment">     * @return     Whether all strings are empty.</em>
<a name="597" href="#597">597</a> <em class="jxr_javadoccomment">     */</em>
<a name="598" href="#598">598</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> allEmpty(List list)
<a name="599" href="#599">599</a>     {
<a name="600" href="#600">600</a>         <strong class="jxr_keyword">int</strong> size = list.size();
<a name="601" href="#601">601</a> 
<a name="602" href="#602">602</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; size; i++)
<a name="603" href="#603">603</a>         {
<a name="604" href="#604">604</a>             <strong class="jxr_keyword">if</strong> (list.get(i) != <strong class="jxr_keyword">null</strong> &amp;&amp; list.get(i).toString().length() &gt; 0)
<a name="605" href="#605">605</a>             {
<a name="606" href="#606">606</a>                 <strong class="jxr_keyword">return</strong> false;
<a name="607" href="#607">607</a>             }
<a name="608" href="#608">608</a>         }
<a name="609" href="#609">609</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a name="610" href="#610">610</a>     }
<a name="611" href="#611">611</a> 
<a name="612" href="#612">612</a>     <em class="jxr_javadoccomment">/**</em>
<a name="613" href="#613">613</a> <em class="jxr_javadoccomment">     * Trim all strings in a List.  Changes the strings in the existing list.</em>
<a name="614" href="#614">614</a> <em class="jxr_javadoccomment">     * @param list</em>
<a name="615" href="#615">615</a> <em class="jxr_javadoccomment">     * @return List of trimmed strings.</em>
<a name="616" href="#616">616</a> <em class="jxr_javadoccomment">     * @since 1.5</em>
<a name="617" href="#617">617</a> <em class="jxr_javadoccomment">     */</em>
<a name="618" href="#618">618</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> List trimStrings(List list)
<a name="619" href="#619">619</a>     {
<a name="620" href="#620">620</a>         <strong class="jxr_keyword">if</strong> (list == <strong class="jxr_keyword">null</strong>)
<a name="621" href="#621">621</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="622" href="#622">622</a> 
<a name="623" href="#623">623</a>         <strong class="jxr_keyword">int</strong> sz = list.size();
<a name="624" href="#624">624</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; sz; i++)
<a name="625" href="#625">625</a>             list.set(i,nullTrim((String) list.get(i)));
<a name="626" href="#626">626</a>         <strong class="jxr_keyword">return</strong> list;
<a name="627" href="#627">627</a>     }
<a name="628" href="#628">628</a> 
<a name="629" href="#629">629</a>     <em class="jxr_javadoccomment">/**</em>
<a name="630" href="#630">630</a> <em class="jxr_javadoccomment">     * Trim the string, but pass a null through.</em>
<a name="631" href="#631">631</a> <em class="jxr_javadoccomment">     * @param s</em>
<a name="632" href="#632">632</a> <em class="jxr_javadoccomment">     * @return List of trimmed Strings.</em>
<a name="633" href="#633">633</a> <em class="jxr_javadoccomment">     * @since 1.5</em>
<a name="634" href="#634">634</a> <em class="jxr_javadoccomment">     */</em>
<a name="635" href="#635">635</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String nullTrim(String s)
<a name="636" href="#636">636</a>     {
<a name="637" href="#637">637</a>         <strong class="jxr_keyword">if</strong> (s == <strong class="jxr_keyword">null</strong>)
<a name="638" href="#638">638</a>         {
<a name="639" href="#639">639</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="640" href="#640">640</a>         }
<a name="641" href="#641">641</a>         <strong class="jxr_keyword">else</strong>
<a name="642" href="#642">642</a>         {
<a name="643" href="#643">643</a>             <strong class="jxr_keyword">return</strong> s.trim();
<a name="644" href="#644">644</a>         }
<a name="645" href="#645">645</a>     }
<a name="646" href="#646">646</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

