/**
   * ploeg toevoegen aan database
   *
   * @param p de ploeg die je wilt toevoegen
   * @throws DBException
   */
  public void toevoegenPloeg(Ploeg p) throws DBException {

    // connectie tot stand brengen (en automatisch sluiten)
    try (Connection conn = ConnectionManager.getConnection(); ) {
      // preparedStatement opstellen (en automtisch sluiten)
      if (p.getTrainer() != null) {

        try (PreparedStatement stmt =
            conn.prepareStatement(
                "INSERT INTO ploeg (`naam`, `niveau`, `trainer_id`) VALUES (?,?,?)"); ) {
          stmt.setString(1, p.getNaam());
          stmt.setString(2, p.getCategorie().getTekst());
          stmt.setInt(3, p.getTrainer());

          stmt.execute();
        } catch (SQLException sqlEx) {
          throw new DBException("SQL-exception in toevoegenPloeg(PloegBag p) - statement" + sqlEx);
        }
      } else {
        try (PreparedStatement stmt =
            conn.prepareStatement("INSERT INTO ploeg (`naam`, `niveau`) VALUES (?,?)"); ) {
          stmt.setString(1, p.getNaam());
          stmt.setString(2, p.getCategorie().getTekst());

          stmt.execute();
        } catch (SQLException sqlEx) {
          throw new DBException("SQL-exception in toevoegenPloeg(PloegBag p) - statement" + sqlEx);
        }
      }

    } catch (SQLException sqlEx) {
      throw new DBException("SQL-exception in toevoegenPloeg(PloegBag p) - connection" + sqlEx);
    }
  }
  @Test
  public void koppelenSpeler() throws Exception {
    Persoon een = new Persoon();
    een.setVoornaam("Davisito");
    een.setNaam("Claesito");
    een.setGeboortedatum(1960, 4, 12);

    Persoon twee = new Persoon();
    twee.setVoornaam("Cristinita");
    twee.setNaam("Claesita");
    twee.setGeboortedatum(1966, 5, 12);

    persoonDB.toevoegenPersoon(een);
    persoonDB.toevoegenPersoon(twee);

    Ploeg ploeg = new Ploeg();
    ploeg.setCategorie(Categorie.U11);
    ploeg.setNaam("aburido");

    ploegDB.toevoegenPloeg(ploeg);

    ploegDB.toevoegenSpelerPloeg(
        ploegDB.zoekPloeg(ploeg.getNaam()),
        persoonDB.zoekPersoon(een.getNaam(), een.getVoornaam()));

    ploegDB.toevoegenSpelerPloeg(
        ploegDB.zoekPloeg(ploeg.getNaam()),
        persoonDB.zoekPersoon(twee.getNaam(), twee.getVoornaam()));
  }
  @Test
  public void koppelenTrainerAanPloeg() throws Exception {
    Ploeg ploeg = new Ploeg();
    ploeg.setCategorie(Categorie.U8);
    ploeg.setNaam("Apllesiitos");
    ploegDB.toevoegenPloeg(ploeg);
    Persoon drie = new Persoon();
    drie.setVoornaam("Rubensito");
    drie.setNaam("Chulito");

    drie.setGeboortedatum(1998, 8, 1);

    drie.setTrainer(true);

    persoonDB.toevoegenPersoon(drie);

    ploeg = ploegDB.zoekPloeg(ploeg.getNaam());
    ploegDB.toevoegenTrainerPloeg(persoonDB.zoekPersoon("Chulito", "Rubensito"), ploeg);
  }
  @Test
  public void ontkoppelenSpeler() throws Exception {
    Persoon een = new Persoon();
    een.setVoornaam("stevisito");
    een.setNaam("rikisito");
    een.setGeboortedatum(1995, 4, 13);
    een.setTrainer(false);

    persoonDB.toevoegenPersoon(een);

    Ploeg ploeg = new Ploeg();
    ploeg.setCategorie(Categorie.U10);
    ploeg.setNaam("vivesito");

    ploegDB.toevoegenPloeg(ploeg);

    //
    ploegDB.toevoegenSpelerPloeg(
        ploegDB.zoekPloeg(ploeg.getNaam()),
        persoonDB.zoekPersoon(een.getNaam(), een.getVoornaam()));

    ploegDB.verwijderSpelerPloeg(een.getNaam(), een.getVoornaam());
  }
  /**
   * deze methode geeft een ArrayList terug waarin alle spelers van de opgegeven ploeg zitten
   *
   * @param p de ploeg waarvan je alle spelers wilt opvragen
   * @return
   * @throws DBException
   * @throws ApplicationException
   */
  public ArrayList<Persoon> zoekSpelersPloeg(Ploeg p) throws DBException, ApplicationException {

    ArrayList<Persoon> kl = zoekSpelersPloeg(p.getNaam());
    return kl;
  }
 /**
  * deze methode ontkoppelt de trainer van de opgegeven ploeg
  *
  * @param p de opgegeven ploeg
  * @throws DBException
  * @throws ApplicationException
  */
 public void verwijderTrainerPloeg(Ploeg p) throws DBException, ApplicationException {
   verwijderTrainerPloeg(p.getNaam());
 }
  /**
   * deze methode koppelt de opgegeven trainer aan de opgegeven ploeg
   *
   * @param persoon Het persoon object van de trainer die je wilt toevoegen.
   * @param ploeg Het ploeg object waraan je een trainer wilt toevoegen.
   * @throws DBException
   * @throws ApplicationException
   */
  public void toevoegenTrainerPloeg(Persoon persoon, Ploeg ploeg)
      throws DBException, ApplicationException {

    toevoegenTrainerPloeg(persoon.getNaam(), persoon.getVoornaam(), ploeg.getNaam());
  }
  /**
   * deze methode koppelt de opgegeven speler van de ploegen waarin hij zit
   *
   * @param ploeg De ploeg waaraan je een speler wilt koppelen.
   * @param speler De persoon die je aan een ploeg wilt koppelen.
   * @throws DBException
   * @throws exception.ApplicationException
   */
  public void toevoegenSpelerPloeg(Ploeg ploeg, Persoon speler)
      throws DBException, ApplicationException {

    toevoegenSpelerPloeg(ploeg.getNaam(), speler);
  }
  /**
   * ploeg verwijderen van database
   *
   * @param p de ploeg die je wilt verwijderen
   * @throws DBException
   */
  public void verwijderPloeg(Ploeg p) throws DBException {

    verwijderPloeg(p.getNaam());
  }
 /**
  * deze methode zoekt de trainer op van de opgegeven ploeg
  *
  * @param p de ploeg waarvan je de trainer wilt zoeken
  * @return Geeft de trainer weer van een ploeg
  * @throws DBException
  * @throws ApplicationException
  */
 public Persoon getTrainer(Ploeg p) throws DBException, ApplicationException {
   return getTrainer(p.getNaam());
 }
 public Ploeg zoekPloeg(Ploeg p) throws DBException, ApplicationException {
   Ploeg returnPloeg = zoekPloeg(p.getNaam());
   return returnPloeg;
 }