Simplified structures
This commit is contained in:
parent
dd9c48ac81
commit
a3cf1ef8c5
1 changed files with 17 additions and 33 deletions
|
|
@ -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
|
from core.element import Element, String
|
||||||
|
|
||||||
|
|
||||||
class Bottom:
|
class Bottom:
|
||||||
def __init__(self, state: State) -> None:
|
def __init__(self, state: State):
|
||||||
self.state = state
|
self.state = state
|
||||||
|
|
||||||
def create_model(self, name: String) -> Element:
|
def create_model(self, name: String) -> Element:
|
||||||
|
|
@ -16,24 +16,15 @@ class Bottom:
|
||||||
# create model element
|
# create model element
|
||||||
element = self.state.create_node()
|
element = self.state.create_node()
|
||||||
# connect to model root
|
# connect to model root
|
||||||
element_edge = self.state.create_edge(model_root, element)
|
self.state.create_dict(model_root, name.value, element)
|
||||||
# label edge with provided name
|
# confirm that element has been added to the model
|
||||||
element_label = self.state.create_nodevalue(name.value)
|
element = self.state.read_dict(model_root, name.value)
|
||||||
if element_label is None:
|
if element is None:
|
||||||
|
self.state.delete_node(element)
|
||||||
print(f"Warning: Invalid name {name.value}, element not created.")
|
print(f"Warning: Invalid name {name.value}, element not created.")
|
||||||
return
|
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):
|
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")
|
model_root = self.state.read_dict(model.id, "Model")
|
||||||
# create model element
|
# create model element
|
||||||
element = self.state.create_nodevalue(value.value)
|
element = self.state.create_nodevalue(value.value)
|
||||||
|
|
@ -41,16 +32,13 @@ class Bottom:
|
||||||
print("Warning: Invalid value, value node not created.")
|
print("Warning: Invalid value, value node not created.")
|
||||||
return
|
return
|
||||||
# connect to model root
|
# connect to model root
|
||||||
element_edge = self.state.create_edge(model_root, element)
|
self.state.create_dict(model_root, name.value, element)
|
||||||
# label edge with provided name
|
# confirm that element has been added to the model
|
||||||
element_label = self.state.create_nodevalue(name.value)
|
element_found = self.state.read_dict(model_root, name.value)
|
||||||
if element_label is None:
|
if element_found is None:
|
||||||
|
self.state.delete_node(element)
|
||||||
print(f"Warning: Invalid name {name.value}, element not created.")
|
print(f"Warning: Invalid name {name.value}, element not created.")
|
||||||
return
|
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):
|
def add_edge(self, model: Element, name: String, source: String, target: String):
|
||||||
model_root = self.state.read_dict(model.id, "Model")
|
model_root = self.state.read_dict(model.id, "Model")
|
||||||
|
|
@ -65,16 +53,12 @@ class Bottom:
|
||||||
# create model element
|
# create model element
|
||||||
element = self.state.create_edge(source_element, target_element)
|
element = self.state.create_edge(source_element, target_element)
|
||||||
# connect to model root
|
# connect to model root
|
||||||
element_edge = self.state.create_edge(model_root, element)
|
self.state.create_dict(model_root, name.value, element)
|
||||||
# label edge with provided name
|
# confirm that element has been added to the model
|
||||||
element_label = self.state.create_nodevalue(name.value)
|
element = self.state.read_dict(model_root, name.value)
|
||||||
if element_label is None:
|
if element is None:
|
||||||
|
self.state.delete_edge(element)
|
||||||
print(f"Warning: Invalid name {name.value}, element not created.")
|
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:
|
def get_element(self, model: Element, name: String) -> Element:
|
||||||
model_root = self.state.read_dict(model.id, "Model")
|
model_root = self.state.read_dict(model.id, "Model")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue