<!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>ASTIntegerRange xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../apidocs/org/apache/velocity/runtime/parser/node/ASTIntegerRange.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.velocity.runtime.parser.node;
<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.util.ArrayList;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.context.InternalContextAdapter;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.exception.MethodInvocationException;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.parser.Parser;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.parser.ParserVisitor;
<a name="29" href="#29">29</a>  
<a name="30" href="#30">30</a>  <em class="jxr_javadoccomment">/**</em>
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> * handles the range 'operator'  [ n .. m ]</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> *</em>
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * Please look at the Parser.jjt file which is</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * what controls the generation of this class.</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> *</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:geirm@optonline.net" target="alexandria_uri">mailto:geirm@optonline.net</a>"&gt;Geir Magnusson Jr.&lt;/a&gt;</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> */</em>
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/ASTIntegerRange.html">ASTIntegerRange</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/SimpleNode.html">SimpleNode</a>
<a name="39" href="#39">39</a>  {
<a name="40" href="#40">40</a>      <em class="jxr_javadoccomment">/**</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment">     * @param id</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment">     */</em>
<a name="43" href="#43">43</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/ASTIntegerRange.html">ASTIntegerRange</a>(<strong class="jxr_keyword">int</strong> id)
<a name="44" href="#44">44</a>      {
<a name="45" href="#45">45</a>          <strong class="jxr_keyword">super</strong>(id);
<a name="46" href="#46">46</a>      }
<a name="47" href="#47">47</a>  
<a name="48" href="#48">48</a>      <em class="jxr_javadoccomment">/**</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment">     * @param p</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     * @param id</em>
<a name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     */</em>
<a name="52" href="#52">52</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/velocity/runtime/parser/node/ASTIntegerRange.html">ASTIntegerRange</a>(<a href="../../../../../../org/apache/velocity/runtime/parser/Parser.html">Parser</a> p, <strong class="jxr_keyword">int</strong> id)
<a name="53" href="#53">53</a>      {
<a name="54" href="#54">54</a>          <strong class="jxr_keyword">super</strong>(p, id);
<a name="55" href="#55">55</a>      }
<a name="56" href="#56">56</a>  
<a name="57" href="#57">57</a>      <em class="jxr_javadoccomment">/**</em>
<a name="58" href="#58">58</a>  <em class="jxr_javadoccomment">     * @see org.apache.velocity.runtime.parser.node.SimpleNode#jjtAccept(org.apache.velocity.runtime.parser.ParserVisitor, java.lang.Object)</em>
<a name="59" href="#59">59</a>  <em class="jxr_javadoccomment">     */</em>
<a name="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> Object jjtAccept(<a href="../../../../../../org/apache/velocity/runtime/parser/ParserVisitor.html">ParserVisitor</a> visitor, Object data)
<a name="61" href="#61">61</a>      {
<a name="62" href="#62">62</a>          <strong class="jxr_keyword">return</strong> visitor.visit(<strong class="jxr_keyword">this</strong>, data);
<a name="63" href="#63">63</a>      }
<a name="64" href="#64">64</a>  
<a name="65" href="#65">65</a>      <em class="jxr_javadoccomment">/**</em>
<a name="66" href="#66">66</a>  <em class="jxr_javadoccomment">     *  does the real work.  Creates an Vector of Integers with the</em>
<a name="67" href="#67">67</a>  <em class="jxr_javadoccomment">     *  right value range</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     *</em>
<a name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     *  @param context  app context used if Left or Right of .. is a ref</em>
<a name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     *  @return Object array of Integers</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     * @throws MethodInvocationException</em>
<a name="72" href="#72">72</a>  <em class="jxr_javadoccomment">     */</em>
<a name="73" href="#73">73</a>      <strong class="jxr_keyword">public</strong> Object value( InternalContextAdapter context)
<a name="74" href="#74">74</a>          <strong class="jxr_keyword">throws</strong> <a href="../../../../../../org/apache/velocity/exception/MethodInvocationException.html">MethodInvocationException</a>
<a name="75" href="#75">75</a>      {
<a name="76" href="#76">76</a>          <em class="jxr_comment">/*</em>
<a name="77" href="#77">77</a>  <em class="jxr_comment">         *  get the two range ends</em>
<a name="78" href="#78">78</a>  <em class="jxr_comment">         */</em>
<a name="79" href="#79">79</a>  
<a name="80" href="#80">80</a>          Object left = jjtGetChild(0).value( context );
<a name="81" href="#81">81</a>          Object right = jjtGetChild(1).value( context );
<a name="82" href="#82">82</a>  
<a name="83" href="#83">83</a>          <em class="jxr_comment">/*</em>
<a name="84" href="#84">84</a>  <em class="jxr_comment">         *  if either is null, lets log and bail</em>
<a name="85" href="#85">85</a>  <em class="jxr_comment">         */</em>
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>          <strong class="jxr_keyword">if</strong> (left == <strong class="jxr_keyword">null</strong> || right == <strong class="jxr_keyword">null</strong>)
<a name="88" href="#88">88</a>          {
<a name="89" href="#89">89</a>              log.error((left == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"Left"</span> : <span class="jxr_string">"Right"</span>)
<a name="90" href="#90">90</a>                             + <span class="jxr_string">" side of range operator [n..m] has null value."</span>
<a name="91" href="#91">91</a>                             + <span class="jxr_string">" Operation not possible. "</span>
<a name="92" href="#92">92</a>                             +  context.getCurrentTemplateName() + <span class="jxr_string">" [line "</span> + getLine()
<a name="93" href="#93">93</a>                             + <span class="jxr_string">", column "</span> + getColumn() + <span class="jxr_string">"]"</span>);
<a name="94" href="#94">94</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="95" href="#95">95</a>          }
<a name="96" href="#96">96</a>  
<a name="97" href="#97">97</a>          <em class="jxr_comment">/*</em>
<a name="98" href="#98">98</a>  <em class="jxr_comment">         *  if not an Integer, not much we can do either</em>
<a name="99" href="#99">99</a>  <em class="jxr_comment">         */</em>
<a name="100" href="#100">100</a> 
<a name="101" href="#101">101</a>         <strong class="jxr_keyword">if</strong> ( !( left instanceof Integer )  || !( right instanceof Integer ))
<a name="102" href="#102">102</a>         {
<a name="103" href="#103">103</a>             log.error((!(left instanceof Integer) ? <span class="jxr_string">"Left"</span> : <span class="jxr_string">"Right"</span>)
<a name="104" href="#104">104</a>                            + <span class="jxr_string">" side of range operator is not a valid type. "</span>
<a name="105" href="#105">105</a>                            + <span class="jxr_string">"Currently only integers (1,2,3...) and Integer type is supported. "</span>
<a name="106" href="#106">106</a>                            + context.getCurrentTemplateName() + <span class="jxr_string">" [line "</span> + getLine()
<a name="107" href="#107">107</a>                            + <span class="jxr_string">", column "</span> + getColumn() + <span class="jxr_string">"]"</span>);
<a name="108" href="#108">108</a> 
<a name="109" href="#109">109</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="110" href="#110">110</a>         }
<a name="111" href="#111">111</a> 
<a name="112" href="#112">112</a> 
<a name="113" href="#113">113</a>         <em class="jxr_comment">/*</em>
<a name="114" href="#114">114</a> <em class="jxr_comment">         *  get the two integer values of the ends of the range</em>
<a name="115" href="#115">115</a> <em class="jxr_comment">         */</em>
<a name="116" href="#116">116</a> 
<a name="117" href="#117">117</a>         <strong class="jxr_keyword">int</strong> l = ( (Integer) left ).intValue() ;
<a name="118" href="#118">118</a>         <strong class="jxr_keyword">int</strong> r = (  (Integer) right ).intValue();
<a name="119" href="#119">119</a> 
<a name="120" href="#120">120</a>         <em class="jxr_comment">/*</em>
<a name="121" href="#121">121</a> <em class="jxr_comment">         *  find out how many there are</em>
<a name="122" href="#122">122</a> <em class="jxr_comment">         */</em>
<a name="123" href="#123">123</a> 
<a name="124" href="#124">124</a>         <strong class="jxr_keyword">int</strong> nbrElements = Math.abs( l - r );
<a name="125" href="#125">125</a>         nbrElements += 1;
<a name="126" href="#126">126</a> 
<a name="127" href="#127">127</a>         <em class="jxr_comment">/*</em>
<a name="128" href="#128">128</a> <em class="jxr_comment">         *  Determine whether the increment is positive or negative.</em>
<a name="129" href="#129">129</a> <em class="jxr_comment">         */</em>
<a name="130" href="#130">130</a> 
<a name="131" href="#131">131</a>         <strong class="jxr_keyword">int</strong> delta = ( l &gt;= r ) ? -1 : 1;
<a name="132" href="#132">132</a> 
<a name="133" href="#133">133</a>         <em class="jxr_comment">/*</em>
<a name="134" href="#134">134</a> <em class="jxr_comment">         * Fill the range with the appropriate values.</em>
<a name="135" href="#135">135</a> <em class="jxr_comment">         */</em>
<a name="136" href="#136">136</a> 
<a name="137" href="#137">137</a>         List elements = <strong class="jxr_keyword">new</strong> ArrayList(nbrElements);
<a name="138" href="#138">138</a>         <strong class="jxr_keyword">int</strong> value = l;
<a name="139" href="#139">139</a> 
<a name="140" href="#140">140</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; nbrElements; i++)
<a name="141" href="#141">141</a>         {
<a name="142" href="#142">142</a>             <em class="jxr_comment">// TODO: JDK 1.4+ -&gt; valueOf()</em>
<a name="143" href="#143">143</a>             elements.add(<strong class="jxr_keyword">new</strong> Integer(value));
<a name="144" href="#144">144</a>             value += delta;
<a name="145" href="#145">145</a>         }
<a name="146" href="#146">146</a> 
<a name="147" href="#147">147</a>         <strong class="jxr_keyword">return</strong> elements;
<a name="148" href="#148">148</a>     }
<a name="149" href="#149">149</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

