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,316 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
#module Muml_Classifier
|
4
|
+
# STRUTS_APPLY_TO_PARAM="applyTo"
|
5
|
+
# STRUTS_APPLY_TO_PROP="ApplyTo"
|
6
|
+
#end
|
7
|
+
|
8
|
+
module Muml_Operation
|
9
|
+
rdf_safe_attr_reader_many :bpm_bizOperationReverse
|
10
|
+
end
|
11
|
+
|
12
|
+
module Muml_Parameter
|
13
|
+
#the method parameter
|
14
|
+
rdf_safe_attr_reader_many :bpm_sourceParameter
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
module Mrdf_Repository
|
19
|
+
def bpm_handleProcessMethods!
|
20
|
+
#return unless context[:withGenerateMethodForm]
|
21
|
+
uml_Class_all.each { |c|
|
22
|
+
next unless c.kind_of?(Muml_Class)
|
23
|
+
c.uml_ownedOperation.each {|biz|
|
24
|
+
next unless biz.kind_of?(Muml_Operation)
|
25
|
+
#next unless biz.umlx_businessMethod?
|
26
|
+
|
27
|
+
next if biz.umlx_isConstructor?
|
28
|
+
bpm_processMethods(c, biz) if biz.umlx_hasStereotype?("Process")
|
29
|
+
c.bpm_asyncMethods(biz) if biz.umlx_hasStereotype?("Async")
|
30
|
+
c.bpm_callbackMethods(biz) if biz.umlx_hasStereotype?("Callback")
|
31
|
+
}}
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
def bpm_processMethods(c, biz)
|
36
|
+
|
37
|
+
p=c.umlx_package
|
38
|
+
if p.nil?
|
39
|
+
log.error{"Model modification required !!! class #{c} is in root model element. Classes should be in a package."}
|
40
|
+
next
|
41
|
+
end
|
42
|
+
#Type de retour dans le mod�le
|
43
|
+
initialReturnParam = biz.uml_getReturnParameter
|
44
|
+
mpc=java_getClassWithQualifiedName("#{c.umlx_owner_one.java_qualifiedName}.#{biz.java_Name}")
|
45
|
+
mpc=p.umlx_createAndAddClass(biz.rdf_uri+"_proc") if mpc.nil?
|
46
|
+
mpc.umlx_businessMethod=RDF_TRUE
|
47
|
+
mpc.bpm_addAllOperationAggregateParameterClass!(biz)
|
48
|
+
code=%{ #{mpc.java_qualifiedName} proc=new #{mpc.java_qualifiedName}();}
|
49
|
+
biz.uml_ownedParameter.each { |param|
|
50
|
+
code=code+"proc.set#{param.java_NameBean}(#{param.java_Name});\n"
|
51
|
+
}
|
52
|
+
|
53
|
+
#Set the right Return Type on the Process
|
54
|
+
#If already specified in the Process definition, not overhide
|
55
|
+
#find the corresponding process
|
56
|
+
self.each { |k,p|
|
57
|
+
next if !p.kind_of?(Mbpm_process)
|
58
|
+
if "#{p.bpm_processName}" == "#{mpc.java_qualifiedName}"
|
59
|
+
# bpm_processReturnType is a string
|
60
|
+
p.bpm_processReturnType = initialReturnParam.uml_type.to_s if !initialReturnParam.nil? && p.bpm_processReturnType_one0.nil?
|
61
|
+
break
|
62
|
+
end
|
63
|
+
}
|
64
|
+
|
65
|
+
#If return set handler
|
66
|
+
code_getCallBackMethod = ""
|
67
|
+
if !initialReturnParam.nil?
|
68
|
+
c.bpm_manageAsynchronousMethods(biz)
|
69
|
+
code_getCallBackMethod = "handler"
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
#Modifiy the code of the method to manage the asynchronous
|
74
|
+
code=code+"proc.persist();proc.startAsynchronously(#{code_getCallBackMethod});\n"
|
75
|
+
biz.java_code=code
|
76
|
+
|
77
|
+
#Ajoute un champ calcule pour la visualization de la console
|
78
|
+
console=mpc.umlx_createAndAddProperty(mpc.rdf_uri+"_console","console")
|
79
|
+
console.uml_isDerived=RDF_TRUE
|
80
|
+
console.uml_type=mpc.umlx_getOrCreateDataType("URL")
|
81
|
+
mpc.java_addAccessorsFor!(console)
|
82
|
+
getter = console.java_AttributeGlobalGetter
|
83
|
+
getter[0].java_code = <<END_OF_STRING
|
84
|
+
if (this.getProcessId() != null) {
|
85
|
+
return "/ontomde-bpm-console/processimage?id=" + this.getProcessId();
|
86
|
+
} else {
|
87
|
+
return "#";
|
88
|
+
}
|
89
|
+
END_OF_STRING
|
90
|
+
|
91
|
+
|
92
|
+
# biz.uml_appliedStereotype.each {|s|
|
93
|
+
# #TODO: utiliser processImpl
|
94
|
+
# puts "add stereotype #{s} to #{mpc}::#{mpc.class}"
|
95
|
+
# mpc.uml_appliedStereotype_add(s)
|
96
|
+
# }
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
module Muml_Class
|
104
|
+
|
105
|
+
alias super_jpa_addStdImports! jpa_addStdImports!
|
106
|
+
def jpa_addStdImports!
|
107
|
+
super_jpa_addStdImports!
|
108
|
+
|
109
|
+
java_import_add("xmda.bpm.api.XmdaCallbackHandler")
|
110
|
+
java_import_add("xmda.bpm.api.client.EntityInstanceDescription")
|
111
|
+
java_import_add("xmda.bpm.api.client.EntityTaskDescription")
|
112
|
+
java_import_add("xmda.bpm.api.client.EntityTaskWithoutCallbackDescription")
|
113
|
+
java_import_add("xmda.bpm.api.jms.JmsCallbackHandler")
|
114
|
+
java_import_add(::DB::EntityGenericInterface)
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
#Ajoute une m�thode utilitaire pour r�cup�rer un handler correspondant � la m�thode
|
119
|
+
def bpm_callbackMethods(biz)
|
120
|
+
c=self
|
121
|
+
p=c.umlx_package
|
122
|
+
if p.nil?
|
123
|
+
log.error{"Model modification required !!! class #{c} is in root model element. Classes should be in a package."}
|
124
|
+
next
|
125
|
+
end
|
126
|
+
biz.java_annotation_add(%{@xmda.common.Callback})
|
127
|
+
type_callback=biz.bpm_callbackType
|
128
|
+
|
129
|
+
m=c.umlx_createAndAddOperation(biz.rdf_uri+"_handler","getOntomdeHandlerFor#{biz.uml_name}")#+self.java_NameBean)
|
130
|
+
m.uml_isStatic=RDF_TRUE
|
131
|
+
#m.uml_class=self
|
132
|
+
m.uml_visibility=Cuml_VisibilityKind::Public
|
133
|
+
#m.uml_isStatic=RDF_TRUE
|
134
|
+
|
135
|
+
param=m.umlx_createAndAddParameter(m.rdf_uri+"_this","_this")
|
136
|
+
i=c.umlx_getOrCreateInterface(DB::EntityInterface)
|
137
|
+
i.java_isGeneric=RDF_TRUE
|
138
|
+
param.uml_type=i
|
139
|
+
param.uml_direction=Cuml_ParameterDirectionKind::In
|
140
|
+
param.uml_upperValue=umlx_literal(1)
|
141
|
+
param.uml_lowerValue=umlx_literal(1)
|
142
|
+
|
143
|
+
rp=m.umlx_createAndAddParameter(m.rdf_uri+"_ret_param","return")
|
144
|
+
rp.uml_direction=Cuml_ParameterDirectionKind::Return
|
145
|
+
rp.uml_upperValue=umlx_literal(1)
|
146
|
+
rp.uml_lowerValue=umlx_literal(1)
|
147
|
+
i=c.umlx_getOrCreateInterface("xmda.bpm.api.XmdaCallbackHandler<#{type_callback}>")
|
148
|
+
i.java_isGeneric=RDF_TRUE
|
149
|
+
rp.uml_type=i
|
150
|
+
rp.uml_isOrdered=RDF_TRUE
|
151
|
+
|
152
|
+
m.java_annotation_add(%{@SuppressWarnings("unchecked")})
|
153
|
+
|
154
|
+
m.java_code=<<END_OF_STRING
|
155
|
+
return JmsCallbackHandler.Factory.createCallbackHandler(xmda.bpm.async.AsyncUtils.createAsyncTaskDescription(_this,"#{biz.uml_name}", new String[] {#{type_callback}.class.getName()}));
|
156
|
+
END_OF_STRING
|
157
|
+
|
158
|
+
end
|
159
|
+
|
160
|
+
def bpm_manageAsynchronousMethods(biz, not_delete_param=false)
|
161
|
+
returnParam = nil
|
162
|
+
biz.uml_returnResult.each { |p|
|
163
|
+
#pour RSM (non conformite de l'export)
|
164
|
+
next unless p.uml_direction_one.isReturn?
|
165
|
+
returnParam=p
|
166
|
+
biz.uml_returnResult.delete(p) if !not_delete_param
|
167
|
+
}
|
168
|
+
biz.uml_ownedParameter.each { |p|
|
169
|
+
next unless p.uml_direction_one.isReturn?
|
170
|
+
returnParam=p
|
171
|
+
biz.uml_ownedParameter.delete(p) if !not_delete_param
|
172
|
+
}
|
173
|
+
return if returnParam.nil?
|
174
|
+
|
175
|
+
downcaseName=biz.uml_name_one0
|
176
|
+
if downcaseName[0..0].downcase!=downcaseName[0..0]
|
177
|
+
downcaseName="#{downcaseName[0..0].downcase}#{downcaseName[1,downcaseName.length]}"
|
178
|
+
end
|
179
|
+
|
180
|
+
param=biz.umlx_createAndAddParameter(biz.rdf_uri+"_handler_param","handler")
|
181
|
+
i=self.umlx_getOrCreateInterface("xmda.bpm.api.XmdaCallbackHandler<#{returnParam.uml_type}>")
|
182
|
+
i.java_isGeneric=RDF_TRUE
|
183
|
+
param.uml_type=i
|
184
|
+
param.uml_direction=Cuml_ParameterDirectionKind::In
|
185
|
+
end
|
186
|
+
|
187
|
+
|
188
|
+
def bpm_asyncMethods(biz)
|
189
|
+
biz.java_annotation_add(%{@xmda.bpm.async.Async})
|
190
|
+
bpm_manageAsynchronousMethods(biz, true)
|
191
|
+
end
|
192
|
+
|
193
|
+
end
|
194
|
+
|
195
|
+
module Muml_Operation
|
196
|
+
|
197
|
+
def uml_getReturnParameter
|
198
|
+
fp=nil
|
199
|
+
uml_returnResult.each { |p|
|
200
|
+
#pour RSM (non conformite de l'export)
|
201
|
+
next unless p.uml_direction_one.isReturn?
|
202
|
+
fp=p
|
203
|
+
}
|
204
|
+
uml_ownedParameter.each { |p|
|
205
|
+
next unless p.uml_direction_one.isReturn?
|
206
|
+
fp=p
|
207
|
+
}
|
208
|
+
return fp
|
209
|
+
end
|
210
|
+
|
211
|
+
def bpm_returnType
|
212
|
+
fp = uml_getReturnParameter
|
213
|
+
if !fp
|
214
|
+
return "#{BPM::NullReturn}"
|
215
|
+
else
|
216
|
+
return "#{fp.uml_type}"
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
def bpm_callbackType
|
221
|
+
fp=nil
|
222
|
+
uml_ownedParameter.each { |p|
|
223
|
+
next if p.uml_direction_one.isReturn?
|
224
|
+
if !fp.nil?
|
225
|
+
log.error("Method #{self.uml_name} : Should not define Callback method with multiple parameters")
|
226
|
+
raise Warning.new(),"Method #{self.uml_name} : Should not define Callback method with multiple parameters"
|
227
|
+
else
|
228
|
+
fp=p
|
229
|
+
end
|
230
|
+
|
231
|
+
}
|
232
|
+
if !fp
|
233
|
+
return "#{BPM::NullReturn}"
|
234
|
+
else
|
235
|
+
return "#{fp.uml_type}"
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
end
|
240
|
+
|
241
|
+
|
242
|
+
module Muml_Classifier
|
243
|
+
|
244
|
+
rdf_safe_attr_reader_many :bpm_bizOperation
|
245
|
+
#
|
246
|
+
#Creates a class for every business method holding every parameters
|
247
|
+
#and
|
248
|
+
#
|
249
|
+
#
|
250
|
+
|
251
|
+
#STRUTS_RESULT_PARAM_NAME="_result"
|
252
|
+
|
253
|
+
def bpm_addAllOperationAggregateParameterClass!(biz)
|
254
|
+
mpc=self
|
255
|
+
mpc.bpm_bizOperation=biz
|
256
|
+
biz.bpm_bizOperationReverse_add(mpc)
|
257
|
+
#biz.bpm_bizForm=mpc
|
258
|
+
#mpc.uml_name="#{biz.umlx_owner_one.java_Name}#{biz.java_Name}PROC"
|
259
|
+
#method process is expected to be unique
|
260
|
+
#in namespace
|
261
|
+
mpc.uml_name="#{biz.java_Name.to_s}"
|
262
|
+
|
263
|
+
(biz.uml_ownedParameter+biz.uml_returnResult).each { |param|
|
264
|
+
next if param.uml_direction_one.isReturn?
|
265
|
+
mpcp=mpc.umlx_createAndAddProperty(param.rdf_uri+"_proc")
|
266
|
+
param.umlx_copyToAttributeProperty(mpcp)
|
267
|
+
mpcp.uml_name= param.uml_direction_one.isReturn? ? STRUTS_RESULT_PARAM_NAME : param.uml_name
|
268
|
+
}
|
269
|
+
mpc.bpm_addApplyToParameter!(biz)
|
270
|
+
mpc.bpm_addProceed!(biz)
|
271
|
+
#mpc.apaCom_addLogger!
|
272
|
+
end
|
273
|
+
|
274
|
+
def bpm_addApplyToParameter!(biz)
|
275
|
+
return
|
276
|
+
mpc=self
|
277
|
+
m,m1,m2=mpc.umlx_createAndAddAssociation(mpc.rdf_uri+"_apply",biz.umlx_owner_one)
|
278
|
+
m1.uml_name=STRUTS_APPLY_TO_PARAM
|
279
|
+
m2.uml_name="#{STRUTS_APPLY_TO_PARAM}_inv"
|
280
|
+
end
|
281
|
+
|
282
|
+
def bpm_addProceed!(biz)
|
283
|
+
return
|
284
|
+
mpc=self
|
285
|
+
cpt=mpc.umlx_createAndAddOperation(mpc.rdf_uri+"_proceed","proceed")
|
286
|
+
params=""; sep=""
|
287
|
+
hasRP=false
|
288
|
+
(biz.uml_ownedParameter+biz.uml_returnResult).each { |param|
|
289
|
+
if param.uml_direction_one.isReturn?
|
290
|
+
hasRP=true
|
291
|
+
next
|
292
|
+
end
|
293
|
+
params="#{params}#{sep}#{param.java_Name}"
|
294
|
+
sep=","
|
295
|
+
}
|
296
|
+
if(biz.uml_raisedException.empty?)
|
297
|
+
cpt.java_code=%{
|
298
|
+
#{hasRP ? "#{STRUTS_RESULT_PARAM_NAME}=" : ""} #{STRUTS_APPLY_TO_PARAM}.#{biz.java_Name}(#{params});
|
299
|
+
}
|
300
|
+
else
|
301
|
+
cpt.java_code=%{
|
302
|
+
try {
|
303
|
+
//log.error("before biz method");
|
304
|
+
//log.error("applyTo="+#{STRUTS_APPLY_TO_PARAM});
|
305
|
+
#{hasRP ? "#{STRUTS_RESULT_PARAM_NAME}=" : ""} #{STRUTS_APPLY_TO_PARAM}.#{biz.java_Name}(#{params});
|
306
|
+
//log.error("after biz method");
|
307
|
+
//log.error("result="+#{hasRP ? STRUTS_RESULT_PARAM_NAME : %{"-none-"}});
|
308
|
+
} catch(Exception e) {
|
309
|
+
//TODO: implement proper exception handling
|
310
|
+
throw new java.lang.RuntimeException(e);
|
311
|
+
}
|
312
|
+
}
|
313
|
+
end
|
314
|
+
|
315
|
+
end
|
316
|
+
end
|
@@ -0,0 +1,407 @@
|
|
1
|
+
#This module is meant to be applied
|
2
|
+
#to a protege 2000 knowledge model
|
3
|
+
class Crdf_ProtegeDataModel < Crdf_Repository
|
4
|
+
|
5
|
+
#uml model used to generate this protege data model
|
6
|
+
#attr :umlSourceModel
|
7
|
+
attr_accessor :kbjava_umlSourceModel
|
8
|
+
|
9
|
+
#Generates a DataSet
|
10
|
+
#default generation path may be overriden by providing appropriate context.
|
11
|
+
def kbjava_generate
|
12
|
+
mtk_default_context(:dataTestClassName=>'UserData',:dataTestPackageName => 'xmda.test') {
|
13
|
+
|
14
|
+
dc=@kbjava_umlSourceModel.umlx_reserved_model.umlx_getOrCreateClass("#{context[:dataTestPackageName]}.#{context[:dataTestClassName]}")
|
15
|
+
dc.umlx_external=RDF_FALSE
|
16
|
+
|
17
|
+
#No Gui is provided for TestData (class is too big)
|
18
|
+
dc.umlx_businessMethod=RDF_FALSE
|
19
|
+
|
20
|
+
#UserData must be transient because UserData links
|
21
|
+
#eventually to many many many objects and this
|
22
|
+
#would generate has many columns in database
|
23
|
+
#and as many joins.
|
24
|
+
dc.db_isTransient=RDF_TRUE
|
25
|
+
|
26
|
+
kbjava_addData!(dc)
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
#writes all in one java class which will contain all of
|
33
|
+
#our test instances loaded from source protege data model.
|
34
|
+
def kbjava_addData!(umlDataClass)
|
35
|
+
#write "package #{context[:dataTestPackageName]};\n"
|
36
|
+
#write("public class #{context[:dataTestClassName]} {\n")
|
37
|
+
|
38
|
+
#mtk_protected("converter") {
|
39
|
+
umlDataClass.java_customCode= <<END
|
40
|
+
private static java.text.SimpleDateFormat dfCalendar= new java.text.SimpleDateFormat("yyyy/MM/dd",java.util.Locale.ENGLISH);
|
41
|
+
private static java.text.SimpleDateFormat dfTimestamp= new java.text.SimpleDateFormat("yyyy/MM/dd",java.util.Locale.ENGLISH);
|
42
|
+
public java.util.Date convertCalendar(final String s) {
|
43
|
+
try {
|
44
|
+
return dfCalendar.parse(s) ;
|
45
|
+
} catch (java.text.ParseException e) {
|
46
|
+
throw new java.lang.RuntimeException(e);
|
47
|
+
}
|
48
|
+
}
|
49
|
+
public java.util.Date convertTimestamp(final String s) {
|
50
|
+
try {
|
51
|
+
return dfTimestamp.parse(s) ;
|
52
|
+
} catch (java.text.ParseException e) {
|
53
|
+
throw new java.lang.RuntimeException(e);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
END
|
58
|
+
|
59
|
+
#}
|
60
|
+
[true,false].each {|stepOne|
|
61
|
+
self.each { |k,c|
|
62
|
+
next unless c.kbjava_isUmlObject?
|
63
|
+
c.kbjava_writeJavaObject(@kbjava_umlSourceModel, self,umlDataClass,stepOne)
|
64
|
+
}}
|
65
|
+
#write "}"
|
66
|
+
#@kbjava_umlSourceModel.kbjava_computeCoverage
|
67
|
+
end
|
68
|
+
|
69
|
+
def kbjava_generateJavaJunit!
|
70
|
+
self.each { |k,c|
|
71
|
+
next unless c.kind_of?(Mkb_UML_TEST_DATA_SET)
|
72
|
+
uml_type=c.rdf_type.kbjava_uml_model_element(@kbjava_umlSourceModel)
|
73
|
+
p=uml_type.umlx_owner_one
|
74
|
+
p=p.umlx_getOrCreatePackage(context[:kbjava_junitSubPackage,"junitUseCase"],p)
|
75
|
+
p=p.umlx_getOrCreatePackage(uml_type.java_Name.to_s,p)
|
76
|
+
|
77
|
+
n=p.umlx_createAndAddClass("#{c.rdf_uri}_junit","junit#{c.kb_UML_DATA_SET_NAME}")
|
78
|
+
|
79
|
+
#Provide a Gui
|
80
|
+
n.umlx_businessMethod=RDF_TRUE
|
81
|
+
#puts "n=#{n.uml_name} busniess=#{n.umlx_businessMethod?}"
|
82
|
+
#n.apaCom_addLogger!
|
83
|
+
n.db_isTransient=RDF_TRUE
|
84
|
+
#n.struts_isForm=RDF_FALSE
|
85
|
+
n.umlx_external=RDF_FALSE
|
86
|
+
n.java_import='org.junit.Test'
|
87
|
+
#n.java_import_add('java.io.PrintWriter');
|
88
|
+
#n.java_import_add('java.io.StringWriter');
|
89
|
+
n.java_isATestFile=RDF_TRUE
|
90
|
+
|
91
|
+
#also avoid org.junit.* import notused warning in Eclipse
|
92
|
+
n.java_customCode="@Test\npublic void replaceWithMeaningfulTest(){}\n"
|
93
|
+
|
94
|
+
m=n.umlx_createAndAddOperation(n.rdf_uri+"merge","merge");
|
95
|
+
#TODO merge referenced items
|
96
|
+
m.java_code="return this;"
|
97
|
+
p=m.umlx_createAndAddReturnParameter(m.rdf_uri+'_ret',"return")
|
98
|
+
p.uml_type=n
|
99
|
+
m.umlx_businessMethod=RDF_FALSE
|
100
|
+
|
101
|
+
|
102
|
+
persist=n.umlx_createAndAddOperation(n.rdf_uri+"persist","persist");
|
103
|
+
persist.java_code="" # #{java_debug(%{log.debug("persisting referenced persistent elements");}\n}"
|
104
|
+
p=persist.umlx_createAndAddReturnParameter(persist.rdf_uri+'_ret',"return")
|
105
|
+
p.uml_type=n
|
106
|
+
persist.umlx_businessMethod=RDF_FALSE
|
107
|
+
|
108
|
+
|
109
|
+
#v=n.umlx_createAndAddProperty(n.rdf_uri+"__source","source");
|
110
|
+
|
111
|
+
#ds="#{context[:dataTestPackageName]}.#{context[:dataTestClassName]}"
|
112
|
+
#TODO: remove hard coded
|
113
|
+
ds="xmda.test.UserData"
|
114
|
+
#v.uml_type=n.umlx_getOrCreateClass(ds)
|
115
|
+
#v.java_code="null"
|
116
|
+
|
117
|
+
j=<<END
|
118
|
+
// using one single source object
|
119
|
+
// enables objects retrieved to be linked together.
|
120
|
+
// Objects retrieved with a new source will *not* be linked together.
|
121
|
+
#{ds} source=new #{ds}();
|
122
|
+
END
|
123
|
+
c.kb_UML_DATA.each { |d|
|
124
|
+
if d.kb_UML_INSTANCE_ALIAS.empty?
|
125
|
+
log.warn("data ignored in junit #{c} because of missing UML_INSTANCE_ALIAS")
|
126
|
+
next
|
127
|
+
end
|
128
|
+
u=d.rdf_type.kbjava_uml_model_element(@kbjava_umlSourceModel)
|
129
|
+
p=n.umlx_createAndAddProperty(n.rdf_uri+d.rdf_uri,"#{d.kb_UML_INSTANCE_ALIAS}");
|
130
|
+
p.uml_type=u
|
131
|
+
p.uml_isReadOnly=RDF_TRUE
|
132
|
+
p.java_code="null"
|
133
|
+
|
134
|
+
j="#{j}\n set#{p.java_NameBean}(source.get#{p.java_NameBean}());"
|
135
|
+
persist.java_code="#{persist.java_code.to_s} get#{p.java_NameBean}().persist();\n"
|
136
|
+
}
|
137
|
+
|
138
|
+
m=n.umlx_createAndAddOperation(n.rdf_uri+"initData","initData")
|
139
|
+
m.umlx_businessMethod=RDF_FALSE
|
140
|
+
m.java_code="#{j} return this;"
|
141
|
+
m.java_annotation_add(%{@SuppressWarnings("unused")})
|
142
|
+
p=m.umlx_createAndAddReturnParameter(m.rdf_uri+'_ret',"return")
|
143
|
+
p.uml_type=n
|
144
|
+
|
145
|
+
persist.java_code="#{persist.java_code.to_s} return this;\n"
|
146
|
+
}
|
147
|
+
end
|
148
|
+
|
149
|
+
end
|
150
|
+
|
151
|
+
class Ckb_UML_SLOT < ::Crdf_Property
|
152
|
+
end
|
153
|
+
|
154
|
+
#
|
155
|
+
class Ckb_UML_METACLASS < Crdfs_Class
|
156
|
+
def kbjava_uml_model_element(umlSourceModelParam)
|
157
|
+
r=umlSourceModelParam[::UriNamespace.instance.urialias(@kb_UML_URI.to_s)]
|
158
|
+
return r unless r.nil?
|
159
|
+
|
160
|
+
# not found but it is normal
|
161
|
+
return nil if Mrdf_Repository::SOA_URI_SET.include?(@kb_UML_URI.to_s)
|
162
|
+
|
163
|
+
puts("WARNING: uml item not found for uri=--#{@kb_UML_URI}--")
|
164
|
+
return nil
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
class ::Crdfs_Class
|
169
|
+
|
170
|
+
def kbjava_umlSourceModel
|
171
|
+
return rdf_Repository.kbjava_umlSourceModel
|
172
|
+
end
|
173
|
+
|
174
|
+
#uml model used to generate this protege data model
|
175
|
+
rdf_safe_attr_reader_many :kbjava_property
|
176
|
+
#rdf_safe_attr_reader_many :kbjava_initMethod
|
177
|
+
def kbjava_writeJavaObject(umlSourceModelParam, dataSource,umlDataClass,stepOne)
|
178
|
+
if rdf_type.nil?
|
179
|
+
# object was created localy (it was not loaded from file)
|
180
|
+
return
|
181
|
+
end
|
182
|
+
uml_type=self.rdf_type.kbjava_uml_model_element(umlSourceModelParam)
|
183
|
+
|
184
|
+
return if uml_type.kind_of?(Muml_UseCase)
|
185
|
+
return if uml_type.nil? # element is not mapped to an uml class (soa:soa, ...)
|
186
|
+
|
187
|
+
if stepOne
|
188
|
+
# Create attributes and every init methods (body expected)
|
189
|
+
uml_type.kb_coverage_add(self)
|
190
|
+
p=umlDataClass.umlx_createAndAddProperty(umlDataClass.rdf_uri+kbjava_varName,kbjava_varName.to_s)
|
191
|
+
p.uml_type=uml_type
|
192
|
+
p.uml_visibility= Cuml_VisibilityKind::Private
|
193
|
+
#p.java_noAccessors=RDF_TRUE
|
194
|
+
self.kbjava_property=p
|
195
|
+
|
196
|
+
#init method
|
197
|
+
#p=self.kbjava_property_one
|
198
|
+
#i=umlDataClass.umlx_createAndAddOperation(umlDataClass.rdf_uri+"init"+kbjava_varName,"init#{kbjava_varName}")
|
199
|
+
#i.uml_visibility= kbjava_isPublic? ? Cuml_VisibilityKind::Public : Cuml_VisibilityKind::Private
|
200
|
+
#r=i.umlx_createAndAddReturnParameter(i.rdf_uri+"ret","_return")
|
201
|
+
#r.uml_type=p.uml_type_one
|
202
|
+
#self.kbjava_initMethod=i
|
203
|
+
|
204
|
+
umlDataClass.java_addGlobalGetter!(p)
|
205
|
+
else
|
206
|
+
# Create init methods body
|
207
|
+
p=self.kbjava_property_one
|
208
|
+
#i=self.kbjava_initMethod_one
|
209
|
+
i=p.java_AttributeGlobalGetter_one
|
210
|
+
#write "private #{uml_type.java_qualifiedName} #{kbjava_varName}=null;\n"
|
211
|
+
#write "#{kbjava_public ? "public" : "private"} #{uml_type.java_qualifiedName} get#{kbjava_varName}() {"
|
212
|
+
#p=self.kbjava_property_one
|
213
|
+
i.java_code= <<ENDinit
|
214
|
+
if(#{p.java_Name}==null){
|
215
|
+
#{p.java_Name}= new #{uml_type.java_qualifiedName}();
|
216
|
+
#{p.uml_type_one.java_qualifiedName} elt= #{p.java_Name};
|
217
|
+
#{mtk_stss{kbjava_writeJavaObjectSetters(dataSource)}}
|
218
|
+
}
|
219
|
+
return #{p.java_Name};
|
220
|
+
ENDinit
|
221
|
+
|
222
|
+
# overide getter with init
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
# Returns test object variable name which will be used to store this test object.
|
227
|
+
# Return uri if test object has no name.
|
228
|
+
def kbjava_varName
|
229
|
+
return kbjava_aliasName.nil? ? uri : kbjava_aliasName
|
230
|
+
end
|
231
|
+
|
232
|
+
#
|
233
|
+
def kbjava_aliasName
|
234
|
+
s=@kb_UML_INSTANCE_ALIAS
|
235
|
+
return nil if s.nil? || s.empty?
|
236
|
+
return s.to_s
|
237
|
+
end
|
238
|
+
|
239
|
+
def kbjava_isPublic?
|
240
|
+
return !kbjava_aliasName.nil?
|
241
|
+
end
|
242
|
+
|
243
|
+
def kbjava_uml_property_values(dataSource)
|
244
|
+
ret=Hash.new
|
245
|
+
instance_variables.each {
|
246
|
+
|m|
|
247
|
+
next if ["@kbjava_property","@kb_UML_URI","@kb_UML_LABEL","@rdfs_label","@ext_isReferencedBy","@rdfs_subClassOf", "@kb_UML_INSTANCE_ALIAS","@kb_UML_REFERENCED_USE_CASE","@kb_inv_UML_REFERENCED_USE_CASE","@kb_UML_USE_CASE_ENV"].include?(m)
|
248
|
+
|
249
|
+
var = instance_variable_get(m)
|
250
|
+
rawval = self.instance_variable_get(m)
|
251
|
+
|
252
|
+
next unless rawval.kind_of?(ArrayOrSingleElement)
|
253
|
+
|
254
|
+
protprop_ident=m[1,m.length] #remove leading @
|
255
|
+
protprop_uri=getRubyNameInverse(protprop_ident)
|
256
|
+
protprop=dataSource[protprop_uri]
|
257
|
+
|
258
|
+
umluri=protprop.instance_variable_get("@kb_UML_URI").to_s
|
259
|
+
umlurialiased=::UriNamespace.instance.urialias(umluri)
|
260
|
+
umlprop=kbjava_umlSourceModel[umlurialiased]
|
261
|
+
|
262
|
+
if umlprop.nil?
|
263
|
+
log.warn { "uml prop not found for slot '#{m}' umluri='#{umluri}' umluriprop='#{umlurialiased}'" }
|
264
|
+
next
|
265
|
+
end
|
266
|
+
ret[umlprop]=rawval
|
267
|
+
}
|
268
|
+
return ret
|
269
|
+
end
|
270
|
+
|
271
|
+
def kbjava_writeJavaObjectSetters(dataSource)
|
272
|
+
kbjava_uml_property_values(dataSource).each {
|
273
|
+
|umlprop,rawval|
|
274
|
+
umlprop.kb_coverage_add(rawval)
|
275
|
+
rawval.each {|v|
|
276
|
+
kbjava_writeJavaObjectSetter(umlprop,v)
|
277
|
+
}
|
278
|
+
}
|
279
|
+
end
|
280
|
+
|
281
|
+
def kbjava_writeJavaObjectSetter(umlprop,valitem)
|
282
|
+
return if umlprop.uml_name.empty?
|
283
|
+
return unless umlprop.umlx_isNavigable?
|
284
|
+
|
285
|
+
#t=umlprop.uml_type_one.java_qualifiedName
|
286
|
+
|
287
|
+
m=DatatypeMapping.instance.getMapping(umlprop.uml_type_one)
|
288
|
+
v=m.prot_convertToJava(umlprop,valitem)
|
289
|
+
#i=m.prot_init(umlprop,valitem)
|
290
|
+
|
291
|
+
#puts "i='#{i}'"
|
292
|
+
meth=umlprop.umlx_upperValueIsOne? ? "set" : "add"
|
293
|
+
#write " #{i}/* tpl-kbjava01 */\n"
|
294
|
+
write "// read only " if umlprop.uml_isReadOnly?
|
295
|
+
write " elt.#{meth}#{umlprop.java_NameBean}(#{v});\n"
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
module Muml_Element
|
300
|
+
rdf_safe_attr_reader_many :kb_coverage
|
301
|
+
end
|
302
|
+
module Mrdf_Repository
|
303
|
+
def kbjava_computeCoverage
|
304
|
+
puts "COVERAGE REPORT"
|
305
|
+
puts %{class|property|hit|min hit\n}
|
306
|
+
ret=Array.new
|
307
|
+
uml_Class_all.each { |c|
|
308
|
+
|
309
|
+
next if c.uml_isAbstract?
|
310
|
+
next if c.kind_of?(Cuml_Enumeration)
|
311
|
+
next if c.uml_ownedAttribute.empty?
|
312
|
+
puts %{#{c.uml_name}|id|#{c.kb_coverage.size}|1\n}
|
313
|
+
c.uml_ownedAttribute.each {|a|
|
314
|
+
max=a.uml_type_one.kind_of?(Muml_Enumeration) ? a.uml_type_one.uml_ownedLiteral.size : "1"
|
315
|
+
puts %{#{c.uml_name}|#{a.uml_name}|#{a.kb_coverage.size}|#{max}\n}
|
316
|
+
ret<< { "class" => c.uml_name,"property"=> a.uml_name, "hit" =>a.kb_coverage.size, "minhit" => max}
|
317
|
+
}
|
318
|
+
|
319
|
+
}
|
320
|
+
puts "COVERAGE REPORT END"
|
321
|
+
return ret
|
322
|
+
end
|
323
|
+
end
|
324
|
+
|
325
|
+
module Mrdf_Resource
|
326
|
+
def kbjava_isUmlObject?
|
327
|
+
c=self
|
328
|
+
# filters out Protege meta-model element
|
329
|
+
return false if (c.kind_of?(Ckb_UML_METACLASS))||(c.kind_of?(Ckb_UML_SLOT))
|
330
|
+
# filters out rdf root elements
|
331
|
+
return false if (c.class==Crdf_Resource) || (c.class==Crdf_Property)
|
332
|
+
return true
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
class DatatypeMapping
|
337
|
+
def prot_init(umlprop,valitem)
|
338
|
+
return ""
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
342
|
+
class DatatypeMappingText < DatatypeMapping
|
343
|
+
# Protege string to Java code conversions
|
344
|
+
def prot_convertToJava(umlprop,valitem)
|
345
|
+
return %{"#{valitem}"}
|
346
|
+
end
|
347
|
+
end
|
348
|
+
class DatatypeMappingInteger < DatatypeMappingOrdinal
|
349
|
+
# Protege string to Java code conversions
|
350
|
+
def prot_convertToJava(umlprop,valitem)
|
351
|
+
#Remove leading 0 (octal)
|
352
|
+
return valitem.gsub(/^0*([0-9])/,'\1')
|
353
|
+
end
|
354
|
+
end
|
355
|
+
class DatatypeMappingLong < DatatypeMappingOrdinal
|
356
|
+
# Protege string to Java code conversions
|
357
|
+
def prot_convertToJava(umlprop,valitem)
|
358
|
+
#Remove leading 0 (octal)
|
359
|
+
return valitem.gsub(/^0*([0-9])/,'\1')
|
360
|
+
end
|
361
|
+
end
|
362
|
+
class DatatypeMappingFile < DatatypeMapping
|
363
|
+
# Protege string to Java code conversions
|
364
|
+
def prot_convertToJava(umlprop,valitem)
|
365
|
+
# ??
|
366
|
+
return valitem
|
367
|
+
end
|
368
|
+
end
|
369
|
+
class DatatypeMappingBoolean < DatatypeMapping
|
370
|
+
# Protege string to Java code conversions
|
371
|
+
def prot_convertToJava(umlprop,valitem)
|
372
|
+
return valitem
|
373
|
+
end
|
374
|
+
end
|
375
|
+
class DatatypeMappingTimeStamp < DatatypeMapping
|
376
|
+
# Protege string to Java code conversions
|
377
|
+
def prot_convertToJava(umlprop,valitem)
|
378
|
+
return %{convertTimestamp("#{valitem}")}
|
379
|
+
end
|
380
|
+
end
|
381
|
+
class DatatypeMappingCalendar < DatatypeMapping
|
382
|
+
# Protege string to Java code conversions
|
383
|
+
def prot_convertToJava(umlprop,valitem)
|
384
|
+
return %{convertCalendar("#{valitem}")}
|
385
|
+
end
|
386
|
+
end
|
387
|
+
class DatatypeMappingGenericClass < DatatypeMapping
|
388
|
+
# Protege string to Java code conversions
|
389
|
+
def prot_convertToJava(umlprop,valitem)
|
390
|
+
return "#{valitem.kbjava_property_one.java_AttributeGlobalGetter_one.java_Name}()"
|
391
|
+
end
|
392
|
+
def prot_init(umlprop,valitem)
|
393
|
+
return ""
|
394
|
+
#return "init#{umlprop.java_NameBean}();/* #{umlprop.class} */"
|
395
|
+
end
|
396
|
+
end
|
397
|
+
class DatatypeMappingGenericEnum < DatatypeMapping
|
398
|
+
# Protege string to Java code conversions
|
399
|
+
def prot_convertToJava(umlprop,valitem)
|
400
|
+
lit=nil
|
401
|
+
umlprop.uml_type_one.uml_ownedLiteral.each { |i|
|
402
|
+
next if i.to_s!=valitem.to_s
|
403
|
+
lit=i
|
404
|
+
}
|
405
|
+
return "#{umlprop.uml_type_one.java_qualifiedName}.#{lit.java_Name}"
|
406
|
+
end
|
407
|
+
end
|