activefacts 0.7.0 → 0.7.1
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.
- data/README.rdoc +0 -3
- data/Rakefile +7 -5
- data/bin/afgen +5 -2
- data/bin/cql +3 -2
- data/examples/CQL/Genealogy.cql +3 -3
- data/examples/CQL/Metamodel.cql +10 -7
- data/examples/CQL/MultiInheritance.cql +2 -1
- data/examples/CQL/OilSupply.cql +4 -4
- data/examples/CQL/Orienteering.cql +2 -2
- data/lib/activefacts.rb +2 -1
- data/lib/activefacts/api.rb +21 -2
- data/lib/activefacts/api/concept.rb +52 -39
- data/lib/activefacts/api/constellation.rb +8 -6
- data/lib/activefacts/api/entity.rb +41 -37
- data/lib/activefacts/api/instance.rb +5 -3
- data/lib/activefacts/api/numeric.rb +28 -21
- data/lib/activefacts/api/role.rb +29 -43
- data/lib/activefacts/api/standard_types.rb +8 -3
- data/lib/activefacts/api/support.rb +4 -4
- data/lib/activefacts/api/value.rb +9 -3
- data/lib/activefacts/api/vocabulary.rb +17 -7
- data/lib/activefacts/cql.rb +10 -7
- data/lib/activefacts/cql/CQLParser.treetop +6 -0
- data/lib/activefacts/cql/Concepts.treetop +32 -26
- data/lib/activefacts/cql/DataTypes.treetop +6 -0
- data/lib/activefacts/cql/Expressions.treetop +6 -0
- data/lib/activefacts/cql/FactTypes.treetop +6 -0
- data/lib/activefacts/cql/Language/English.treetop +9 -3
- data/lib/activefacts/cql/LexicalRules.treetop +6 -0
- data/lib/activefacts/cql/Rakefile +8 -0
- data/lib/activefacts/cql/parser.rb +4 -2
- data/lib/activefacts/generate/absorption.rb +20 -28
- data/lib/activefacts/generate/cql.rb +28 -16
- data/lib/activefacts/generate/cql/html.rb +327 -321
- data/lib/activefacts/generate/null.rb +7 -3
- data/lib/activefacts/generate/oo.rb +19 -15
- data/lib/activefacts/generate/ordered.rb +457 -461
- data/lib/activefacts/generate/ruby.rb +12 -4
- data/lib/activefacts/generate/sql/server.rb +42 -10
- data/lib/activefacts/generate/text.rb +7 -3
- data/lib/activefacts/input/cql.rb +55 -28
- data/lib/activefacts/input/orm.rb +32 -22
- data/lib/activefacts/persistence.rb +5 -0
- data/lib/activefacts/persistence/columns.rb +66 -32
- data/lib/activefacts/persistence/foreignkey.rb +29 -5
- data/lib/activefacts/persistence/index.rb +57 -25
- data/lib/activefacts/persistence/reference.rb +65 -30
- data/lib/activefacts/persistence/tables.rb +28 -17
- data/lib/activefacts/support.rb +8 -0
- data/lib/activefacts/version.rb +7 -1
- data/lib/activefacts/vocabulary.rb +4 -2
- data/lib/activefacts/vocabulary/extensions.rb +12 -10
- data/lib/activefacts/vocabulary/metamodel.rb +24 -23
- data/spec/api/autocounter.rb +2 -2
- data/spec/api/entity_type.rb +2 -2
- data/spec/api/instance.rb +61 -30
- data/spec/api/roles.rb +9 -9
- data/spec/cql_parse_spec.rb +1 -0
- data/spec/norma_tables_spec.rb +3 -3
- metadata +8 -4
@@ -127,8 +127,8 @@ module ActiveFacts
|
|
127
127
|
class PresenceConstraint < Constraint
|
128
128
|
maybe :is_mandatory
|
129
129
|
maybe :is_preferred_identifier
|
130
|
-
has_one :max_frequency, Frequency # See Frequency.
|
131
|
-
has_one :min_frequency, Frequency # See Frequency.
|
130
|
+
has_one :max_frequency, Frequency # See Frequency.all_presence_constraint_as_max_frequency
|
131
|
+
has_one :min_frequency, Frequency # See Frequency.all_presence_constraint_as_min_frequency
|
132
132
|
has_one :role_sequence # See RoleSequence.all_presence_constraint
|
133
133
|
end
|
134
134
|
|
@@ -141,7 +141,7 @@ module ActiveFacts
|
|
141
141
|
end
|
142
142
|
|
143
143
|
class RingConstraint < Constraint
|
144
|
-
has_one :other_role, "Role" # See Role.
|
144
|
+
has_one :other_role, "Role" # See Role.all_ring_constraint_as_other_role
|
145
145
|
has_one :ring_type # See RingType.all_ring_constraint
|
146
146
|
has_one :role # See Role.all_ring_constraint
|
147
147
|
end
|
@@ -163,8 +163,8 @@ module ActiveFacts
|
|
163
163
|
end
|
164
164
|
|
165
165
|
class SubsetConstraint < SetConstraint
|
166
|
-
has_one :subset_role_sequence, RoleSequence # See RoleSequence.
|
167
|
-
has_one :superset_role_sequence, RoleSequence # See RoleSequence.
|
166
|
+
has_one :subset_role_sequence, RoleSequence # See RoleSequence.all_subset_constraint_as_subset_role_sequence
|
167
|
+
has_one :superset_role_sequence, RoleSequence # See RoleSequence.all_subset_constraint_as_superset_role_sequence
|
168
168
|
end
|
169
169
|
|
170
170
|
class Unit
|
@@ -177,15 +177,15 @@ module ActiveFacts
|
|
177
177
|
|
178
178
|
class UnitBasis
|
179
179
|
identified_by :base_unit, :derived_unit
|
180
|
-
has_one :base_unit, Unit # See Unit.
|
181
|
-
has_one :derived_unit, Unit # See Unit.
|
180
|
+
has_one :base_unit, Unit # See Unit.all_unit_basis_as_base_unit
|
181
|
+
has_one :derived_unit, Unit # See Unit.all_unit_basis_as_derived_unit
|
182
182
|
has_one :exponent # See Exponent.all_unit_basis
|
183
183
|
end
|
184
184
|
|
185
185
|
class ValueRange
|
186
186
|
identified_by :minimum_bound, :maximum_bound
|
187
|
-
has_one :maximum_bound, Bound # See Bound.
|
188
|
-
has_one :minimum_bound, Bound # See Bound.
|
187
|
+
has_one :maximum_bound, Bound # See Bound.all_value_range_as_maximum_bound
|
188
|
+
has_one :minimum_bound, Bound # See Bound.all_value_range_as_minimum_bound
|
189
189
|
end
|
190
190
|
|
191
191
|
class ValueRestriction
|
@@ -206,7 +206,7 @@ module ActiveFacts
|
|
206
206
|
|
207
207
|
class Import
|
208
208
|
identified_by :imported_vocabulary, :vocabulary
|
209
|
-
has_one :imported_vocabulary, Vocabulary # See Vocabulary.
|
209
|
+
has_one :imported_vocabulary, Vocabulary # See Vocabulary.all_import_as_imported_vocabulary
|
210
210
|
has_one :vocabulary # See Vocabulary.all_import
|
211
211
|
end
|
212
212
|
|
@@ -219,8 +219,8 @@ module ActiveFacts
|
|
219
219
|
class Correspondence
|
220
220
|
identified_by :imported_feature, :import
|
221
221
|
has_one :import # See Import.all_correspondence
|
222
|
-
has_one :imported_feature, Feature # See Feature.
|
223
|
-
has_one :local_feature, Feature # See Feature.
|
222
|
+
has_one :imported_feature, Feature # See Feature.all_correspondence_as_imported_feature
|
223
|
+
has_one :local_feature, Feature # See Feature.all_correspondence_as_local_feature
|
224
224
|
end
|
225
225
|
|
226
226
|
class Population
|
@@ -233,7 +233,8 @@ module ActiveFacts
|
|
233
233
|
end
|
234
234
|
|
235
235
|
class SetComparisonRoles
|
236
|
-
identified_by :set_comparison_constraint, :
|
236
|
+
identified_by :set_comparison_constraint, :ordinal
|
237
|
+
has_one :ordinal # See Ordinal.all_set_comparison_roles
|
237
238
|
has_one :role_sequence # See RoleSequence.all_set_comparison_roles
|
238
239
|
has_one :set_comparison_constraint # See SetComparisonConstraint.all_set_comparison_roles
|
239
240
|
end
|
@@ -258,8 +259,8 @@ module ActiveFacts
|
|
258
259
|
has_one :concept # See Concept.all_role
|
259
260
|
has_one :fact_type # See FactType.all_role
|
260
261
|
has_one :ordinal # See Ordinal.all_role
|
261
|
-
has_one :role_name, Name # See Name.
|
262
|
-
has_one :role_value_restriction, ValueRestriction # See ValueRestriction.
|
262
|
+
has_one :role_name, Name # See Name.all_role_as_role_name
|
263
|
+
has_one :role_value_restriction, ValueRestriction # See ValueRestriction.all_role_as_role_value_restriction
|
263
264
|
end
|
264
265
|
|
265
266
|
class RoleRef
|
@@ -267,17 +268,17 @@ module ActiveFacts
|
|
267
268
|
has_one :ordinal # See Ordinal.all_role_ref
|
268
269
|
has_one :role # See Role.all_role_ref
|
269
270
|
has_one :role_sequence # See RoleSequence.all_role_ref
|
270
|
-
has_one :leading_adjective, Adjective # See Adjective.
|
271
|
-
has_one :trailing_adjective, Adjective # See Adjective.
|
271
|
+
has_one :leading_adjective, Adjective # See Adjective.all_role_ref_as_leading_adjective
|
272
|
+
has_one :trailing_adjective, Adjective # See Adjective.all_role_ref_as_trailing_adjective
|
272
273
|
end
|
273
274
|
|
274
275
|
class JoinPath
|
275
276
|
identified_by :role_ref, :join_step
|
276
|
-
has_one :join_step, Ordinal # See Ordinal.
|
277
|
+
has_one :join_step, Ordinal # See Ordinal.all_join_path_as_join_step
|
277
278
|
has_one :role_ref # See RoleRef.all_join_path
|
278
279
|
has_one :concept # See Concept.all_join_path
|
279
|
-
has_one :input_role, Role # See Role.
|
280
|
-
has_one :output_role, Role # See Role.
|
280
|
+
has_one :input_role, Role # See Role.all_join_path_as_input_role
|
281
|
+
has_one :output_role, Role # See Role.all_join_path_as_output_role
|
281
282
|
end
|
282
283
|
|
283
284
|
class EntityType < Concept
|
@@ -286,15 +287,15 @@ module ActiveFacts
|
|
286
287
|
|
287
288
|
class TypeInheritance < FactType
|
288
289
|
identified_by :subtype, :supertype
|
289
|
-
has_one :subtype, EntityType # See EntityType.
|
290
|
-
has_one :supertype, EntityType # See EntityType.
|
290
|
+
has_one :subtype, EntityType # See EntityType.all_type_inheritance_as_subtype
|
291
|
+
has_one :supertype, EntityType # See EntityType.all_type_inheritance_as_supertype
|
291
292
|
maybe :provides_identification
|
292
293
|
end
|
293
294
|
|
294
295
|
class ValueType < Concept
|
295
296
|
has_one :length # See Length.all_value_type
|
296
297
|
has_one :scale # See Scale.all_value_type
|
297
|
-
has_one :supertype, ValueType # See ValueType.
|
298
|
+
has_one :supertype, ValueType # See ValueType.all_value_type_as_supertype
|
298
299
|
has_one :unit # See Unit.all_value_type
|
299
300
|
has_one :value_restriction # See ValueRestriction.all_value_type
|
300
301
|
end
|
data/spec/api/autocounter.rb
CHANGED
@@ -49,10 +49,10 @@ describe "AutoCounter Value Type instances" do
|
|
49
49
|
}.should raise_error
|
50
50
|
end
|
51
51
|
|
52
|
-
it "should allow its roles to be assigned" do
|
52
|
+
it "should not allow its identifying roles to be assigned" do
|
53
53
|
lambda {
|
54
54
|
@thing.thing_id = @thing_id
|
55
|
-
}.
|
55
|
+
}.should raise_error
|
56
56
|
end
|
57
57
|
|
58
58
|
it "should allow an existing counter to be re-used" do
|
data/spec/api/entity_type.rb
CHANGED
@@ -83,10 +83,10 @@ describe "Entity Type class definitions" do
|
|
83
83
|
end
|
84
84
|
|
85
85
|
it "should return the identifying roles" do
|
86
|
-
Mod::Person.
|
86
|
+
Mod::Person.identifying_role_names.should == [:name]
|
87
87
|
end
|
88
88
|
|
89
|
-
it "should prevent a role name from matching a concept that exists unless that concept is the
|
89
|
+
it "should prevent a role name from matching a concept that exists unless that concept is the counterpart" do
|
90
90
|
lambda {
|
91
91
|
module Mod
|
92
92
|
class LegalEntity
|
data/spec/api/instance.rb
CHANGED
@@ -190,7 +190,9 @@ describe "An instance of every type of Concept" do
|
|
190
190
|
:int_value, :real_value, :auto_counter_value, :auto_counter_value,
|
191
191
|
:string_value, :date_value, :date_time_value,
|
192
192
|
:int_sub_value, :real_sub_value, :auto_counter_sub_value, :auto_counter_sub_value,
|
193
|
-
:string_sub_value, :date_sub_value, :date_time_sub_value
|
193
|
+
:string_sub_value, :date_sub_value, :date_time_sub_value,
|
194
|
+
:int_value, :real_value, :auto_counter_value, :auto_counter_value,
|
195
|
+
:string_value, :date_value, :date_time_value,
|
194
196
|
]
|
195
197
|
@role_values = [
|
196
198
|
3, 3.0, 6, 7,
|
@@ -223,11 +225,11 @@ describe "An instance of every type of Concept" do
|
|
223
225
|
|
224
226
|
# All identifying roles should be in the verbalisation.
|
225
227
|
# Strictly this should be the role name, but we don't set names here.
|
226
|
-
entity_type.
|
228
|
+
entity_type.identifying_role_names.each do |ir|
|
227
229
|
role = entity_type.roles(ir)
|
228
230
|
role.should_not be_nil
|
229
|
-
|
230
|
-
verbalisation.should =~ %r{\b#{
|
231
|
+
counterpart_concept = role.counterpart_concept
|
232
|
+
verbalisation.should =~ %r{\b#{counterpart_concept.basename}\b}
|
231
233
|
end
|
232
234
|
end
|
233
235
|
end
|
@@ -247,11 +249,11 @@ describe "An instance of every type of Concept" do
|
|
247
249
|
entity.respond_to?(:verbalise).should be_true
|
248
250
|
verbalisation = entity.verbalise
|
249
251
|
verbalisation.should =~ %r{\b#{entity.class.basename}\b}
|
250
|
-
entity.class.
|
252
|
+
entity.class.identifying_role_names.each do |ir|
|
251
253
|
role = entity.class.roles(ir)
|
252
254
|
role.should_not be_nil
|
253
|
-
|
254
|
-
verbalisation.should =~ %r{\b#{
|
255
|
+
counterpart_concept = role.counterpart_concept
|
256
|
+
verbalisation.should =~ %r{\b#{counterpart_concept.basename}\b}
|
255
257
|
end
|
256
258
|
end
|
257
259
|
end
|
@@ -272,7 +274,7 @@ describe "An instance of every type of Concept" do
|
|
272
274
|
end
|
273
275
|
end
|
274
276
|
@entities_by_entity.each do |entity|
|
275
|
-
role = entity.class.roles(entity.class.
|
277
|
+
role = entity.class.roles(entity.class.identifying_role_names[0])
|
276
278
|
role_name = role.name
|
277
279
|
entity.respond_to?(role_name).should be_true
|
278
280
|
entity.respond_to?(:"#{role_name}=").should be_true
|
@@ -310,37 +312,27 @@ describe "An instance of every type of Concept" do
|
|
310
312
|
e = entity_type.new(value)
|
311
313
|
}.should_not raise_error
|
312
314
|
# Verify that the identifying role has a equivalent value (except AutoCounter):
|
313
|
-
role_name = entity_type.
|
315
|
+
role_name = entity_type.identifying_role_names[0]
|
314
316
|
role = entity_type.roles(role_name)
|
315
|
-
|
316
|
-
player_superclasses = [
|
317
|
+
counterpart_concept = role.counterpart_concept
|
318
|
+
player_superclasses = [ counterpart_concept.superclass, counterpart_concept.superclass.superclass ]
|
317
319
|
e.send(role_name).should == klass.new(*value) unless player_superclasses.include?(AutoCounter)
|
318
320
|
end
|
319
321
|
end
|
320
322
|
end
|
321
323
|
|
322
|
-
it "that are entities should not allow its identifying roles to be assigned" do
|
323
|
-
pending
|
324
|
-
@entities.zip(@test_role_names, @role_values).each do |entity, role_name, value|
|
325
|
-
lambda {
|
326
|
-
entity.send(:"#{role_name}=", value)
|
327
|
-
}.should raise_error
|
328
|
-
end
|
329
|
-
@entities_by_entity.each do |entity|
|
330
|
-
role = entity.class.roles(entity.class.identifying_roles[0])
|
331
|
-
role_name = role.name
|
332
|
-
lambda {
|
333
|
-
entity.send(:"#{role_name}=", nil)
|
334
|
-
}.should raise_error
|
335
|
-
end
|
336
|
-
end
|
337
|
-
|
338
324
|
it "should allow its non-identifying roles to be assigned values" do
|
339
325
|
@entities.zip(@test_role_names).each do |entity, identifying_role|
|
340
326
|
@test_role_names.zip(@role_values).each do |role_name, value|
|
341
|
-
|
327
|
+
# No roles of ValueType instances are tested in this file:
|
328
|
+
raise hell unless entity.class.included_modules.include?(ActiveFacts::API::Entity)
|
329
|
+
next if entity.class.identifying_role_names.include?(role_name)
|
342
330
|
lambda {
|
343
|
-
|
331
|
+
begin
|
332
|
+
entity.send(:"#{role_name}=", value)
|
333
|
+
rescue => e
|
334
|
+
raise
|
335
|
+
end
|
344
336
|
}.should_not raise_error
|
345
337
|
lambda {
|
346
338
|
entity.send(:"one_#{role_name}=", value)
|
@@ -349,6 +341,45 @@ describe "An instance of every type of Concept" do
|
|
349
341
|
end
|
350
342
|
end
|
351
343
|
|
344
|
+
it "that is an entity type should not allow its identifying roles to be re-assigned" do
|
345
|
+
@entities.zip(@test_role_names).each do |entity, identifying_role|
|
346
|
+
@test_role_names.zip(@role_values).each do |role_name, value|
|
347
|
+
if entity.class.identifying_role_names.include?(role_name) && entity.send(role_name) != nil && value != nil
|
348
|
+
lambda {
|
349
|
+
entity.send(:"#{role_name}=", value)
|
350
|
+
}.should raise_error
|
351
|
+
end
|
352
|
+
one_role = :"one_#{role_name}"
|
353
|
+
if entity.class.identifying_role_names.include?(one_role) && entity.send(one_role) != nil
|
354
|
+
lambda {
|
355
|
+
entity.send(:"one_#{role_name}=", value)
|
356
|
+
}.should raise_error
|
357
|
+
end
|
358
|
+
end
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
it "that is an entity type should allow its identifying roles to be assigned to and from nil" do
|
363
|
+
@entities.zip(@test_role_names).each do |entity, identifying_role|
|
364
|
+
@test_role_names.zip(@role_values).each do |role_name, value|
|
365
|
+
if entity.class.identifying_role_names.include?(role_name)
|
366
|
+
# Nullify the value first:
|
367
|
+
entity.send(:"#{role_name}=", nil)
|
368
|
+
lambda {
|
369
|
+
entity.send(:"#{role_name}=", value)
|
370
|
+
}.should_not raise_error
|
371
|
+
end
|
372
|
+
one_role = :"one_#{role_name}"
|
373
|
+
if entity.class.identifying_role_names.include?(one_role) && entity.send(one_role) == nil
|
374
|
+
entity.send(one_role, nil)
|
375
|
+
lambda {
|
376
|
+
entity.send(one_role, value)
|
377
|
+
}.should_not raise_error
|
378
|
+
end
|
379
|
+
end
|
380
|
+
end
|
381
|
+
end
|
382
|
+
|
352
383
|
it "should allow its non-identifying roles to be assigned instances" do
|
353
384
|
@entities.zip(@test_role_names).each do |entity, identifying_role|
|
354
385
|
@test_role_names.zip(@value_types, @role_values).each do |role_name, klass, value|
|
@@ -384,7 +415,7 @@ describe "An instance of every type of Concept" do
|
|
384
415
|
end
|
385
416
|
end
|
386
417
|
|
387
|
-
it "should add to has_one's
|
418
|
+
it "should add to has_one's counterpart role when non-identifying roles are assigned values" do
|
388
419
|
@entities.zip(@test_role_names).each do |entity, identifying_role|
|
389
420
|
@test_role_names.zip(@role_values).each do |role_name, value|
|
390
421
|
next if role_name == identifying_role or !value
|
data/spec/api/roles.rb
CHANGED
@@ -39,7 +39,7 @@ describe "Roles" do
|
|
39
39
|
end
|
40
40
|
role = Mod::Existing1.roles(:name)
|
41
41
|
role.should_not be_nil
|
42
|
-
role.
|
42
|
+
role.counterpart_concept.should == Mod::Name
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should inject the respective role name into the matching concept" do
|
@@ -50,7 +50,7 @@ describe "Roles" do
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
Mod::Name.roles(:all_existing1).should_not be_nil
|
53
|
-
Mod::LegalEntity.roles(:
|
53
|
+
Mod::LegalEntity.roles(:all_contract_as_first).should_not be_nil
|
54
54
|
end
|
55
55
|
|
56
56
|
it "should associate a role name with a matching concept after it's created" do
|
@@ -63,7 +63,7 @@ describe "Roles" do
|
|
63
63
|
# print "Mod::Existing2.roles = "; p Mod::Existing2.roles
|
64
64
|
r = Mod::Existing2.roles(:given_name)
|
65
65
|
r.should_not be_nil
|
66
|
-
Symbol.should === r.
|
66
|
+
Symbol.should === r.counterpart_concept
|
67
67
|
module Mod
|
68
68
|
class GivenName < String
|
69
69
|
value_type
|
@@ -72,7 +72,7 @@ describe "Roles" do
|
|
72
72
|
# puts "Should resolve now:"
|
73
73
|
r = Mod::Existing2.roles(:given_name)
|
74
74
|
r.should_not be_nil
|
75
|
-
r.
|
75
|
+
r.counterpart_concept.should == Mod::GivenName
|
76
76
|
end
|
77
77
|
|
78
78
|
it "should handle subtyping a value type" do
|
@@ -84,8 +84,8 @@ describe "Roles" do
|
|
84
84
|
end
|
85
85
|
r = Mod::FamilyName.roles(:patriarch)
|
86
86
|
r.should_not be_nil
|
87
|
-
r.
|
88
|
-
r.
|
87
|
+
r.counterpart_concept.should == Mod::Person
|
88
|
+
r.counterpart_concept.roles(:family_name_as_patriarch).counterpart_concept.should == Mod::FamilyName
|
89
89
|
end
|
90
90
|
|
91
91
|
it "should instantiate the matching concept on assignment" do
|
@@ -98,7 +98,7 @@ describe "Roles" do
|
|
98
98
|
contract.second.should == acme
|
99
99
|
end
|
100
100
|
|
101
|
-
it "should append the
|
101
|
+
it "should append the counterpart into the respective role array in the matching concept" do
|
102
102
|
foo = Mod::Name.new("Foo")
|
103
103
|
le = Mod::LegalEntity.new(foo)
|
104
104
|
le.respond_to?(:name).should be_true
|
@@ -106,7 +106,7 @@ describe "Roles" do
|
|
106
106
|
name.respond_to?(:all_legal_entity).should be_true
|
107
107
|
|
108
108
|
#pending
|
109
|
-
name.all_legal_entity.should === [le]
|
109
|
+
Array(name.all_legal_entity).should === [le]
|
110
110
|
end
|
111
111
|
|
112
112
|
it "should instantiate subclasses sensibly" do
|
@@ -115,7 +115,7 @@ describe "Roles" do
|
|
115
115
|
#pending
|
116
116
|
p = c.Person("Fred", "Bloggs")
|
117
117
|
p.related_to = "Bloggs & Co"
|
118
|
-
Mod::LegalEntity
|
118
|
+
p.related_to.should be_is_a(Mod::LegalEntity)
|
119
119
|
bloggs.object_id.should == p.related_to.object_id
|
120
120
|
end
|
121
121
|
|
data/spec/cql_parse_spec.rb
CHANGED
data/spec/norma_tables_spec.rb
CHANGED
@@ -18,14 +18,14 @@ include ActiveFacts::Metamodel
|
|
18
18
|
|
19
19
|
Exceptions = {
|
20
20
|
"Blog" => ["Author", "Comment", "Paragraph", "Post", "Topic"],
|
21
|
-
"
|
21
|
+
"JoinEquality" => ["Event", "Seat", "Ticket", "Venue"],
|
22
22
|
"Metamodel" => ["AllowedRange", "Constraint", "Correspondence", "Derivation", "Fact", "FactType", "Feature", "Instance", "JoinPath", "Reading", "Role", "RoleRef", "RoleSequence", "RoleValue", "SetComparisonRoles", "Unit", "ValueRestriction"],
|
23
23
|
"MetamodelTerms" => ["AllowedValue", "Concept", "Constraint", "Derivation", "Fact", "FactType", "Import", "Instance", "Join", "JoinRole", "ParamValue", "Reading", "Role", "RoleRef", "RoleSequence", "RoleValue", "SetComparisonRoles", "Term", "Unit", "ValueRestriction"],
|
24
24
|
"OilSupply" => ["AcceptableSubstitutes", "Month", "ProductionForecast", "RegionalDemand", "TransportRoute"],
|
25
|
-
"OilSupplyWithCosts" => ["AcceptableSubstitutes", "Month", "ProductionForecast", "RegionalDemand", "TransportRoute"],
|
26
25
|
"Orienteering" => ["Club", "Entry", "Event", "EventControl", "EventScoringMethod", "Map", "Person", "Punch", "PunchPlacement", "Series", "Visit"],
|
27
26
|
"SeparateSubtype" => ["Claim", "VehicleIncident"],
|
28
|
-
"Warehousing" => ["Bin", "DirectOrderMatch", "DispatchItem", "Party", "Product", "PurchaseOrder", "PurchaseOrderItem", "ReceivedItem", "SalesOrder", "SalesOrderItem", "TransferRequest", "Warehouse"]
|
27
|
+
"Warehousing" => ["Bin", "DirectOrderMatch", "DispatchItem", "Party", "Product", "PurchaseOrder", "PurchaseOrderItem", "ReceivedItem", "SalesOrder", "SalesOrderItem", "TransferRequest", "Warehouse"],
|
28
|
+
"RedundantDependency" => ["Address", "LegislativeDistrict", "StateOrProvince"],
|
29
29
|
}
|
30
30
|
|
31
31
|
def extract_created_tables_from_sql sql_file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activefacts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Clifford Heath
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-23 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -147,12 +147,16 @@ has_rdoc: true
|
|
147
147
|
homepage: http://dataconstellation.com/ActiveFacts/
|
148
148
|
post_install_message: For more information on ActiveFacts, see http://dataconstellation.com/ActiveFacts
|
149
149
|
rdoc_options:
|
150
|
+
- -A
|
151
|
+
- has_one
|
152
|
+
- -A
|
153
|
+
- one_to_one
|
154
|
+
- -A
|
155
|
+
- maybe
|
150
156
|
- -x
|
151
157
|
- lib/activefacts/cql/.*.rb
|
152
158
|
- -x
|
153
159
|
- lib/activefacts/vocabulary/.*.rb
|
154
|
-
- -x
|
155
|
-
- lib/activefacts/persistence/.*.rb
|
156
160
|
require_paths:
|
157
161
|
- lib
|
158
162
|
required_ruby_version: !ruby/object:Gem::Requirement
|