armodel 1.6.4__py3-none-any.whl → 1.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. armodel/cli/arxml_format_cli.py +14 -11
  2. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +1 -1
  3. armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +86 -0
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +3 -4
  5. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +3 -1
  6. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +70 -2
  7. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
  8. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
  9. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
  10. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +6 -6
  11. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +237 -28
  12. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +223 -0
  13. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +177 -0
  14. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +37 -0
  15. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +88 -16
  16. armodel/models/__init__.py +12 -1
  17. armodel/parser/abstract_arxml_parser.py +50 -16
  18. armodel/parser/arxml_parser.py +249 -80
  19. armodel/tests/test_armodel/parser/test_sw_components.py +0 -22
  20. armodel/tests/test_armodel/parser/test_system.py +2 -2
  21. armodel/writer/abstract_arxml_writer.py +10 -1
  22. armodel/writer/arxml_writer.py +215 -58
  23. {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/METADATA +15 -1
  24. {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/RECORD +28 -24
  25. {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/LICENSE +0 -0
  26. {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/WHEEL +0 -0
  27. {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/entry_points.txt +0 -0
  28. {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,177 @@
1
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Describable
2
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
3
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Integer, RefType, TimeValue
4
+
5
+ class ModeDrivenTransmissionModeCondition(ARObject):
6
+ def __init__(self):
7
+ super().__init__()
8
+
9
+ self.modeDeclarationRef = None # type: RefType
10
+
11
+ def getModeDeclarationRef(self):
12
+ return self.modeDeclarationRef
13
+
14
+ def setModeDeclarationRef(self, value):
15
+ self.modeDeclarationRef = value
16
+ return self
17
+
18
+ class TransmissionModeCondition(ARObject):
19
+ def __init__(self):
20
+ super().__init__()
21
+
22
+ self.dataFilter = None # type: DataFilter
23
+ self.iSignalInIPduRef = None # type: RefType
24
+
25
+ def getDataFilter(self):
26
+ return self.dataFilter
27
+
28
+ def setDataFilter(self, value):
29
+ self.dataFilter = value
30
+ return self
31
+
32
+ def getISignalInIPduRef(self):
33
+ return self.iSignalInIPduRef
34
+
35
+ def setISignalInIPduRef(self, value):
36
+ self.iSignalInIPduRef = value
37
+ return self
38
+
39
+
40
+ class TimeRangeType(ARObject):
41
+ def __init__(self):
42
+ super().__init__()
43
+
44
+ # type: TimeRangeTypeTolerance
45
+ self.tolerance = None
46
+ self.value = None # type: TimeValue
47
+
48
+ def getTolerance(self):
49
+ return self.tolerance
50
+
51
+ def setTolerance(self, value):
52
+ self.tolerance = value
53
+ return self
54
+
55
+ def getValue(self):
56
+ return self.value
57
+
58
+ def setValue(self, value):
59
+ self.value = value
60
+ return self
61
+
62
+
63
+ class CyclicTiming(Describable):
64
+ def __init__(self):
65
+ super().__init__()
66
+
67
+ self.timeOffset = None # type: TimeRangeType
68
+ self.timePeriod = None # type: TimeRangeType
69
+
70
+ def getTimeOffset(self):
71
+ return self.timeOffset
72
+
73
+ def setTimeOffset(self, value):
74
+ self.timeOffset = value
75
+ return self
76
+
77
+ def getTimePeriod(self):
78
+ return self.timePeriod
79
+
80
+ def setTimePeriod(self, value):
81
+ self.timePeriod = value
82
+ return self
83
+
84
+
85
+ class EventControlledTiming(Describable):
86
+ def __init__(self):
87
+ super().__init__()
88
+
89
+ self.numberOfRepetitions = None # type: Integer
90
+ self.repetitionPeriod = None # type: TimeRangeType
91
+
92
+ def getNumberOfRepetitions(self):
93
+ return self.numberOfRepetitions
94
+
95
+ def setNumberOfRepetitions(self, value):
96
+ self.numberOfRepetitions = value
97
+ return self
98
+
99
+ def getRepetitionPeriod(self):
100
+ return self.repetitionPeriod
101
+
102
+ def setRepetitionPeriod(self, value):
103
+ self.repetitionPeriod = value
104
+ return self
105
+
106
+
107
+ class TransmissionModeTiming(ARObject):
108
+ def __init__(self):
109
+ super().__init__()
110
+
111
+ self.cyclicTiming = None # type: CyclicTiming
112
+ # type: EventControlledTiming
113
+ self.eventControlledTiming = None
114
+
115
+ def getCyclicTiming(self):
116
+ return self.cyclicTiming
117
+
118
+ def setCyclicTiming(self, value):
119
+ self.cyclicTiming = value
120
+ return self
121
+
122
+ def getEventControlledTiming(self):
123
+ return self.eventControlledTiming
124
+
125
+ def setEventControlledTiming(self, value):
126
+ self.eventControlledTiming = value
127
+ return self
128
+
129
+ class TransmissionModeDeclaration(ARObject):
130
+ def __init__(self):
131
+ super().__init__()
132
+
133
+ # type: ModeDrivenTransmissionModeCondition
134
+ self.modeDrivenFalseConditions = []
135
+ # type: ModeDrivenTransmissionModeCondition
136
+ self.modeDrivenTrueConditions = []
137
+ # type: TransmissionModeCondition
138
+ self.transmissionModeConditions = []
139
+ # type: TransmissionModeTiming
140
+ self.transmissionModeFalseTiming = None
141
+ # type: TransmissionModeTiming
142
+ self.transmissionModeTrueTiming = None
143
+
144
+ def getModeDrivenFalseConditions(self):
145
+ return self.modeDrivenFalseConditions
146
+
147
+ def addModeDrivenFalseCondition(self, value):
148
+ self.modeDrivenFalseConditions.append(value)
149
+ return self
150
+
151
+ def getModeDrivenTrueConditions(self):
152
+ return self.modeDrivenTrueConditions
153
+
154
+ def addModeDrivenTrueCondition(self, value):
155
+ self.modeDrivenTrueConditions.append(value)
156
+ return self
157
+
158
+ def getTransmissionModeConditions(self):
159
+ return self.transmissionModeConditions
160
+
161
+ def addTransmissionModeCondition(self, value):
162
+ self.transmissionModeConditions.append(value)
163
+ return self
164
+
165
+ def getTransmissionModeFalseTiming(self):
166
+ return self.transmissionModeFalseTiming
167
+
168
+ def setTransmissionModeFalseTiming(self, value):
169
+ self.transmissionModeFalseTiming = value
170
+ return self
171
+
172
+ def getTransmissionModeTrueTiming(self):
173
+ return self.transmissionModeTrueTiming
174
+
175
+ def setTransmissionModeTrueTiming(self, value):
176
+ self.transmissionModeTrueTiming = value
177
+ return self
@@ -46,3 +46,40 @@ class VariableDataPrototypeInSystemInstanceRef(AtpInstanceRef):
46
46
  def setTargetDataPrototypeRef(self, value):
47
47
  self.targetDataPrototypeRef = value
48
48
  return self
49
+
50
+ class ComponentInSystemInstanceRef(AtpInstanceRef):
51
+ def __init__(self):
52
+ super().__init__()
53
+
54
+ self.baseRef = None # type: RefType
55
+ self.contextComponentRefs = [] # type: List[RefType]
56
+ self.contextCompositionRef = None # type: RefType
57
+ self.targetComponentRef = None # type: RefType
58
+
59
+ def getBaseRef(self):
60
+ return self.baseRef
61
+
62
+ def setBaseRef(self, value):
63
+ self.baseRef = value
64
+ return self
65
+
66
+ def getContextComponentRefs(self):
67
+ return self.contextComponentRefs
68
+
69
+ def addContextComponentRef(self, value):
70
+ self.contextComponentRefs.append(value)
71
+ return self
72
+
73
+ def getContextCompositionRef(self):
74
+ return self.contextCompositionRef
75
+
76
+ def setContextCompositionRef(self, value):
77
+ self.contextCompositionRef = value
78
+ return self
79
+
80
+ def getTargetComponentRef(self):
81
+ return self.targetComponentRef
82
+
83
+ def setTargetComponentRef(self, value):
84
+ self.targetComponentRef = value
85
+ return self
@@ -1,10 +1,48 @@
1
1
  from typing import List
2
- from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
3
- from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
4
- from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
2
+ from ....M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef
3
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
4
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable
5
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import PositiveInteger, RefType, TRefType
6
+
7
+ class SwcToEcuMapping(Identifiable):
8
+ def __init__(self, parent: ARObject, short_name: str):
9
+ super().__init__(parent, short_name)
10
+
11
+ self.componentIRefs = [] # type: List[ComponentInSystemInstanceRef]
12
+ self.controlledHwElementRef = None # type: RefType
13
+ self.ecuInstanceRef = None # type: RefType
14
+ self.processingUnitRef = None # type: RefType
15
+
16
+ def getComponentIRefs(self):
17
+ return self.componentIRefs
18
+
19
+ def addComponentIRef(self, value):
20
+ self.componentIRefs.append(value)
21
+ return self
22
+
23
+ def getControlledHwElementRef(self):
24
+ return self.controlledHwElementRef
25
+
26
+ def setControlledHwElementRef(self, value):
27
+ self.controlledHwElementRef = value
28
+ return self
29
+
30
+ def getEcuInstanceRef(self):
31
+ return self.ecuInstanceRef
32
+
33
+ def setEcuInstanceRef(self, value):
34
+ self.ecuInstanceRef = value
35
+ return self
36
+
37
+ def getProcessingUnitRef(self):
38
+ return self.processingUnitRef
39
+
40
+ def setProcessingUnitRef(self, value):
41
+ self.processingUnitRef = value
42
+ return self
5
43
 
6
44
  class SystemMapping(Identifiable):
7
- def __init__(self, parent, short_name):
45
+ def __init__(self, parent: ARObject, short_name: str):
8
46
  super().__init__(parent, short_name)
9
47
 
10
48
  self.applicationPartitionToEcuPartitionMappings = []
@@ -28,7 +66,7 @@ class SystemMapping(Identifiable):
28
66
  self.swClusterMappings = []
29
67
  self.swcToApplicationPartitionMappings = []
30
68
  self.swImplMappings = []
31
- self.swMappings = []
69
+ self.swMappings = [] # type: List[SwcToEcuMapping]
32
70
  self.systemSignalGroupToComResourceMappings = []
33
71
  self.systemSignalToComResourceMappings = []
34
72
 
@@ -182,9 +220,12 @@ class SystemMapping(Identifiable):
182
220
  def getSwMappings(self):
183
221
  return self.swMappings
184
222
 
185
- def addSwMapping(self, value):
186
- self.swMappings.append(value)
187
- return self
223
+ def createSwcToEcuMapping(self, short_name: str) -> SwcToEcuMapping:
224
+ if short_name not in self.elements:
225
+ mapping = SwcToEcuMapping(self, short_name)
226
+ self.addElement(mapping)
227
+ self.swMappings.append(mapping)
228
+ return self.getElement(short_name)
188
229
 
189
230
  def getSystemSignalGroupToComResourceMappings(self):
190
231
  return self.systemSignalGroupToComResourceMappings
@@ -200,9 +241,37 @@ class SystemMapping(Identifiable):
200
241
  self.systemSignalToComResourceMappings.append(value)
201
242
  return self
202
243
 
244
+ class RootSwCompositionPrototype(Identifiable):
245
+ def __init__(self, parent: ARObject, short_name: str):
246
+ super().__init__(parent, short_name)
247
+
248
+ self.calibrationParameterValueSetRef = None # type: RefType
249
+ self.flatMapRef = None # type: RefType
250
+ self.softwareCompositionTRef = None # type: TRefType
251
+
252
+ def getCalibrationParameterValueSetRef(self):
253
+ return self.calibrationParameterValueSetRef
254
+
255
+ def setCalibrationParameterValueSetRef(self, value):
256
+ self.calibrationParameterValueSetRef = value
257
+ return self
258
+
259
+ def getFlatMapRef(self):
260
+ return self.flatMapRef
261
+
262
+ def setFlatMapRef(self, value):
263
+ self.flatMapRef = value
264
+ return self
265
+
266
+ def getSoftwareCompositionTRef(self):
267
+ return self.softwareCompositionTRef
268
+
269
+ def setSoftwareCompositionTRef(self, value):
270
+ self.softwareCompositionTRef = value
271
+ return self
203
272
 
204
273
  class System(ARElement):
205
- def __init__(self, parent, short_name):
274
+ def __init__(self, parent: ARObject, short_name: str):
206
275
  super().__init__(parent, short_name)
207
276
 
208
277
  self.clientIdDefinitionSetRefs = [] # type: List[RefType]
@@ -212,12 +281,12 @@ class System(ARElement):
212
281
  self.interpolationRoutineMappingSetRefs = [] # type: List[RefType]
213
282
  self.j1939SharedAddressClusters = []
214
283
  self.mappings = [] # type: List[SystemMapping]
215
- self.pncVectorLength = None
216
- self.pncVectorOffset = None
217
- self.rootSoftwareComposition = None
284
+ self.pncVectorLength = None # type: PositiveInteger
285
+ self.pncVectorOffset = None # type: PositiveInteger
286
+ self.rootSoftwareComposition = None # type: RootSwCompositionPrototype
218
287
  self.swClusters = []
219
288
  self.systemDocumentation = []
220
- self.systemVersion = None
289
+ self.systemVersion = None # type: RevisionLabelString
221
290
 
222
291
  def getClientIdDefinitionSetRefs(self):
223
292
  return self.clientIdDefinitionSetRefs
@@ -287,9 +356,12 @@ class System(ARElement):
287
356
  def getRootSoftwareComposition(self):
288
357
  return self.rootSoftwareComposition
289
358
 
290
- def setRootSoftwareComposition(self, value):
291
- self.rootSoftwareComposition = value
292
- return self
359
+ def createRootSoftwareComposition(self, short_name) -> RootSwCompositionPrototype:
360
+ if short_name not in self.elements:
361
+ prototype = RootSwCompositionPrototype(self, short_name)
362
+ self.addElement(prototype)
363
+ self.rootSoftwareComposition = prototype
364
+ return self.getElement(short_name)
293
365
 
294
366
  def getSwClusters(self):
295
367
  return self.swClusters
@@ -19,10 +19,13 @@ from .M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import *
19
19
  from .M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import *
20
20
  from .M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import *
21
21
  from .M2.AUTOSARTemplates.CommonStructure import *
22
+ from .M2.AUTOSARTemplates.CommonStructure.Filter import *
22
23
  from .M2.AUTOSARTemplates.CommonStructure.Implementation import *
23
24
  from .M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import *
24
25
  from .M2.AUTOSARTemplates.CommonStructure.InternalBehavior import *
25
26
  from .M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import *
27
+ from .M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import *
28
+ from .M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import *
26
29
  from .M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import *
27
30
  from .M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import *
28
31
  from .M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import *
@@ -42,9 +45,17 @@ from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PerInstanceMem
42
45
  from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import *
43
46
  from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import *
44
47
  from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.Trigger import *
48
+ from .M2.AUTOSARTemplates.SystemTemplate.DataMapping import *
49
+ from .M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import *
50
+ from .M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import *
51
+ from .M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import *
52
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import *
45
53
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import *
54
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import *
46
55
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import *
47
56
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import *
48
57
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import *
49
58
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import *
50
- from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import *
59
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import *
60
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import *
61
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import *
@@ -9,7 +9,7 @@ import xml.etree.ElementTree as ET
9
9
 
10
10
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
11
11
 
12
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical
12
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical, Boolean, Integer, TimeValue
13
13
 
14
14
  from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
15
15
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
@@ -73,7 +73,7 @@ class AbstractARXMLParser:
73
73
  '''
74
74
 
75
75
  def getChildElementLiteral(self, short_name: str, element: ET.Element, key: str) -> ARLiteral:
76
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
76
+ child_element = self.find(element, key)
77
77
  if (child_element is not None):
78
78
  literal = ARLiteral()
79
79
  self.readElementAttributes(child_element, literal)
@@ -82,7 +82,7 @@ class AbstractARXMLParser:
82
82
  self._raiseError("The attribute %s of <%s> has not been defined" % (key, short_name))
83
83
 
84
84
  def getChildElementLiteralValueList(self, element: ET.Element, key: str) -> ARFloat:
85
- child_elements = element.findall("./xmlns:%s" % key, self.nsmap)
85
+ child_elements = self.findall(element, key)
86
86
  results = []
87
87
  for child_element in child_elements:
88
88
  literal = ARLiteral()
@@ -91,10 +91,27 @@ class AbstractARXMLParser:
91
91
  return results
92
92
 
93
93
  def getChildElementOptionalLiteral(self, element: ET.Element, key: str) -> ARLiteral:
94
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
94
+ child_element = self.find(element, key)
95
95
  literal = None
96
96
  if (child_element is not None):
97
- self.logger.debug("readChildOptionalElementLiteral : %s" % child_element.text)
97
+ self.logger.debug("getChildElementOptionalLiteral : %s" % child_element.text)
98
+ literal = ARLiteral()
99
+ self.readElementAttributes(child_element, literal)
100
+ # Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
101
+ if child_element.text is None:
102
+ literal.setValue("")
103
+ else:
104
+ literal.setValue(child_element.text)
105
+ return literal
106
+
107
+ def getChildElementOptionalRevisionLabelString(self, element: ET.Element, key: str) -> ARLiteral:
108
+ child_element = self.find(element, key)
109
+ literal = None
110
+ if (child_element is not None) and (child_element.text is not None):
111
+ self.logger.debug("getChildElementOptionalRevisionLabelString : %s" % child_element.text)
112
+ m = re.match(r'[0-9]+\.[0-9]+\.[0-9]+([\._;].*)?', child_element.text)
113
+ if not m:
114
+ raise ValueError("Invalid RevisionLabelString <%s>" % child_element.text)
98
115
  literal = ARLiteral()
99
116
  self.readElementAttributes(child_element, literal)
100
117
  # Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
@@ -110,7 +127,7 @@ class AbstractARXMLParser:
110
127
  return False
111
128
 
112
129
  def getChildElementOptionalFloatValue(self, element: ET.Element, key: str) -> ARFloat:
113
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
130
+ child_element = self.find(element, key)
114
131
  float_value = None
115
132
  if (child_element is not None) and (child_element.text is not None):
116
133
  float_value = ARFloat()
@@ -118,26 +135,34 @@ class AbstractARXMLParser:
118
135
  return float_value
119
136
 
120
137
  def getChildElementFloatValueList(self, element: ET.Element, key: str) -> ARFloat:
121
- child_elements = element.findall("./xmlns:%s" % key, self.nsmap)
138
+ child_elements = self.findall(element, key)
122
139
  results = []
123
140
  for child_element in child_elements:
124
141
  float_value = ARFloat()
125
142
  float_value.setValue(child_element.text)
126
143
  results.append(float_value)
127
144
  return results
145
+
146
+ def getChildElementOptionalTimeValue(self, element: ET.Element, key: str) -> TimeValue:
147
+ child_element = self.find(element, key)
148
+ time_value = None
149
+ if (child_element is not None) and (child_element.text is not None):
150
+ time_value = TimeValue()
151
+ time_value.setValue(child_element.text)
152
+ return time_value
128
153
 
129
- def getChildElementBooleanValue(self, short_name: str, element: ET.Element, key: str) -> ARBoolean:
154
+ def getChildElementBooleanValue(self, short_name: str, element: ET.Element, key: str) -> Boolean:
130
155
  literal = self.getChildElementLiteral(short_name, element, key)
131
- bool_value = ARBoolean()
156
+ bool_value = Boolean()
132
157
  bool_value.timestamp = literal.timestamp
133
158
  bool_value.value = self._convertStringToBooleanValue(literal._value)
134
159
  return bool_value
135
160
 
136
- def getChildElementOptionalBooleanValue(self, element: ET.Element, key: str) -> ARBoolean:
161
+ def getChildElementOptionalBooleanValue(self, element: ET.Element, key: str) -> Boolean:
137
162
  literal = self.getChildElementOptionalLiteral(element, key)
138
163
  if (literal == None):
139
164
  return None
140
- bool_value = ARBoolean()
165
+ bool_value = Boolean()
141
166
  bool_value.timestamp = literal.timestamp
142
167
  bool_value.setValue(literal.getValue())
143
168
  return bool_value
@@ -162,16 +187,25 @@ class AbstractARXMLParser:
162
187
  '''
163
188
 
164
189
  def getChildElementOptionalNumericalValue(self, element: ET.Element, key: str) -> ARNumerical:
165
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
190
+ child_element = self.find(element, key)
166
191
  if child_element == None:
167
192
  return None
168
193
  numerical = ARNumerical()
169
194
  self.readElementAttributes(child_element, numerical)
170
195
  numerical.setValue(child_element.text)
171
196
  return numerical
197
+
198
+ def getChildElementOptionalIntegerValue(self, element: ET.Element, key: str) -> Integer:
199
+ child_element = self.find(element, key)
200
+ if child_element == None:
201
+ return None
202
+ numerical = Integer()
203
+ self.readElementAttributes(child_element, numerical)
204
+ numerical.setValue(child_element.text)
205
+ return numerical
172
206
 
173
207
  def getChildElementNumericalValueList(self, element: ET.Element, key: str) -> List[ARNumerical]:
174
- child_elements = element.findall("./xmlns:%s" % key, self.nsmap)
208
+ child_elements = self.findall(element, key)
175
209
  results = []
176
210
  for child_element in child_elements:
177
211
  numerical = ARNumerical()
@@ -180,7 +214,7 @@ class AbstractARXMLParser:
180
214
  return results
181
215
 
182
216
  def getChildLimitElement(self, element: ET.Element, key: str) -> Limit:
183
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
217
+ child_element = self.find(element, key)
184
218
  if (child_element is not None):
185
219
  limit = Limit()
186
220
  self.readElementAttributes(child_element, limit)
@@ -199,13 +233,13 @@ class AbstractARXMLParser:
199
233
  return ref
200
234
 
201
235
  def getChildElementRefType(self, short_name: str, element: ET.Element, key: str) -> RefType:
202
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
236
+ child_element = self.find(element, key)
203
237
  if (child_element is not None):
204
238
  return self._getChildElementRefTypeDestAndValue(child_element)
205
239
  self._raiseError("The attribute %s of <%s> has not been defined" % (key, short_name))
206
240
 
207
241
  def getChildElementOptionalRefType(self, element:ET.Element, key: str) -> RefType:
208
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
242
+ child_element = self.find(element, key)
209
243
  if (child_element is not None):
210
244
  return self._getChildElementRefTypeDestAndValue(child_element)
211
245
  return None