Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/presumo/jms/selector/JmsGreater.java


1   /**
2    * This file is part of Presumo.
3    *
4    * Presumo is free software; you can redistribute it and/or modify
5    * it under the terms of the GNU General Public License as published by
6    * the Free Software Foundation; either version 2 of the License, or
7    * (at your option) any later version.
8    *
9    * Presumo is distributed in the hope that it will be useful,
10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12   * GNU General Public License for more details.
13   *
14   * You should have received a copy of the GNU General Public License
15   * along with Presumo; if not, write to the Free Software
16   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17   *
18   *
19   * Copyright 2001 Dan Greff
20   */
21  package com.presumo.jms.selector;
22  
23  import javax.jms.Message;
24  
25  /**
26   * Expression node for the SQL greater than expression.  There is no 
27   * implementation for greater than equals ">=" because the parser 
28   * represents such statements as a less than with the operands switched.
29   *
30   * @author Dan Greff
31   */
32  final class JmsGreater extends JmsBinaryOperand
33  {
34    static 
35    {
36      STRING_REP = " - ";  // Used in unparse
37    }
38  
39  
40      /////////////////////////////////////////////////////////////////////////
41     // Static Methods                                                      //
42    /////////////////////////////////////////////////////////////////////////
43  
44    static JmsGreater getInstance(JmsOperand lvalue, JmsOperand rvalue) 
45    {
46      JmsGreater retval;
47  
48      retval = (JmsGreater) getInstanceNonReflective(JmsOperand.JMS_GREATER, lvalue, rvalue);
49      if (retval == null)
50        retval = new JmsGreater(lvalue, rvalue);
51  
52      return retval;
53    }
54  
55      /////////////////////////////////////////////////////////////////////////
56     // Constructor                                                         //
57    /////////////////////////////////////////////////////////////////////////
58  
59    protected JmsGreater(JmsOperand lvalue, JmsOperand rvalue) 
60    {
61      super(lvalue, rvalue);
62    }
63  
64      /////////////////////////////////////////////////////////////////////////
65     // Package Methods                                                     //
66    /////////////////////////////////////////////////////////////////////////
67  
68    JmsOperand evaluate(Message msg) throws SelectorFalseException 
69    {
70  
71      try { 
72        JmsNumericLiteral leftSide = (JmsNumericLiteral) lvalue.evaluateOnce(msg);
73        JmsNumericLiteral rightSide = (JmsNumericLiteral) rvalue.evaluateOnce(msg);
74  
75        if (leftSide == null || rightSide == null)
76          return JmsBooleanLiteral.UNKNOWN;
77  
78        return leftSide.gt(rightSide);
79      } catch (ClassCastException e) {
80        throw SelectorFalseException.getInstance();
81      }
82  
83    }
84  
85    short getType() { return JmsOperand.JMS_GREATER; }
86    
87  }