ontomde-java 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,347 @@
|
|
1
|
+
|
2
|
+
module Muml_Property
|
3
|
+
#do not generate property accessors if true
|
4
|
+
rdf_safe_attr_reader_many :java_noAccessors
|
5
|
+
rdf_safe_attr_reader_many :java_isSuggester
|
6
|
+
|
7
|
+
#do not generate a suggester for this element
|
8
|
+
rdf_safe_attr_reader_many :java_noSuggester
|
9
|
+
|
10
|
+
rdf_safe_attr_reader_many :java_createAndAddSuggester
|
11
|
+
end
|
12
|
+
|
13
|
+
module Muml_Classifier
|
14
|
+
# Performs a model transformation to add
|
15
|
+
# * attribute getter
|
16
|
+
# * attribute setter
|
17
|
+
# * attribute remover
|
18
|
+
# * attribute appender
|
19
|
+
# * attribute suggester
|
20
|
+
#
|
21
|
+
#NOTE:
|
22
|
+
#* java_transform! is skipped if context[:java_transform] is false (default=true)
|
23
|
+
def java_transform!
|
24
|
+
uml_ownedAttribute.each { |oa|
|
25
|
+
java_addAccessorsFor!(oa)
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
#Adds accessors when needed for UML properties.
|
30
|
+
#
|
31
|
+
#Reference: #java_transform!
|
32
|
+
def java_addAccessors!
|
33
|
+
java_transform!
|
34
|
+
end
|
35
|
+
|
36
|
+
# Adds accessors for uml property oa passed as parameter.
|
37
|
+
#
|
38
|
+
#Reference:
|
39
|
+
# * java_addGlobalGetter!
|
40
|
+
# * java_addGlobalSetter!
|
41
|
+
# * java_addQualifiedPutter!
|
42
|
+
# * java_addQualifiedGetter!
|
43
|
+
# * java_addAppender!
|
44
|
+
# * java_addCreateAndAppender!
|
45
|
+
# * java_addWithIndexAppender!
|
46
|
+
# * java_addAppenderQualifier!
|
47
|
+
# * java_addRemover!
|
48
|
+
# * java_addSuggester!
|
49
|
+
# * java_addSuggesterType!
|
50
|
+
# * java_addCreater!
|
51
|
+
def java_addAccessorsFor!(oa)
|
52
|
+
#log.debug { "-------java.transform:Accessor for #{self.uml_name}.#{oa.uml_name}" }
|
53
|
+
return unless context[:java_transform,true]
|
54
|
+
return if oa.java_noAccessors?
|
55
|
+
|
56
|
+
oa.uml_visibility=Cuml_VisibilityKind::Private
|
57
|
+
|
58
|
+
#prevent multiple accessor addition.
|
59
|
+
#useful when a transformation has manually launch
|
60
|
+
#java_addAccessorFor! (ex: to set a custom getter code)
|
61
|
+
return unless oa.java_getter_property_inv.empty?
|
62
|
+
java_addGlobalGetter!(oa)
|
63
|
+
java_addGlobalSetter!(oa)
|
64
|
+
java_addQualifiedPutter!(oa)
|
65
|
+
java_addQualifiedGetter!(oa)
|
66
|
+
java_addAppender!(oa)
|
67
|
+
java_addCreateAndAppender!(oa)
|
68
|
+
java_addWithIndexAppender!(oa)
|
69
|
+
java_addAppenderQualifier!(oa)
|
70
|
+
java_addRemover!(oa)
|
71
|
+
java_addSuggester!(oa)
|
72
|
+
java_addSuggesterType!(oa)
|
73
|
+
java_addCreater!(oa)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
module Muml_Classifier
|
79
|
+
|
80
|
+
# Helper method for creating an accessor method related to a property.
|
81
|
+
def java_createAndAddMethodFromProperty(oa,mName,withQualifier,uri_suffix="")
|
82
|
+
m=umlx_createAndAddOperation(oa.rdf_uri+"_#{mName}"+uri_suffix)
|
83
|
+
m.uml_name="#{mName}#{oa.java_NameBean}"
|
84
|
+
m.uml_class=self
|
85
|
+
m.uml_visibility=Cuml_VisibilityKind::Public
|
86
|
+
m.uml_isStatic=oa.uml_isStatic
|
87
|
+
m.java_use_Arrays=oa.java_use_Arrays
|
88
|
+
|
89
|
+
if withQualifier
|
90
|
+
oa.uml_qualifier.each { |qual|
|
91
|
+
ip_qual=m.umlx_createAndAddParameter(m.rdf_uri+qual.rdf_uri)
|
92
|
+
ip_qual.java_use_Arrays=oa.java_use_Arrays
|
93
|
+
qual.umlx_copyToAttributeProperty(ip_qual)
|
94
|
+
ip_qual.uml_name=qual.uml_name
|
95
|
+
ip_qual.uml_direction=Cuml_ParameterDirectionKind::In
|
96
|
+
}
|
97
|
+
oe=oa.umlx_otherEnd
|
98
|
+
if((!oe.nil?) && oe.umlx_isNavigable?)
|
99
|
+
oe.uml_qualifier.each { |qual|
|
100
|
+
ip_qual=m.umlx_createAndAddParameter(m.rdf_uri+qual.rdf_uri)
|
101
|
+
ip_qual.java_use_Arrays=oa.java_use_Arrays
|
102
|
+
qual.umlx_copyToAttributeProperty(ip_qual)
|
103
|
+
ip_qual.uml_name=qual.uml_name
|
104
|
+
ip_qual.uml_direction=Cuml_ParameterDirectionKind::In
|
105
|
+
}
|
106
|
+
end
|
107
|
+
end
|
108
|
+
return m
|
109
|
+
end
|
110
|
+
|
111
|
+
# returns a string containing the name of getter parameter relative to a uml parameter.
|
112
|
+
def getterParameterName(oa)
|
113
|
+
return "i#{oa.java_NameProperty}"
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
# Adds a putter for parameter oa using a model transformation. (manages addition to a hastable):
|
118
|
+
#
|
119
|
+
#NOTE:
|
120
|
+
# * This code is generated when a *qualifier* is defined in model.
|
121
|
+
# * Languages do not not handled multiple key Hastable.
|
122
|
+
# * A new operation is puttered to the UML model. The operation then generated using standard operation generator.
|
123
|
+
# * operation is only generated for multi-valued property
|
124
|
+
#
|
125
|
+
#WARNING:
|
126
|
+
# * bi-directional cannot be handled with qualifier because association key is not known.
|
127
|
+
# * a TODO note is added in the code in case model is bi-directional so developper knows something has to be done.
|
128
|
+
#
|
129
|
+
#EXAMPLE 1: (uml_upperValue==1)
|
130
|
+
# Class3 putRoleClass3(String key) {
|
131
|
+
# ...
|
132
|
+
# }
|
133
|
+
#
|
134
|
+
#EXAMPLE 2 (uml_upperValue==*):
|
135
|
+
# Set<Class3> putRoleClass3(String key) {
|
136
|
+
# ...
|
137
|
+
# }
|
138
|
+
def java_addQualifiedPutter!(oa)
|
139
|
+
return unless context[:java_addQualifiedPutter,true]
|
140
|
+
return if oa.uml_qualifier.empty?
|
141
|
+
return unless !oa.uml_isDerived?
|
142
|
+
|
143
|
+
putter=java_createAndAddMethodFromProperty(oa,"put",true,'_qual')
|
144
|
+
ip=putter.umlx_createAndAddParameter(putter.rdf_uri+"_in")
|
145
|
+
ip.java_use_Arrays=oa.java_use_Arrays
|
146
|
+
oa.umlx_copyToAttributeProperty(ip)
|
147
|
+
ip.uml_name=getterParameterName(oa)
|
148
|
+
ip.uml_direction=Cuml_ParameterDirectionKind::In
|
149
|
+
oe=oa.umlx_otherEnd
|
150
|
+
putter.java_code= mtk_stss { java_writeQualifiedPutterBody(oa) }
|
151
|
+
return putter
|
152
|
+
end
|
153
|
+
|
154
|
+
# Adds a suggester for parameter oa using a model transformation.
|
155
|
+
#
|
156
|
+
#NOTE:
|
157
|
+
# * A new operation is added to the UML model. The operation then generated using standard operation generator.
|
158
|
+
# * A suggester returns a set of possible value for the parameter.
|
159
|
+
# * Suggester is not generated for datatypes (string, int, ...)
|
160
|
+
# * A default suggester is generated for enum that return every enum values
|
161
|
+
# * A default non functional suggester is generated for objects.
|
162
|
+
def java_addSuggester!(oa)
|
163
|
+
return if oa.java_isSuggester?
|
164
|
+
return if oa.java_noSuggester?
|
165
|
+
return if oa.uml_isReadOnly?
|
166
|
+
#log.debug { "add suggester (#{oa}) self=#{self}" }
|
167
|
+
return unless context[:java_addSuggester,true]
|
168
|
+
return if oa.uml_type_one.kind_of?(Muml_DataType) && !oa.uml_type_one.kind_of?(Muml_Enumeration)
|
169
|
+
|
170
|
+
#sug=umlx_createAndAddProperty("#{oa.rdf_uri}_sugP","#{oa.uml_name}Sug2")
|
171
|
+
#sug2.uml_type=oa.uml_type
|
172
|
+
#sug2.uml_upperValue=umlx_literal(-1)
|
173
|
+
#sug2.uml_lowerValue=umlx_literal(0)
|
174
|
+
#sug2.uml_isOrdered=RDF_TRUE
|
175
|
+
#sug2.uml_isDerived=RDF_TRUE
|
176
|
+
#sug2.java_isSuggester=RDF_TRUE
|
177
|
+
|
178
|
+
|
179
|
+
sug=java_createAndAddMethodFromProperty(oa,"sug",false)
|
180
|
+
#suggester is a defined as a bean property so it can be used with tools such as struts.
|
181
|
+
sug.uml_name="get#{oa.java_NameBean}Sug"
|
182
|
+
#java_createAndAddMethodParameterFromProperty(oa,true)
|
183
|
+
|
184
|
+
rp=sug.umlx_createAndAddParameter(sug.rdf_uri+"_p1")
|
185
|
+
#rp.java_use_Arrays=oa.java_use_Arrays
|
186
|
+
oa.umlx_copyToAttributeProperty(rp)
|
187
|
+
rp.uml_name="return"
|
188
|
+
rp.uml_direction=Cuml_ParameterDirectionKind::Return
|
189
|
+
rp.uml_upperValue=umlx_literal(-1)
|
190
|
+
rp.uml_lowerValue=umlx_literal(0)
|
191
|
+
rp.uml_isOrdered=RDF_TRUE
|
192
|
+
|
193
|
+
if(oa.uml_type_one.kind_of?(Muml_Enumeration))
|
194
|
+
sug.java_code=mtk_stss{ java_writeSuggesterBodyEnum(oa) }
|
195
|
+
else
|
196
|
+
sug.java_code=mtk_stss{ java_writeSuggesterBody(oa) }
|
197
|
+
end
|
198
|
+
return sug
|
199
|
+
end
|
200
|
+
|
201
|
+
# adds a suggester for creator.
|
202
|
+
# Returns an enum of possible types.
|
203
|
+
#
|
204
|
+
#Reference:
|
205
|
+
# * #java_writeSuggesterTypeBodyEnum
|
206
|
+
# * #java_createAndAddMethodFromProperty
|
207
|
+
# * #umlx_createAndAddParameter
|
208
|
+
def java_addSuggesterType!(oa)
|
209
|
+
#log.debug { "add suggester (#{oa}) self=#{self}" }
|
210
|
+
return if oa.uml_isReadOnly?
|
211
|
+
return unless context[:withEnumAssignable]
|
212
|
+
return unless context[:java_addSuggester,true]
|
213
|
+
return if oa.uml_type_one.kind_of?(Muml_DataType) && !oa.uml_type_one.kind_of?(Muml_Enumeration)
|
214
|
+
return unless oa.umlx_isComposite?
|
215
|
+
sug=java_createAndAddMethodFromProperty(oa,"createAndAddSug",false)
|
216
|
+
#suggester is a defined as a bean property so it can be used with tools such as struts.
|
217
|
+
sug.uml_name="getCreateAndAdd#{oa.java_NameBean}Sug"
|
218
|
+
rp=sug.umlx_createAndAddParameter(sug.rdf_uri+"_p1")
|
219
|
+
#rp.java_use_Arrays=oa.java_use_Arrays
|
220
|
+
oa.umlx_copyToAttributeProperty(rp)
|
221
|
+
rp.uml_type=oa.uml_type_one.java_enumAssignableDataType
|
222
|
+
rp.uml_name="return"
|
223
|
+
rp.uml_direction=Cuml_ParameterDirectionKind::Return
|
224
|
+
rp.uml_upperValue=umlx_literal(-1)
|
225
|
+
rp.uml_lowerValue=umlx_literal(0)
|
226
|
+
rp.uml_isOrdered=RDF_TRUE
|
227
|
+
|
228
|
+
isCreateAndAdd=true
|
229
|
+
sug.java_code=mtk_stss{ java_writeSuggesterTypeBodyEnum(oa,isCreateAndAdd) }
|
230
|
+
oa.java_createAndAddSuggester=sug
|
231
|
+
return sug
|
232
|
+
end
|
233
|
+
|
234
|
+
# Adds a getter for parameter oa using a model transformation.
|
235
|
+
#
|
236
|
+
#NOTE:
|
237
|
+
# * A new operation is added to the UML model. The operation then generated using standard operation generator.
|
238
|
+
# * If property is part of a *bidirectional* association, code is generated to update automaticaly the other side of the association.
|
239
|
+
# * If property is multivalued, the operation returns a set.
|
240
|
+
def java_addGlobalGetter!(oa)
|
241
|
+
return unless context[:java_addGlobalGetter,true]
|
242
|
+
#return if oa.uml_isDerived?
|
243
|
+
#return unless oa.uml_isReadOnly?
|
244
|
+
return unless oa.java_AttributeGlobalGetter.empty?
|
245
|
+
get=java_createAndAddMethodFromProperty(oa,"get",false)
|
246
|
+
get.java_getter_property=oa
|
247
|
+
oa.java_AttributeGlobalGetter=get
|
248
|
+
|
249
|
+
rp=get.umlx_createAndAddParameter(get.rdf_uri+"_p1")
|
250
|
+
rp.java_use_Arrays=oa.java_use_Arrays
|
251
|
+
oa.umlx_copyToAttributeProperty(rp)
|
252
|
+
rp.uml_name="return"
|
253
|
+
rp.uml_direction=Cuml_ParameterDirectionKind::Return
|
254
|
+
rp.uml_qualifier=oa.uml_qualifier
|
255
|
+
get.java_code=mtk_stss {java_writeGlobalGetterBody(oa) }
|
256
|
+
return get
|
257
|
+
end
|
258
|
+
|
259
|
+
# Adds a setter for parameter oa using a model transformation.
|
260
|
+
#
|
261
|
+
#NOTE:
|
262
|
+
# * A new operation is added to the UML model. The operation then generated using standard operation generator.
|
263
|
+
# * If property is part of a *bidirectional* association, code is generated to update automaticaly the other side of the association.
|
264
|
+
# * If property is multivalued, the operation takes a set as an argument. For single value access use appender and remover.
|
265
|
+
#
|
266
|
+
#Reference:
|
267
|
+
# * #java_writeGlobalSetterBody
|
268
|
+
def java_addGlobalSetter!(oa)
|
269
|
+
return unless context[:java_addGlobalSetter,true]
|
270
|
+
return unless oa.java_AttributeGlobalSetter.empty?
|
271
|
+
# a setter is generated for derived attribute as it may be implemented.
|
272
|
+
#return unless !oa.uml_isDerived?
|
273
|
+
set=java_createAndAddMethodFromProperty(oa,"set",false)
|
274
|
+
set.java_setter_property=oa
|
275
|
+
oa.java_AttributeGlobalSetter=set
|
276
|
+
|
277
|
+
ip=set.umlx_createAndAddParameter(set.rdf_uri+"_in")
|
278
|
+
ip.java_use_Arrays=oa.java_use_Arrays
|
279
|
+
oa.umlx_copyToAttributeProperty(ip)
|
280
|
+
ip.uml_name=getterParameterName(oa)
|
281
|
+
ip.uml_direction=Cuml_ParameterDirectionKind::In
|
282
|
+
ip.uml_qualifier=oa.uml_qualifier
|
283
|
+
oe=oa.umlx_otherEnd
|
284
|
+
set.java_code=mtk_stss{java_writeGlobalSetterBody(oa)}
|
285
|
+
return set
|
286
|
+
end
|
287
|
+
|
288
|
+
# adds a qualified getter for uml property oa.
|
289
|
+
#
|
290
|
+
#Reference:
|
291
|
+
# * #java_writeQualifiedGetterBody
|
292
|
+
def java_addQualifiedGetter!(oa)
|
293
|
+
return unless context[:java_addQualifiedGetter,true]
|
294
|
+
return if oa.uml_qualifier.empty?
|
295
|
+
return unless !oa.uml_isDerived?
|
296
|
+
|
297
|
+
getter=java_createAndAddMethodFromProperty(oa,"get",true,'_qual')
|
298
|
+
|
299
|
+
rp=getter.umlx_createAndAddParameter(getter.rdf_uri+"_p1")
|
300
|
+
rp.java_use_Arrays=oa.java_use_Arrays
|
301
|
+
oa.umlx_copyToAttributeProperty(rp)
|
302
|
+
rp.uml_name="return"
|
303
|
+
rp.uml_direction=Cuml_ParameterDirectionKind::Return
|
304
|
+
|
305
|
+
getter.java_code=mtk_stss{java_writeQualifiedGetterBody(oa)}
|
306
|
+
return getter
|
307
|
+
end
|
308
|
+
|
309
|
+
# adds a indexed appender method for uml property oa.
|
310
|
+
#
|
311
|
+
#Example:
|
312
|
+
# * void addYourProperty( keyType key, valueObject)
|
313
|
+
#
|
314
|
+
#Reference:
|
315
|
+
# * #java_addWithIndexAppenderBody
|
316
|
+
def java_addWithIndexAppender!(oa)
|
317
|
+
return unless context[:java_addAppender,true]
|
318
|
+
return if oa.umlx_upperValueIsOne?
|
319
|
+
#return unless oa.uml_qualifier.empty?
|
320
|
+
return unless oa.uml_isOrdered?
|
321
|
+
return if oa.java_isSuggester?
|
322
|
+
return if oa.uml_isReadOnly?
|
323
|
+
#return if oa.umlx_isComposite?
|
324
|
+
add=java_createAndAddMethodFromProperty(oa,"add",true,"wi")
|
325
|
+
|
326
|
+
ip2=Cuml_Parameter.new(rdf_Repository,add.rdf_uri+"_in")
|
327
|
+
ip2.uml_name="_index"
|
328
|
+
ip2.uml_direction=Cuml_ParameterDirectionKind::In
|
329
|
+
ip2.uml_upperValue=umlx_literal(1);
|
330
|
+
ip2.uml_lowerValue=umlx_literal(1);
|
331
|
+
ip2.uml_type=umlx_dataType_integer
|
332
|
+
add.uml_ownedParameter_add(ip2)
|
333
|
+
oe=oa.umlx_otherEnd
|
334
|
+
|
335
|
+
ip=Cuml_Parameter.new(rdf_Repository,add.rdf_uri+"_in")
|
336
|
+
ip.uml_name=getterParameterName(oa)
|
337
|
+
ip.uml_direction=Cuml_ParameterDirectionKind::In
|
338
|
+
ip.uml_upperValue=umlx_literal(1);
|
339
|
+
ip.uml_lowerValue=umlx_literal(1);
|
340
|
+
ip.uml_type=oa.uml_type
|
341
|
+
add.uml_ownedParameter_add(ip)
|
342
|
+
|
343
|
+
add.java_code = mtk_stss{java_addWithIndexAppenderBody(oa,oe,ip,ip2)}
|
344
|
+
return add
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
@@ -0,0 +1,88 @@
|
|
1
|
+
|
2
|
+
module Muml_Element
|
3
|
+
JAVA_ANNO_ONTOMDE_QNAME="xmda.annotationOntoMDE.OntoMDE"
|
4
|
+
end
|
5
|
+
|
6
|
+
|
7
|
+
module Mrdf_Repository
|
8
|
+
|
9
|
+
def java_addJavaAnnotationOntoMDE!
|
10
|
+
uml_Class_all.each {|c|
|
11
|
+
c.java_getJavaAnnotationOntoMDE
|
12
|
+
}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
module Muml_Classifier
|
19
|
+
|
20
|
+
def java_getJavaAnnotationOntoMDE
|
21
|
+
anno=umlx_getOrCreateClass(JAVA_ANNO_ONTOMDE_QNAME)
|
22
|
+
if(anno.java_customCode.empty?)
|
23
|
+
anno.umlx_createAndAddComment(anno.rdf_uri+"comment", %{
|
24
|
+
Annotation used to specify which code sections should be overridden or preserved by OntoMDE MDA code generator.<p/>
|
25
|
+
<p/>For example, @OntoMDE(reverse = { imports,javadoc } , uri="..." ) tells OntoMDE to preserve import and javadoc sections. Sections <b>not</b> listed in reverse list are <b>overwritten</b> by generator.
|
26
|
+
<p/>Annotation may be used on class,interface, enum inner-class, methods and attributes.
|
27
|
+
<p/>Reverse zones types are: <b>imports</b> for class imports, <b>javadoc</b>, <b>annotations</b> and <b>code</b> for function code body.
|
28
|
+
<p/>Please note that uri contains a unique key used by generator to identify the element that should never be modified.
|
29
|
+
})
|
30
|
+
anno.umlx_external=RDF_FALSE
|
31
|
+
anno.uml_appliedStereotype_add(anno.umlx_getOrCreateStereotype("JavaAnnotation"))
|
32
|
+
anno.java_customCode= <<ENDCODE
|
33
|
+
public enum ZoneCode {
|
34
|
+
/*
|
35
|
+
* This annotation is used to instruct ontoMDE code generator that none
|
36
|
+
* of the section related to this code construct must be preserve.
|
37
|
+
*/
|
38
|
+
nothing,
|
39
|
+
/*
|
40
|
+
* This annotation is used to instruct ontoMDE code generator to
|
41
|
+
* preserve the import section related to this code construct, instead
|
42
|
+
* of overwriting it.
|
43
|
+
*/
|
44
|
+
imports,
|
45
|
+
/*
|
46
|
+
* This annotation is used to instruct ontoMDE code generator to
|
47
|
+
* preserve the javadoc section related to this code construct, instead
|
48
|
+
* of overwriting it
|
49
|
+
*/
|
50
|
+
javadoc,
|
51
|
+
/*
|
52
|
+
* This annotation is used to instruct ontoMDE code generator to
|
53
|
+
* preserve the annotation section related to this code construct,
|
54
|
+
* instead of overwriting it
|
55
|
+
*/
|
56
|
+
annotations,
|
57
|
+
/*
|
58
|
+
* This annotation is used to instruct ontoMDE code generator to
|
59
|
+
* preserve the annotation section related to all the parameter of
|
60
|
+
* this code construct, instead of overwriting it.
|
61
|
+
*/
|
62
|
+
anno_param,
|
63
|
+
/*
|
64
|
+
* This annotation is used to instruct ontoMDE code generator to
|
65
|
+
* preserve the code body section related to this code construct,
|
66
|
+
* instead of overwriting it
|
67
|
+
*/
|
68
|
+
code
|
69
|
+
}
|
70
|
+
|
71
|
+
/*
|
72
|
+
* List of code section type that ontoMDE code will preserve on next
|
73
|
+
* generation. If empty, no element will be preserved. In other word, if
|
74
|
+
* empty, every element will be overwritten.
|
75
|
+
*/
|
76
|
+
ZoneCode[] reverse();
|
77
|
+
|
78
|
+
/*
|
79
|
+
* URI used to identify uniquely model element related to this java
|
80
|
+
* construct.
|
81
|
+
*/
|
82
|
+
String uri();
|
83
|
+
ENDCODE
|
84
|
+
|
85
|
+
end
|
86
|
+
return anno;
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
module Muml_Class
|
3
|
+
def apaCom_addLogger!
|
4
|
+
log=umlx_createAndAddProperty(rdf_uri+"log","log");
|
5
|
+
log.java_noAccessors=RDF_TRUE
|
6
|
+
log.uml_isStatic=RDF_TRUE
|
7
|
+
#log.jpa_transient=RDF_TRUE
|
8
|
+
log.db_isTransient=RDF_TRUE
|
9
|
+
log.java_isTransient=RDF_TRUE
|
10
|
+
log.uml_type=umlx_getOrCreateClass("org.apache.commons.logging.Log");
|
11
|
+
log.uml_type_one.db_isTransient=RDF_TRUE
|
12
|
+
|
13
|
+
#log.java_code="org.apache.commons.logging.LogFactory.getFactory().getInstance(this.getClass().getName())"
|
14
|
+
log.java_code=%{org.apache.commons.logging.LogFactory.getFactory().getInstance("#{java_qualifiedName}")}
|
15
|
+
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
module Muml_Element
|
21
|
+
def java_warn(msg)
|
22
|
+
return "if(log.isWarnEnabled()){log.warn(#{msg});}"
|
23
|
+
end
|
24
|
+
def java_debug(msg)
|
25
|
+
return "if(log.isDebugEnabled()){log.debug(#{msg});}"
|
26
|
+
end
|
27
|
+
def java_error(msg)
|
28
|
+
return "if(log.isErrorEnabled()){log.error(#{msg});}"
|
29
|
+
end
|
30
|
+
def java_info(msg)
|
31
|
+
return "if(log.isInfoEnabled()){log.info(#{msg});}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|