ontomde-java 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. data/History.txt +10 -0
  2. data/Manifest.txt +156 -0
  3. data/README.txt +98 -0
  4. data/Rakefile +21 -0
  5. data/bin/ontomde-java +5 -0
  6. data/generateRdocFile.sh +16 -0
  7. data/lib/ontomde-java.rb +45 -0
  8. data/lib/ontomde-java/crank.rb +13 -0
  9. data/lib/ontomde-java/crank/context.rb +384 -0
  10. data/lib/ontomde-java/crank/crankJpa.rb +103 -0
  11. data/lib/ontomde-java/crank/equals.rb +83 -0
  12. data/lib/ontomde-java/crank/facelets.rb +243 -0
  13. data/lib/ontomde-java/crank/facesconfig.rb +113 -0
  14. data/lib/ontomde-java/crank/helper.rb +46 -0
  15. data/lib/ontomde-java/crank/main.rb +51 -0
  16. data/lib/ontomde-java/crank/menu.rb +39 -0
  17. data/lib/ontomde-java/crank/menu2.rb +78 -0
  18. data/lib/ontomde-java/crank/validation.rb +34 -0
  19. data/lib/ontomde-java/ejb2.rb +3 -0
  20. data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
  21. data/lib/ontomde-java/flex.rb +7 -0
  22. data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
  23. data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
  24. data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
  25. data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
  26. data/lib/ontomde-java/flex/fileTypes.rb +19 -0
  27. data/lib/ontomde-java/flex/main.rb +347 -0
  28. data/lib/ontomde-java/frontend/command.rb +324 -0
  29. data/lib/ontomde-java/frontend/command.rdoc +583 -0
  30. data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
  31. data/lib/ontomde-java/frontend/options.rb +555 -0
  32. data/lib/ontomde-java/frontend/steps.rb +287 -0
  33. data/lib/ontomde-java/java/accessorCode.rb +528 -0
  34. data/lib/ontomde-java/java/accessorSignature.rb +347 -0
  35. data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
  36. data/lib/ontomde-java/java/apache.rb +34 -0
  37. data/lib/ontomde-java/java/build.rb +80 -0
  38. data/lib/ontomde-java/java/collectionMapping.rb +112 -0
  39. data/lib/ontomde-java/java/component.rb +446 -0
  40. data/lib/ontomde-java/java/contextualize.rb +43 -0
  41. data/lib/ontomde-java/java/enumAssignable.rb +75 -0
  42. data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
  43. data/lib/ontomde-java/java/equals.rb +91 -0
  44. data/lib/ontomde-java/java/groovy.rb +95 -0
  45. data/lib/ontomde-java/java/java.rb +1329 -0
  46. data/lib/ontomde-java/java/java.rdoc +78 -0
  47. data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
  48. data/lib/ontomde-java/java/javaHelper.rb +25 -0
  49. data/lib/ontomde-java/java/java_todo.rdoc +3 -0
  50. data/lib/ontomde-java/java/javadoc.rb +254 -0
  51. data/lib/ontomde-java/java/meta.rb +28 -0
  52. data/lib/ontomde-java/java/operationAsClass.rb +144 -0
  53. data/lib/ontomde-java/java/security.rb +260 -0
  54. data/lib/ontomde-java/java/stateMachine.rb +415 -0
  55. data/lib/ontomde-java/java/tenant.rb +65 -0
  56. data/lib/ontomde-java/java/xsd.rb +1363 -0
  57. data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
  58. data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
  59. data/lib/ontomde-java/jpa.rb +17 -0
  60. data/lib/ontomde-java/jpa/configuration.rb +176 -0
  61. data/lib/ontomde-java/jpa/finder.rb +102 -0
  62. data/lib/ontomde-java/jpa/jpa.rb +531 -0
  63. data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
  64. data/lib/ontomde-java/jpa/locking.rb +18 -0
  65. data/lib/ontomde-java/jpa/mapping.rb +314 -0
  66. data/lib/ontomde-java/jpa/redefined.rb +77 -0
  67. data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
  68. data/lib/ontomde-java/jpdl.rb +9 -0
  69. data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
  70. data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
  71. data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
  72. data/lib/ontomde-java/jpdl/constant.rb +5 -0
  73. data/lib/ontomde-java/jpdl/graphic.rb +52 -0
  74. data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
  75. data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
  76. data/lib/ontomde-java/jpdl/main.rb +348 -0
  77. data/lib/ontomde-java/jpdl/main.rdoc +2 -0
  78. data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
  79. data/lib/ontomde-java/kbjava.rb +6 -0
  80. data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
  81. data/lib/ontomde-java/struts.rb +27 -0
  82. data/lib/ontomde-java/struts/MessageResources.rb +359 -0
  83. data/lib/ontomde-java/struts/action.rb +883 -0
  84. data/lib/ontomde-java/struts/blob.rb +11 -0
  85. data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
  86. data/lib/ontomde-java/struts/footer.rb +128 -0
  87. data/lib/ontomde-java/struts/form.rb +450 -0
  88. data/lib/ontomde-java/struts/header.rb +37 -0
  89. data/lib/ontomde-java/struts/header_link.rb +39 -0
  90. data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
  91. data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
  92. data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
  93. data/lib/ontomde-java/struts/jsp_index.rb +136 -0
  94. data/lib/ontomde-java/struts/localeAction.rb +641 -0
  95. data/lib/ontomde-java/struts/main.rb +41 -0
  96. data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
  97. data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
  98. data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
  99. data/lib/ontomde-java/struts/reloadAction.rb +33 -0
  100. data/lib/ontomde-java/struts/spring.rb +89 -0
  101. data/lib/ontomde-java/struts/struts-config.rb +232 -0
  102. data/lib/ontomde-java/struts/validation.rb +116 -0
  103. data/lib/ontomde-java/struts/validator.rb +341 -0
  104. data/lib/ontomde-java/struts/webXml.rb +195 -0
  105. data/lib/ontomde-java/struts/xmlForm.rb +308 -0
  106. data/lib/ontomde-java/version.rb +5 -0
  107. data/profiling.xls +0 -0
  108. data/test/.classpath +14 -0
  109. data/test/.project +17 -0
  110. data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
  111. data/test/Rakefile +71 -0
  112. data/test/build.xml +34 -0
  113. data/test/classpath.rb +15 -0
  114. data/test/lib/junit-4.1.jar +0 -0
  115. data/test/load1.rb +3 -0
  116. data/test/load2.rb +3 -0
  117. data/test/log4j.properties +46 -0
  118. data/test/model/.project +11 -0
  119. data/test/model/BigProject.mdzip +0 -0
  120. data/test/model/BigProject.mdzip.nt +102866 -0
  121. data/test/model/ClassDiagram.EntArch.gif +0 -0
  122. data/test/model/ClassDiagram.emx.gif +0 -0
  123. data/test/model/ClassDiagram.mdzip.gif +0 -0
  124. data/test/model/model_ea71.bis.ea.xmi +149 -0
  125. data/test/model/model_ea71.ea.xmi +4470 -0
  126. data/test/model/model_ea71.eap +0 -0
  127. data/test/model/model_ea71_README.txt +8 -0
  128. data/test/model/multipleInheritance.emx +466 -0
  129. data/test/model/multipleInheritance.emx.nt +2428 -0
  130. data/test/model/simple1-530.ofp +0 -0
  131. data/test/model/simple1-includedAsReference.emx +169 -0
  132. data/test/model/simple1.emx +3729 -0
  133. data/test/model/simple1.emx.fragments.nt +81 -0
  134. data/test/model/simple1.emx.nt +5760 -0
  135. data/test/model/simple1.mdzip +0 -0
  136. data/test/model/simple1.mdzip.nt +11500 -0
  137. data/test/model/simple1.oe530.nt +1986 -0
  138. data/test/model/simple1.oe600.nt +1627 -0
  139. data/test/src/RuntimeTest.java +656 -0
  140. data/test/src/testsLevel1.java +174 -0
  141. data/test/src/testsLevel2.java +29 -0
  142. data/test/src/testsLevel3.java +40 -0
  143. data/test/test-ea7.sh +15 -0
  144. data/test/test-magicDraw.sh +10 -0
  145. data/test/test-mi.sh +9 -0
  146. data/test/test-oe530.sh +10 -0
  147. data/test/test-oe600.sh +11 -0
  148. data/test/test-rsm.sh +11 -0
  149. data/test/test_export_ea71.rb +5 -0
  150. data/test/test_export_oe530.rb +4 -0
  151. data/test/test_export_oe600.rb +4 -0
  152. data/test/test_export_rsm60.rb +4 -0
  153. data/test/trace +419 -0
  154. data/test/uml_test.rb +1434 -0
  155. data/test/uml_test.xls +0 -0
  156. data/test/unit_test.rb +6 -0
  157. metadata +224 -0
@@ -0,0 +1,114 @@
1
+
2
+ module Mrdf_Repository
3
+
4
+ BPM_JPDL_DEPLOY_CLASS="xmda.jpdl.Deploy"
5
+
6
+ # Generates a JPDL deployer as a JUNIT class
7
+ # Junit provides easy diagnostic an a convenient GUI
8
+ def bpm_genJPDLDeploy
9
+ #TODO A enlever
10
+ return
11
+ mrdf=context[:umlModel,self]
12
+ muml=mrdf.umlx_reserved_model
13
+
14
+ deploy=muml.umlx_getOrCreateClass(BPM_JPDL_DEPLOY_CLASS)
15
+ return unless deploy.java_customCode.empty?
16
+
17
+ deploy.umlx_businessMethod=RDF_FALSE
18
+ deploy.apaCom_addLogger!
19
+ deploy.umlx_external=RDF_FALSE
20
+ deploy.java_import_add('org.junit.*')
21
+ deploy.java_import_add('java.io.PrintWriter');
22
+ deploy.java_import_add('java.io.StringWriter');
23
+
24
+ deploy.db_isTransient=RDF_TRUE
25
+ deploy.struts_isForm=RDF_FALSE
26
+
27
+
28
+ bpm_allProcess.each { |c|
29
+ op=deploy.umlx_createAndAddOperation("#{c.rdf_uri}_deploy","deploy_#{c.bpm_processName.to_s.tr('.','_')}")
30
+ op.java_annotation_add('@org.junit.Test')
31
+ op.umlx_businessMethod=RDF_FALSE
32
+ op.java_code=%{
33
+ #{c.bpm_javaProcessJobsClass_one.java_qualifiedName} c=new #{c.bpm_javaProcessJobsClass_one.java_qualifiedName}();
34
+ try {
35
+ c.deploy();
36
+ } catch (Exception e) {
37
+ StringWriter s=new StringWriter();
38
+ PrintWriter p = new PrintWriter(s);
39
+ e.printStackTrace(p);
40
+ org.junit.Assert.fail(e.toString()+"\\n\\n"+s.toString());
41
+ }
42
+ }
43
+ }
44
+ bpm_allProcess.each { |c|
45
+ op=deploy.umlx_createAndAddOperation("#{c.rdf_uri}_deploy}","ping_#{c.bpm_processName.to_s.tr('.','_')}")
46
+ op.java_annotation_add('@org.junit.Test')
47
+ op.umlx_businessMethod=RDF_FALSE
48
+ op.java_code=%{
49
+ #{c.bpm_javaProcessJobsClass_one.java_qualifiedName} c=new #{c.bpm_javaProcessJobsClass_one.java_qualifiedName}();
50
+ try {
51
+ c.start();
52
+ } catch (Exception e) {
53
+ StringWriter s=new StringWriter();
54
+ PrintWriter p = new PrintWriter(s);
55
+ e.printStackTrace(p);
56
+ org.junit.Assert.fail(e.toString()+"\\n\\n"+s.toString());
57
+ }
58
+ }
59
+ }
60
+
61
+
62
+ deploy.java_customCode= %{
63
+ /**
64
+ * @throws java.lang.Exception
65
+ */
66
+ @org.junit.BeforeClass
67
+ public static void setUpBeforeClass() throws Exception {
68
+ }
69
+ /**
70
+ * @throws java.lang.Exception
71
+ */
72
+ @org.junit.AfterClass
73
+ public static void tearDownAfterClass() throws Exception {
74
+ }
75
+ /**
76
+ * @throws java.lang.Exception
77
+ */
78
+ @org.junit.Before
79
+ public void setUp() throws Exception {
80
+ }
81
+ /**
82
+ * @throws java.lang.Exception
83
+ */
84
+ @org.junit.After
85
+ public void tearDown() throws Exception {
86
+ //TODO: cleanup db
87
+ }
88
+ public static junit.framework.Test suite(){
89
+ return new junit.framework.JUnit4TestAdapter(#{deploy.java_qualifiedName}.class);
90
+ }
91
+ @Test
92
+ public void check_database_connection() {
93
+ log.error("TODO: check db connection");
94
+ }
95
+ @Test
96
+ public void install_jbpm_schema() {
97
+ log.error("TODO: install jbpm schema");
98
+
99
+
100
+ //private JbpmConfiguration jbpmConfiguration = null;
101
+ //protected void deploy(String processDef) throws Exception {
102
+ // try {
103
+ // jbpmContext = jbpmConfiguration.createJbpmContext();
104
+ // jbpmContext.deployProcessDefinition(processDef);
105
+ // } finally {
106
+ // jbpmContext.close();
107
+ // }
108
+ //}
109
+
110
+
111
+ }
112
+ }
113
+ end
114
+ end
@@ -0,0 +1,348 @@
1
+ #:include: main.rdoc
2
+
3
+ require "rexml/document"
4
+
5
+ module Mrdf_Repository
6
+ def java_getClassWithQualifiedName(qname)
7
+ uml_Class_all.each { |f|
8
+ return f if f.java_qualifiedName.to_s.casecmp(qname)==0
9
+ }
10
+ puts "not found #{qname}"
11
+ #exit 1
12
+ return nil
13
+ end
14
+
15
+ #loads bpm meta-model from protege/2000 DSL model.
16
+ #
17
+ #You can browse bpm meta-model with protege/2000 using
18
+ #bpm.pprj protege/2000 project in this file directory.
19
+ def bpm_loadBPM
20
+ loadMetaModelFromFile("#{File.dirname(__FILE__)}/bpm.rdfs",true)
21
+ end
22
+
23
+ def bpm_transform!
24
+ #mtk_writeSession("bpm.log") {
25
+ s=Array.new
26
+ each { |k,res|
27
+ next unless res.kind_of?(Mbpm_process)
28
+ s << res
29
+ }
30
+ s.each { |res|
31
+ res.bpm_transform!
32
+ }
33
+ #bpm_dumpJPDL
34
+ bpm_genJPDLDeploy
35
+ end
36
+
37
+ #adds ping node to all process in model
38
+ #(feature used for process deployement test)
39
+ def bpm_addPingNode!
40
+ bpm_allProcess.each { |c|
41
+ c.bpm_addPingNode!
42
+ }
43
+ end
44
+
45
+ def bpm_allProcess(ret=Array.new)
46
+ self.each { |k,c|
47
+ ret<< c if c.kind_of?(Mbpm_process)
48
+ }
49
+ return ret
50
+ end
51
+ end
52
+
53
+ module Muml_ClassProcess
54
+ #Surcharge pour les objets de type Process cette méthode
55
+ #afin de ne pas avoir l'id généré
56
+ def jpa_deriveFromPersistent?
57
+ return true;
58
+ end
59
+ end
60
+
61
+
62
+ module Mbpm_process
63
+ rdf_safe_attr_reader_many :bpm_javaProcessJobsClass
64
+
65
+ # returns a qualified name for this process
66
+ #(return processName itself because processName is supposed to be a qualifiedName)
67
+ def bpm_qualifiedName
68
+ return bpm_processName.to_s
69
+ end
70
+
71
+ def bpm_getProcessClass(muml)
72
+ bpmClass = BPM::BpmClass
73
+ bpmClass += "<#{self.bpm_processReturnTypeOrNullReturn}>"
74
+ ret=muml.umlx_getOrCreateClass(bpmClass)
75
+ ret.java_isGeneric=RDF_TRUE
76
+ #ret.db_isTransient=RDF_FALSE
77
+ ret.db_isTransient=RDF_FALSE
78
+ puts "ProcessClass = #{bpmClass}"
79
+ return ret
80
+ end
81
+
82
+ def bpm_transform!
83
+ mrdf=context[:umlModel,self.rdf_Repository]
84
+ muml=mrdf.umlx_reserved_model
85
+ j=mrdf.java_getClassWithQualifiedName(bpm_qualifiedName)
86
+ j=muml.umlx_getOrCreateClass("#{bpm_qualifiedName}",::Muml_Namespace::UMLX_SEARCH_EVERY_MODEL) if j.nil?
87
+ #TODO Gérer la récupération dans la signature de la méthode du type et la génération de deux méthodes
88
+ #Evite la génération de l'ID
89
+ j.extend(Muml_ClassProcess);
90
+ j.db_isTransient=RDF_FALSE
91
+ self.bpm_javaProcessJobsClass=j # store direct reference
92
+ j.umlx_external="false"
93
+
94
+ j.umlx_createAndAddGeneralization( bpm_getProcessClass(muml))
95
+
96
+
97
+ bpm_processNode.each {|n|
98
+ next if n.kind_of?(Mbpm_passive_Node)
99
+ if n.kind_of?(Mbpm_source_Node)
100
+ n.bpm_createEnumerationForTransitions!(j)
101
+ end
102
+ #n.bpm_createConnectorForNodeAction!
103
+ n.bpm_addJavaProcessOperation(j)
104
+ }
105
+
106
+ m=j.umlx_createAndAddOperation("#{j.rdf_uri}_processDefinition","getProcessDefinition")
107
+ m.java_annotation_add("@Override")
108
+ p=m.umlx_createAndAddReturnParameter("#{j.rdf_uri}_ret","return")
109
+ p.uml_type=j.umlx_dataType_string
110
+ m.java_code=%{return ""\n#{mtk_stss{bpm_writeJPDL}.gsub(/"/,'\\"').gsub(/^(.*)$/,' +"\1"')};}
111
+
112
+ # external process name
113
+ m=j.umlx_createAndAddOperation("#{j.rdf_uri}_externalProcessName","getExternalProcessName")
114
+ p=m.umlx_createAndAddReturnParameter("#{j.rdf_uri}_ret","return")
115
+ p.uml_type=j.umlx_dataType_string
116
+ m.java_code=%{return "#{bpm_qualifiedName}";}
117
+
118
+
119
+ me=j.umlx_createAndAddOperation("#{j.rdf_uri}_onEnd","xmdaOnEnd")
120
+ me.java_annotation_add("@Override")
121
+ p=me.umlx_createAndAddReturnParameter("#{me.rdf_uri}_ret","return")
122
+
123
+ p.uml_type=j.umlx_getOrCreateClass("#{bpm_processReturnTypeOrNullReturn}")
124
+ me.java_code=%{return null;}
125
+
126
+ # p.uml_type=j.umlx_getOrCreateClass("java.lang.Class")
127
+
128
+ # external process id
129
+ # moved to base class
130
+ #p=j.umlx_createAndAddProperty("#{j.rdf_uri}_externalBPMid","BpmExternalId")
131
+ #m.uml_type=j.umlx_dataType_long
132
+
133
+ end
134
+
135
+ #pingTest node is a node added to
136
+ #ping the process for testing purposses
137
+ #and deployement test purposes
138
+ def bpm_addPingNode!
139
+ return unless context[:bpm_addPingNode,true]
140
+ s=bpm_getOrCreateStartNode
141
+ e=bpm_getOrCreateEndNode
142
+ d=bpm_createAndAddSynchronousDecisionNode("_pingMode")
143
+ t=s.bpm_leavingTransition_one
144
+
145
+ #insert node d between s and first node after s
146
+ d.bpm_addTransition!("productionMode",t.bpm_destinationNode_one)
147
+ d.bpm_addTransition!("testMode",e)
148
+ t.bpm_destinationNode=d
149
+ end
150
+
151
+ #create
152
+ def bpm_createAndAddSynchronousDecisionNode(name)
153
+ ret=Cbpm_synchronousDecisionNode.new(self.rdf_Repository,"#{self.rdf_uri}_#{name}")
154
+ ret.bpm_nodeName=name
155
+ self.bpm_processNode_add(ret)
156
+ return ret
157
+ end
158
+
159
+ #returns process start node
160
+ #creates one if necessary
161
+ def bpm_getOrCreateStartNode
162
+ bpm_processNode.each {|n|
163
+ return n if n.kind_of?(Mbpm_startNode)
164
+ }
165
+ ret=Cbpm_startNode.new(self.rdf_Repository,"#{self.rdf_uri}_startNode")
166
+ ret.bpm_nodeName="startNode"
167
+ self.bpm_processNode_add(ret)
168
+ return ret
169
+ end
170
+ #returns process start node
171
+ #creates one if necessary
172
+ def bpm_getOrCreateEndNode
173
+ bpm_processNode.each {|n|
174
+ return n if n.kind_of?(Mbpm_endNode)
175
+ }
176
+ ret=Cbpm_startNode.new(self.rdf_Repository,"#{self.rdf_uri}_endNode")
177
+ ret.bpm_nodeName="endNode"
178
+ self.bpm_processNode_add(ret)
179
+ return ret
180
+ end
181
+
182
+ def bpm_graphGen_dot
183
+ mtk_writeSession("bpm.dot") {
184
+ write("digraph {\n")
185
+ bpm_processNode.each {|n|
186
+ n.bpm_graphGen_dot
187
+ }
188
+ write ("} // end of file\n")
189
+ }
190
+ end
191
+ end
192
+ module Mbpm_named_Node
193
+ # returns a qualified name for this node
194
+ def bpm_qualifiedName
195
+ return "#{bpm_processNode_inv_one.bpm_qualifiedName}.#{bpm_nodeName}"
196
+ end
197
+
198
+ def hasMultipleTransitions?
199
+ return false
200
+ end
201
+
202
+ #adds a method in java process for this node
203
+ def bpm_addJavaProcessOperation(j)
204
+ o=nil
205
+ j.uml_ownedOperation.each { |op|
206
+ o=op if op.java_Name.to_s.casecmp(op.java_safeName(self.bpm_nodeName.to_s))==0
207
+ }
208
+ o=j.umlx_createAndAddOperation(self.rdf_uri+"meth",self.bpm_nodeName) if o.nil?
209
+ o.uml_name=self.bpm_nodeName #case fix
210
+ if self.kind_of?(Mbpm_source_Node) && hasMultipleTransitions?
211
+ r=o.umlx_createAndAddReturnParameter(o.rdf_uri+"_return")
212
+ r.uml_type=self.bpm_javaTransitionNameEnum_one
213
+ o.java_code=<<END
214
+ //TODO: replace this test code by real implementation
215
+ log.debug("test method called #{o.uml_name}");
216
+ return #{self.bpm_javaTransitionNameEnum_one.java_qualifiedName}.values()[0];
217
+ END
218
+ else
219
+ o.java_code=<<END
220
+ //TODO: replace this test code by real implementation
221
+ log.debug("test method called #{o.uml_name}");
222
+ END
223
+ end
224
+ if self.kind_of?(Mbpm_asynchronousNode)
225
+ #Ajout du paramètre callback
226
+ p=o.umlx_createAndAddParameter(o.rdf_uri+"_param", "_callback")
227
+ mrdf=context[:umlModel,self.rdf_Repository]
228
+ muml=mrdf.umlx_reserved_model
229
+ i=muml.umlx_getOrCreateInterface(BPM::CallbackClass)
230
+ i.umlx_external="true"
231
+ p.uml_type=i
232
+ end
233
+ end
234
+ end
235
+
236
+ module Mbpm_source_Node
237
+ rdf_safe_attr_reader_many :bpm_javaTransitionNameEnum
238
+
239
+ #Indique si ce noeud a plusieurs sorties et donc si on génère un Enum pour son type de retour
240
+ def hasMultipleTransitions?
241
+ return false if bpm_leavingTransition.nil?
242
+ nb = 0
243
+ bpm_leavingTransition.each { |transition|
244
+ nb += 1 if !transition.kind_of?(Mbpm_timeOutTransition)
245
+ }
246
+ return nb > 1
247
+ end
248
+
249
+ # creates an uml enumeration listing
250
+ # every node leaving this transition
251
+ # This is usefull for decision node.
252
+ def bpm_createEnumerationForTransitions!(processClass)
253
+ mrdf=context[:umlModel,self.rdf_Repository]
254
+ muml=mrdf.umlx_reserved_model
255
+ p=processClass.umlx_owner_one
256
+ return if !hasMultipleTransitions?
257
+
258
+ p=p.umlx_getOrCreatePackage(p.context[:bpm_javaSubPackage],p)
259
+ p=p.umlx_getOrCreatePackage(processClass.uml_name.to_s)
260
+
261
+ i=p.umlx_getOrCreateEnumeration("#{bpm_nodeName}_BpmTransitions",p)
262
+ i.umlx_external="false"
263
+ self.bpm_javaTransitionNameEnum=i
264
+ bpm_leavingTransition.each { |t|
265
+ i.umlx_createAndAddLiteral(t.bpm_transitionName.to_s)
266
+ }
267
+ end
268
+ end
269
+ module Mbpm_decision_Node
270
+ def not_used_bpm_createConnectorForNodeAction!
271
+ mrdf=context[:umlModel,self.rdf_Repository]
272
+ #muml=mrdf.umlx_reserved_model
273
+ j=muml.umlx_getOrCreateClass("#{bpm_qualifiedName} Connector")
274
+ j.umlx_external="false"
275
+
276
+
277
+ m=j.umlx_createAndAddOperation("#{self.rdf_uri}_connectorMethod","execute")
278
+ i=muml.umlx_getOrCreateInterface("jpdl.anInterface_tbd")
279
+ i.umlx_external="true"
280
+ j.umlx_createAndAddImplementation(i)
281
+
282
+ end
283
+ end
284
+ module Mbpm_node
285
+ def bpm_graphGen_dot
286
+ return # todo
287
+ write %{#{self.dotId} [#{bpm_dotStyle}]\n}
288
+ bpm_leavingTransition.each { |t|
289
+ e=t.bpm_enteringTransition_inv_one
290
+ write %{#{self.dotId} -> #{e.dotId} \n}
291
+ } if kind_of?(Mbpm_source_Node)
292
+
293
+ end
294
+
295
+ end
296
+
297
+
298
+ module Mbpm_startNode
299
+ def bpm_nodeName
300
+ return "start"
301
+ end
302
+ end
303
+
304
+ module Mbpm_endNode
305
+ def bpm_nodeName
306
+ return "end"
307
+ end
308
+ end
309
+
310
+ module Mbpm_source_Node
311
+ def bpm_addTransition!(transitionName,targetNode)
312
+ t=Cbpm_transition.new(self.rdf_Repository,"#{self.rdf_uri}_#{transitionName}")
313
+ self.bpm_leavingTransition_add(t)
314
+ t.bpm_destinationNode=targetNode
315
+ t.bpm_transitionName=transitionName
316
+ end
317
+ end
318
+
319
+
320
+
321
+
322
+ class DatatypeMappingCallback < DatatypeMapping
323
+ include Singleton
324
+
325
+ #default string length
326
+ @maxStringLength=10
327
+
328
+ MATCHING_UML_NAME=["XmdaCallbackHandler"]
329
+ def appliesTo?(datatype)
330
+ return true if MATCHING_UML_NAME.include?(datatype.uml_name_one)
331
+ #return true if MATCHING_JAVA_NAME.include?(datatype.java_qualifiedName)
332
+ return false
333
+ end
334
+
335
+ def java_getType
336
+ return "xmda.bpm.api.XmdaCallbackHandler"
337
+ end
338
+
339
+ def java_getJavaToString(jsrc)
340
+ return "null"
341
+ end
342
+ def java_getJavaParse(jsrc)
343
+ return "null"
344
+ end
345
+
346
+ end
347
+ DatatypeMappingCallback.instance #register
348
+