expressir 1.2.4-x64-mingw32 → 1.2.5-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.cross_rubies +0 -6
  3. data/.github/workflows/rake.yml +200 -9
  4. data/.gitignore +7 -2
  5. data/.gitmodules +3 -0
  6. data/.rubocop.yml +13 -4
  7. data/Rakefile +4 -1
  8. data/bin/console +0 -1
  9. data/bin/rspec +3 -3
  10. data/exe/expressir +4 -2
  11. data/exe/format +1 -1
  12. data/exe/format-test +25 -25
  13. data/exe/generate-parser +16 -13
  14. data/expressir.gemspec +11 -9
  15. data/lib/expressir/config.rb +1 -1
  16. data/lib/expressir/express/2.7/express_parser.so +0 -0
  17. data/lib/expressir/express/3.0/express_parser.so +0 -0
  18. data/lib/expressir/express/parser.rb +2 -2
  19. data/lib/expressir/express/visitor.rb +7 -5
  20. data/lib/expressir/model.rb +78 -78
  21. data/lib/expressir/version.rb +1 -1
  22. data/rakelib/antlr4-native.rake +63 -0
  23. data/rakelib/cross-ruby.rake +213 -162
  24. data/spec/acceptance/version_spec.rb +7 -2
  25. data/spec/expressir/express/cache_spec.rb +8 -5
  26. data/spec/expressir/express/formatter_spec.rb +16 -8
  27. data/spec/expressir/express/parser_spec.rb +17 -11
  28. data/spec/expressir/model/model_element_spec.rb +154 -146
  29. metadata +52 -61
  30. data/demo.rb +0 -18
  31. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +0 -9589
  32. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +0 -36619
  33. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +0 -13294
  34. data/original/examples/employment/eclipse/.project +0 -17
  35. data/original/examples/employment/eclipse/Export/Employment.png +0 -0
  36. data/original/examples/employment/eclipse/Express/employment_schema.exp +0 -33
  37. data/original/examples/employment/eclipse/Express/employment_schema.xmi +0 -77
  38. data/original/examples/employment/eclipse/Express/employment_schema.xml +0 -93
  39. data/original/examples/employment/eclipse/Models/Employment.uml +0 -4
  40. data/original/examples/employment/eclipse/Models/Employment.umldi +0 -240
  41. data/original/examples/employment/eclipse/readme.txt +0 -7
  42. data/original/examples/employment/employment_schema.exp +0 -33
  43. data/original/examples/employment/employment_schema.rb +0 -232
  44. data/original/examples/employment/employment_schema.xml +0 -93
  45. data/original/examples/employment/employment_schema___module.rb +0 -46
  46. data/original/examples/employment/employment_schema___p28attr.rb +0 -126
  47. data/original/examples/employment/employment_schema___p28inst.rb +0 -26
  48. data/original/examples/employment/example_employment_data.xml +0 -1
  49. data/original/examples/employment/example_employment_data_copy.xml +0 -1
  50. data/original/examples/employment/example_employment_reader.rb +0 -30
  51. data/original/examples/employment/example_employment_writer.rb +0 -51
  52. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +0 -3710
  53. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +0 -35880
  54. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +0 -15357
  55. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +0 -9468
  56. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +0 -8404
  57. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +0 -43147
  58. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +0 -18341
  59. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +0 -11632
  60. data/original/exp2ruby.rb +0 -525
  61. data/original/expsm.rb +0 -34
  62. data/original/mapping_owl.rb +0 -1018
  63. data/original/mapping_sysml.rb +0 -2281
  64. data/original/mapping_uml2.rb +0 -599
  65. data/original/mapping_uml2_eclipse.rb +0 -433
  66. data/original/reeper.rb +0 -134
  67. data/spec/expressr_spec.rb +0 -5
@@ -1,232 +0,0 @@
1
- require "employment_schema___module"
2
- require "employment_schema___p28inst"
3
- require "employment_schema___p28attr"
4
- module EMP
5
- class Person
6
- include Person___module
7
- @@entity = 'Person'
8
- @@attr___names = 'Names'
9
- @@Person___count = 0
10
- def initialize
11
- @@Person___count += 1
12
- @p28id = 'id-PERSON-' + @@Person___count.to_s
13
- end
14
- def isValid
15
- return case
16
- when !isValidPerson___module : false
17
- else true
18
- end
19
- end
20
- def writeP28 p28file
21
- e___added = p28file.root.add_element('emp:Person', {'id' => @p28id})
22
- if names != nil
23
- a___names = e___added.add_element('Names')
24
- for names___member in names
25
- amember___names = a___names.add_element('ex:string-wrapper')
26
- amember___names.text = names___member
27
- end
28
- end
29
- end
30
- def getP28id
31
- @p28id
32
- end
33
- def putP28id(the_id)
34
- @p28id = the_id
35
- end
36
- def getP28entity
37
- return('emp:' + @@entity)
38
- end
39
- end
40
- class Organization
41
- include Organization___module
42
- @@entity = 'Organization'
43
- @@attr___name = 'Name'
44
- @@Organization___count = 0
45
- def initialize
46
- @@Organization___count += 1
47
- @p28id = 'id-ORGANIZATION-' + @@Organization___count.to_s
48
- end
49
- def isValid
50
- return case
51
- when !isValidOrganization___module : false
52
- else true
53
- end
54
- end
55
- def writeP28 p28file
56
- e___added = p28file.root.add_element('emp:Organization', {'id' => @p28id})
57
- if name != nil
58
- a___name = e___added.add_element('Name')
59
- a___name.text = name
60
- end
61
- end
62
- def getP28id
63
- @p28id
64
- end
65
- def putP28id(the_id)
66
- @p28id = the_id
67
- end
68
- def getP28entity
69
- return('emp:' + @@entity)
70
- end
71
- end
72
- class Personorganizationrelationship
73
- include Personorganizationrelationship___module
74
- @@entity = 'Personorganizationrelationship'
75
- @@attr___the_person = 'The_person'
76
- @@attr___the_organization = 'The_organization'
77
- @@attr___start_date = 'Start_date'
78
- @@attr___end_date = 'End_date'
79
- @@Personorganizationrelationship___count = 0
80
- def initialize
81
- @@Personorganizationrelationship___count += 1
82
- @p28id = 'id-PERSONORGANIZATIONRELATIONSHIP-' + @@Personorganizationrelationship___count.to_s
83
- end
84
- def isValid
85
- return case
86
- when !isValidPersonorganizationrelationship___module : false
87
- else true
88
- end
89
- end
90
- def writeP28 p28file
91
- e___added = p28file.root.add_element('emp:Personorganizationrelationship', {'id' => @p28id})
92
- if the_person != nil
93
- a___the_person = e___added.add_element('The_person')
94
- a___the_person = a___the_person.add_element(the_person.getP28entity)
95
- a___the_person.attributes['ref'] = the_person.getP28id
96
- a___the_person.attributes['xsi:nil'] = 'true'
97
- end
98
- if the_organization != nil
99
- a___the_organization = e___added.add_element('The_organization')
100
- a___the_organization = a___the_organization.add_element(the_organization.getP28entity)
101
- a___the_organization.attributes['ref'] = the_organization.getP28id
102
- a___the_organization.attributes['xsi:nil'] = 'true'
103
- end
104
- if start_date != nil
105
- a___start_date = e___added.add_element('Start_date')
106
- a___start_date.text = start_date
107
- end
108
- if end_date != nil
109
- a___end_date = e___added.add_element('End_date')
110
- a___end_date.text = end_date
111
- end
112
- end
113
- def getP28id
114
- @p28id
115
- end
116
- def putP28id(the_id)
117
- @p28id = the_id
118
- end
119
- def getP28entity
120
- return('emp:' + @@entity)
121
- end
122
- end
123
- class Employment
124
- include Personorganizationrelationship___module
125
- include Employment___module
126
- @@entity = 'Employment'
127
- @@attr___job_title = 'Job_title'
128
- @@attr___ended_by = 'Ended_by'
129
- @@attr___employment_type = 'Employment_type'
130
- @@Employment___count = 0
131
- def initialize
132
- @@Employment___count += 1
133
- @p28id = 'id-EMPLOYMENT-' + @@Employment___count.to_s
134
- end
135
- def isValid
136
- return case
137
- when !isValidEmployment___module : false
138
- when !isValidPersonorganizationrelationship___module : false
139
- else true
140
- end
141
- end
142
- def writeP28 p28file
143
- e___added = p28file.root.add_element('emp:Employment', {'id' => @p28id})
144
- if the_person != nil
145
- a___the_person = e___added.add_element('The_person')
146
- a___the_person = a___the_person.add_element(the_person.getP28entity)
147
- a___the_person.attributes['ref'] = the_person.getP28id
148
- a___the_person.attributes['xsi:nil'] = 'true'
149
- end
150
- if the_organization != nil
151
- a___the_organization = e___added.add_element('The_organization')
152
- a___the_organization = a___the_organization.add_element(the_organization.getP28entity)
153
- a___the_organization.attributes['ref'] = the_organization.getP28id
154
- a___the_organization.attributes['xsi:nil'] = 'true'
155
- end
156
- if start_date != nil
157
- a___start_date = e___added.add_element('Start_date')
158
- a___start_date.text = start_date
159
- end
160
- if end_date != nil
161
- a___end_date = e___added.add_element('End_date')
162
- a___end_date.text = end_date
163
- end
164
- if job_title != nil
165
- a___job_title = e___added.add_element('Job_title')
166
- a___job_title.text = job_title
167
- end
168
- if ended_by != nil
169
- a___ended_by = e___added.add_element('Ended_by')
170
- a___ended_by = a___ended_by.add_element(ended_by.getP28entity)
171
- a___ended_by.attributes['ref'] = ended_by.getP28id
172
- a___ended_by.attributes['xsi:nil'] = 'true'
173
- end
174
- if employment_type != nil
175
- a___employment_type = e___added.add_element('Employment_type')
176
- a___employment_type.text = employment_type
177
- end
178
- end
179
- def getP28id
180
- @p28id
181
- end
182
- def putP28id(the_id)
183
- @p28id = the_id
184
- end
185
- def getP28entity
186
- return('emp:' + @@entity)
187
- end
188
- end
189
- class Model___data
190
- attr_reader :model_elements, :model_name, :namespace, :originating_system, :preprocessor_version
191
- attr_writer :model_elements, :model_name, :namespace, :originating_system, :preprocessor_version
192
- def initialize
193
- @model_elements = []
194
- @namespace = 'emp'
195
- end
196
- def readP28e2 p28doc
197
- puts 'Reading P28E2 XML'
198
- read_P28_entity_instances(p28doc,self)
199
- read_P28_attribute_values(p28doc,self)
200
- end
201
- require 'time'
202
- def writeP28e2 p28file
203
- puts 'Writing P28E2 with XML namespace = ' + namespace
204
- @p28file = p28file
205
- p28file << XMLDecl.new
206
- the_ns = 'xmlns:' + namespace
207
- the_uos = namespace + ':uos'
208
- uos = p28file.add_element(the_uos, {the_ns => 'urn:iso10303-28:schema/Employment_schema'})
209
- uos.add_namespace('xsi','http://www.w3.org/2001/XMLSchema-instance')
210
- uos.add_namespace('ex','urn:iso:std:iso:10303:28:ed-2:2005:schema:common')
211
- uos.add_namespace('exp','urn:iso:std:iso:10303:28:ed-2:2005:schema:common')
212
- uos.add_attribute('xsi:schemaLocation','urn:iso10303-28:schema/Employment_schema Employment_schema.xsd')
213
- header = p28file.root.add_element('exp:header')
214
- t = header.add_element('time_stamp')
215
- t.text = Time.now.xmlschema()
216
- if self.originating_system != nil
217
- t = header.add_element('preprocessor_version')
218
- t.text = self.preprocessor_version
219
- end
220
- if self.originating_system != nil
221
- t = header.add_element('originating_system')
222
- t.text = self.originating_system
223
- end
224
- i = 1
225
- for e in model_elements
226
- puts i
227
- e.writeP28(p28file)
228
- i = i + 1
229
- end
230
- end
231
- end
232
- end
@@ -1,93 +0,0 @@
1
- <?xml version="1.0"?>
2
-
3
- <express
4
- language_version="2"
5
- rcs.date="$Date: $"
6
- rcs.revision="$Revision: $">
7
-
8
- <application
9
- name=" Eurostep EXPRESS Parser (Eep!)"
10
- owner="Eurostep Limited"
11
- url="www.eurostep.com"
12
- version="1, 4, 36, 40"
13
- source="employment_schema.exp"/>
14
-
15
- <schema name="employment_schema">
16
- <type name="date">
17
- <builtintype type="STRING"
18
- />
19
- </type>
20
-
21
- <type name="po">
22
- <select
23
- selectitems="Person Organization"
24
- />
25
- </type>
26
-
27
- <type name="contract_type">
28
- <enumeration
29
- items="contract atwill contractor"
30
- />
31
- </type>
32
-
33
- <entity name="Person"
34
- >
35
- <explicit
36
- name="names">
37
- <aggregate type="LIST"
38
- />
39
- <builtintype type="STRING"
40
- />
41
- </explicit>
42
- </entity>
43
-
44
- <entity name="Organization"
45
- >
46
- <explicit
47
- name="name">
48
- <builtintype type="STRING"
49
- />
50
- </explicit>
51
- </entity>
52
-
53
- <entity name="PersonOrganizationRelationship"
54
- >
55
- <explicit
56
- name="the_person">
57
- <typename name="Person"/>
58
- </explicit>
59
- <explicit
60
- name="the_organization">
61
- <typename name="Organization"/>
62
- </explicit>
63
- <explicit
64
- name="start_date">
65
- <typename name="date"/>
66
- </explicit>
67
- <explicit
68
- name="end_date">
69
- <typename name="date"/>
70
- </explicit>
71
- </entity>
72
-
73
- <entity name="Employment"
74
- supertypes="PersonOrganizationRelationship"
75
- >
76
- <explicit
77
- name="job_title">
78
- <builtintype type="STRING"
79
- />
80
- </explicit>
81
- <explicit
82
- name="ended_by">
83
- <typename name="po"/>
84
- </explicit>
85
- <explicit
86
- name="employment_type">
87
- <typename name="contract_type"/>
88
- </explicit>
89
- </entity>
90
-
91
- </schema>
92
-
93
- </express>
@@ -1,46 +0,0 @@
1
- module Person___module
2
- attr_accessor :names
3
- def isValidPerson___module
4
- return case
5
- when names == nil : false
6
- else true
7
- end
8
- end
9
- end
10
- module Organization___module
11
- attr_accessor :name
12
- def isValidOrganization___module
13
- return case
14
- when name == nil : false
15
- else true
16
- end
17
- end
18
- end
19
- module Personorganizationrelationship___module
20
- attr_accessor :the_person
21
- attr_accessor :the_organization
22
- attr_accessor :start_date
23
- attr_accessor :end_date
24
- def isValidPersonorganizationrelationship___module
25
- return case
26
- when the_person == nil : false
27
- when the_organization == nil : false
28
- when start_date == nil : false
29
- when end_date == nil : false
30
- else true
31
- end
32
- end
33
- end
34
- module Employment___module
35
- attr_accessor :job_title
36
- attr_accessor :ended_by
37
- attr_accessor :employment_type
38
- def isValidEmployment___module
39
- return case
40
- when job_title == nil : false
41
- when ended_by == nil : false
42
- when employment_type == nil : false
43
- else true
44
- end
45
- end
46
- end
@@ -1,126 +0,0 @@
1
- def read_P28_attribute_values(p28doc,m)
2
- uos = p28doc.root
3
- for entity in uos.elements.to_a()
4
- id = entity.attribute('id')
5
- i = 0
6
- if entity.name != 'header'
7
- while i != -1
8
- tempid = m.model_elements[i].getP28id
9
- if tempid == id.to_s
10
- r = m.model_elements[i]
11
- i = -2
12
- end
13
- i = i + 1
14
- end
15
- end
16
- if entity.name == 'Person'
17
- for child in entity.elements
18
- if child.name == 'Names'
19
- memlist = []
20
- for member in child.elements
21
- memlist.push member.text()
22
- end
23
- r.names= memlist
24
- end
25
- end
26
- end
27
- if entity.name == 'Organization'
28
- for child in entity.elements
29
- if child.name == 'Name'
30
- r.name= child.text()
31
- end
32
- end
33
- end
34
- if entity.name == 'PersonOrganizationRelationship'
35
- for child in entity.elements
36
- if child.name == 'The_person'
37
- ref = child.elements[1].attribute('ref')
38
- i = 0
39
- while i != -1
40
- tempid = m.model_elements[i].getP28id.to_s
41
- if tempid == ref.to_s
42
- p = m.model_elements[i]
43
- i = -2
44
- end
45
- i = i + 1
46
- end
47
- r.the_person= p
48
- end
49
- if child.name == 'The_organization'
50
- ref = child.elements[1].attribute('ref')
51
- i = 0
52
- while i != -1
53
- tempid = m.model_elements[i].getP28id.to_s
54
- if tempid == ref.to_s
55
- p = m.model_elements[i]
56
- i = -2
57
- end
58
- i = i + 1
59
- end
60
- r.the_organization= p
61
- end
62
- if child.name == 'Start_date'
63
- r.start_date= child.text()
64
- end
65
- if child.name == 'End_date'
66
- r.end_date= child.text()
67
- end
68
- end
69
- end
70
- if entity.name == 'Employment'
71
- for child in entity.elements
72
- if child.name == 'The_person'
73
- ref = child.elements[1].attribute('ref')
74
- i = 0
75
- while i != -1
76
- tempid = m.model_elements[i].getP28id.to_s
77
- if tempid == ref.to_s
78
- p = m.model_elements[i]
79
- i = -2
80
- end
81
- i = i + 1
82
- end
83
- r.the_person= p
84
- end
85
- if child.name == 'The_organization'
86
- ref = child.elements[1].attribute('ref')
87
- i = 0
88
- while i != -1
89
- tempid = m.model_elements[i].getP28id.to_s
90
- if tempid == ref.to_s
91
- p = m.model_elements[i]
92
- i = -2
93
- end
94
- i = i + 1
95
- end
96
- r.the_organization= p
97
- end
98
- if child.name == 'Start_date'
99
- r.start_date= child.text()
100
- end
101
- if child.name == 'End_date'
102
- r.end_date= child.text()
103
- end
104
- if child.name == 'Job_title'
105
- r.job_title= child.text()
106
- end
107
- if child.name == 'Ended_by'
108
- ref = child.elements[1].attribute('ref')
109
- i = 0
110
- while i != -1
111
- tempid = m.model_elements[i].getP28id.to_s
112
- if tempid == ref.to_s
113
- p = m.model_elements[i]
114
- i = -2
115
- end
116
- i = i + 1
117
- end
118
- r.ended_by= p
119
- end
120
- if child.name == 'Employment_type'
121
- r.employment_type= child.text()
122
- end
123
- end
124
- end
125
- end
126
- end
@@ -1,26 +0,0 @@
1
- def read_P28_entity_instances(p28doc,m)
2
- uos = p28doc.root
3
- for entity in uos.elements.to_a()
4
- id = entity.attribute('id')
5
- if entity.name == 'Person'
6
- r = EMP::Person.new
7
- m.model_elements.push r
8
- r.putP28id(id.to_s)
9
- end
10
- if entity.name == 'Organization'
11
- r = EMP::Organization.new
12
- m.model_elements.push r
13
- r.putP28id(id.to_s)
14
- end
15
- if entity.name == 'PersonOrganizationRelationship'
16
- r = EMP::PersonOrganizationRelationship.new
17
- m.model_elements.push r
18
- r.putP28id(id.to_s)
19
- end
20
- if entity.name == 'Employment'
21
- r = EMP::Employment.new
22
- m.model_elements.push r
23
- r.putP28id(id.to_s)
24
- end
25
- end
26
- end
@@ -1 +0,0 @@
1
- <?xml version='1.0'?><emp:uos xsi:schemaLocation='urn:iso10303-28:schema/Employment_schema Employment_schema.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:exp='urn:iso:std:iso:10303:28:ed-2:2005:schema:common' xmlns:ex='urn:iso:std:iso:10303:28:ed-2:2005:schema:common' xmlns:emp='urn:iso10303-28:schema/Employment_schema'><exp:header><time_stamp>2009-09-10T13:43:19+01:00</time_stamp></exp:header><emp:Organization id='id-ORGANIZATION-1'><Name>Acme Plumbing</Name></emp:Organization><emp:Employment id='id-EMPLOYMENT-1'><The_person><emp:Person xsi:nil='true' ref='id-PERSON-1'/></The_person><The_organization><emp:Organization xsi:nil='true' ref='id-ORGANIZATION-1'/></The_organization><Start_date>2008-04-01</Start_date><End_date>2008-06-01</End_date><Job_title>Apprentice</Job_title><Ended_by><emp:Person xsi:nil='true' ref='id-PERSON-1'/></Ended_by><Employment_type>atwill</Employment_type></emp:Employment><emp:Person id='id-PERSON-1'><Names><ex:string-wrapper>Joe</ex:string-wrapper><ex:string-wrapper>Plumber</ex:string-wrapper></Names></emp:Person></emp:uos>
@@ -1 +0,0 @@
1
- <?xml version='1.0'?><emp:uos xsi:schemaLocation='urn:iso10303-28:schema/Employment_schema Employment_schema.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:exp='urn:iso:std:iso:10303:28:ed-2:2005:schema:common' xmlns:ex='urn:iso:std:iso:10303:28:ed-2:2005:schema:common' xmlns:emp='urn:iso10303-28:schema/Employment_schema'><exp:header><time_stamp>2009-09-10T12:40:31+01:00</time_stamp></exp:header><emp:Organization id='id-ORGANIZATION-1'><Name>Acme Plumbing</Name></emp:Organization><emp:Employment id='id-EMPLOYMENT-1'><The_person><emp:Person xsi:nil='true' ref='id-PERSON-1'/></The_person><The_organization><emp:Organization xsi:nil='true' ref='id-ORGANIZATION-1'/></The_organization><Start_date>2008-04-01</Start_date><End_date>2008-06-01</End_date><Job_title>Apprentice</Job_title><Ended_by><emp:Person xsi:nil='true' ref='id-PERSON-1'/></Ended_by><Employment_type>atwill</Employment_type></emp:Employment><emp:Person id='id-PERSON-1'><Names><ex:string-wrapper>Joe</ex:string-wrapper><ex:string-wrapper>Plumber</ex:string-wrapper></Names></emp:Person></emp:uos>
@@ -1,30 +0,0 @@
1
- require 'employment_schema'
2
- require 'rexml/document'
3
- include REXML
4
- include EMP
5
- $xnspre = "emp"
6
- ##
7
- infile = File.new("example_employment_data.xml","r")
8
- doc = REXML::Document.new infile
9
- ## create a model container for the data instances
10
- m = EMP::Model___data.new
11
- ##
12
- ## Set the XML Namespace for the P28 E2 file
13
- m.namespace = $xnspre
14
- ## Give model a name if you want
15
- m.model_name = "Test dataset 1"
16
- m.model_elements = []
17
- m.readP28e2(doc)
18
- if m.model_elements.size != 0
19
- puts "Copied " + m.model_elements.size.to_s
20
- for e in m.model_elements
21
- puts "p28id = " + e.getP28id.to_s
22
- end
23
- ##
24
- ## Set up the XML file and write all data in the model container to the file
25
- datafile = File.new("example_employment_data_copy.xml","w")
26
- p28file = REXML::Document.new
27
- m.writeP28e2 p28file
28
- datafile.puts p28file
29
- datafile.close
30
- end
@@ -1,51 +0,0 @@
1
- require 'employment_schema'
2
- require 'rexml/document'
3
- include REXML
4
- include EMP
5
- ##
6
- ## create a model container for the data instances
7
- ##
8
- mydata = EMP::Model___data.new
9
- mydata.model_elements = []
10
- ##
11
- ## create an organization
12
- ##
13
- org1 = EMP::Organization.new
14
- ##
15
- ## check that all mandatory attrs are set
16
- ##
17
- puts 'Without name, org1 isValid = ' + org1.isValid.to_s
18
- org1.name = 'Acme Plumbing'
19
- ##
20
- ## check again that all mandatory attrs are set
21
- ##
22
- puts 'With name, org1 isValid = ' + org1.isValid.to_s
23
-
24
- per1 = EMP::Person.new
25
- per1.names = []
26
- per1.names.push 'Joe'
27
- per1.names.push 'Plumber'
28
-
29
- emp1 = EMP::Employment.new
30
- emp1.the_person = per1
31
- emp1.the_organization = org1
32
- emp1.start_date = '2008-04-01'
33
- emp1.end_date = '2008-06-01'
34
- emp1.job_title = 'Apprentice'
35
- emp1.ended_by = per1
36
- emp1.employment_type = 'atwill'
37
-
38
- ##
39
- ## put all instances in the model container, this is what gets written to XML
40
- ##
41
- mydata.model_elements.push org1
42
- mydata.model_elements.push emp1
43
- mydata.model_elements.push per1
44
- ##
45
- ## Set up the XML file and write all data in the model container to the file
46
- ##
47
- datafile = File.new("example_employment_data.xml","w")
48
- p28file = REXML::Document.new
49
- mydata.writeP28e2 p28file
50
- datafile.puts p28file
51
- datafile.close