
package de.ivu.elect.business.mandant.entity;

import javax.persistence.EntityManager;

public interface EntityMitMandant {

  Long getId();

  EntityMitMandant getParent();

  default Mandant getMandant() {
    EntityMitMandant parent = getParent();

    if (parent == null) {
      return null;
    }

    return parent.getMandant();
  }

  Class< ? > getEntityClass();

  default Class< ? extends EntityMitMandant> getEntityMitMandantClass() {
    Class entityClass = getEntityClass();

    return entityClass;
  }

  default Mandant ladeMandant(EntityManager entityManager) {
    return entityManager.find(getEntityMitMandantClass(), getId()).getMandant();
  }
}
