diff --git a/src/main/java/com/mysema/query/ExtQuery.java b/src/main/java/com/mysema/query/ExtQuery.java
new file mode 100644
index 000000000..2551e49b4
--- /dev/null
+++ b/src/main/java/com/mysema/query/ExtQuery.java
@@ -0,0 +1,15 @@
+package com.mysema.query;
+
+import com.mysema.query.grammar.Types.*;
+
+/**
+ * ExtQuery provides
+ *
+ * @author tiwe
+ * @version $Id$
+ */
+public interface ExtQuery> extends Query {
+// A innerJoin(EntityPathExpr>... objects);
+// A leftJoin(EntityPathExpr>... objects);
+// A with(Expr... objects);
+}
diff --git a/src/main/java/com/mysema/query/Query.java b/src/main/java/com/mysema/query/Query.java
index da9842a7d..12e37ccb7 100644
--- a/src/main/java/com/mysema/query/Query.java
+++ b/src/main/java/com/mysema/query/Query.java
@@ -1,9 +1,6 @@
package com.mysema.query;
-import com.mysema.query.grammar.GrammarTypes.BooleanExpr;
-import com.mysema.query.grammar.GrammarTypes.DomainType;
-import com.mysema.query.grammar.GrammarTypes.Expr;
-import com.mysema.query.grammar.GrammarTypes.OrderSpecifier;
+import com.mysema.query.grammar.Types.*;
/**
* Query provides
@@ -12,12 +9,14 @@ import com.mysema.query.grammar.GrammarTypes.OrderSpecifier;
* @version $Id$
*/
public interface Query>{
- A select(Expr... objects);
- A from(DomainType>... objects);
- A innerJoin(DomainType>... objects);
- A leftJoin(DomainType>... objects);
- A with(BooleanExpr... objects);
- A where(BooleanExpr... objects);
- A groupBy(Expr... objects);
- A orderBy(OrderSpecifier... objects);
+ A select(Expr>... objects);
+ A from(EntityPathExpr>... objects);
+ A where(Expr... objects);
+ A groupBy(Expr>... objects);
+ A orderBy(OrderSpecifier>... objects);
+
+ // TODO : move back to ExtQuery when querydsl has stabilized
+ A innerJoin(EntityPathExpr>... objects);
+ A leftJoin(EntityPathExpr>... objects);
+ A with(Expr... objects);
}
\ No newline at end of file
diff --git a/src/main/java/com/mysema/query/grammar/Grammar.java b/src/main/java/com/mysema/query/grammar/Grammar.java
index 6139b624e..75bc9c731 100644
--- a/src/main/java/com/mysema/query/grammar/Grammar.java
+++ b/src/main/java/com/mysema/query/grammar/Grammar.java
@@ -1,13 +1,7 @@
package com.mysema.query.grammar;
-import com.mysema.query.grammar.GrammarTypes.BooleanExpr;
-import com.mysema.query.grammar.GrammarTypes.Op;
-import com.mysema.query.grammar.GrammarTypes.Expr;
-import com.mysema.query.grammar.GrammarTypes.Order;
-import com.mysema.query.grammar.GrammarTypes.OrderSpecifier;
-
-import static com.mysema.query.grammar.InternalGrammar.*;
+import com.mysema.query.grammar.Types.*;
/**
* Grammar provides
@@ -18,60 +12,99 @@ import static com.mysema.query.grammar.InternalGrammar.*;
public class Grammar {
// order
- public static OrderSpecifier asc(Expr target){
- OrderSpecifier os = new OrderSpecifier();
- os.order = Order.ASC;
- os.target = target;
- return os;
- }
- public static OrderSpecifier desc(Expr target){
- OrderSpecifier os = new OrderSpecifier();
- os.order = Order.DESC;
- os.target = target;
- return os;
+ public static OrderSpecifier asc(Expr target){
+ return _asc(target);
+ }
+ public static OrderSpecifier desc(Expr target){
+ return _desc(target);
}
// boolean
- public static BooleanExpr and(BooleanExpr left, BooleanExpr right){
- return bbe(Op.AND, left, right);
+ public static Expr and(Expr left, Expr right){
+ return _bbe(BoOp.AND, left, right);
}
- public static BooleanExpr not(BooleanExpr left){
- return bue(Op.NE, left);
+ public static Expr not(Expr left){
+ return _bue(BoOp.NE, left);
}
- public static BooleanExpr or(BooleanExpr left, BooleanExpr right){
- return bbe(Op.OR, left, right);
+ public static Expr or(Expr left, Expr right){
+ return _bbe(BoOp.OR, left, right);
}
// number compariosn
- public static BooleanExpr eq(Object left, Object right){
- return bbe(Op.EQ, left, right);
+ public static Expr eq(Object left, Object right){
+ return _bbe(BoOp.EQ, left, right);
}
- public static BooleanExpr goe(Object left, Object right){
- return bbe(Op.GOE, left, right);
+ public static Expr goe(Object left, Object right){
+ return _bbe(BoOp.GOE, left, right);
}
- public static BooleanExpr gt(Object left, Object right){
- return bbe(Op.GT, left, right);
+ public static Expr gt(Object left, Object right){
+ return _bbe(BoOp.GT, left, right);
}
- public static BooleanExpr loe(Object left, Object right){
- return bbe(Op.LOE, left, right);
+ public static Expr loe(Object left, Object right){
+ return _bbe(BoOp.LOE, left, right);
}
- public static BooleanExpr lt(Object left, Object right){
- return bbe(Op.LT, left, right);
+ public static Expr lt(Object left, Object right){
+ return _bbe(BoOp.LT, left, right);
}
- public static BooleanExpr ne(Object left, Object right){
- return bbe(Op.NE, left, right);
+ public static Expr ne(Object left, Object right){
+ return _bbe(BoOp.NE, left, right);
}
// string comparison
- public static BooleanExpr like(Object left, String right){
- return bbe(Op.LIKE, left, right);
+ public static Expr like(Expr left, String right){
+ return _bbe(BoOp.LIKE, left, right);
+ }
+
+ public static Expr lower(Expr path){
+ return null;
}
// arithmetic operations
- // TODO
+ // TODO : +,-,*,/,mod,div
+
+ // order
+
+ static OrderSpecifier _asc(Expr target) {
+ OrderSpecifier os = new OrderSpecifier();
+ os.order = Order.ASC;
+ os.target = target;
+ return os;
+ }
+
+ static OrderSpecifier _desc(Expr target) {
+ OrderSpecifier os = new OrderSpecifier();
+ os.order = Order.DESC;
+ os.target = target;
+ return os;
+ }
+
+ // constants
+
+ static Expr _co(A obj){
+ ConstantExpr e = new ConstantExpr();
+ e.constant = obj;
+ return e;
+ }
+
+ // boolean
+
+ static BooleanBinaryExpr _bbe(BoOp type,Object left, Object right){
+ BooleanBinaryExpr bbe = new BooleanBinaryExpr();
+ bbe.type = type;
+ bbe.left = left instanceof Expr ? (Expr)left : _co(left);
+ bbe.right = right instanceof Expr ? (Expr)right : _co(left);
+ return bbe;
+ }
+ static BooleanUnaryExpr _bue(BoOp type, Expr left){
+ BooleanUnaryExpr bue = new BooleanUnaryExpr();
+ bue.type = type;
+ bue.left = left;
+ return bue;
+ }
+
}
diff --git a/src/main/java/com/mysema/query/grammar/GrammarTypes.java b/src/main/java/com/mysema/query/grammar/GrammarTypes.java
deleted file mode 100644
index 8b476c763..000000000
--- a/src/main/java/com/mysema/query/grammar/GrammarTypes.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.mysema.query.grammar;
-
-
-
-/**
- * Query provides
- *
- * @author tiwe
- * @version $Id$
- */
-public class GrammarTypes {
-
- // order
-
- public enum Order{ ASC,DESC }
-
- public static class OrderSpecifier{
- public Order order;
- public Expr target;
- }
-
- // expressions
-
- public interface Expr { }
-
- // constant
-
- public static class ConstantExpr implements Expr{
- public Object constant;
- }
-
- // boolean
-
- public interface BooleanExpr extends Expr{ }
-
- public enum Op { AND, EQ, GOE, GT,LOE, LT, NE, NOT, OR, XOR, LIKE }
-
- public static class BooleanUnaryExpr implements BooleanExpr{
- public Op type;
- public Expr left;
- }
-
- public static class BooleanBinaryExpr implements BooleanExpr{
- public Op type;
- public Expr left; public Expr right;
- }
-
- // references
-
- public static class Reference implements Expr{
- public Reference(String path) {
- this._path = path;
- }
- protected CharProperty ch(String path) {
- return new CharProperty(this._path+"."+path);
- }
- protected StringProperty str(String path) {
- return new StringProperty(this._path+"."+path);
- }
- protected NumberProperty num(String path) {
- return new NumberProperty(this._path+"."+path);
- }
-// protected CollectionProperty colProp(String path) {
-// return new CollectionProperty(this._path+"."+path);
-// }
- public final String _path;
- }
- public static class CharProperty extends Reference{
- public CharProperty(String path) {super(path);}
- }
- public static class StringProperty extends Reference{
- public StringProperty(String path) {super(path);}
- }
- public static class NumberProperty extends Reference{
- public NumberProperty(String path) {super(path);}
- }
-// public static class CollectionProperty extends Reference>{
-// public CollectionProperty(String path) {super(path);}
-// }
- public static class DomainType extends Reference{
- public DomainType(String path) {super(path);}
- public DomainType as(DomainType d){
- // TODO
- return d;
- }
- }
-
-}
diff --git a/src/main/java/com/mysema/query/grammar/InternalGrammar.java b/src/main/java/com/mysema/query/grammar/InternalGrammar.java
deleted file mode 100644
index 95d61ab15..000000000
--- a/src/main/java/com/mysema/query/grammar/InternalGrammar.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.mysema.query.grammar;
-
-import com.mysema.query.grammar.GrammarTypes.BooleanBinaryExpr;
-import com.mysema.query.grammar.GrammarTypes.BooleanExpr;
-import com.mysema.query.grammar.GrammarTypes.Op;
-import com.mysema.query.grammar.GrammarTypes.BooleanUnaryExpr;
-import com.mysema.query.grammar.GrammarTypes.ConstantExpr;
-import com.mysema.query.grammar.GrammarTypes.Expr;
-
-
-/**
- * InternalGrammar provides
- *
- * @author tiwe
- * @version $Id$
- */
-class InternalGrammar {
- static Expr co(Object str){
- ConstantExpr e = new ConstantExpr();
- e.constant = str;
- return e;
- }
- static BooleanBinaryExpr bbe(Op type,Object left, Object right){
- BooleanBinaryExpr bbe = new BooleanBinaryExpr();
- bbe.type = type;
- bbe.left = left instanceof Expr ? (Expr)left : co(left);
- bbe.right = right instanceof Expr ? (Expr)right : co(left);
- return bbe;
- }
- static BooleanUnaryExpr bue(Op type, BooleanExpr left){
- BooleanUnaryExpr bue = new BooleanUnaryExpr();
- bue.type = type;
- bue.left = left;
- return bue;
- }
-
-}
diff --git a/src/main/java/com/mysema/query/grammar/Types.java b/src/main/java/com/mysema/query/grammar/Types.java
new file mode 100644
index 000000000..b71ef4141
--- /dev/null
+++ b/src/main/java/com/mysema/query/grammar/Types.java
@@ -0,0 +1,133 @@
+package com.mysema.query.grammar;
+
+
+
+/**
+ * Query provides
+ *
+ * @author tiwe
+ * @version $Id$
+ */
+public class Types {
+
+ // order
+
+ public enum Order{ ASC,DESC }
+
+ public static class OrderSpecifier{
+ public Order order;
+ public Expr target;
+ }
+
+ // expressions
+
+ public interface Expr { }
+
+ // constant
+
+ public static class ConstantExpr implements Expr{
+ public A constant;
+ }
+
+ public interface Op {}
+
+ // operators
+
+ public enum BoOp implements Op{
+ // boolean
+ AND,
+ NOT,
+ OR,
+ XOR,
+ XNOR,
+
+ // comparison
+ EQ,
+ NE,
+ GOE,
+ GT,
+ LOE,
+ LT,
+
+ // string comparison
+ LIKE,
+ }
+
+ public enum StrOp implements Op{
+ // string manipulation
+ LOWER,
+ UPPER,
+ }
+
+ public enum NumOp implements Op{
+ // arithmetic
+ PLUS,
+ MINUS,
+ MULT,
+ DIV,
+ MOD
+ }
+
+ public static class BooleanUnaryExpr implements Expr{
+ public BoOp type;
+ public Expr left;
+ }
+
+ public static class BooleanBinaryExpr implements Expr{
+ public BoOp type;
+ public Expr left; public Expr right;
+ }
+
+ // references
+
+ public static interface EntityPathExpr extends Expr{}
+
+ public static class Reference implements Expr{
+ public Reference(String path) {
+ this._path = path;
+ }
+ protected CharProperty ch(String path) {
+ return new CharProperty(this._path+"."+path);
+ }
+ protected StringProperty str(String path) {
+ return new StringProperty(this._path+"."+path);
+ }
+ protected NumberProperty num(String path) {
+ return new NumberProperty(this._path+"."+path);
+ }
+ protected BooleanProperty bool(String path){
+ return new BooleanProperty(this._path+"."+_path);
+ }
+ public final String _path;
+ }
+
+ public static class BooleanProperty extends Reference{
+ public BooleanProperty(String path) {super(path);}
+ }
+ public static class CharProperty extends Reference{
+ public CharProperty(String path) {super(path);}
+ }
+ public static class NumberProperty extends Reference{
+ public NumberProperty(String path) {super(path);}
+ }
+ public static class StringProperty extends Reference{
+ public StringProperty(String path) {super(path);}
+ }
+ public static class DomainType extends Reference implements EntityPathExpr{
+ protected DomainType(String path) {super(path);}
+ protected DomainType(DomainType> type, String path) {
+ super(type._path+"."+path);
+ }
+ public EntityPathExpr as(DomainType to){
+ return new AsExpr(this, to);
+ }
+ }
+
+ public static class AsExpr extends Reference implements EntityPathExpr{
+ AsExpr(Reference from, Reference to) {
+ super(to._path);
+ }
+ public Reference from, to;
+ }
+
+}
diff --git a/src/test/java/com/mysema/query/test/DomainTest.java b/src/test/java/com/mysema/query/test/DomainTest.java
deleted file mode 100644
index 956edf195..000000000
--- a/src/test/java/com/mysema/query/test/DomainTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.mysema.query.test;
-
-import static com.mysema.query.grammar.Grammar.gt;
-import static com.mysema.query.grammar.Grammar.like;
-import static com.mysema.query.test.domain.Domain.cat;
-import static com.mysema.query.test.domain.Domain.child;
-import static com.mysema.query.test.domain.Domain.kitten;
-
-import org.junit.Test;
-
-
-
-/**
- * DomainTest provides
- *
- * @author tiwe
- * @version $Id$
- */
-public class DomainTest extends QueryBase{
-
- @Test
- public void testQuery1(){
-// from Cat as cat left join cat.kittens as kitten
-// with kitten.bodyWeight > 10.0
- from(cat).leftJoin(cat.kittens().as(kitten))
- .with(gt(kitten.bodyWeight,10));
- }
-
- @Test
- public void testQuery2(){
-// from Cat as cat inner join fetch cat.mate
-// left join fetch cat.kittens child left join fetch child.kittens
- from(cat).innerJoin(cat.mate())
- .leftJoin(cat.kittens().as(child)).leftJoin(child.kittens());
- }
-
- @Test
- public void testQuery3(){
-// from Cat as cat where cat.mate.name like '%s%'
- from(cat).where(like(cat.mate().name,"%s%"));
- }
-
-}
diff --git a/src/test/java/com/mysema/query/test/QueryBase.java b/src/test/java/com/mysema/query/test/QueryBase.java
index 221c6a192..13b67dc45 100644
--- a/src/test/java/com/mysema/query/test/QueryBase.java
+++ b/src/test/java/com/mysema/query/test/QueryBase.java
@@ -1,49 +1,47 @@
package com.mysema.query.test;
-import com.mysema.query.Query;
-import com.mysema.query.grammar.GrammarTypes.BooleanExpr;
-import com.mysema.query.grammar.GrammarTypes.DomainType;
-import com.mysema.query.grammar.GrammarTypes.Expr;
-import com.mysema.query.grammar.GrammarTypes.OrderSpecifier;
-
+import com.mysema.query.*;
+import com.mysema.query.grammar.Types.*;
/**
* QueryBase provides
*
* @author tiwe
* @version $Id$
*/
-public class QueryBase implements Query {
+public class QueryBase implements ExtQuery {
- public QueryBase from(DomainType>... objects) {
+ public QueryBase from(EntityPathExpr>... objects) {
+ return this;
+ }
+
+ public QueryBase groupBy(Expr>... objects) {
return this;
}
- public QueryBase groupBy(Expr... objects) {
+ public QueryBase orderBy(OrderSpecifier>... objects) {
return this;
}
- public QueryBase orderBy(OrderSpecifier... objects) {
+ public QueryBase select(Expr>... objects) {
return this;
}
- public QueryBase select(Expr... objects) {
+ public QueryBase where(Expr... objects) {
return this;
}
- public QueryBase where(BooleanExpr... objects) {
+ public QueryBase innerJoin(EntityPathExpr>... objects) {
return this;
}
- public QueryBase leftJoin(DomainType>... objects) {
+ public QueryBase leftJoin(EntityPathExpr>... objects) {
return this;
}
- public QueryBase with(BooleanExpr... objects) {
+ public QueryBase with(Expr... objects) {
return this;
}
- public QueryBase innerJoin(DomainType>... objects) {
- return this;
- }
+
}
diff --git a/src/test/java/com/mysema/query/test/QueryTest.java b/src/test/java/com/mysema/query/test/QueryTest.java
new file mode 100644
index 000000000..dadf4b94f
--- /dev/null
+++ b/src/test/java/com/mysema/query/test/QueryTest.java
@@ -0,0 +1,66 @@
+package com.mysema.query.test;
+
+import static com.mysema.query.grammar.Grammar.*;
+import static com.mysema.query.test.domain.Domain.*;
+
+import org.junit.Test;
+
+
+
+/**
+ * DomainTest provides
+ *
+ * @author tiwe
+ * @version $Id$
+ */
+public class QueryTest extends QueryBase{
+
+ // cats
+
+ @Test
+ public void testQueryCat1(){
+// from Cat as cat left join cat.kittens as kitten
+// with kitten.bodyWeight > 10.0
+ from(cat).leftJoin(cat.kittens().as(kitten))
+ .with(gt(kitten.bodyWeight,10));
+ }
+
+ @Test
+ public void testQueryCat2(){
+// from Cat as cat inner join fetch cat.mate
+// left join fetch cat.kittens child left join fetch child.kittens
+ from(cat).innerJoin(cat.mate())
+ .leftJoin(cat.kittens().as(child)).leftJoin(child.kittens());
+ }
+
+ @Test
+ public void testQueryCat3(){
+// from Cat as cat where cat.mate.name like '%s%'
+ from(cat).where(like(cat.mate().name,"%s%"));
+ }
+
+ @Test
+ public void testDomesticCat1(){
+// select cat.name from DomesticCat cat where cat.name like 'fri%'
+ select(cat).from(cat).where(like(cat.name, "%fri%"));
+ }
+
+ // docs
+
+ @Test
+ public void testQueryDoc1(){
+// from Document doc fetch all properties where lower(doc.name) like '%cats%'
+ from(doc).where(like(lower(doc.name),"%cats%"));
+ }
+
+ // customers
+
+ @Test
+ public void testCustomers(){
+// select cust.name.firstName from Customer as cust
+ select(cust.name().firstName).from(cust);
+ }
+
+
+
+}
diff --git a/src/test/java/com/mysema/query/test/domain/Cat.java b/src/test/java/com/mysema/query/test/domain/Cat.java
new file mode 100644
index 000000000..c45d6853e
--- /dev/null
+++ b/src/test/java/com/mysema/query/test/domain/Cat.java
@@ -0,0 +1,44 @@
+package com.mysema.query.test.domain;
+
+import java.util.Collection;
+
+/**
+ * Cat provides
+ *
+ * @author tiwe
+ * @version $Id$
+ */
+public class Cat {
+// private Cat kittens, mate;
+// public final NumberProperty bodyWeight = num("bodyWeight");
+// public final StringProperty name = str("name");
+ private Collection kittens;
+ private Cat mate;
+ private int bodyWeight;
+ private String name;
+ public Collection getKittens() {
+ return kittens;
+ }
+ public void setKittens(Collection kittens) {
+ this.kittens = kittens;
+ }
+ public Cat getMate() {
+ return mate;
+ }
+ public void setMate(Cat mate) {
+ this.mate = mate;
+ }
+ public int getBodyWeight() {
+ return bodyWeight;
+ }
+ public void setBodyWeight(int bodyWeight) {
+ this.bodyWeight = bodyWeight;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/src/test/java/com/mysema/query/test/domain/Company.java b/src/test/java/com/mysema/query/test/domain/Company.java
new file mode 100644
index 000000000..1df086da6
--- /dev/null
+++ b/src/test/java/com/mysema/query/test/domain/Company.java
@@ -0,0 +1,28 @@
+package com.mysema.query.test.domain;
+
+
+/**
+ * Company provides
+ *
+ * @author tiwe
+ * @version $Id$
+ */
+public class Company {
+// public final NumberProperty id = num("id");
+// public final StringProperty name = str("name");
+ private long id;
+ private String name;
+ public long getId() {
+ return id;
+ }
+ public void setId(long id) {
+ this.id = id;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/src/test/java/com/mysema/query/test/domain/Customer.java b/src/test/java/com/mysema/query/test/domain/Customer.java
new file mode 100644
index 000000000..70a79847e
--- /dev/null
+++ b/src/test/java/com/mysema/query/test/domain/Customer.java
@@ -0,0 +1,20 @@
+package com.mysema.query.test.domain;
+
+/**
+ * Customer provides
+ *
+ * @author tiwe
+ * @version $Id$
+ */
+public class Customer {
+ private Name name;
+
+ public Name getName() {
+ return name;
+ }
+
+ public void setName(Name name) {
+ this.name = name;
+ }
+
+}
diff --git a/src/test/java/com/mysema/query/test/domain/Document.java b/src/test/java/com/mysema/query/test/domain/Document.java
new file mode 100644
index 000000000..c11c3b3a7
--- /dev/null
+++ b/src/test/java/com/mysema/query/test/domain/Document.java
@@ -0,0 +1,20 @@
+package com.mysema.query.test.domain;
+
+/**
+ * Document provides
+ *
+ * @author tiwe
+ * @version $Id$
+ */
+public class Document {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/src/test/java/com/mysema/query/test/domain/Domain.java b/src/test/java/com/mysema/query/test/domain/Domain.java
index 4c0f6974f..8a84dbd37 100644
--- a/src/test/java/com/mysema/query/test/domain/Domain.java
+++ b/src/test/java/com/mysema/query/test/domain/Domain.java
@@ -1,8 +1,8 @@
package com.mysema.query.test.domain;
-import com.mysema.query.grammar.GrammarTypes.DomainType;
-import com.mysema.query.grammar.GrammarTypes.NumberProperty;
-import com.mysema.query.grammar.GrammarTypes.StringProperty;
+import com.mysema.query.grammar.Types.DomainType;
+import com.mysema.query.grammar.Types.NumberProperty;
+import com.mysema.query.grammar.Types.StringProperty;
/**
@@ -12,55 +12,100 @@ import com.mysema.query.grammar.GrammarTypes.StringProperty;
* @version $Id$
*/
public class Domain {
- // User
- public static final User user = new User("user");
- public static final User user1 = new User("user1");
- public static final User user2 = new User("user2");
- public static final User user3 = new User("user3");
- public static final User user4 = new User("user4");
- public static final User user5 = new User("user5");
+
+ // Cat
+ public static final qCat cat = new qCat("cat");
+ public static final qCat cat1 = new qCat("cat1");
+ public static final qCat cat2 = new qCat("cat2");
+ public static final qCat cat3 = new qCat("cat3");
+ public static final qCat cat4 = new qCat("cat4");
+ public static final qCat cat5 = new qCat("cat5");
+
+ public static final qCat kitten = new qCat("kitten");
+ public static final qCat child = new qCat("child");
+ public static final qCat mate = new qCat("mate");
// Company
- public static final Company company = new Company("company");
- public static final Company company1 = new Company("company1");
- public static final Company company2 = new Company("company2");
- public static final Company company3 = new Company("company3");
- public static final Company company4 = new Company("company4");
- public static final Company company5 = new Company("company5");
+ public static final qCompany company = new qCompany("company");
+ public static final qCompany company1 = new qCompany("company1");
+ public static final qCompany company2 = new qCompany("company2");
+ public static final qCompany company3 = new qCompany("company3");
+ public static final qCompany company4 = new qCompany("company4");
+ public static final qCompany company5 = new qCompany("company5");
- // Cat
- public static final Cat cat = new Cat("cat");
- public static final Cat cat1 = new Cat("cat1");
- public static final Cat cat2 = new Cat("cat2");
- public static final Cat cat3 = new Cat("cat3");
- public static final Cat cat4 = new Cat("cat4");
- public static final Cat cat5 = new Cat("cat5");
+ // Customer
+ public static final qCustomer cust = new qCustomer("cust");
- public static final Cat kitten = new Cat("kitten");
- public static final Cat child = new Cat("child");
- public static final Cat mate = new Cat("mate");
+ // Document
+ public static final qDocument doc = new qDocument("doc");
- public static class User extends DomainType{
- User(String path) {super(path);}
+ // User
+ public static final qUser user = new qUser("user");
+ public static final qUser user1 = new qUser("user1");
+ public static final qUser user2 = new qUser("user2");
+ public static final qUser user3 = new qUser("user3");
+ public static final qUser user4 = new qUser("user4");
+ public static final qUser user5 = new qUser("user5");
+
+ // type declarations
+
+ public static class qCat extends DomainType{
+ qCat(String path) {super(path);}
+ qCat(DomainType> type, String path) {super(type,path);}
+ private qCat kittens, mate;
+ public final NumberProperty bodyWeight = num("bodyWeight");
+ public final StringProperty name = str("name");
+ public final qCat kittens(){
+ if (kittens == null) kittens = new qCat(this,"kittens");
+ return kittens;
+ }
+ public final qCat mate(){
+ if (mate == null) mate = new qCat(this,"mate");
+ return mate;
+ }
+ }
+
+ public static class qCustomer extends DomainType{
+ qCustomer(String path) {super(path);}
+ qCustomer(DomainType> type, String path) {super(type,path);}
+ private qName name;
+ public final qName name(){
+ if (name == null) name = new qName(this, "name");
+ return name;
+ }
+ }
+
+ public static class qCompany extends DomainType{
+ qCompany(String path) {super(path);}
+ qCompany(DomainType> type, String path) {super(type,path);}
+ public final NumberProperty id = num("id");
+ public final StringProperty name = str("name");
+ }
+
+ public static class qDocument extends DomainType{
+ qDocument(String path){super(path);}
+ qDocument(DomainType> type, String path) {super(type,path);}
+ public final StringProperty name = str("name");
+ }
+
+ public static class qName extends DomainType{
+ qName(String path){super(path);}
+ qName(DomainType> type, String path) {super(type,path);}
+ public final StringProperty firstName = str("firstName");
+ }
+
+ public static class qUser extends DomainType{
+ qUser(String path) {super(path);}
+ qUser(DomainType> type, String path) {super(type,path);}
+ private qCompany company;
public final NumberProperty id = num("id");
public final StringProperty userName = str("userName");
public final StringProperty firstName = str("firstName");
public final StringProperty lastName = str("lastName");
- public final Company company(){ return new Company(_path+".company");}
- }
-
- public static class Company extends DomainType{
- Company(String path) {super(path);}
- public final NumberProperty id = num("id");
- public final StringProperty name = str("name");
- }
-
- public static class Cat extends DomainType{
- Cat(String path) {super(path);}
- public final NumberProperty bodyWeight = num("bodyWeight");
- public final Cat kittens(){ return new Cat(_path+".kittens");}
- public final Cat mate(){ return new Cat(_path+".mate");}
- public final StringProperty name = str("name");
+ public final qCompany company(){
+ if (company == null) company = new qCompany(this,"company");
+ return company;
+ }
}
}
diff --git a/src/test/java/com/mysema/query/test/domain/Name.java b/src/test/java/com/mysema/query/test/domain/Name.java
new file mode 100644
index 000000000..681cd2191
--- /dev/null
+++ b/src/test/java/com/mysema/query/test/domain/Name.java
@@ -0,0 +1,28 @@
+package com.mysema.query.test.domain;
+
+/**
+ * Name provides
+ *
+ * @author tiwe
+ * @version $Id$
+ */
+public class Name {
+ private String firstName, lastName;
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+}
diff --git a/src/test/java/com/mysema/query/test/domain/User.java b/src/test/java/com/mysema/query/test/domain/User.java
new file mode 100644
index 000000000..c051953ee
--- /dev/null
+++ b/src/test/java/com/mysema/query/test/domain/User.java
@@ -0,0 +1,53 @@
+package com.mysema.query.test.domain;
+
+import com.mysema.query.grammar.Types.NumberProperty;
+import com.mysema.query.grammar.Types.StringProperty;
+import com.mysema.query.test.domain.Domain.qCompany;
+
+/**
+ * User provides
+ *
+ * @author tiwe
+ * @version $Id$
+ */
+public class User {
+// private Company company;
+// public final NumberProperty id = num("id");
+// public final StringProperty userName = str("userName");
+// public final StringProperty firstName = str("firstName");
+// public final StringProperty lastName = str("lastName");
+ private qCompany company;
+ private long id;
+ private String userName, firstName, lastName;
+ public qCompany getCompany() {
+ return company;
+ }
+ public void setCompany(qCompany company) {
+ this.company = company;
+ }
+ public long getId() {
+ return id;
+ }
+ public void setId(long id) {
+ this.id = id;
+ }
+ public String getUserName() {
+ return userName;
+ }
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+ public String getFirstName() {
+ return firstName;
+ }
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+ public String getLastName() {
+ return lastName;
+ }
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+}