1 # Copyright 2023 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.
18 An abstract Class for all classes
22 from model.python.type_definitions import (
32 # Define the ITop interface
38 administrativeState: AdministrativeState = None,
39 operationalState: OperationalState = None,
40 lifeCycleState: LifeCycleState = None,
41 alarmState: AlarmState = None,
42 usageState: UsageState = None,
43 utilization: Utilization = None,
47 self.administrativeState = administrativeState
48 self.operationalState = operationalState
49 self.lifeCycleState = lifeCycleState
50 self.alarmState = alarmState
51 self.usageState = usageState
52 self.utilization = utilization
55 # Define the Top class
57 def __init__(self, data: [dict[str, dict] | None] = None):
58 self._id = data["id"] if data and "id" in data else str(uuid.uuid4())
61 if data and "name" in data
62 else " ".join(["Name", "of", self._id])
64 self._administrativeState = (
65 data["administrativeState"]
66 if data and "administrativeState" in data
67 else AdministrativeState.LOCKED
69 self._operationalState = (
70 data["operationalState"]
71 if data and "operationalState" in data
72 else OperationalState.DISABLED
74 self._lifeCycleState = (
75 data["lifeCycleState"]
76 if data and "lifeCycleState" in data
77 else LifeCycleState.PLANNED
79 self._alarmState = data["alarmState"] if data and "alarmState" in data else 0
81 data["usageState"] if data and "usageState" in data else UsageState.UNUSED
83 self._utilization = data["utilization"] if data and "utilization" in data else 0
90 def id(self, value: str):
94 def name(self) -> str:
98 def name(self, value: str):
102 def administrativeState(self) -> AdministrativeState:
103 return self._administrativeState
105 @administrativeState.setter
106 def administrativeState(self, value: AdministrativeState):
107 self._administrativeState = value
110 def operationalState(self) -> OperationalState:
111 return self._operationalState
113 @operationalState.setter
114 def operationalState(self, value: OperationalState):
115 self._operationalState = value
118 def lifeCycleState(self) -> LifeCycleState:
119 return self._lifeCycleState
121 @lifeCycleState.setter
122 def lifeCycleState(self, value: LifeCycleState):
123 self._lifeCycleState = value
126 def alarmState(self) -> AlarmState:
127 return self._alarmState
130 def alarmState(self, value: AlarmState):
131 self._alarmState = value
134 def usageState(self) -> UsageState:
135 return self._usageState
138 def usageState(self, value: UsageState):
139 self._usageState = value
142 def utilization(self) -> Utilization:
143 return self._utilization
146 def utilization(self, value: Utilization):
147 self._utilization = value
149 def json(self) -> dict[str, dict]:
153 "administrativeState": self.administrativeState.value,
154 "operationalState": self.operationalState.value,
155 "lifeCycleState": self.lifeCycleState.value,
156 "alarmState": self.alarmState,
157 "usageState": self.usageState.value,
158 "utilization": self.utilization,
161 def __str__(self) -> str:
162 return str(self.json())