from persistent import Persistent


class Employee(Persistent):
    """An employee"""

    def __init__(self, name, age):
        self._name = name
        self._age = age
        #self.lock = threading.Lock()

    def __str__(self):
        return "Employee '{0}' {1} years old".format(self._name,
                                                     self._age)

    def print_state(self):
        print "**** NAME:'{0}'-AGE:'{1}'".format(self._name, self._age)

    """
    def __getstate__(self):
        print "--------using GET state"
        return (self.name, self.manager, self.age, "unLock", self.friends)

    def __setstate__(self, state):
        print "--------using SETstate-"
        print "state:{}".format(state)
        print "---------"
        self.name, self.manager, self.age, self.lock, self.friends = state
        self.lock = threading.Lock()
        print "end setstate"
    """

    """
    def set_age(self, age):
        self.lock.acquire()
        self.age = age
        transaction.commit()
        self.lock.release()

    def add_friend(self, friend):

        self.friends.append((friend, "amigacho"))
        self._p_changed = 1
        print self._p_changed
    """


class Enterprise(Persistent):

    def __init__(self, name):
        self._employees = []
        self._name = name

    def __str__(self):
        return "Enterprise '{0}'".format(self._name)

    def print_state(self):
        print "Enterprise name: '{0}' - Cant. employees:{1}".format(self._name,
            len(self._employees))
        print "Employees:"
        for e in self._employees:
            e.print_state()

    def add_employee(self, employee):
        self._employees.append(employee)
        self._p_changed = True

    def remove_employee(self, employee):
        self._employees.remove(employee)
        self._p_changed = True
