pn.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from services.scd import SCD
  2. from uuid import UUID
  3. from state.base import State
  4. def bootstrap_pn(state: State, model_name: str) -> UUID:
  5. # Retrieve scd model
  6. scd_id = state.read_dict(state.read_root(), "SCD")
  7. scd = UUID(state.read_value(scd_id))
  8. # Retrieve refs to primitive type models
  9. # # integer
  10. int_type_id = state.read_dict(state.read_root(), "Integer")
  11. int_type = UUID(state.read_value(int_type_id))
  12. # # string
  13. str_type_id = state.read_dict(state.read_root(), "String")
  14. str_type = UUID(state.read_value(str_type_id))
  15. # Create LTM_PN
  16. model_uuid = state.create_node()
  17. mcl_root_id = state.create_nodevalue(str(model_uuid))
  18. state.create_dict(state.read_root(), model_name, mcl_root_id)
  19. service = SCD(model_uuid, state)
  20. # Create classes
  21. service.create_class("P")
  22. service.create_class("T")
  23. # Create associations
  24. service.create_association("P2T", "P", "T")
  25. service.create_association("T2P", "T", "P")
  26. # Create model refs
  27. service.create_model_ref("Integer", int_type)
  28. service.create_model_ref("String", str_type)
  29. # Create class attributes
  30. service.create_attribute_link("P", "Integer", "t", False)
  31. service.create_attribute_link("P", "String", "n", False)
  32. service.create_attribute_link("T", "String", "name", False)
  33. # Create association attributes
  34. service.create_attribute_link("P2T", "Integer", "weight", False)
  35. service.create_attribute_link("T2P", "Integer", "weight", False)
  36. # Create test constraint
  37. service.add_constraint("P", "True")
  38. return model_uuid