|                                                                                                              1
 10
 11  package com.triactive.jdo.store;
 12
 13  import java.math.BigInteger
  ; 14
 15
 16  class CharacterLiteral extends CharacterExpression
 17  {
 18      private final String
  value; 19
 20      public CharacterLiteral(QueryStatement qs, char value)
 21      {
 22          super(qs);
 23
 24          this.value = String.valueOf(value);
 25          st.append('\'').append(value).append('\'');
 26      }
 27
 28      public CharacterLiteral(QueryStatement qs, String
  value) 29      {
 30          super(qs);
 31
 32          this.value = value;
 33
 34          DatabaseAdapter dba = qs.getStoreManager().getDatabaseAdapter();
 35          st.appendParameter((ColumnMapping)dba.getMapping(String
  .class), value); 36      }
 37
 38      public BooleanExpression eq(SQLExpression expr)
 39      {
 40          if (expr instanceof CharacterLiteral)
 41              return new BooleanLiteral(qs, value.equals(((CharacterLiteral)expr).value));
 42          else
 43              return super.eq(expr);
 44      }
 45
 46      public BooleanExpression noteq(SQLExpression expr)
 47      {
 48          if (expr instanceof CharacterLiteral)
 49              return new BooleanLiteral(qs, !value.equals(((CharacterLiteral)expr).value));
 50          else
 51              return super.noteq(expr);
 52      }
 53
 54      public BooleanExpression lt(SQLExpression expr)
 55      {
 56          if (expr instanceof CharacterLiteral)
 57              return new BooleanLiteral(qs, value.compareTo(((CharacterLiteral)expr).value) < 0);
 58          else
 59              return super.lt(expr);
 60      }
 61
 62      public BooleanExpression lteq(SQLExpression expr)
 63      {
 64          if (expr instanceof CharacterLiteral)
 65              return new BooleanLiteral(qs, value.compareTo(((CharacterLiteral)expr).value) <= 0);
 66          else
 67              return super.lteq(expr);
 68      }
 69
 70      public BooleanExpression gt(SQLExpression expr)
 71      {
 72          if (expr instanceof CharacterLiteral)
 73              return new BooleanLiteral(qs, value.compareTo(((CharacterLiteral)expr).value) > 0);
 74          else
 75              return super.gt(expr);
 76      }
 77
 78      public BooleanExpression gteq(SQLExpression expr)
 79      {
 80          if (expr instanceof CharacterLiteral)
 81              return new BooleanLiteral(qs, value.compareTo(((CharacterLiteral)expr).value) >= 0);
 82          else
 83              return super.gteq(expr);
 84      }
 85
 86      public SQLExpression add(SQLExpression expr)
 87      {
 88          if (expr instanceof CharacterLiteral)
 89              return new CharacterLiteral(qs, value.concat(((CharacterLiteral)expr).value));
 90          else
 91              return super.add(expr);
 92      }
 93
 94      public BooleanExpression endsWithMethod(SQLExpression str)
 95      {
 96          if (str instanceof CharacterLiteral)
 97              return new BooleanLiteral(qs, value.endsWith(((CharacterLiteral)str).value));
 98          else
 99              return super.endsWithMethod(str);
 100     }
 101
 102     public NumericExpression indexOfMethod(SQLExpression str)
 103     {
 104         if (str instanceof CharacterLiteral)
 105             return new IntegerLiteral(qs, BigInteger.valueOf((long)value.indexOf(((CharacterLiteral)str).value)));
 106         else
 107             return super.indexOfMethod(str);
 108     }
 109
 110     public NumericExpression lengthMethod()
 111     {
 112         return new IntegerLiteral(qs, BigInteger.valueOf((long)value.length()));
 113     }
 114
 115     public BooleanExpression startsWithMethod(SQLExpression str)
 116     {
 117         if (str instanceof CharacterLiteral)
 118             return new BooleanLiteral(qs, value.startsWith(((CharacterLiteral)str).value));
 119         else
 120             return super.startsWithMethod(str);
 121     }
 122
 123     public BooleanExpression startsWithMethod(SQLExpression str, SQLExpression toffset)
 124     {
 125         if (str instanceof CharacterLiteral && toffset instanceof IntegerLiteral)
 126             return new BooleanLiteral(qs, value.startsWith(((CharacterLiteral)str).value,
 127                                                            ((IntegerLiteral)toffset).getValue().intValue()));
 128         else
 129             return super.startsWithMethod(str, toffset);
 130     }
 131
 132     public CharacterExpression substringMethod(NumericExpression begin)
 133     {
 134         if (begin instanceof IntegerLiteral)
 135             return new CharacterLiteral(qs, value.substring(((IntegerLiteral)begin).getValue().intValue()));
 136         else
 137             return super.substringMethod(begin);
 138     }
 139
 140     public CharacterExpression substringMethod(NumericExpression begin, NumericExpression end)
 141     {
 142         if (begin instanceof IntegerLiteral && end instanceof IntegerLiteral)
 143             return new CharacterLiteral(qs, value.substring(((IntegerLiteral)begin).getValue().intValue(),
 144                                                             ((IntegerLiteral)end  ).getValue().intValue()));
 145         else
 146             return super.substringMethod(begin, end);
 147     }
 148
 149     public CharacterExpression toLowerCase()
 150     {
 151         return new CharacterLiteral(qs, value.toLowerCase());
 152     }
 153
 154     public CharacterExpression toUpperCase()
 155     {
 156         return new CharacterLiteral(qs, value.toUpperCase());
 157     }
 158
 159     public CharacterExpression trim()
 160     {
 161         return new CharacterLiteral(qs, value.trim());
 162     }
 163 }
 164
                                                                                                                                                                                                             |                                                                       
 
 
 
 
 
                                                                                   Popular Tags                                                                                                                                                                                              |