<!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 463298 2006-10-12 16:10:32Z henning $</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">     */</em>
<a name="617" href="#617">617</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> List trimStrings(List list)
<a name="618" href="#618">618</a>     {
<a name="619" href="#619">619</a>         <strong class="jxr_keyword">if</strong> (list == <strong class="jxr_keyword">null</strong>)
<a name="620" href="#620">620</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="621" href="#621">621</a> 
<a name="622" href="#622">622</a>         <strong class="jxr_keyword">int</strong> sz = list.size();
<a name="623" href="#623">623</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; sz; i++)
<a name="624" href="#624">624</a>             list.set(i,nullTrim((String) list.get(i)));
<a name="625" href="#625">625</a>         <strong class="jxr_keyword">return</strong> list;
<a name="626" href="#626">626</a>     }
<a name="627" href="#627">627</a> 
<a name="628" href="#628">628</a>     <em class="jxr_javadoccomment">/**</em>
<a name="629" href="#629">629</a> <em class="jxr_javadoccomment">     * Trim the string, but pass a null through.</em>
<a name="630" href="#630">630</a> <em class="jxr_javadoccomment">     * @param s</em>
<a name="631" href="#631">631</a> <em class="jxr_javadoccomment">     * @return List of trimmed Strings.</em>
<a name="632" href="#632">632</a> <em class="jxr_javadoccomment">     */</em>
<a name="633" href="#633">633</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String nullTrim(String s)
<a name="634" href="#634">634</a>     {
<a name="635" href="#635">635</a>         <strong class="jxr_keyword">if</strong> (s == <strong class="jxr_keyword">null</strong>)
<a name="636" href="#636">636</a>         {
<a name="637" href="#637">637</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="638" href="#638">638</a>         }
<a name="639" href="#639">639</a>         <strong class="jxr_keyword">else</strong>
<a name="640" href="#640">640</a>         {
<a name="641" href="#641">641</a>             <strong class="jxr_keyword">return</strong> s.trim();
<a name="642" href="#642">642</a>         }
<a name="643" href="#643">643</a>     }
<a name="644" href="#644">644</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

