Bläddra i källkod

Simplified structures

Andrei Bondarenko 4 år sedan
förälder
incheckning
a3cf1ef8c5
1 ändrade filer med 17 tillägg och 33 borttagningar
  1. 17 33
      core/bottom.py

+ 17 - 33
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")