ontomde-java 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. data/History.txt +10 -0
  2. data/Manifest.txt +156 -0
  3. data/README.txt +98 -0
  4. data/Rakefile +21 -0
  5. data/bin/ontomde-java +5 -0
  6. data/generateRdocFile.sh +16 -0
  7. data/lib/ontomde-java.rb +45 -0
  8. data/lib/ontomde-java/crank.rb +13 -0
  9. data/lib/ontomde-java/crank/context.rb +384 -0
  10. data/lib/ontomde-java/crank/crankJpa.rb +103 -0
  11. data/lib/ontomde-java/crank/equals.rb +83 -0
  12. data/lib/ontomde-java/crank/facelets.rb +243 -0
  13. data/lib/ontomde-java/crank/facesconfig.rb +113 -0
  14. data/lib/ontomde-java/crank/helper.rb +46 -0
  15. data/lib/ontomde-java/crank/main.rb +51 -0
  16. data/lib/ontomde-java/crank/menu.rb +39 -0
  17. data/lib/ontomde-java/crank/menu2.rb +78 -0
  18. data/lib/ontomde-java/crank/validation.rb +34 -0
  19. data/lib/ontomde-java/ejb2.rb +3 -0
  20. data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
  21. data/lib/ontomde-java/flex.rb +7 -0
  22. data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
  23. data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
  24. data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
  25. data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
  26. data/lib/ontomde-java/flex/fileTypes.rb +19 -0
  27. data/lib/ontomde-java/flex/main.rb +347 -0
  28. data/lib/ontomde-java/frontend/command.rb +324 -0
  29. data/lib/ontomde-java/frontend/command.rdoc +583 -0
  30. data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
  31. data/lib/ontomde-java/frontend/options.rb +555 -0
  32. data/lib/ontomde-java/frontend/steps.rb +287 -0
  33. data/lib/ontomde-java/java/accessorCode.rb +528 -0
  34. data/lib/ontomde-java/java/accessorSignature.rb +347 -0
  35. data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
  36. data/lib/ontomde-java/java/apache.rb +34 -0
  37. data/lib/ontomde-java/java/build.rb +80 -0
  38. data/lib/ontomde-java/java/collectionMapping.rb +112 -0
  39. data/lib/ontomde-java/java/component.rb +446 -0
  40. data/lib/ontomde-java/java/contextualize.rb +43 -0
  41. data/lib/ontomde-java/java/enumAssignable.rb +75 -0
  42. data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
  43. data/lib/ontomde-java/java/equals.rb +91 -0
  44. data/lib/ontomde-java/java/groovy.rb +95 -0
  45. data/lib/ontomde-java/java/java.rb +1329 -0
  46. data/lib/ontomde-java/java/java.rdoc +78 -0
  47. data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
  48. data/lib/ontomde-java/java/javaHelper.rb +25 -0
  49. data/lib/ontomde-java/java/java_todo.rdoc +3 -0
  50. data/lib/ontomde-java/java/javadoc.rb +254 -0
  51. data/lib/ontomde-java/java/meta.rb +28 -0
  52. data/lib/ontomde-java/java/operationAsClass.rb +144 -0
  53. data/lib/ontomde-java/java/security.rb +260 -0
  54. data/lib/ontomde-java/java/stateMachine.rb +415 -0
  55. data/lib/ontomde-java/java/tenant.rb +65 -0
  56. data/lib/ontomde-java/java/xsd.rb +1363 -0
  57. data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
  58. data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
  59. data/lib/ontomde-java/jpa.rb +17 -0
  60. data/lib/ontomde-java/jpa/configuration.rb +176 -0
  61. data/lib/ontomde-java/jpa/finder.rb +102 -0
  62. data/lib/ontomde-java/jpa/jpa.rb +531 -0
  63. data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
  64. data/lib/ontomde-java/jpa/locking.rb +18 -0
  65. data/lib/ontomde-java/jpa/mapping.rb +314 -0
  66. data/lib/ontomde-java/jpa/redefined.rb +77 -0
  67. data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
  68. data/lib/ontomde-java/jpdl.rb +9 -0
  69. data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
  70. data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
  71. data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
  72. data/lib/ontomde-java/jpdl/constant.rb +5 -0
  73. data/lib/ontomde-java/jpdl/graphic.rb +52 -0
  74. data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
  75. data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
  76. data/lib/ontomde-java/jpdl/main.rb +348 -0
  77. data/lib/ontomde-java/jpdl/main.rdoc +2 -0
  78. data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
  79. data/lib/ontomde-java/kbjava.rb +6 -0
  80. data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
  81. data/lib/ontomde-java/struts.rb +27 -0
  82. data/lib/ontomde-java/struts/MessageResources.rb +359 -0
  83. data/lib/ontomde-java/struts/action.rb +883 -0
  84. data/lib/ontomde-java/struts/blob.rb +11 -0
  85. data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
  86. data/lib/ontomde-java/struts/footer.rb +128 -0
  87. data/lib/ontomde-java/struts/form.rb +450 -0
  88. data/lib/ontomde-java/struts/header.rb +37 -0
  89. data/lib/ontomde-java/struts/header_link.rb +39 -0
  90. data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
  91. data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
  92. data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
  93. data/lib/ontomde-java/struts/jsp_index.rb +136 -0
  94. data/lib/ontomde-java/struts/localeAction.rb +641 -0
  95. data/lib/ontomde-java/struts/main.rb +41 -0
  96. data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
  97. data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
  98. data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
  99. data/lib/ontomde-java/struts/reloadAction.rb +33 -0
  100. data/lib/ontomde-java/struts/spring.rb +89 -0
  101. data/lib/ontomde-java/struts/struts-config.rb +232 -0
  102. data/lib/ontomde-java/struts/validation.rb +116 -0
  103. data/lib/ontomde-java/struts/validator.rb +341 -0
  104. data/lib/ontomde-java/struts/webXml.rb +195 -0
  105. data/lib/ontomde-java/struts/xmlForm.rb +308 -0
  106. data/lib/ontomde-java/version.rb +5 -0
  107. data/profiling.xls +0 -0
  108. data/test/.classpath +14 -0
  109. data/test/.project +17 -0
  110. data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
  111. data/test/Rakefile +71 -0
  112. data/test/build.xml +34 -0
  113. data/test/classpath.rb +15 -0
  114. data/test/lib/junit-4.1.jar +0 -0
  115. data/test/load1.rb +3 -0
  116. data/test/load2.rb +3 -0
  117. data/test/log4j.properties +46 -0
  118. data/test/model/.project +11 -0
  119. data/test/model/BigProject.mdzip +0 -0
  120. data/test/model/BigProject.mdzip.nt +102866 -0
  121. data/test/model/ClassDiagram.EntArch.gif +0 -0
  122. data/test/model/ClassDiagram.emx.gif +0 -0
  123. data/test/model/ClassDiagram.mdzip.gif +0 -0
  124. data/test/model/model_ea71.bis.ea.xmi +149 -0
  125. data/test/model/model_ea71.ea.xmi +4470 -0
  126. data/test/model/model_ea71.eap +0 -0
  127. data/test/model/model_ea71_README.txt +8 -0
  128. data/test/model/multipleInheritance.emx +466 -0
  129. data/test/model/multipleInheritance.emx.nt +2428 -0
  130. data/test/model/simple1-530.ofp +0 -0
  131. data/test/model/simple1-includedAsReference.emx +169 -0
  132. data/test/model/simple1.emx +3729 -0
  133. data/test/model/simple1.emx.fragments.nt +81 -0
  134. data/test/model/simple1.emx.nt +5760 -0
  135. data/test/model/simple1.mdzip +0 -0
  136. data/test/model/simple1.mdzip.nt +11500 -0
  137. data/test/model/simple1.oe530.nt +1986 -0
  138. data/test/model/simple1.oe600.nt +1627 -0
  139. data/test/src/RuntimeTest.java +656 -0
  140. data/test/src/testsLevel1.java +174 -0
  141. data/test/src/testsLevel2.java +29 -0
  142. data/test/src/testsLevel3.java +40 -0
  143. data/test/test-ea7.sh +15 -0
  144. data/test/test-magicDraw.sh +10 -0
  145. data/test/test-mi.sh +9 -0
  146. data/test/test-oe530.sh +10 -0
  147. data/test/test-oe600.sh +11 -0
  148. data/test/test-rsm.sh +11 -0
  149. data/test/test_export_ea71.rb +5 -0
  150. data/test/test_export_oe530.rb +4 -0
  151. data/test/test_export_oe600.rb +4 -0
  152. data/test/test_export_rsm60.rb +4 -0
  153. data/test/trace +419 -0
  154. data/test/uml_test.rb +1434 -0
  155. data/test/uml_test.xls +0 -0
  156. data/test/unit_test.rb +6 -0
  157. metadata +224 -0
@@ -0,0 +1,112 @@
1
+ # Java collection mapping rules for UML property and UML parameter.
2
+
3
+ module Muml_MultiplicityElement
4
+ #returns a XSD_collectionMaping object containing mapping rules to java collection element
5
+ #
6
+ #Examples:
7
+ # * Array
8
+ # * List
9
+ # * Set
10
+ #
11
+ #Reference:
12
+ # * #xsd_use_Arrays?
13
+ def xsd_getCollectionMapping
14
+ if self.umlx_upperValueIsOne?
15
+ return XSD_collectionMapping_None.instance
16
+ elsif xsd_use_Arrays?
17
+ return XSD_collectionMapping_Array.instance
18
+ elsif uml_isOrdered?
19
+ # this mapping is used wether or not isUnique
20
+ return XSD_collectionMapping_List_ArrayList.instance
21
+ elsif uml_isUnique
22
+ return XSD_collectionMapping_Set_HashSet.instance
23
+ else
24
+ return XSD_collectionMapping_Collection_ArrayList.instance
25
+ end
26
+ end
27
+ end
28
+
29
+ # Helper class for wrapping a base type in ad-hoc collection.
30
+ class XSD_collectionMapping_None
31
+ include Singleton
32
+ #return type enclosed in collection interface declaration
33
+ def addCollectionInterface(type)
34
+ return type
35
+ end
36
+ #return type enclosed in collection implementation declaration
37
+ def addCollectionImplem(type)
38
+ return type
39
+ end
40
+ end
41
+
42
+ # Helper class for wrapping a base type in ad-hoc collection.
43
+ class XSD_collectionMapping_base
44
+ # return type enclosed in collection interface declaration
45
+ def addCollectionInterface(type)
46
+ return "#{getInterface}<#{type}>"
47
+ end
48
+ # return type enclosed in collection implementation declaration
49
+ def addCollectionImplem(type)
50
+ return "#{getImplem}<#{type}>"
51
+ end
52
+ # return new element type collection creator
53
+ def addNew(type)
54
+ return "new #{getImplem}<#{type}>()"
55
+ end
56
+ end
57
+
58
+ # Helper class for wrapping a base type in ad-hoc collection.
59
+ class XSD_collectionMapping_Collection_ArrayList < XSD_collectionMapping_base
60
+ include Singleton
61
+ # returns interface type for this collection
62
+ def getInterface
63
+ return "Collection"
64
+ end
65
+ # returns implementation class for this collection
66
+ def getImplem
67
+ return "java.util.ArrayList"
68
+ end
69
+ end
70
+
71
+ # Helper class for wrapping a base type in ad-hoc collection.
72
+ class XSD_collectionMapping_List_ArrayList < XSD_collectionMapping_base
73
+ include Singleton
74
+ # returns interface type for this collection
75
+ def getInterface
76
+ return "java.util.List"
77
+ end
78
+ # returns implementation class for this collection
79
+ def getImplem
80
+ return "java.util.ArrayList"
81
+ end
82
+ end
83
+
84
+ # Helper class for wrapping a base type in ad-hoc collection.
85
+ class XSD_collectionMapping_Set_HashSet < XSD_collectionMapping_base
86
+ include Singleton
87
+ # returns interface type for this collection
88
+ def getInterface
89
+ return "java.util.Set"
90
+ end
91
+ # returns implementation class for this collection
92
+ def getImplem
93
+ return "java.util.HashSet"
94
+ end
95
+ end
96
+
97
+ # Helper class for wrapping a base type in ad-hoc collection.
98
+ class XSD_collectionMapping_Array
99
+ include Singleton
100
+ # return type enclosed in collection interface declaration
101
+ def addCollectionInterface(type)
102
+ return "#{type}[]"
103
+ end
104
+ # return type enclosed in collection implementation declaration
105
+ def addCollectionImplem(type)
106
+ return "#{type}[]"
107
+ end
108
+ # return new element type collection creator
109
+ def addNew(type)
110
+ return "new #{type}[0]"
111
+ end
112
+ end
@@ -0,0 +1,103 @@
1
+ class DatatypeMapping
2
+ def xsd_getType
3
+ # inheriting class should redefine this method
4
+ log.error %{xsd_getType not implemented for #{self.class}}
5
+ return %{/* TODO: implement ruby xsd_getType for #{self.class}*/}
6
+ end
7
+ end
8
+ class DatatypeMappingText < DatatypeMapping
9
+ def xsd_getType
10
+ return "xsd:string"
11
+ end
12
+ end
13
+
14
+ class DatatypeMappingLargeText < DatatypeMappingText
15
+ end
16
+
17
+ class DatatypeMappingMimeType < DatatypeMappingText
18
+ end
19
+
20
+ class DatatypeMappingOrdinal < DatatypeMappingText
21
+ end
22
+
23
+ class DatatypeMappingInteger < DatatypeMappingOrdinal
24
+ def xsd_getType
25
+ return "xsd:int"
26
+ end
27
+ end
28
+
29
+ class DatatypeMappingLong < DatatypeMappingOrdinal
30
+ def xsd_getType
31
+ return "xsd:long"
32
+ end
33
+ end
34
+
35
+ class DatatypeMappingLongObject < DatatypeMappingOrdinal
36
+ def xsd_getType
37
+ return "xsd:long"
38
+ end
39
+ end
40
+ class DatatypeMappingFile < DatatypeMapping
41
+ def xsd_getType
42
+ return "xsd:???"
43
+ end
44
+ end
45
+
46
+ class DatatypeMappingBoolean < DatatypeMapping
47
+ #name of the key used by struts to referece
48
+ #current bean in session.
49
+ def xsd_getType
50
+ return "xsd:boolean"
51
+ end
52
+ end
53
+
54
+ class DatatypeMappingTimeStamp < DatatypeMapping
55
+ def xsd_getType
56
+ return "xsd:datetime"
57
+ end
58
+ end
59
+
60
+ class DatatypeMappingCalendar < DatatypeMapping
61
+ def xsd_getType
62
+ return "xsd:date"
63
+ end
64
+ end
65
+
66
+
67
+
68
+
69
+ class DatatypeMappingGenericClass < DatatypeMapping
70
+ def xsd_getType
71
+ return "java.lang.Object"
72
+ end
73
+ end
74
+
75
+ class DatatypeMappingGenericEnum < DatatypeMapping
76
+ def xsd_getType
77
+ return "java.lang.Object"
78
+ end
79
+ end
80
+
81
+
82
+ class DatatypeMappingURL < DatatypeMappingText
83
+ end
84
+
85
+ class DatatypeMappingBLOB < DatatypeMapping
86
+ def xsd_getType
87
+ return "xsd:base64Binary"
88
+ end
89
+ end
90
+
91
+ class DatatypeMappingIMG < DatatypeMappingBLOB
92
+ end
93
+
94
+ class DatatypeMappingGRAPHVIZ < DatatypeMappingLargeText
95
+ end
96
+
97
+ class DatatypeMappingPassword < DatatypeMappingText
98
+ end
99
+
100
+ class DatatypeMappingEmailAddress < DatatypeMappingText
101
+ end
102
+
103
+
@@ -0,0 +1,17 @@
1
+
2
+ #:include: ontomde-uml2-jpa/jpa.rdoc
3
+
4
+ # this constant is defined in every db module
5
+ # multiple db module inclusion will trigger a warning
6
+ DB_PERSISTENCE_MODULE="ontomde-uml2_jpa"
7
+
8
+ require 'ontomde-java'
9
+
10
+ require 'ontomde-java/jpa/jpa.rb'
11
+ require 'ontomde-java/jpa/finder.rb'
12
+ require 'ontomde-java/jpa/configuration.rb'
13
+ require 'ontomde-java/jpa/mapping.rb'
14
+ require 'ontomde-java/jpa/redefined.rb'
15
+ require 'ontomde-java/jpa/simulationAutoImplement.rb'
16
+ require 'ontomde-java/jpa/locking.rb'
17
+
@@ -0,0 +1,176 @@
1
+ module Mrdf_Repository
2
+
3
+ #Generates persistence configuration file
4
+ def db_generateConfiguration
5
+ jpa_generateConfiguration
6
+ end
7
+
8
+ #Generates hibernate configuration file
9
+ def jpa_generateConfiguration
10
+ if context[:struts_useSpring]
11
+ mtk_writeSession("#{context[:jpaConfigDir,context[:javaDir]]}/META-INF/persistence.xml") {
12
+ jpa_writeConfigurationForSpring
13
+ }
14
+ else
15
+ # empty
16
+ end
17
+
18
+ end
19
+
20
+ def jpa_writeConfigurationForSpring
21
+ write %{<?xml version="1.0" encoding="UTF-8"?>
22
+ <!-- This configuration file is for a spring enabled application. -->
23
+ <!-- For database settings, please see ApplicationContext-jpa.xml -->
24
+
25
+ <persistence xmlns="http://java.sun.com/xml/ns/persistence"
26
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
27
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
28
+ version="1.0">
29
+ #{mtk_stss{jpa_writeWebAppConfiguration}}
30
+
31
+ #{mtk_stss{jpa_writeDeploymentConfiguration}}
32
+ </persistence>
33
+ }
34
+ end
35
+
36
+ def jpa_writeWebAppConfiguration
37
+ write %{
38
+ <persistence-unit name="persistence-unit-test"
39
+ transaction-type="RESOURCE_LOCAL">
40
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
41
+ #{mtk_stss{jpa_writeConfigurationPersistentClasses}}
42
+ <properties>
43
+ #{mtk_stss{jpa_writeOptimizedHibernateProperties}}
44
+ </properties>
45
+ </persistence-unit>
46
+ }
47
+ end
48
+
49
+ def jpa_writeDeploymentConfiguration
50
+ write %{
51
+ <!-- This persistence unit is used only by hibernateTools in "deployBD.xml"
52
+ to generate tables. -->
53
+ <persistence-unit name="deployment-persistence-unit"
54
+ transaction-type="RESOURCE_LOCAL">
55
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
56
+ #{mtk_stss{jpa_writeConfigurationPersistentClasses}}
57
+ <properties>
58
+ #{mtk_stss{jpa_writeDBConnectionParameters}}
59
+ </properties>
60
+ </persistence-unit>
61
+ }
62
+ end
63
+
64
+
65
+
66
+ #writes jpa configuration file to current
67
+ def jpa_writeConfigurationStandard
68
+ write %{<?xml version="1.0" encoding="UTF-8"?>
69
+ <persistence
70
+ xmlns="http://java.sun.com/xml/ns/persistence"
71
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
72
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
73
+ version="1.0">
74
+ <persistence-unit
75
+ name="persistence-unit-test"
76
+ transaction-type="RESOURCE_LOCAL"
77
+ >
78
+ }
79
+ jpa_writeConfigurationPersistentClasses
80
+
81
+ write %{<properties>\n}
82
+ jpa_writeDBConnectionParameters
83
+ jpa_writeConnectionPool
84
+ write %{
85
+ <!-- Echo all executed SQL to stdout -->
86
+ <property name="hibernate.show_sql" value="false"/>
87
+ <!-- recreate schema ? validate | update | create | create-drop -->
88
+ <property name="hibernate.hbm2ddl.auto" value="#{context[:jpa_ddl_mode,"update"]}"/>
89
+ }
90
+
91
+ write %{</properties>\n</persistence-unit>\n</persistence>\n}
92
+ end
93
+
94
+ #writes configuration parameter for hibernate sgbd connection.
95
+ #Some parameter are extracted from context.
96
+ def jpa_default_db_url
97
+ #name=umlx_model.uml_name_one.tr('^a-zA-Z0-9','_')
98
+ return %{jdbc:mysql:///#{context[:db_schema_name,"testschema"]}}
99
+ end
100
+ def jpa_writeDBConnectionParameters
101
+ write %{
102
+ <property name="hibernate.dialect" value="#{context[:hib_dialect,"org.hibernate.dialect.MySQL5InnoDBDialect"]}"/>
103
+ <property name="hibernate.connection.driver_class" value="#{context[:hib_connection_driver_class,"com.mysql.jdbc.Driver"]}"/>
104
+ <property name="hibernate.connection.url" value="#{context[:hib_connection_url,jpa_default_db_url]}"/>
105
+ <property name="hibernate.connection.username" value="#{context[:hib_connection_username,"testuser"]}"/>
106
+ <property name="hibernate.connection.password" value="#{context[:hib_connection_password,"testpwd"]}"/>
107
+ <!--
108
+ <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
109
+ <property name="hibernate.connection.username" value="sa"/>
110
+ <property name="hibernate.connection.password" value=""/>
111
+ <property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost:1701"/>
112
+ <property name="hibernate.hbm2ddl.auto" value="update"/>
113
+ <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
114
+ -->
115
+ }
116
+ end
117
+
118
+
119
+ def jpa_writeOptimizedHibernateProperties
120
+ write %{
121
+ <property name="hibernate.show_sql" value="false" />
122
+ <property name="hibernate.hbm2ddl.auto" value="update" />
123
+
124
+ <!-- Set a maximum "depth" for the outer join fetch tree for single-ended associations (one-to-one, many-to-one) -->
125
+ <property name="hibernate.max_fetch_depth" value="0" />
126
+
127
+ <!-- determines the JDBC fetch size (calls Statement.setFetchSize()) -->
128
+ <property name="hibernate.jdbc.fetch_size" value="4" />
129
+
130
+ <!-- makes Hibernate start faster (it does not try to build cglib-enhanced objects to access getter/setters) -->
131
+ <property name="hibernate.bytecode.use_reflection_optimizer" value="false" />
132
+ }
133
+ end
134
+
135
+ #writes configuration parameter for hibernate connection pool.
136
+ def jpa_writeConnectionPool
137
+ write %{
138
+ <!-- connection pool -->
139
+ <!-- cf: http://www.hibernate.org/214.html -->
140
+ <property name="hibernate.c3p0.min_size" value="5"/>
141
+ <property name="hibernate.c3p0.max_size" value="20"/>
142
+ <property name="hibernate.c3p0.timeout" value="1800"/> <!-- seconds -->
143
+ <property name="hibernate.c3p0.idle_test_period" value="100"/> <!-- seconds -->
144
+ <property name="hibernate.c3p0.max_statement" value="50"/>
145
+ }
146
+ end
147
+
148
+ #writes jpa configuration list of persistent class
149
+ def jpa_writeConfigurationPersistentClasses
150
+ write %{<!-- begin Persistent classes declaration -->\n}
151
+ uml_Class_all.each {|c|
152
+ next unless c.kind_of?(Muml_Class) && c.umlx_isReallyAClass?
153
+ c.jpa_writeConfiguration
154
+ }
155
+ #TODO: remove hack
156
+ # context[:db_additionalPersistentClass,["com.jbpm.wrapper.process.Process"]].each { |cl|
157
+ # write %{<class>#{cl}</class>\n}
158
+ # }
159
+ write %{<exclude-unlisted-classes>true</exclude-unlisted-classes>\n}
160
+ write %{<!-- end Persistent classes declaration -->\n}
161
+ end
162
+ end
163
+
164
+ module Muml_Class
165
+ #
166
+ #writes jpa entry for this class if this class is persistent.
167
+ def jpa_writeConfiguration()
168
+ ignoreExternal=false
169
+ return if java_ignoreMe?(ignoreExternal)
170
+ return unless umlx_owner_one.kind_of?(Muml_Package)
171
+ return unless jpa_isPersistent?
172
+ return if db_isTransient?
173
+ write %{<class>#{java_qualifiedName}</class>\n}
174
+ end
175
+ end
176
+
@@ -0,0 +1,102 @@
1
+ module Muml_Class
2
+ #adds a finder to eao
3
+ #self is supposed to be the bean and eao the "dao".
4
+ def jpa_addFindAll!(eao)
5
+ # java_NameBean is added to avoid name clash with inheritance
6
+ m=eao.umlx_createAndAddOperation(rdf_uri+"_findAll","findAll")#+self.java_NameBean)
7
+ m.uml_isStatic=RDF_TRUE
8
+ #m.uml_class=self
9
+ m.uml_visibility=Cuml_VisibilityKind::Public
10
+ #m.uml_isStatic=RDF_TRUE
11
+
12
+ #em=m.umlx_createAndAddParameter(m.rdf_uri+"_entityManager","entityManager")
13
+ #em.uml_type=umlx_getOrCreateClass(JPA::EntityManager)
14
+ #em.uml_direction=Cuml_ParameterDirectionKind::In
15
+ #em.uml_upperValue=umlx_literal(1)
16
+ #em.uml_lowerValue=umlx_literal(1)
17
+
18
+ rp=m.umlx_createAndAddParameter(m.rdf_uri+"_ret_param","return")
19
+ rp.uml_direction=Cuml_ParameterDirectionKind::Return
20
+ rp.uml_upperValue=umlx_literal(-1)
21
+ rp.uml_lowerValue=umlx_literal(0)
22
+ rp.uml_type=self
23
+ rp.uml_isOrdered=RDF_TRUE
24
+
25
+ #m.java_code="return (#{self.java_qualifiedName})entityManager.find( #{self.java_qualifiedName}.class, #{ip.uml_name});"
26
+
27
+ basicQuery=<<END
28
+ javax.persistence.Query q=getEntityManager().createQuery( "select Object(c) from #{java_Name} as c");
29
+ return (java.util.List<#{self.java_qualifiedName}>) q.getResultList();
30
+ END
31
+
32
+
33
+ if !context[:multiTenant]
34
+ m.java_code=basicQuery
35
+ else
36
+
37
+ ip=m.umlx_createAndAddParameter(m.rdf_uri+"_tenant","tenant")
38
+ ip.uml_type=rdf_Repository.java_getTenantClass
39
+ ip.umlx_createAndAddComment(ip.rdf_uri+"comment","Restrict query to this tenant")
40
+
41
+ m.java_code=<<END
42
+ if(#{ip.java_Name}!=null) {
43
+ javax.persistence.Query q=getEntityManager().createQuery( "select Object(c) from #{java_Name} as c where c.#{TENANT_FIELD_NAME}= :tenantQP");
44
+ q.setParameter("tenantQP",#{ip.java_Name});
45
+ return (java.util.List<#{self.java_qualifiedName}>) q.getResultList();
46
+ } else {
47
+ //TODO: disable in production code
48
+ System.out.println("DEBUG MODE");
49
+ #{basicQuery}
50
+ }
51
+
52
+ END
53
+
54
+ end
55
+
56
+
57
+ m.java_annotation_add(%{@SuppressWarnings("unchecked")})
58
+
59
+ # because A<-B is not Set<A> <- Set<B>
60
+ # we need to have an extra parameter
61
+ # so method overloading is OK.
62
+ # (this is not necessary when A is return)
63
+
64
+ if context[:db_useExtraTypeParameterForFindAll]
65
+ t=m.umlx_createAndAddParameter(m.rdf_uri+"_class","nullCast")
66
+ t.uml_type=self
67
+ end
68
+
69
+ return m
70
+ end
71
+ def jpa_addFindByPrimaryKey!(eao)
72
+ m=eao.umlx_createAndAddOperation(rdf_uri+"_finderop","find")
73
+ m.uml_isStatic=RDF_TRUE
74
+ #m.uml_class=self
75
+ m.uml_visibility=Cuml_VisibilityKind::Public
76
+ #m.uml_isStatic=RDF_TRUE
77
+
78
+ #em=m.umlx_createAndAddParameter(m.rdf_uri+"_entityManager","entityManager")
79
+ #em.uml_type=umlx_getOrCreateClass(JPA::EntityManager)
80
+ #em.uml_direction=Cuml_ParameterDirectionKind::In
81
+ #em.uml_upperValue=umlx_literal(1)
82
+ #em.uml_lowerValue=umlx_literal(1)
83
+
84
+ ip=m.umlx_createAndAddParameter(m.rdf_uri+"_id_param","primaryKey")
85
+ ip.uml_direction=Cuml_ParameterDirectionKind::In
86
+ ip.uml_upperValue=umlx_literal(1)
87
+ ip.uml_lowerValue=umlx_literal(1)
88
+ ip.uml_type=umlx_dataType_long
89
+ #ip.uml_isOrdered=RDF_FALSE
90
+
91
+ rp=m.umlx_createAndAddParameter(m.rdf_uri+"_ret_param","return")
92
+ rp.uml_direction=Cuml_ParameterDirectionKind::Return
93
+ rp.uml_upperValue=umlx_literal(1)
94
+ rp.uml_lowerValue=umlx_literal(0)
95
+ rp.uml_type=self
96
+ #rp.uml_isOrdered=RDF_FALSE
97
+
98
+ m.java_code="return (#{self.java_qualifiedName})getEntityManager().find( #{self.java_qualifiedName}.class, #{ip.uml_name});"
99
+
100
+ return m
101
+ end
102
+ end