Class: ActiveFacts::CQL::Compiler::SetExclusionConstraint
- Inherits:
-
SetComparisonConstraint
- Object
- Definition
- Constraint
- SetConstraint
- SetComparisonConstraint
- ActiveFacts::CQL::Compiler::SetExclusionConstraint
- Defined in:
- lib/activefacts/cql/compiler/constraint.rb
Instance Attribute Summary
Attributes inherited from Definition
#constellation, #tree, #vocabulary
Instance Method Summary collapse
- #compile ⇒ Object
-
#initialize(context_note, enforcement, clauses_lists, roles, quantifier) ⇒ SetExclusionConstraint
constructor
A new instance of SetExclusionConstraint.
-
#loose_binding ⇒ Object
In a SetExclusionConstraint, each role in “for each XYZ” must occur in each clauses_list.
Methods inherited from SetConstraint
#role_sequences_for_common_bindings, #warn_ignored_queries
Methods inherited from Constraint
#bind_clauses, #common_bindings, #loose_bind, #loose_bind_wherever_possible, #to_s, #warn_ignored_queries
Methods inherited from Definition
#all_bindings_in_clauses, #assert_literal_value, #build_all_steps, #build_step, #build_variables, #source, #to_s
Constructor Details
#initialize(context_note, enforcement, clauses_lists, roles, quantifier) ⇒ SetExclusionConstraint
Returns a new instance of SetExclusionConstraint.
375 376 377 378 379 |
# File 'lib/activefacts/cql/compiler/constraint.rb', line 375 def initialize context_note, enforcement, clauses_lists, roles, quantifier super context_note, enforcement, clauses_lists @roles = roles || [] @quantifier = quantifier end |
Instance Method Details
#compile ⇒ Object
381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 |
# File 'lib/activefacts/cql/compiler/constraint.rb', line 381 def compile bind_clauses @roles common_bindings role_sequences = role_sequences_for_common_bindings @constraint = @constellation.SetExclusionConstraint( :new, :vocabulary => @vocabulary, :is_mandatory => @quantifier.min == 1 ) if @quantifier.pragmas @quantifier.pragmas.each do |p| @constellation.ConceptAnnotation(:concept => @constraint.concept, :mapping_annotation => p) end end @enforcement.compile(@constellation, @constraint) if @enforcement role_sequences.each_with_index do |role_sequence, i| @constellation.SetComparisonRoles(@constraint, i, :role_sequence => role_sequence) end super end |
#loose_binding ⇒ Object
In a SetExclusionConstraint, each role in “for each XYZ” must occur in each clauses_list
406 407 408 409 410 411 412 |
# File 'lib/activefacts/cql/compiler/constraint.rb', line 406 def loose_binding if @roles.size == 0 loose_bind_wherever_possible else loose_bind end end |