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,20 @@
1
+ # Features:
2
+ # reflexive association
3
+ # multiple associations between 2 classes
4
+ # Set of objects
5
+ # Ordered set
6
+ # multi-valued set (non unique)
7
+ # single inheritance
8
+ # automatic generation of int primary key
9
+ # automatic generation of a finder by primary key
10
+ # automatic generation of a finder findAll
11
+ # automatic generation of EntityManger
12
+ # automatic generation of persistence.xml
13
+ #
14
+ # Not currently Supported
15
+ # JPA makes it difficult to support multiple inheritance.
16
+ # A workaround is planned to overcome this limitation.
17
+ # UML Qualifiers are not supported
18
+ # JPA does not support multiple-valued attributes
19
+ # Proper care should be applied to avoid clashing variable names of different types in same type hierarch. (
20
+ # Example: X and Y classes derives from Z. X has attribute c of type int and Y has attribute c of type String.
@@ -0,0 +1,18 @@
1
+
2
+ module Muml_Classifier
3
+ def jpa_addOptimisticLockingAnnotation!(p)
4
+ p.java_annotation_add("@Version")
5
+ p.umlx_owner_one.java_import_add("javax.persistence.Version")
6
+ p.java_annotation_add(%{@SuppressWarnings("unused")})
7
+ end
8
+
9
+ DB_OBJECT_VERSION_FIELD="objectVersion"
10
+ def jpa_addOptimisticLockingVar!
11
+ return unless jpa_hasPersistenceId?
12
+ p=umlx_createAndAddProperty(rdf_uri+"_auto_version",DB_OBJECT_VERSION_FIELD)
13
+ jpa_addOptimisticLockingAnnotation!(p)
14
+ p.uml_type=umlx_dataType_long
15
+ p.uml_visibility=::Cuml_VisibilityKind::Private
16
+ #java_addAccessorsFor!(p)
17
+ end
18
+ end
@@ -0,0 +1,314 @@
1
+ #
2
+ #
3
+
4
+ module Muml_Operation
5
+ #true puts annotation on getter
6
+ #false puts annotation on attribute
7
+ JPA_ANNOTATE_GETTER=false
8
+
9
+
10
+ def jpa_addPersistence!
11
+ # java_AttributeGlobalSetter
12
+ # java_getter_property
13
+ if java_getter_property.empty?
14
+ return if(umlx_hasStereotype?("Create"))
15
+ #java_annotation_add("@Transient")
16
+ return
17
+ end
18
+
19
+ p=java_getter_property_one
20
+ return unless p.jpa_isPersistent?
21
+
22
+ if p.uml_type_one.kind_of?(Cuml_Class) && !p.uml_type_one.jpa_isPersistent?
23
+ p.java_annotation_add("/* not persistent */")
24
+ return
25
+ end
26
+
27
+ if(JPA_ANNOTATE_GETTER)
28
+ p.jpa_addPersistenceTo!(self)
29
+ # HACK
30
+ p.jpa_addPersistenceTo!(p) #TODO: remove
31
+ #p.java_annotation_add("@Transient")
32
+ else
33
+ p.jpa_addPersistenceTo!(p)
34
+ end
35
+ end
36
+ end
37
+
38
+ module Muml_Property
39
+ def jpa_isPersistent?
40
+ return true
41
+ end
42
+ def jpa_addRelationCascadeType(isIncludeType=true)
43
+ umlx_owner_one.java_import_add("javax.persistence.CascadeType")
44
+ if (isIncludeType)
45
+ return DEFAULT_CASCADE_I
46
+ else
47
+ return DEFAULT_CASCADE
48
+ end
49
+ end
50
+ def jpa_addPersistenceUnidirOneToOne!(ah)
51
+ #TODO: unicity constraint
52
+ ah.java_annotation_add("@OneToOne(cascade=CascadeType.ALL)")
53
+ ah.umlx_owner_one.java_import_add("javax.persistence.OneToOne")
54
+ ah.umlx_owner_one.java_import_add("javax.persistence.CascadeType")
55
+ #TODO: affiner cascadeType pour les delete
56
+ end
57
+
58
+ def jpa_addPersistenceUnidirOneToMany!(ah)
59
+ ah.java_annotation_add(%{@OneToMany(fetch=FetchType.EAGER #{jpa_addRelationCascadeType(true)})})
60
+ ah.umlx_owner_one.java_import_add("javax.persistence.OneToMany")
61
+ ah.umlx_owner_one.java_import_add("javax.persistence.FetchType")
62
+ jpa_addJoinTable(ah)
63
+ end
64
+ DEFAULT_CASCADE="(cascade=CascadeType.ALL)"
65
+ DEFAULT_CASCADE_I=",cascade=CascadeType.ALL"
66
+ def jpa_addPersistenceUnidirManyToOne!(ah)
67
+ ah.java_annotation_add("@ManyToOne #{jpa_addRelationCascadeType(false)} ")
68
+ ah.umlx_owner_one.java_import_add("javax.persistence.ManyToOne")
69
+ jpa_addJoinColumn!(ah)
70
+ end
71
+
72
+ def jpa_addPersistenceUnidirManyToMany!(ah)
73
+ ah.java_annotation_add("@ManyToMany #{jpa_addRelationCascadeType(false)}")
74
+ ah.umlx_owner_one.java_import_add("javax.persistence.ManyToMany")
75
+ jpa_addJoinTable(ah)
76
+ jpa_addJoinColumn!(ah)
77
+ end
78
+ def jpa_addPersistenceBidirManyToManyMaster!(ah)
79
+ ah.java_annotation_add("@ManyToMany #{jpa_addRelationCascadeType(false)}")
80
+ ah.umlx_owner_one.java_import_add("javax.persistence.ManyToMany")
81
+ jpa_addJoinColumn!(ah)
82
+ jpa_addJoinTable(ah)
83
+ end
84
+ def jpa_addPersistenceBidirManyToManySlave!(ah)
85
+ ah.java_annotation_add("@ManyToMany #{jpa_addRelationCascadeType(false)}")
86
+ ah.umlx_owner_one.java_import_add("javax.persistence.ManyToMany")
87
+ jpa_addJoinColumn!(ah)
88
+ #Do not add join column !
89
+ #(or you will get 2 join tables)
90
+ #jpa_addJoinTable(ah)
91
+ end
92
+
93
+ def jpa_addPersistenceBidirOneToOneMaster!(ah)
94
+ ah.java_annotation_add(%{@OneToOne #{jpa_addRelationCascadeType(false)}})
95
+ ah.umlx_owner_one.java_import_add("javax.persistence.OneToOne")
96
+ jpa_addJoinColumn!(ah)
97
+ end
98
+ def jpa_addPersistenceBidirOneToOneSlave!(ah)
99
+ ah.java_annotation_add(%{@OneToOne(mappedBy="#{umlx_otherEnd.java_NameProperty}" #{jpa_addRelationCascadeType})})
100
+ ah.umlx_owner_one.java_import_add("javax.persistence.OneToOne")
101
+ end
102
+
103
+ def jpa_addPersistenceBidirOneToManyMaster!(ah)
104
+ ah.java_annotation_add(%{@OneToMany (mappedBy="#{umlx_otherEnd.java_NameProperty}"#{jpa_addRelationCascadeType})})
105
+ ah.umlx_owner_one.java_import_add("javax.persistence.OneToMany")
106
+ end
107
+ def jpa_addPersistenceBidirOneToManySlave!(ah)
108
+ ah.java_annotation_add(%{@OneToMany (mappedBy="#{umlx_otherEnd.java_NameProperty}"#{jpa_addRelationCascadeType})})
109
+ ah.umlx_owner_one.java_import_add("javax.persistence.OneToMany")
110
+ #jpa_addJoinColumn!(ah)
111
+ end
112
+
113
+ def jpa_addPersistenceBidirManyToOneMaster!(ah)
114
+ #ah.java_annotation_add(%{@ManyToOne(mappedBy="#{umlx_otherEnd.java_NameProperty}")})
115
+ ah.java_annotation_add(%{@ManyToOne #{jpa_addRelationCascadeType(false)}})
116
+ ah.umlx_owner_one.java_import_add("javax.persistence.ManyToOne")
117
+ #ah.java_annotation_add(%{@JoinColumn(name="#{java_NameProperty}_fk"})
118
+ jpa_addJoinColumn!(ah)
119
+ end
120
+ def jpa_addPersistenceBidirManyToOneSlave!(ah)
121
+ #ah.java_annotation_add(%{@ManyToOne(mappedBy="#{umlx_otherEnd.java_NameProperty}")})
122
+ ah.java_annotation_add(%{@ManyToOne #{jpa_addRelationCascadeType(false)}})
123
+ ah.umlx_owner_one.java_import_add("javax.persistence.ManyToOne")
124
+ #ah.java_annotation_add(%{@JoinColumn(name="#{java_NameProperty}_fk"})
125
+ jpa_addJoinColumn!(ah)
126
+ end
127
+
128
+ # adds a java annotation to specify the name of the join table.
129
+ #
130
+ #Note:
131
+ # Explicitely naming join colums and join table is required whenever multiple associations exists between two classes and also with reflexive associations.
132
+ #
133
+ #Examples:
134
+ # Object A (rolea)-->(roleb) Object B
135
+ # Table A_roleb
136
+ # field : A_id
137
+ # field : B_id
138
+ #
139
+ # Object A (rolea)-->(roleb) Object A
140
+ # Table A_roleb
141
+ # field : A_id
142
+ # field : A_self_id
143
+ #
144
+ def jpa_addJoinTable(ah)
145
+ postfix=(uml_ownedAttribute_inv_one==uml_type_one) ? "_self" : ""
146
+ ah.java_annotation_add %{ @JoinTable(
147
+ name="#{uml_ownedAttribute_inv_one.java_Name}_#{java_NameProperty}",
148
+ joinColumns={@JoinColumn( name="#{uml_ownedAttribute_inv_one.java_Name}_id")},
149
+ inverseJoinColumns={@JoinColumn(name="#{uml_type_one.java_Name}#{postfix}_id")}
150
+ )}
151
+ ah.umlx_owner_one.java_import_add("javax.persistence.JoinTable")
152
+ ah.umlx_owner_one.java_import_add("javax.persistence.JoinColumn")
153
+ end
154
+
155
+ # adds JPA annotation for an attribute with a cardinality 0..1 or 1
156
+ def jpa_addPersistenceOneAttribute!(ah)
157
+ ml=DatatypeMapping.instance.getMapping(self.uml_type_one).maxStringLength
158
+ if ml.nil?
159
+ ah.java_annotation_add(%{@Basic})
160
+ ah.umlx_owner_one.java_import_add("javax.persistence.Basic")
161
+ else
162
+ ah.java_annotation_add(%{@Column(length=#{ml})})
163
+ ah.umlx_owner_one.java_import_add("javax.persistence.Column")
164
+ end
165
+ end
166
+
167
+ # adds JPA annotation for an attribute with a cardinality *
168
+ def jpa_addPersistenceManyAttribute!(ah)
169
+ ah.java_annotation_add(%{@Transient //TODO: standard JPA cannot handle this case. Hibernate extension @CollectionOfElements is required})
170
+ ah.umlx_owner_one.java_import_add("javax.persistence.Transient")
171
+ end
172
+
173
+ def jpa_addJoinColumn!(ah)
174
+ ah.java_annotation_add(%{@JoinColumn(name="#{java_NameProperty}_fk")})
175
+ ah.umlx_owner_one.java_import_add("javax.persistence.JoinColumn")
176
+ end
177
+
178
+ #adds property persistence annotation to annotationHolder.
179
+ #
180
+ #annotationHolder may be depending on annotation style:
181
+ #* property itself self
182
+ #* getter for the property
183
+ def jpa_addPersistenceTo!(ah)
184
+ if umlx_isAttribute?
185
+ jpa_addPersistenceToAttribute!(ah)
186
+ else
187
+ jpa_addPersistenceToAssociation!(ah)
188
+ end
189
+ end
190
+
191
+ def jpa_addPersistenceToAttribute!(ah)
192
+ jpa_addPersistenceToAttribute_TypeModificator!(ah)
193
+ if umlx_upperValueIsOne?
194
+ jpa_addPersistenceOneAttribute!(ah)
195
+ else
196
+ jpa_addPersistenceManyAttribute!(ah)
197
+ end
198
+ return
199
+ end
200
+
201
+ def jpa_addPersistenceToAttribute_TypeModificator!(ah)
202
+ tpl=DatatypeMapping.instance.getMapping(self.uml_type_one)
203
+ tpl.jpa_addTypeModificator(ah)
204
+ end
205
+
206
+ def jpa_addPersistenceToAssociation!(ah)
207
+ oe=umlx_otherEnd
208
+ binav=(!oe.nil?) && oe.umlx_isNavigable?
209
+ if binav
210
+ jpa_addPersistenceToAssociationBidir!(ah)
211
+ else
212
+ jpa_addPersistenceToAssociationUnidir!(ah)
213
+ end
214
+ end
215
+
216
+ def jpa_addPersistenceToAssociationUnidir!(ah)
217
+ toOne=umlx_upperValueIsOne?
218
+ fromOne=umlx_otherEnd.nil? ? true : umlx_otherEnd.umlx_upperValueIsOne?
219
+ if fromOne && toOne
220
+ jpa_addPersistenceUnidirOneToOne!(ah)
221
+ elsif fromOne && !toOne
222
+ jpa_addPersistenceUnidirOneToMany!(ah)
223
+ elsif !fromOne && toOne
224
+ jpa_addPersistenceUnidirManyToOne!(ah)
225
+ elsif !fromOne && !toOne
226
+ jpa_addPersistenceUnidirManyToMany!(ah)
227
+ else
228
+ raise Warning.new("Internal error")
229
+ end
230
+ end
231
+ def jpa_addPersistenceToAssociationBidir!(ah)
232
+ toOne=umlx_upperValueIsOne?
233
+ fromOne=umlx_otherEnd.nil? ? true : umlx_otherEnd.umlx_upperValueIsOne?
234
+ master=umlx_masterEnd?
235
+
236
+ if fromOne && toOne && (master)
237
+ jpa_addPersistenceBidirOneToOneMaster!(ah)
238
+ elsif fromOne && toOne && (!master)
239
+ jpa_addPersistenceBidirOneToOneSlave!(ah)
240
+ elsif fromOne && !toOne && (master)
241
+ jpa_addPersistenceBidirOneToManyMaster!(ah)
242
+ elsif fromOne && !toOne && (!master)
243
+ jpa_addPersistenceBidirOneToManySlave!(ah)
244
+ elsif !fromOne && toOne && (master)
245
+ jpa_addPersistenceBidirManyToOneMaster!(ah)
246
+ elsif !fromOne && toOne && (!master)
247
+ jpa_addPersistenceBidirManyToOneSlave!(ah)
248
+ elsif !fromOne && !toOne && (master)
249
+ jpa_addPersistenceBidirManyToManyMaster!(ah)
250
+ elsif !fromOne && !toOne && (!master)
251
+ jpa_addPersistenceBidirManyToManySlave!(ah)
252
+ else
253
+ raise Warning.new("Internal error")
254
+ end
255
+
256
+ return
257
+
258
+ # if umlx_oneToOne?
259
+ # if umlx_otherEnd.nil? || !umlx_otherEnd.umlx_isNavigable?
260
+ # jpa_addPersistenceUnidirOneToOne!(ah)
261
+ # #ah.java_annotation_add("@OneToOne")
262
+ #
263
+ # elsif umlx_masterEnd?
264
+ # ah.java_annotation_add("@OneToOne(cascade = {CascadeType.MERGE, CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.REMOVE})")
265
+ # ah.java_annotation_add("@JoinColumn(name=\"#{umlx_otherEnd.java_NameBean}_fk\")")
266
+ # elsif
267
+ # ah.java_annotation_add("@OneToOne(mappedBy=\"#{umlx_otherEnd.java_NameProperty}\")")
268
+ # end
269
+ # end
270
+ # if umlx_manyToOne?
271
+ # if umlx_unidirectionnel?
272
+ # ah.java_annotation_add("//TOFIX MANY TO ONE Unideirectionnel NOT IMPLEMENTED")
273
+ # elsif
274
+ # ah.java_annotation_add("@ManyToOne")
275
+ # ah.java_annotation_add("@JoinColumn(name=\"#{umlx_otherEnd.java_NameBean}_fk\")")
276
+ # end
277
+ # end
278
+
279
+ end
280
+ end
281
+
282
+ class DatatypeMapping
283
+ def jpa_addTypeModificator(ah)
284
+ #nop
285
+ end
286
+ end
287
+ class DatatypeMappingCalendar < DatatypeMapping
288
+ def jpa_addTypeModificator(ah)
289
+ ah.java_annotation_add("@Temporal(TemporalType.DATE)")
290
+ ah.umlx_owner_one.java_import_add("javax.persistence.Temporal")
291
+ ah.umlx_owner_one.java_import_add("javax.persistence.TemporalType")
292
+ end
293
+ end
294
+
295
+ class DatatypeMappingBLOB < DatatypeMapping
296
+ def jpa_addTypeModificator(ah)
297
+ ah.java_annotation_add("@Lob")
298
+ ah.umlx_owner_one.java_import_add("javax.persistence.Lob")
299
+ #mysql: MEDIUMBLOB LONGBLOB TINYBLOB BLOB
300
+ if ah.context[:mysql]
301
+ ah.java_annotation_add(%{@Column(columnDefinition="LONGBLOB")})
302
+ ah.umlx_owner_one.java_import_add("javax.persistence.Column")
303
+ end
304
+ #cf: http://db.apache.org/derby/docs/10.1/ref/rrefblob.html
305
+ if ah.context[:derby]
306
+ ah.java_annotation_add(%{@Column(columnDefinition="BLOB(4M)")})
307
+ ah.umlx_owner_one.java_import_add("javax.persistence.Column")
308
+ end
309
+ end
310
+ end
311
+ #class DatatypeMappingIMG < DatatypeMappingBLOB
312
+ #end
313
+
314
+
@@ -0,0 +1,77 @@
1
+ # This file includes methods redefinitions
2
+ #
3
+ module Muml_Interface
4
+ #returns implementing class dao name (if only one exists)
5
+ #def db_daoClassName
6
+ # jpa_daoClassName
7
+ #end
8
+ def jpa_daoClass
9
+ #log.debug { "Muml_Interface::jpa_daoClassName #{self}" }
10
+ found=nil
11
+ ext_isReferencedBy.each { |i|
12
+ next unless i.kind_of?(Muml_Implementation)
13
+ s=i.uml_supplier_one
14
+ next if s!=self
15
+ c=i.uml_client_one
16
+ raise Warning.new,"Too many jpa_daoClassName found for interface #{self}" unless found.nil? || found==c
17
+ found=c
18
+ }
19
+ raise Warning.new,"No jpa_daoClassName found for interface #{self}" if found.nil?
20
+ return found #.jpa_daoClassName
21
+ end
22
+ end
23
+
24
+ module Muml_Class
25
+ #def db_daoClassName
26
+ #jpa_daoClassName
27
+ #end
28
+ #def jpa_daoClassName
29
+ # return "#{java_qualifiedName}Dao"
30
+ #end
31
+
32
+ def db_getFindAllCall()
33
+ param=context[:db_useExtraTypeParameterForFindAll] ? "(#{self.java_qualifiedName})null" : ""
34
+ tenantClause=''
35
+ if context[:multiTenant]
36
+ tenantClause="#{TENANT_FIELD_NAME},"
37
+ end
38
+ return "#{java_DAOClass_one.java_qualifiedName}.findAll(#{tenantClause}#{param})"
39
+ end
40
+
41
+ #Method redefined from ontomde-java
42
+ #alias :original_java_writeSuggesterBody :java_writeSuggesterBody
43
+ def java_writeSuggesterBody(oa)
44
+ #log.debug {"adding suggester to #{self} for #{oa}"}
45
+ if oa.uml_type_one.jpa_isPersistent?
46
+ #TODO: recherche du composite commun
47
+ #TODO: transient object do not have a valid uniq id
48
+
49
+ #if oa.umlx_oneSide?
50
+ if !oa.umlx_manySide?
51
+ write( %{
52
+ java.util.List<#{oa.uml_type_one.java_qualifiedName}> ret=#{oa.uml_type_one.db_getFindAllCall};
53
+ #{oa.uml_type_one.java_qualifiedName} elt=get#{oa.java_NameBean}();
54
+ if(elt!=null && !ret.contains(elt)) {
55
+ ret.add(elt);
56
+ }
57
+ return ret;\n})
58
+ else
59
+ write( %{
60
+ java.util.List<#{oa.uml_type_one.java_qualifiedName}> ret=#{oa.uml_type_one.db_getFindAllCall};
61
+
62
+ #{oa.uml_type_one.java_qualifiedName} item=null;
63
+ java.util.Iterator<?> iter=get#{oa.java_NameBean}().iterator();
64
+ while(iter.hasNext()){
65
+ item=(#{oa.uml_type_one.java_qualifiedName}) iter.next();
66
+ if(!ret.contains(item)) {
67
+ ret.add(item);
68
+ }
69
+ }
70
+ return ret;\n})
71
+
72
+ end
73
+ else
74
+ super(oa)#original_java_writeSuggesterBody(oa)
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,54 @@
1
+
2
+
3
+ #automatically populate methods with simulated code.
4
+ #Methods will return an element or a liste of element
5
+ #of the specified type.
6
+ module Mrdf_Repository
7
+ def db_addTestImplementations!
8
+ jpa_addTestImplementations!
9
+ end
10
+ def jpa_addTestImplementations!
11
+ each { |k,m|
12
+ next unless m.kind_of?(Muml_Operation)
13
+ m.jpa_addTestImplementation!
14
+ }
15
+ end
16
+ end
17
+
18
+ module Muml_Operation
19
+ JPA_TEST_CODE_TOP=%{
20
+ //TODO: replace this test code by real implementation
21
+ //log.error("test method called");\n}
22
+ def jpa_addTestImplementation!
23
+ return unless java_code.empty?
24
+ owner=umlx_owner_one
25
+ return if owner.kind_of?(Muml_Interface)
26
+ return if owner.uml_isAbstract?
27
+ #log.debug { "adding test implementation for #{self.umlx_owner_one}.#{self}" }
28
+ fp=nil
29
+ (uml_returnResult+uml_ownedParameter).each { |p|
30
+ next unless p.uml_direction_one.isReturn?
31
+ fp=p
32
+ }
33
+ if fp.nil?
34
+ self.java_code=JPA_TEST_CODE_TOP
35
+ return
36
+ elsif fp.uml_type_one.kind_of?(Muml_DataType)
37
+ #TODO: create test code
38
+ return
39
+ elsif (!fp.uml_type_one.jpa_isPersistent?) || (fp.uml_type_one.db_isTransient?) || (fp.uml_type_one.java_ignoreMe?)
40
+ #not a persistent class
41
+ return
42
+ elsif fp.umlx_oneSide?
43
+ self.java_code=%{#{JPA_TEST_CODE_TOP}\nreturn #{fp.uml_type_one.db_getFindAllCall}.get(0);}
44
+ elsif fp.uml_isOrdered?
45
+ self.java_code=%{#{JPA_TEST_CODE_TOP}\nreturn #{fp.uml_type_one.db_getFindAllCall};}
46
+ else
47
+ self.java_code=%{
48
+ #{JPA_TEST_CODE_TOP}
49
+ #{fp.java_propertyAssociationConcreteType} ret=new #{fp.java_propertyAssociationConcreteType}();
50
+ ret.addAll(#{fp.uml_type_one.db_getFindAllCall});
51
+ return ret;}
52
+ end
53
+ end
54
+ end