From 53bdab2caad16bec8425dc173780b39bbccfc375 Mon Sep 17 00:00:00 2001 From: James Moger Date: Mon, 5 Dec 2011 17:01:37 -0500 Subject: Fixed joins on primitives --- src/com/iciql/Constants.java | 4 ++-- src/com/iciql/QueryJoin.java | 37 ++++++++++++++++++++++++++++++++ src/com/iciql/QueryJoinCondition.java | 40 +++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/com/iciql/Constants.java b/src/com/iciql/Constants.java index dfc18af..0bd7663 100644 --- a/src/com/iciql/Constants.java +++ b/src/com/iciql/Constants.java @@ -25,11 +25,11 @@ public class Constants { // The build script extracts this exact line so be careful editing it // and only use A-Z a-z 0-9 .-_ in the string. - public static final String VERSION = "0.7.2"; + public static final String VERSION = "0.7.3-SNAPSHOT"; // The build script extracts this exact line so be careful editing it // and only use A-Z a-z 0-9 .-_ in the string. - public static final String VERSION_DATE = "2011-11-30"; + public static final String VERSION_DATE = "PENDING"; // The build script extracts this exact line so be careful editing it // and only use A-Z a-z 0-9 .-_ in the string. diff --git a/src/com/iciql/QueryJoin.java b/src/com/iciql/QueryJoin.java index bb614eb..dbb3d15 100644 --- a/src/com/iciql/QueryJoin.java +++ b/src/com/iciql/QueryJoin.java @@ -31,6 +31,43 @@ public class QueryJoin { this.join = join; } + public QueryJoinCondition on(boolean x) { + return addPrimitive(x); + } + + public QueryJoinCondition on(byte x) { + return addPrimitive(x); + } + + public QueryJoinCondition on(short x) { + return addPrimitive(x); + } + + public QueryJoinCondition on(int x) { + return addPrimitive(x); + } + + public QueryJoinCondition on(long x) { + return addPrimitive(x); + } + + public QueryJoinCondition on(float x) { + return addPrimitive(x); + } + + public QueryJoinCondition on(double x) { + return addPrimitive(x); + } + + private QueryJoinCondition addPrimitive(A x) { + A alias = query.getPrimitiveAliasByValue(x); + if (alias == null) { + // this will result in an unmapped field exception + return new QueryJoinCondition(query, join, x); + } + return new QueryJoinCondition(query, join, alias); + } + public QueryJoinCondition on(A x) { return new QueryJoinCondition(query, join, x); } diff --git a/src/com/iciql/QueryJoinCondition.java b/src/com/iciql/QueryJoinCondition.java index e5620d5..b49e35b 100644 --- a/src/com/iciql/QueryJoinCondition.java +++ b/src/com/iciql/QueryJoinCondition.java @@ -17,6 +17,7 @@ package com.iciql; + /** * This class represents a query with join and an incomplete condition. * @@ -36,6 +37,45 @@ public class QueryJoinCondition { this.x = x; } + public Query is(boolean y) { + return addPrimitive(y); + } + + public Query is(byte y) { + return addPrimitive(y); + } + + public Query is(short y) { + return addPrimitive(y); + } + + public Query is(int y) { + return addPrimitive(y); + } + + public Query is(long y) { + return addPrimitive(y); + } + + public Query is(float y) { + return addPrimitive(y); + } + + public Query is(double y) { + return addPrimitive(y); + } + + @SuppressWarnings("unchecked") + private Query addPrimitive(Object o) { + A alias = query.getPrimitiveAliasByValue((A) o); + if (alias == null) { + join.addConditionToken(new Condition(x, (A) o, CompareType.EQUAL)); + } else { + join.addConditionToken(new Condition(x, alias, CompareType.EQUAL)); + } + return query; + } + public Query is(A y) { join.addConditionToken(new Condition(x, y, CompareType.EQUAL)); return query; -- cgit v1.2.3