ontomde-java 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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