From 49af4da95a743308a5a5a375eb47fbde6a6ac604 Mon Sep 17 00:00:00 2001 From: Adam Wendelin Date: Wed, 3 Jul 2024 14:20:12 +0200 Subject: [PATCH] Deserialize EntryHeader parameters The EntryHeader would set the map of all its parameters as its name member, which semantically does not make sense and requires a user to parse the name member itself to find the actual name of the header. Deserialize the EntryHeader according to the TSP to set members "name", "tooltip" and "data_type". --- tree_model.py | 2 +- tsp/entry.py | 41 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/tree_model.py b/tree_model.py index b88efaa..ce6db8d 100644 --- a/tree_model.py +++ b/tree_model.py @@ -54,7 +54,7 @@ def print(self): if self._headers is not None: headers = [] for header in self._headers: - headers.append(header.name["name"]) + headers.append(header.name) for child in self._root.get_children(): data = child.print(data, 0) frame = {} diff --git a/tsp/entry.py b/tsp/entry.py index 38ee531..bd4934a 100644 --- a/tsp/entry.py +++ b/tsp/entry.py @@ -22,6 +22,8 @@ """Entry classes file.""" +from enum import Enum + from tsp.output_element_style import OutputElementStyle ID_KEY = "id" @@ -29,12 +31,23 @@ LABELS_KEY = "labels" STYLE_KEY = "style" HEADER_NAME_KEY = "name" +HEADER_DATA_TYPE_KEY = "dataType" +HEADER_TOOLTIP_KEY = "tooltip" UNKNOWN_ID = -1 -NAME_KEY = "name" -TOOLTIP_KEY = "tooltip" # pylint: disable=too-few-public-methods +class EntryHeaderDataType(Enum): + ''' + The data types of a column entry. + ''' + NUMBER = "NUMBER" + BINARY_NUMBER = "BINARY_NUMBER" + TIMESTAMP = "TIMESTAMP" + DURATION = "DURATION" + STRING = "STRING" + TIME_RANGE = "TIME_RANGE" + class EntryHeader: ''' @@ -43,9 +56,29 @@ class EntryHeader: def __init__(self, params): ''' - Displayed name + Constructor ''' - self.name = params + + # Name for this header. + if HEADER_NAME_KEY in params: + self.name = params.get(HEADER_NAME_KEY) + del params[HEADER_NAME_KEY] + else: + self.name = None + + # Tooltip for this header. + if HEADER_TOOLTIP_KEY in params: + self.tooltip = params.get(HEADER_TOOLTIP_KEY) + del params[HEADER_TOOLTIP_KEY] + else: + self.tooltip = None + + # Data type for this header. + if HEADER_DATA_TYPE_KEY in params: + self.data_type = EntryHeaderDataType(params.get(HEADER_DATA_TYPE_KEY)) + del params[HEADER_DATA_TYPE_KEY] + else: + self.data_type = None class Entry: