/** * change le statut de lecture d'un message * * @param p_message l'id du message concerné * @param p_isLu true si le message est lu, false si le message est non lu * @return true si ca a reussi */ private boolean updateStatusLecture(MlMessageGrille p_message, boolean p_isLu) { String script; if (p_isLu) { if (p_message.isLu()) { return true; // pas besoin de le refaire } script = "UPDATE " + EnTable.MAIL_RECU.getNomTable() + " SET STATUT='T' WHERE " + EnStructMailRecu.ID_MESSAGE.getNomChamp() + "=" + p_message.getIdMessage(); } else { if (!p_message.isLu()) { return true; // pas besoin de le refaire } script = "UPDATE " + EnTable.MAIL_RECU.getNomTable() + " SET STATUT='F' WHERE " + EnStructMailRecu.ID_MESSAGE.getNomChamp() + "=" + p_message.getIdMessage(); } return requeteFact.executeRequete(script); }
/** * Deplace une liste de message vers la corbeille * * @param p_list * @return */ public boolean deplaceMessageVersCorbeille(MlListeMessageGrille p_list) { MlCompteMail cpt = null; if (p_list != null && p_list.size() > 0) { cpt = new MlCompteMail(p_list.get(0).getIdCompte()); } for (MlMessageGrille m : p_list) { String requete = "UPDATE " + EnTable.MAIL_RECU.getNomTable() + " SET " + EnStructMailRecu.ID_DOSSIER.getNomChamp() + "=" + cpt.getIdCorbeille() + " WHERE " + EnStructMailRecu.ID_MESSAGE.getNomChamp() + "=" + m.getIdMessage(); boolean succes = requeteFact.executeRequete(requete); if (!succes) { return false; } } return true; // si tout s'est bien passé ou si la liste etait vide }
public List<ArrayList<String>> getMessageGrilleById(int p_idMessage) { String script = "SELECT " // + EnStructMailRecu.EXPEDITEUR.getNomChamp() + ", " + // EnStructMailRecu.SUJET.getNomChamp() + ", " + // EnStructMailRecu.DATE_RECEPTION.getNomChamp() + ", " + // EnStructMailRecu.STATUT.getNomChamp() + ", " + // EnStructMailRecu.UID.getNomChamp() + ", " + // EnStructMailRecu.ID_COMPTE.getNomChamp() + ", " + // EnStructMailRecu.ID_DOSSIER.getNomChamp() // + " FROM " + EnTable.MAIL_RECU.getNomTable() + // " WHERE " // + EnStructMailRecu.ID_MESSAGE.getNomChamp() + "=" + p_idMessage; List<ArrayList<String>> lstResultat = requeteFact.getListeDenregistrement(script); return lstResultat; }
/** * Effacer un message (et ses pieces jointes si il y en a) a partir de son ID * * @param p_idMessage * @return */ public boolean deleteMessageRecu(int p_idMessage) { // on commence par effacer les piece jointe associées au message. AccesTablePieceJointe accesPJ = new AccesTablePieceJointe(); List<String> lstPieceJointe = accesPJ.getListeIdPieceJointe(p_idMessage); for (String pieceJointe : lstPieceJointe) { String requete = "DELETE FROM " + EnTable.PIECE_JOINTE.getNomTable() + " WHERE " + EnStructPieceJointe.ID.getNomChamp() + "='" + pieceJointe + "'"; requeteFact.executeRequete(requete); } // on peut ensuite supprimer les messages String requetteMessage = "DELETE FROM " + EnTable.MAIL_RECU.getNomTable() + " WHERE " + EnStructMailRecu.ID_MESSAGE.getNomChamp() + "=" + p_idMessage; return requeteFact.executeRequete(requetteMessage); }
/** * Obtenir le sujet d'un message a partir de son ID * * @param p_idMessage * @return */ public String getSujetFromId(int p_idMessage) { String requette = "SELECT " + EnStructMailRecu.SUJET.getNomChamp() + " FROM " + EnTable.MAIL_RECU.getNomTable() + " WHERE " + EnStructMailRecu.ID_MESSAGE.getNomChamp() + "=" + p_idMessage; return requeteFact.get1Champ(requette); }
/** * Obtenir le contenu d'un message a partir de son ID et le stocke dans un String * * @param p_idMessage * @return */ public String getContenuFromIdForString(int p_idMessage) { String requette = "SELECT " + EnStructMailRecu.CONTENU.getNomChamp() + " FROM " + EnTable.MAIL_RECU.getNomTable() + " WHERE " + EnStructMailRecu.ID_MESSAGE.getNomChamp() + "=" + p_idMessage; return requeteFact.get1Champ(requette); }
public MlListeMessageGrille getListeMessageGrille(int p_idCompte, int p_idDossierChoisi) { MlListeMessageGrille lstMessage = new MlListeMessageGrille(); String script = "SELECT " // + EnStructMailRecu.EXPEDITEUR.getNomChamp() + ", " + EnStructMailRecu.SUJET.getNomChamp() + ", " + EnStructMailRecu.DATE_RECEPTION.getNomChamp() + ", " + EnStructMailRecu.STATUT.getNomChamp() + ", " + EnStructMailRecu.UID.getNomChamp() + ", " + EnStructMailRecu.ID_MESSAGE.getNomChamp() + " FROM " + EnTable.MAIL_RECU.getNomTable() // + " WHERE " // + EnStructMailRecu.ID_DOSSIER.getNomChamp() + "=" + p_idDossierChoisi // + " AND " // + EnStructMailRecu.ID_COMPTE.getNomChamp() + "=" + p_idCompte // + " ORDER BY " + EnStructMailRecu.DATE_RECEPTION.getNomChamp() + " DESC"; List<ArrayList<String>> lstResultat = requeteFact.getListeDenregistrement(script); for (int i = 0; i < lstResultat.size(); i++) { ArrayList<String> aRecord = lstResultat.get(i); MlMessageGrille m = new MlMessageGrille(); m.setExpediteur(decodeHTMLFromBase(aRecord.get(0))); m.setSujet(decodeHTMLFromBase(aRecord.get(1))); m.setDateReception(RecupDate.getdateFromTimeStamp((aRecord.get(2)))); m.setLu(statutLecture.T.name().equals(aRecord.get(3))); m.setUidMessage(aRecord.get(4)); m.setIdCompte(p_idCompte); m.setIdDossier(p_idDossierChoisi); m.setIdMessage(Integer.parseInt(aRecord.get(5))); m.setHavePieceJointe(messageHavePieceJointe(m.getIdMessage())); lstMessage.add(m); } return lstMessage; }
/** * Met a jour l'UID d'un message (lors du deplacement d'un message d'un dossier vers un autre * (Serveur IMAP par exemple) * * @param p_mlMessageGrille * @return */ public boolean updateUIDMessage(MlMessageGrille p_mlMessageGrille) { String requete = "UPDATE " + EnTable.MAIL_RECU.getNomTable() + " SET " + EnStructMailRecu.UID.getNomChamp() + "='" + p_mlMessageGrille.getUidMessage() + "' WHERE " + EnStructMailRecu.ID_MESSAGE.getNomChamp() + "=" + p_mlMessageGrille.getIdMessage(); return requeteFact.executeRequete(requete); }
/** * Savoir si un message est lu a partr de son ID * * @param p_idMessageRecu * @return */ public boolean isMessageLu(int p_idMessageRecu) { String script = "SELECT " + EnStructMailRecu.STATUT.getNomChamp() + " FROM " + EnTable.MAIL_RECU.getNomTable() + " where " + EnStructMailRecu.ID_MESSAGE.getNomChamp() + "=" + p_idMessageRecu; if ("T".equals(requeteFact.get1Champ(script))) { return true; } return false; }
/** * Obtenir le nombre de message dans un dossier * * @param p_idCompte * @param p_idDossier * @return */ public int getnbMessageParDossier(int p_idCompte, int p_idDossier) { String requette = "select count (" + EnStructMailRecu.UID.getNomChamp() + ") FROM " + EnTable.MAIL_RECU.getNomTable() + " where " + EnStructMailRecu.ID_COMPTE.getNomChamp() + "=" + p_idCompte + " and " + EnStructMailRecu.ID_DOSSIER.getNomChamp() + "=" + p_idDossier; return Integer.parseInt(requeteFact.get1Champ(requette)); }
/** * savoir si l'uid est connu de la base * * @param uid - l'UID du message que l'on est en train de relever * @param p_idDossier - l'id du dossier dans lequel on fait la recherche * @return true si le message n'est pas present, false si le message est deja en base */ public boolean isMessageUIDAbsent(String uid, int p_idDossier) { if (null == uid) { return true; // le message N'EST PAS EN BASE } String requete = "SELECT count (*) from " + EnTable.MAIL_RECU.getNomTable() + " where " + EnStructMailRecu.UID.getNomChamp() + "='" + uid.trim() + "' and " + EnStructMailRecu.ID_DOSSIER.getNomChamp() + "=" + p_idDossier; return ("0".equals(requeteFact.get1Champ(requete))); }
/** * Obtenir le contenu d'un message a partir de son id et le stocke dans un File * * @param p_idMessage * @param p_pleinecran * @return le contenu sous forme de File */ public File getContenuFromIdForFile(int p_idMessage, boolean p_pleinecran) { String requette = "SELECT " + EnStructMailRecu.CONTENU.getNomChamp() + " FROM " + EnTable.MAIL_RECU.getNomTable() + " WHERE " + EnStructMailRecu.ID_MESSAGE.getNomChamp() + "=" + p_idMessage; File contenuHTML; if (p_pleinecran) { contenuHTML = new File(GestionRepertoire.RecupRepTravail() + "/tempo/contenu_p.html"); } else { contenuHTML = new File(GestionRepertoire.RecupRepTravail() + "/tempo/contenu.html"); } if (contenuHTML.exists()) { contenuHTML.delete(); } contenuHTML.deleteOnExit(); return requeteFact.writeBlobToFile(requette, contenuHTML); }
/** * Enregistre un message dans la base * * @param m */ public void createNewMessage(MlMessage m) { int idCompte = m.getIdCompte(); int idDossierStockage = m.getIdDossier(); String uidMessage = m.getUIDMessage(); String expediteur = encodeHTMLforBase(m.getExpediteur()); List<String> listeDestinataire = m.getDestinataire(); List<String> listCopy = m.getDestinataireCopy(); List<String> listCachee = m.getDestinataireCache(); File fileToBlobDestinataires = createBlobFileFromlist(listeDestinataire, "destinataire"); File fileToBlobDestCopy = createBlobFileFromlist(listCopy, "dest_copy"); File fileToBlobDestHide = createBlobFileFromlist(listCachee, "hide_dest"); String sujet = encodeHTMLforBase(m.getSujet()); String contenu = m.getContenu(); File fileToBlobContenu = createFileForBlob(contenu, "contenu"); String dateReception = RecupDate.getTimeStamp(m.getDateReception()); int tailleStringBuilder = uidMessage.length() + expediteur.length() /* + destinataires.length() */ + sujet.length() + 500; // on construit la requette StringBuilder requette = new StringBuilder(tailleStringBuilder); requette.ensureCapacity(tailleStringBuilder); requette.append("INSERT INTO " + EnTable.MAIL_RECU.getNomTable()); // requette.append("("); // requette.append(EnStructMailRecu.ID_COMPTE.getNomChamp() + ","); // requette.append(EnStructMailRecu.ID_DOSSIER.getNomChamp() + ","); // requette.append(EnStructMailRecu.UID.getNomChamp() + ","); // requette.append(EnStructMailRecu.EXPEDITEUR.getNomChamp() + ","); // requette.append(EnStructMailRecu.DEST.getNomChamp() + ","); // requette.append(EnStructMailRecu.DEST_COPY.getNomChamp() + ","); // requette.append(EnStructMailRecu.DEST_CACHE.getNomChamp() + ","); // requette.append(EnStructMailRecu.SUJET.getNomChamp() + ","); // requette.append(EnStructMailRecu.CONTENU.getNomChamp() + ","); // requette.append(EnStructMailRecu.DATE_RECEPTION.getNomChamp() + ","); // requette.append(EnStructMailRecu.STATUT.getNomChamp() + ")"); // requette.append("VALUES ("); // requette.append(idCompte + ","); // requette.append(idDossierStockage + ",'"); // requette.append(uidMessage + "','"); // requette.append(expediteur + "',"); // requette.append("?,"); // lstDest requette.append("?,"); // lstDestCC requette.append("?,'"); // lstDestBCC requette.append(sujet + "',"); requette.append("?,'"); // c'est pour le contenu qui sera stocké dans un // blob requette.append(dateReception + "',"); // if (m.isLu()) { requette.append("'T')"); } else { requette.append("'F')"); } // le status de lecture du message (F= nonlu,T=lu) // on l'execute boolean succes = requeteFact.executeRequeteWithBlob( requette.toString(), fileToBlobContenu, fileToBlobDestinataires, fileToBlobDestCopy, fileToBlobDestHide); if (succes) { // on recupere le nouvel id du message que l'on vient d'enregistrer String getMaxId = "SELECT max (" + EnStructMailRecu.ID_MESSAGE.getNomChamp() + ") FROM " + EnTable.MAIL_RECU.getNomTable(); String maxId = requeteFact.get1Champ(getMaxId); // ("l'id de message que l'on vient d'enregistrer est: " // + maxId); // lst.add(); // updateStatusLecture(lst, false); JTreeFactory treeFact = new JTreeFactory(); MlListeMessageGrille lst = new MlListeMessageGrille(); lst.add(new MlMessageGrille(Integer.parseInt(maxId))); treeFact.majUnreadCount(lst); verifEtSuppressionBlob(new File(m.getCheminPhysique())); verifEtSuppressionBlob(fileToBlobContenu); verifEtSuppressionBlob(fileToBlobDestinataires); verifEtSuppressionBlob(fileToBlobDestCopy); verifEtSuppressionBlob(fileToBlobDestHide); // on insere le contenu en base // si des pieces jointe sont presente, on enregistre leur chemin en // base avec l'id du message for (File f1 : m.getListePieceJointe()) { if (requeteFact.enregistrePieceJointe(maxId, f1)) { f1.delete(); } } } }
/** * Obtenir une liste des messages contenu dans un {@link MlDossier} * * @param p_idCompte * @param p_idDossierChoisi * @return la lsite des messages */ public MlListeMessage getListeDeMessage(int p_idCompte, int p_idDossierChoisi) { AccesTablePieceJointe accesPJ = new AccesTablePieceJointe(); MlListeMessage lstMessage = new MlListeMessage(); String requette = "SELECT " // + EnStructMailRecu.ID_MESSAGE.getNomChamp() + ", " // idx0 + EnStructMailRecu.UID.getNomChamp() + ", " // idx1 + EnStructMailRecu.EXPEDITEUR.getNomChamp() + ", " // idx2 + EnStructMailRecu.DEST.getNomChamp() + ", " + EnStructMailRecu.DEST_COPY.getNomChamp() + ", " + EnStructMailRecu.DEST_CACHE.getNomChamp() + ", " // idx // 3,4,5 + EnStructMailRecu.SUJET.getNomChamp() + ", " // idx6 // + EnStructMailRecu.CONTENU.getNomChamp() // + ", " // idx7 + EnStructMailRecu.DATE_RECEPTION.getNomChamp() // idx8 + ", " + EnStructMailRecu.STATUT.getNomChamp() + " FROM " + EnTable.MAIL_RECU.getNomTable() // + " where " + EnStructMailRecu.ID_COMPTE.getNomChamp() + "=" + p_idCompte + " and " + EnStructMailRecu.ID_DOSSIER.getNomChamp() + "=" + p_idDossierChoisi + " ORDER BY " + EnStructMailRecu.DATE_RECEPTION.getNomChamp() + " DESC"; List<ArrayList<String>> lstResultat = requeteFact.getListeDenregistrement(requette); for (int i = 0; i < lstResultat.size(); i++) { ArrayList<String> unEnregistrement = lstResultat.get(i); MlMessage m = new MlMessage(); m.setIdMessage(Integer.parseInt(unEnregistrement.get(0))); m.setUIDMessage(unEnregistrement.get(1)); m.setExpediteur(decodeHTMLFromBase(unEnregistrement.get(2))); if (unEnregistrement.get(3) != null) { // DESTINATAIRE String[] tabDestinaire = unEnregistrement.get(3).split(";"); ArrayList<String> lstDest = new ArrayList<String>(); for (String des : tabDestinaire) { lstDest.add(des); } m.setDestinataire(lstDest); } if (unEnregistrement.get(4) != null) { // DESTINATAIRE COPY String[] tabDestinaire = unEnregistrement.get(4).split(";"); ArrayList<String> lstDest = new ArrayList<String>(); for (String des : tabDestinaire) { lstDest.add(des); } m.setDestinataireCopy(lstDest); } if (unEnregistrement.get(5) != null) { // DESTINATAIRE CACHE String[] tabDestinaire = unEnregistrement.get(5).split(";"); ArrayList<String> lstDest = new ArrayList<String>(); for (String des : tabDestinaire) { lstDest.add(des); } m.setDestinataireCache(lstDest); } m.setSujet(decodeHTMLFromBase(unEnregistrement.get(6))); // m.setContenu(unEnregistrement.get(7)); m.setDateReception(RecupDate.getdateFromTimeStamp((unEnregistrement.get(7)))); m.setLu((unEnregistrement.get(8).equals("T"))); m.setIdDossier(p_idDossierChoisi); m.setIdCompte(p_idCompte); m.setHavePieceJointe(accesPJ.getListeIdPieceJointe(m.getIdMessage()).size() > 0); lstMessage.add(m); } return lstMessage; // return null; }