/* * Copyright 2004-2011 H2 Group. Multiple-Licensed under the H2 License, * Version 1.0, and under the Eclipse Public License, Version 1.0 * (http://h2database.com/html/license.html). * Initial Developer: H2 Group */ package org.h2.jaqu; import org.h2.jaqu.util.ClassUtils; /** * This class represents an incomplete condition. * * @param <A> the incomplete condition data type */ public class TestCondition<A> { private A x; public TestCondition(A x) { this.x = x; } public Boolean is(A y) { Boolean o = ClassUtils.newObject(Boolean.class); return Db.registerToken(o, new Function("=", x, y) { public <T> void appendSQL(SQLStatement stat, Query<T> query) { stat.appendSQL("("); query.appendSQL(stat, x[0]); stat.appendSQL(" = "); query.appendSQL(stat, x[1]); stat.appendSQL(")"); } }); } public Boolean bigger(A y) { Boolean o = ClassUtils.newObject(Boolean.class); return Db.registerToken(o, new Function(">", x, y) { public <T> void appendSQL(SQLStatement stat, Query<T> query) { stat.appendSQL("("); query.appendSQL(stat, x[0]); stat.appendSQL(" > "); query.appendSQL(stat, x[1]); stat.appendSQL(")"); } }); } public Boolean biggerEqual(A y) { Boolean o = ClassUtils.newObject(Boolean.class); return Db.registerToken(o, new Function(">=", x, y) { public <T> void appendSQL(SQLStatement stat, Query<T> query) { stat.appendSQL("("); query.appendSQL(stat, x[0]); stat.appendSQL(" >= "); query.appendSQL(stat, x[1]); stat.appendSQL(")"); } }); } public Boolean smaller(A y) { Boolean o = ClassUtils.newObject(Boolean.class); return Db.registerToken(o, new Function("<", x, y) { public <T> void appendSQL(SQLStatement stat, Query<T> query) { stat.appendSQL("("); query.appendSQL(stat, x[0]); stat.appendSQL(" < "); query.appendSQL(stat, x[1]); stat.appendSQL(")"); } }); } public Boolean smallerEqual(A y) { Boolean o = ClassUtils.newObject(Boolean.class); return Db.registerToken(o, new Function("<=", x, y) { public <T> void appendSQL(SQLStatement stat, Query<T> query) { stat.appendSQL("("); query.appendSQL(stat, x[0]); stat.appendSQL(" <= "); query.appendSQL(stat, x[1]); stat.appendSQL(")"); } }); } public Boolean like(A pattern) { Boolean o = ClassUtils.newObject(Boolean.class); return Db.registerToken(o, new Function("LIKE", x, pattern) { public <T> void appendSQL(SQLStatement stat, Query<T> query) { stat.appendSQL("("); query.appendSQL(stat, x[0]); stat.appendSQL(" LIKE "); query.appendSQL(stat, x[1]); stat.appendSQL(")"); } }); } }