ontomde-uml2-flex 1.0.4

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.
@@ -0,0 +1,347 @@
1
+ # http://livedocs.adobe.com/specs/actionscript/3/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=as3_specification.html
2
+
3
+ require "rdfmda-uml2"
4
+ require "rdfmda-uml2_java"
5
+
6
+ module Muml_DataType
7
+ #Predefined UML datatype to Java type mapping.
8
+ UML_TO_ACTIONSCRIPT_PRIMITIVE_TYPE_MAPPING.clear
9
+ UML_TO_ACTIONSCRIPT_PRIMITIVE_TYPE_MAPPING.merge!({"byte"=>"byte","short"=>"Number","long"=>"Number","Boolean"=>"boolean","boolean"=>"boolean","int"=>"Number","integer"=>"Number","Integer"=>"Number", "String"=>"String","string"=>"String","date"=>"Date","double"=>"Number","char"=>"char"})
10
+ end
11
+
12
+
13
+
14
+ module Muml_TypedElement
15
+ #ActionScript Collection container type.
16
+ ACTION_SCRIPT_COLLECTION='mx.collections.ArrayCollection'
17
+ end
18
+ module Muml_Classifier
19
+
20
+ # No default import
21
+ ACTIONSCRIPT_DEFAULT_IMPORTS.clear
22
+ ACTIONSCRIPT_DEFAULT_IMPORTS<< Muml_TypedElement::ACTION_SCRIPT_COLLECTION
23
+
24
+ ACTIONSCRIPT_IMPORT_COMPUTED_DEPENDENCIES=true
25
+
26
+ def as_FileName
27
+ return "#{as_FilePath}#{as_Name}.as"
28
+ end
29
+
30
+ def as_writePackageDeclaration(&block)
31
+ p = umlx_package
32
+ if p.nil?
33
+ write("package {\n")
34
+ else
35
+ write("package #{p.as_qualifiedName} {\n")
36
+ end
37
+ yield
38
+ if p.nil?
39
+ write("//end of package *unnamed*\n")
40
+ else
41
+ write("} // end of package #{p.as_qualifiedName};\n")
42
+ end
43
+ end
44
+ def as_FDS_writeConfiguration
45
+ write %{
46
+ <destination id="#{as_destinationName}">
47
+ <adapter ref="#{Mrdf_Model::ACTIONSCRIPT_JAVA_ADAPTER_ID}"/>
48
+ <properties>
49
+ <source>#{java_qualifiedName}Assembler</source>
50
+ <scope>application</scope>
51
+ <metadata>
52
+ <identity property="id"></identity>
53
+ #{mtk_stss{as_write_metadata()}}
54
+ </metadata>
55
+ <server>
56
+ <fill-method>
57
+ <name>load</name>
58
+ </fill-method>
59
+ <fill-method>
60
+ <name>load</name>
61
+ <params>java.lang.String</params>
62
+ </fill-method>
63
+ <sync-method>
64
+ <name>sync</name>
65
+ </sync-method>
66
+ </server>
67
+ </properties>
68
+ </destination>
69
+ }
70
+ end
71
+ def as_write_metadata
72
+ uml_ownedAttribute.each { |a|
73
+ a.as_write_metadata
74
+ }
75
+ end
76
+ def as_destinationName
77
+ return "dst-#{as_qualifiedName}"
78
+ end
79
+ end
80
+
81
+ module Muml_Property
82
+ def as_lazyMode
83
+ return "false"
84
+ #return "true"
85
+ end
86
+ def as_write_metadata
87
+ if uml_type_one.kind_of?(Muml_DataType)
88
+ write %{ <!-- datatype property="#{as_Name}" -->\n}
89
+ elsif umlx_oneToMany?
90
+ write %{ <one-to-many property="#{as_Name}" destination="#{uml_type_one.as_destinationName}" lazy="#{as_lazyMode}"/>\n}
91
+ elsif umlx_manyToOne?
92
+ write %{ <!-- many-to-one property="#{as_Name}" destination="#{uml_type_one.as_destinationName}" lazy="#{as_lazyMode}"/ -->\n}
93
+ elsif umlx_oneToOne?
94
+ write %{ <!-- one-to-one property="#{as_Name}" destination="#{uml_type_one.as_destinationName}" lazy="#{as_lazyMode}"/ -->\n}
95
+ elsif umlx_manyToMany?
96
+ write %{ <!-- many-to-many property="#{as_Name}" destination="#{uml_type_one.as_destinationName}" lazy="#{as_lazyMode}"/ -->\n}
97
+ else
98
+ write %{ <!-- property="#{as_Name}" destination="#{uml_type_one.as_destinationName}" lazy="#{as_lazyMode}"/ -->\n}
99
+ end
100
+ end
101
+ def as_write
102
+ return if uml_type_one.kind_of?(Muml_Enumeration)
103
+ write("var");
104
+ write(" _#{as_NameProperty}")
105
+ write(":#{as_propertyAssociationType}")
106
+ write(";\n")
107
+ end
108
+ end
109
+
110
+ module Muml_Parameter
111
+ def as_write
112
+ write(" #{as_Name}:") unless uml_direction_one.isReturn?
113
+ write("#{as_propertyAssociationType} ")
114
+ #write(" /* #{uml_lowerValue}..#{uml_upperValue}*/ ")
115
+ end
116
+ end
117
+
118
+ module Muml_Operation
119
+ #Hack
120
+ def as_Name
121
+ s=super
122
+ if !self.as_getter_property.empty?
123
+ return "get #{s[3,s.length]}"
124
+ end
125
+ if !self.as_setter_property.empty?
126
+ return "set #{s[3,s.length]}"
127
+ end
128
+ return s
129
+ end
130
+
131
+ def as_write
132
+ #TODO: decide what to do with functions in actionscript
133
+ #write("\/\/IGNORED: function #{as_Name}\n")
134
+ #return
135
+
136
+ write("\n")
137
+ as_writeAnnotation
138
+ as_writeMethodModifiers
139
+ write("function ");
140
+
141
+ if umlx_isConstructor?
142
+ write("#{umlx_class_one.as_Name}")
143
+ else
144
+ write("#{as_Name}")
145
+ end
146
+ as_writeMethodParameters
147
+ as_writeMethodThrows
148
+
149
+
150
+ as_writeMethodReturnType unless umlx_isConstructor?
151
+
152
+ as_writeMethodBody
153
+ end
154
+
155
+ #write java type parameter (without the name)
156
+ #
157
+ #Example:
158
+ #* void
159
+ #* int
160
+ #* pack1.Class1
161
+ def as_writeParameterType(fp)
162
+ if (fp.nil?)
163
+ # fp.write("void ");
164
+ else
165
+ write(" : ")
166
+ fp.as_write
167
+ #uml_isException (!! a ne pas confondre avec une exception)
168
+ #uml_isOrdered
169
+ #uml_isStream
170
+ #uml_isUnique
171
+ end
172
+ end
173
+
174
+ #writes default code for a method not implemented
175
+ def as_writeMethodBodyNotImplemented
176
+ write <<END
177
+ {
178
+ //TODO: implement method body
179
+ throw new Error("[operation \\"#{as_Name}\\"not implemented]");
180
+ }
181
+ END
182
+ end
183
+ end
184
+
185
+ module Muml_TypedElement
186
+
187
+ #Returns an action script array
188
+ #ActionScript 3 does not support type collection.
189
+ def as_propertyRoleTypeWithGenerics
190
+ jtype=""
191
+ if uml_type.empty?
192
+ jtype="Number /* TODO: FIX:undefined type in uml model */ "
193
+ else
194
+ jtype = uml_type_one.as_qualifiedName
195
+ end
196
+ return umlx_upperValueIsOne? ? jtype : ACTION_SCRIPT_COLLECTION
197
+ end
198
+ end
199
+
200
+ module Mrdf_Model
201
+ #adds Flex Data Services annotations
202
+ def as_addFDSannotations!
203
+ #must copy before transformation (hash modified runtime error)
204
+ uml_Class_all.each {|c|
205
+ next unless c.kind_of?(Muml_Class) || c.kind_of?(Muml_Interface)||c.kind_of?(Muml_Enumeration)
206
+
207
+ next if c.kind_of?(Muml_Enumeration)
208
+
209
+ if !c.kind_of?(Muml_Interface)
210
+ c.as_annotation_add(%{[Managed]})
211
+ c.as_annotation_add(%{[RemoteClass(alias="#{c.java_qualifiedName}")]})
212
+ end
213
+
214
+ #id persistence
215
+ p=c.umlx_createAndAddProperty(c.rdf_uri+"_auto_id","id")
216
+ #p.java_annotation_add("@Id")
217
+ #p.java_annotation_add("@GeneratedValue")
218
+ p.uml_type=p.umlx_owner_one.umlx_dataType_long
219
+ p.uml_visibility=::Cuml_VisibilityKind::Private
220
+ }
221
+ end
222
+
223
+ def as_FDS_generateConfigurationFile
224
+ mtk_writeSession("#{context[:build]}/data-management-config.xml") {
225
+ as_FDS_writeConfigurationFile
226
+ }
227
+ end
228
+ #
229
+ #writes Flex Data Services configuration file
230
+ def as_FDS_writeConfigurationFile
231
+ write %{<?xml version="1.0" encoding="UTF-8"?>\n}
232
+ as_FDS_write_GeneralConfItems {
233
+ uml_Class_all.each {|c|
234
+ next if c.kind_of?(Muml_Interface)
235
+ next if c.kind_of?(Muml_Enumeration)
236
+ c.as_FDS_writeConfiguration
237
+ }}
238
+ end
239
+
240
+ #Name of action script adapter
241
+ ACTIONSCRIPT_JAVA_ADAPTER_ID="java-dao"
242
+
243
+ def as_FDS_write_GeneralConfItems(&block)
244
+ write %{
245
+ <service id="data-service"
246
+ class="flex.data.DataService"
247
+ messageTypes="flex.data.messages.DataMessage">
248
+
249
+ <adapters>
250
+ <adapter-definition id="actionscript" class="flex.data.adapters.ASObjectAdapter" default="true"/>
251
+ <adapter-definition id="#{ACTIONSCRIPT_JAVA_ADAPTER_ID}" class="flex.data.adapters.JavaAdapter"/>
252
+ </adapters>
253
+
254
+ <default-channels>
255
+ <channel ref="my-rtmp"/>
256
+ </default-channels>
257
+ }
258
+
259
+ yield
260
+
261
+ write( "</service>\n" )
262
+ end
263
+
264
+ end
265
+ module Muml_Enumeration
266
+ #write enum body (list of litterals) using as_writeClassComment, as_writeClassModifiers, as_writeMetaClassName.
267
+ #
268
+ #Example:
269
+ #* { red,blue,green }
270
+ def as_writeClassBody
271
+ as_writeClassComment
272
+ as_writeAnnotation
273
+ as_writeClassModifiers
274
+ as_writeMetaClassName
275
+ write("\n{\n")
276
+ uml_ownedLiteral.each {|c|
277
+ write(%{public static var #{c}:#{as_Name} = new EtatDossier("#{c}");\n})
278
+ }
279
+ write <<END
280
+
281
+ public function #{as_Name}(str:String){
282
+ name=str;
283
+ }
284
+
285
+ public static function getValues():ArrayCollection{
286
+ var values:ArrayCollection = new ArrayCollection();
287
+ END
288
+ uml_ownedLiteral.each {|c|
289
+ write(" values.addItem(#{c});\n");
290
+ }
291
+ write <<END
292
+ return values;
293
+ }
294
+
295
+ public function toString(){
296
+ return name;
297
+ }
298
+ END
299
+
300
+ #as_writeDeclarationSpecificOnBegin
301
+ as_writeAttributes
302
+ write("\n\n")
303
+ #as_writeConstructors
304
+ write("\n\n")
305
+ as_writeOperations
306
+ #as_writeDeclarationSpecificOnEnd
307
+
308
+
309
+
310
+ write("\n}");
311
+ end
312
+ end
313
+
314
+ module Mrdf_Model
315
+ def as_addFormReference!
316
+ uml_Class_all.each {|a|
317
+ next if a.kind_of?(Muml_Interface)
318
+ next if a.kind_of?(Muml_Enumeration)
319
+ a.as_addFormReference!
320
+ }
321
+ end
322
+ end
323
+ module Muml_Class
324
+ def as_formClass
325
+ return umlx_getOrCreateClass("#{as_qualifiedName}Form")
326
+ end
327
+ def as_addFormReference!
328
+ log.error{"adding flexFormRef for #{self}:#{self.class}"}
329
+ p=umlx_createAndAddProperty("#{self.rdf_uri}_flexFormRef","flexForm")
330
+ p.uml_isReadOnly="true"
331
+
332
+ p.uml_type=as_formClass
333
+ p.umlx_owner_one.as_addAccessorsFor!(p)
334
+ p.as_getter_property_inv.each {|get|
335
+ log.error("maj code")
336
+ get.as_code=<<END
337
+ if(#{p.as_Name}==null){
338
+ #{p.as_Name} = new #{as_formClass.as_Name}();
339
+ #{p.as_Name}.setModif(this);
340
+ }
341
+ return #{p.as_Name};
342
+ END
343
+ }
344
+ end
345
+ end
346
+
347
+
@@ -0,0 +1,8 @@
1
+ module Ontomde
2
+ module Uml2
3
+ module Flex
4
+ VERSION = '1.0.4'
5
+ end
6
+ end
7
+ end
8
+
@@ -0,0 +1,14 @@
1
+ require 'ontomde-uml2-java'
2
+ require 'ontomde-uml2-struts'
3
+
4
+ #require "#{h}/doNotModify/main.rb"
5
+ #require "#{h}/main.rb"
6
+ #require "#{h}/fileTypes.rb"
7
+
8
+ h="#{File.dirname(__FILE__)}/ontomde-uml2-flex"
9
+
10
+ require "#{h}/version.rb"
11
+ require "#{h}/ValueObjectAS.rb"
12
+ require "#{h}/Editor.mxml.rb"
13
+ require "#{h}/Editor.mxml.as.rb"
14
+ require "#{h}/ImportationAS.rb"
File without changes
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ontomde-uml2-flex
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Stephane (Pierre) Carrie
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-03-03 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ontomde-uml2-struts
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.4
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: hoe
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 1.5.0
32
+ version:
33
+ description: "== FEATURES/PROBLEMS: == SYNOPSIS: == REQUIREMENTS: * flex sdk must be downloaded from http://flex.org == INSTALL:"
34
+ email: stephanepierre.carrie@orange-ftgroup.com
35
+ executables: []
36
+
37
+ extensions: []
38
+
39
+ extra_rdoc_files:
40
+ - History.txt
41
+ - Manifest.txt
42
+ - README.txt
43
+ files:
44
+ - History.txt
45
+ - Manifest.txt
46
+ - README.txt
47
+ - Rakefile
48
+ - lib/ontomde-uml2-flex.rb
49
+ - lib/ontomde-uml2-flex/version.rb
50
+ - lib/ontomde-uml2-flex/Editor.mxml.as.rb
51
+ - lib/ontomde-uml2-flex/ValueObjectAS.rb
52
+ - lib/ontomde-uml2-flex/ImportationAS.rb
53
+ - lib/ontomde-uml2-flex/main.rb
54
+ - lib/ontomde-uml2-flex/Editor.mxml.rb
55
+ - lib/ontomde-uml2-flex/fileTypes.rb
56
+ has_rdoc: true
57
+ homepage: http://ontomde.rubyforge.org
58
+ post_install_message:
59
+ rdoc_options:
60
+ - --main
61
+ - README.txt
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 1.8.6
69
+ version:
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.0.0
75
+ version:
76
+ requirements: []
77
+
78
+ rubyforge_project: ontomde
79
+ rubygems_version: 1.0.1
80
+ signing_key:
81
+ specification_version: 2
82
+ summary: OntoMDE Flex generator cartridge
83
+ test_files:
84
+ - test/test_ontomde-uml2-flex.rb