Code Duplication    Length = 16-18 lines in 2 locations

opcua/common/xmlimporter.py 2 locations

@@ 219-236 (lines=18) @@
216
        return res[0].AddedNodeId
217
218
    def add_reference(self, obj):
219
        node = self._get_node(obj)
220
        attrs = ua.ReferenceTypeAttributes()
221
        if obj.desc:
222
            attrs.Description = ua.LocalizedText(obj.desc)
223
        attrs.DisplayName = ua.LocalizedText(obj.displayname)
224
        if obj. inversename:
225
            attrs.InverseName = ua.LocalizedText(obj.inversename)
226
        if obj.abstract:
227
            attrs.IsAbstract = obj.abstract
228
        if obj.symmetric:
229
            attrs.Symmetric = obj.symmetric
230
        node.NodeAttributes = attrs
231
        res = self.server.add_nodes([node])
232
        self._add_refs(obj)
233
        return res[0].AddedNodeId
234
235
    def add_datatype(self, obj):
236
        node = self._get_node(obj)
237
        attrs = ua.DataTypeAttributes()
238
        if obj.desc:
239
            attrs.Description = ua.LocalizedText(obj.desc)
@@ 238-253 (lines=16) @@
235
    def add_datatype(self, obj):
236
        node = self._get_node(obj)
237
        attrs = ua.DataTypeAttributes()
238
        if obj.desc:
239
            attrs.Description = ua.LocalizedText(obj.desc)
240
        attrs.DisplayName = ua.LocalizedText(obj.displayname)
241
        if obj.abstract:
242
            attrs.IsAbstract = obj.abstract
243
        node.NodeAttributes = attrs
244
        res = self.server.add_nodes([node])
245
        self._add_refs(obj)
246
        return res[0].AddedNodeId
247
248
    def _add_refs(self, obj):
249
        if not obj.refs:
250
            return
251
        refs = []
252
        for data in obj.refs:
253
            ref = ua.AddReferencesItem()
254
            ref.IsForward = True
255
            ref.ReferenceTypeId = self.to_nodeid(data.reftype)
256
            ref.SourceNodeId = ua.NodeId.from_string(obj.nodeid)