Modifying Instances in Python

In Python, the JDL declaration translates in the following Resource and ResourceCapacity interfaces:

class Resource(DbDomObject):
    def get_capacity(self) -> ResourceCapacity:
        pass
    def get_id(self) -> str:
        pass
    def get_name(self) -> str:
        pass
    def set_capacity(self, capacity: ResourceCapacity | None):
        pass
    def set_id(self, id_: str):
        pass
    def set_name(self, name: str | None):
        pass

class ResourceCapacity(DbDomObject, IndexKey):
    def get_quantity(self) -> int:
        pass
    def get_resource(self) -> Resource:
        pass
    def set_quantity(self, quantity: int | None):
        pass
    def set_resource(self, resource: Resource | None):
        pass

For example, to set the attributes of an instance, one would call

  res1 = coll.create_resource()
  res1.set_id( "MyFirstResourceId" )
  res1.set_name( "MyFirstResourceName" )

Relationships are managed in a similar way:

  capa1 = coll.create_resource_capacity()
  capa1.set_quantity(1)
  capa1.set_resource(res1) # this automatically calls Resource.set_resource_capacity()
  res1.get_resource_capacity() == capa1 # true
 
  capa2 = coll.create_resource_capacity()
  capa2.set_quantity(2)
  res1.set_resource_capacity(capa2) # this automatically update the inverted relationships
  res1.get_resource_capacity() == capa2 # true
  capa1.get_resource() == None # true
  capa2.get_resource() == res1 # true