Package dao.implementation.mysql.chauffeur

Source Code of dao.implementation.mysql.chauffeur.MySqlPeriodeDeTravailDao

package dao.implementation.mysql.chauffeur;

import gui.MainWindow;

import gui.util.TaxiGuiUtil;

import java.sql.Connection;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

import sun.swing.AccessibleMethod;

import modele.chauffeur.Chauffeur;
import modele.chauffeur.Contrat;
import modele.chauffeur.MotifFinContrat;
import modele.chauffeur.PeriodeDeTravail;
import modele.commun.Etat;
import dao.IDao;
import dao.IPeriodeDeTravailDao;
import dao.implementation.mysql.AccessMySql;

/**
* class MySqlPeriodeTravailDao impl�mente les m�thodes DAO insert(final
* PeriodeTravail periodeTravail) update(final PeriodeTravail periodeTravail)
* find(final int id) findAll() delete( final PeriodeTravail periodeTravail) *
* Cette classe permet l'acc�s avec la base de donn�es
*
* @author Kasandra
*
*/
public class MySqlPeriodeDeTravailDao implements IPeriodeDeTravailDao {

  private static final String INSERT_PERIODE_TRAVAIL = "insert into TPeriodeTravail (description, idChauf, idCont, idMotifFinCont, dateDebut, dateFin, idEtat) values (?,?, ?,?, ?,?, ?)";
  private static final String UPDATE_PERIODE_TRAVAIL = "update TPeriodeTravail set description = ?, idChauf = ?, idCont = ?, idMotifFinCont = ?, dateDebut = ?, dateFin = ?, idEtat = ? where idPeriodeTrav = ?";
  private static final String DELETE_PERIODE_TRAVAIL = "delete from TPeriodeTravail where idPeriodeTrav = ?";
  private static final String GET_ALL_PERIODE_TRAVAIL = "select idPeriodeTrav, description, tchauffeurs.idChauf, tchauffeurs.nomChauf, tcontrat.idCont, tcontrat.statutCont, tmotiffincontrat.idMotifFinCont,tmotiffincontrat.descripMotifFinCont, dateDebut, dateFin, tetat.idEtat, tetat.descripEtat from TPeriodeTravail, tcontrat, tmotiffincontrat, tchauffeurs, tetat where tperiodetravail.idChauf= tchauffeurs.idChauf and TPeriodeTravail.idCont= tcontrat.idCont and tmotiffincontrat.idMotifFinCont= tperiodetravail.idMotifFinCont and tperiodetravail.idEtat = tetat.idEtat";
  private static final String GET_PERIODE_TRAVAIL_BY_ID = GET_ALL_PERIODE_TRAVAIL
      + " where idPeriodeTrav = ?";
  private static final String GET_PERIODE_TRAVAIL_BY_CODE = GET_ALL_PERIODE_TRAVAIL
      + " where idPeriodeTrav = ?";
  private static final String GET_PERIODE_TRAVAIL_BY_CHAUFFEUR = GET_ALL_PERIODE_TRAVAIL
  + " and tchauffeurs.idChauf = ?";

  // cr�er une classe mysqlbasedao
  public void delete(final PeriodeDeTravail periodeDeTravail) {
    // �tablit la connexion avec la base de donn�es et la synchronise
    AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
      public void runWithconnection(Connection connection) {
        try {
          PreparedStatement smt = null;
          try {
            smt = connection
                .prepareStatement(DELETE_PERIODE_TRAVAIL);
            smt.setInt(1, periodeDeTravail.getId());
            smt.executeUpdate();
          } finally {
            if (smt != null) {
              smt.close();
            }
          }
        } catch (SQLException e) {
           throw new RuntimeException(e);
         
        }
      }
    });
  }

  public PeriodeDeTravail find(final int id) {
    final PeriodeDeTravail[] result = new PeriodeDeTravail[1];
    // �tablit la connexion avec la base de donn�es et la synchronise
    AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
      public void runWithconnection(Connection connection) {
        try {
          PreparedStatement smt = null;
          ResultSet res = null;
          try {
            smt = connection
                .prepareStatement(GET_PERIODE_TRAVAIL_BY_ID);
            smt.setInt(1, id);
            res = smt.executeQuery();
            if (res.next()) {
              result[0] = new PeriodeDeTravail(res.getInt(1));
              result[0].setDescriptionPeriodeTravail(res
                  .getString(2));

              Chauffeur chauffeur = new Chauffeur(res.getInt(3));
              chauffeur.setNom(res.getString(4));
              result[0].setChauffeur(chauffeur);

              Contrat contrat = new Contrat(res.getInt(5));
              contrat.setStatut(res.getString(6));
              result[0].setContrat(contrat);

              MotifFinContrat motifFinContrat = new MotifFinContrat(
                  res.getInt(7));
              motifFinContrat.setLibelle(res.getString(8));
              result[0].setMotifFinContrat(motifFinContrat);

              Etat etat = new Etat(res.getInt(9));
              etat.setDescrip(res.getString(10));
              result[0].setEtat(etat);

            }
          } finally {
            try {
              if (res != null) {
                res.close();
              }
            } finally {
              if (smt != null) {
                smt.close();
              }
            }
          }
        } catch (SQLException e) {
          throw new RuntimeException(e);
        }
      }
    });
    return result[0];
  }

  public ArrayList<PeriodeDeTravail> findAll() {
    final ArrayList<PeriodeDeTravail> listePeriodeDeTravail = new ArrayList<PeriodeDeTravail>();
    // �tablit la connexion avec la base de donn�es et la synchronise
    AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
      public void runWithconnection(Connection connection) {
        try {
          PreparedStatement smt = null;
          ResultSet res = null;
          try {
            smt = connection
                .prepareStatement(GET_ALL_PERIODE_TRAVAIL);
            res = smt.executeQuery();
            while (res.next()) {
              PeriodeDeTravail periodeDeTravail = new PeriodeDeTravail(
                  res.getInt(1));
              periodeDeTravail.setDescriptionPeriodeTravail(res
                  .getString(2));

              Chauffeur chauffeur = new Chauffeur(res.getInt(3));
              chauffeur.setNom(res.getString(4));
              periodeDeTravail.setChauffeur(chauffeur);

              Contrat contrat = new Contrat(res.getInt(5));
              contrat.setStatut(res.getString(6));
              periodeDeTravail.setContrat(contrat);

              MotifFinContrat motifFinContrat = new MotifFinContrat(
                  res.getInt(7));
              motifFinContrat.setLibelle(res.getString(8));
              periodeDeTravail
                  .setMotifFinContrat(motifFinContrat);

              Date dateDeb = new Date(res.getDate(9).getTime());
              periodeDeTravail.setDateDebut(dateDeb);

              java.sql.Date sqlDateFin = res.getDate(10);
              Date dateFin = sqlDateFin == null ? null : new Date(sqlDateFin.getTime());
              periodeDeTravail.setDateFin(dateFin);

              Etat etat = new Etat(res.getInt(11));
              etat.setDescrip(res.getString(12));
              periodeDeTravail.setEtat(etat);

              listePeriodeDeTravail.add(periodeDeTravail);
            }
          } finally {
            try {
              if (res != null) {
                res.close();
              }
            } finally {
              if (smt != null) {
                smt.close();
              }
            }
          }
        } catch (SQLException e) {
           throw new RuntimeException(e);
         
        }
      }
    });
    return listePeriodeDeTravail;
  }

  @Override
  public Collection<PeriodeDeTravail> findByChauffeur(final Chauffeur chauffeur) {
    final ArrayList<PeriodeDeTravail> periodesDeTravail = new ArrayList<PeriodeDeTravail>();
    AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
      public void runWithconnection(Connection connection) {
        try {
          PreparedStatement smt = null;
          ResultSet res = null;
          try {
            smt = connection
                .prepareStatement(GET_PERIODE_TRAVAIL_BY_CHAUFFEUR);
            smt.setInt(1, chauffeur.getId());
            res = smt.executeQuery();
            while (res.next()) {
              PeriodeDeTravail periodeDeTravail = new PeriodeDeTravail(
                  res.getInt(1));
              periodeDeTravail.setDescriptionPeriodeTravail(res
                  .getString(2));

              Chauffeur chauffeur = new Chauffeur(res.getInt(3));
              chauffeur.setNom(res.getString(4));
              periodeDeTravail.setChauffeur(chauffeur);

              Contrat contrat = new Contrat(res.getInt(5));
              contrat.setStatut(res.getString(6));
              periodeDeTravail.setContrat(contrat);

              MotifFinContrat motifFinContrat = new MotifFinContrat(
                  res.getInt(7));
              motifFinContrat.setLibelle(res.getString(8));
              periodeDeTravail
                  .setMotifFinContrat(motifFinContrat);

              Date dateDeb = new Date(res.getDate(9).getTime());
              periodeDeTravail.setDateDebut(dateDeb);

              java.sql.Date sqlDateFin = res.getDate(10);
              final Date dateFin;
              if (sqlDateFin != null) {
                dateFin = new Date(sqlDateFin.getTime());
              } else {
                dateFin = null;
              }
              periodeDeTravail.setDateFin(dateFin);

              Etat etat = new Etat(res.getInt(11));
              etat.setDescrip(res.getString(12));
              periodeDeTravail.setEtat(etat);

              periodesDeTravail.add(periodeDeTravail);
            }
          } finally {
            try {
              if (res != null) {
                res.close();
              }
            } finally {
              if (smt != null) {
                smt.close();
              }
            }
          }
        } catch (SQLException e) {
           throw new RuntimeException(e);
         
        }
      }
    });
    return periodesDeTravail;
  }

  public PeriodeDeTravail insert(final PeriodeDeTravail periodeDeTravail) {
    final PeriodeDeTravail[] result = new PeriodeDeTravail[1];
    result[0] = null;
    // �tablit la connexion avec la base de donn�es et la synchronise
    AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
      public void runWithconnection(Connection connection) {
        try {
          PreparedStatement psmt = null;
          try {
            psmt = connection
                .prepareStatement(INSERT_PERIODE_TRAVAIL);

            psmt.setString(1, periodeDeTravail
                .getDescriptionPeriodeTravail());

            psmt.setInt(2, periodeDeTravail.getChauffeur().getId());
            psmt.setInt(3, periodeDeTravail.getContrat().getId());
            psmt.setInt(4, periodeDeTravail.getMotifFinContrat()
                .getId());

            psmt.setDate(5, new java.sql.Date(periodeDeTravail
                .getDateDebut().getTime()));
           
            psmt.setDate(6, versSqlDateNullAuthoris�(periodeDeTravail.getDateFin()));
            psmt.setInt(7, periodeDeTravail.getEtat().getCdeEtat());
            psmt.executeUpdate();
          } finally {
            if (psmt != null) {
              psmt.close();
            }
          }
          Statement smt = null;
          ResultSet res = null;
          try {
            smt = connection.createStatement();
            res = smt
                .executeQuery("select idPeriodeTrav, description, tchauffeurs.idChauf, tchauffeurs.nomChauf, tcontrat.idCont, tcontrat.statutCont, tmotiffincontrat.idMotifFinCont,tmotiffincontrat.descripMotifFinCont, dateDebut, dateFin, tetat.idEtat, tetat.descripEtat from TPeriodeTravail, tcontrat, tmotiffincontrat, tchauffeurs, tetat where tperiodetravail.idChauf= tchauffeurs.idChauf and TPeriodeTravail.idCont= tcontrat.idCont and tmotiffincontrat.idMotifFinCont= tperiodetravail.idMotifFinCont and tperiodetravail.idEtat = tetat.idEtat and idPeriodeTrav = LAST_INSERT_ID()");
            if (res.next()) {
              result[0] = new PeriodeDeTravail(res.getInt(1));
              result[0].setDescriptionPeriodeTravail(res
                  .getString(2));

              Chauffeur chauffeur = new Chauffeur(res.getInt(3));
              chauffeur.setNom(res.getString(4));
              result[0].setChauffeur(chauffeur);

              Contrat contrat = new Contrat(res.getInt(5));
              contrat.setStatut(res.getString(6));
              result[0].setContrat(contrat);

              MotifFinContrat motifFinContrat = new MotifFinContrat(
                  res.getInt(7));
              motifFinContrat.setLibelle(res.getString(8));
              result[0].setMotifFinContrat(motifFinContrat);

              result[0].setDateDebut(res.getDate(9));
              result[0].setDateFin(res.getDate(10));

              Etat etat = new Etat(res.getInt(11));
              etat.setDescrip(res.getString(12));
              result[0].setEtat(etat);
            }
          } finally {
            try {
              if (res != null) {
                res.close();
              }
            } finally {
              if (smt != null) {
                smt.close();
              }
            }
          }
        } catch (SQLException e) {
          throw new RuntimeException(e);
        }
      }

    });
    return result[0];
  }

  private java.sql.Date versSqlDateNullAuthoris�(Date dateSource) {
    final java.sql.Date sqlDate;
    if (dateSource != null) {
      sqlDate = new java.sql.Date(dateSource.getTime());
    } else {
      sqlDate = null;
    }
    return sqlDate;
  }

  public PeriodeDeTravail update(final PeriodeDeTravail periodeDeTravail) {
    // �tablit la connexion avec la base de donn�es et la synchronise
    AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
      public void runWithconnection(Connection connection) {
        try {
          PreparedStatement smt = null;
          try {
            smt = connection
                .prepareStatement(UPDATE_PERIODE_TRAVAIL);
            smt.setString(1, periodeDeTravail
                .getDescriptionPeriodeTravail());
            smt.setInt(2, periodeDeTravail.getChauffeur().getId());
            smt.setInt(3, periodeDeTravail.getContrat().getId());
            smt.setInt(4, periodeDeTravail.getMotifFinContrat()
                .getId());

            smt.setDate(5, new java.sql.Date(periodeDeTravail
                .getDateDebut().getTime()));
           
            smt.setDate(6, versSqlDateNullAuthoris�(periodeDeTravail.getDateFin()));
            smt.setInt(7, periodeDeTravail.getEtat().getCdeEtat());

            smt.setInt(8, periodeDeTravail.getId());
            smt.executeUpdate();
          } finally {
            if (smt != null) {
              smt.close();
            }
          }
        } catch (SQLException e) {
           throw new RuntimeException(e);
         
        }
      }
    });
    return periodeDeTravail;
  }

  public PeriodeDeTravail findByCode(final String codePeriode) {
    // �tablit la connexion avec la base de donn�es et la synchronise
    final PeriodeDeTravail[] result = new PeriodeDeTravail[1];
    AccessMySql.withConnection(new AccessMySql.RunnableWithConnection() {
      public void runWithconnection(Connection connection) {
        try {
          PreparedStatement smt = null;
          ResultSet res = null;
          try {
            smt = connection
                .prepareStatement(GET_PERIODE_TRAVAIL_BY_CODE);
            smt.setString(1, codePeriode);
            res = smt.executeQuery();
            if (res.next()) {
              result[0] = new PeriodeDeTravail(res.getInt(2));
            }
          } finally {
            try {
              if (res != null) {
                res.close();
              }
            } finally {
              if (smt != null) {
                smt.close();
              }
            }
          }
        } catch (SQLException e) {
          throw new RuntimeException(e);
        }
      }
    });
    return result[0];
  }

}
TOP

Related Classes of dao.implementation.mysql.chauffeur.MySqlPeriodeDeTravailDao

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.