rrt_ruby 0.3.0-mswin32 → 0.3.1-mswin32
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rrt_ruby.rb +2 -0
- data/lib/rrt_ruby/writer.rb +78 -54
- metadata +2 -2
data/lib/rrt_ruby.rb
CHANGED
@@ -87,6 +87,7 @@ module RRT_RUBY
|
|
87
87
|
@logger.debug("Opening model #{@modelname}")
|
88
88
|
@app=WIN32OLE.new(OLEAPP_NAME)
|
89
89
|
@model=@app.OpenModel(@modelname) unless modelname.empty?
|
90
|
+
@model=@app.CurrentModel if modelname.empty?
|
90
91
|
raise FinderException.new(@modelname),"Model not loaded" unless @model
|
91
92
|
end
|
92
93
|
#open is used in conjuction with a block.
|
@@ -120,6 +121,7 @@ module RRT_RUBY
|
|
120
121
|
@modelname=modelname
|
121
122
|
@model=@app.openmodel(@modelname)
|
122
123
|
raise FinderException.new(@modelname),"Model not loaded" unless @model
|
124
|
+
raise FinderException.new(@modelname),"Model not loaded" unless @model.GetFileName.upcase==modelname.upcase
|
123
125
|
end if @app && @app.CurrentModel.GetFileName.upcase!=modelname.upcase
|
124
126
|
end
|
125
127
|
#Stops the RRTFinder releasing the OLE interface and invalidating this RRTFinder instance.
|
data/lib/rrt_ruby/writer.rb
CHANGED
@@ -19,44 +19,28 @@ module RRT_RUBY
|
|
19
19
|
#
|
20
20
|
#Things that can go wrong:
|
21
21
|
#
|
22
|
-
#* The parent package for _package_ does not exist
|
22
|
+
#* The parent package for _package_ does not exist
|
23
|
+
#* The parent package is not defined and _package_ is not Logical View
|
23
24
|
#* The parent package for _package_ is not writeable
|
25
|
+
#
|
24
26
|
def add_logical_package package,save=true
|
25
|
-
@logger.debug("
|
26
|
-
#
|
27
|
-
if package.parent.empty
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
host=ole_element(package.parent,TYPE_LOGICAL_PACKAGE)
|
32
|
-
end
|
27
|
+
@logger.debug("Writing #{package.to_s}")
|
28
|
+
#check parentage
|
29
|
+
raise ModelException, "No parent package specified" if package.parent.empty?&&package.name!="Logical View"
|
30
|
+
host=@model.RootLogicalPackage if package.name=="Logical View"
|
31
|
+
#find if the parent exists
|
32
|
+
host=ole_element(package.parent,TYPE_LOGICAL_PACKAGE) unless host
|
33
33
|
if host
|
34
|
-
if
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
#add all the classes
|
39
|
-
package.classes.each{|c|
|
40
|
-
add_class(c,added_package)
|
34
|
+
#if the package is "Logical View", write it's subpackages, else write the package
|
35
|
+
if package.name=="Logical View"
|
36
|
+
package.packages.each{|pkg|
|
37
|
+
write_logical_package(pkg,host)
|
41
38
|
}
|
42
|
-
#add all the contained packages
|
43
|
-
package.packages.each{|p|
|
44
|
-
add_logical_package(p,false)
|
45
|
-
}
|
46
|
-
#save if wanted
|
47
|
-
begin
|
48
|
-
update_relations(package)
|
49
|
-
#show so that no errors are generated when dialogs pop up
|
50
|
-
self.show
|
51
|
-
#save, hide and invalidated the view cache
|
52
|
-
unit=host.GetContainingControlledElement
|
53
|
-
raise ModelException,"Could not save#{unit.name}" unless unit.Save
|
54
|
-
self.hide
|
55
|
-
@logical_view=nil
|
56
|
-
end if save
|
57
39
|
else
|
58
|
-
|
40
|
+
write_logical_package(package,host)
|
59
41
|
end
|
42
|
+
update_relations(package)
|
43
|
+
save(host) if save
|
60
44
|
else
|
61
45
|
raise ModelException,"#{package.parent} does not exist in the model"
|
62
46
|
end
|
@@ -69,34 +53,25 @@ module RRT_RUBY
|
|
69
53
|
#
|
70
54
|
#* The parent package for _package_ does not exist
|
71
55
|
#* _package_ does not exist
|
56
|
+
#* The parent package is not defined and _package_ is not Logical View
|
72
57
|
#* The parent package for _package_ is not writeable
|
73
58
|
def remove_logical_package package
|
74
59
|
@logger.debug("Removing #{package.to_s}")
|
75
|
-
#
|
76
|
-
if package.parent.empty
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
#find if the parent exists
|
81
|
-
host=ole_element(package.parent,TYPE_LOGICAL_PACKAGE)
|
82
|
-
end
|
60
|
+
#check parentage
|
61
|
+
raise ModelException, "No parent package specified" if package.parent.empty?&&package.name!="Logical View"
|
62
|
+
host=@model.RootLogicalPackage if package.name=="Logical View"
|
63
|
+
#find if the parent exists
|
64
|
+
host=ole_element(package.parent,TYPE_LOGICAL_PACKAGE) unless host
|
83
65
|
if host
|
84
|
-
if
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
host.DeleteLogicalPackage(pkg)
|
90
|
-
unit=host.GetContainingControlledElement
|
91
|
-
raise ModelException,"Could not save#{unit.name}" unless unit.Save
|
92
|
-
self.hide
|
93
|
-
@logical_view=nil
|
94
|
-
else
|
95
|
-
@logger.info("#{package.name} does not exist in the model")
|
96
|
-
end
|
66
|
+
#if the package is "Logical View", write it's subpackages, else write the package
|
67
|
+
if package.name=="Logical View"
|
68
|
+
package.packages.each{|pkg|
|
69
|
+
delete_logical_package(pkg,host)
|
70
|
+
}
|
97
71
|
else
|
98
|
-
|
72
|
+
delete_logical_package(package,host)
|
99
73
|
end
|
74
|
+
save(host)
|
100
75
|
else
|
101
76
|
raise ModelException,"#{package.parent} does not exist in the model"
|
102
77
|
end
|
@@ -115,6 +90,50 @@ module RRT_RUBY
|
|
115
90
|
end
|
116
91
|
|
117
92
|
private
|
93
|
+
#
|
94
|
+
def save host
|
95
|
+
#show so that no errors are generated when dialogs pop up
|
96
|
+
self.show
|
97
|
+
#save, hide and invalidated the view cache
|
98
|
+
unit=host.GetContainingControlledElement
|
99
|
+
raise ModelException,"Could not save#{unit.name}" unless unit.Save
|
100
|
+
self.hide
|
101
|
+
@logical_view=nil
|
102
|
+
end
|
103
|
+
#
|
104
|
+
def write_logical_package package,host
|
105
|
+
if host.IsModifiable
|
106
|
+
#add the package
|
107
|
+
added_package=host.AddLogicalPackage(package.name)
|
108
|
+
added_package.stereotype=package.stereotype
|
109
|
+
#add all the classes
|
110
|
+
package.classes.each{|c|
|
111
|
+
add_class(c,added_package)
|
112
|
+
}
|
113
|
+
#add all the contained packages
|
114
|
+
package.packages.each{|p|
|
115
|
+
write_logical_package(p,added_package)
|
116
|
+
}
|
117
|
+
else
|
118
|
+
raise ModelException,"#{host.name} is not writable"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
#
|
122
|
+
def delete_logical_package package,host
|
123
|
+
if host.IsModifiable
|
124
|
+
pkg=ole_element(package.qualified_name,TYPE_LOGICAL_PACKAGE)
|
125
|
+
if pkg
|
126
|
+
#delete the package
|
127
|
+
host.DeleteLogicalPackage(pkg)
|
128
|
+
@logical_view=nil
|
129
|
+
else
|
130
|
+
@logger.info("#{package.name} does not exist in the model")
|
131
|
+
end
|
132
|
+
|
133
|
+
else
|
134
|
+
raise ModelException,"#{host.name} is not writable"
|
135
|
+
end
|
136
|
+
end
|
118
137
|
#Adds _c_ to the OLE _package_element_
|
119
138
|
def add_class c,package_element
|
120
139
|
added=package_element.AddClass(c.name)
|
@@ -123,6 +142,7 @@ module RRT_RUBY
|
|
123
142
|
#Adds _c_ to the OLE _package_element_
|
124
143
|
def add_capsule c,package_element
|
125
144
|
added=package_element.AddCapsule(c.name)
|
145
|
+
added.stereotype=c.stereotype
|
126
146
|
end
|
127
147
|
|
128
148
|
|
@@ -150,9 +170,13 @@ module RRT_RUBY
|
|
150
170
|
when Relation::CLASS
|
151
171
|
el.AddClassDependency("",r.supplier)
|
152
172
|
when Relation::COMPONENT
|
173
|
+
|
153
174
|
when Relation::PACKAGE
|
175
|
+
|
154
176
|
when Relation::GENERALIZATION
|
177
|
+
|
155
178
|
when Relation::REALIZE
|
179
|
+
|
156
180
|
end
|
157
181
|
rescue
|
158
182
|
@logger.warn("Could not add dependency: #{$!}")
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.3
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rrt_ruby
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.3.
|
7
|
-
date: 2005-10-
|
6
|
+
version: 0.3.1
|
7
|
+
date: 2005-10-20
|
8
8
|
summary: rrt_ruby is a Ruby library providing access to Rose RealTime models through RRTEI
|
9
9
|
require_paths:
|
10
10
|
- lib
|