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.
- data/History.txt +10 -0
- data/Manifest.txt +156 -0
- data/README.txt +98 -0
- data/Rakefile +21 -0
- data/bin/ontomde-java +5 -0
- data/generateRdocFile.sh +16 -0
- data/lib/ontomde-java.rb +45 -0
- data/lib/ontomde-java/crank.rb +13 -0
- data/lib/ontomde-java/crank/context.rb +384 -0
- data/lib/ontomde-java/crank/crankJpa.rb +103 -0
- data/lib/ontomde-java/crank/equals.rb +83 -0
- data/lib/ontomde-java/crank/facelets.rb +243 -0
- data/lib/ontomde-java/crank/facesconfig.rb +113 -0
- data/lib/ontomde-java/crank/helper.rb +46 -0
- data/lib/ontomde-java/crank/main.rb +51 -0
- data/lib/ontomde-java/crank/menu.rb +39 -0
- data/lib/ontomde-java/crank/menu2.rb +78 -0
- data/lib/ontomde-java/crank/validation.rb +34 -0
- data/lib/ontomde-java/ejb2.rb +3 -0
- data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
- data/lib/ontomde-java/flex.rb +7 -0
- data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
- data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
- data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
- data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
- data/lib/ontomde-java/flex/fileTypes.rb +19 -0
- data/lib/ontomde-java/flex/main.rb +347 -0
- data/lib/ontomde-java/frontend/command.rb +324 -0
- data/lib/ontomde-java/frontend/command.rdoc +583 -0
- data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
- data/lib/ontomde-java/frontend/options.rb +555 -0
- data/lib/ontomde-java/frontend/steps.rb +287 -0
- data/lib/ontomde-java/java/accessorCode.rb +528 -0
- data/lib/ontomde-java/java/accessorSignature.rb +347 -0
- data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
- data/lib/ontomde-java/java/apache.rb +34 -0
- data/lib/ontomde-java/java/build.rb +80 -0
- data/lib/ontomde-java/java/collectionMapping.rb +112 -0
- data/lib/ontomde-java/java/component.rb +446 -0
- data/lib/ontomde-java/java/contextualize.rb +43 -0
- data/lib/ontomde-java/java/enumAssignable.rb +75 -0
- data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
- data/lib/ontomde-java/java/equals.rb +91 -0
- data/lib/ontomde-java/java/groovy.rb +95 -0
- data/lib/ontomde-java/java/java.rb +1329 -0
- data/lib/ontomde-java/java/java.rdoc +78 -0
- data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
- data/lib/ontomde-java/java/javaHelper.rb +25 -0
- data/lib/ontomde-java/java/java_todo.rdoc +3 -0
- data/lib/ontomde-java/java/javadoc.rb +254 -0
- data/lib/ontomde-java/java/meta.rb +28 -0
- data/lib/ontomde-java/java/operationAsClass.rb +144 -0
- data/lib/ontomde-java/java/security.rb +260 -0
- data/lib/ontomde-java/java/stateMachine.rb +415 -0
- data/lib/ontomde-java/java/tenant.rb +65 -0
- data/lib/ontomde-java/java/xsd.rb +1363 -0
- data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
- data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
- data/lib/ontomde-java/jpa.rb +17 -0
- data/lib/ontomde-java/jpa/configuration.rb +176 -0
- data/lib/ontomde-java/jpa/finder.rb +102 -0
- data/lib/ontomde-java/jpa/jpa.rb +531 -0
- data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
- data/lib/ontomde-java/jpa/locking.rb +18 -0
- data/lib/ontomde-java/jpa/mapping.rb +314 -0
- data/lib/ontomde-java/jpa/redefined.rb +77 -0
- data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
- data/lib/ontomde-java/jpdl.rb +9 -0
- data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
- data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
- data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
- data/lib/ontomde-java/jpdl/constant.rb +5 -0
- data/lib/ontomde-java/jpdl/graphic.rb +52 -0
- data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
- data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
- data/lib/ontomde-java/jpdl/main.rb +348 -0
- data/lib/ontomde-java/jpdl/main.rdoc +2 -0
- data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
- data/lib/ontomde-java/kbjava.rb +6 -0
- data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
- data/lib/ontomde-java/struts.rb +27 -0
- data/lib/ontomde-java/struts/MessageResources.rb +359 -0
- data/lib/ontomde-java/struts/action.rb +883 -0
- data/lib/ontomde-java/struts/blob.rb +11 -0
- data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
- data/lib/ontomde-java/struts/footer.rb +128 -0
- data/lib/ontomde-java/struts/form.rb +450 -0
- data/lib/ontomde-java/struts/header.rb +37 -0
- data/lib/ontomde-java/struts/header_link.rb +39 -0
- data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
- data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
- data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
- data/lib/ontomde-java/struts/jsp_index.rb +136 -0
- data/lib/ontomde-java/struts/localeAction.rb +641 -0
- data/lib/ontomde-java/struts/main.rb +41 -0
- data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
- data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
- data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
- data/lib/ontomde-java/struts/reloadAction.rb +33 -0
- data/lib/ontomde-java/struts/spring.rb +89 -0
- data/lib/ontomde-java/struts/struts-config.rb +232 -0
- data/lib/ontomde-java/struts/validation.rb +116 -0
- data/lib/ontomde-java/struts/validator.rb +341 -0
- data/lib/ontomde-java/struts/webXml.rb +195 -0
- data/lib/ontomde-java/struts/xmlForm.rb +308 -0
- data/lib/ontomde-java/version.rb +5 -0
- data/profiling.xls +0 -0
- data/test/.classpath +14 -0
- data/test/.project +17 -0
- data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
- data/test/Rakefile +71 -0
- data/test/build.xml +34 -0
- data/test/classpath.rb +15 -0
- data/test/lib/junit-4.1.jar +0 -0
- data/test/load1.rb +3 -0
- data/test/load2.rb +3 -0
- data/test/log4j.properties +46 -0
- data/test/model/.project +11 -0
- data/test/model/BigProject.mdzip +0 -0
- data/test/model/BigProject.mdzip.nt +102866 -0
- data/test/model/ClassDiagram.EntArch.gif +0 -0
- data/test/model/ClassDiagram.emx.gif +0 -0
- data/test/model/ClassDiagram.mdzip.gif +0 -0
- data/test/model/model_ea71.bis.ea.xmi +149 -0
- data/test/model/model_ea71.ea.xmi +4470 -0
- data/test/model/model_ea71.eap +0 -0
- data/test/model/model_ea71_README.txt +8 -0
- data/test/model/multipleInheritance.emx +466 -0
- data/test/model/multipleInheritance.emx.nt +2428 -0
- data/test/model/simple1-530.ofp +0 -0
- data/test/model/simple1-includedAsReference.emx +169 -0
- data/test/model/simple1.emx +3729 -0
- data/test/model/simple1.emx.fragments.nt +81 -0
- data/test/model/simple1.emx.nt +5760 -0
- data/test/model/simple1.mdzip +0 -0
- data/test/model/simple1.mdzip.nt +11500 -0
- data/test/model/simple1.oe530.nt +1986 -0
- data/test/model/simple1.oe600.nt +1627 -0
- data/test/src/RuntimeTest.java +656 -0
- data/test/src/testsLevel1.java +174 -0
- data/test/src/testsLevel2.java +29 -0
- data/test/src/testsLevel3.java +40 -0
- data/test/test-ea7.sh +15 -0
- data/test/test-magicDraw.sh +10 -0
- data/test/test-mi.sh +9 -0
- data/test/test-oe530.sh +10 -0
- data/test/test-oe600.sh +11 -0
- data/test/test-rsm.sh +11 -0
- data/test/test_export_ea71.rb +5 -0
- data/test/test_export_oe530.rb +4 -0
- data/test/test_export_oe600.rb +4 -0
- data/test/test_export_rsm60.rb +4 -0
- data/test/trace +419 -0
- data/test/uml_test.rb +1434 -0
- data/test/uml_test.xls +0 -0
- data/test/unit_test.rb +6 -0
- 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
|