This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit 02b2fda1bf84ba5194f5dabd37dca6af0d769036 Author: jcouteau <couteau@codelutin.com> Date: Tue Oct 30 17:44:13 2018 +0100 Use try-with-ressources on all closeables (partial fix) --- .../services/service/EmailServiceImpl.java | 133 +++++++++--------- .../services/service/InitFaxToMailServiceImpl.java | 38 ++--- .../faxtomail/ui/swing/RunFaxToMail.java | 17 +-- .../swing/actions/PrintOnDefaultPrinterAction.java | 103 +++++++------- .../ui/swing/actions/ShowDemandeAction.java | 52 +++---- .../ui/swing/actions/ShowRechercheAction.java | 11 +- .../content/attachment/AttachmentCellEditor.java | 49 ++++--- .../attachment/actions/EditAttachmentAction.java | 7 +- .../content/demande/DemandeListTableFilter.java | 155 +++++++++++---------- .../content/demande/DemandeListUIHandler.java | 18 ++- .../ui/swing/content/demande/DemandeUIHandler.java | 58 ++++---- .../swing/content/demande/DemandesUIHandler.java | 9 +- .../actions/ComputeQuantitiesByRangeAction.java | 150 ++++++++++---------- .../demande/actions/LoadFolderEmailsAction.java | 69 ++++----- .../demande/actions/OpenForwardFormAction.java | 29 ++-- .../demande/actions/OpenReplyFormAction.java | 39 +++--- .../demande/actions/OpenTakenByFormAction.java | 11 +- .../actions/SaveAndOpenForwardFormAction.java | 5 +- .../actions/SaveAndOpenReplyFormAction.java | 5 +- .../actions/SaveAndOpenSearchToGroupAction.java | 7 +- .../content/demande/actions/SaveDemandeAction.java | 132 ++++++++---------- .../demande/actions/SaveDemandeFromListAction.java | 19 +-- .../actions/OpenGroupedDemandAction.java | 34 ++--- .../demande/replies/actions/OpenReplyAction.java | 65 ++++----- .../demande/takenby/actions/TakenByAction.java | 29 ++-- .../content/pdfeditor/PDFEditorUIHandler.java | 28 ++-- .../actions/GenerateAnnotatedAttachmentAction.java | 13 +- .../print/AttachmentToPrintChooserUIHandler.java | 40 +++--- .../ui/swing/content/reply/ReplyFormUIHandler.java | 9 +- .../reply/actions/AddAttachmentToReplyAction.java | 19 +-- .../swing/content/reply/actions/ReplyAction.java | 39 +++--- .../content/reply/actions/SenderChangedAction.java | 9 +- .../content/search/SearchToGroupUIHandler.java | 8 +- .../ui/swing/content/search/SearchUIHandler.java | 24 ++-- .../swing/content/search/actions/GroupAction.java | 13 +- .../swing/content/search/actions/SearchAction.java | 39 +++--- .../search/actions/SearchToGroupAction.java | 69 ++++----- .../transmit/MailFolderChooserUIHandler.java | 79 ++++++----- .../content/transmit/actions/TransmitAction.java | 5 +- .../ui/swing/util/AbstractFaxToMailUIHandler.java | 16 ++- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 80 ++++++----- .../faxtomail/web/job/MailFilterJobTest.java | 76 ++++++++++ 42 files changed, 989 insertions(+), 821 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java index 5b9c275b..dc385221 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java @@ -1444,97 +1444,94 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe EdiReturn.PROPERTY_COMMAND_NUMBER, EdiReturn.PROPERTY_ERROR, EdiReturn.class.getSimpleName()); - Statement stat = connection.createStatement(); - // execute query - ResultSet resultSet = stat.executeQuery(query); - while (resultSet.next()) { + try(Statement stat = connection.createStatement(); + ResultSet resultSet = stat.executeQuery(query)) { - String rangeRowTopiaId = resultSet.getString(EdiReturn.PROPERTY_RANGE_ROW_TOPIA_ID); - String commandNumber = resultSet.getString(EdiReturn.PROPERTY_COMMAND_NUMBER); - String error = resultSet.getString(EdiReturn.PROPERTY_ERROR); + while (resultSet.next()) { - // manage email and range row - RangeRow rangeRow = rangeRowTopiaDao.forTopiaIdEquals(rangeRowTopiaId).findUniqueOrNull(); - if (rangeRow == null) { - if (log.isErrorEnabled()) { - log.error("Can't find rangeRow " + rangeRowTopiaId + " to update"); + String rangeRowTopiaId = resultSet.getString(EdiReturn.PROPERTY_RANGE_ROW_TOPIA_ID); + String commandNumber = resultSet.getString(EdiReturn.PROPERTY_COMMAND_NUMBER); + String error = resultSet.getString(EdiReturn.PROPERTY_ERROR); + + // manage email and range row + RangeRow rangeRow = rangeRowTopiaDao.forTopiaIdEquals(rangeRowTopiaId).findUniqueOrNull(); + if (rangeRow == null) { + if (log.isErrorEnabled()) { + log.error("Can't find rangeRow " + rangeRowTopiaId + " to update"); + } + continue; } - continue; - } - Email email = emailTopiaDao.forRangeRowContains(rangeRow).findUniqueOrNull(); - if (email == null) { - if (log.isErrorEnabled()) { - log.error("Can't find email for " + rangeRowTopiaId + " to update"); + Email email = emailTopiaDao.forRangeRowContains(rangeRow).findUniqueOrNull(); + if (email == null) { + if (log.isErrorEnabled()) { + log.error("Can't find email for " + rangeRowTopiaId + " to update"); + } + continue; } - continue; - } - rangeRowTopiaIdsInEdiReturnToDelete.add(rangeRowTopiaId); + rangeRowTopiaIdsInEdiReturnToDelete.add(rangeRowTopiaId); - Set<String> modifiedFields = new HashSet<>(); + Set<String> modifiedFields = new HashSet<>(); - if (StringUtils.isNotBlank(error)) { - //error - String oldError = email.getEdiError(); - if (StringUtils.isNotBlank(oldError)) { - error = oldError + ", " + error; + if (StringUtils.isNotBlank(error)) { + //error + String oldError = email.getEdiError(); + if (StringUtils.isNotBlank(oldError)) { + error = oldError + ", " + error; + } + email.setEdiError(error); + modifiedFields.add(Email.PROPERTY_EDI_ERROR); + + } else { + rangeRow.setCommandNumber(commandNumber); + rangeRowTopiaDao.update(rangeRow); + modifiedFields.add(Email.PROPERTY_RANGE_ROW); } - email.setEdiError(error); - modifiedFields.add(Email.PROPERTY_EDI_ERROR); - } else { - rangeRow.setCommandNumber(commandNumber); - rangeRowTopiaDao.update(rangeRow); - modifiedFields.add(Email.PROPERTY_RANGE_ROW); - } + History transmission = CollectionUtils.find(email.getHistory(), new Predicate<History>() { + @Override + public boolean evaluate(History object) { + return object.getType() == HistoryType.TRANSMISSION; + } + }); - History transmission = CollectionUtils.find(email.getHistory(), new Predicate<History>() { - @Override - public boolean evaluate(History object) { - return object.getType() == HistoryType.TRANSMISSION; + if (transmission != null) { + email.setDemandStatus(DemandStatus.QUALIFIED); + + } else { + email.setDemandStatus(DemandStatus.IN_PROGRESS); } - }); + modifiedFields.add(Email.PROPERTY_DEMAND_STATUS); - if (transmission != null) { - email.setDemandStatus(DemandStatus.QUALIFIED); + History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION, + History.PROPERTY_MODIFICATION_DATE, new Date(), + History.PROPERTY_EMAIL, email, + History.PROPERTY_FIELDS_JSON, AbstractFaxToMailTopiaDao.GSON_INSTANCE.toJson(modifiedFields)); - } else { - email.setDemandStatus(DemandStatus.IN_PROGRESS); - } - modifiedFields.add(Email.PROPERTY_DEMAND_STATUS); + email.addHistory(history); - History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION, - History.PROPERTY_MODIFICATION_DATE, new Date(), - History.PROPERTY_EMAIL, email, - History.PROPERTY_FIELDS_JSON, AbstractFaxToMailTopiaDao.GSON_INSTANCE.toJson(modifiedFields)); + history = historyDao.create(History.PROPERTY_TYPE, HistoryType.EDI_RETURN, + History.PROPERTY_MODIFICATION_DATE, new Date(), + History.PROPERTY_EMAIL, email); - email.addHistory(history); + email.addHistory(history); - history = historyDao.create(History.PROPERTY_TYPE, HistoryType.EDI_RETURN, - History.PROPERTY_MODIFICATION_DATE, new Date(), - History.PROPERTY_EMAIL, email); + emailsToUpdate.add(email); - email.addHistory(history); - - emailsToUpdate.add(email); - - importedCount++; + importedCount++; + } } - //close resultSet when finished - resultSet.close(); - // delete all rows - stat = connection.createStatement(); - stat.execute("DELETE FROM " + EdiReturn.class.getSimpleName() + - " WHERE " + EdiReturn.PROPERTY_RANGE_ROW_TOPIA_ID + - " IN ('" + StringUtils.join(rangeRowTopiaIdsInEdiReturnToDelete, "','") + "')"); + try (Statement stat = connection.createStatement()){ + stat.execute("DELETE FROM " + EdiReturn.class.getSimpleName() + + " WHERE " + EdiReturn.PROPERTY_RANGE_ROW_TOPIA_ID + + " IN ('" + StringUtils.join(rangeRowTopiaIdsInEdiReturnToDelete, "','") + "')"); + + } - //close statement when finished - stat.close(); - // useful log info (do not remove) if (importedCount > 0 && log.isInfoEnabled()) { log.info(String.format("Imported %d ediReturn rows", importedCount)); diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java index 5f890588..7815e74d 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java @@ -259,43 +259,31 @@ public class InitFaxToMailServiceImpl extends FaxToMailServiceSupport implements // email accounts File demoDirectory = getApplicationConfig().getDemoDirectory(); File emailAcountFile = new File(demoDirectory, "email_accounts.csv"); - try { - InputStream emailAccountsPropertiesStream = new FileInputStream(emailAcountFile); - if (emailAccountsPropertiesStream != null) { - getReferentielService().importEmailAccounts(emailAccountsPropertiesStream); - } - + try (InputStream emailAccountsPropertiesStream = new FileInputStream(emailAcountFile)){ + getReferentielService().importEmailAccounts(emailAccountsPropertiesStream); } catch(Exception e) { log.error("error getting the email accounts", e); } // email filters File emailFilterFile = new File(demoDirectory, "email_filters.csv"); - try { - InputStream emailFiltersPropertiesStream = new FileInputStream(emailFilterFile); - if (emailFiltersPropertiesStream != null) { - getReferentielService().importEmailFilters(emailFiltersPropertiesStream, folders); - } - + try (InputStream emailFiltersPropertiesStream = new FileInputStream(emailFilterFile)){ + getReferentielService().importEmailFilters(emailFiltersPropertiesStream, folders); } catch(Exception e) { log.error("error getting the email filters", e); } // clients and emails File clientFile = new File(demoDirectory, "fx_clients.csv"); - try { - InputStream fxClientsStream = new FileInputStream(clientFile); - if (fxClientsStream != null) { - List<Client> clients = getReferentielService().importClients(fxClientsStream); - - createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, cyrilFolder, cyril); - createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, claireFolder, claire); - createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, agatheFolder, agathe); - createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, marcFolder, marc); - createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, fredericFolder, frederic); - createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, jeanneFolder, jeanne); - } - + try (InputStream fxClientsStream = new FileInputStream(clientFile)){ + List<Client> clients = getReferentielService().importClients(fxClientsStream); + + createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, cyrilFolder, cyril); + createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, claireFolder, claire); + createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, agatheFolder, agathe); + createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, marcFolder, marc); + createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, fredericFolder, frederic); + createEmails(random, historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, jeanneFolder, jeanne); } catch(Exception e) { log.error("error getting the client file", e); } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java index a2809ad7..20867118 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java @@ -83,9 +83,8 @@ public class RunFaxToMail { final SplashScreen splashScreen = new SplashScreen("/splashscreen.png", title); splashScreen.setRemanence(500); - try { - // Create application context - FaxToMailUIContext context = FaxToMailUIContext.newContext(config); + // Create application context + try (FaxToMailUIContext context = FaxToMailUIContext.newContext(config)){ // override default exception management (after config init) Thread.setDefaultUncaughtExceptionHandler(new FaxToMailExceptionHandler(context.getErrorHelper())); @@ -105,22 +104,16 @@ public class RunFaxToMail { } } - boolean reload = false; - if (config.isFullLaunchMode()) { - if (log.isInfoEnabled()) { log.info("Full launch mode, try to update."); } - } - if (!reload) { - if (log.isInfoEnabled()) { - log.info("Will start FaxToMail..."); - } - startFaxToMail(context, true); + if (log.isInfoEnabled()) { + log.info("Will start FaxToMail..."); } + startFaxToMail(context, true); } finally { SwingUtilities.invokeLater(new Runnable() { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/PrintOnDefaultPrinterAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/PrintOnDefaultPrinterAction.java index 54e3ce86..95eb7868 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/PrintOnDefaultPrinterAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/PrintOnDefaultPrinterAction.java @@ -96,71 +96,72 @@ public class PrintOnDefaultPrinterAction extends AbstractFaxToMailAction { } }); - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - EmailService emailService = serviceContext.getEmailService(); + try (FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + EmailService emailService = serviceContext.getEmailService(); - List<File> filesToPrint = Lists.newArrayList(); + List<File> filesToPrint = Lists.newArrayList(); - for (DemandeUIModel demandeUIModel : orderedDemands) { + for (DemandeUIModel demandeUIModel : orderedDemands) { - if(!handler.isActionEnabled(demandeUIModel, MailAction.PRINT)) { - notPrintableDemands.add(demandeUIModel); + if (!handler.isActionEnabled(demandeUIModel, MailAction.PRINT)) { + notPrintableDemands.add(demandeUIModel); - } else { - if (take && (demandeUIModel.getTakenBy() == null || !takeOnlyIfNotTaken)) { - demandeUIModel.setTakenBy(currentUser); - Email persistedEmail = emailService.getFullEmailById(demandeUIModel.getTopiaId()); - Email email = demandeUIModel.toEntity(persistedEmail); - emailService.saveEmail(email, currentUser); - } + } else { + if (take && (demandeUIModel.getTakenBy() == null || !takeOnlyIfNotTaken)) { + demandeUIModel.setTakenBy(currentUser); + Email persistedEmail = emailService.getFullEmailById(demandeUIModel.getTopiaId()); + Email email = demandeUIModel.toEntity(persistedEmail); + emailService.saveEmail(email, currentUser); + } - List<String> printedFiles = new ArrayList<String>(); + List<String> printedFiles = new ArrayList<String>(); - if (printDemandDetails) { - // generate details as pdf - Email email = demandeUIModel.toEntity(); - final AttachmentFile demandDetailAttachment = emailService.getEmailDetailAsAttachment(email); - // print details - filesToPrint.add(FaxToMailUIUtil.preparePrint(demandDetailAttachment)); - printedFiles.add(demandDetailAttachment.getFilename()); - } + if (printDemandDetails) { + // generate details as pdf + Email email = demandeUIModel.toEntity(); + final AttachmentFile demandDetailAttachment = emailService.getEmailDetailAsAttachment(email); + // print details + filesToPrint.add(FaxToMailUIUtil.preparePrint(demandDetailAttachment)); + printedFiles.add(demandDetailAttachment.getFilename()); + } - for (AttachmentFile attachmentFile : attachmentsToPrintByDemand.get(demandeUIModel)) { - if (attachmentFile != null) { - if (FaxToMailUIUtil.isFileTypeEditable(attachmentFile.getFilename())) { - filesToPrint.add(FaxToMailUIUtil.preparePrint(attachmentFile)); - printedFiles.add(attachmentFile.getFilename()); - } else { - nonPrintedAttachment.put(demandeUIModel, attachmentFile); + for (AttachmentFile attachmentFile : attachmentsToPrintByDemand.get(demandeUIModel)) { + if (attachmentFile != null) { + if (FaxToMailUIUtil.isFileTypeEditable(attachmentFile.getFilename())) { + filesToPrint.add(FaxToMailUIUtil.preparePrint(attachmentFile)); + printedFiles.add(attachmentFile.getFilename()); + } else { + nonPrintedAttachment.put(demandeUIModel, attachmentFile); + } } } + + Email email = emailService.addToHistory(demandeUIModel.getTopiaId(), + HistoryType.PRINTING, + getContext().getCurrentUser(), + new Date(), + printedFiles.toArray(new String[printedFiles.size()])); + printedFileNb += printedFiles.size(); + demandeUIModel.setHistory(email.getHistory()); + demandeUIModel.setLastPrintingUser(email.getLastPrintingUser()); + demandeUIModel.setLastPrintingDate(email.getLastPrintingDate()); } + } - Email email = emailService.addToHistory(demandeUIModel.getTopiaId(), - HistoryType.PRINTING, - getContext().getCurrentUser(), - new Date(), - printedFiles.toArray(new String[printedFiles.size()])); - printedFileNb += printedFiles.size(); - demandeUIModel.setHistory(email.getHistory()); - demandeUIModel.setLastPrintingUser(email.getLastPrintingUser()); - demandeUIModel.setLastPrintingDate(email.getLastPrintingDate()); + // print another page for non printed attachments + if (!nonPrintedAttachment.isEmpty()) { + String errorPageContent = generateErrorPageStream(nonPrintedAttachment); + filesToPrint.add(FaxToMailUIUtil.preparePrintText(errorPageContent)); } - } - // print another page for non printed attachments - if (!nonPrintedAttachment.isEmpty()) { - String errorPageContent = generateErrorPageStream(nonPrintedAttachment); - filesToPrint.add(FaxToMailUIUtil.preparePrintText(errorPageContent)); + FaxToMailUIUtil.printWithPdfRenderer(t("faxtomail.print.jobName"), filesToPrint, true, getContext().getConfig(), new Function<Integer, Void>() { + @Override + public Void apply(Integer input) { + handler.showInformationMessage(t("faxtomail.print.success.message", input)); + return null; + } + }); } - - FaxToMailUIUtil.printWithPdfRenderer(t("faxtomail.print.jobName"), filesToPrint, true, getContext().getConfig(), new Function<Integer, Void>() { - @Override - public Void apply(Integer input) { - handler.showInformationMessage(t("faxtomail.print.success.message", input)); - return null; - } - }); handler.showInformationMessage(t("faxtomail.print.inProgress.message")); } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java index 3b0d1c35..1b1e97eb 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java @@ -81,8 +81,7 @@ public class ShowDemandeAction extends AbstractMainUIFaxToMailAction { if (StringUtils.isNotBlank(topiaId)) { FaxToMailUser currentUser = getContext().getCurrentUser(); - try { - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); + try (FaxToMailServiceContext serviceContext = getContext().newServiceContext()){ EmailService emailService = serviceContext.getEmailService(); // tentative de verrouillages des email existants @@ -182,34 +181,35 @@ public class ShowDemandeAction extends AbstractMainUIFaxToMailAction { DemandeUIModel currentEmail = getContext().getCurrentEmail(); if (StringUtils.isNotBlank(currentEmail.getTopiaId())) { - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - - Email email = serviceContext.getEmailService().openEmail(currentEmail.getTopiaId(), - getContext().getCurrentUser(), - takeEmail); - - MailFolder currentFolder = currentEmail.getMailFolder(); - MailFolder actualFolder = email.getMailFolder(); - if (currentFolder != null && !currentFolder.equals(actualFolder)) { - displayWarningMessage(t("faxtomail.alert.emailMoved.title"), - t("faxtomail.alert.emailMoved.message", - currentFolder.getName(), - actualFolder.getName(), - currentEmail.getTitle())); - } + try (FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + + Email email = serviceContext.getEmailService().openEmail(currentEmail.getTopiaId(), + getContext().getCurrentUser(), + takeEmail); + + MailFolder currentFolder = currentEmail.getMailFolder(); + MailFolder actualFolder = email.getMailFolder(); + if (currentFolder != null && !currentFolder.equals(actualFolder)) { + displayWarningMessage(t("faxtomail.alert.emailMoved.title"), + t("faxtomail.alert.emailMoved.message", + currentFolder.getName(), + actualFolder.getName(), + currentEmail.getTitle())); + } - currentEmail.fromEntity(email, true); + currentEmail.fromEntity(email, true); - MailFolder folder = currentEmail.getMailFolder(); - if (currentEmail.getArchiveDate() != null - || !folder.isFolderWritable() - || !currentEmail.getDemandStatus().isEditableStatus()) { - currentEmail.setEditable(false); + MailFolder folder = currentEmail.getMailFolder(); + if (currentEmail.getArchiveDate() != null + || !folder.isFolderWritable() + || !currentEmail.getDemandStatus().isEditableStatus()) { + currentEmail.setEditable(false); + } } - } - List<Client> allowedClients = getContext().getClientCache(); - currentEmail.setAllowedClients(allowedClients); + List<Client> allowedClients = getContext().getClientCache(); + currentEmail.setAllowedClients(allowedClients); + } } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowRechercheAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowRechercheAction.java index d434fd7f..58e47d33 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowRechercheAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowRechercheAction.java @@ -47,12 +47,13 @@ public class ShowRechercheAction extends AbstractChangeScreenAction { @Override public void doAction() throws Exception { - FaxToMailUIContext context = getContext(); - context.setCurrentPaginationParameter(null); + try(FaxToMailUIContext context = getContext()){ + context.setCurrentPaginationParameter(null); - FaxToMailUser currentUser = context.getCurrentUser(); - List<Client> allowedClients = context.newServiceContext().getClientService().getAllClientsForUser(currentUser); - getUI().setContextValue(allowedClients, SearchUIModel.PROPERTY_ALLOWED_CLIENTS); + FaxToMailUser currentUser = context.getCurrentUser(); + List<Client> allowedClients = context.newServiceContext().getClientService().getAllClientsForUser(currentUser); + getUI().setContextValue(allowedClients, SearchUIModel.PROPERTY_ALLOWED_CLIENTS); + } super.doAction(); } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellEditor.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellEditor.java index 613ec5a5..0c57416e 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellEditor.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellEditor.java @@ -44,6 +44,7 @@ import javax.swing.event.CellEditorListener; import javax.swing.event.ChangeEvent; import javax.swing.table.TableCellEditor; import java.awt.*; +import java.io.IOException; import java.util.List; import java.util.ArrayList; import java.util.Date; @@ -116,35 +117,41 @@ public class AttachmentCellEditor extends AbstractCellEditor implements TableCel filename = FaxToMailUIUtil.getEditedFileName(attachment.getOriginalFileName()); } - FaxToMailServiceContext serviceContext = context.newServiceContext(); + try (FaxToMailServiceContext serviceContext = context.newServiceContext()) { + Email email = serviceContext.getEmailService().addToHistory(topiaId, + HistoryType.ATTACHMENT_OPENING, + context.getCurrentUser(), + new Date(), + filename); + + // different cas: + // depuis la liste, on doit mettre à jour Email.PROPERTY_LAST_ATTACHMENT_OPENER + // depuis l'edition d'une demande, Email.PROPERTY_HISTORY + model.fromEntityIncluding(email, Sets.newHashSet(Email.PROPERTY_HISTORY, Email.PROPERTY_LAST_ATTACHMENT_OPENER)); + } catch (IOException eee){ + log.error("Cannot create history entry",eee); + } + } + } + + @Override + public void onAttachmentEdited(Attachment attachment) { + String topiaId = model.getTopiaId(); + try (FaxToMailServiceContext serviceContext = context.newServiceContext()) { Email email = serviceContext.getEmailService().addToHistory(topiaId, - HistoryType.ATTACHMENT_OPENING, - context.getCurrentUser(), - new Date(), - filename); + HistoryType.ATTACHMENT_MODIFICATION, + context.getCurrentUser(), + new Date(), + FaxToMailUIUtil.getEditedFileName(attachment.getOriginalFileName())); // different cas: // depuis la liste, on doit mettre à jour Email.PROPERTY_LAST_ATTACHMENT_OPENER // depuis l'edition d'une demande, Email.PROPERTY_HISTORY model.fromEntityIncluding(email, Sets.newHashSet(Email.PROPERTY_HISTORY, Email.PROPERTY_LAST_ATTACHMENT_OPENER)); + } catch (IOException eee){ + log.error("Cannot create history entry",eee); } } - - @Override - public void onAttachmentEdited(Attachment attachment) { - String topiaId = model.getTopiaId(); - FaxToMailServiceContext serviceContext = context.newServiceContext(); - Email email = serviceContext.getEmailService().addToHistory(topiaId, - HistoryType.ATTACHMENT_MODIFICATION, - context.getCurrentUser(), - new Date(), - FaxToMailUIUtil.getEditedFileName(attachment.getOriginalFileName())); - - // different cas: - // depuis la liste, on doit mettre à jour Email.PROPERTY_LAST_ATTACHMENT_OPENER - // depuis l'edition d'une demande, Email.PROPERTY_HISTORY - model.fromEntityIncluding(email, Sets.newHashSet(Email.PROPERTY_HISTORY, Email.PROPERTY_LAST_ATTACHMENT_OPENER)); - } }; editorButton.getBean().addAttachmentListener(listener); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/actions/EditAttachmentAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/actions/EditAttachmentAction.java index 5ea296c6..d6330b1f 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/actions/EditAttachmentAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/actions/EditAttachmentAction.java @@ -27,6 +27,7 @@ package com.franciaflex.faxtomail.ui.swing.content.attachment.actions; import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.Stamp; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.UserService; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; @@ -77,8 +78,10 @@ public class EditAttachmentAction extends AbstractFaxToMailAction<AttachmentEdit FaxToMailUIUtil.forceAttachmentFileLoading(getContext(), attachment); FaxToMailUser currentUser = getContext().getCurrentUser(); - UserService userService = getContext().newServiceContext().getUserService(); - stamps = userService.getPdfEditorStamps(currentUser); + try (FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + UserService userService = serviceContext.getUserService(); + stamps = userService.getPdfEditorStamps(currentUser); + } } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java index 65397c87..134d55b4 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java @@ -35,6 +35,7 @@ import com.franciaflex.faxtomail.persistence.entities.Priority; import com.franciaflex.faxtomail.persistence.entities.Range; import com.franciaflex.faxtomail.persistence.entities.RangeRow; import com.franciaflex.faxtomail.persistence.entities.WaitingState; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.actions.LoadFolderEmailsAction; @@ -48,6 +49,7 @@ import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; import org.nuiton.util.pagination.PaginationParameter; import javax.swing.table.TableModel; +import java.io.IOException; import java.util.Calendar; import java.util.Collection; import java.util.Date; @@ -195,86 +197,89 @@ public class DemandeListTableFilter extends AbstractTableFilter<JXTable> { } JXTable dataTable = handler.getUI().getDataTable(); - EmailService emailService = handler.getContext().newServiceContext().getEmailService(); - String property = ((ColumnIdentifier) dataTable.getColumn(i).getIdentifier()).getPropertyName(); - - Set<Object> result = new HashSet<>(); - - boolean sum = false; - String[] properties; - switch (property) { - case DemandeUIModel.PROPERTY_CLIENT_CODE: - properties = new String[] { "client." + Client.PROPERTY_CODE }; - break; - - case DemandeUIModel.PROPERTY_CLIENT_NAME: - properties = new String[] { "client." + Client.PROPERTY_NAME }; - break; - - case DemandeUIModel.PROPERTY_CLIENT_BRAND: - properties = new String[] { "client." + Client.PROPERTY_BRAND }; - break; - - case DemandeUIModel.PROPERTY_REFERENCE: - properties = new String[] { "email." + Email.PROPERTY_COMPANY_REFERENCE, - "rangeRow." + RangeRow.PROPERTY_COMMAND_NUMBER }; - break; - - case Email.PROPERTY_RANGE_ROW: - properties = new String[] { "rangeRow." + RangeRow.PROPERTY_RANGE }; - break; - - case DemandeUIModel.PROPERTY_PF_NB: - properties = new String[] { "rangeRow." + RangeRow.PROPERTY_PRODUCT_QUANTITY }; - sum = true; - break; - - case DemandeUIModel.PROPERTY_SAV_NB: - properties = new String[] { "rangeRow." + RangeRow.PROPERTY_SAV_QUANTITY }; - sum = true; - break; - - case DemandeUIModel.PROPERTY_QUOTATION_NB: - properties = new String[] { "rangeRow." + RangeRow.PROPERTY_QUOTATION_QUANTITY }; - sum = true; - break; - - case Email.PROPERTY_ATTACHMENT: - case Email.PROPERTY_REPLIES: - case Email.PROPERTY_EMAIL_GROUP: - case DemandeUIModel.PROPERTY_GROUPED_DEMANDES: - return null; - - default: - properties = new String[] { "email." + property }; - } + try (FaxToMailServiceContext serviceContext = handler.getContext().newServiceContext()) { + EmailService emailService = serviceContext.getEmailService(); + String property = ((ColumnIdentifier) dataTable.getColumn(i).getIdentifier()).getPropertyName(); + + boolean sum = false; + String[] properties; + switch (property) { + case DemandeUIModel.PROPERTY_CLIENT_CODE: + properties = new String[]{"client." + Client.PROPERTY_CODE}; + break; + + case DemandeUIModel.PROPERTY_CLIENT_NAME: + properties = new String[]{"client." + Client.PROPERTY_NAME}; + break; + + case DemandeUIModel.PROPERTY_CLIENT_BRAND: + properties = new String[]{"client." + Client.PROPERTY_BRAND}; + break; + + case DemandeUIModel.PROPERTY_REFERENCE: + properties = new String[]{"email." + Email.PROPERTY_COMPANY_REFERENCE, + "rangeRow." + RangeRow.PROPERTY_COMMAND_NUMBER}; + break; + + case Email.PROPERTY_RANGE_ROW: + properties = new String[]{"rangeRow." + RangeRow.PROPERTY_RANGE}; + break; + + case DemandeUIModel.PROPERTY_PF_NB: + properties = new String[]{"rangeRow." + RangeRow.PROPERTY_PRODUCT_QUANTITY}; + sum = true; + break; + + case DemandeUIModel.PROPERTY_SAV_NB: + properties = new String[]{"rangeRow." + RangeRow.PROPERTY_SAV_QUANTITY}; + sum = true; + break; + + case DemandeUIModel.PROPERTY_QUOTATION_NB: + properties = new String[]{"rangeRow." + RangeRow.PROPERTY_QUOTATION_QUANTITY}; + sum = true; + break; + + case Email.PROPERTY_ATTACHMENT: + case Email.PROPERTY_REPLIES: + case Email.PROPERTY_EMAIL_GROUP: + case DemandeUIModel.PROPERTY_GROUPED_DEMANDES: + return null; + + default: + properties = new String[]{"email." + property}; + } - result.addAll(emailService.getDistinctValues(selectedFolder, - properties, - sum)); + Set<Object> result = new HashSet<>(emailService.getDistinctValues(selectedFolder, + properties, + sum)); - if (Email.PROPERTY_RECEPTION_DATE.equals(property)) { - Set<Object> filteredDates = new HashSet<>(); - if (log.isDebugEnabled()) { - log.debug("result size " + result.size() + " " + result); - } - for (Object o : result) { - - // le dao revoie toujours null, meme si le cas est impossible en theorie pour - // PROPERTY_RECEPTION_DATE, donc dans ce cas, on ignore le cas null - if (o != null) { - Date date = (Date) o; - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - cal.set(Calendar.SECOND, 0); - cal.set(Calendar.MILLISECOND, 0); - filteredDates.add(cal.getTime()); + if (Email.PROPERTY_RECEPTION_DATE.equals(property)) { + Set<Object> filteredDates = new HashSet<>(); + if (log.isDebugEnabled()) { + log.debug("result size " + result.size() + " " + result); } + for (Object o : result) { + + // le dao revoie toujours null, meme si le cas est impossible en theorie pour + // PROPERTY_RECEPTION_DATE, donc dans ce cas, on ignore le cas null + if (o != null) { + Date date = (Date) o; + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + filteredDates.add(cal.getTime()); + } + } + result = new HashSet<>(filteredDates); } - result = new HashSet<Object>(filteredDates); - } - return result; + return result; + } catch (IOException eee) { + log.error("Cannot get distinct values for column", eee); + return null; + } } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java index dcb1f8e8..27ceb41b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java @@ -37,6 +37,7 @@ import com.franciaflex.faxtomail.persistence.entities.MailAction; import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.OriginalEmailImpl; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.actions.PrintOnDefaultPrinterAction; import com.franciaflex.faxtomail.ui.swing.content.demande.actions.ComputeQuantitiesByRangeAction; @@ -100,6 +101,7 @@ import java.beans.IntrospectionException; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyDescriptor; +import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; @@ -175,14 +177,18 @@ public class DemandeListUIHandler extends AbstractFaxToMailDemandListHandler<Dem public void beforeInit(DemandeListUI ui) { super.beforeInit(ui); - config = getContext().newServiceContext().getConfigurationService().getConfiguration(); + try (FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + config = serviceContext.getConfigurationService().getConfiguration(); - DemandeListUIModel model = new DemandeListUIModel(); - Collection<MailFolder> folders = getContext().newServiceContext().getMailFolderService() - .getRootMailFoldersWithReadingRights(getContext().getCurrentUser()); - model.setFolders(new ArrayList<>(folders)); + DemandeListUIModel model = new DemandeListUIModel(); + Collection<MailFolder> folders = serviceContext.getMailFolderService() + .getRootMailFoldersWithReadingRights(getContext().getCurrentUser()); + model.setFolders(new ArrayList<>(folders)); - this.ui.setContextValue(model); + this.ui.setContextValue(model); + } catch (IOException eee){ + log.error("Cannot init UI"); + } } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java index ec9020fb..2ad3e718 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java @@ -79,6 +79,7 @@ import java.awt.event.KeyListener; import java.awt.image.BufferedImage; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -181,13 +182,16 @@ public class DemandeUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, } else { filename = FaxToMailUIUtil.getEditedFileName(attachment.getOriginalFileName()); } - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - Email email = serviceContext.getEmailService().addToHistory(topiaId, - HistoryType.ATTACHMENT_OPENING, - getContext().getCurrentUser(), - new Date(), - filename); - getModel().setHistory(email.getHistory()); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + Email email = serviceContext.getEmailService().addToHistory(topiaId, + HistoryType.ATTACHMENT_OPENING, + getContext().getCurrentUser(), + new Date(), + filename); + getModel().setHistory(email.getHistory()); + } catch (IOException eee) { + log.error("Cannot get back email history",eee); + } } } @@ -503,10 +507,13 @@ public class DemandeUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, if (text.length()==filterStartChars){ //init list when x chars entered - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - List<Client> clients = serviceContext.getClientService().getClientsForFolder(getContext().getCurrentMailFolder(),text); - clientComboBox.getComboBoxModel().removeAllElements(); - clientComboBox.getComboBoxModel().addAllElements(clients); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + List<Client> clients = serviceContext.getClientService().getClientsForFolder(getContext().getCurrentMailFolder(), text); + clientComboBox.getComboBoxModel().removeAllElements(); + clientComboBox.getComboBoxModel().addAllElements(clients); + } catch (IOException eee) { + log.error("Cannot populate client combobox",eee); + } } else if (text.length()<filterStartChars){ //empty list if less than x chars clientComboBox.getComboBoxModel().removeAllElements(); @@ -542,24 +549,27 @@ public class DemandeUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, if (log.isDebugEnabled()) { log.debug("closing: " + ui); } - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); + try (FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { - DemandeUIModel model = getModel(); + DemandeUIModel model = getModel(); - serviceContext.getEmailService().unlockEmail(model.getTopiaId()); + serviceContext.getEmailService().unlockEmail(model.getTopiaId()); - model.removePropertyChangeListener(listModelListener); - model.removePropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, demandTypeListener); - for (RangeRowModel row : model.getValidRangeRowModels()) { - row.removePropertyChangeListener(rangeRowListener); - } + model.removePropertyChangeListener(listModelListener); + model.removePropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, demandTypeListener); + for (RangeRowModel row : model.getValidRangeRowModels()) { + row.removePropertyChangeListener(rangeRowListener); + } - ui.getAttachmentsButton().onCloseUI(); - ui.getHistoryButton().onCloseUI(); - ui.getAttachmentsButton().getBean().removeAttachmentListener(attachmentListener); - ui.getDemandRepliesButton().onCloseUI(); + ui.getAttachmentsButton().onCloseUI(); + ui.getHistoryButton().onCloseUI(); + ui.getAttachmentsButton().getBean().removeAttachmentListener(attachmentListener); + ui.getDemandRepliesButton().onCloseUI(); - clearValidators(); + clearValidators(); + } catch (IOException eee) { + log.error("Error closing UI", eee); + } } public void closeButtonPopups() { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java index 12f62699..1c34d869 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java @@ -28,6 +28,7 @@ import com.franciaflex.faxtomail.persistence.entities.Configuration; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.MailAction; import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.ui.swing.content.demande.actions.ArchiveAction; import com.franciaflex.faxtomail.ui.swing.content.demande.actions.SaveAndOpenChooseAttachmentToPrintAction; import com.franciaflex.faxtomail.ui.swing.content.demande.actions.SaveAndOpenForwardFormAction; @@ -54,6 +55,7 @@ import javax.swing.JTabbedPane; import java.awt.Component; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.io.IOException; /** * @author Kevin Morin (Code Lutin) @@ -100,7 +102,11 @@ public class DemandesUIHandler extends AbstractFaxToMailUIHandler<DemandesUIMode DemandesUIModel model = new DemandesUIModel(); - config = getContext().newServiceContext().getConfigurationService().getConfiguration(); + try(FaxToMailServiceContext faxToMailServiceContext = getContext().newServiceContext()) { + config = faxToMailServiceContext.getConfigurationService().getConfiguration(); + } catch (IOException eee) { + log.error("Error getting config", eee); + } this.ui.setContextValue(model); } @@ -110,7 +116,6 @@ public class DemandesUIHandler extends AbstractFaxToMailUIHandler<DemandesUIMode initUI(ui); DemandesUIModel model = getModel(); -// setCustomTab(0, getModel().getDemands().get(0)); model.addDemandsListener(new DemandsListener() { @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java index dc6110f4..35f99939 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java @@ -59,91 +59,91 @@ public class ComputeQuantitiesByRangeAction extends AbstractFaxToMailAction<Quan @Override public void doAction() throws Exception { MailFolder folder = getModel().getRootFolder(); - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - QuantitiesByRange quantitiesByRange = serviceContext.getEmailService().computeQuantitiesByRange(folder); - - //inProgress demands Model building - List<RangeRowModel> inProgressRangeRows = new ArrayList<>(); - Map<Range, Quantities> inProgressQuantitiesByRangeMap = quantitiesByRange.getInProgressQuantitiesByRange(); - for (Map.Entry<Range, Quantities> entry : inProgressQuantitiesByRangeMap.entrySet()) { - RangeRowModel row = new RangeRowModel(); - row.setRange(entry.getKey()); - - Quantities quantities = entry.getValue(); - - Long productQuantity = quantities.getProductQuantity(); - if (productQuantity == null) { - productQuantity = 0L; + try (FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + QuantitiesByRange quantitiesByRange = serviceContext.getEmailService().computeQuantitiesByRange(folder); + + //inProgress demands Model building + List<RangeRowModel> inProgressRangeRows = new ArrayList<>(); + Map<Range, Quantities> inProgressQuantitiesByRangeMap = quantitiesByRange.getInProgressQuantitiesByRange(); + for (Map.Entry<Range, Quantities> entry : inProgressQuantitiesByRangeMap.entrySet()) { + RangeRowModel row = new RangeRowModel(); + row.setRange(entry.getKey()); + + Quantities quantities = entry.getValue(); + + Long productQuantity = quantities.getProductQuantity(); + if (productQuantity == null) { + productQuantity = 0L; + } + row.setProductQuantity(productQuantity.intValue()); + + Long savQuantity = quantities.getSavQuantity(); + if (savQuantity == null) { + savQuantity = 0L; + } + row.setSavQuantity(savQuantity.intValue()); + + Long quotationQuantity = quantities.getQuotationQuantity(); + if (quotationQuantity == null) { + quotationQuantity = 0L; + } + row.setQuotationQuantity(quotationQuantity.intValue()); + + inProgressRangeRows.add(row); } - row.setProductQuantity(productQuantity.intValue()); - Long savQuantity = quantities.getSavQuantity(); - if (savQuantity == null) { - savQuantity = 0L; + Quantities inProgressDemandsQuantities = quantitiesByRange.getInProgressDemandsQuantities(); + if (inProgressDemandsQuantities != null) { + RangeRowModel inProgressRow = createRangeRowModelForQuantities(inProgressDemandsQuantities, + t("faxtomail.rangeRows.quantities.subtotal.label")); + inProgressRangeRows.add(inProgressRow); } - row.setSavQuantity(savQuantity.intValue()); - Long quotationQuantity = quantities.getQuotationQuantity(); - if (quotationQuantity == null) { - quotationQuantity = 0L; + //waiting demands Model building + List<RangeRowModel> waitingRangeRows = new ArrayList<>(); + Map<Range, Quantities> waitingQuantitiesByRangeMap = quantitiesByRange.getWaitingQuantitiesByRange(); + for (Map.Entry<Range, Quantities> entry : waitingQuantitiesByRangeMap.entrySet()) { + RangeRowModel row = new RangeRowModel(); + row.setRange(entry.getKey()); + + Quantities quantities = entry.getValue(); + + Long productQuantity = quantities.getProductQuantity(); + if (productQuantity == null) { + productQuantity = 0L; + } + row.setProductQuantity(productQuantity.intValue()); + + Long savQuantity = quantities.getSavQuantity(); + if (savQuantity == null) { + savQuantity = 0L; + } + row.setSavQuantity(savQuantity.intValue()); + + Long quotationQuantity = quantities.getQuotationQuantity(); + if (quotationQuantity == null) { + quotationQuantity = 0L; + } + row.setQuotationQuantity(quotationQuantity.intValue()); + + waitingRangeRows.add(row); } - row.setQuotationQuantity(quotationQuantity.intValue()); - - inProgressRangeRows.add(row); - } - - Quantities inProgressDemandsQuantities = quantitiesByRange.getInProgressDemandsQuantities(); - if (inProgressDemandsQuantities != null) { - RangeRowModel inProgressRow = createRangeRowModelForQuantities(inProgressDemandsQuantities, - t("faxtomail.rangeRows.quantities.subtotal.label")); - inProgressRangeRows.add(inProgressRow); - } - - //waiting demands Model building - List<RangeRowModel> waitingRangeRows = new ArrayList<>(); - Map<Range, Quantities> waitingQuantitiesByRangeMap = quantitiesByRange.getWaitingQuantitiesByRange(); - for (Map.Entry<Range, Quantities> entry : waitingQuantitiesByRangeMap.entrySet()) { - RangeRowModel row = new RangeRowModel(); - row.setRange(entry.getKey()); - - Quantities quantities = entry.getValue(); - Long productQuantity = quantities.getProductQuantity(); - if (productQuantity == null) { - productQuantity = 0L; + Quantities waitingDemandsQuantities = quantitiesByRange.getWaitingQuantities(); + if (waitingDemandsQuantities != null) { + RangeRowModel waitingRow = createRangeRowModelForQuantities(waitingDemandsQuantities, + t("faxtomail.rangeRows.quantities.subtotal.label")); + waitingRangeRows.add(waitingRow); } - row.setProductQuantity(productQuantity.intValue()); - Long savQuantity = quantities.getSavQuantity(); - if (savQuantity == null) { - savQuantity = 0L; - } - row.setSavQuantity(savQuantity.intValue()); - - Long quotationQuantity = quantities.getQuotationQuantity(); - if (quotationQuantity == null) { - quotationQuantity = 0L; - } - row.setQuotationQuantity(quotationQuantity.intValue()); - - waitingRangeRows.add(row); - } + RangeRowModel totalRow = createRangeRowModelForQuantities(quantitiesByRange.getTotalQuantities(), ""); + List<RangeRowModel> totalRangeRows = new ArrayList<>(); + totalRangeRows.add(totalRow); - Quantities waitingDemandsQuantities = quantitiesByRange.getWaitingQuantities(); - if (waitingDemandsQuantities != null) { - RangeRowModel waitingRow = createRangeRowModelForQuantities(waitingDemandsQuantities, - t("faxtomail.rangeRows.quantities.subtotal.label")); - waitingRangeRows.add(waitingRow); + getModel().setEnCoursRangeRows(inProgressRangeRows); + getModel().setEnAttenteRangeRows(waitingRangeRows); + getModel().setTotalsRangeRows(totalRangeRows); } - - RangeRowModel totalRow = createRangeRowModelForQuantities(quantitiesByRange.getTotalQuantities(),""); - List<RangeRowModel> totalRangeRows = new ArrayList<>(); - totalRangeRows.add(totalRow); - - getModel().setEnCoursRangeRows(inProgressRangeRows); - getModel().setEnAttenteRangeRows(waitingRangeRows); - getModel().setTotalsRangeRows(totalRangeRows); - } protected RangeRowModel createRangeRowModelForQuantities(Quantities quantities, String label) { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/LoadFolderEmailsAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/LoadFolderEmailsAction.java index fa0f0964..2e3ab6f8 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/LoadFolderEmailsAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/LoadFolderEmailsAction.java @@ -28,6 +28,7 @@ import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.WaitingState; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUI; @@ -156,45 +157,47 @@ public class LoadFolderEmailsAction extends AbstractFaxToMailAction<DemandeListU MailFolder folder = model.getSelectedFolder(); FaxToMailUser currentUser = getContext().getCurrentUser(); - PaginationResult<Email> paginationResult = getContext().newServiceContext().getEmailService() - .getEmailForFolder(folder, - currentUser, - getModel().getEmailFilter(), - model.getPaginationParameter()); - List<Email> emails = paginationResult.getElements(); - if (log.isDebugEnabled()) { - log.debug(emails.size() + " emails in folder " + folder.getName()); - } + try (FaxToMailServiceContext faxToMailServiceContext = getContext().newServiceContext()) { + PaginationResult<Email> paginationResult = faxToMailServiceContext.getEmailService() + .getEmailForFolder(folder, + currentUser, + getModel().getEmailFilter(), + model.getPaginationParameter()); + List<Email> emails = paginationResult.getElements(); + if (log.isDebugEnabled()) { + log.debug(emails.size() + " emails in folder " + folder.getName()); + } - Map<String, WaitingState> waitingStateById = Maps.uniqueIndex(getContext().getWaitingStateCache(), TopiaEntities.getTopiaIdFunction()); + Map<String, WaitingState> waitingStateById = Maps.uniqueIndex(getContext().getWaitingStateCache(), TopiaEntities.getTopiaIdFunction()); - List<DemandeUIModel> demands = new ArrayList<DemandeUIModel>(); - for (Email email : emails) { - DemandeUIModel demand = new DemandeUIModel(); - demand.fromEntityExcluding(email, Sets.newHashSet(Email.PROPERTY_MAIL_FOLDER, Email.PROPERTY_HISTORY)); - demand.recomputeValidRangeRows(); + List<DemandeUIModel> demands = new ArrayList<DemandeUIModel>(); + for (Email email : emails) { + DemandeUIModel demand = new DemandeUIModel(); + demand.fromEntityExcluding(email, Sets.newHashSet(Email.PROPERTY_MAIL_FOLDER, Email.PROPERTY_HISTORY)); + demand.recomputeValidRangeRows(); - demand.setMailFolder(folder); - demand.setEditable(folder.isFolderWritable() && demand.getDemandStatus().isEditableStatus()); - WaitingState waitingState = email.getWaitingState(); - if (waitingState != null) { - demand.setWaitingState(waitingStateById.get(waitingState.getTopiaId())); + demand.setMailFolder(folder); + demand.setEditable(folder.isFolderWritable() && demand.getDemandStatus().isEditableStatus()); + WaitingState waitingState = email.getWaitingState(); + if (waitingState != null) { + demand.setWaitingState(waitingStateById.get(waitingState.getTopiaId())); + } + demand.setValid(handler.isDemandeValid(demand)); + demands.add(demand); } - demand.setValid(handler.isDemandeValid(demand)); - demands.add(demand); - } - //FIXME enlever la rustine - if (getContext().isUseFolderCache()) { - FaxToMailUIContext.FolderData currentFolderEmails = getContext().getCurrentFolderEmails(); - currentFolderEmails.setFolder(folder); - currentFolderEmails.setDemands(demands); - currentFolderEmails.setPaginationResult(paginationResult); - } + //FIXME enlever la rustine + if (getContext().isUseFolderCache()) { + FaxToMailUIContext.FolderData currentFolderEmails = getContext().getCurrentFolderEmails(); + currentFolderEmails.setFolder(folder); + currentFolderEmails.setDemands(demands); + currentFolderEmails.setPaginationResult(paginationResult); + } - model.setEmails(demands); - model.setPaginationParameter(paginationResult.getCurrentPage()); - model.setPaginationResult(paginationResult); + model.setEmails(demands); + model.setPaginationParameter(paginationResult.getCurrentPage()); + model.setPaginationResult(paginationResult); + } } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenForwardFormAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenForwardFormAction.java index 37e5d67f..a375e091 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenForwardFormAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenForwardFormAction.java @@ -63,24 +63,25 @@ public class OpenForwardFormAction extends AbstractFaxToMailAction<DemandeListUI DemandeUIModel demand = getModel().getSelectedEmails().get(0); if (StringUtils.isNotBlank(demand.getTopiaId())) { - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - Email email = serviceContext.getEmailService().getFullEmailById(demand.getTopiaId(), getContext().getCurrentUser()); - demand.fromEntity(email); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + Email email = serviceContext.getEmailService().getFullEmailById(demand.getTopiaId(), getContext().getCurrentUser()); + demand.fromEntity(email); - getContext().setCurrentEmail(demand); + getContext().setCurrentEmail(demand); - frameContent = new ReplyFormUI(getUI()); - ReplyFormUIModel model = frameContent.getModel(); + frameContent = new ReplyFormUI(getUI()); + ReplyFormUIModel model = frameContent.getModel(); - SigningForDomain signingForDomain = null; - if (!demand.isFax() && demand.getRecipient() != null) { - signingForDomain = getContext().newServiceContext().getConfigurationService().getSigningForEmailAddress(demand.getRecipient()).orNull(); - } - model.setSigning(signingForDomain); + SigningForDomain signingForDomain = null; + if (!demand.isFax() && demand.getRecipient() != null) { + signingForDomain = serviceContext.getConfigurationService().getSigningForEmailAddress(demand.getRecipient()).orNull(); + } + model.setSigning(signingForDomain); - model.setForward(true); - model.setOriginalDemand(demand); - frameContent.getHandler().addReferences(); + model.setForward(true); + model.setOriginalDemand(demand); + frameContent.getHandler().addReferences(); + } } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenReplyFormAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenReplyFormAction.java index 2bb82348..4c79b9e1 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenReplyFormAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenReplyFormAction.java @@ -66,31 +66,32 @@ public class OpenReplyFormAction extends AbstractFaxToMailAction<DemandeListUIMo DemandeUIModel demand = getModel().getSelectedEmails().get(0); if (StringUtils.isNotBlank(demand.getTopiaId())) { - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - Email email = serviceContext.getEmailService().getFullEmailById(demand.getTopiaId(), getContext().getCurrentUser()); - demand.fromEntity(email); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + Email email = serviceContext.getEmailService().getFullEmailById(demand.getTopiaId(), getContext().getCurrentUser()); + demand.fromEntity(email); - getContext().setCurrentEmail(demand); + getContext().setCurrentEmail(demand); - frameContent = new ReplyFormUI(getUI()); - ReplyFormUIModel model = frameContent.getModel(); + frameContent = new ReplyFormUI(getUI()); + ReplyFormUIModel model = frameContent.getModel(); - SigningForDomain signingForDomain = null; - if (!demand.isFax() && demand.getRecipient() != null) { - signingForDomain = getContext().newServiceContext().getConfigurationService().getSigningForEmailAddress(demand.getRecipient()).orNull(); - } - model.setSigning(signingForDomain); + SigningForDomain signingForDomain = null; + if (!demand.isFax() && demand.getRecipient() != null) { + signingForDomain = serviceContext.getConfigurationService().getSigningForEmailAddress(demand.getRecipient()).orNull(); + } + model.setSigning(signingForDomain); - model.setForward(false); - model.setOriginalDemand(demand); + model.setForward(false); + model.setOriginalDemand(demand); - String sender = JAXXUtil.getStringValue(demand.getSender()); - if (demand.isFax()) { - MailFolder selectedFolder = getModel().getSelectedFolder(); - sender = FaxToMailServiceUtils.addFaxDomainToFaxNumber(sender, selectedFolder); + String sender = JAXXUtil.getStringValue(demand.getSender()); + if (demand.isFax()) { + MailFolder selectedFolder = getModel().getSelectedFolder(); + sender = FaxToMailServiceUtils.addFaxDomainToFaxNumber(sender, selectedFolder); + } + model.setTo(sender); + frameContent.getHandler().addReferences(); } - model.setTo(sender); - frameContent.getHandler().addReferences(); } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenTakenByFormAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenTakenByFormAction.java index a6922956..5360f76a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenTakenByFormAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenTakenByFormAction.java @@ -26,6 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.actions; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.MailFolderService; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; @@ -69,11 +70,13 @@ public class OpenTakenByFormAction extends AbstractFaxToMailAction<DemandeListUI MailFolder folder = demand.getMailFolder(); - MailFolderService mailFolderService = getContext().newServiceContext().getMailFolderService(); - List<FaxToMailUser> users = (List<FaxToMailUser>) mailFolderService.getUsersForFolder(folder.getTopiaId()); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + MailFolderService mailFolderService = serviceContext.getMailFolderService(); + List<FaxToMailUser> users = (List<FaxToMailUser>) mailFolderService.getUsersForFolder(folder.getTopiaId()); - model.setUsers(users); - getUI().setContextValue(model); + model.setUsers(users); + getUI().setContextValue(model); + } frameContent = new TakenByFormUI(getUI()); } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenForwardFormAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenForwardFormAction.java index d91f5df9..939d5b53 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenForwardFormAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenForwardFormAction.java @@ -25,6 +25,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.actions; */ import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUIHandler; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; @@ -63,7 +64,9 @@ public class SaveAndOpenForwardFormAction extends SaveAndOpenModalFrameAction<Re SigningForDomain signingForDomain = null; if (!currentDemand.isFax() && currentDemand.getRecipient() != null) { - signingForDomain = getContext().newServiceContext().getConfigurationService().getSigningForEmailAddress(currentDemand.getRecipient()).orNull(); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + signingForDomain = serviceContext.getConfigurationService().getSigningForEmailAddress(currentDemand.getRecipient()).orNull(); + } } model.setSigning(signingForDomain); model.setForward(true); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java index e8d4b119..25adcfed 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java @@ -25,6 +25,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.actions; */ import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUIHandler; @@ -66,7 +67,9 @@ public class SaveAndOpenReplyFormAction extends SaveAndOpenModalFrameAction<Repl SigningForDomain signingForDomain = null; if (!currentDemand.isFax() && currentDemand.getRecipient() != null) { - signingForDomain = getContext().newServiceContext().getConfigurationService().getSigningForEmailAddress(currentDemand.getRecipient()).orNull(); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + signingForDomain = serviceContext.getConfigurationService().getSigningForEmailAddress(currentDemand.getRecipient()).orNull(); + } } model.setSigning(signingForDomain); model.setForward(false); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenSearchToGroupAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenSearchToGroupAction.java index 1b48b8e6..4218b56b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenSearchToGroupAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenSearchToGroupAction.java @@ -26,6 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.actions; import com.franciaflex.faxtomail.persistence.entities.Client; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUIHandler; import com.franciaflex.faxtomail.ui.swing.content.search.SearchToGroupUI; @@ -61,8 +62,10 @@ public class SaveAndOpenSearchToGroupAction extends SaveAndOpenModalFrameAction< FaxToMailUIContext context = getContext(); FaxToMailUser currentUser = context.getCurrentUser(); - List<Client> allowedClients = context.newServiceContext().getClientService().getAllClientsForUser(currentUser); - getUI().setContextValue(allowedClients, SearchUIModel.PROPERTY_ALLOWED_CLIENTS); + try(FaxToMailServiceContext serviceContext = context.newServiceContext()) { + List<Client> allowedClients = serviceContext.getClientService().getAllClientsForUser(currentUser); + getUI().setContextValue(allowedClients, SearchUIModel.PROPERTY_ALLOWED_CLIENTS); + } frameContent = new SearchToGroupUI(getUI()); } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeAction.java index 7005a1c3..5e2cd5a2 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeAction.java @@ -79,90 +79,76 @@ public class SaveDemandeAction extends AbstractFaxToMailAction<DemandeUIModel, D Email persistedEmail; String topiaId = model.getTopiaId(); - FaxToMailServiceContext serviceContext = context.newServiceContext(); - if (StringUtils.isNotBlank(topiaId)) { - persistedEmail = serviceContext.getEmailService().getFullEmailById(topiaId); - } else { - persistedEmail = new EmailImpl(); - } - model.setRangeRow(persistedEmail.getRangeRow()); + try(FaxToMailServiceContext serviceContext = context.newServiceContext()) { + if (StringUtils.isNotBlank(topiaId)) { + persistedEmail = serviceContext.getEmailService().getFullEmailById(topiaId); + } else { + persistedEmail = new EmailImpl(); + } + model.setRangeRow(persistedEmail.getRangeRow()); + + Collection<RangeRowModel> rows = model.getValidRangeRowModels(); + + //remove null range rows + boolean cont = true; + while (cont) { + try { + model.removeRangeRow(null); + } catch (IllegalArgumentException eee) { + cont = false; + } + } + Collection<RangeRow> rangeRows = model.getRangeRow(); + if (rangeRows == null) { + rangeRows = new ArrayList<>(); + } - Collection<RangeRowModel> rows = model.getValidRangeRowModels(); + Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(rangeRows, TopiaEntities.getTopiaIdFunction()); - //remove null range rows - boolean cont = true; - while (cont) { - try { - model.removeRangeRow(null); - } catch (IllegalArgumentException eee) { - cont = false; + model.setRangeRow(new ArrayList<RangeRow>()); + for (RangeRowModel rangeRowModel : rows) { + RangeRow rangeRow = rangeRowsById.get(rangeRowModel.getTopiaId()); + if (rangeRow == null) { + model.addRangeRow(rangeRowModel.toEntity()); + } else { + model.addRangeRow(rangeRowModel.toEntity(rangeRow)); + } } - } - Collection<RangeRow> rangeRows = model.getRangeRow(); - if (rangeRows == null) { - rangeRows = new ArrayList<>(); - } - Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(rangeRows, TopiaEntities.getTopiaIdFunction()); + FaxToMailUser currentUser = context.getCurrentUser(); + DemandStatus demandStatus = model.getDemandStatus(); + if (demandStatus != DemandStatus.ARCHIVED && takeIfNotTaken && model.getTakenBy() == null) { + model.setTakenBy(getContext().getCurrentUser()); + } - model.setRangeRow(new ArrayList<RangeRow>()); - for (RangeRowModel rangeRowModel : rows) { - RangeRow rangeRow = rangeRowsById.get(rangeRowModel.getTopiaId()); - if (rangeRow == null) { - model.addRangeRow(rangeRowModel.toEntity()); - } else { - model.addRangeRow(rangeRowModel.toEntity(rangeRow)); + Email email = model.toEntity(persistedEmail); + if (email.getOriginalEmail() == null) { + email.setOriginalEmail(model.getOriginalEmail()); } - } - FaxToMailUser currentUser = context.getCurrentUser(); - DemandStatus demandStatus = model.getDemandStatus(); - if (demandStatus != DemandStatus.ARCHIVED && takeIfNotTaken && model.getTakenBy() == null) { - model.setTakenBy(getContext().getCurrentUser()); - } + Collection<Attachment> attachments = model.getAttachment(); + Collection<Reply> replies = model.getReplies(); - Email email = model.toEntity(persistedEmail); - if (email.getOriginalEmail() == null) { - email.setOriginalEmail(model.getOriginalEmail()); - } + BeanMonitor monitor = getHandler().getMonitor(); + String[] modifiedProperties = monitor.getModifiedProperties(); + email = serviceContext.getEmailService().saveEmail(email, attachments, replies, currentUser, modifiedProperties); - Collection<Attachment> attachments = model.getAttachment(); - Collection<Reply> replies = model.getReplies(); + model.fromEntity(email); + MailFolder folder = model.getMailFolder(); + boolean folderWritable = folder.isFolderWritable(); + if (model.getArchiveDate() != null + || !folderWritable + || !model.getDemandStatus().isEditableStatus()) { + model.setEditable(false); + } - BeanMonitor monitor = getHandler().getMonitor(); - String[] modifiedProperties = monitor.getModifiedProperties(); - email = serviceContext.getEmailService().saveEmail(email, attachments, replies, currentUser, modifiedProperties); + // reload range rows with ids + RangeTableModel rangeTableModel = (RangeTableModel) getUI().getRangeTable().getModel(); + model.recomputeValidRangeRows(); + rangeTableModel.setRows(new ArrayList<>(model.getValidRangeRowModels())); - model.fromEntity(email); - MailFolder folder = model.getMailFolder(); - boolean folderWritable = folder.isFolderWritable(); - if (model.getArchiveDate() != null - || !folderWritable - || !model.getDemandStatus().isEditableStatus()) { - model.setEditable(false); + getModel().setModify(false); + monitor.clearModified(); } - - // reload range rows with ids - RangeTableModel rangeTableModel = (RangeTableModel) getUI().getRangeTable().getModel(); - model.recomputeValidRangeRows(); - rangeTableModel.setRows(new ArrayList<RangeRowModel>(model.getValidRangeRowModels())); - - getModel().setModify(false); - monitor.clearModified(); } - -// public void postFailedAction(Throwable error) { -// -// if (error instanceof InvalidClientException) { -// DemandeUIModel model = getModel(); -//// BeanMonitor monitor = getHandler().getMonitor(); -//// String previousClientCode = (String) monitor.getOriginalValues().get(DemandeUIModel.PROPERTY_CLIENT_CODE); -// model.setClientCode(null); -// -// // reset the range rows of the model -//// BeanMonitor monitor = getHandler().getMonitor(); -//// List<RangeRow> enCoursRangeRows = (List<RangeRow>) monitor.getOriginalValues().get(Email.PROPERTY_RANGE_ROW); -//// model.setRangeRow(enCoursRangeRows); -// } -// } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeFromListAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeFromListAction.java index 9ae9ba66..d72a4b5e 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeFromListAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeFromListAction.java @@ -86,19 +86,20 @@ public class SaveDemandeFromListAction extends AbstractFaxToMailAction<DemandeLi public void doAction() throws Exception { FaxToMailUIContext context = getContext(); - FaxToMailServiceContext serviceContext = context.newServiceContext(); - EmailService emailService = serviceContext.getEmailService(); + try(FaxToMailServiceContext serviceContext = context.newServiceContext()) { + EmailService emailService = serviceContext.getEmailService(); - for (DemandeUIModel model : getModel().getSelectedEmails()) { + for (DemandeUIModel model : getModel().getSelectedEmails()) { - String topiaId = model.getTopiaId(); - Email persistedEmail = emailService.getFullEmailById(topiaId); + String topiaId = model.getTopiaId(); + Email persistedEmail = emailService.getFullEmailById(topiaId); - FaxToMailUser currentUser = context.getCurrentUser(); - Email email = model.toEntity(persistedEmail); + FaxToMailUser currentUser = context.getCurrentUser(); + Email email = model.toEntity(persistedEmail); - email = emailService.saveEmail(email, currentUser, modifiedProperties); - model.fromEntity(email); + email = emailService.saveEmail(email, currentUser, modifiedProperties); + model.fromEntity(email); + } } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/actions/OpenGroupedDemandAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/actions/OpenGroupedDemandAction.java index aa5b357c..51240144 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/actions/OpenGroupedDemandAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/actions/OpenGroupedDemandAction.java @@ -76,8 +76,7 @@ public class OpenGroupedDemandAction extends AbstractFaxToMailAction<DemandeUIMo if (StringUtils.isNotBlank(topiaId)) { FaxToMailUser currentUser = getContext().getCurrentUser(); - try { - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); + try (FaxToMailServiceContext serviceContext = getContext().newServiceContext()){ EmailService emailService = serviceContext.getEmailService(); // tentative de verrouillages des email existants @@ -165,28 +164,29 @@ public class OpenGroupedDemandAction extends AbstractFaxToMailAction<DemandeUIMo public void doAction() throws Exception { MailFolder folder = demandToOpen.getMailFolder(); - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { - if (StringUtils.isNotBlank(demandToOpen.getTopiaId())) { + if (StringUtils.isNotBlank(demandToOpen.getTopiaId())) { - Email email = serviceContext.getEmailService().openEmail(demandToOpen.getTopiaId(), - getContext().getCurrentUser(), - takeEmail); + Email email = serviceContext.getEmailService().openEmail(demandToOpen.getTopiaId(), + getContext().getCurrentUser(), + takeEmail); - demandToOpen.fromEntity(email, true); - demandToOpen.recomputeValidRangeRows(); + demandToOpen.fromEntity(email, true); + demandToOpen.recomputeValidRangeRows(); + + if (demandToOpen.getArchiveDate() != null + || !folder.isFolderWritable() + || !demandToOpen.getDemandStatus().isEditableStatus()) { + demandToOpen.setEditable(false); + } + demandToOpen.setCloseable(true); - if (demandToOpen.getArchiveDate() != null - || !folder.isFolderWritable() - || !demandToOpen.getDemandStatus().isEditableStatus()) { - demandToOpen.setEditable(false); } - demandToOpen.setCloseable(true); + List<Client> allowedClients = serviceContext.getClientService().getClientsForFolder(folder); + demandToOpen.setAllowedClients(allowedClients); } - - List<Client> allowedClients = serviceContext.getClientService().getClientsForFolder(folder); - demandToOpen.setAllowedClients(allowedClients); } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/actions/OpenReplyAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/actions/OpenReplyAction.java index eb44236d..53f49f82 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/actions/OpenReplyAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/actions/OpenReplyAction.java @@ -73,40 +73,41 @@ public class OpenReplyAction extends AbstractFaxToMailAction<DemandeUIModel, Dem public void doAction() throws Exception { DemandeUIModel demand = getModel(); - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - Email email = serviceContext.getEmailService().getFullEmailById(demand.getTopiaId(), getContext().getCurrentUser()); - demand.fromEntity(email); - - Reply reply = item.getReply(); - FaxToMailUIUtil.forceReplyContentLoading(getContext(), reply); - boolean forward = item.isForward(); - - frameContent = new ReplyFormUI(getUI()); - // TODO echatellier 20140804 : c'est très technique et très bas niveau, ca devrait se trouver dans les services - ReplyContent replyContent = reply.getReplyContent(); - MimeMessage message = MimeMessageUtils.createMimeMessage(null, replyContent.getSource()); - ReplyFormUIModel replyModel = frameContent.getModel(); - replyModel.setEditable(demand.isEditable()); - replyModel.setForward(forward); - replyModel.setOriginalDemand(demand); - replyModel.setReadonly(true); - replyModel.setReadSentDate(reply.getSentDate()); - replyModel.setSubject(message.getSubject()); - replyModel.setTo(StringUtils.join(message.getRecipients(MimeMessage.RecipientType.TO), " ; ")); - replyModel.setFrom(message.getFrom()[0].toString()); - if (ArrayUtils.isNotEmpty(message.getRecipients(MimeMessage.RecipientType.CC))) { - replyModel.setCc(StringUtils.join(message.getRecipients(MimeMessage.RecipientType.CC), " ; ")); - } - if (ArrayUtils.isNotEmpty(message.getRecipients(MimeMessage.RecipientType.BCC))) { - replyModel.setCci(StringUtils.join(message.getRecipients(MimeMessage.RecipientType.BCC), " ; ")); - } + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + Email email = serviceContext.getEmailService().getFullEmailById(demand.getTopiaId(), getContext().getCurrentUser()); + demand.fromEntity(email); + + Reply reply = item.getReply(); + FaxToMailUIUtil.forceReplyContentLoading(getContext(), reply); + boolean forward = item.isForward(); + + frameContent = new ReplyFormUI(getUI()); + // TODO echatellier 20140804 : c'est très technique et très bas niveau, ca devrait se trouver dans les services + ReplyContent replyContent = reply.getReplyContent(); + MimeMessage message = MimeMessageUtils.createMimeMessage(null, replyContent.getSource()); + ReplyFormUIModel replyModel = frameContent.getModel(); + replyModel.setEditable(demand.isEditable()); + replyModel.setForward(forward); + replyModel.setOriginalDemand(demand); + replyModel.setReadonly(true); + replyModel.setReadSentDate(reply.getSentDate()); + replyModel.setSubject(message.getSubject()); + replyModel.setTo(StringUtils.join(message.getRecipients(MimeMessage.RecipientType.TO), " ; ")); + replyModel.setFrom(message.getFrom()[0].toString()); + if (ArrayUtils.isNotEmpty(message.getRecipients(MimeMessage.RecipientType.CC))) { + replyModel.setCc(StringUtils.join(message.getRecipients(MimeMessage.RecipientType.CC), " ; ")); + } + if (ArrayUtils.isNotEmpty(message.getRecipients(MimeMessage.RecipientType.BCC))) { + replyModel.setCci(StringUtils.join(message.getRecipients(MimeMessage.RecipientType.BCC), " ; ")); + } - if (message.isMimeType("multipart/*")) { - handler.decomposeMultipartEmail(message, replyModel); + if (message.isMimeType("multipart/*")) { + handler.decomposeMultipartEmail(message, replyModel); - } else { - String content = FaxToMailServiceUtils.getTextFromMessage(message); - replyModel.setMessage(content); + } else { + String content = FaxToMailServiceUtils.getTextFromMessage(message); + replyModel.setMessage(content); + } } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/takenby/actions/TakenByAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/takenby/actions/TakenByAction.java index f6c08931..91251a8c 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/takenby/actions/TakenByAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/takenby/actions/TakenByAction.java @@ -26,6 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.takenby.actions; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; @@ -54,25 +55,27 @@ public class TakenByAction extends AbstractFaxToMailAction<TakenByFormUIModel, T @Override public void doAction() throws Exception { FaxToMailUIContext context = getContext(); - EmailService emailService = context.newServiceContext().getEmailService(); + try(FaxToMailServiceContext serviceContext = context.newServiceContext()) { + EmailService emailService = serviceContext.getEmailService(); - FaxToMailUser user = getModel().getTakenBy(); + FaxToMailUser user = getModel().getTakenBy(); - Collection<DemandeUIModel> demands = getModel().getDemandsToTake(); + Collection<DemandeUIModel> demands = getModel().getDemandsToTake(); - List<Email> emails = new ArrayList<>(); + List<Email> emails = new ArrayList<>(); - for (DemandeUIModel demand : demands) { - Email email = demand.toEntity(); - emails.add(email); - } + for (DemandeUIModel demand : demands) { + Email email = demand.toEntity(); + emails.add(email); + } - List<Email> returnedEmails = emailService.takeBy(emails, user); + List<Email> returnedEmails = emailService.takeBy(emails, user); - for (DemandeUIModel demand : demands) { - for (Email email : returnedEmails) { - if (demand.getTopiaId().equals(email.getTopiaId())){ - demand.fromEntity(email); + for (DemandeUIModel demand : demands) { + for (Email email : returnedEmails) { + if (demand.getTopiaId().equals(email.getTopiaId())) { + demand.fromEntity(email); + } } } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java index 169859e0..731a9bff 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java @@ -476,11 +476,12 @@ public class PDFEditorUIHandler extends AbstractFaxToMailUIHandler<PDFEditorUIMo public File convertFileToPdf(AttachmentFile attachmentFile) throws IOException, DocumentException { File target = FaxToMailUIUtil.convertFileToPdf(attachmentFile); // convert content to blob - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - AttachmentFile attachmentFileNew = serviceContext.getEmailService().getAttachmentFileFromStream(new FileInputStream(target)); - attachmentFileNew.setFilename(attachmentFile.getFilename() + ".pdf"); - attachmentFileNew.setRotation(0); - getModel().setEditedFile(attachmentFileNew); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + AttachmentFile attachmentFileNew = serviceContext.getEmailService().getAttachmentFileFromStream(new FileInputStream(target)); + attachmentFileNew.setFilename(attachmentFile.getFilename() + ".pdf"); + attachmentFileNew.setRotation(0); + getModel().setEditedFile(attachmentFileNew); + } return target; } @@ -516,13 +517,16 @@ public class PDFEditorUIHandler extends AbstractFaxToMailUIHandler<PDFEditorUIMo // j'ai essayé une action vite fait mais ca ferme l'éditeur à la fin de l'action if (print) { DemandeUIModel demand = model.getDemand(); - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - Email email = serviceContext.getEmailService().addToHistory(demand.getTopiaId(), - HistoryType.PRINTING, - getContext().getCurrentUser(), - new Date(), - attachmentFile.getFilename()); - demand.setHistory(email.getHistory()); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + Email email = serviceContext.getEmailService().addToHistory(demand.getTopiaId(), + HistoryType.PRINTING, + getContext().getCurrentUser(), + new Date(), + attachmentFile.getFilename()); + demand.setHistory(email.getHistory()); + } catch (IOException eee) { + log.error("Error creating history entry",eee); + } } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/actions/GenerateAnnotatedAttachmentAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/actions/GenerateAnnotatedAttachmentAction.java index 9394c898..ee5002f2 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/actions/GenerateAnnotatedAttachmentAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/actions/GenerateAnnotatedAttachmentAction.java @@ -148,12 +148,13 @@ public class GenerateAnnotatedAttachmentAction extends AbstractFaxToMailAction<P // convert content to blob InputStream is = new BufferedInputStream(new FileInputStream(target)); - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - AttachmentFile attachmentFileNew = serviceContext.getEmailService().getAttachmentFileFromStream(is); - attachmentFileNew.setRotation(rotation); - String fileName = model.getOriginalFile().getFilename(); - attachmentFileNew.setFilename(FaxToMailUIUtil.getEditedFileName(fileName)); - model.setEditedFile(attachmentFileNew); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + AttachmentFile attachmentFileNew = serviceContext.getEmailService().getAttachmentFileFromStream(is); + attachmentFileNew.setRotation(rotation); + String fileName = model.getOriginalFile().getFilename(); + attachmentFileNew.setFilename(FaxToMailUIUtil.getEditedFileName(fileName)); + model.setEditedFile(attachmentFileNew); + } } protected void addHighlightToPdf(float zoom, int rotation, PdfContentByte cb, PDFEditorHighlighterUI panel) { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java index 283a4972..c2636d4e 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java @@ -45,6 +45,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.io.IOException; /** * @author Kevin Morin (Code Lutin) @@ -71,27 +72,30 @@ public class AttachmentToPrintChooserUIHandler extends AbstractFaxToMailUIHandle printInlineAttachment = Boolean.TRUE.equals(folder.getPrintInlineAttachments()); // add demand details - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - EmailService emailService = serviceContext.getEmailService(); - Email email = getModel().getDemand().toEntity(); - final AttachmentFile demandDetailAttachment = emailService.getEmailDetailAsAttachment(email); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + EmailService emailService = serviceContext.getEmailService(); + Email email = getModel().getDemand().toEntity(); + final AttachmentFile demandDetailAttachment = emailService.getEmailDetailAsAttachment(email); - JCheckBox checkBox = new JCheckBox(demandDetailAttachment.getFilename(), true); - ui.getAttachmentPanel().add(checkBox); + JCheckBox checkBox = new JCheckBox(demandDetailAttachment.getFilename(), true); + ui.getAttachmentPanel().add(checkBox); - // add attached files - getModel().addAttachmentToPrint(demandDetailAttachment); - checkBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - log.info("state changed " + e.getStateChange()); - if (e.getStateChange() == ItemEvent.SELECTED) { - getModel().addAttachmentToPrint(demandDetailAttachment); - } else { - getModel().removeAttachmentToPrint(demandDetailAttachment); + // add attached files + getModel().addAttachmentToPrint(demandDetailAttachment); + checkBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + log.info("state changed " + e.getStateChange()); + if (e.getStateChange() == ItemEvent.SELECTED) { + getModel().addAttachmentToPrint(demandDetailAttachment); + } else { + getModel().removeAttachmentToPrint(demandDetailAttachment); + } } - } - }); + }); + } catch(IOException eee) { + log.error("Error adding demand details",eee); + } for (Attachment attachment : demand.getAttachment()) { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java index bdbaedeb..52d885ba 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java @@ -31,6 +31,7 @@ import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.ldap.Contact; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.reply.actions.AddAttachmentToReplyAction; @@ -102,8 +103,12 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo ReplyFormUIModel model = new ReplyFormUIModel(); //TODO kmorin 20140813 action ? - long maxSize = getContext().newServiceContext().getConfigurationService().getEmailMaxSize(); - model.setMaxAttachmentLength(maxSize); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + long maxSize = serviceContext.getConfigurationService().getEmailMaxSize(); + model.setMaxAttachmentLength(maxSize); + } catch (IOException eee){ + log.error("Error setting maxAttachmentLength",eee); + } this.ui.setContextValue(model); } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/AddAttachmentToReplyAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/AddAttachmentToReplyAction.java index 352d5daf..ae036065 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/AddAttachmentToReplyAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/AddAttachmentToReplyAction.java @@ -26,6 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.reply.actions; import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyAttachmentModel; @@ -57,14 +58,16 @@ public class AddAttachmentToReplyAction extends AbstractFaxToMailAction<ReplyFor public void doAction() throws Exception { Attachment attachment = replyAttachmentModel.getAttachment(); if (replyAttachmentModel.getAttachmentFile() == null && attachment.isPersisted()) { - EmailService service = getContext().newServiceContext().getEmailService(); - boolean original = replyAttachmentModel.isOriginal(); - AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), - original); - if (original) { - attachment.setOriginalFile(file); - } else { - attachment.setEditedFile(file); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + EmailService service = serviceContext.getEmailService(); + boolean original = replyAttachmentModel.isOriginal(); + AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), + original); + if (original) { + attachment.setOriginalFile(file); + } else { + attachment.setEditedFile(file); + } } } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java index 6bc96a95..eb45b85a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java @@ -60,27 +60,28 @@ public class ReplyAction extends AbstractFaxToMailAction<ReplyFormUIModel, Reply @Override public void doAction() throws Exception { ReplyFormUIModel model = getModel(); - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - EmailService emailService = serviceContext.getEmailService(); - DemandeUIModel originalDemand = getModel().getOriginalDemand(); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + EmailService emailService = serviceContext.getEmailService(); + DemandeUIModel originalDemand = getModel().getOriginalDemand(); - Collection<AttachmentFile> attachmentFiles = Collections2.transform(model.getAttachments(), new Function<ReplyAttachmentModel, AttachmentFile>() { - @Override - public AttachmentFile apply(ReplyAttachmentModel replyAttachmentModel) { - return replyAttachmentModel.getAttachmentFile(); - } - }); - Email email = emailService.reply(model.getFrom(), - model.getTo(), - model.getCc(), - model.getCci(), - model.getSubject(), - model.getMessage(), - attachmentFiles, - originalDemand.getTopiaId(), - getContext().getCurrentUser()); + Collection<AttachmentFile> attachmentFiles = Collections2.transform(model.getAttachments(), new Function<ReplyAttachmentModel, AttachmentFile>() { + @Override + public AttachmentFile apply(ReplyAttachmentModel replyAttachmentModel) { + return replyAttachmentModel.getAttachmentFile(); + } + }); + Email email = emailService.reply(model.getFrom(), + model.getTo(), + model.getCc(), + model.getCci(), + model.getSubject(), + model.getMessage(), + attachmentFiles, + originalDemand.getTopiaId(), + getContext().getCurrentUser()); - originalDemand.fromEntityIncluding(email, Sets.newHashSet(Email.PROPERTY_REPLIES, Email.PROPERTY_HISTORY)); + originalDemand.fromEntityIncluding(email, Sets.newHashSet(Email.PROPERTY_REPLIES, Email.PROPERTY_HISTORY)); + } } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java index 0dd185db..09bbb7a9 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java @@ -59,10 +59,11 @@ public class SenderChangedAction extends AbstractFaxToMailAction<ReplyFormUIMode @Override public void doAction() throws Exception { ReplyFormUIModel model = getModel(); - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - signingForDomain = null; - if (model.getOriginalDemand() != null && !model.getOriginalDemand().isFax() && model.getFrom() != null) { - signingForDomain = serviceContext.getConfigurationService().getSigningForEmailAddress(model.getFrom()).orNull(); + try (FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + signingForDomain = null; + if (model.getOriginalDemand() != null && !model.getOriginalDemand().isFax() && model.getFrom() != null) { + signingForDomain = serviceContext.getConfigurationService().getSigningForEmailAddress(model.getFrom()).orNull(); + } } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java index cc3a56d6..7bb4679a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java @@ -30,6 +30,7 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.HasLabel; import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.persistence.entities.SearchFilter; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.search.actions.GroupAction; @@ -70,6 +71,7 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.io.IOException; import java.util.Arrays; import java.util.Calendar; import java.util.Date; @@ -327,7 +329,11 @@ public class SearchToGroupUIHandler extends AbstractFaxToMailDemandListHandler<S @Override public List<MailField> getColumns() { if (tableColumns == null) { - tableColumns = getContext().newServiceContext().getConfigurationService().getSearchDisplayColumns(); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + tableColumns = serviceContext.getConfigurationService().getSearchDisplayColumns(); + } catch (IOException eee) { + log.error("Error getting configuration",eee); + } } return tableColumns; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java index cfefa1e9..6d526602 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java @@ -55,6 +55,7 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.io.IOException; import java.util.Arrays; import java.util.Calendar; import java.util.Collections; @@ -83,20 +84,14 @@ public class SearchUIHandler extends AbstractFaxToMailDemandListHandler<SearchUI SearchUIModel searchUIModel = getContext().getSearch(); if (searchUIModel == null) { searchUIModel = new SearchUIModel(); -// searchUIModel.setTakenBy(getContext().getCurrentUser()); -// searchUIModel.setModifiedBy(getContext().getCurrentUser()); Date now = new Date(); Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, -2); Date twoMonthsAgo = cal.getTime(); -// searchUIModel.setMaxModificationDate(now); -// searchUIModel.setMinModificationDate(twoMonthsAgo); searchUIModel.setMaxReceptionDate(now); searchUIModel.setMinReceptionDate(twoMonthsAgo); - //searchUIModel.setMaxPrintingDate(now); - //searchUIModel.setMinPrintingDate(twoMonthsAgo); List<Client> allowedClients = ui.getContextValue(List.class, SearchUIModel.PROPERTY_ALLOWED_CLIENTS); searchUIModel.setAllowedClients(allowedClients); @@ -147,10 +142,13 @@ public class SearchUIHandler extends AbstractFaxToMailDemandListHandler<SearchUI if (text.length()==filterStartChars){ //init list when x chars entered - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - List<Client> clients = serviceContext.getClientService().getAllClientsForUserFilter(getContext().getCurrentUser(),text); - clientComboBox.getComboBoxModel().removeAllElements(); - clientComboBox.getComboBoxModel().addAllElements(clients); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + List<Client> clients = serviceContext.getClientService().getAllClientsForUserFilter(getContext().getCurrentUser(), text); + clientComboBox.getComboBoxModel().removeAllElements(); + clientComboBox.getComboBoxModel().addAllElements(clients); + } catch (IOException eee) { + log.error("Error initialising client combobox"); + } } else if (text.length()<filterStartChars){ //empty list if less than x chars clientComboBox.getComboBoxModel().removeAllElements(); @@ -324,7 +322,11 @@ public class SearchUIHandler extends AbstractFaxToMailDemandListHandler<SearchUI @Override public List<MailField> getColumns() { if (tableColumns == null) { - tableColumns = getContext().newServiceContext().getConfigurationService().getSearchDisplayColumns(); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + tableColumns = serviceContext.getConfigurationService().getSearchDisplayColumns(); + } catch (IOException eee) { + log.error("Error getting configuration", eee); + } } return tableColumns; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/GroupAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/GroupAction.java index 35cb0d76..0ed06294 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/GroupAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/GroupAction.java @@ -77,13 +77,14 @@ public class GroupAction extends AbstractFaxToMailAction<SearchUIModel, SearchTo @Override public void doAction() throws Exception { - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - EmailService emailService = serviceContext.getEmailService(); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + EmailService emailService = serviceContext.getEmailService(); - FaxToMailUser currentUser = getContext().getCurrentUser(); - Email email = emailService.groupEmails(currentEmail.getTopiaId(), selectedEmail.getTopiaId(), currentUser); - currentEmail.fromEntity(email); - currentEmail.setGroupedDemandes(email.getEmailGroup()); + FaxToMailUser currentUser = getContext().getCurrentUser(); + Email email = emailService.groupEmails(currentEmail.getTopiaId(), selectedEmail.getTopiaId(), currentUser); + currentEmail.fromEntity(email); + currentEmail.setGroupedDemandes(email.getEmailGroup()); + } } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/SearchAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/SearchAction.java index e486ae60..60b9bc62 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/SearchAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/SearchAction.java @@ -65,30 +65,31 @@ public class SearchAction extends AbstractFaxToMailAction<SearchUIModel, SearchU SearchFilter searchFilter = model.toEntity(); - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - PaginationResult<Email> paginationResult = serviceContext.getEmailService().search(searchFilter, - getContext().getCurrentUser(), getModel().getPaginationParameter()); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + PaginationResult<Email> paginationResult = serviceContext.getEmailService().search(searchFilter, + getContext().getCurrentUser(), getModel().getPaginationParameter()); - List<Email> emails = paginationResult.getElements(); - List<DemandeUIModel> result = new ArrayList<>(); + List<Email> emails = paginationResult.getElements(); + List<DemandeUIModel> result = new ArrayList<>(); - Map<String, WaitingState> waitingStateById = Maps.uniqueIndex(getContext().getWaitingStateCache(), TopiaEntities.getTopiaIdFunction()); + Map<String, WaitingState> waitingStateById = Maps.uniqueIndex(getContext().getWaitingStateCache(), TopiaEntities.getTopiaIdFunction()); - for (Email email : emails) { - DemandeUIModel demand = new DemandeUIModel(); - demand.fromEntityExcluding(email, Sets.newHashSet(Email.PROPERTY_HISTORY)); - demand.recomputeValidRangeRows(); + for (Email email : emails) { + DemandeUIModel demand = new DemandeUIModel(); + demand.fromEntityExcluding(email, Sets.newHashSet(Email.PROPERTY_HISTORY)); + demand.recomputeValidRangeRows(); - demand.setValid(handler.isDemandeValid(demand)); - WaitingState waitingState = email.getWaitingState(); - if (waitingState != null) { - demand.setWaitingState(waitingStateById.get(waitingState.getTopiaId())); - } + demand.setValid(handler.isDemandeValid(demand)); + WaitingState waitingState = email.getWaitingState(); + if (waitingState != null) { + demand.setWaitingState(waitingStateById.get(waitingState.getTopiaId())); + } - result.add(demand); + result.add(demand); + } + model.setResults(result); + model.setPaginationParameter(paginationResult.getCurrentPage()); + model.setPaginationResult(paginationResult); } - model.setResults(result); - model.setPaginationParameter(paginationResult.getCurrentPage()); - model.setPaginationResult(paginationResult); } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/SearchToGroupAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/SearchToGroupAction.java index 4751817e..75a4e682 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/SearchToGroupAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/actions/SearchToGroupAction.java @@ -64,48 +64,49 @@ public class SearchToGroupAction extends AbstractFaxToMailAction<SearchUIModel, SearchUIModel model = getModel(); SearchFilter searchFilter = model.toEntity(); - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - PaginationResult<Email> paginationResult = serviceContext.getEmailService().search(searchFilter, - getContext().getCurrentUser(), getModel().getPaginationParameter()); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + PaginationResult<Email> paginationResult = serviceContext.getEmailService().search(searchFilter, + getContext().getCurrentUser(), getModel().getPaginationParameter()); - List<Email> emails = paginationResult.getElements(); - List<DemandeUIModel> result = new ArrayList<>(); + List<Email> emails = paginationResult.getElements(); + List<DemandeUIModel> result = new ArrayList<>(); - Map<String, WaitingState> waitingStateById = Maps.uniqueIndex(getContext().getWaitingStateCache(), TopiaEntities.getTopiaIdFunction()); + Map<String, WaitingState> waitingStateById = Maps.uniqueIndex(getContext().getWaitingStateCache(), TopiaEntities.getTopiaIdFunction()); - for (Email email : emails) { - DemandeUIModel demand = new DemandeUIModel(); - demand.fromEntityExcluding(email, Sets.newHashSet(Email.PROPERTY_HISTORY)); - demand.recomputeValidRangeRows(); + for (Email email : emails) { + DemandeUIModel demand = new DemandeUIModel(); + demand.fromEntityExcluding(email, Sets.newHashSet(Email.PROPERTY_HISTORY)); + demand.recomputeValidRangeRows(); - demand.setValid(handler.isDemandeValid(demand)); - WaitingState waitingState = email.getWaitingState(); - if (waitingState != null) { - demand.setWaitingState(waitingStateById.get(waitingState.getTopiaId())); + demand.setValid(handler.isDemandeValid(demand)); + WaitingState waitingState = email.getWaitingState(); + if (waitingState != null) { + demand.setWaitingState(waitingStateById.get(waitingState.getTopiaId())); + } + result.add(demand); } - result.add(demand); - } - model.setResults(result); - model.setPaginationParameter(paginationResult.getCurrentPage()); - model.setPaginationResult(paginationResult); + model.setResults(result); + model.setPaginationParameter(paginationResult.getCurrentPage()); + model.setPaginationResult(paginationResult); - getContext().addPropertyChangeListener(FaxToMailUIContext.PROPERTY_BUSY, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - if (!getContext().isBusy()) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - final JFrame frame = getUI().getParentContainer(JFrame.class); - if (frame != null) { - frame.toFront(); + getContext().addPropertyChangeListener(FaxToMailUIContext.PROPERTY_BUSY, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (!getContext().isBusy()) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + final JFrame frame = getUI().getParentContainer(JFrame.class); + if (frame != null) { + frame.toFront(); + } } - } - }); - getContext().removePropertyChangeListener(FaxToMailUIContext.PROPERTY_BUSY, this); + }); + getContext().removePropertyChangeListener(FaxToMailUIContext.PROPERTY_BUSY, this); + } } - } - }); + }); + } } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java index c0637bf1..bbfdb562 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java @@ -32,6 +32,8 @@ import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode; import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.swing.util.Cancelable; import javax.swing.JComponent; @@ -40,6 +42,7 @@ import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import java.awt.Component; +import java.io.IOException; import java.util.Collection; import java.util.HashSet; import java.util.Map; @@ -51,6 +54,9 @@ import java.util.Set; */ public class MailFolderChooserUIHandler extends AbstractFaxToMailUIHandler<MailFolderChooserUIModel, MailFolderChooserUI> implements Cancelable { + /** Logger. */ + private static final Log log = LogFactory.getLog(AbstractFaxToMailUIHandler.class); + @Override public void afterInit(MailFolderChooserUI mailFolderChooserUI) { initUI(mailFolderChooserUI); @@ -66,47 +72,50 @@ public class MailFolderChooserUIHandler extends AbstractFaxToMailUIHandler<MailF } } - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - Collection<MailFolder> foldersWithWaitingState = null; - // foldersWithWaitingState reste à null dans le cas ou l'arbre ne doit pas être filtré - // sinon l'appel peut renvoyer une liste de vide dans le cas où aucun dossier n'est selectionnable - if (!allWaitingStates.isEmpty()) { - foldersWithWaitingState = serviceContext.getMailFolderService().getFoldersWithWaitingState(allWaitingStates); - } + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + Collection<MailFolder> foldersWithWaitingState = null; + // foldersWithWaitingState reste à null dans le cas ou l'arbre ne doit pas être filtré + // sinon l'appel peut renvoyer une liste de vide dans le cas où aucun dossier n'est selectionnable + if (!allWaitingStates.isEmpty()) { + foldersWithWaitingState = serviceContext.getMailFolderService().getFoldersWithWaitingState(allWaitingStates); + } - // init tree - Collection<MailFolder> folders = serviceContext.getMailFolderService(). - getRootMailFoldersWithMoveRights(getContext().getCurrentUser()); - JTree navigationTree = ui.getNavigationTree(); + // init tree + Collection<MailFolder> folders = serviceContext.getMailFolderService(). + getRootMailFoldersWithMoveRights(getContext().getCurrentUser()); + JTree navigationTree = ui.getNavigationTree(); - Map<MailFolder, FolderTreeNode> nodesByFolder = - FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, folders, false); + Map<MailFolder, FolderTreeNode> nodesByFolder = + FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, folders, false); - for (Map.Entry<MailFolder, FolderTreeNode> entry : nodesByFolder.entrySet()) { - FolderTreeNode node = nodesByFolder.get(entry.getKey()); + for (Map.Entry<MailFolder, FolderTreeNode> entry : nodesByFolder.entrySet()) { + FolderTreeNode node = nodesByFolder.get(entry.getKey()); - // le dossier n'est pas grisé si: - // - le n'est pas le dossier courrant - // - l'utilsateur à les droits sur le dossier - // - le dossier cible à les mêmes etatAttente/typeDemande que toutes les demandes à bouger - node.setCanSelect(!currentMailFolder.equals(entry.getKey()) && entry.getKey().isFolderMoveable() && - (foldersWithWaitingState == null || foldersWithWaitingState.contains(entry.getKey()))); - } + // le dossier n'est pas grisé si: + // - le n'est pas le dossier courrant + // - l'utilsateur à les droits sur le dossier + // - le dossier cible à les mêmes etatAttente/typeDemande que toutes les demandes à bouger + node.setCanSelect(!currentMailFolder.equals(entry.getKey()) && entry.getKey().isFolderMoveable() && + (foldersWithWaitingState == null || foldersWithWaitingState.contains(entry.getKey()))); + } - navigationTree.addTreeSelectionListener(new TreeSelectionListener() { - @Override - public void valueChanged(TreeSelectionEvent e) { - FolderTreeNode folderNode = (FolderTreeNode) e.getPath().getLastPathComponent(); - MailFolder folder = folderNode.getMailFolder(); - if (!folderNode.isCanSelect()) { - folder = null; + navigationTree.addTreeSelectionListener(new TreeSelectionListener() { + @Override + public void valueChanged(TreeSelectionEvent e) { + FolderTreeNode folderNode = (FolderTreeNode) e.getPath().getLastPathComponent(); + MailFolder folder = folderNode.getMailFolder(); + if (!folderNode.isCanSelect()) { + folder = null; + } + getModel().setMailFolder(folder); } - getModel().setMailFolder(folder); - } - }); - - // fix jaxx binding, apparement, il faut lui refaire un set null - getModel().setMailFolder(null); + }); + + // fix jaxx binding, apparement, il faut lui refaire un set null + getModel().setMailFolder(null); + } catch (IOException eee) { + log.error("Error initialising UI", eee); + } } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/actions/TransmitAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/actions/TransmitAction.java index 600cc54f..af921a02 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/actions/TransmitAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/actions/TransmitAction.java @@ -25,6 +25,7 @@ package com.franciaflex.faxtomail.ui.swing.content.transmit.actions; */ import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUI; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler; @@ -116,7 +117,9 @@ public class TransmitAction extends AbstractFaxToMailAction<MailFolderChooserUIM return demandeUIModel.getTopiaId(); } }); - getContext().newServiceContext().getEmailService().transmit(emailIds, model.getMailFolder(), getContext().getCurrentUser()); + try(FaxToMailServiceContext faxToMailServiceContext = getContext().newServiceContext()) { + faxToMailServiceContext.getEmailService().transmit(emailIds, model.getMailFolder(), getContext().getCurrentUser()); + } } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java index 05e4a9ba..992384bc 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java @@ -29,6 +29,7 @@ import com.franciaflex.faxtomail.persistence.entities.MailAction; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.WaitingState; import com.franciaflex.faxtomail.services.DecoratorService; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; @@ -80,6 +81,7 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.io.IOException; import java.io.Serializable; import java.lang.reflect.Method; import java.util.ArrayList; @@ -137,12 +139,18 @@ public abstract class AbstractFaxToMailUIHandler<M, UI extends FaxToMailUI<M, ?> @Override public <O> Decorator<O> getDecorator(Class<O> type, String name) { - DecoratorService decoratorService = getContext().newServiceContext().getDecoratorService(); + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + DecoratorService decoratorService = serviceContext.getDecoratorService(); - Preconditions.checkNotNull(type); + Preconditions.checkNotNull(type); - Decorator<O> decorator = decoratorService.getDecoratorByType(type, name); - return decorator; + Decorator<O> decorator = decoratorService.getDecoratorByType(type, name); + return decorator; + } catch (IOException eee) { + log.error("Error while getting decorator",eee); + } + + return null; } // sonar signale cette methode comme inutile, mais elle augmente la visibilité en fait diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java index 87bb7c75..0ead04b4 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java @@ -411,15 +411,18 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { log.debug("Force attachment loading " + attachment.getOriginalFileName()); } if (attachment.isPersisted()) { - FaxToMailServiceContext serviceContext = context.newServiceContext(); - EmailService service = serviceContext.getEmailService(); - if (attachment.getOriginalFile() == null) { - AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), true); - attachment.setOriginalFile(file); - } - if (attachment.getEditedFile() == null) { - AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), false); - attachment.setEditedFile(file); + try(FaxToMailServiceContext serviceContext = context.newServiceContext()) { + EmailService service = serviceContext.getEmailService(); + if (attachment.getOriginalFile() == null) { + AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), true); + attachment.setOriginalFile(file); + } + if (attachment.getEditedFile() == null) { + AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), false); + attachment.setEditedFile(file); + } + } catch (IOException eee) { + log.error("Error while loading attachment file", eee); } } } @@ -429,11 +432,14 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { log.debug("Force attachment loading " + attachment.getOriginalFileName()); } if (attachment.isPersisted()) { - FaxToMailServiceContext serviceContext = context.newServiceContext(); - EmailService service = serviceContext.getEmailService(); - if (attachment.getOriginalFile() == null) { - AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), true); - attachment.setOriginalFile(file); + try(FaxToMailServiceContext serviceContext = context.newServiceContext()) { + EmailService service = serviceContext.getEmailService(); + if (attachment.getOriginalFile() == null) { + AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), true); + attachment.setOriginalFile(file); + } + } catch (IOException eee) { + log.error("Error while loading original file", eee); } } @@ -446,11 +452,14 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { log.debug("Force generated pages loading " + attachment.getOriginalFileName()); } if (attachment.isPersisted()) { - FaxToMailServiceContext serviceContext = context.newServiceContext(); - EmailService service = serviceContext.getEmailService(); - if (attachment.getGeneratedPDFPages() == null) { - Collection<GeneratedPDFPage> pages = service.getGeneratedPDFPage(attachment.getTopiaId()); - attachment.setGeneratedPDFPages(pages); + try(FaxToMailServiceContext serviceContext = context.newServiceContext()) { + EmailService service = serviceContext.getEmailService(); + if (attachment.getGeneratedPDFPages() == null) { + Collection<GeneratedPDFPage> pages = service.getGeneratedPDFPage(attachment.getTopiaId()); + attachment.setGeneratedPDFPages(pages); + } + } catch (IOException eee) { + log.error("Error while loading generated PDF pages", eee); } } @@ -463,11 +472,14 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { log.debug("Force attachment loading " + attachment.getOriginalFileName()); } if (attachment.isPersisted()) { - FaxToMailServiceContext serviceContext = context.newServiceContext(); - EmailService service = serviceContext.getEmailService(); - if (attachment.getEditedFile() == null) { - AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), false); - attachment.setEditedFile(file); + try(FaxToMailServiceContext serviceContext = context.newServiceContext()) { + EmailService service = serviceContext.getEmailService(); + if (attachment.getEditedFile() == null) { + AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), false); + attachment.setEditedFile(file); + } + } catch (IOException eee) { + log.error("Error while loading edited file", eee); } } @@ -487,10 +499,13 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { log.debug("Force source loading " + reply.getSubject()); } if (reply.isPersisted() && reply.getReplyContent() == null) { - FaxToMailServiceContext serviceContext = context.newServiceContext(); - EmailService service = serviceContext.getEmailService(); - ReplyContent replyContent = service.getReplyContent(reply.getTopiaId()); - reply.setReplyContent(replyContent); + try(FaxToMailServiceContext serviceContext = context.newServiceContext()) { + EmailService service = serviceContext.getEmailService(); + ReplyContent replyContent = service.getReplyContent(reply.getTopiaId()); + reply.setReplyContent(replyContent); + } catch (IOException eee) { + log.error("Error while loading reply content", eee); + } } } @@ -844,9 +859,12 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { // get configuration extension command ExtensionCommand extCommand = null; if (StringUtils.isNotBlank(extension)) { - FaxToMailServiceContext serviceContext = context.newServiceContext(); - ConfigurationService service = serviceContext.getConfigurationService(); - extCommand = service.getExtensionCommand(extension); + try (FaxToMailServiceContext serviceContext = context.newServiceContext()) { + ConfigurationService service = serviceContext.getConfigurationService(); + extCommand = service.getExtensionCommand(extension); + } catch (IOException eee) { + log.error("Error while getting extension command",eee); + } } // open file diff --git a/faxtomail-ui-web/src/test/java/com/franciaflex/faxtomail/web/job/MailFilterJobTest.java b/faxtomail-ui-web/src/test/java/com/franciaflex/faxtomail/web/job/MailFilterJobTest.java new file mode 100644 index 00000000..4b6769e2 --- /dev/null +++ b/faxtomail-ui-web/src/test/java/com/franciaflex/faxtomail/web/job/MailFilterJobTest.java @@ -0,0 +1,76 @@ +package com.franciaflex.faxtomail.web.job; + +import com.franciaflex.faxtomail.persistence.entities.EmailAccount; +import com.franciaflex.faxtomail.persistence.entities.EmailAccountImpl; +import com.franciaflex.faxtomail.persistence.entities.EmailProtocol; +import com.franciaflex.faxtomail.services.service.ConfigurationService; +import com.franciaflex.faxtomail.services.service.MailFolderService; +import com.franciaflex.faxtomail.services.service.UserService; +//import com.franciaflex.faxtomail.services.service.AbstractFaxToMailServiceTest; +import com.icegreen.greenmail.junit.GreenMailRule; +import com.icegreen.greenmail.user.GreenMailUser; +import com.icegreen.greenmail.util.GreenMailUtil; +import com.icegreen.greenmail.util.ServerSetupTest; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +import javax.mail.MessagingException; +import java.io.IOException; + +/** + * @author Jean Couteau (Code Lutin) + * @since 2.4.27 + */ +public class MailFilterJobTest { + + @Rule + public final GreenMailRule greenMail = new GreenMailRule(ServerSetupTest.SMTP_IMAP); + + @Before + public void setUp() throws IOException { +// service = newService(MailFolderService.class); +// newService(InitTestData.class).initTestData(); +// userService = newService(UserService.class); + } + + @Test + public void testMailReceptionNoFilter() throws MessagingException { + GreenMailUser user = greenMail.setUser("to@localhost.com", "test", "test"); + + //user.deliver(createMimeMessage()); // You can either create a more complex message... + GreenMailUtil.sendTextEmailTest("to@localhost.com", "from@localhost.com", + "subject", "body"); // ...or use the default messages + + //Prepare test Data + EmailAccount emailAccount = getTestAccount(); + //confService.getMailFilters(); + //confService save mailAccount(); + + + //Create a conf to put to@localhost.com -> Cyril + + + + MailFilterJob job = new MailFilterJob(); + job.checkEmails(emailAccount); + //job.execute(); + + //Check that mail is still on server + Assert.assertEquals(1, greenMail.getReceivedMessages().length); + //Check that database contains no email + // ?????? + } + + protected EmailAccount getTestAccount(){ + EmailAccount emailAccount = new EmailAccountImpl(); + emailAccount.setLogin("test"); + emailAccount.setPassword("test"); + emailAccount.setHost("127.0.0.1"); + emailAccount.setPort(greenMail.getImap().getPort()); + emailAccount.setProtocol(EmailProtocol.IMAP); + return emailAccount; + } + +} \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.