armodel 1.7.6__py3-none-any.whl → 1.7.8__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 (69) hide show
  1. armodel/cli/arxml_dump_cli.py +33 -22
  2. armodel/cli/arxml_format_cli.py +25 -13
  3. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +95 -21
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +359 -59
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +134 -35
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +17 -7
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +10 -1
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +18 -2
  9. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
  10. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
  11. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
  12. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +215 -157
  13. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +69 -35
  14. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +17 -1
  15. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +19 -5
  16. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +113 -39
  17. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +3 -2
  18. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py +41 -16
  19. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +10 -3
  20. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
  21. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +111 -38
  22. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +26 -8
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +28 -6
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DoIp.py +29 -0
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/EcuResourceMapping.py +45 -0
  29. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
  31. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +9 -0
  32. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
  33. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
  34. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
  35. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +539 -77
  36. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
  37. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +28 -6
  38. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
  39. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +245 -130
  40. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +27 -0
  41. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
  42. armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +592 -17
  43. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +33 -21
  44. armodel/models/M2/MSR/AsamHdo/AdminData.py +1 -2
  45. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +3 -1
  46. armodel/models/M2/MSR/AsamHdo/SpecialData.py +35 -8
  47. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +0 -3
  48. armodel/models/__init__.py +8 -0
  49. armodel/parser/abstract_arxml_parser.py +34 -27
  50. armodel/parser/arxml_parser.py +1778 -616
  51. armodel/parser/file_parser.py +5 -3
  52. armodel/tests/test_armodel/models/test_ar_package.py +6 -11
  53. armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -3
  54. armodel/tests/test_armodel/models/test_datatype.py +1 -1
  55. armodel/tests/test_armodel/models/test_port_interface.py +116 -117
  56. armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +218 -0
  57. armodel/tests/test_armodel/parser/test_sw_components.py +54 -22
  58. armodel/tests/test_armodel/parser/test_system.py +2 -8
  59. armodel/transformer/__init__.py +0 -0
  60. armodel/transformer/abstract.py +6 -0
  61. armodel/transformer/admin_data.py +31 -0
  62. armodel/writer/abstract_arxml_writer.py +27 -33
  63. armodel/writer/arxml_writer.py +1875 -599
  64. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/METADATA +81 -3
  65. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/RECORD +69 -56
  66. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/LICENSE +0 -0
  67. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/WHEEL +0 -0
  68. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/entry_points.txt +0 -0
  69. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/top_level.txt +0 -0
@@ -15,15 +15,17 @@ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPack
15
15
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
16
16
  from ..parser import ARXMLParser
17
17
 
18
- def show_variable_access(indent:int, variable_access: VariableAccess):
19
- if (variable_access.getAccessedVariableRef() != None):
18
+
19
+ def show_variable_access(indent: int, variable_access: VariableAccess):
20
+ if (variable_access.getAccessedVariableRef() is not None):
20
21
  accessed_variable_ref = variable_access.getAccessedVariableRef()
21
- if (accessed_variable_ref.getAutosarVariableInImplDatatype() != None):
22
+ if (accessed_variable_ref.getAutosarVariableInImplDatatype() is not None):
22
23
  autosar_variable_in_impl_datatype = accessed_variable_ref.getAutosarVariableInImplDatatype()
23
24
  print("%s: %s" % (" " * indent, autosar_variable_in_impl_datatype.getPortPrototypeRef().getValue()))
24
25
  print("%s: %s" % (" " * indent, autosar_variable_in_impl_datatype.getTargetDataPrototypeRef().getValue()))
25
26
 
26
- def show_port(indent:int, port_prototype: PortPrototype):
27
+
28
+ def show_port(indent: int, port_prototype: PortPrototype):
27
29
  if (isinstance(port_prototype, RPortPrototype)):
28
30
  print("%s-RPort: %s (%s)" % (" " * indent, port_prototype.short_name, port_prototype.getRequiredInterfaceTRef().getValue()))
29
31
  for client_com_spec in port_prototype.getClientComSpecs():
@@ -37,25 +39,28 @@ def show_port(indent:int, port_prototype: PortPrototype):
37
39
  else:
38
40
  raise ValueError("Unsupported Port prototype")
39
41
 
42
+
40
43
  def show_type(indent: int, data_type: ImplementationDataType):
41
44
  print("%s-Implementation Type: %s (%s)" % (" " * indent, data_type.short_name, data_type.parent.full_name))
42
45
  print("%s : %s" % (" " * indent, data_type.getCategory()))
43
- if (data_type.getSwDataDefProps() != None):
44
- if (data_type.getSwDataDefProps().getBaseTypeRef() != None):
46
+ if (data_type.getSwDataDefProps() is not None):
47
+ if (data_type.getSwDataDefProps().getBaseTypeRef() is not None):
45
48
  base_type_ref = data_type.getSwDataDefProps().getBaseTypeRef()
46
49
  print("%s : %s (%s)" % (" " * indent, base_type_ref.getValue(), base_type_ref.getDest()))
47
50
 
48
- if (data_type.getSwDataDefProps().getImplementationDataTypeRef() != None):
51
+ if (data_type.getSwDataDefProps().getImplementationDataTypeRef() is not None):
49
52
  implementation_data_type_ref = data_type.getSwDataDefProps().getImplementationDataTypeRef()
50
53
  print("%s : %s (%s)" % (" " * indent, implementation_data_type_ref.getValue(), implementation_data_type_ref.getDest()))
51
54
 
55
+
52
56
  def show_data_type_mapping(indent: int, mapping_set: DataTypeMappingSet):
53
57
  print("%s- Data Mapping Set <%s>:" % (" " * indent, mapping_set.short_name))
54
58
  for mapping in mapping_set.getDataTypeMaps():
55
59
  print("%s- appl: %s" % (" " * (indent + 2), mapping.applicationDataTypeRef.value))
56
60
  print("%s- impl: %s" % (" " * (indent + 4), mapping.implementationDataTypeRef.value))
57
61
 
58
- def show_behavior(indent:int, behavior: SwcInternalBehavior):
62
+
63
+ def show_behavior(indent: int, behavior: SwcInternalBehavior):
59
64
  print("%s-Behavior: %s" % (" " * indent, behavior.short_name))
60
65
  for runnable in behavior.getRunnableEntities():
61
66
  print("%s-Runnable: %s" % (" " * (indent + 2), runnable.short_name))
@@ -68,7 +73,7 @@ def show_behavior(indent:int, behavior: SwcInternalBehavior):
68
73
  show_variable_access(indent + 9, variable_access)
69
74
  for server_call_point in runnable.getServerCallPoints():
70
75
  print("%s-scp : %s" % (" " * (indent + 4), variable_access.short_name))
71
- if (server_call_point.operation_iref != None):
76
+ if (server_call_point.operation_iref is not None):
72
77
  print("%s: %s" % (" " * (indent + 9), server_call_point.getOperationIRef().getContextRPortRef().getValue()))
73
78
  print("%s: %s" % (" " * (indent + 9), server_call_point.getOperationIRef().getTargetRequiredOperationRef().getValue()))
74
79
  for event in behavior.getOperationInvokedEvents():
@@ -79,26 +84,29 @@ def show_behavior(indent:int, behavior: SwcInternalBehavior):
79
84
  print(" - TimingEvent : %s (%d ms)" % (event.short_name, event.period_ms))
80
85
  print(" : %s" % (event.start_on_event_ref.value))
81
86
 
87
+
82
88
  def show_sw_component(indent: int, sw_component: SwComponentType):
83
89
  print("%s%s" % (" " * indent, sw_component.short_name))
84
90
  for prototype in sw_component.getRPortPrototypes():
85
91
  show_port(indent + 2, prototype)
86
92
  for prototype in sw_component.getPPortPrototypes():
87
93
  show_port(indent + 2, prototype)
88
- show_behavior(indent + 2, sw_component.internal_behavior)
94
+ show_behavior(indent + 2, sw_component.internal_behavior)
95
+
89
96
 
90
97
  def show_sender_receiver_interface(indent: int, sr_interface: SenderReceiverInterface):
91
98
  print("%s%s" % (" " * indent, sr_interface.short_name))
92
99
  for data_element in sr_interface.getDataElements():
93
100
  print("%sData Element:%s (%s) " % (" " * (indent + 2), data_element.short_name, data_element.getTypeTRef().getValue()))
94
101
 
102
+
95
103
  def show_client_server_interface(indent: int, cs_interface: ClientServerInterface):
96
104
  print("%s%s" % (" " * indent, cs_interface.short_name))
97
105
  for operation in cs_interface.getOperations():
98
106
  print("%sOperation:%s" % (" " * (indent + 2), operation.short_name))
99
107
  for argument in operation.getArgumentDataPrototypes():
100
- print("%s :%s (%s: %s)" % (" " * (indent + 2), argument.short_name,
101
- argument.direction, argument.typeTRef.value))
108
+ print("%s :%s (%s: %s)" % (" " * (indent + 2), argument.short_name, argument.direction, argument.typeTRef.value))
109
+
102
110
 
103
111
  def show_bsw_internal_behavior(indent: int, behavior: BswInternalBehavior):
104
112
  document = AUTOSAR.getInstance()
@@ -111,31 +119,33 @@ def show_bsw_internal_behavior(indent: int, behavior: BswInternalBehavior):
111
119
  for event in behavior.getBswTimingEvents():
112
120
  print("%s-%s" % (" " * (indent + 2), event.short_name))
113
121
  print("%s-%s: %s" % (" " * (indent + 4), "StartsOnEventRef", event.startsOnEventRef.value))
114
- starts_on_event = document.find(event.startsOnEventRef.value) # type: BswModuleEntity
122
+ starts_on_event = document.find(event.startsOnEventRef.value) # type: BswModuleEntity
115
123
  print("%s-%s: %s" % (" " * (indent + 4), "StartsOnEvent", starts_on_event.short_name))
116
124
  print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntryRef", starts_on_event.implementedEntryRef.value))
117
- implemented_entry = document.find(starts_on_event.implementedEntryRef.value) # type: BswModuleEntry
125
+ implemented_entry = document.find(starts_on_event.implementedEntryRef.value) # type: BswModuleEntry
118
126
  print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntry", implemented_entry.short_name))
119
127
  print("%s-%s: %d" % (" " * (indent + 6), "Service Id", implemented_entry.serviceId))
120
128
 
129
+
121
130
  def show_bsw_module_description(indent: int, description: BswModuleDescription):
122
131
  print("%s-%s" % (" " * indent, description.short_name))
123
132
 
124
133
  for behavior in description.getBswInternalBehaviors():
125
134
  show_bsw_internal_behavior(indent + 2, behavior)
126
135
 
136
+
127
137
  def show_ar_package(indent: int, ar_package: ARPackage):
128
138
  print("%s-%s (Pkg)" % (" " * indent, ar_package.short_name))
129
139
 
130
140
  for sub_package in ar_package.getARPackages():
131
141
  show_ar_package(indent + 2, sub_package)
132
- #for data_type in ar_package.getImplementationDataTypes():
142
+ # for data_type in ar_package.getImplementationDataTypes():
133
143
  # show_type(indent + 2, data_type)
134
- #for mapping_set in ar_package.getDataTypeMappingSets():
144
+ # for mapping_set in ar_package.getDataTypeMappingSets():
135
145
  # show_data_type_mapping(indent + 2, mapping_set)
136
- #for sw_component in ar_package.getAtomicSwComponents():
146
+ # for sw_component in ar_package.getAtomicSwComponents():
137
147
  # show_sw_component(indent + 2, sw_component)
138
- #for sr_interface in ar_package.getSenderReceiverInterfaces():
148
+ # for sr_interface in ar_package.getSenderReceiverInterfaces():
139
149
  # show_sender_receiver_interface(indent + 2, sr_interface)
140
150
  for cs_interface in ar_package.getClientServerInterfaces():
141
151
  show_client_server_interface(indent + 2, cs_interface)
@@ -152,6 +162,7 @@ def _usage():
152
162
  print(" -h : show the help information")
153
163
  sys.exit(2)
154
164
 
165
+
155
166
  def cli_main():
156
167
  try:
157
168
  opts, _ = getopt.getopt(sys.argv[1:], "h", ["arxml=", "help"])
@@ -160,7 +171,7 @@ def cli_main():
160
171
  print(str(err)) # will print something like "option -a not recognized"
161
172
  _usage()
162
173
 
163
- logging.basicConfig(format='[%(levelname)s] : %(message)s', level = logging.DEBUG)
174
+ logging.basicConfig(format='[%(levelname)s] : %(message)s', level=logging.DEBUG)
164
175
 
165
176
  arxml_files = []
166
177
  for o, arg in opts:
@@ -180,7 +191,7 @@ def cli_main():
180
191
  for arxml_file in arxml_files:
181
192
  parser.load(arxml_file, document)
182
193
 
183
- #obj = AUTOSAR.getInstance().find("/AUTOSAR_Platform/ImplementationDataTypes/uint8")
184
- #print(obj)
194
+ # obj = AUTOSAR.getInstance().find("/AUTOSAR_Platform/ImplementationDataTypes/uint8")
195
+ # print(obj)
185
196
  for pkg in document.getARPackages():
186
- show_ar_package(0, pkg)
197
+ show_ar_package(0, pkg)
@@ -4,10 +4,12 @@ import logging
4
4
  import sys
5
5
  import os.path
6
6
 
7
+ from ..transformer.admin_data import AdminDataTransformer
7
8
  from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
8
9
  from ..parser.arxml_parser import ARXMLParser
9
10
  from ..writer import ARXMLWriter
10
11
 
12
+
11
13
  def perform_format(args):
12
14
  logger = logging.getLogger()
13
15
 
@@ -22,20 +24,21 @@ def perform_format(args):
22
24
  if os.path.exists(log_file):
23
25
  os.remove(log_file)
24
26
 
25
- file_handler = logging.FileHandler(log_file)
26
- file_handler.setFormatter(formatter)
27
+ if args.verbose:
28
+ file_handler = logging.FileHandler(log_file)
29
+ file_handler.setFormatter(formatter)
30
+ file_handler.setLevel(logging.DEBUG)
27
31
 
28
32
  logger.setLevel(logging.DEBUG)
29
- file_handler.setLevel(logging.DEBUG)
30
33
 
31
34
  if args.verbose:
32
35
  stdout_handler.setLevel(logging.DEBUG)
33
-
34
36
  else:
35
37
  stdout_handler.setLevel(logging.INFO)
36
38
 
37
- logger.addHandler(file_handler)
38
- logger.addHandler(stdout_handler)
39
+ if args.verbose:
40
+ logger.addHandler(file_handler)
41
+ logger.addHandler(stdout_handler)
39
42
 
40
43
  try:
41
44
  options = {}
@@ -46,26 +49,35 @@ def perform_format(args):
46
49
  parser = ARXMLParser(options)
47
50
  parser.load(args.INPUT, document)
48
51
 
52
+ if args.remove_admin_data:
53
+ transform = AdminDataTransformer()
54
+ transform.remove(document)
55
+
49
56
  writer = ARXMLWriter()
50
57
  writer.save(args.OUTPUT, document)
51
58
 
52
59
  except Exception as e:
53
- #print(e)
60
+ # print(e)
54
61
  logger.error(e)
55
- raise e
62
+ if args.verbose:
63
+ raise e
64
+
56
65
 
57
66
  def main():
58
67
  version = pkg_resources.require("armodel")[0].version
59
68
 
60
69
  ap = argparse.ArgumentParser()
61
- ap.add_argument("-v", "--verbose", required= False, help= "Print debug information", action= "store_true")
62
- ap.add_argument("-w", "--warning", required= False, help= "Skip the error and report it as warning message", action= "store_true")
63
- ap.add_argument("INPUT", help = "The path of AUTOSAR ARXML file")
64
- ap.add_argument("OUTPUT", help = "The path of output ARXML file")
70
+ ap.description = "arxml-format ver: %s" % version
71
+ ap.add_argument("-v", "--verbose", required=False, help="Print debug information", action="store_true")
72
+ ap.add_argument("-w", "--warning", required=False, help="Skip the error and report it as warning message", action="store_true")
73
+ ap.add_argument("--remove-admin-data", required=False, help="Remove all the AdminData", action="store_true")
74
+ ap.add_argument("INPUT", help="The path of AUTOSAR ARXML file")
75
+ ap.add_argument("OUTPUT", help="The path of output ARXML file")
65
76
 
66
77
  args = ap.parse_args()
67
78
 
68
79
  perform_format(args)
69
80
 
81
+
70
82
  if __name__ == "__main__":
71
- main()
83
+ main()
@@ -1,14 +1,20 @@
1
1
  from typing import Dict, List
2
2
 
3
+
3
4
  from ...M2.MSR.AsamHdo.SpecialData import Sdg
4
- from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
5
  from ...M2.MSR.AsamHdo import AdminData
6
6
  from ...M2.MSR.AsamHdo.BaseTypes import SwBaseType
7
- from ..MSR.Documentation.TextModel.BlockElements import DocumentationBlock
7
+ from ...M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
8
+ from ...M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
9
+ from ...M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
10
+ from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
8
11
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement, Referrable
9
12
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
10
13
  from ...M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, DataTypeMap
14
+ from ...M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType
11
15
  from ...M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
16
+ from ...M2.AUTOSARTemplates.SystemTemplate import RootSwCompositionPrototype, System
17
+
12
18
 
13
19
  class FileInfoComment(ARObject):
14
20
  def __init__(self):
@@ -23,27 +29,23 @@ class FileInfoComment(ARObject):
23
29
  self.sdgs = value
24
30
  return self
25
31
 
32
+
26
33
  class AbstractAUTOSAR(CollectableElement):
27
34
  def __init__(self):
28
35
  super().__init__()
29
36
 
30
- CollectableElement.__init__(self)
31
-
32
- self.schema_location = ""
33
- self._appl_impl_type_maps = {}
34
- self._impl_appl_type_maps = {}
35
-
36
- self.adminData = None # type: AdminData
37
- self.arPackages = {} # type: Dict[str, ARPackage]
38
- self.fileInfoComment = None # type: FileInfoComment
39
- self.introduction = None # type: DocumentationBlock
37
+ self.clear()
40
38
 
41
39
  def getAdminData(self):
42
40
  return self.adminData
43
41
 
44
42
  def setAdminData(self, value):
45
- self.adminData = value
43
+ if value is not None:
44
+ self.adminData = value
46
45
  return self
46
+
47
+ def removeAdminData(self):
48
+ self.adminData = None
47
49
 
48
50
  def getFileInfoComment(self):
49
51
  return self.fileInfoComment
@@ -67,8 +69,26 @@ class AbstractAUTOSAR(CollectableElement):
67
69
  return ""
68
70
 
69
71
  def clear(self):
70
- self.arPackages = {}
71
- self.elements = {}
72
+ CollectableElement.__init__(self)
73
+
74
+ self.schema_location = None
75
+ self._appl_impl_type_maps = {}
76
+ self._impl_appl_type_maps = {}
77
+
78
+ self._behavior_impl_maps = {} # type: Dict[str, str]
79
+ self._impl_behavior_maps = {} # type: Dict[str, str]
80
+
81
+ self.uuid_objects = {} # type: Dict[str, ARObject]
82
+
83
+ self.systems = {} # type: Dict[str, System]
84
+ self.compositionSwComponentTypes = {} # type: Dict[str, CompositionSwComponentType]
85
+
86
+ self.rootSwCompositionPrototype = None # type: RootSwCompositionPrototype
87
+
88
+ self.adminData = None # type: AdminData
89
+ self.arPackages = {} # type: Dict[str, ARPackage]
90
+ self.fileInfoComment = None # type: FileInfoComment
91
+ self.introduction = None # type: DocumentationBlock
72
92
 
73
93
  def getElement(self, short_name: str) -> Referrable:
74
94
  if (short_name in self.arPackages):
@@ -76,8 +96,8 @@ class AbstractAUTOSAR(CollectableElement):
76
96
  return CollectableElement.getElement(self, short_name)
77
97
 
78
98
  def getARPackages(self) -> List[ARPackage]:
79
- #return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
80
- return list(sorted(self.arPackages.values(), key= lambda a: a.short_name))
99
+ # return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
100
+ return list(sorted(self.arPackages.values(), key=lambda a: a.short_name))
81
101
 
82
102
  def createARPackage(self, short_name: str) -> ARPackage:
83
103
  if (short_name not in self.arPackages):
@@ -92,7 +112,7 @@ class AbstractAUTOSAR(CollectableElement):
92
112
  if (short_name == ""):
93
113
  continue
94
114
  element = element.getElement(short_name)
95
- if (element == None):
115
+ if (element is None):
96
116
  return element
97
117
  # raise ValueError("The %s of reference <%s> does not exist." % (short_name, referred_name))
98
118
  return element
@@ -127,14 +147,67 @@ class AbstractAUTOSAR(CollectableElement):
127
147
  raise IndexError("Invalid Implementation data type <%s>" % impl_data_type)
128
148
 
129
149
  return self.find(self._impl_appl_type_maps[impl_data_type])
150
+
151
+ def getRootSwCompositionPrototype(self):
152
+ return self.rootSwCompositionPrototype
153
+
154
+ def setRootSwCompositionPrototype(self, value):
155
+ if value is not None:
156
+ self.rootSwCompositionPrototype = value
157
+ return self
158
+
159
+ def addImplementationBehaviorMap(self, impl: str, behavior: str) -> Implementation:
160
+ self._behavior_impl_maps[behavior] = impl
161
+ self._impl_behavior_maps[impl] = behavior
130
162
 
163
+ def getBehavior(self, impl_ref: str) -> InternalBehavior:
164
+ if impl_ref in self._impl_behavior_maps:
165
+ return self.find(self._impl_behavior_maps[impl_ref])
166
+ return None
167
+
168
+ def getImplementation(self, behavior_ref: str):
169
+ if behavior_ref in self._behavior_impl_maps:
170
+ return self.find(self._behavior_impl_maps[behavior_ref])
171
+ return None
172
+
173
+ def addSystem(self, system: System):
174
+ short_name = system.getShortName()
175
+ if short_name not in self.systems:
176
+ self.systems[short_name] = system
177
+
178
+ def getSystems(self) -> List[System]:
179
+ return list(sorted(self.systems.values(), key=lambda a: a.getShortName()))
180
+
181
+ def getCompositionSwComponentTypes(self):
182
+ return self.compositionSwComponentTypes
183
+
184
+ def getCompositionSwComponentType(self, short_name: str):
185
+ return self.compositionSwComponentTypes[short_name]
186
+
187
+ def addCompositionSwComponentType(self, sw_component_type: CompositionSwComponentType):
188
+ if sw_component_type is not None:
189
+ short_name = sw_component_type.getShortName()
190
+ if short_name not in self.compositionSwComponentTypes:
191
+ self.compositionSwComponentTypes[short_name] = sw_component_type
192
+ return self
131
193
 
132
- class AUTOSAR (AbstractAUTOSAR):
194
+ def getARObjectByUUID(self, uuid: str):
195
+ if uuid in self.uuid_objects:
196
+ return self.uuid_objects[uuid]
197
+ return None
198
+
199
+ def addARObject(self, value: ARObject):
200
+ if value is not None:
201
+ self.uuid_objects[value.uuid] = value
202
+ return self
203
+
204
+
205
+ class AUTOSAR (AbstractAUTOSAR):
133
206
  __instance = None
134
207
 
135
208
  @staticmethod
136
209
  def getInstance():
137
- if (AUTOSAR.__instance == None):
210
+ if (AUTOSAR.__instance is None):
138
211
  AUTOSAR()
139
212
  return AUTOSAR.__instance
140
213
 
@@ -142,13 +215,14 @@ class AUTOSAR (AbstractAUTOSAR):
142
215
  self.clear()
143
216
 
144
217
  def __init__(self):
145
- if (AUTOSAR.__instance != None):
218
+ if (AUTOSAR.__instance is not None):
146
219
  raise Exception("The AUTOSAR is singleton!")
147
220
 
148
221
  AUTOSAR.__instance = self
149
222
 
150
223
  super().__init__()
151
224
 
225
+
152
226
  class AUTOSARDoc(AbstractAUTOSAR):
153
227
  def __init__(self):
154
228
  super().__init__()