Module: ActiveFacts::Generators::ScalaTraits::FactType
- Defined in:
- lib/activefacts/generators/traits/scala.rb
Instance Method Summary collapse
-
#fact_roles ⇒ Object
An objectified fact type has internal roles that are always “has_one”:.
- #scala_definition ⇒ Object
- #scala_metamodel ⇒ Object
- #scala_name ⇒ Object
Instance Method Details
#fact_roles ⇒ Object
An objectified fact type has internal roles that are always “has_one”:
417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 |
# File 'lib/activefacts/generators/traits/scala.rb', line 417 def fact_roles raise "Fact #{describe} type is not objectified" unless entity_type all_role.sort_by do |role| role.scala_preferred_role_name(entity_type) end. map do |role| role_name = role.scala_preferred_role_name(entity_type) one_to_one = role.all_role_ref.detect{|rr| rr.role_sequence.all_role_ref.size == 1 && rr.role_sequence.all_presence_constraint.detect{|pc| pc.max_frequency == 1 } } counterpart_role_method = (one_to_one ? "" : "all_") + entity_type.oo_default_role_name + (role_name != role.object_type.oo_default_role_name ? "_as_#{role_name}" : '') role.as_binary(role_name, role.object_type, true, one_to_one, nil, nil, counterpart_role_method) end. join('') end |
#scala_definition ⇒ Object
392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 |
# File 'lib/activefacts/generators/traits/scala.rb', line 392 def scala_definition # Dump a non-objectified fact type name_words = scala_name role_names = preferred_reading.role_sequence.all_role_ref_in_order.map do |rr| rr.role.scala_preferred_role_name.words.camelcase end role_types = preferred_reading.role_sequence.all_role_ref_in_order.map do |rr| rr.role.object_type.name.words.camelcase end " case class #{name_words.titlecase}(#{role_names.zip(role_types).map{|n, t| n+': '+t}*', '})(implicit val constellation: Constellation) extends FBMModel.BinaryFact {\n" + " def factType = metaModel.#{name_words.camelcase}\n" + " def rolePlayers = (#{role_names*', '})\n" + " }\n\n" end |
#scala_metamodel ⇒ Object
408 409 410 411 412 413 414 |
# File 'lib/activefacts/generators/traits/scala.rb', line 408 def name_words = scala_name role_names = preferred_reading.role_sequence.all_role_ref_in_order.map do |rr| rr.role.scala_preferred_role_name.words.camelcase end " val #{name_words.camelcase} = assertEntity(FBMModel.BinaryFactType(FBMModel.FactTypeName(\"#{name_words.titlecase}\"), (#{role_names*', '})))\n" end |
#scala_name ⇒ Object
388 389 390 |
# File 'lib/activefacts/generators/traits/scala.rb', line 388 def scala_name default_reading.words end |