1
|
|
|
""" |
2
|
|
|
Enarksh |
3
|
|
|
|
4
|
|
|
Copyright 2013-2016 Set Based IT Consultancy |
5
|
|
|
|
6
|
|
|
Licence MIT |
7
|
|
|
""" |
8
|
|
|
from enarksh.DataLayer import DataLayer |
9
|
|
|
|
10
|
|
|
|
11
|
|
|
class Dependency: |
|
|
|
|
12
|
|
|
# ------------------------------------------------------------------------------------------------------------------ |
13
|
|
|
def __init__(self, port): |
14
|
|
|
self._node_name = '' |
15
|
|
|
""" |
16
|
|
|
The name of the referenced node of this dependency. |
17
|
|
|
|
18
|
|
|
:type: str |
19
|
|
|
""" |
20
|
|
|
|
21
|
|
|
self._port = port |
22
|
|
|
""" |
23
|
|
|
The port (owner) of this dependency. |
24
|
|
|
|
25
|
|
|
:type: enarksh.xml_reader.port.Port.Port |
26
|
|
|
""" |
27
|
|
|
|
28
|
|
|
self._port_name = '' |
29
|
|
|
""" |
30
|
|
|
The name of the referenced port of this dependency. |
31
|
|
|
|
32
|
|
|
:type: str |
33
|
|
|
""" |
34
|
|
|
|
35
|
|
|
# ------------------------------------------------------------------------------------------------------------------ |
36
|
|
|
def get_dependency_level(self): |
37
|
|
|
""" |
38
|
|
|
:rtype: int |
39
|
|
|
""" |
40
|
|
|
if self._node_name == '.': |
41
|
|
|
return -1 |
42
|
|
|
else: |
43
|
|
|
return self._port.node.parent_node.get_node_by_name(self._node_name).get_dependency_level() |
44
|
|
|
|
45
|
|
|
# ------------------------------------------------------------------------------------------------------------------ |
46
|
|
|
def read_xml(self, xml): |
47
|
|
|
""" |
48
|
|
|
:param xml.etree.ElementTree.Element xml: |
49
|
|
|
""" |
50
|
|
|
for element in list(xml): |
51
|
|
|
tag = element.tag |
52
|
|
|
if tag == 'NodeName': |
53
|
|
|
self._node_name = element.text |
54
|
|
|
|
55
|
|
|
elif tag == 'PortName': |
56
|
|
|
self._port_name = element.text |
57
|
|
|
|
58
|
|
|
else: |
59
|
|
|
raise RuntimeError("Unexpected tag '{0!s}'.".format(tag)) |
60
|
|
|
|
61
|
|
|
# ------------------------------------------------------------------------------------------------------------------ |
62
|
|
|
def validate(self, errors): |
63
|
|
|
""" |
64
|
|
|
Validates this dependency against rules which are not imposed by XSD. |
65
|
|
|
|
66
|
|
|
:param list errors: A list of error messages. |
67
|
|
|
""" |
68
|
|
|
# @todo XXX Node named $this->myNodeName must exists. |
69
|
|
|
# @todo XXX Node must have port named $this->myPortName. |
70
|
|
|
pass |
71
|
|
|
|
72
|
|
|
# ------------------------------------------------------------------------------------------------------------------ |
73
|
|
|
def store(self, port, node): |
74
|
|
|
""" |
75
|
|
|
Stores this dependency into the database. |
76
|
|
|
|
77
|
|
|
:param enarksh.xml_reader.port.Port.Port port: The port of the dependency. |
78
|
|
|
:param enarksh.xml_reader.node.Node.Node node: The node of the dependency. |
79
|
|
|
""" |
80
|
|
|
prt_id_dependant = port.prt_id |
81
|
|
|
prt_id_predecessor = node.get_port_by_name(self._node_name, self._port_name).prt_id |
82
|
|
|
|
83
|
|
|
DataLayer.enk_reader_dependency_store_dependency(prt_id_dependant, prt_id_predecessor) |
84
|
|
|
|
85
|
|
|
# ---------------------------------------------------------------------------------------------------------------------- |
86
|
|
|
|
The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:
If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.