expressir 0.2.7-x86-mingw32
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.
- 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.so +0 -0
- data/lib/expressir/express_exp/2.5/express_parser.so +0 -0
- data/lib/expressir/express_exp/2.6/express_parser.so +0 -0
- data/lib/expressir/express_exp/2.7/express_parser.so +0 -0
- data/lib/expressir/express_exp/3.0/express_parser.so +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
|