001/* 002 * (C) Copyright 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * Nuxeo - initial API and implementation 018 * 019 * $Id$ 020 */ 021 022package org.nuxeo.ecm.core.query.sql.model; 023 024import org.nuxeo.ecm.core.query.sql.parser.sym; 025 026/** 027 * @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a> 028 */ 029public abstract class Operator implements ASTNode { 030 031 private static final long serialVersionUID = -7547286202724191250L; 032 033 public final int id; 034 035 protected Operator(int id) { 036 this.id = id; 037 } 038 039 @Override 040 public void accept(IVisitor visitor) { 041 visitor.visitOperator(this); 042 } 043 044 @Override 045 public boolean equals(Object obj) { 046 if (obj == this) { 047 return true; 048 } 049 if (obj instanceof Operator) { 050 return id == ((Operator) obj).id; 051 } 052 return false; 053 } 054 055 @Override 056 public int hashCode() { 057 return Integer.valueOf(id).hashCode(); 058 } 059 060 public static final Operator SUM = new Operator(sym.SUM) { 061 private static final long serialVersionUID = 8756154412317236768L; 062 063 @Override 064 public String toString() { 065 return "+"; 066 } 067 }; 068 069 public static final Operator SUB = new Operator(sym.SUB) { 070 private static final long serialVersionUID = -4503017673965713373L; 071 072 @Override 073 public String toString() { 074 return "-"; 075 } 076 }; 077 078 public static final Operator MUL = new Operator(sym.MUL) { 079 private static final long serialVersionUID = 5380905007476395593L; 080 081 @Override 082 public String toString() { 083 return "*"; 084 } 085 }; 086 087 public static final Operator DIV = new Operator(sym.SUB) { 088 private static final long serialVersionUID = -4386102635337691794L; 089 090 @Override 091 public String toString() { 092 return "/"; 093 } 094 }; 095 096 public static final Operator LT = new Operator(sym.LT) { 097 private static final long serialVersionUID = -2033782302546604350L; 098 099 @Override 100 public String toString() { 101 return "<"; 102 } 103 }; 104 105 public static final Operator GT = new Operator(sym.GT) { 106 private static final long serialVersionUID = -2450518400281430950L; 107 108 @Override 109 public String toString() { 110 return ">"; 111 } 112 }; 113 114 public static final Operator EQ = new Operator(sym.EQ) { 115 private static final long serialVersionUID = -1972357682689344169L; 116 117 @Override 118 public String toString() { 119 return "="; 120 } 121 }; 122 123 public static final Operator NOTEQ = new Operator(sym.NOTEQ) { 124 private static final long serialVersionUID = -8652273867850494833L; 125 126 @Override 127 public String toString() { 128 return "<>"; 129 } 130 }; 131 132 public static final Operator LTEQ = new Operator(sym.LTEQ) { 133 private static final long serialVersionUID = 4069135918287483949L; 134 135 @Override 136 public String toString() { 137 return "<="; 138 } 139 }; 140 141 public static final Operator GTEQ = new Operator(sym.GTEQ) { 142 private static final long serialVersionUID = 1626223797539530067L; 143 144 @Override 145 public String toString() { 146 return ">="; 147 } 148 }; 149 150 public static final Operator AND = new Operator(sym.AND) { 151 private static final long serialVersionUID = -6609748385590865515L; 152 153 @Override 154 public String toString() { 155 return "AND"; 156 } 157 }; 158 159 public static final Operator NOT = new Operator(sym.NOT) { 160 private static final long serialVersionUID = -5748677478788963504L; 161 162 @Override 163 public String toString() { 164 return "NOT"; 165 } 166 }; 167 168 public static final Operator OR = new Operator(sym.OR) { 169 private static final long serialVersionUID = -2712197732723369571L; 170 171 @Override 172 public String toString() { 173 return "OR"; 174 } 175 }; 176 177 public static final Operator LIKE = new Operator(sym.LIKE) { 178 private static final long serialVersionUID = 8858605454924964544L; 179 180 @Override 181 public String toString() { 182 return "LIKE"; 183 } 184 }; 185 186 public static final Operator ILIKE = new Operator(sym.ILIKE) { 187 private static final long serialVersionUID = 1L; 188 189 @Override 190 public String toString() { 191 return "ILIKE"; 192 } 193 }; 194 195 public static final Operator IN = new Operator(sym.IN) { 196 private static final long serialVersionUID = 3202420273042048804L; 197 198 @Override 199 public String toString() { 200 return "IN"; 201 } 202 }; 203 204 public static final Operator BETWEEN = new Operator(sym.BETWEEN) { 205 private static final long serialVersionUID = 805484346863471707L; 206 207 @Override 208 public String toString() { 209 return "BETWEEN"; 210 } 211 }; 212 213 public static final Operator NOTLIKE = new Operator(sym.NOTLIKE) { 214 private static final long serialVersionUID = -7546164324575815543L; 215 216 @Override 217 public String toString() { 218 return "NOT LIKE"; 219 } 220 }; 221 222 public static final Operator NOTILIKE = new Operator(sym.NOTILIKE) { 223 private static final long serialVersionUID = 1L; 224 225 @Override 226 public String toString() { 227 return "NOT ILIKE"; 228 } 229 }; 230 231 public static final Operator NOTIN = new Operator(sym.NOTIN) { 232 private static final long serialVersionUID = -6960118201471749419L; 233 234 @Override 235 public String toString() { 236 return "NOT IN"; 237 } 238 }; 239 240 public static final Operator NOTBETWEEN = new Operator(sym.NOTBETWEEN) { 241 private static final long serialVersionUID = -7587336224759887334L; 242 243 @Override 244 public String toString() { 245 return "NOT BETWEEN"; 246 } 247 }; 248 249 public static final Operator STARTSWITH = new Operator(sym.STARTSWITH) { 250 private static final long serialVersionUID = 2438517467243495667L; 251 252 @Override 253 public String toString() { 254 return "STARTSWITH"; 255 } 256 }; 257 258 public static final Operator ISNULL = new Operator(sym.ISNULL) { 259 private static final long serialVersionUID = 4907947855862157696L; 260 261 @Override 262 public String toString() { 263 return "IS NULL"; 264 } 265 }; 266 267 public static final Operator ISNOTNULL = new Operator(sym.ISNOTNULL) { 268 private static final long serialVersionUID = 312081088718468562L; 269 270 @Override 271 public String toString() { 272 return "IS NOT NULL"; 273 } 274 }; 275 276}