1 # Copyright 2022 highstreet technologies GmbH
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
17 Provides functions to convert the Network into different formats
22 from lxml import etree
23 from model.python.tapi_common_context import TapiCommonContext
28 This class contains all functions converting the Network into different formats
30 __network: TapiCommonContext = None
33 def __init__(self, network: TapiCommonContext):
34 self.__network = network
38 def json(self) -> 'NetworkViewer':
40 Getter returns the class as json object
41 :return The class itsself, as it is json serializable
45 def show_as_json(self) -> dict:
47 Method printing the class in json format.
49 print(self.__network.json())
53 Method printing the network
57 def save(self, filename: str):
59 Method saving the class content to a file in json format.
60 :param filename: A valid path to a file on the system.
61 :type filename: string
63 with open(filename, "w", encoding='utf-8') as json_file:
64 output = self.__network.json()
65 json.dump(output, json_file,
66 ensure_ascii=False, indent=2)
67 for key in ["Node", "Link"]:
68 print(key + "s:", len(output
69 ["tapi-common:context"]
70 ["tapi-topology:topology-context"]
71 ["topology"][0][key.lower()])
73 print("File '" + filename + "' saved!")
75 def svg(self, filename: str):
77 Method saving the class content to a file in xml/svg format.
79 :param filename: A valid path to a file on the system.
80 :type filename: string
82 root = self.__network.svg(0, 0)
84 etree.ProcessingInstruction("xml-stylesheet",
85 'href="svg.style.css" type="text/css"')
87 etree.ElementTree(root).write(filename,
91 '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"\n'
92 ' "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'
96 print("File '" + filename + "' saved!")