import java.sql.ResultSet; import java.sql.SQLException; import java.util.Vector; import com.mysql.jdbc.PreparedStatement; import com.mysql.jdbc.Statement; public class MassMailing extends Thread{ private static final long serialVersionUID = 1L; Base base; Statement st; private String mag; private String delai_mass; private PreparedStatement pStat; private int delai_rel_mass; private ResultSet rs = null; public MassMailing(){ // CONNECTION BASE // try { base = new Base(); pStat = (PreparedStatement) base.getPStat1("SELECT valpar from par where nompar = ?"); pStat.setString(1, "delai_mass"); rs = pStat.executeQuery(); if(rs.next()){ this.delai_mass = rs.getString("valpar"); System.out.println("delai_mass = "+delai_mass); } pStat.setString(1, "delai_rel_mass"); rs = pStat.executeQuery(); if(rs.next()){ this.delai_rel_mass = Integer.parseInt(rs.getString("valpar")); System.out.println("delai_rel_mass = "+delai_rel_mass); } st = (Statement) base.getStat(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void mailBox(){ try { Vector pers = null; ResultSet res2; /* String auto = "SELECT valpar FROM par where nompar = 'dst'"; isit = (ResultSet) st.executeQuery(auto); if(isit.next()){ if(isit.getInt("valpar") == 1){ */ // this.mag = "SELECT maimsg, refmag, datmag, msgmag, altmag, parmsg, expmag FROM mag where (expmag = 'O' OR expmag = 'E') AND (datmag + INTERVAL 1 DAY ) > CURDATE() ORDER BY datmag DESC"; // System.out.println("chui la dan le all"); //}else{ this.mag = "Select DISTINCT maimsg from mag where (expmag = 'P' or expmag = 'R') and datmag > SUBDATE(NOW(), INTERVAL "+delai_mass+" MINUTE) ORDER BY datmag asc"; //this.mag = "SELECT b.maimsg, b.refmag, b.datmag, b.msgmag, b.altmag, a.objmot, b.expmag FROM mag b, mot a where b.expmag = 'P' and b.refmag = a.ficmot ORDER BY b.datmag DESC"; res2 = st.executeQuery(mag); System.out.println(mag+""+res2.getFetchSize()); pers = new Vector(); while(res2.next()){ pers.add(res2.getString("maimsg")); } res2 = null; if(pers.size() == 0){ System.out.println("Distiller : Tous les mails ont été traités !"); MassMailing.sleep(5000); //MassMailing.sleep(delai_rel_mass*60*60*1000); mailBox(); } else{ Vector> amail = new Vector>(); Vector ids = new Vector(); System.out.println("Nombre de personne "+pers.size()); // } // } ResultSet result = null; for(String personne : pers){ System.out.println("Personne "+personne); String idmag = ""; String msgmag = ""; String maimsg = ""; String objmot = ""; String query = "Select a.idmag, a.msgmag, a.maimsg, b.objmot from mag a, mot b where (a.expmag = 'P' or a.expmag = 'R') and a.maimsg = '"+personne+"' and a.refmag = b.ficmot and a.datmag > SUBDATE(NOW(), INTERVAL "+delai_mass+" MINUTE) ORDER BY a.datmag desc LIMIT 1"; result = st.executeQuery(query); while(result.next()){ idmag = result.getString("idmag"); msgmag = result.getString("msgmag"); maimsg = result.getString("maimsg"); objmot = result.getString("objmot"); } if((idmag != "")&&(msgmag != "")&&(maimsg != "")&&(objmot != "")){ System.out.println(msgmag); ids.add(idmag); Vector pub = new Vector(); pub.add(maimsg); pub.add(msgmag); pub.add(objmot); amail.add(pub); pub = null; new SendMail_Dist(amail); } } for(String id : ids){ System.out.println("Update mails sent"); st.executeUpdate("UPDATE mag set expmag = 'E' where idmag = '"+id+"'"); } MassMailing.sleep(delai_rel_mass*60*60*1000); mailBox(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void run(){ mailBox(); } /* i go hard biatch, i can do that public static String nextDate(String sDate, int jours) throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = sdf.parse(sDate); GregorianCalendar calendar = new java.util.GregorianCalendar(); // Initialis� � la date et l'heure courrante. calendar.setTime(date); calendar.add(Calendar.DATE, jours); return sdf.format(date); } /* public Date getNext(long dureeSeconde){ Date date = new Date(); this.setTimeInMillis(date.getTime()); long current=this.getTime().getTime(); Date prochaine=new Date(current+dureeSeconde*1000); this.setTime(prochaine); } */ /* public static void main(String [] args){ MassMailing mm = new MassMailing(); mm.mailBox(); } */ }