Code Duplication    Length = 29-30 lines in 2 locations

opcua/common/xmlexporter.py 2 locations

@@ 166-195 (lines=30) @@
163
        # add any references that get used to aliases dict; this gets handled later
164
        self.aliases[datatype] = datatype_nodeid
165
166
    def add_etree_variable_type(self, obj):
167
        """
168
        Add a UA variable type element to the XML etree
169
        """
170
171
        var_el = self._add_node_common("UAVariableType", obj)
172
173
        datatype = o_ids.ObjectIdNames[obj.get_data_type().Identifier]
174
        datatype_nodeid = obj.get_data_type().to_string()
175
        accesslevel = str(obj.get_attribute(ua.AttributeIds.AccessLevel).Value.Value)
176
        useraccesslevel = str(obj.get_attribute(ua.AttributeIds.UserAccessLevel).Value.Value)
177
        symbolicname = None  # TODO when to export this?
178
        value = str(obj.get_value())
179
180
        var_el.attrib["DataType"] = datatype
181
182
        defaults = ua.VariableAttributes()
183
        if accesslevel != defaults.AccessLevel:
184
            print("ACCESS", accesslevel, defaults.AccessLevel)
185
            var_el.attrib["AccessLevel"] = accesslevel
186
        if useraccesslevel != defaults.UserAccessLevel:
187
            var_el.attrib["UserAccessLevel"] = useraccesslevel
188
189
        val_el = Et.SubElement(var_el, 'Value')
190
        valx_el = Et.SubElement(val_el, 'uax:' + datatype)
191
        valx_el.text = value
192
193
        self._add_ref_els(var_el, obj)
194
        # add any references that get used to aliases dict; this gets handled later
195
        self.aliases[datatype] = datatype_nodeid
196
197
    def add_etree_method(self, obj):
198
        obj_el = self._add_node_common("UAMethod", obj)
@@ 136-164 (lines=29) @@
133
        obj_el = self._add_node_common("UAObjectType", obj)
134
        self._add_ref_els(obj_el, obj)
135
136
    def add_etree_variable(self, obj):
137
        """
138
        Add a UA variable element to the XML etree
139
        """
140
        var_el = self._add_node_common("UAVariable", obj)
141
142
        datatype = o_ids.ObjectIdNames[obj.get_data_type().Identifier]
143
        datatype_nodeid = obj.get_data_type().to_string()
144
        accesslevel = str(obj.get_attribute(ua.AttributeIds.AccessLevel).Value.Value)
145
        useraccesslevel = str(obj.get_attribute(ua.AttributeIds.UserAccessLevel).Value.Value)
146
        symbolicname = None  # TODO when to export this?
147
        value = str(obj.get_value())
148
149
        var_el.attrib["DataType"] = datatype
150
151
        defaults = ua.VariableAttributes()
152
        if accesslevel != defaults.AccessLevel:
153
            print("ACCESS", accesslevel, defaults.AccessLevel)
154
            var_el.attrib["AccessLevel"] = accesslevel
155
        if useraccesslevel != defaults.UserAccessLevel:
156
            var_el.attrib["UserAccessLevel"] = useraccesslevel
157
158
        val_el = Et.SubElement(var_el, 'Value')
159
        valx_el = Et.SubElement(val_el, 'uax:' + datatype)
160
        valx_el.text = value
161
162
        self._add_ref_els(var_el, obj)
163
        # add any references that get used to aliases dict; this gets handled later
164
        self.aliases[datatype] = datatype_nodeid
165
166
    def add_etree_variable_type(self, obj):
167
        """