diff --git a/core/bottom.py b/core/bottom.py index 16fde5e..2d68216 100644 --- a/core/bottom.py +++ b/core/bottom.py @@ -1,9 +1,9 @@ -from state.base import State, INTEGER, FLOAT, STRING, BOOLEAN, TYPE, NODE, EDGE +from state.base import State from core.element import Element, String class Bottom: - def __init__(self, state: State) -> None: + def __init__(self, state: State): self.state = state def create_model(self, name: String) -> Element: @@ -16,24 +16,15 @@ class Bottom: # create model element element = self.state.create_node() # connect to model root - element_edge = self.state.create_edge(model_root, element) - # label edge with provided name - element_label = self.state.create_nodevalue(name.value) - if element_label is None: + self.state.create_dict(model_root, name.value, element) + # confirm that element has been added to the model + element = self.state.read_dict(model_root, name.value) + if element is None: + self.state.delete_node(element) print(f"Warning: Invalid name {name.value}, element not created.") return - self.state.create_edge(element_edge, element_label) - # add ltm-bottom typing - element_type = self.state.create_nodevalue(NODE) - self.state.create_dict(element_label, TYPE, element_type) def add_value(self, model: Element, name: String, value: Element): - type_map = { - int: INTEGER, - float: FLOAT, - bool: BOOLEAN, - str: STRING - } model_root = self.state.read_dict(model.id, "Model") # create model element element = self.state.create_nodevalue(value.value) @@ -41,16 +32,13 @@ class Bottom: print("Warning: Invalid value, value node not created.") return # connect to model root - element_edge = self.state.create_edge(model_root, element) - # label edge with provided name - element_label = self.state.create_nodevalue(name.value) - if element_label is None: + self.state.create_dict(model_root, name.value, element) + # confirm that element has been added to the model + element_found = self.state.read_dict(model_root, name.value) + if element_found is None: + self.state.delete_node(element) print(f"Warning: Invalid name {name.value}, element not created.") return - self.state.create_edge(element_edge, element_label) - # add ltm-bottom typing - element_type = self.state.create_nodevalue(type_map[type(value.value)]) - self.state.create_dict(element_label, TYPE, element_type) def add_edge(self, model: Element, name: String, source: String, target: String): model_root = self.state.read_dict(model.id, "Model") @@ -65,16 +53,12 @@ class Bottom: # create model element element = self.state.create_edge(source_element, target_element) # connect to model root - element_edge = self.state.create_edge(model_root, element) - # label edge with provided name - element_label = self.state.create_nodevalue(name.value) - if element_label is None: + self.state.create_dict(model_root, name.value, element) + # confirm that element has been added to the model + element = self.state.read_dict(model_root, name.value) + if element is None: + self.state.delete_edge(element) print(f"Warning: Invalid name {name.value}, element not created.") - return - self.state.create_edge(element_edge, element_label) - # add ltm-bottom typing - element_type = self.state.create_nodevalue(EDGE) - self.state.create_dict(element_label, TYPE, element_type) def get_element(self, model: Element, name: String) -> Element: model_root = self.state.read_dict(model.id, "Model")