From 903c1a5de3691c0108fdea591d1f840ae5299e9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sat, 3 May 2014 21:41:36 +0300 Subject: [PATCH 01/18] Make test faster --- .../sql/codegen/MetaDataExporterTest.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/querydsl-sql-codegen/src/test/java/com/mysema/query/sql/codegen/MetaDataExporterTest.java b/querydsl-sql-codegen/src/test/java/com/mysema/query/sql/codegen/MetaDataExporterTest.java index 05a627323..5a40bf0f8 100644 --- a/querydsl-sql-codegen/src/test/java/com/mysema/query/sql/codegen/MetaDataExporterTest.java +++ b/querydsl-sql-codegen/src/test/java/com/mysema/query/sql/codegen/MetaDataExporterTest.java @@ -16,10 +16,7 @@ package com.mysema.query.sql.codegen; import javax.tools.JavaCompiler; import java.io.File; import java.io.IOException; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.sql.Statement; +import java.sql.*; import java.util.Arrays; import java.util.List; import java.util.Set; @@ -49,6 +46,10 @@ public class MetaDataExporterTest { private boolean schemaToPackage = false; + private DatabaseMetaData metadata; + + private JavaCompiler compiler = new SimpleCompiler(); + @BeforeClass public static void setUpClass() throws ClassNotFoundException, SQLException{ Class.forName("org.h2.Driver"); @@ -126,6 +127,7 @@ public class MetaDataExporterTest { @Before public void setUp() throws ClassNotFoundException, SQLException { statement = connection.createStatement(); + metadata = connection.getMetaData(); } @After @@ -139,7 +141,6 @@ public class MetaDataExporterTest { private String beanPackageName = null; - @Test public void NormalSettings_Repetition() throws SQLException { test("Q", "", "", "", defaultNaming, "target/1", false, false, false); @@ -190,7 +191,7 @@ public class MetaDataExporterTest { exporter.setNamingStrategy(new DefaultNamingStrategy()); exporter.setBeanSerializer(new BeanSerializer()); exporter.setBeanPackageName("test2"); - exporter.export(connection.getMetaData()); + exporter.export(metadata); assertTrue(new File("target/7/test/QDateTest.java").exists()); assertTrue(new File("target/7/test2/DateTest.java").exists()); @@ -202,7 +203,7 @@ public class MetaDataExporterTest { exporter.setSchemaPattern("PUBLIC"); exporter.setPackageName("test"); exporter.setTargetFolder(new File("target/8")); - exporter.export(connection.getMetaData()); + exporter.export(metadata); assertTrue(new File("target/8/test/QDateTest.java").exists()); } @@ -214,7 +215,7 @@ public class MetaDataExporterTest { exporter.setTableNamePattern("RESERVED,UNDERSCORE,BEANGEN1"); exporter.setPackageName("test"); exporter.setTargetFolder(new File("target/82")); - exporter.export(connection.getMetaData()); + exporter.export(metadata); assertTrue(new File("target/82/test/QBeangen1.java").exists()); assertTrue(new File("target/82/test/QReserved.java").exists()); @@ -230,7 +231,7 @@ public class MetaDataExporterTest { exporter.setNamePrefix(""); exporter.setNameSuffix("Type"); exporter.setTargetFolder(new File("target/9")); - exporter.export(connection.getMetaData()); + exporter.export(metadata); assertTrue(new File("target/9/test/DateTestType.java").exists()); } @@ -244,7 +245,7 @@ public class MetaDataExporterTest { exporter.setNameSuffix("Type"); exporter.setTargetFolder(new File("target/10")); exporter.setExportForeignKeys(false); - exporter.export(connection.getMetaData()); + exporter.export(metadata); assertTrue(new File("target/10/test/DateTestType.java").exists()); } @@ -258,7 +259,7 @@ public class MetaDataExporterTest { exporter.setBeanPrefix("Bean"); exporter.setBeanSerializer(new BeanSerializer()); exporter.setTargetFolder(new File("target/a")); - exporter.export(connection.getMetaData()); + exporter.export(metadata); assertTrue(new File("target/a/test/DateTest.java").exists()); assertTrue(new File("target/a/test/BeanDateTest.java").exists()); @@ -273,7 +274,7 @@ public class MetaDataExporterTest { exporter.setBeanSuffix("Bean"); exporter.setBeanSerializer(new BeanSerializer()); exporter.setTargetFolder(new File("target/b")); - exporter.export(connection.getMetaData()); + exporter.export(metadata); assertTrue(new File("target/b/test/DateTest.java").exists()); assertTrue(new File("target/b/test/DateTestBean.java").exists()); @@ -312,9 +313,8 @@ public class MetaDataExporterTest { if (withOrdinalPositioning) { exporter.setColumnComparatorClass(OrdinalPositionComparator.class); } - exporter.export(connection.getMetaData()); + exporter.export(metadata); - JavaCompiler compiler = new SimpleCompiler(); Set classes = exporter.getClasses(); int compilationResult = compiler.run(null, System.out, System.err, classes.toArray(new String[classes.size()])); From dd4ea4ac3ff2dfe7882d207f44ed023adff0c3f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sat, 3 May 2014 22:55:04 +0300 Subject: [PATCH 02/18] Add mysql and postgres config --- .travis.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.travis.yml b/.travis.yml index 1a6f5120a..ec1ce0306 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,17 @@ jdk: - oraclejdk7 services: - mongodb +addons: + - postgresql: "9.3" install: - sh -c 'cd querydsl-root && mvn -B -q install -Dmaven.javadoc.skip=true -DskipTests=true' +before_script: + - mysql -e "create database querydsl;" + - mysql -e "create user 'querydsl'@'localhost' identified by 'querydsl';" + - mysql -e "grant all privileges on querydsl.* to 'querydsl'@'localhost';" + - psql -c 'create database querydsl;' -U postgres + - psql -c "create user querydsl with password 'querydsl'" -U postgres + - psql -c 'grant all privileges on database querydsl to querydsl;' -U postgres + - psql -c 'create extension postgis;' -U postgres script: - sh -c 'cd querydsl-root && mvn -B test' From 1dda6c16e734a08fb935b6da636968def03b01b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sat, 3 May 2014 23:01:29 +0300 Subject: [PATCH 03/18] Fix config --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ec1ce0306..aacbc09e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ jdk: services: - mongodb addons: - - postgresql: "9.3" + postgresql: "9.3" install: - sh -c 'cd querydsl-root && mvn -B -q install -Dmaven.javadoc.skip=true -DskipTests=true' before_script: @@ -12,7 +12,7 @@ before_script: - mysql -e "create user 'querydsl'@'localhost' identified by 'querydsl';" - mysql -e "grant all privileges on querydsl.* to 'querydsl'@'localhost';" - psql -c 'create database querydsl;' -U postgres - - psql -c "create user querydsl with password 'querydsl'" -U postgres + - psql -c "create user querydsl with password 'querydsl';" -U postgres - psql -c 'grant all privileges on database querydsl to querydsl;' -U postgres - psql -c 'create extension postgis;' -U postgres script: From 46267b1826e9ac9dd90d492e4ce596f7885d22bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sat, 3 May 2014 23:12:28 +0300 Subject: [PATCH 04/18] Fix privileges --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index aacbc09e5..7a01acb4d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,9 +8,9 @@ addons: install: - sh -c 'cd querydsl-root && mvn -B -q install -Dmaven.javadoc.skip=true -DskipTests=true' before_script: - - mysql -e "create database querydsl;" - - mysql -e "create user 'querydsl'@'localhost' identified by 'querydsl';" - - mysql -e "grant all privileges on querydsl.* to 'querydsl'@'localhost';" + - mysql -e "create database querydsl;" -u root + - mysql -e "create user 'querydsl'@'localhost' identified by 'querydsl';" -u root + - mysql -e "grant all privileges on querydsl.* to 'querydsl'@'localhost';" -u root - psql -c 'create database querydsl;' -U postgres - psql -c "create user querydsl with password 'querydsl';" -U postgres - psql -c 'grant all privileges on database querydsl to querydsl;' -U postgres From 1f60ec0a3dd8af7d1e657fe9ad8e0859510bc04a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sat, 3 May 2014 23:22:27 +0300 Subject: [PATCH 05/18] Add travis profile --- .travis.yml | 2 +- querydsl-root/pom.xml | 27 ++++++++++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7a01acb4d..b6f8385cd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,4 +16,4 @@ before_script: - psql -c 'grant all privileges on database querydsl to querydsl;' -U postgres - psql -c 'create extension postgis;' -U postgres script: - - sh -c 'cd querydsl-root && mvn -B test' + - sh -c 'cd querydsl-root && mvn -B test -Pall,travis' diff --git a/querydsl-root/pom.xml b/querydsl-root/pom.xml index c8159db02..d922c1d6f 100644 --- a/querydsl-root/pom.xml +++ b/querydsl-root/pom.xml @@ -1,4 +1,4 @@ - + 4.0.0 @@ -481,7 +481,28 @@ - + + + travis + + + + org.apache.maven.plugins + maven-surefire-plugin + + com.mysema.testutil.DummyInterface + + **/*$* + **/MSSQLSuiteTest.java + **/TeradataSuiteTest.java + + + + + + + + @@ -513,4 +534,4 @@ - + From e1edf63351f3ead89be167712fefa430ac205916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sat, 3 May 2014 23:36:33 +0300 Subject: [PATCH 06/18] Add test exclusions --- querydsl-root/pom.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/querydsl-root/pom.xml b/querydsl-root/pom.xml index d922c1d6f..b674b7927 100644 --- a/querydsl-root/pom.xml +++ b/querydsl-root/pom.xml @@ -493,6 +493,9 @@ com.mysema.testutil.DummyInterface **/*$* + **/CUBRIDSuiteTest.java + **/OracleSuiteTest.java + **/OracleWithQuotingTest.java **/MSSQLSuiteTest.java **/TeradataSuiteTest.java From 6a86e722b0e6dadfc10597d29f554db7ae7e4e49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sat, 3 May 2014 23:53:24 +0300 Subject: [PATCH 07/18] Add test exclusions --- querydsl-root/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/querydsl-root/pom.xml b/querydsl-root/pom.xml index b674b7927..36872a025 100644 --- a/querydsl-root/pom.xml +++ b/querydsl-root/pom.xml @@ -494,6 +494,7 @@ **/*$* **/CUBRIDSuiteTest.java + **/ExportOracleTest.java **/OracleSuiteTest.java **/OracleWithQuotingTest.java **/MSSQLSuiteTest.java From be5306ca77d7f0341890221d8ff73ba2e752178b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 10:05:49 +0300 Subject: [PATCH 08/18] Add additional schemas --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index b6f8385cd..6d01ea911 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,11 +9,15 @@ install: - sh -c 'cd querydsl-root && mvn -B -q install -Dmaven.javadoc.skip=true -DskipTests=true' before_script: - mysql -e "create database querydsl;" -u root + - mysql -e "create database querydsl2;" -u root - mysql -e "create user 'querydsl'@'localhost' identified by 'querydsl';" -u root - mysql -e "grant all privileges on querydsl.* to 'querydsl'@'localhost';" -u root + - mysql -e "grant all privileges on querydsl2.* to 'querydsl'@'localhost';" -u root - psql -c 'create database querydsl;' -U postgres + - psql -c 'create database querydsl2;' -U postgres - psql -c "create user querydsl with password 'querydsl';" -U postgres - psql -c 'grant all privileges on database querydsl to querydsl;' -U postgres + - psql -c 'grant all privileges on database querydsl2 to querydsl;' -U postgres - psql -c 'create extension postgis;' -U postgres script: - sh -c 'cd querydsl-root && mvn -B test -Pall,travis' From 92261fdbc139c305dab131e427485c5050daca19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 10:54:33 +0300 Subject: [PATCH 09/18] Add equals and hashCode --- .../mysema/query/mongodb/domain/Dates.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Dates.java b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Dates.java index 307580db1..969a13817 100644 --- a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Dates.java +++ b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Dates.java @@ -1,11 +1,11 @@ package com.mysema.query.mongodb.domain; +import java.util.Date; + import org.bson.types.ObjectId; import org.mongodb.morphia.annotations.Entity; import org.mongodb.morphia.annotations.Id; -import java.util.Date; - @Entity public class Dates { @@ -28,4 +28,29 @@ public class Dates { public void setDate(Date date) { this.date = date; } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Dates other = (Dates) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } } From b1fe4484d2663eec5ea2e8243026565311b6a76d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 11:38:20 +0300 Subject: [PATCH 10/18] Move id, equals and hashCode to common superclass --- .../query/mongodb/domain/AbstractEntity.java | 46 +++++++++++++++++++ .../mysema/query/mongodb/domain/Dates.java | 38 +-------------- .../query/mongodb/domain/DummyEntity.java | 14 +----- .../query/mongodb/domain/GeoEntity.java | 14 +----- .../com/mysema/query/mongodb/domain/Item.java | 16 +------ .../query/mongodb/domain/MapEntity.java | 14 +----- .../com/mysema/query/mongodb/domain/User.java | 43 +---------------- 7 files changed, 54 insertions(+), 131 deletions(-) create mode 100644 querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/AbstractEntity.java diff --git a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/AbstractEntity.java b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/AbstractEntity.java new file mode 100644 index 000000000..dc50cede1 --- /dev/null +++ b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/AbstractEntity.java @@ -0,0 +1,46 @@ +package com.mysema.query.mongodb.domain; + +import com.mysema.query.annotations.QuerySupertype; +import org.bson.types.ObjectId; +import org.mongodb.morphia.annotations.Id; + +@QuerySupertype +public abstract class AbstractEntity { + + private @Id ObjectId id; + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + AbstractEntity other = (AbstractEntity) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + + +} diff --git a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Dates.java b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Dates.java index 969a13817..1f718b900 100644 --- a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Dates.java +++ b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Dates.java @@ -2,25 +2,13 @@ package com.mysema.query.mongodb.domain; import java.util.Date; -import org.bson.types.ObjectId; import org.mongodb.morphia.annotations.Entity; -import org.mongodb.morphia.annotations.Id; @Entity -public class Dates { - - private @Id ObjectId id; +public class Dates extends AbstractEntity { private Date date; - public ObjectId getId() { - return id; - } - - public void setId(ObjectId id) { - this.id = id; - } - public Date getDate() { return date; } @@ -29,28 +17,4 @@ public class Dates { this.date = date; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((id == null) ? 0 : id.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Dates other = (Dates) obj; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - return true; - } } diff --git a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/DummyEntity.java b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/DummyEntity.java index 958edc3e4..c7eb33602 100644 --- a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/DummyEntity.java +++ b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/DummyEntity.java @@ -13,27 +13,15 @@ */ package com.mysema.query.mongodb.domain; -import org.bson.types.ObjectId; import org.mongodb.morphia.annotations.Entity; -import org.mongodb.morphia.annotations.Id; import org.mongodb.morphia.annotations.Property; @Entity -public class DummyEntity { - - private @Id ObjectId id; +public class DummyEntity extends AbstractEntity { @Property("prop") private String property; - public ObjectId getId() { - return id; - } - - public void setId(ObjectId id) { - this.id = id; - } - public String getProperty() { return property; } diff --git a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/GeoEntity.java b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/GeoEntity.java index bc1789eb4..61ce5edc2 100644 --- a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/GeoEntity.java +++ b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/GeoEntity.java @@ -13,14 +13,10 @@ */ package com.mysema.query.mongodb.domain; -import org.bson.types.ObjectId; import org.mongodb.morphia.annotations.Entity; -import org.mongodb.morphia.annotations.Id; @Entity -public class GeoEntity { - - private @Id ObjectId id; +public class GeoEntity extends AbstractEntity { private Double[] location; @@ -30,14 +26,6 @@ public class GeoEntity { public GeoEntity() {} - public ObjectId getId() { - return id; - } - - public void setId(ObjectId id) { - this.id = id; - } - public Double[] getLocation() { return location; } diff --git a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Item.java b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Item.java index 6ac058717..35331f35e 100644 --- a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Item.java +++ b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/Item.java @@ -17,23 +17,12 @@ import java.util.List; import org.bson.types.ObjectId; import org.mongodb.morphia.annotations.Entity; -import org.mongodb.morphia.annotations.Id; @Entity -public class Item { - - private @Id ObjectId id; - +public class Item extends AbstractEntity { + private List ctds; - public ObjectId getId() { - return id; - } - - public void setId(ObjectId id) { - this.id = id; - } - public List getCtds() { return ctds; } @@ -41,6 +30,5 @@ public class Item { public void setCtds(List ctds) { this.ctds = ctds; } - } diff --git a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/MapEntity.java b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/MapEntity.java index 2bcff9213..cd6435056 100644 --- a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/MapEntity.java +++ b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/MapEntity.java @@ -3,27 +3,15 @@ package com.mysema.query.mongodb.domain; import java.util.HashMap; import java.util.Map; -import org.bson.types.ObjectId; import org.mongodb.morphia.annotations.Embedded; import org.mongodb.morphia.annotations.Entity; -import org.mongodb.morphia.annotations.Id; @Entity -public class MapEntity { +public class MapEntity extends AbstractEntity { - private @Id ObjectId id; - @Embedded private Map properties = new HashMap(); - public ObjectId getId() { - return id; - } - - public void setId(ObjectId id) { - this.id = id; - } - public Map getProperties() { return properties; } diff --git a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/User.java b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/User.java index 7a222192d..a039b90ab 100644 --- a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/User.java +++ b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/domain/User.java @@ -17,19 +17,15 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; -import org.bson.types.ObjectId; import org.mongodb.morphia.annotations.Embedded; import org.mongodb.morphia.annotations.Entity; -import org.mongodb.morphia.annotations.Id; import org.mongodb.morphia.annotations.Reference; @Entity -public class User { +public class User extends AbstractEntity { public enum Gender { MALE, FEMALE } - private @Id ObjectId id; - private String firstName; private String lastName; @@ -74,18 +70,10 @@ public class User { @Override public String toString() { - return "TestUser [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + return "TestUser [id=" + getId() + ", firstName=" + firstName + ", lastName=" + lastName + "]"; } - public ObjectId getId() { - return id; - } - - public void setId(ObjectId id) { - this.id = id; - } - public String getFirstName() { return firstName; } @@ -177,31 +165,4 @@ public class User { this.enemy = enemy; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((id == null) ? 0 : id.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - User other = (User) obj; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - return true; - } - - - } From 8ee16b0b6947f280f51fb52da755ce8353cc1b27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 11:42:48 +0300 Subject: [PATCH 11/18] Add CUBRID support --- .travis.yml | 6 ++++++ querydsl-root/pom.xml | 1 - 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6d01ea911..73b3fb2b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,5 +19,11 @@ before_script: - psql -c 'grant all privileges on database querydsl to querydsl;' -U postgres - psql -c 'grant all privileges on database querydsl2 to querydsl;' -U postgres - psql -c 'create extension postgis;' -U postgres + - echo 'yes' | sudo add-apt-repository ppa:cubrid/cubrid + - sudo apt-get update + - sudo apt-get install cubrid + - sudo apt-get install cubrid-demodb + - /etc/profile.d/cubrid.sh + - hostname | sed 's/^/127.0.0.1 /g' | cat - /etc/hosts > /tmp/etchoststemp && sudo mv /tmp/etchoststemp /etc/hosts --force script: - sh -c 'cd querydsl-root && mvn -B test -Pall,travis' diff --git a/querydsl-root/pom.xml b/querydsl-root/pom.xml index 36872a025..18de200fe 100644 --- a/querydsl-root/pom.xml +++ b/querydsl-root/pom.xml @@ -493,7 +493,6 @@ com.mysema.testutil.DummyInterface **/*$* - **/CUBRIDSuiteTest.java **/ExportOracleTest.java **/OracleSuiteTest.java **/OracleWithQuotingTest.java From 2e9c33cd665b9e6acde0e39e7c5114525a7dc38e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 12:32:36 +0300 Subject: [PATCH 12/18] Fix test --- .../src/test/java/com/mysema/query/InsertBase.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/querydsl-sql/src/test/java/com/mysema/query/InsertBase.java b/querydsl-sql/src/test/java/com/mysema/query/InsertBase.java index db02f2620..b002f4f09 100644 --- a/querydsl-sql/src/test/java/com/mysema/query/InsertBase.java +++ b/querydsl-sql/src/test/java/com/mysema/query/InsertBase.java @@ -13,6 +13,9 @@ */ package com.mysema.query; +import java.sql.ResultSet; +import java.sql.SQLException; + import com.mysema.query.QueryFlag.Position; import com.mysema.query.sql.SQLSubQuery; import com.mysema.query.sql.dml.DefaultMapper; @@ -34,10 +37,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; - -import java.sql.ResultSet; -import java.sql.SQLException; - import static com.mysema.query.Constants.survey; import static com.mysema.query.Constants.survey2; import static com.mysema.query.Target.*; @@ -84,6 +83,10 @@ public class InsertBase extends AbstractBaseTest { assertEquals(Integer.valueOf(2), result.get(2, Integer.class)); DateTime dateTime = result.get(dateTimeProperty); + if (target == CUBRID) { + // XXX Cubrid adds random milliseconds for some reason + dateTime = dateTime.withMillisOfSecond(0); + } assertEquals(localDate.toDateTimeAtStartOfDay(), dateTime); } From 89daa67a1b9e53958db20547d73b5a6dcf92cb1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 12:52:15 +0300 Subject: [PATCH 13/18] Fix test --- .../java/com/mysema/query/sql/SQLSerializerTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/querydsl-sql/src/test/java/com/mysema/query/sql/SQLSerializerTest.java b/querydsl-sql/src/test/java/com/mysema/query/sql/SQLSerializerTest.java index 0110c5acc..3e1dd771f 100644 --- a/querydsl-sql/src/test/java/com/mysema/query/sql/SQLSerializerTest.java +++ b/querydsl-sql/src/test/java/com/mysema/query/sql/SQLSerializerTest.java @@ -13,13 +13,10 @@ */ package com.mysema.query.sql; -import static org.junit.Assert.assertEquals; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; - -import org.junit.Test; +import java.util.TimeZone; import com.mysema.query.BooleanBuilder; import com.mysema.query.QueryMetadata; @@ -36,6 +33,8 @@ import com.mysema.query.types.expr.Wildcard; import com.mysema.query.types.path.NumberPath; import com.mysema.query.types.path.PathBuilder; import com.mysema.query.types.path.StringPath; +import org.junit.Test; +import static org.junit.Assert.assertEquals; public class SQLSerializerTest { @@ -289,7 +288,8 @@ public class SQLSerializerTest { SQLSerializer serializer = new SQLSerializer(Configuration.DEFAULT); serializer.setUseLiterals(true); - Expression expr = SQLExpressions.datediff(DatePart.year, employee.datefield, new java.sql.Date(0)); + int offset = TimeZone.getDefault().getRawOffset(); + Expression expr = SQLExpressions.datediff(DatePart.year, employee.datefield, new java.sql.Date(-offset)); serializer.handle(expr); assertEquals("datediff('year',EMPLOYEE.DATEFIELD,(date '1970-01-01'))", serializer.toString()); } From e061b4d65da1e52c13441bcbd98761f6c80e450f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 14:05:38 +0300 Subject: [PATCH 14/18] Reuse compiler --- .../test/java/com/mysema/query/apt/AbstractProcessorTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/querydsl-apt/src/test/java/com/mysema/query/apt/AbstractProcessorTest.java b/querydsl-apt/src/test/java/com/mysema/query/apt/AbstractProcessorTest.java index 0597960fe..748cc5a89 100644 --- a/querydsl-apt/src/test/java/com/mysema/query/apt/AbstractProcessorTest.java +++ b/querydsl-apt/src/test/java/com/mysema/query/apt/AbstractProcessorTest.java @@ -29,6 +29,8 @@ import junit.framework.Assert; public abstract class AbstractProcessorTest { + private final JavaCompiler compiler = new SimpleCompiler(); + protected static List getFiles(String path) { List classes = new ArrayList(); for (File file : new File(path).listFiles()) { @@ -51,7 +53,6 @@ public abstract class AbstractProcessorTest { } protected void compile(Class processorClass, List classes, String target) throws IOException { - JavaCompiler compiler = new SimpleCompiler(); List options = new ArrayList(classes.size() + 3); options.add("-s"); options.add("target/" + target); From 23f601d1db0a785d37ca6bc3e7a6dc3a83ae9e11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 14:19:15 +0300 Subject: [PATCH 15/18] Remove unnecessary options --- .../query/sql/codegen/MetaDataExporterTest.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/querydsl-sql-codegen/src/test/java/com/mysema/query/sql/codegen/MetaDataExporterTest.java b/querydsl-sql-codegen/src/test/java/com/mysema/query/sql/codegen/MetaDataExporterTest.java index 5a40bf0f8..23702cbe6 100644 --- a/querydsl-sql-codegen/src/test/java/com/mysema/query/sql/codegen/MetaDataExporterTest.java +++ b/querydsl-sql-codegen/src/test/java/com/mysema/query/sql/codegen/MetaDataExporterTest.java @@ -18,6 +18,7 @@ import java.io.File; import java.io.IOException; import java.sql.*; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Set; @@ -157,20 +158,21 @@ public class MetaDataExporterTest { @Test public void Multiple() throws SQLException { // TODO : refactor this to use new JUnit constructs + List emptyString = Collections.singletonList(""); boolean[] trueAndFalse = new boolean[]{true, false}; int counter = 0; - for (String namePrefix : Arrays.asList("", "Q", "Query")) { - for (String nameSuffix : Arrays.asList("", "Type")) { - for (String beanPrefix : Arrays.asList("", "Bean")) { - for (String beanSuffix : Arrays.asList("", "Bean")) { - for (NamingStrategy ns : Arrays.asList(defaultNaming, originalNaming)) { for (boolean withBeans : trueAndFalse) { for (boolean withInnerClasses : trueAndFalse) { for (boolean schemaToPackage : trueAndFalse) { for (boolean exportColumns : trueAndFalse) { - for (String beanPackage : Arrays.asList("test2", null)) { - for (Serializer beanSerializer : BEAN_SERIALIZERS) { for (boolean withOriginalPositioning : trueAndFalse) { + for (NamingStrategy ns : Arrays.asList(defaultNaming, originalNaming)) { + for (String namePrefix : Arrays.asList("", "Q", "Query")) { + for (String nameSuffix : Arrays.asList("", "Type")) { + for (String beanPrefix : withBeans ? Arrays.asList("", "Bean") : emptyString) { + for (String beanSuffix : withBeans ? Arrays.asList("", "Bean") : emptyString) { + for (String beanPackage : withBeans ? Arrays.asList("test2", null) : emptyString) { + for (Serializer beanSerializer : BEAN_SERIALIZERS) { counter++; this.beanPackageName = beanPackage; this.schemaToPackage = schemaToPackage; From 6134a2e0baebedcb59fb7c296f1bb2eb2c572247 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 14:31:18 +0300 Subject: [PATCH 16/18] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1d326bf5c..ef4968eb5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ ## Querydsl +[![Build Status](https://travis-ci.org/querydsl/querydsl.svg?branch=master)](https://travis-ci.org/querydsl/querydsl) + Querydsl is a framework which enables the construction of type-safe SQL-like queries for multiple backends including JPA, MongoDB and SQL in Java. Instead of writing queries as inline strings or externalizing them into XML files they are constructed via a fluent API. From 03bfcba9adad0577304cb162441f8a14c8a6e10f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 14:31:36 +0300 Subject: [PATCH 17/18] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ef4968eb5..ed5463dab 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ ## Querydsl -[![Build Status](https://travis-ci.org/querydsl/querydsl.svg?branch=master)](https://travis-ci.org/querydsl/querydsl) - Querydsl is a framework which enables the construction of type-safe SQL-like queries for multiple backends including JPA, MongoDB and SQL in Java. Instead of writing queries as inline strings or externalizing them into XML files they are constructed via a fluent API. +[![Build Status](https://travis-ci.org/querydsl/querydsl.svg?branch=master)](https://travis-ci.org/querydsl/querydsl) + **Getting started** Use these tutorials to get started From 3f68d2c5d18bd0bbad36d02628548071316aaf47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 4 May 2014 16:23:34 +0300 Subject: [PATCH 18/18] Fix tests --- .../query/mongodb/MongodbQueryTest.java | 45 +++++++------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/MongodbQueryTest.java b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/MongodbQueryTest.java index ee4218132..afc2092bd 100644 --- a/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/MongodbQueryTest.java +++ b/querydsl-mongodb/src/test/java/com/mysema/query/mongodb/MongodbQueryTest.java @@ -13,28 +13,8 @@ */ package com.mysema.query.mongodb; -import static java.util.Arrays.asList; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNotNull; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.Iterator; -import java.util.List; - -import com.mysema.query.mongodb.domain.*; -import org.bson.types.ObjectId; -import org.junit.Before; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.mongodb.morphia.Datastore; -import org.mongodb.morphia.Morphia; +import java.util.*; import com.google.common.collect.Lists; import com.mongodb.Mongo; @@ -42,10 +22,7 @@ import com.mongodb.MongoException; import com.mongodb.ReadPreference; import com.mysema.query.NonUniqueResultException; import com.mysema.query.SearchResults; -import com.mysema.query.mongodb.domain.QAddress; -import com.mysema.query.mongodb.domain.QItem; -import com.mysema.query.mongodb.domain.QMapEntity; -import com.mysema.query.mongodb.domain.QUser; +import com.mysema.query.mongodb.domain.*; import com.mysema.query.mongodb.domain.User.Gender; import com.mysema.query.mongodb.morphia.MorphiaQuery; import com.mysema.query.types.EntityPath; @@ -53,6 +30,16 @@ import com.mysema.query.types.OrderSpecifier; import com.mysema.query.types.Predicate; import com.mysema.query.types.path.StringPath; import com.mysema.testutil.ExternalDB; +import org.bson.types.ObjectId; +import org.junit.Before; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.mongodb.morphia.Datastore; +import org.mongodb.morphia.Morphia; +import static java.util.Arrays.asList; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static org.junit.Assert.*; @Category(ExternalDB.class) public class MongodbQueryTest { @@ -208,12 +195,14 @@ public class MongodbQueryTest { @Test public void Dates() { - Date start = new Date(); + long current = System.currentTimeMillis(); + int dayInMillis = 24 * 60 * 60 * 1000; + Date start = new Date(current); ds.delete(ds.createQuery(Dates.class)); Dates d = new Dates(); - d.setDate(new Date()); + d.setDate(new Date(current + dayInMillis)); ds.save(d); - Date end = new Date(); + Date end = new Date(current + 2 * dayInMillis); assertEquals(d, query(dates).where(dates.date.between(start, end)).singleResult()); assertEquals(0, query(dates).where(dates.date.between(new Date(0), start)).count());