Wiki source code of Squeryl Entity.eotemplate

Last modified by Ravi Mendis on 2011/05/18 04:50

Show last authors
1 This set of templates will generate a Squeryl schema from an EO model. Still basic/proof-of-concept templates. Of course, you may customize them further.
2
3 {{note title="Limitations"}}
4 * Single-package/single-model schemas only
5 * No support for object inheritance
6 {{/note}}
7
8 {{code}}
9
10 #if ($entity.packageName)
11 package $entity.packageName
12 #end
13
14 import java.util.Date
15
16 class ${entity.classNameWithoutPackage}(
17 ##
18 ##java -> Scala types go here
19 ##
20 #foreach ($attribute in $entity.sortedAttributes)
21 #if ($attribute.javaClassName.equals("Integer")) #set( $scalaClassName = "Long" )
22 #elseif ($attribute.javaClassName.equals("String")) #set( $scalaClassName = "String" )
23 #elseif ($attribute.javaClassName.contains("BigDecimal")) #set( $scalaClassName = "BigDecimal" )
24 #elseif ($attribute.javaClassName.equals("NSTimestamp")) #set( $scalaClassName = "Date" )
25 #elseif ($attribute.javaClassName.equals("NSData")) #set( $scalaClassName = "Array[Byte]" ) #end
26 val ${attribute.name}:#if ($attribute.allowsNull) Option[$scalaClassName]#else $scalaClassName#end#if (!$attribute.equals($entity.sortedAttributes.last())),
27 #else
28 #end
29 #end) extends _${entity.classNameWithoutPackage}(
30 ##
31 ##java -> Scala types go here
32 ##
33 #foreach ($attribute in $entity.sortedAttributes)
34 #if ($attribute.javaClassName.equals("Integer")) #set( $scalaClassName = "Long" )
35 #elseif ($attribute.javaClassName.equals("String")) #set( $scalaClassName = "String" )
36 #elseif ($attribute.javaClassName.contains("BigDecimal")) #set( $scalaClassName = "BigDecimal" )
37 #elseif ($attribute.javaClassName.equals("NSTimestamp")) #set( $scalaClassName = "Date" )
38 #elseif ($attribute.javaClassName.equals("NSData")) #set( $scalaClassName = "Array[Byte]" ) #end
39 ${attribute.name}#if (!$attribute.equals($entity.sortedAttributes.last())),
40 #else
41 #end
42 #end) {
43 }
44
45 object $entity.classNameWithoutPackage {
46 }
47
48
49 {{/code}}