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<Partner> partnerJpaController;
  private GenericJpaController<Rental> rentalJpaController;
  private GenericJpaController<Vehicle> vehicleJpaController;

  public GenericJpaController<Partner> getPartnerJpaController() {
    return partnerJpaController;
  }

  public GenericJpaController<Rental> getRentalJpaController() {
    return rentalJpaController;
  }

  public GenericJpaController<Vehicle> getVehicleJpaController() {
    return vehicleJpaController;
  }

  @Override
  protected EntityManagerFactory createEntityManagerFactory() {
    return Persistence.createEntityManagerFactory("VehicleRepositoryPU");
  }

  @Override
  protected void createJpaControllers() {
    partnerJpaController = new GenericJpaController<>(cem, Partner.class);
    rentalJpaController = new GenericJpaController<>(cem, Rental.class);
    vehicleJpaController = new GenericJpaController<>(cem, Vehicle.class);
  }

  @Override
  protected void mapEntityClassesToControllers() {
    ectcm.put(Partner.class, partnerJpaController);
    ectcm.put(Vehicle.class, vehicleJpaController);
    ectcm.put(Rental.class, rentalJpaController);
  }
}
