package db;

import hu.elte.inf.pszt.prt.javalib.db.jpa.AbstractDatabaseHandler;
import hu.elte.inf.pszt.prt.javalib.db.jpa.GenericJpaController;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author trust56
 * @contributor Daniel "3ICE" Berezvai
 */
public class DatabaseHandler extends AbstractDatabaseHandler {
  private GenericJpaController<Person> partnerJpaController;
  private GenericJpaController<Task> rentalJpaController;
  private GenericJpaController<Category> vehicleJpaController;

  public GenericJpaController<Person> getPartnerJpaController() {
    return partnerJpaController;
  }

  public GenericJpaController<Task> getRentalJpaController() {
    return rentalJpaController;
  }

  public GenericJpaController<Category> getVehicleJpaController() {
    return vehicleJpaController;
  }

  @Override
  protected EntityManagerFactory createEntityManagerFactory() {
    return Persistence.createEntityManagerFactory("ProjectManagementPU");
  }

  @Override
  protected void createJpaControllers() {
    partnerJpaController = new GenericJpaController<>(cem, Person.class);
    rentalJpaController = new GenericJpaController<>(cem, Task.class);
    vehicleJpaController = new GenericJpaController<>(cem, Category.class);
  }

  @Override
  protected void mapEntityClassesToControllers() {
    ectcm.put(Person.class, partnerJpaController);
    ectcm.put(Category.class, vehicleJpaController);
    ectcm.put(Task.class, rentalJpaController);
  }
}
