/** * 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; }