getRequete ().setAttribute (CConstante.PAR_TACHE, mTacheImprevue) ;
getRequete ().setAttribute (CConstante.PAR_TACHE_IMPREVUE, mTacheImprevue) ;
    public String traiter () throws ServletException    {        java.util.ResourceBundle messages;      messages = java.util.ResourceBundle.getBundle("MessagesBundle");      String lMessage = "" ;      try      {        Date dateFinChrono = new Date () ;        // dclaration d'un calendrier        GregorianCalendar calendrierFinChrono = new GregorianCalendar();        // initialise le calendrier  la valeur calendrierFinChrono        calendrierFinChrono.setTime(dateFinChrono);                getRequete ().setAttribute(CConstante.PAR_TYPE_TACHE, lTypeTache) ;                if (lTypeTache.equals("tache"))        {	      switch(idBoutonClique){	        	        // cas ou on appuie sur le bouton commencer	        case 1 : 	          // si la tache tait dans l'tat non dmarr  	          if (mTache.getEtat() == 0) 	          {	              lMessage = messages.getString("cEtatTache")+" \""+mTache.getNom()+"\" "+messages.getString("cEtatTacheDemarree");	              // on met l etat de la tache  'commenc' et on retient la date de dbut	              // on met la date de fin restime (i.e relle)  la date de fin prvue	              // on retient la date courante	              mTache.setEtat(1) ; 	              mTache.setDateDebutReelle(new Date()) ; 	              	              //si la date de dbut relle est diffrente de celle prvue ; on modifie la date de fin restime	              if(mTache.getDateDebutPrevue() != mTache.getDateDebutReelle())	              {	                long ecartDate = mTache.getDateFinPrevue().getTime() + mTache.getDateDebutReelle().getTime() - mTache.getDateDebutPrevue().getTime();		                mTache.setDateFinReelle(new Date(ecartDate)) ; 	              }	              else	              {	                mTache.setDateFinReelle(mTache.getDateFinPrevue()) ;	              }	              	              mTache.setDateDebutChrono(new Date().getTime()) ;	              // Le collaborateur a maintenant une tche en cours	              mCollaborateur.setTacheEnCours(mTache.getId()) ;	          }   	          // si la tache tait dans l'tat suspendu	          if (mTache.getEtat() == 2) 	          {	            lMessage = messages.getString("cEtatTache")+" \""+mTache.getNom()+"\" "+messages.getString("cEtatTacheRedemarree");	            // on met l etat de la tache  'commenc' et on retient la date de dbut	            mTache.setEtat(1) ; 	            mTache.setDateDebutChrono(new Date().getTime()) ;	            // Le collaborateur a maintenant une tche en cours	            mCollaborateur.setTacheEnCours(mTache.getId()) ;	          } 	          // Transmet les donnes  la JSP d'affichage.	          getRequete ().setAttribute (CConstante.PAR_MESSAGE, lMessage) ;	          return "ListeTacheVisu" ;	              	        // cas ou on appuie sur le bouton suspendre 	         case 2 : 	          // on met l etat de la tache  'suspendu'	          mTache.setListe("etat", new Integer(2)) ;	          // calcul du temps pass	          	          // temps pass = date de fin du chrono - date de dbut du chrono	          long difftps = calendrierFinChrono.getTime().getTime() - mTache.getDateDebutChrono();	          // conversion du temps en minutes	          int tps = (int)(difftps/(60*1000.0));	          int tempsPasse = (int)mTache.getTempsPasse() + tps ;	          mTache.setListe("tempsPasse", new Integer(tempsPasse)) ;	          	          // calcul du reste  passer = Reste  passer - temps pass	          double rps = mTache.getResteAPasser() - tps ;	          // le reste  passer ne peut pas tre ngatif	          if ( rps < 0 ) rps = 0 ;	          mTache.setListe("resteAPasser", new Double(rps)) ;	          mTache.setListe("dateFinReelle", mTache.getDateFinReelle()) ;	          	          // Transmet les donnes  la JSP d'affichage.	          getRequete ().setAttribute (CConstante.PAR_TACHE, mTache) ;	          return "..\\JSP\\Tache\\TValidationRapport.jsp?pIdBoutonClique="+idBoutonClique ;	          // cas ou on appuie sur le bouton terminer	        case 3 :  	          // on met l etat de la tache  'termin'	          mTache.setListe("etat", new Integer(3)) ;	          	          // on met le reste  passer  0 et la date de fin restime  la date courante	          mTache.setListe("resteAPasser", new Double(0)) ;	          mTache.setListe("dateFinReelle", new Date()) ;	          	          // calcul du temps pass	          	          // temps pass = date de fin du chrono - date de dbut du chrono	          long difftps2 = calendrierFinChrono.getTime().getTime() - mTache.getDateDebutChrono();	          // conversion du temps en minutes	          int tps2 = (int)(difftps2/(60*1000.0));	          tempsPasse = (int)mTache.getTempsPasse() + tps2 ;	          mTache.setListe("tempsPasse", new Integer(tempsPasse)) ;	          	          // Transmet les donnes  la JSP d'affichage.	          getRequete ().setAttribute (CConstante.PAR_TACHE, mTache) ;	          return "..\\JSP\\Tache\\TValidationRapport.jsp?pIdBoutonClique="+idBoutonClique ;	          	        default : 	          // Transmet les donnes  la JSP d'affichage.	          return "ListeTacheVisu" ;	      }        }        else        {	      switch(idBoutonClique){	        	        // cas ou on appuie sur le bouton commencer	        case 1 : 	          // si la tache tait dans l'tat non dmarr  	          if (mTacheImprevue.getEtat() == 0) 	          {	              lMessage = messages.getString("cEtatTacheImprevue")+" \""+mTacheImprevue.getNom()+"\" "+messages.getString("cEtatTacheDemarree");	              // on met l etat de la tache  'commenc' et on retient la date de dbut	              // on met la date de fin restime (i.e relle)  la date de fin prvue	              // on retient la date courante	              mTacheImprevue.setEtat(1) ; 	              mTacheImprevue.setDateDebutReelle(new Date()) ; 	              	              //si la date de dbut relle est diffrente de celle prvue ; on modifie la date de fin restime	              if(mTacheImprevue.getDateDebutPrevue() != mTacheImprevue.getDateDebutReelle())	              {	                long ecartDate = mTacheImprevue.getDateFinPrevue().getTime() + mTacheImprevue.getDateDebutReelle().getTime() - mTacheImprevue.getDateDebutPrevue().getTime();		                mTacheImprevue.setDateFinReelle(new Date(ecartDate)) ; 	              }	              else	              {	                mTacheImprevue.setDateFinReelle(mTacheImprevue.getDateFinPrevue()) ;	              }	              	              mTacheImprevue.setDateDebutChrono(new Date().getTime()) ;	              // Le collaborateur a maintenant une tche imprvue en cours	              mCollaborateur.setTacheEnCours(mTacheImprevue.getId()) ;	          }   	          // si la tache tait dans l'tat suspendu	          if (mTacheImprevue.getEtat() == 2) 	          {	            lMessage = messages.getString("cEtatTacheImprevue")+" \""+mTacheImprevue.getNom()+"\" "+messages.getString("cEtatTacheRedemarree");	            // on met l etat de la tache  'commenc' et on retient la date de dbut	            mTacheImprevue.setEtat(1) ; 	            mTacheImprevue.setDateDebutChrono(new Date().getTime()) ;	            // Le collaborateur a maintenant une tche imprvue en cours	            mCollaborateur.setTacheEnCours(mTacheImprevue.getId()) ;	          } 	          // Transmet les donnes  la JSP d'affichage.	          getRequete ().setAttribute (CConstante.PAR_MESSAGE, lMessage) ;	          return "ListeTacheVisu" ;	              	        // cas ou on appuie sur le bouton suspendre 	         case 2 : 	          // on met l etat de la tache  'suspendu'	          mTacheImprevue.setListe("etat", new Integer(2)) ;	          // calcul du temps pass	          	          // temps pass = date de fin du chrono - date de dbut du chrono	          long difftps = calendrierFinChrono.getTime().getTime() - mTacheImprevue.getDateDebutChrono();	          // conversion du temps en minutes	          int tps = (int)(difftps/(60*1000.0));	          int tempsPasse = (int)mTacheImprevue.getTempsPasse() + tps ;	          mTacheImprevue.setListe("tempsPasse", new Integer(tempsPasse)) ;	          	          // calcul du reste  passer = Reste  passer - temps pass	          double rps = mTacheImprevue.getResteAPasser() - tps ;	          // le reste  passer ne peut pas tre ngatif	          if ( rps < 0 ) rps = 0 ;	          mTacheImprevue.setListe("resteAPasser", new Double(rps)) ;	          mTacheImprevue.setListe("dateFinReelle", mTacheImprevue.getDateFinReelle()) ;	          	          // Transmet les donnes  la JSP d'affichage.	          getRequete ().setAttribute (CConstante.PAR_TACHE, mTacheImprevue) ;	          return "..\\JSP\\Tache\\TValidationRapport.jsp?pIdBoutonClique="+idBoutonClique ;	          // cas ou on appuie sur le bouton terminer	        case 3 :  	          // on met l etat de la tache  'termin'	          mTacheImprevue.setListe("etat", new Integer(3)) ;	          	          // on met le reste  passer  0 et la date de fin restime  la date courante	          mTacheImprevue.setListe("resteAPasser", new Double(0)) ;	          mTacheImprevue.setListe("dateFinReelle", new Date()) ;	          	          // calcul du temps pass	          	          // temps pass = date de fin du chrono - date de dbut du chrono	          long difftps2 = calendrierFinChrono.getTime().getTime() - mTacheImprevue.getDateDebutChrono();	          // conversion du temps en minutes	          int tps2 = (int)(difftps2/(60*1000.0));	          tempsPasse = (int)mTacheImprevue.getTempsPasse() + tps2 ;	          mTacheImprevue.setListe("tempsPasse", new Integer(tempsPasse)) ;	          	          // Transmet les donnes  la JSP d'affichage.	          getRequete ().setAttribute (CConstante.PAR_TACHE, mTacheImprevue) ;	          return "..\\JSP\\Tache\\TValidationRapport.jsp?pIdBoutonClique="+idBoutonClique ;	          	        default : 	          // Transmet les donnes  la JSP d'affichage.	          return "ListeTacheVisu" ;	      }        }      }      catch (Exception eException)      {        eException.printStackTrace () ;        throw new ServletException (CConstante.EXC_TRAITEMENT) ;      }      // Ferme la connexion  la base de donnes.      finally      {        try        {          getBaseDonnees ().commit () ;          getBaseDonnees ().close () ;        }        catch (PersistenceException eException)        {          eException.printStackTrace () ;          throw new ServletException (CConstante.EXC_DECONNEXION) ;        }      }    }