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.
Files changed (60) hide show
  1. data/README.rdoc +0 -3
  2. data/Rakefile +7 -5
  3. data/bin/afgen +5 -2
  4. data/bin/cql +3 -2
  5. data/examples/CQL/Genealogy.cql +3 -3
  6. data/examples/CQL/Metamodel.cql +10 -7
  7. data/examples/CQL/MultiInheritance.cql +2 -1
  8. data/examples/CQL/OilSupply.cql +4 -4
  9. data/examples/CQL/Orienteering.cql +2 -2
  10. data/lib/activefacts.rb +2 -1
  11. data/lib/activefacts/api.rb +21 -2
  12. data/lib/activefacts/api/concept.rb +52 -39
  13. data/lib/activefacts/api/constellation.rb +8 -6
  14. data/lib/activefacts/api/entity.rb +41 -37
  15. data/lib/activefacts/api/instance.rb +5 -3
  16. data/lib/activefacts/api/numeric.rb +28 -21
  17. data/lib/activefacts/api/role.rb +29 -43
  18. data/lib/activefacts/api/standard_types.rb +8 -3
  19. data/lib/activefacts/api/support.rb +4 -4
  20. data/lib/activefacts/api/value.rb +9 -3
  21. data/lib/activefacts/api/vocabulary.rb +17 -7
  22. data/lib/activefacts/cql.rb +10 -7
  23. data/lib/activefacts/cql/CQLParser.treetop +6 -0
  24. data/lib/activefacts/cql/Concepts.treetop +32 -26
  25. data/lib/activefacts/cql/DataTypes.treetop +6 -0
  26. data/lib/activefacts/cql/Expressions.treetop +6 -0
  27. data/lib/activefacts/cql/FactTypes.treetop +6 -0
  28. data/lib/activefacts/cql/Language/English.treetop +9 -3
  29. data/lib/activefacts/cql/LexicalRules.treetop +6 -0
  30. data/lib/activefacts/cql/Rakefile +8 -0
  31. data/lib/activefacts/cql/parser.rb +4 -2
  32. data/lib/activefacts/generate/absorption.rb +20 -28
  33. data/lib/activefacts/generate/cql.rb +28 -16
  34. data/lib/activefacts/generate/cql/html.rb +327 -321
  35. data/lib/activefacts/generate/null.rb +7 -3
  36. data/lib/activefacts/generate/oo.rb +19 -15
  37. data/lib/activefacts/generate/ordered.rb +457 -461
  38. data/lib/activefacts/generate/ruby.rb +12 -4
  39. data/lib/activefacts/generate/sql/server.rb +42 -10
  40. data/lib/activefacts/generate/text.rb +7 -3
  41. data/lib/activefacts/input/cql.rb +55 -28
  42. data/lib/activefacts/input/orm.rb +32 -22
  43. data/lib/activefacts/persistence.rb +5 -0
  44. data/lib/activefacts/persistence/columns.rb +66 -32
  45. data/lib/activefacts/persistence/foreignkey.rb +29 -5
  46. data/lib/activefacts/persistence/index.rb +57 -25
  47. data/lib/activefacts/persistence/reference.rb +65 -30
  48. data/lib/activefacts/persistence/tables.rb +28 -17
  49. data/lib/activefacts/support.rb +8 -0
  50. data/lib/activefacts/version.rb +7 -1
  51. data/lib/activefacts/vocabulary.rb +4 -2
  52. data/lib/activefacts/vocabulary/extensions.rb +12 -10
  53. data/lib/activefacts/vocabulary/metamodel.rb +24 -23
  54. data/spec/api/autocounter.rb +2 -2
  55. data/spec/api/entity_type.rb +2 -2
  56. data/spec/api/instance.rb +61 -30
  57. data/spec/api/roles.rb +9 -9
  58. data/spec/cql_parse_spec.rb +1 -0
  59. data/spec/norma_tables_spec.rb +3 -3
  60. 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.all_presence_constraint_by_max_frequency
131
- has_one :min_frequency, Frequency # See Frequency.all_presence_constraint_by_min_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.all_ring_constraint_by_other_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.all_subset_constraint_by_subset_role_sequence
167
- has_one :superset_role_sequence, RoleSequence # See RoleSequence.all_subset_constraint_by_superset_role_sequence
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.all_unit_basis_by_base_unit
181
- has_one :derived_unit, Unit # See Unit.all_unit_basis_by_derived_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.all_value_range_by_maximum_bound
188
- has_one :minimum_bound, Bound # See Bound.all_value_range_by_minimum_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.all_import_by_imported_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.all_correspondence_by_imported_feature
223
- has_one :local_feature, Feature # See Feature.all_correspondence_by_local_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, :role_sequence
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.all_role_by_role_name
262
- has_one :role_value_restriction, ValueRestriction # See ValueRestriction.all_role_by_role_value_restriction
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.all_role_ref_by_leading_adjective
271
- has_one :trailing_adjective, Adjective # See Adjective.all_role_ref_by_trailing_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.all_join_path_by_join_step
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.all_join_path_by_input_role
280
- has_one :output_role, Role # See Role.all_join_path_by_output_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.all_type_inheritance_by_subtype
290
- has_one :supertype, EntityType # See EntityType.all_type_inheritance_by_supertype
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.all_value_type_by_supertype
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
@@ -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
- }.should_not raise_error
55
+ }.should raise_error
56
56
  end
57
57
 
58
58
  it "should allow an existing counter to be re-used" do
@@ -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.identifying_roles.should == [:name]
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 player" do
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
@@ -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.identifying_roles.each do |ir|
228
+ entity_type.identifying_role_names.each do |ir|
227
229
  role = entity_type.roles(ir)
228
230
  role.should_not be_nil
229
- player = role.player
230
- verbalisation.should =~ %r{\b#{player.basename}\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.identifying_roles.each do |ir|
252
+ entity.class.identifying_role_names.each do |ir|
251
253
  role = entity.class.roles(ir)
252
254
  role.should_not be_nil
253
- player = role.player
254
- verbalisation.should =~ %r{\b#{player.basename}\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.identifying_roles[0])
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.identifying_roles[0]
315
+ role_name = entity_type.identifying_role_names[0]
314
316
  role = entity_type.roles(role_name)
315
- player = role.player
316
- player_superclasses = [ player.superclass, player.superclass.superclass ]
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
- next if role_name == identifying_role
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
- entity.send(:"#{role_name}=", value)
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 conterpart role when non-identifying roles are assigned values" do
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
@@ -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.player.should == Mod::Name
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(:all_contract_by_first).should_not be_nil
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.player
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.player.should == Mod::GivenName
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.player.should == Mod::Person
88
- r.player.roles(:family_name).player.should == Mod::FamilyName
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 player into the respective role array in the matching concept" do
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.should === p.related_to
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
 
@@ -17,6 +17,7 @@ describe "CQL Parser" do
17
17
  CompanyQuery
18
18
  Insurance
19
19
  OrienteeringER
20
+ ServiceDirector
20
21
  }
21
22
 
22
23
  #Dir["examples/CQL/Bl*.cql"].each do |cql_file|
@@ -18,14 +18,14 @@ include ActiveFacts::Metamodel
18
18
 
19
19
  Exceptions = {
20
20
  "Blog" => ["Author", "Comment", "Paragraph", "Post", "Topic"],
21
- "DeathAsBinary" => ["Person"],
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.0
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-09 00:00:00 +11:00
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