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