/*
* Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Nuxeo - initial API and implementation
*
* $Id$
*/
package org.eclipse.ecr.core.query.sql.model;
import org.eclipse.ecr.core.query.sql.parser.sym;
/**
* @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a>
*
*/
public abstract class Operator implements ASTNode {
private static final long serialVersionUID = -7547286202724191250L;
public final int id;
protected Operator(int id) {
this.id = id;
}
@Override
public void accept(IVisitor visitor) {
visitor.visitOperator(this);
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj instanceof Operator) {
return id == ((Operator) obj).id;
}
return false;
}
@Override
public int hashCode() {
return Integer.valueOf(id).hashCode();
}
public static final Operator SUM = new Operator(sym.SUM) {
private static final long serialVersionUID = 8756154412317236768L;
@Override
public String toString() {
return "+";
}
};
public static final Operator SUB = new Operator(sym.SUB) {
private static final long serialVersionUID = -4503017673965713373L;
@Override
public String toString() {
return "-";
}
};
public static final Operator MUL = new Operator(sym.MUL) {
private static final long serialVersionUID = 5380905007476395593L;
@Override
public String toString() {
return "*";
}
};
public static final Operator DIV = new Operator(sym.SUB) {
private static final long serialVersionUID = -4386102635337691794L;
@Override
public String toString() {
return "/";
}
};
public static final Operator LT = new Operator(sym.LT) {
private static final long serialVersionUID = -2033782302546604350L;
@Override
public String toString() {
return "<";
}
};
public static final Operator GT = new Operator(sym.GT) {
private static final long serialVersionUID = -2450518400281430950L;
@Override
public String toString() {
return ">";
}
};
public static final Operator EQ = new Operator(sym.EQ) {
private static final long serialVersionUID = -1972357682689344169L;
@Override
public String toString() {
return "=";
}
};
public static final Operator NOTEQ = new Operator(sym.NOTEQ) {
private static final long serialVersionUID = -8652273867850494833L;
@Override
public String toString() {
return "<>";
}
};
public static final Operator LTEQ = new Operator(sym.LTEQ) {
private static final long serialVersionUID = 4069135918287483949L;
@Override
public String toString() {
return "<=";
}
};
public static final Operator GTEQ = new Operator(sym.GTEQ) {
private static final long serialVersionUID = 1626223797539530067L;
@Override
public String toString() {
return ">=";
}
};
public static final Operator AND = new Operator(sym.AND) {
private static final long serialVersionUID = -6609748385590865515L;
@Override
public String toString() {
return "AND";
}
};
public static final Operator NOT = new Operator(sym.NOT) {
private static final long serialVersionUID = -5748677478788963504L;
@Override
public String toString() {
return "NOT";
}
};
public static final Operator OR = new Operator(sym.OR) {
private static final long serialVersionUID = -2712197732723369571L;
@Override
public String toString() {
return "OR";
}
};
public static final Operator LIKE = new Operator(sym.LIKE) {
private static final long serialVersionUID = 8858605454924964544L;
@Override
public String toString() {
return "LIKE";
}
};
public static final Operator ILIKE = new Operator(sym.ILIKE) {
private static final long serialVersionUID = 1L;
@Override
public String toString() {
return "ILIKE";
}
};
public static final Operator IN = new Operator(sym.IN) {
private static final long serialVersionUID = 3202420273042048804L;
@Override
public String toString() {
return "IN";
}
};
public static final Operator BETWEEN = new Operator(sym.BETWEEN) {
private static final long serialVersionUID = 805484346863471707L;
@Override
public String toString() {
return "BETWEEN";
}
};
public static final Operator NOTLIKE = new Operator(sym.NOTLIKE) {
private static final long serialVersionUID = -7546164324575815543L;
@Override
public String toString() {
return "NOT LIKE";
}
};
public static final Operator NOTILIKE = new Operator(sym.NOTILIKE) {
private static final long serialVersionUID = 1L;
@Override
public String toString() {
return "NOT ILIKE";
}
};
public static final Operator NOTIN = new Operator(sym.NOTIN) {
private static final long serialVersionUID = -6960118201471749419L;
@Override
public String toString() {
return "NOT IN";
}
};
public static final Operator NOTBETWEEN = new Operator(sym.NOTBETWEEN) {
private static final long serialVersionUID = -7587336224759887334L;
@Override
public String toString() {
return "NOT BETWEEN";
}
};
public static final Operator STARTSWITH = new Operator(sym.STARTSWITH) {
private static final long serialVersionUID = 2438517467243495667L;
@Override
public String toString() {
return "STARTSWITH";
}
};
public static final Operator ISNULL = new Operator(sym.ISNULL) {
private static final long serialVersionUID = 4907947855862157696L;
@Override
public String toString() {
return "IS NULL";
}
};
public static final Operator ISNOTNULL = new Operator(sym.ISNOTNULL) {
private static final long serialVersionUID = 312081088718468562L;
@Override
public String toString() {
return "IS NOT NULL";
}
};
}