ontomde-java 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. data/History.txt +10 -0
  2. data/Manifest.txt +156 -0
  3. data/README.txt +98 -0
  4. data/Rakefile +21 -0
  5. data/bin/ontomde-java +5 -0
  6. data/generateRdocFile.sh +16 -0
  7. data/lib/ontomde-java.rb +45 -0
  8. data/lib/ontomde-java/crank.rb +13 -0
  9. data/lib/ontomde-java/crank/context.rb +384 -0
  10. data/lib/ontomde-java/crank/crankJpa.rb +103 -0
  11. data/lib/ontomde-java/crank/equals.rb +83 -0
  12. data/lib/ontomde-java/crank/facelets.rb +243 -0
  13. data/lib/ontomde-java/crank/facesconfig.rb +113 -0
  14. data/lib/ontomde-java/crank/helper.rb +46 -0
  15. data/lib/ontomde-java/crank/main.rb +51 -0
  16. data/lib/ontomde-java/crank/menu.rb +39 -0
  17. data/lib/ontomde-java/crank/menu2.rb +78 -0
  18. data/lib/ontomde-java/crank/validation.rb +34 -0
  19. data/lib/ontomde-java/ejb2.rb +3 -0
  20. data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
  21. data/lib/ontomde-java/flex.rb +7 -0
  22. data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
  23. data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
  24. data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
  25. data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
  26. data/lib/ontomde-java/flex/fileTypes.rb +19 -0
  27. data/lib/ontomde-java/flex/main.rb +347 -0
  28. data/lib/ontomde-java/frontend/command.rb +324 -0
  29. data/lib/ontomde-java/frontend/command.rdoc +583 -0
  30. data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
  31. data/lib/ontomde-java/frontend/options.rb +555 -0
  32. data/lib/ontomde-java/frontend/steps.rb +287 -0
  33. data/lib/ontomde-java/java/accessorCode.rb +528 -0
  34. data/lib/ontomde-java/java/accessorSignature.rb +347 -0
  35. data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
  36. data/lib/ontomde-java/java/apache.rb +34 -0
  37. data/lib/ontomde-java/java/build.rb +80 -0
  38. data/lib/ontomde-java/java/collectionMapping.rb +112 -0
  39. data/lib/ontomde-java/java/component.rb +446 -0
  40. data/lib/ontomde-java/java/contextualize.rb +43 -0
  41. data/lib/ontomde-java/java/enumAssignable.rb +75 -0
  42. data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
  43. data/lib/ontomde-java/java/equals.rb +91 -0
  44. data/lib/ontomde-java/java/groovy.rb +95 -0
  45. data/lib/ontomde-java/java/java.rb +1329 -0
  46. data/lib/ontomde-java/java/java.rdoc +78 -0
  47. data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
  48. data/lib/ontomde-java/java/javaHelper.rb +25 -0
  49. data/lib/ontomde-java/java/java_todo.rdoc +3 -0
  50. data/lib/ontomde-java/java/javadoc.rb +254 -0
  51. data/lib/ontomde-java/java/meta.rb +28 -0
  52. data/lib/ontomde-java/java/operationAsClass.rb +144 -0
  53. data/lib/ontomde-java/java/security.rb +260 -0
  54. data/lib/ontomde-java/java/stateMachine.rb +415 -0
  55. data/lib/ontomde-java/java/tenant.rb +65 -0
  56. data/lib/ontomde-java/java/xsd.rb +1363 -0
  57. data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
  58. data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
  59. data/lib/ontomde-java/jpa.rb +17 -0
  60. data/lib/ontomde-java/jpa/configuration.rb +176 -0
  61. data/lib/ontomde-java/jpa/finder.rb +102 -0
  62. data/lib/ontomde-java/jpa/jpa.rb +531 -0
  63. data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
  64. data/lib/ontomde-java/jpa/locking.rb +18 -0
  65. data/lib/ontomde-java/jpa/mapping.rb +314 -0
  66. data/lib/ontomde-java/jpa/redefined.rb +77 -0
  67. data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
  68. data/lib/ontomde-java/jpdl.rb +9 -0
  69. data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
  70. data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
  71. data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
  72. data/lib/ontomde-java/jpdl/constant.rb +5 -0
  73. data/lib/ontomde-java/jpdl/graphic.rb +52 -0
  74. data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
  75. data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
  76. data/lib/ontomde-java/jpdl/main.rb +348 -0
  77. data/lib/ontomde-java/jpdl/main.rdoc +2 -0
  78. data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
  79. data/lib/ontomde-java/kbjava.rb +6 -0
  80. data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
  81. data/lib/ontomde-java/struts.rb +27 -0
  82. data/lib/ontomde-java/struts/MessageResources.rb +359 -0
  83. data/lib/ontomde-java/struts/action.rb +883 -0
  84. data/lib/ontomde-java/struts/blob.rb +11 -0
  85. data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
  86. data/lib/ontomde-java/struts/footer.rb +128 -0
  87. data/lib/ontomde-java/struts/form.rb +450 -0
  88. data/lib/ontomde-java/struts/header.rb +37 -0
  89. data/lib/ontomde-java/struts/header_link.rb +39 -0
  90. data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
  91. data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
  92. data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
  93. data/lib/ontomde-java/struts/jsp_index.rb +136 -0
  94. data/lib/ontomde-java/struts/localeAction.rb +641 -0
  95. data/lib/ontomde-java/struts/main.rb +41 -0
  96. data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
  97. data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
  98. data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
  99. data/lib/ontomde-java/struts/reloadAction.rb +33 -0
  100. data/lib/ontomde-java/struts/spring.rb +89 -0
  101. data/lib/ontomde-java/struts/struts-config.rb +232 -0
  102. data/lib/ontomde-java/struts/validation.rb +116 -0
  103. data/lib/ontomde-java/struts/validator.rb +341 -0
  104. data/lib/ontomde-java/struts/webXml.rb +195 -0
  105. data/lib/ontomde-java/struts/xmlForm.rb +308 -0
  106. data/lib/ontomde-java/version.rb +5 -0
  107. data/profiling.xls +0 -0
  108. data/test/.classpath +14 -0
  109. data/test/.project +17 -0
  110. data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
  111. data/test/Rakefile +71 -0
  112. data/test/build.xml +34 -0
  113. data/test/classpath.rb +15 -0
  114. data/test/lib/junit-4.1.jar +0 -0
  115. data/test/load1.rb +3 -0
  116. data/test/load2.rb +3 -0
  117. data/test/log4j.properties +46 -0
  118. data/test/model/.project +11 -0
  119. data/test/model/BigProject.mdzip +0 -0
  120. data/test/model/BigProject.mdzip.nt +102866 -0
  121. data/test/model/ClassDiagram.EntArch.gif +0 -0
  122. data/test/model/ClassDiagram.emx.gif +0 -0
  123. data/test/model/ClassDiagram.mdzip.gif +0 -0
  124. data/test/model/model_ea71.bis.ea.xmi +149 -0
  125. data/test/model/model_ea71.ea.xmi +4470 -0
  126. data/test/model/model_ea71.eap +0 -0
  127. data/test/model/model_ea71_README.txt +8 -0
  128. data/test/model/multipleInheritance.emx +466 -0
  129. data/test/model/multipleInheritance.emx.nt +2428 -0
  130. data/test/model/simple1-530.ofp +0 -0
  131. data/test/model/simple1-includedAsReference.emx +169 -0
  132. data/test/model/simple1.emx +3729 -0
  133. data/test/model/simple1.emx.fragments.nt +81 -0
  134. data/test/model/simple1.emx.nt +5760 -0
  135. data/test/model/simple1.mdzip +0 -0
  136. data/test/model/simple1.mdzip.nt +11500 -0
  137. data/test/model/simple1.oe530.nt +1986 -0
  138. data/test/model/simple1.oe600.nt +1627 -0
  139. data/test/src/RuntimeTest.java +656 -0
  140. data/test/src/testsLevel1.java +174 -0
  141. data/test/src/testsLevel2.java +29 -0
  142. data/test/src/testsLevel3.java +40 -0
  143. data/test/test-ea7.sh +15 -0
  144. data/test/test-magicDraw.sh +10 -0
  145. data/test/test-mi.sh +9 -0
  146. data/test/test-oe530.sh +10 -0
  147. data/test/test-oe600.sh +11 -0
  148. data/test/test-rsm.sh +11 -0
  149. data/test/test_export_ea71.rb +5 -0
  150. data/test/test_export_oe530.rb +4 -0
  151. data/test/test_export_oe600.rb +4 -0
  152. data/test/test_export_rsm60.rb +4 -0
  153. data/test/trace +419 -0
  154. data/test/uml_test.rb +1434 -0
  155. data/test/uml_test.xls +0 -0
  156. data/test/unit_test.rb +6 -0
  157. metadata +224 -0
@@ -0,0 +1,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
+