SCDContext should be done

This commit is contained in:
Andrei Bondarenko 2021-07-19 09:08:10 +02:00
parent d7ba998cd7
commit 2e3576a1a8
4 changed files with 157 additions and 50 deletions

View file

@ -22,8 +22,9 @@ class GenericContext(Context):
self.instantiate_value,
self.instantiate_link,
self.retype_element,
self.list_elements,
self.delete_element,
self.list_elements,
self.list_types,
self.verify,
]
@ -47,7 +48,7 @@ class GenericContext(Context):
if not self._type_exists(type_name, instantiate_link=False):
print(f"Attempting to instantiate element with invalid type: {type_name.value}")
else:
self.bottom.add_value(name, value.value)
self.bottom.add_value(name, value)
self.retype_element(name, type_name)
def instantiate_link(self, type_name: String, name: String, source: String, target: String):

View file

@ -17,16 +17,105 @@ class SCDContext(GenericContext):
]
def create_class(self, name: String, lower_cardinality: Integer = Element(), upper_cardinality: Integer = Element()):
pass
self.instantiate(Element(value="Class"), name)
if lower_cardinality.value is not None:
self.instantiate_value(
Element(value="Class_lower_cardinality"),
Element(value=name.value + ".lower_cardinality"),
lower_cardinality
)
self.instantiate_link(
Element(value="Class_lower_cardinality_link"),
Element(value=name.value + ".lower_cardinality_link"),
name,
Element(value=name.value + ".lower_cardinality")
)
if upper_cardinality.value is not None:
self.instantiate_value(
Element(value="Class_upper_cardinality"),
Element(value=name.value + ".upper_cardinality"),
upper_cardinality
)
self.instantiate_link(
Element(value="Class_upper_cardinality_link"),
Element(value=name.value + ".upper_cardinality_link"),
name,
Element(value=name.value + ".upper_cardinality")
)
def create_class_attribute(self, class_name: String, name: String, optional: Boolean = Element(value=False)):
pass
# create attribute
element_name = Element(value=f"{class_name.value}_{name.value}")
element_link_name = Element(value=f"{class_name.value}_{name.value}_link")
self.instantiate(Element(value="Attribute"), element_name)
self.instantiate_link(Element(value="AttributeLink"), element_link_name, class_name, element_name)
# set attribute's attributes
attr_name_name = Element(value=f"{class_name.value}_{name.value}.name")
attr_optional_name = Element(value=f"{class_name.value}_{name.value}.optional")
attr_name_link_name = Element(value=f"{class_name.value}_{name.value}.name_link")
attr_optional_link_name = Element(value=f"{class_name.value}_{name.value}.optional_link")
self.instantiate_value(Element(value="Attribute_name"), attr_name_name, name)
self.instantiate_value(Element(value="Attribute_optional"), attr_optional_name, optional)
self.instantiate_link(Element(value="Attribute_name_link"), attr_name_link_name, element_name, attr_name_name)
self.instantiate_link(Element(value="Attribute_optional_link"), attr_optional_link_name, element_name, attr_optional_name)
def create_association(self, source_class_name: String, target_class_name: String, name: String,
source_lower_cardinality: Integer = Element(), target_lower_cardinality: Integer = Element(),
source_upper_cardinality: Integer = Element(), target_upper_cardinality: Integer = Element()
):
pass
self.instantiate_link(Element(value="Association"), name, source_class_name, target_class_name)
if source_lower_cardinality.value is not None:
self.instantiate_value(
Element(value="Association_source_lower_cardinality"),
Element(value=name.value + ".source_lower_cardinality"),
source_lower_cardinality
)
self.instantiate_link(
Element(value="Association_source_lower_cardinality_link"),
Element(value=name.value + ".source_lower_cardinality_link"),
name,
Element(value=name.value + ".source_lower_cardinality")
)
if source_upper_cardinality.value is not None:
self.instantiate_value(
Element(value="Association_source_upper_cardinality"),
Element(value=name.value + ".source_upper_cardinality"),
source_upper_cardinality
)
self.instantiate_link(
Element(value="Association_source_upper_cardinality_link"),
Element(value=name.value + ".source_upper_cardinality_link"),
name,
Element(value=name.value + ".source_upper_cardinality")
)
if target_lower_cardinality.value is not None:
self.instantiate_value(
Element(value="Association_target_lower_cardinality"),
Element(value=name.value + ".target_lower_cardinality"),
target_lower_cardinality
)
self.instantiate_link(
Element(value="Association_target_lower_cardinality_link"),
Element(value=name.value + ".target_lower_cardinality_link"),
name,
Element(value=name.value + ".target_lower_cardinality")
)
if target_upper_cardinality.value is not None:
self.instantiate_value(
Element(value="Association_target_upper_cardinality"),
Element(value=name.value + ".target_upper_cardinality"),
target_upper_cardinality
)
self.instantiate_link(
Element(value="Association_target_upper_cardinality_link"),
Element(value=name.value + ".target_upper_cardinality_link"),
name,
Element(value=name.value + ".target_upper_cardinality")
)
def create_inheritance(self, parent_class_name: String, child_class_name: String):
pass
self.instantiate_link(
Element(value="Inheritance"),
Element(value=f"{child_class_name.value}_inherits_from_{parent_class_name.value}"),
child_class_name,
parent_class_name)