Code Duplication    Length = 11-12 lines in 3 locations

opcua/common/xmlimporter.py 3 locations

@@ 207-218 (lines=12) @@
204
        if obj.dimensions:
205
            attrs.ArrayDimensions = obj.dimensions
206
        node.NodeAttributes = attrs
207
        res = self.server.add_nodes([node])
208
        self._add_refs(obj)
209
        return res[0].AddedNodeId
210
211
    def add_reference(self, obj):
212
        node = self._get_node(obj)
213
        attrs = ua.ReferenceTypeAttributes()
214
        if obj.desc:
215
            attrs.Description = ua.LocalizedText(obj.desc)
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:
@@ 85-95 (lines=11) @@
82
            return ua.NodeId.from_string(nodeid)
83
        elif hasattr(ua.ObjectIds, nodeid):
84
            return ua.NodeId(getattr(ua.ObjectIds, nodeid))
85
        else:
86
            if nodeid in self.parser.aliases:
87
                nodeid = self.parser.aliases[nodeid]
88
            else:
89
                nodeid = "i={}".format(getattr(ua.ObjectIds, nodeid))
90
            return ua.NodeId.from_string(nodeid)
91
92
    def add_object(self, obj):
93
        node = self._get_node(obj)
94
        attrs = ua.ObjectAttributes()
95
        if obj.desc:
96
            attrs.Description = ua.LocalizedText(obj.desc)
97
        attrs.DisplayName = ua.LocalizedText(obj.displayname)
98
        attrs.EventNotifier = obj.eventnotifier
@@ 73-83 (lines=11) @@
70
        if obj.parent:
71
            node.ParentNodeId = ua.NodeId.from_string(obj.parent)
72
        if obj.parentlink:
73
            node.ReferenceTypeId = self.to_nodeid(obj.parentlink)
74
        if obj.typedef:
75
            node.TypeDefinition = ua.NodeId.from_string(obj.typedef)
76
        return node
77
78
    def to_nodeid(self, nodeid):
79
        if not nodeid:
80
            return ua.NodeId(ua.ObjectIds.String)
81
        elif "=" in nodeid:
82
            return ua.NodeId.from_string(nodeid)
83
        elif hasattr(ua.ObjectIds, nodeid):
84
            return ua.NodeId(getattr(ua.ObjectIds, nodeid))
85
        else:
86
            if nodeid in self.parser.aliases: