ontomde-java 2.0.0 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. data/History.txt +11 -0
  2. data/Manifest.txt +1 -51
  3. data/lib/ontomde-java.rb +2 -0
  4. data/lib/ontomde-java/crank.rb +8 -8
  5. data/lib/ontomde-java/crank/crankJpa.rb +58 -8
  6. data/lib/ontomde-java/crank/main.rb +38 -21
  7. data/lib/ontomde-java/frontend/command.rb +7 -7
  8. data/lib/ontomde-java/frontend/command.rdoc +0 -583
  9. data/lib/ontomde-java/frontend/defaultOptions.rb +12 -7
  10. data/lib/ontomde-java/frontend/options.rb +19 -2
  11. data/lib/ontomde-java/frontend/steps.rb +36 -5
  12. data/lib/ontomde-java/java/accessorCode.rb +250 -94
  13. data/lib/ontomde-java/java/accessorSignature.rb +50 -4
  14. data/lib/ontomde-java/java/annotationOntoMDE.rb +38 -27
  15. data/lib/ontomde-java/java/component.rb +141 -68
  16. data/lib/ontomde-java/java/enumAssignable.rb +46 -5
  17. data/lib/ontomde-java/java/java.rb +111 -40
  18. data/lib/ontomde-java/java/javaDatatypeMapping.rb +35 -1
  19. data/lib/ontomde-java/java/javadoc.rb +35 -22
  20. data/lib/ontomde-java/java/operationAsClass.rb +13 -0
  21. data/lib/ontomde-java/java/security.rb +10 -2
  22. data/lib/ontomde-java/java/stateMachine.rb +137 -74
  23. data/lib/ontomde-java/java/tenant.rb +1 -0
  24. data/lib/ontomde-java/java/xsd.rb +1 -1
  25. data/lib/ontomde-java/jpa/configuration.rb +25 -1
  26. data/lib/ontomde-java/jpa/finder.rb +48 -13
  27. data/lib/ontomde-java/jpa/jpa.rb +30 -14
  28. data/lib/ontomde-java/jpa/mapping.rb +114 -60
  29. data/lib/ontomde-java/jpa/redefined.rb +21 -5
  30. data/lib/ontomde-java/jpa/simulationAutoImplement.rb +1 -1
  31. data/lib/ontomde-java/jpdl/processOperationToClass.rb +1 -2
  32. data/lib/ontomde-java/kbjava/rdfToJava.rb +25 -16
  33. data/lib/ontomde-java/struts.rb +1 -1
  34. data/lib/ontomde-java/struts/MessageResources.rb +15 -6
  35. data/lib/ontomde-java/struts/action.rb +37 -13
  36. data/lib/ontomde-java/struts/form.rb +97 -7
  37. data/lib/ontomde-java/struts/header.rb +7 -3
  38. data/lib/ontomde-java/struts/jsp_edit.rb +54 -24
  39. data/lib/ontomde-java/struts/jsp_edit_js.rb +1 -1
  40. data/lib/ontomde-java/struts/jsp_index.rb +6 -4
  41. data/lib/ontomde-java/struts/mappingForJsp.rb +11 -7
  42. data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +16 -2
  43. data/lib/ontomde-java/version.rb +1 -1
  44. data/lib/ontomde-java/vmware/vso.rb +329 -0
  45. data/test/test_export_ea7_1_829.rb +5 -0
  46. data/test/test_export_ea7_1_833.rb +5 -0
  47. data/test/test_export_ea7_5_843.rb +5 -0
  48. data/test/test_export_magicDraw.rb +4 -0
  49. data/test/test_export_oe530.rb +1 -1
  50. data/test/test_export_oe600.rb +1 -1
  51. data/test/test_export_rsm60.rb +1 -1
  52. data/test/{uml_test.rb → test_export_unitTests.rb} +6 -1
  53. metadata +9 -56
  54. data/generateRdocFile.sh +0 -16
  55. data/profiling.xls +0 -0
  56. data/test/.classpath +0 -14
  57. data/test/.project +0 -17
  58. data/test/.settings/org.eclipse.jdt.core.prefs +0 -23
  59. data/test/Rakefile +0 -71
  60. data/test/build.xml +0 -34
  61. data/test/classpath.rb +0 -15
  62. data/test/lib/junit-4.1.jar +0 -0
  63. data/test/load1.rb +0 -3
  64. data/test/load2.rb +0 -3
  65. data/test/log4j.properties +0 -46
  66. data/test/model/.project +0 -11
  67. data/test/model/BigProject.mdzip +0 -0
  68. data/test/model/BigProject.mdzip.nt +0 -102866
  69. data/test/model/ClassDiagram.EntArch.gif +0 -0
  70. data/test/model/ClassDiagram.emx.gif +0 -0
  71. data/test/model/ClassDiagram.mdzip.gif +0 -0
  72. data/test/model/model_ea71.bis.ea.xmi +0 -149
  73. data/test/model/model_ea71.ea.xmi +0 -4470
  74. data/test/model/model_ea71.eap +0 -0
  75. data/test/model/model_ea71_README.txt +0 -8
  76. data/test/model/multipleInheritance.emx +0 -466
  77. data/test/model/multipleInheritance.emx.nt +0 -2428
  78. data/test/model/simple1-530.ofp +0 -0
  79. data/test/model/simple1-includedAsReference.emx +0 -169
  80. data/test/model/simple1.emx +0 -3729
  81. data/test/model/simple1.emx.fragments.nt +0 -81
  82. data/test/model/simple1.emx.nt +0 -5760
  83. data/test/model/simple1.mdzip +0 -0
  84. data/test/model/simple1.mdzip.nt +0 -11500
  85. data/test/model/simple1.oe530.nt +0 -1986
  86. data/test/model/simple1.oe600.nt +0 -1627
  87. data/test/src/RuntimeTest.java +0 -656
  88. data/test/src/testsLevel1.java +0 -174
  89. data/test/src/testsLevel2.java +0 -29
  90. data/test/src/testsLevel3.java +0 -40
  91. data/test/test-ea7.sh +0 -15
  92. data/test/test-magicDraw.sh +0 -10
  93. data/test/test-mi.sh +0 -9
  94. data/test/test-oe530.sh +0 -10
  95. data/test/test-oe600.sh +0 -11
  96. data/test/test-rsm.sh +0 -11
  97. data/test/test_export_ea71.rb +0 -5
  98. data/test/trace +0 -419
  99. data/test/uml_test.xls +0 -0
  100. data/test/unit_test.rb +0 -6
@@ -9,7 +9,7 @@ class String
9
9
  # replace escaped carriage return by true carriage return
10
10
  # remove java comments (we are already inside a javadoc)
11
11
  self.gsub(/\\r\\n/,"\n").gsub(/\*\//,'--').gsub(/\/\*/,'--').each { |line|
12
- res.write(" * #{line}".tr("\n"," ").rstrip)
12
+ res.write("\t * #{line}".tr("\n"," ").rstrip)
13
13
  res.write("\n")
14
14
  }
15
15
  end
@@ -27,13 +27,13 @@ module Muml_Classifier
27
27
  sep="\n"
28
28
  }
29
29
  mtk_protected(Mrdf_Resource::NOREVERSE,"javadoc",context[:hasGlobalReverse]||context[:hideJavadocReverseTag]) {
30
- write(" /**\n");
30
+ write("\t/**\n");
31
31
  c.java_writeJavadoc(self)
32
32
  #Note: RSM exports adds an extraneous http://
33
33
  #Note: TODO: This code is RSM 6 specific
34
34
  %{@see <a href="#{context[:rsm6WebDocURI]}#{UriNamespace.instance.unalias(rdf_uri).gsub(/http:\/\/kb#/,"")}-content.html">UML documentation.</a>}.java_writeJavadoc(self) unless context[:rsm6WebDocURI].empty?
35
35
 
36
- write(" */\n")
36
+ write("\t */\n")
37
37
  }
38
38
  end
39
39
  end
@@ -64,13 +64,18 @@ module Muml_Property
64
64
  sep="\n"
65
65
  }
66
66
  mtk_protected(Mrdf_Resource::NOREVERSE,"javadoc",context[:hasGlobalReverse]||context[:hideJavadocReverseTag]) {
67
- write(" /**\n");
67
+ s=mtk_stss {
68
68
  c.java_writeJavadoc(self)
69
69
  #Note: RSM exports adds an extraneous http://
70
70
  #Note: TODO: This code is RSM 6 specific
71
- %{@see <a href="#{context[:rsm6WebDocURI]}#{UriNamespace.instance.unalias(rdf_uri).gsub(/http:\/\/kb#/,"")}-content.html">UML documentation.</a>}.java_writeJavadoc(self) unless context[:rsm6WebDocURI].empty?
71
+ # %{@see <a href="#{context[:rsm6WebDocURI]}#{UriNamespace.instance.unalias(rdf_uri).gsub(/http:\/\/kb#/,"")}-content.html">UML documentation.</a>}.java_writeJavadoc(self) unless context[:rsm6WebDocURI].empty?
72
72
 
73
- write(" */\n")
73
+ }
74
+ if(!s.nil? && !s.empty?)
75
+ write("\t/**\n");
76
+ write(s)
77
+ write("\t */\n")
78
+ end
74
79
  }
75
80
  end
76
81
  end
@@ -100,7 +105,6 @@ module Muml_Operation
100
105
 
101
106
  #internal write javadoc
102
107
  def java_writeJavadoc_internal
103
- write(" /**\n");
104
108
  hasDoc=false
105
109
 
106
110
  # if !java_getter_property.empty? && !java_getter_property_one.uml_isDerived?
@@ -109,7 +113,7 @@ module Muml_Operation
109
113
  # if !java_setter_property.empty? && !java_setter_property_one.uml_isDerived?
110
114
  # "setter for property {@link #{java_setter_property_one.java_javadocLink}}".java_writeJavadoc(self)
111
115
  # end
112
-
116
+ s=mtk_stss {
113
117
  p=java_getter_property_one0
114
118
  if !p.nil?
115
119
  oe=p.umlx_otherEnd
@@ -122,6 +126,10 @@ module Muml_Operation
122
126
  end
123
127
 
124
128
 
129
+ umlx_autoImplementedBy.each {|x|
130
+ %{@see #{x.java_javadocLink(self)}}.java_writeJavadoc(self)
131
+ }
132
+
125
133
  if !uml_ownedComment.empty?
126
134
  #write("* @return the \n");
127
135
  uml_ownedComment.each { |comment|
@@ -140,26 +148,31 @@ module Muml_Operation
140
148
  #if(!hasDoc)
141
149
  # "TODO: document this element in source UML model".java_writeJavadoc(self)
142
150
  #end
151
+
152
+ if !java_setter_property.empty?
153
+ hasDoc=true
154
+ p=java_setter_property_one
155
+ if !p.java_AttributeGlobalGetter.empty?
156
+ "@see #{p.java_AttributeGlobalGetter_one.java_javadocLink}".java_writeJavadoc(self)
157
+ end
158
+ end
143
159
 
144
- uml_ownedParameter.each { |p|
160
+ }
161
+ if(!s.nil? && !s.empty?)
162
+ write("\t/**\n");
163
+ write(s)
164
+ uml_ownedParameter.each { |p|
145
165
  c=""
146
166
  p.uml_ownedComment.each { |comment|
147
167
  c="#{c} #{comment.uml_body_one}"
148
168
  }
149
169
  c=" self-explanatory"
150
170
  #next if c.empty? && p.uml_direction_one.isReturn?
151
- "#{p.uml_direction_one.isReturn? ? %{@return} : %{@param}} #{p.java_Name unless p.uml_direction_one.isReturn?}#{c}".java_writeJavadoc(self)
171
+ "#{p.uml_direction_one.isReturn? ? %{@return}: %{@param }}#{p.java_Name unless p.uml_direction_one.isReturn?}#{c}".java_writeJavadoc(self)
152
172
  }
153
-
154
- if !java_setter_property.empty?
155
- hasDoc=true
156
- p=java_setter_property_one
157
- if !p.java_AttributeGlobalGetter.empty?
158
- "@see #{p.java_AttributeGlobalGetter_one.java_javadocLink}".java_writeJavadoc(self)
159
- end
173
+ write("\t */\n")
160
174
  end
161
175
 
162
- write(" */\n")
163
176
  end
164
177
  end
165
178
 
@@ -172,9 +185,9 @@ module Muml_EnumerationLiteral
172
185
  }
173
186
  mtk_protected(Mrdf_Resource::NOREVERSE,"javadoc",context[:hasGlobalReverse]||context[:hideJavadocReverseTag]) {
174
187
  unless c.empty?
175
- write(" /**\n");
188
+ write("\t/**\n");
176
189
  c.java_writeJavadoc(self)
177
- write(" */\n")
190
+ write("\t */\n")
178
191
  end
179
192
  }
180
193
  end
@@ -235,13 +248,13 @@ module Mrdf_Repository
235
248
  break
236
249
  }
237
250
  mtk_writeSession(fn) {
238
- write("/**\n")
251
+ write("\t/**\n")
239
252
  packageSet.each { |package|
240
253
  package.uml_ownedComment.each { |comment|
241
254
  comment.uml_body_one.java_writeJavadoc(self)
242
255
  }
243
256
  }
244
- write("**/\n\n")
257
+ write("\t */\n\n")
245
258
  write("package #{packageName};\n")
246
259
  }
247
260
  }
@@ -59,6 +59,9 @@ module Mrdf_Repository
59
59
  mpc.db_isTransient=RDF_TRUE
60
60
  mpc.java_addTenantField!
61
61
 
62
+ # propagate template parameters
63
+ mpc.uml_ownedTemplateSignature=c.uml_ownedTemplateSignature unless c.uml_ownedTemplateSignature.empty?
64
+
62
65
  m=mpc.umlx_createAndAddOperation(mpc.rdf_uri+"merge","merge");
63
66
  #TODO merge referenced items
64
67
  m.java_code="return this; "
@@ -70,6 +73,16 @@ module Mrdf_Repository
70
73
  }}
71
74
  end
72
75
  end
76
+ module Muml_Property
77
+ def java_isMethodToClassReturn?
78
+ return uml_name.to_s==Muml_Classifier::STRUTS_RESULT_PARAM_NAME
79
+ end
80
+ def java_isMethodToClassApplyToOrReturn?
81
+ s=uml_name.to_s
82
+ return (s==Muml_Classifier::STRUTS_APPLY_TO_PARAM || s==Muml_Classifier::STRUTS_RESULT_PARAM_NAME)
83
+ end
84
+
85
+ end
73
86
  module Muml_Classifier
74
87
  # source business operation from which this class was generated.
75
88
  rdf_safe_attr_reader_many :struts_bizOperation
@@ -31,6 +31,9 @@ module Mrdf_Repository
31
31
  uml_Class_all.each {|c|
32
32
  next unless c.umlx_businessMethod?
33
33
  next if c.kind_of?(Muml_Interface)
34
+ rns=c.umlx_rootNamespace_one0
35
+ next if (!rns.nil?)&& (rns.java_Name.to_s!='domain')
36
+
34
37
  cn="#{c.java_qualifiedName}.class"
35
38
  c.uml_ownedOperation.each {|op|
36
39
  next unless op.umlx_businessMethod?
@@ -139,6 +142,10 @@ ENDHELP
139
142
 
140
143
  next if c.kind_of?(Muml_Interface)
141
144
  cn="#{c.java_qualifiedName}.class"
145
+
146
+ rns=c.umlx_rootNamespace_one0
147
+ next if (!rns.nil?)&& (rns.java_Name.to_s!='domain')
148
+
142
149
  c.uml_ownedAttribute.each {|op|
143
150
  #next unless op.umlx_businessMethod?
144
151
  #operation was generated from an interface
@@ -205,6 +212,7 @@ END
205
212
  uml_Class_all.each {|c|
206
213
  #sec=false
207
214
  next if c.kind_of?(Muml_Interface) || c.kind_of?(Muml_Enumeration)
215
+ next if c.umlx_hasStereotype?('DTO')
208
216
  c.uml_ownedOperation.each {|o|
209
217
  next unless o.umlx_isSecured?
210
218
  o.java_annotation_add(JAVA_SECURE_ANNOTATION)
@@ -234,8 +242,8 @@ ENDHELP
234
242
 
235
243
  #method default implementation
236
244
  JAVA_GETSTATIC_ROLE_CODE=<<ENDROLECODE
237
- //return empty list (every static role are denied)
238
- return new java.util.HashSet<#{Mrdf_Repository::JAVA_GLOBAL_ACCESS_CONTROL_ENUM}>();
245
+ //return empty list (every static role are denied)
246
+ return new java.util.HashSet<#{Mrdf_Repository::JAVA_GLOBAL_ACCESS_CONTROL_ENUM}>();
239
247
  ENDROLECODE
240
248
 
241
249
  # Adds methods which returns computed grants to user.
@@ -33,59 +33,67 @@ module Muml_Classifier
33
33
  rdf_safe_attr_reader_many :java_FSMContext
34
34
  #State of the StateMachine
35
35
  rdf_safe_attr_reader_many :java_FSMState
36
-
36
+ #list of states
37
+ rdf_safe_attr_reader_many :java_enumState
38
+
37
39
  def java_addStateManagement
38
40
 
39
41
  fsmState = self.java_FSMState_one
40
42
  fsmContext = self.java_FSMContext_one
41
-
43
+
44
+
45
+
42
46
  #TODO Corriger le bug avec JPA qui emp�che de rajouter cette interface
43
47
  # typecomp=umlx_getOrCreateInterface("xmda.fsm.FsmComponent<#{fsmContext.java_qualifiedName}>")
44
48
  # typecomp.java_isGeneric=RDF_TRUE
45
49
  # umlx_createAndAddImplementation(typecomp)
46
50
 
47
- fsm=umlx_createAndAddProperty(rdf_uri+"_fsm", "fsmCtx")
51
+ fsm=umlx_createAndAddProperty(rdf_uri+'_fsm', 'fsmCtx')
48
52
  fsm.uml_type=java_FSMContext_one
49
53
  fsm.db_isTransient=RDF_TRUE
50
54
  fsm.uml_visibility=::Cuml_VisibilityKind::Private
51
- fsm.java_annotation_add("@javax.persistence.Transient")
55
+ fsm.java_annotation_add('@javax.persistence.Transient')
56
+
52
57
  get=java_addGlobalGetter!(fsm)
53
58
  get.java_code=<<CODE
54
- if (fsmCtx==null || getPersistedState().compareToIgnoreCase(fsmCtx.getState().getName()) != 0) {
55
- saasAdministration.fsm.MDAaasApplicationInstanceState currentState = saasAdministration.fsm.MDAaasApplicationInstanceState.findStateByName(getPersistedState());
56
- fsmCtx = new saasAdministration.fsm.MDAaasApplicationInstanceFSMContext(this, currentState);
59
+ if (fsmCtx==null || getPersistedState().toString().compareToIgnoreCase(fsmCtx.getState().getName()) != 0) {
60
+ #{fsmState.java_qualifiedName} currentState = #{fsmState.java_qualifiedName}.findStateByName(getPersistedState().toString());
61
+ fsmCtx = new #{fsmContext.java_qualifiedName}(this, currentState);
57
62
  }
58
63
  return fsmCtx;
59
64
 
60
65
  CODE
61
66
 
62
- persState=umlx_createAndAddProperty(rdf_uri+"_state", "persistedState")
63
- persState.uml_type=umlx_dataType_string
67
+ persState=umlx_createAndAddProperty(rdf_uri+'_state', 'persistedState')
68
+ persState.uml_type=fsmContext.java_enumState_one#umlx_dataType_string
64
69
  persState.uml_visibility=::Cuml_VisibilityKind::Private
70
+
71
+ java_addAccessorsFor!(persState)
65
72
  java_addGlobalSetter!(persState)
66
73
  getState=java_addGlobalGetter!(persState)
67
74
  getState.java_code=<<CODE
68
- if (persistedState==null || persistedState.length()<=0) {
69
- fsmCtx = new saasAdministration.fsm.MDAaasApplicationInstanceFSMContext(this);
70
- setPersistedState(fsmCtx.getState().getName());
75
+ if (persistedState==null) {
76
+ fsmCtx = new #{fsmContext.java_qualifiedName}(this);
77
+ setPersistedState(#{fsmContext.java_enumState_one.java_qualifiedName}.valueOf(fsmCtx.getState().getName()));
71
78
  }
72
79
  return persistedState;
73
80
  CODE
74
81
 
75
82
 
76
83
  # Gestion de la synchronisation du champ persistedState et fsmCtx transient
77
- ent=umlx_getOrCreateInterface("java.beans.PropertyChangeListener")
84
+ ent=umlx_getOrCreateInterface('java.beans.PropertyChangeListener')
78
85
  umlx_createAndAddImplementation(ent)
79
- m=umlx_createAndAddOperation(rdf_uri+"_prop","propertyChange")
86
+ m=umlx_createAndAddOperation(rdf_uri+'_prop','propertyChange')
80
87
  m.uml_visibility=Cuml_VisibilityKind::Public
81
- arg1=m.umlx_createAndAddParameter(m.rdf_uri+"_evt","evt")
88
+ arg1=m.umlx_createAndAddParameter(m.rdf_uri+'_evt','evt')
82
89
  arg1.uml_direction=Cuml_ParameterDirectionKind::In
83
90
  arg1.uml_upperValue=umlx_literal(1)
84
91
  arg1.uml_lowerValue=umlx_literal(1)
85
- arg1.uml_type=umlx_getOrCreateInterface("java.beans.PropertyChangeEvent")
92
+ arg1.uml_type=umlx_getOrCreateInterface('java.beans.PropertyChangeEvent')
86
93
  m.java_code=<<CODE
87
94
  #{fsmState.java_qualifiedName} newState = (#{fsmState.java_qualifiedName}) evt.getNewValue();
88
- setPersistedState(newState.getName());
95
+ setPersistedState(#{fsmContext.java_enumState_one.java_qualifiedName}.valueOf(newState.getName()));
96
+ //setPersistedState(newState.getName());
89
97
  CODE
90
98
 
91
99
  end
@@ -100,11 +108,11 @@ CODE
100
108
  def java_getOrCreateOperationForTransition(t)
101
109
  opForT = findOperationByName("#{t.uml_name}")
102
110
  if opForT.nil?
103
- opForT=umlx_createAndAddOperation(rdf_uri+"_#{t.uml_name}","#{t.uml_name}")
111
+ opForT=umlx_createAndAddOperation(rdf_uri+"_#{t.rdf_uri.str_to_uri}","#{t.uml_name}")
104
112
  opForT.uml_visibility=Cuml_VisibilityKind::Public
105
113
  opForT.umlx_businessMethod=RDF_TRUE
106
114
  end
107
- opForT.java_annotation_add("@xmda.fsm.StateMachineTransition")
115
+ opForT.java_annotation_add('@xmda.fsm.StateMachineTransition')
108
116
  opForT.java_isFsmOperation=true
109
117
  opForT.java_code=<<CODE
110
118
  getFsmCtx().#{opForT.java_Name}();
@@ -114,7 +122,7 @@ end
114
122
  module Muml_FinalState
115
123
  def fsm_name
116
124
  n=uml_name_one0
117
- return n.nil? ? "Final" : n
125
+ return n.nil? ? 'Final' : n
118
126
  end
119
127
  end
120
128
  module Muml_Pseudostate
@@ -125,10 +133,10 @@ module Muml_Pseudostate
125
133
  self.uml_outgoing.each { |t|
126
134
  fsmState = myClazz.java_FSMState_one
127
135
  fsmContext = myClazz.java_FSMContext_one
128
- construct=fsmContext.umlx_createAndAddOperation(fsmState.rdf_uri+"_constructor","constructor")
129
- construct.uml_appliedStereotype_add(fsmContext.umlx_getOrCreateStereotype("Create"))
136
+ construct=fsmContext.umlx_createAndAddOperation(fsmState.rdf_uri+'_constructor','constructor')
137
+ construct.uml_appliedStereotype_add(fsmContext.umlx_getOrCreateStereotype('Create'))
130
138
  construct.uml_visibility=Cuml_VisibilityKind::Public
131
- arg1=construct.umlx_createAndAddParameter(construct.rdf_uri+"_owner","owner")
139
+ arg1=construct.umlx_createAndAddParameter(construct.rdf_uri+'_owner','owner')
132
140
  arg1.uml_direction=Cuml_ParameterDirectionKind::In
133
141
  arg1.uml_upperValue=fsmState.umlx_literal(1)
134
142
  arg1.uml_lowerValue=fsmState.umlx_literal(1)
@@ -140,15 +148,15 @@ module Muml_Pseudostate
140
148
  #{fsmState.java_qualifiedName}.#{t.uml_target_one.java_Name.downcase}state.Entry(this);
141
149
  CODE
142
150
 
143
- construct2=fsmContext.umlx_createAndAddOperation(fsmState.rdf_uri+"_constructor2","constructor2")
144
- construct2.uml_appliedStereotype_add(fsmContext.umlx_getOrCreateStereotype("Create"))
151
+ construct2=fsmContext.umlx_createAndAddOperation(fsmState.rdf_uri+'_constructor2','constructor2')
152
+ construct2.uml_appliedStereotype_add(fsmContext.umlx_getOrCreateStereotype('Create'))
145
153
  construct2.uml_visibility=Cuml_VisibilityKind::Public
146
- arg3=construct2.umlx_createAndAddParameter(construct2.rdf_uri+"_owner","owner")
154
+ arg3=construct2.umlx_createAndAddParameter(construct2.rdf_uri+'_owner','owner')
147
155
  arg3.uml_direction=Cuml_ParameterDirectionKind::In
148
156
  arg3.uml_upperValue=fsmState.umlx_literal(1)
149
157
  arg3.uml_lowerValue=fsmState.umlx_literal(1)
150
158
  arg3.uml_type=myClazz
151
- arg2=construct2.umlx_createAndAddParameter(construct2.rdf_uri+"_initState","initState")
159
+ arg2=construct2.umlx_createAndAddParameter(construct2.rdf_uri+'_initState','initState')
152
160
  arg2.uml_direction=Cuml_ParameterDirectionKind::In
153
161
  arg2.uml_upperValue=fsmState.umlx_literal(1)
154
162
  arg2.uml_lowerValue=fsmState.umlx_literal(1)
@@ -161,8 +169,9 @@ CODE
161
169
 
162
170
  }
163
171
  else
164
- raise Warning.new,"PseudState not managed except ::Cuml_PseudostateKind::Initial"
172
+ raise Warning.new,'PseudState not managed except ::Cuml_PseudostateKind::Initial'
165
173
  end
174
+ return nil
166
175
  end
167
176
 
168
177
  def fsm_name
@@ -178,35 +187,50 @@ module Muml_Signal
178
187
  end
179
188
  module Muml_SignalTrigger
180
189
  end
190
+
191
+ module Muml_Class
192
+ def getFSMPackage
193
+ myClazz=self
194
+ p=myClazz.umlx_package
195
+ p=p.umlx_getOrCreatePackage(myClazz.java_Name+'_fsm',p)
196
+ return p
197
+ end
198
+ end
199
+
181
200
  module Muml_State
182
201
  def processVertex(myClazz)
183
202
  # Generate the class for this state
184
- p=myClazz.umlx_package
185
- p=p.umlx_getOrCreatePackage("fsm",p)
203
+ p=myClazz.getFSMPackage
186
204
 
187
205
  fsmState = myClazz.java_FSMState_one
188
206
  fsmContext = myClazz.java_FSMContext_one
189
207
 
190
- state=p.umlx_createAndAddClass(self.rdf_uri+"_State")
208
+ state=p.umlx_createAndAddClass(self.rdf_uri+'_State')
209
+ state.java_addSerialVersionUID!
191
210
  state.uml_name="#{self.java_Name}State"
192
211
  state.db_isTransient=RDF_TRUE
193
212
  state.umlx_createAndAddGeneralization(fsmState)
194
- construct=state.umlx_createAndAddOperation(state.rdf_uri+"_constructor","constructor")
195
- construct.uml_appliedStereotype_add(state.umlx_getOrCreateStereotype("Create"))
213
+
214
+ enumState=fsmContext.java_enumState_one
215
+ lit=enumState.umlx_createAndAddLiteral(state.java_Name)
216
+ lit.java_initParameterValue_add("#{state.java_qualifiedName}.class")
217
+
218
+ construct=state.umlx_createAndAddOperation(state.rdf_uri+'_constructor','constructor')
219
+ construct.uml_appliedStereotype_add(state.umlx_getOrCreateStereotype('Create'))
196
220
  construct.uml_visibility=Cuml_VisibilityKind::Public
197
221
  construct.java_code=<<CODE
198
- super("#{state.java_qualifiedName}");
222
+ super(#{enumState.java_qualifiedName}.#{lit.java_Name}.toString());
199
223
  CODE
200
224
 
201
- pconst=fsmState.umlx_createAndAddProperty(state.rdf_uri+"_Const", "#{state.java_Name.downcase}")
202
- pconst.java_noAccessors="true"
225
+ pconst=fsmState.umlx_createAndAddProperty(state.rdf_uri+'_Const', "#{state.java_Name.downcase}")
226
+ pconst.java_noAccessors=RDF_TRUE
203
227
  pconst.uml_type=state
204
228
  pconst.uml_visibility=Cuml_VisibilityKind::Public
205
229
  pconst.uml_isStatic=RDF_TRUE
206
- pconst.java_isFinal="true"
207
- pconst.java_code=<<CODE
208
- new #{state.java_qualifiedName}();
209
- CODE
230
+ # pconst.java_isFinal="true"
231
+ # pconst.java_code=<<CODE
232
+ # new #{state.java_qualifiedName}();
233
+ #CODE
210
234
 
211
235
  # Ajouter les m�thodes � la super classe State et au State concern�
212
236
  # Ajouter ou retrouver la m�thode de la classe m�re
@@ -214,9 +238,9 @@ CODE
214
238
  m = fsmState.findOperationByName("#{t.uml_name}")
215
239
  # Faire une seule fois (cas ou on a plusieurs transitions de m�me nom)
216
240
  if m.nil?
217
- m=fsmState.umlx_createAndAddOperation(fsmState.rdf_uri+"_#{t.uml_name}","#{t.uml_name}")
241
+ m=fsmState.umlx_createAndAddOperation(fsmState.rdf_uri+"_#{t.rdf_uri}","#{t.uml_name}")
218
242
  m.uml_visibility=Cuml_VisibilityKind::Public
219
- em=m.umlx_createAndAddParameter(m.rdf_uri+"_ctx","ctx")
243
+ em=m.umlx_createAndAddParameter(m.rdf_uri+'_ctx','ctx')
220
244
  em.uml_type=fsmContext
221
245
  em.uml_direction=Cuml_ParameterDirectionKind::In
222
246
  em.uml_upperValue=fsmState.umlx_literal(1)
@@ -225,20 +249,20 @@ CODE
225
249
  defaultBehavior(ctx);
226
250
  CODE
227
251
 
228
- m3=fsmContext.umlx_createAndAddOperation(fsmContext.rdf_uri+"_#{t.uml_name}","#{t.uml_name}")
252
+ m3=fsmContext.umlx_createAndAddOperation(fsmContext.rdf_uri+"_#{t.rdf_uri.str_to_uri}","#{t.uml_name}")
229
253
  m3.uml_visibility=Cuml_VisibilityKind::Public
230
254
  m3.java_code=<<CODE
231
- _transition = "#{t.uml_name}";
232
- getState().#{t.uml_name}(this);
255
+ _transition = "#{m3.java_Name}";
256
+ getState().#{m3.java_Name}(this);
233
257
  _transition = null;
234
258
  CODE
235
259
 
236
260
  myClazz.java_getOrCreateOperationForTransition(t)
237
261
 
238
262
  end
239
- m2=state.umlx_createAndAddOperation(state.rdf_uri+"_#{t.uml_name}","#{t.uml_name}")
263
+ m2=state.umlx_createAndAddOperation(state.rdf_uri+"_#{t.rdf_uri.str_to_uri}","#{t.uml_name}")
240
264
  m2.uml_visibility=Cuml_VisibilityKind::Public
241
- em2=m2.umlx_createAndAddParameter(m2.rdf_uri+"_ctx","ctx")
265
+ em2=m2.umlx_createAndAddParameter(m2.rdf_uri+'_ctx','ctx')
242
266
  em2.uml_type=fsmContext
243
267
  em2.uml_direction=Cuml_ParameterDirectionKind::In
244
268
  em2.uml_upperValue=state.umlx_literal(1)
@@ -250,7 +274,7 @@ CODE
250
274
  CODE
251
275
 
252
276
  }
253
-
277
+ return state
254
278
  end
255
279
  def fsm_name
256
280
  n=uml_name_one0
@@ -265,22 +289,26 @@ module Muml_StateMachine
265
289
  muml=mrdf.umlx_reserved_model
266
290
  myClazz=mrdf.java_getClassWithQualifiedName("#{self.java_qualifiedName}")
267
291
  raise Warning.new,"No Class with the same bame as ths StateMachine #{self.java_qualifiedName} !!!!" if myClazz.nil?
268
- p=myClazz.umlx_package
269
- p=p.umlx_getOrCreatePackage("fsm",p)
292
+
293
+ p=myClazz.getFSMPackage
294
+
295
+ #p=myClazz.umlx_package
296
+ #p=p.umlx_getOrCreatePackage('fsm',p)
270
297
 
271
- fsmCtx=umlx_getOrCreateClass("xmda.fsm.FSMContext")
272
- fsmCtx.umlx_external="true"
273
- fsmState=umlx_getOrCreateClass("xmda.fsm.State")
274
- fsmState.umlx_external="true"
298
+ fsmCtx=umlx_getOrCreateClass('xmda.fsm.FSMContext')
299
+ fsmCtx.umlx_external=RDF_TRUE
300
+ fsmState=umlx_getOrCreateClass('xmda.fsm.State')
301
+ fsmState.umlx_external=RDF_TRUE
275
302
 
276
- appFsmState=p.umlx_createAndAddClass(myClazz.rdf_uri+"_FSMState")
303
+ appFsmState=p.umlx_createAndAddClass(myClazz.rdf_uri+'_FSMState')
304
+ appFsmState.java_addSerialVersionUID!
277
305
  appFsmState.uml_name="#{myClazz.java_Name}State"
278
306
  appFsmState.db_isTransient=RDF_TRUE
279
307
  appFsmState.umlx_createAndAddGeneralization(fsmState)
280
308
  myClazz.java_FSMState = appFsmState
281
- construct=appFsmState.umlx_createAndAddOperation(fsmCtx.rdf_uri+"_constructor","constructor")
282
- construct.uml_appliedStereotype_add(appFsmState.umlx_getOrCreateStereotype("Create"))
283
- arg1=construct.umlx_createAndAddParameter(construct.rdf_uri+"_name","name")
309
+ construct=appFsmState.umlx_createAndAddOperation(fsmCtx.rdf_uri+'_constructor','constructor')
310
+ construct.uml_appliedStereotype_add(appFsmState.umlx_getOrCreateStereotype('Create'))
311
+ arg1=construct.umlx_createAndAddParameter(construct.rdf_uri+'_name','name')
284
312
  arg1.uml_direction=Cuml_ParameterDirectionKind::In
285
313
  arg1.uml_upperValue=umlx_literal(1)
286
314
  arg1.uml_lowerValue=umlx_literal(1)
@@ -290,26 +318,26 @@ module Muml_StateMachine
290
318
  super(name);
291
319
  allStates.put(getName(), this);
292
320
  CODE
293
- pconst=appFsmState.umlx_createAndAddProperty(appFsmState.rdf_uri+"_AllConst", "allStates")
294
- pconst.java_noAccessors="true"
295
- typeconst=appFsmState.umlx_getOrCreateInterface("java.util.HashMap<String, #{appFsmState.java_qualifiedName}>")
296
- typeconst.java_isGeneric=RDF_TRUE
321
+ pconst=appFsmState.umlx_createAndAddProperty(appFsmState.rdf_uri+'_AllConst', 'allStates')
322
+ pconst.java_noAccessors=RDF_TRUE
323
+ typeconst=appFsmState.umlx_getOrCreateGeneric("java.util.HashMap","String,#{appFsmState.java_qualifiedName}")
324
+ #typeconst.java_isGeneric=RDF_TRUE
297
325
  pconst.uml_type=typeconst
298
326
  pconst.uml_visibility=Cuml_VisibilityKind::Private
299
327
  pconst.uml_isStatic=RDF_TRUE
300
- pconst.java_isFinal="true"
301
- pconst.java_code=<<CODE
302
- new #{typeconst.java_qualifiedName}();
303
- CODE
304
- mfind=appFsmState.umlx_createAndAddOperation(appFsmState.rdf_uri+"_find","findStateByName")
328
+ # pconst.java_isFinal="true"
329
+ # pconst.java_code=<<CODE
330
+ # new #{typeconst.java_qualifiedName}();
331
+ #CODE
332
+ mfind=appFsmState.umlx_createAndAddOperation(appFsmState.rdf_uri+'_find','findStateByName')
305
333
  mfind.uml_visibility=Cuml_VisibilityKind::Public
306
334
  mfind.uml_isStatic=RDF_TRUE
307
- argfind=mfind.umlx_createAndAddParameter(mfind.rdf_uri+"_name","name")
335
+ argfind=mfind.umlx_createAndAddParameter(mfind.rdf_uri+'_name','name')
308
336
  argfind.uml_direction=Cuml_ParameterDirectionKind::In
309
337
  argfind.uml_upperValue=umlx_literal(1)
310
338
  argfind.uml_lowerValue=umlx_literal(1)
311
339
  argfind.uml_type=umlx_dataType_string
312
- rp=mfind.umlx_createAndAddParameter(mfind.rdf_uri+"_ret_param","return")
340
+ rp=mfind.umlx_createAndAddParameter(mfind.rdf_uri+'_ret_param','return')
313
341
  rp.uml_direction=Cuml_ParameterDirectionKind::Return
314
342
  rp.uml_upperValue=umlx_literal(1)
315
343
  rp.uml_lowerValue=umlx_literal(1)
@@ -319,14 +347,31 @@ CODE
319
347
  CODE
320
348
 
321
349
 
322
- appFsmCtx=p.umlx_createAndAddClass(myClazz.rdf_uri+"_FSMContext")
350
+ appFsmCtx=p.umlx_createAndAddClass(myClazz.rdf_uri+'_FSMContext')
351
+ appFsmCtx.java_addSerialVersionUID!
323
352
  appFsmCtx.uml_name="#{myClazz.java_Name}FSMContext"
324
353
  appFsmCtx.db_isTransient=RDF_TRUE
325
354
  appFsmCtx.umlx_createAndAddGeneralization(fsmCtx)
326
355
  myClazz.java_FSMContext = appFsmCtx
327
- m=appFsmCtx.umlx_createAndAddOperation(fsmCtx.rdf_uri+"_ret","getState")
356
+ enumState=appFsmCtx.umlx_owner_one.umlx_createAndAddEnumeration(appFsmCtx.rdf_uri+"_fsmStateEnum",myClazz.uml_name_one.to_s+"_fsmStates")
357
+ enumState.umlx_createAndAddImplementation(enumState.java_getJavaEnumInterface)
358
+ enumState.umlx_createAndAddImplementation(umlx_getOrCreateInterface('xmda.fsm.FsmStateEnum'))
359
+
360
+ enumState.java_customCode=<<ENDCUSTOM
361
+ public Class<?> getStateClass() {
362
+ return stateClass ;
363
+ }
364
+ Class<?> stateClass=null;
365
+ #{enumState.java_Name}(Class<?> x) {
366
+ stateClass=x;
367
+ }
368
+ ENDCUSTOM
369
+
370
+ appFsmCtx.java_enumState=enumState
371
+
372
+ m=appFsmCtx.umlx_createAndAddOperation(fsmCtx.rdf_uri+'_ret','getState')
328
373
  m.uml_visibility=Cuml_VisibilityKind::Public
329
- rp=m.umlx_createAndAddParameter(m.rdf_uri+"_ret_param","return")
374
+ rp=m.umlx_createAndAddParameter(m.rdf_uri+'_ret_param','return')
330
375
  rp.uml_direction=Cuml_ParameterDirectionKind::Return
331
376
  rp.uml_upperValue=umlx_literal(1)
332
377
  rp.uml_lowerValue=umlx_literal(1)
@@ -334,18 +379,32 @@ CODE
334
379
  m.java_code=<<CODE
335
380
  return (#{appFsmState.java_qualifiedName})_state;
336
381
  CODE
337
- p2=appFsmCtx.umlx_createAndAddProperty(fsmState.rdf_uri+"_prop_owner", "owner")
382
+ p2=appFsmCtx.umlx_createAndAddProperty(fsmState.rdf_uri+'_prop_owner', 'owner')
338
383
  p2.uml_type=myClazz
339
384
  p2.uml_visibility=::Cuml_VisibilityKind::Private
340
385
  appFsmCtx.java_addGlobalGetter!(p2)
341
386
  appFsmCtx.java_addGlobalSetter!(p2)
342
387
 
388
+ codeBlocStatic = <<CODE
389
+ allStates = new #{typeconst.java_qualifiedName}();\n
390
+ CODE
343
391
  uml_region.each { |reg|
344
392
  reg.uml_subvertex.each { |v|
345
- v.processVertex(myClazz)
393
+ state = v.processVertex(myClazz)
394
+ if !state.nil?
395
+ # Ajouter l'initalisation de la propri�t� dans le bloc statique
396
+ codeBlocStatic << "#{state.java_Name.downcase} = new #{state.java_qualifiedName}();\n"
397
+ end
346
398
  }
347
399
  }
348
400
 
401
+ blocstatic=appFsmState.umlx_createAndAddOperation(appFsmState.rdf_uri+'_static','static_for_fsm')
402
+ blocstatic.uml_visibility=Cuml_VisibilityKind::Public
403
+ blocstatic.uml_isStatic=RDF_TRUE
404
+ blocstatic.java_code=codeBlocStatic
405
+ stereo = p.umlx_createAndAddStereotype(rdf_uri+'Create', 'Create')
406
+ blocstatic.uml_appliedStereotype = stereo
407
+
349
408
  # Rajouter le contexte dans la classe
350
409
  myClazz.java_addStateManagement
351
410
  #Chercher ou la g�n�rer pour chaque transition
@@ -407,8 +466,12 @@ module Muml_VisibilityKind
407
466
  end
408
467
  module Mrdf_Repository
409
468
  def java_addStateMachine!()
469
+ s=Set.new
410
470
  each_value { |sm|
411
471
  next unless sm.kind_of?(Muml_StateMachine)
472
+ s.add(sm)
473
+ }
474
+ s.each { |sm|
412
475
  sm.processStateMachine
413
476
  }
414
477
  end