labs4capella / python4capella

Python for Capella
Eclipse Public License 2.0
52 stars 10 forks source link

Attribute.get_value() for EnumerationValueAttribute doesn't work #150

Closed ylussaud closed 1 year ago

ylussaud commented 1 year ago

You will need to add some methods to the ReqIFElement class and add a EnumValue class:

class ReqIFElement(EObject):
    """
    """
    def __init__(self, java_object = None):
        if java_object is None:
            JavaObject.__init__(self, create_e_object("http://www.polarsys.org/kitalpha/requirements", "ReqIFElement"))
        elif isinstance(java_object, ReqIFElement):
            JavaObject.__init__(self, java_object.get_java_object())
        elif get_e_classifier("http://www.polarsys.org/kitalpha/requirements", "ReqIFElement").isInstance(java_object):
            JavaObject.__init__(self, java_object)
        else:
            raise AttributeError("Passed object is not compatible with " + self.__class__.__name__ + ": " + str(java_object))
    def get_id(self):
        """
        """
        return self.get_java_object().getReqIFIdentifier()
    def set_id(self, value):
        """
        """
        self.get_java_object().setReqIFIdentifier(value)
    def get_long_name(self):
        """
        """
        return self.get_java_object().getReqIFLongName()
    def set_long_name(self, value):
        """
        """
        self.get_java_object().setReqIFLongName(value)
    def get_description(self):
        """
        """
        return self.get_java_object().getReqIFDescription()
    def set_description(self, value):
        """
        """
        self.get_java_object().setReqIFDescription(value)

class EnumValue(ReqIFElement):
    """
    """
    def __init__(self, java_object = None):
        if java_object is None:
            JavaObject.__init__(self, create_e_object("http://www.polarsys.org/kitalpha/requirements", "EnumValue"))
        elif isinstance(java_object, ReqIFElement):
            JavaObject.__init__(self, java_object.get_java_object())
        elif get_e_classifier("http://www.polarsys.org/kitalpha/requirements", "EnumValue").isInstance(java_object):
            JavaObject.__init__(self, java_object)
        else:
            raise AttributeError("Passed object is not compatible with " + self.__class__.__name__ + ": " + str(java_object))

Then you can replace the Attribute.get_value():

    def get_value(self):
        """
        """
        if self.get_java_object().eClass().getName() == "BooleanValueAttribute":
            return self.get_java_object().isValue()
        elif self.get_java_object().eClass().getName() == "EnumerationValueAttribute":
            return create_e_list(self.get_java_object().getValues(), EnumValue)
        else:
            return self.get_java_object().getValue()

This will return a list of EnumValue when called on a EnumerationValueAttribute. For more details see this discussion.