expressir 0.2.7-arm64-darwin
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.cross_rubies +30 -0
- data/.github/workflows/rake.yml +45 -0
- data/.github/workflows/release.yml +84 -0
- data/.gitignore +17 -0
- data/.gitmodules +3 -0
- data/.rspec +2 -0
- data/.rubocop.yml +508 -0
- data/Gemfile +4 -0
- data/README.adoc +147 -0
- data/Rakefile +11 -0
- data/bin/console +12 -0
- data/bin/rspec +29 -0
- data/bin/setup +8 -0
- data/demo.rb +18 -0
- data/docs/development.md +90 -0
- data/exe/expressir +20 -0
- data/exe/generate-parser +48 -0
- data/expressir.gemspec +43 -0
- data/lib/expressir.rb +21 -0
- data/lib/expressir/cli.rb +27 -0
- data/lib/expressir/cli/ui.rb +36 -0
- data/lib/expressir/config.rb +23 -0
- data/lib/expressir/express.rb +11 -0
- data/lib/expressir/express/aggregate_dimension.rb +38 -0
- data/lib/expressir/express/attribute.rb +15 -0
- data/lib/expressir/express/comment.rb +7 -0
- data/lib/expressir/express/defined_type.rb +36 -0
- data/lib/expressir/express/derived.rb +65 -0
- data/lib/expressir/express/derived_aggregate.rb +43 -0
- data/lib/expressir/express/entity.rb +137 -0
- data/lib/expressir/express/explicit.rb +70 -0
- data/lib/expressir/express/explicit_aggregate.rb +46 -0
- data/lib/expressir/express/explicit_or_derived.rb +16 -0
- data/lib/expressir/express/global_rule.rb +44 -0
- data/lib/expressir/express/interface_specification.rb +51 -0
- data/lib/expressir/express/interfaced_item.rb +38 -0
- data/lib/expressir/express/inverse.rb +46 -0
- data/lib/expressir/express/inverse_aggregate.rb +37 -0
- data/lib/expressir/express/model_element.rb +7 -0
- data/lib/expressir/express/named_type.rb +19 -0
- data/lib/expressir/express/remark.rb +8 -0
- data/lib/expressir/express/repository.rb +306 -0
- data/lib/expressir/express/schema_definition.rb +96 -0
- data/lib/expressir/express/subtype_constraint.rb +14 -0
- data/lib/expressir/express/type.rb +26 -0
- data/lib/expressir/express/type_aggregate.rb +42 -0
- data/lib/expressir/express/type_enum.rb +29 -0
- data/lib/expressir/express/type_parser.rb +45 -0
- data/lib/expressir/express/type_select.rb +82 -0
- data/lib/expressir/express/unique_rule.rb +35 -0
- data/lib/expressir/express/where_rule.rb +32 -0
- data/lib/expressir/express_exp/2.4/express_parser.bundle +0 -0
- data/lib/expressir/express_exp/2.5/express_parser.bundle +0 -0
- data/lib/expressir/express_exp/2.6/express_parser.bundle +0 -0
- data/lib/expressir/express_exp/2.7/express_parser.bundle +0 -0
- data/lib/expressir/express_exp/3.0/express_parser.bundle +0 -0
- data/lib/expressir/express_exp/formatter.rb +1450 -0
- data/lib/expressir/express_exp/parser.rb +41 -0
- data/lib/expressir/express_exp/visitor.rb +2464 -0
- data/lib/expressir/express_parser.rb +30 -0
- data/lib/expressir/model.rb +65 -0
- data/lib/expressir/model/attribute.rb +27 -0
- data/lib/expressir/model/constant.rb +17 -0
- data/lib/expressir/model/entity.rb +46 -0
- data/lib/expressir/model/enumeration_item.rb +11 -0
- data/lib/expressir/model/expressions/aggregate_initializer.rb +13 -0
- data/lib/expressir/model/expressions/aggregate_item.rb +15 -0
- data/lib/expressir/model/expressions/attribute_reference.rb +15 -0
- data/lib/expressir/model/expressions/binary_expression.rb +40 -0
- data/lib/expressir/model/expressions/call.rb +15 -0
- data/lib/expressir/model/expressions/entity_constructor.rb +15 -0
- data/lib/expressir/model/expressions/group_reference.rb +15 -0
- data/lib/expressir/model/expressions/index_reference.rb +17 -0
- data/lib/expressir/model/expressions/interval.rb +21 -0
- data/lib/expressir/model/expressions/query_expression.rb +26 -0
- data/lib/expressir/model/expressions/simple_reference.rb +13 -0
- data/lib/expressir/model/expressions/unary_expression.rb +19 -0
- data/lib/expressir/model/function.rb +62 -0
- data/lib/expressir/model/identifier.rb +10 -0
- data/lib/expressir/model/interface.rb +18 -0
- data/lib/expressir/model/literals/binary.rb +13 -0
- data/lib/expressir/model/literals/integer.rb +13 -0
- data/lib/expressir/model/literals/logical.rb +17 -0
- data/lib/expressir/model/literals/real.rb +13 -0
- data/lib/expressir/model/literals/string.rb +15 -0
- data/lib/expressir/model/parameter.rb +17 -0
- data/lib/expressir/model/procedure.rb +60 -0
- data/lib/expressir/model/renamed_ref.rb +13 -0
- data/lib/expressir/model/repository.rb +19 -0
- data/lib/expressir/model/rule.rb +62 -0
- data/lib/expressir/model/schema.rb +67 -0
- data/lib/expressir/model/scope.rb +17 -0
- data/lib/expressir/model/statements/alias.rb +26 -0
- data/lib/expressir/model/statements/assignment.rb +15 -0
- data/lib/expressir/model/statements/call.rb +15 -0
- data/lib/expressir/model/statements/case.rb +17 -0
- data/lib/expressir/model/statements/case_action.rb +15 -0
- data/lib/expressir/model/statements/compound.rb +13 -0
- data/lib/expressir/model/statements/escape.rb +8 -0
- data/lib/expressir/model/statements/if.rb +17 -0
- data/lib/expressir/model/statements/null.rb +8 -0
- data/lib/expressir/model/statements/repeat.rb +34 -0
- data/lib/expressir/model/statements/return.rb +13 -0
- data/lib/expressir/model/statements/skip.rb +8 -0
- data/lib/expressir/model/subtype_constraint.rb +27 -0
- data/lib/expressir/model/type.rb +24 -0
- data/lib/expressir/model/types/aggregate.rb +17 -0
- data/lib/expressir/model/types/array.rb +21 -0
- data/lib/expressir/model/types/bag.rb +17 -0
- data/lib/expressir/model/types/binary.rb +15 -0
- data/lib/expressir/model/types/boolean.rb +8 -0
- data/lib/expressir/model/types/enumeration.rb +19 -0
- data/lib/expressir/model/types/generic.rb +13 -0
- data/lib/expressir/model/types/generic_entity.rb +13 -0
- data/lib/expressir/model/types/integer.rb +8 -0
- data/lib/expressir/model/types/list.rb +19 -0
- data/lib/expressir/model/types/logical.rb +8 -0
- data/lib/expressir/model/types/number.rb +8 -0
- data/lib/expressir/model/types/real.rb +13 -0
- data/lib/expressir/model/types/select.rb +21 -0
- data/lib/expressir/model/types/set.rb +17 -0
- data/lib/expressir/model/types/string.rb +15 -0
- data/lib/expressir/model/unique.rb +15 -0
- data/lib/expressir/model/variable.rb +17 -0
- data/lib/expressir/model/where.rb +15 -0
- data/lib/expressir/parser.rb +6 -0
- data/lib/expressir/parser/owl_parser.rb +8 -0
- data/lib/expressir/version.rb +3 -0
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +9589 -0
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +36619 -0
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +13294 -0
- data/original/examples/employment/eclipse/.project +17 -0
- data/original/examples/employment/eclipse/Export/Employment.png +0 -0
- data/original/examples/employment/eclipse/Express/employment_schema.exp +33 -0
- data/original/examples/employment/eclipse/Express/employment_schema.xmi +77 -0
- data/original/examples/employment/eclipse/Express/employment_schema.xml +93 -0
- data/original/examples/employment/eclipse/Models/Employment.uml +4 -0
- data/original/examples/employment/eclipse/Models/Employment.umldi +240 -0
- data/original/examples/employment/eclipse/readme.txt +7 -0
- data/original/examples/employment/employment_schema.exp +33 -0
- data/original/examples/employment/employment_schema.rb +232 -0
- data/original/examples/employment/employment_schema.xml +93 -0
- data/original/examples/employment/employment_schema___module.rb +46 -0
- data/original/examples/employment/employment_schema___p28attr.rb +126 -0
- data/original/examples/employment/employment_schema___p28inst.rb +26 -0
- data/original/examples/employment/example_employment_data.xml +1 -0
- data/original/examples/employment/example_employment_data_copy.xml +1 -0
- data/original/examples/employment/example_employment_reader.rb +30 -0
- data/original/examples/employment/example_employment_writer.rb +51 -0
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +3710 -0
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +35880 -0
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +15357 -0
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +9468 -0
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +8404 -0
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +43147 -0
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +18341 -0
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +11632 -0
- data/original/examples/syntax/remark.exp +146 -0
- data/original/examples/syntax/remark_formatted.exp +175 -0
- data/original/examples/syntax/syntax.exp +311 -0
- data/original/examples/syntax/syntax_formatted.exp +1191 -0
- data/original/exp2ruby.rb +525 -0
- data/original/expsm.rb +34 -0
- data/original/mapping_owl.rb +1018 -0
- data/original/mapping_sysml.rb +2281 -0
- data/original/mapping_uml2.rb +599 -0
- data/original/mapping_uml2_eclipse.rb +433 -0
- data/original/reeper.rb +134 -0
- data/rakelib/cross-ruby.rake +308 -0
- data/spec/acceptance/express_to_owl_spec.rb +18 -0
- data/spec/acceptance/version_spec.rb +12 -0
- data/spec/expressir/express/repository_spec.rb +25 -0
- data/spec/expressir/express_exp/ap233_spec.rb +22 -0
- data/spec/expressir/express_exp/format_remark_spec.rb +28 -0
- data/spec/expressir/express_exp/format_syntax_spec.rb +28 -0
- data/spec/expressir/express_exp/parse_remark_spec.rb +346 -0
- data/spec/expressir/express_exp/parse_syntax_spec.rb +3003 -0
- data/spec/expressir/model/find_spec.rb +110 -0
- data/spec/expressr_spec.rb +5 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/support/console_helper.rb +29 -0
- metadata +357 -0
@@ -0,0 +1,7 @@
|
|
1
|
+
Topcased 4 Employment example - Roch Bertucat
|
2
|
+
|
3
|
+
This Eclipse project can be imported directly into Topcased:
|
4
|
+
- /Models/ contains the Topcased files,
|
5
|
+
- /Express/ contains the EXPRESS file, the generated XML, and the Eclipse UML2
|
6
|
+
compatible XMI file that can be read directly within Eclipse
|
7
|
+
- /Export/ contains the UML2 diagram exported from Topcased, based on the XMI file.
|
@@ -0,0 +1,33 @@
|
|
1
|
+
SCHEMA employment_schema;
|
2
|
+
|
3
|
+
TYPE date = STRING;
|
4
|
+
END_TYPE;
|
5
|
+
|
6
|
+
TYPE po = SELECT ( Person, Organization );
|
7
|
+
END_TYPE;
|
8
|
+
|
9
|
+
TYPE contract_type = ENUMERATION OF ( contract, atwill, contractor );
|
10
|
+
END_TYPE;
|
11
|
+
|
12
|
+
ENTITY Person;
|
13
|
+
names : LIST OF STRING;
|
14
|
+
END_ENTITY;
|
15
|
+
|
16
|
+
ENTITY Organization;
|
17
|
+
name : STRING;
|
18
|
+
END_ENTITY;
|
19
|
+
|
20
|
+
ENTITY PersonOrganizationRelationship;
|
21
|
+
the_person : Person;
|
22
|
+
the_organization : Organization;
|
23
|
+
start_date : date;
|
24
|
+
end_date : date;
|
25
|
+
END_ENTITY;
|
26
|
+
|
27
|
+
ENTITY Employment SUBTYPE OF ( PersonOrganizationRelationship );
|
28
|
+
job_title : STRING;
|
29
|
+
ended_by : po;
|
30
|
+
employment_type : contract_type;
|
31
|
+
END_ENTITY;
|
32
|
+
|
33
|
+
END_SCHEMA;
|
@@ -0,0 +1,232 @@
|
|
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
|
@@ -0,0 +1,93 @@
|
|
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>
|
@@ -0,0 +1,46 @@
|
|
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
|
@@ -0,0 +1,126 @@
|
|
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
|