From 5861fbfe9819bbb437c4ddcd95c5adaf9a69d343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 18 Jul 2011 12:24:12 +0000 Subject: [PATCH] #809817 : fixed property handling --- querydsl-scala/pom.xml | 8 ++ .../mysema/query/scala/sql/Serializers.scala | 4 +- .../mysema/query/scala/CompileTestUtils.scala | 8 ++ .../query/scala/sql/JDBCIntegrationTest.scala | 8 -- .../scala/sql/MetaDataExporterTest.scala | 93 +++++++++++++++++++ 5 files changed, 111 insertions(+), 10 deletions(-) create mode 100644 querydsl-scala/src/test/scala/com/mysema/query/scala/sql/MetaDataExporterTest.scala diff --git a/querydsl-scala/pom.xml b/querydsl-scala/pom.xml index 70c4a2fc0..84d2084a6 100644 --- a/querydsl-scala/pom.xml +++ b/querydsl-scala/pom.xml @@ -177,6 +177,14 @@ + + + org.apache.maven.plugins + maven-surefire-plugin + + -Xss2m + + org.apache.maven.plugins diff --git a/querydsl-scala/src/main/scala/com/mysema/query/scala/sql/Serializers.scala b/querydsl-scala/src/main/scala/com/mysema/query/scala/sql/Serializers.scala index 61b414c3b..b3c62a1a6 100644 --- a/querydsl-scala/src/main/scala/com/mysema/query/scala/sql/Serializers.scala +++ b/querydsl-scala/src/main/scala/com/mysema/query/scala/sql/Serializers.scala @@ -56,7 +56,7 @@ class ScalaMetaDataSerializer @Inject() (typeMappings: TypeMappings, val namingS val fieldName = namingStrategy.getPropertyNameForPrimaryKey(primaryKey.getName(), model) val value = new StringBuilder("createPrimaryKey(") value.append(primaryKey.getColumns().map({ column => - namingStrategy.getPropertyName(column, model) + escape(namingStrategy.getPropertyName(column, model)) }).mkString(", ")) value.append(")") writer.publicFinal(new ClassType(classOf[PrimaryKey[_]], model), fieldName, value.toString) @@ -89,7 +89,7 @@ class ScalaMetaDataSerializer @Inject() (typeMappings: TypeMappings, val namingS local.append(", ") foreign.append(", ") } - local.append(namingStrategy.getPropertyName(foreignKey.getForeignColumns().get(0), model)) + local.append(escape(namingStrategy.getPropertyName(foreignKey.getForeignColumns().get(0), model))) foreign.append("\"" + foreignKey.getParentColumns.get(0) + "\"") i += 1 } diff --git a/querydsl-scala/src/test/scala/com/mysema/query/scala/CompileTestUtils.scala b/querydsl-scala/src/test/scala/com/mysema/query/scala/CompileTestUtils.scala index 4b1350dcd..4c9a1c4d9 100644 --- a/querydsl-scala/src/test/scala/com/mysema/query/scala/CompileTestUtils.scala +++ b/querydsl-scala/src/test/scala/com/mysema/query/scala/CompileTestUtils.scala @@ -42,4 +42,12 @@ trait CompileTestUtils { interpreter.close } } + + def recursiveFileList(file: File): Array[File] = { + if (file.isDirectory) { + file.listFiles.flatMap(recursiveFileList(_)) + } else { + Array(file) + } + } } \ No newline at end of file diff --git a/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/JDBCIntegrationTest.scala b/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/JDBCIntegrationTest.scala index b9a6fe0ab..0c506b850 100644 --- a/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/JDBCIntegrationTest.scala +++ b/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/JDBCIntegrationTest.scala @@ -102,14 +102,6 @@ class JDBCIntegrationTest extends CompileTestUtils { assertCompileSuccess(recursiveFileList(directory)) } - private def recursiveFileList(file: File): Array[File] = { - if (file.isDirectory) { - file.listFiles.flatMap(recursiveFileList(_)) - } else { - Array(file) - } - } - @Test def Populate_Bean { assertEquals(2, query from (survey) list (survey) size ()) diff --git a/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/MetaDataExporterTest.scala b/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/MetaDataExporterTest.scala new file mode 100644 index 000000000..926faf53e --- /dev/null +++ b/querydsl-scala/src/test/scala/com/mysema/query/scala/sql/MetaDataExporterTest.scala @@ -0,0 +1,93 @@ +package com.mysema.query.scala.sql + +import org.apache.commons.lang.StringUtils +import com.mysema.codegen._; +import com.mysema.codegen.model._; + +import com.mysema.query.codegen._; +import com.mysema.query.sql._ + +import java.io.StringWriter; + +import org.junit._ +import org.junit.Assert._ + +import scala.collection.JavaConversions._ + +import com.mysema.query.scala._ + +class MetaDataExporterTest extends CompileTestUtils { + + var connection: java.sql.Connection = _; + + @Before + def setUp() { + Class.forName("org.h2.Driver"); + val url = "jdbc:h2:mem:testdb" + System.currentTimeMillis(); + connection = java.sql.DriverManager.getConnection(url, "sa", ""); + + val stmt = connection.createStatement(); + + try{ + stmt.execute("create table reserved (id int, while int)"); + stmt.execute("create table underscore (e_id int, c_id int)"); + stmt.execute("create table beangen1 (\"SEP_Order\" int)"); + stmt.execute("create table definstance (id int, definstance int, definstance1 int)"); + stmt.execute("create table pkfk (id int primary key, pk int, fk int)"); + stmt.execute("create table \"camelCase\" (id int)"); + stmt.execute("create table \"vwServiceName\" (id int)"); + stmt.execute("create table date_test (d date)"); + stmt.execute("create table date_time_test (dt datetime)"); + stmt.execute("create table survey (id int, name varchar(30))"); + stmt.execute("create table typetest (type int, constraint pk_typetest primary key(type))"); + + stmt.execute("""create table employee( + id INT, firstname VARCHAR(50), lastname VARCHAR(50), salary DECIMAL(10, 2), + datefield DATE, timefield TIME, + superior_id int, survey_id int, survey_name varchar(30), + CONSTRAINT PK_employee PRIMARY KEY (id), + CONSTRAINT FK_superior FOREIGN KEY (superior_id) REFERENCES employee(id))"""); + + // multi key + stmt.execute("create table multikey(id INT, id2 VARCHAR, id3 INT, CONSTRAINT pk_multikey PRIMARY KEY (id, id2, id3) )"); + } finally { + stmt.close(); + } + } + + @Test + def GenerateWithoutBeanTypes() { + val directory = new java.io.File("target/jdbcgen1"); + val namingStrategy = new DefaultNamingStrategy(); + val exporter = new MetaDataExporter(); + exporter.setNamePrefix("Q"); + exporter.setPackageName("com.mysema"); + exporter.setTargetFolder(directory); + exporter.setSerializerClass(classOf[ScalaMetaDataSerializer]); + exporter.setCreateScalaSources(true); + exporter.setTypeMappings(ScalaTypeMappings.create); + exporter.export(connection.getMetaData); + + assertCompileSuccess(recursiveFileList(directory)) + } + + @Test + def GenerateWithBeanTypes() { + val directory = new java.io.File("target/jdbcgen2"); + val namingStrategy = new DefaultNamingStrategy(); + val beanSerializer = new ScalaBeanSerializer(); + val exporter = new MetaDataExporter(); + exporter.setNamePrefix("Q"); + exporter.setPackageName("com.mysema"); + exporter.setTargetFolder(directory); + exporter.setSerializerClass(classOf[ScalaMetaDataSerializer]); + exporter.setBeanSerializer(beanSerializer) + exporter.setCreateScalaSources(true); + exporter.setTypeMappings(ScalaTypeMappings.create); + exporter.export(connection.getMetaData); + + assertCompileSuccess(recursiveFileList(directory)) + + } + +} \ No newline at end of file