Code Duplication    Length = 16-18 lines in 2 locations

opcua/common/xmlimporter.py 2 locations

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