Author: kmorin Date: 2014-08-08 14:59:17 +0200 (Fri, 08 Aug 2014) New Revision: 502 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/502 Log: integration des fetchs Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-08 08:40:04 UTC (rev 501) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-08 12:59:17 UTC (rev 502) @@ -54,6 +54,8 @@ public interface EmailService extends FaxToMailService { Email getEmailById(String id); + Email getEmailById(String id, FaxToMailUser user); + Email saveEmail(Email email, FaxToMailUser user, String... modifiedFields) throws InvalidClientException; Email saveEmail(Email email, Collection<Attachment> attachments, String clientCode, FaxToMailUser user, String... modifiedFields) throws InvalidClientException; Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 08:40:04 UTC (rev 501) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 12:59:17 UTC (rev 502) @@ -66,7 +66,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDField; import org.hibernate.Hibernate; import org.nuiton.topia.persistence.TopiaEntities; -import org.nuiton.topia.persistence.TopiaQueryBuilderAddCriteriaOrRunQueryStep; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; import org.nuiton.util.pagination.PaginationParameter; @@ -97,28 +96,60 @@ @Override public Email getEmailById(String id) { Email email = getPersistenceContext().getEmailDao() - .forTopiaIdEquals(id) - .addAllFetches(Email.PROPERTY_DEMAND_TYPE, - Email.PROPERTY_DEMAND_TYPE + "." + DemandType.PROPERTY_FIELDS, - Email.PROPERTY_RANGE_ROW, - Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE, - Email.PROPERTY_HISTORY, - Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, - Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, - Email.PROPERTY_REPLIES, - Email.PROPERTY_ATTACHMENT, - Email.PROPERTY_TAKEN_BY, - Email.PROPERTY_CLIENT, - Email.PROPERTY_EMAIL_GROUP, - Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL, - Email.PROPERTY_ETAT_ATTENTE, - Email.PROPERTY_ETAT_ATTENTE + "." + EtatAttente.PROPERTY_INVALID_FORM_DISABLED_ACTIONS, - Email.PROPERTY_ETAT_ATTENTE + "." + EtatAttente.PROPERTY_VALID_FORM_DISABLED_ACTIONS, - Email.PROPERTY_PRIORITY).findUnique(); -// fetchEmailData(email); + .forTopiaIdEquals(id) + .addAllFetches(Email.PROPERTY_DEMAND_TYPE, + Email.PROPERTY_DEMAND_TYPE + "." + DemandType.PROPERTY_FIELDS, + Email.PROPERTY_RANGE_ROW, + Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE, + Email.PROPERTY_HISTORY, + Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, + Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, + Email.PROPERTY_REPLIES, + Email.PROPERTY_ATTACHMENT, + Email.PROPERTY_TAKEN_BY, + Email.PROPERTY_CLIENT, + Email.PROPERTY_EMAIL_GROUP, + Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL, + Email.PROPERTY_ETAT_ATTENTE, + Email.PROPERTY_ETAT_ATTENTE + "." + EtatAttente.PROPERTY_INVALID_FORM_DISABLED_ACTIONS, + Email.PROPERTY_ETAT_ATTENTE + "." + EtatAttente.PROPERTY_VALID_FORM_DISABLED_ACTIONS, + Email.PROPERTY_PRIORITY).findUnique(); + return email; } + @Override + public Email getEmailById(String id, FaxToMailUser user) { + Email email = getEmailById(id); + + MailFolderService mailFolderService = serviceContext.getMailFolderService(); + MailFolder folder = email.getMailFolder(); + browseFolderParent(folder, user, mailFolderService); + + return email; + } + + protected void browseFolderParent(MailFolder folder, FaxToMailUser user, MailFolderService mailFolderService) { + Hibernate.initialize(folder); + mailFolderService.fetchFolderAttributes(folder); + + MailFolder parent = folder.getParent(); + if (parent != null) { + browseFolderParent(parent, user, mailFolderService); + } + + boolean writable = parent != null && parent.isFolderWritable(); + writable |= CollectionUtils.containsAny(folder.getWriteRightGroups(), user.getUserGroups()); + writable |= folder.containsWriteRightUsers(user); + + boolean readable = parent != null && parent.isFolderReadable(); + readable |= CollectionUtils.containsAny(folder.getReadRightGroups(), user.getUserGroups()); + readable |= folder.containsReadRightUsers(user); + + folder.setFolderWritable(writable); + folder.setFolderReadable(readable); + } + /** * Save email with default email client code. * @@ -152,85 +183,7 @@ email.setClient(client); if (attachments != null) { - AttachmentTopiaDao attachmentTopiaDao = getPersistenceContext().getAttachmentDao(); - List<Attachment> currentAttachments = attachmentTopiaDao.forTopiaIdIn(email.getAttachmentTopiaIds()).findAll(); - if (currentAttachments == null) { - currentAttachments = new ArrayList<>(); - } - Map<String, Attachment> currentAttachmentIndex = new HashMap<>(Maps.uniqueIndex(currentAttachments, TopiaEntities.getTopiaIdFunction())); - - AttachmentFileTopiaDao attachementFileTopiaDao = getPersistenceContext().getAttachmentFileDao(); - for (Attachment attachment : attachments) { - - // get attachment BEFORE for flush - AttachmentFile originalFile = null; - AttachmentFile editedFile = null; - if (attachment.isPersisted()) { - originalFile = getAttachmentFile(attachment.getTopiaId(), true); - editedFile = getAttachmentFile(attachment.getTopiaId(), false); - } - - // get session attachment from id - Attachment currentAttachment; - if (StringUtils.isNotBlank(attachment.getTopiaId())) { - currentAttachment = currentAttachmentIndex.remove(attachment.getTopiaId()); - } else { - currentAttachment = new AttachmentImpl(); - } - - // dans tout les cas, les pieces jointes courante de l'attchent prévale - // sur celles en base - if (attachment.getOriginalFile() != null) { - originalFile = attachment.getOriginalFile(); - } - if (attachment.getEditedFile() != null) { - editedFile = attachment.getEditedFile(); - } - - // copy new data - attachmentBinder.copyExcluding(attachment, currentAttachment, - Attachment.PROPERTY_EDITED_FILE, - Attachment.PROPERTY_EDITED_FILE_NAME, - Attachment.PROPERTY_ORIGINAL_FILE, - Attachment.PROPERTY_ORIGINAL_FILE_NAME, - Attachment.PROPERTY_TOPIA_CREATE_DATE, - Attachment.PROPERTY_TOPIA_ID, - Attachment.PROPERTY_TOPIA_VERSION); - - currentAttachment.setEditedFile(editedFile); - currentAttachment.setOriginalFile(originalFile); - - // ici les pieces jointes peuvent être sauvegardées sans que les pièces jointes - // soit présentes dans les entités car l'ui ne les a pas copiées - // pour ne pas les charger inutilement - // donc on les remet manuellement - - if (!originalFile.isPersisted()) { - attachementFileTopiaDao.create(originalFile); - } else { - attachementFileTopiaDao.update(originalFile); - } - - if (editedFile != null) { - if (!editedFile.isPersisted()) { - attachementFileTopiaDao.create(editedFile); - } else { - attachementFileTopiaDao.update(editedFile); - } - } - - if (!currentAttachment.isPersisted()) { - // persist using cascade - currentAttachments.add(currentAttachment); - } - } - - // delete not found attachments - for (Attachment attachment : currentAttachmentIndex.values()) { - currentAttachments.remove(attachment); - } - - email.setAttachment(currentAttachments); + updateAttachments(email, attachments); } if (email.getRangeRow() != null) { @@ -269,52 +222,7 @@ && email.getDemandType() != null && StringUtils.isNotBlank(email.getProjectReference())) { - if (email.getDemandType().containsFields(MailField.RANGE_ROW)) { - - // si les gammes sont vides, la demande n'est pas valide, on ne fait rien dans ce cas - // sinon on transfer à edi - if (email.isRangeRowNotEmpty()) { - - // recherche parmis les dossiers parent, si la configuration ediTranfer à été demandée - Boolean ediTranfer = null; - MailFolder loopFolder = email.getMailFolder(); - do { - ediTranfer = loopFolder.getEdiTransfer(); - loopFolder = loopFolder.getParent(); - } while (ediTranfer == null && loopFolder != null); - - if (BooleanUtils.isTrue(ediTranfer)) { - // ajout d'un historique - transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI, - History.PROPERTY_MODIFICATION_DATE, new Date()); - email.addHistory(transmissionToEdi); - - // changement du status - email.setDemandStatus(DemandStatus.TRANSMISSION_TO_EDI); - fieldSet.add(Email.PROPERTY_DEMAND_STATUS); - } else { - // TODO echatellier : pas sur qu'il faille l'ajouter tout le temps, mais sinon, le transfer se reproduira - transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI, - History.PROPERTY_MODIFICATION_DATE, new Date()); - email.addHistory(transmissionToEdi); - - // passage en status - email.setDemandStatus(DemandStatus.IN_PROGRESS); - fieldSet.add(Email.PROPERTY_DEMAND_STATUS); - } - } - - } else { - - // TODO echatellier : pas sur qu'il faille l'ajouter tout le temps, mais sinon, le transfer se reproduira - transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI, - History.PROPERTY_MODIFICATION_DATE, new Date()); - email.addHistory(transmissionToEdi); - - // passage en status - email.setDemandStatus(DemandStatus.IN_PROGRESS); - fieldSet.add(Email.PROPERTY_DEMAND_STATUS); - } + handleEdiTransmission(email, historyDao, fieldSet); } History history; @@ -348,6 +256,133 @@ return result; } + protected void updateAttachments(Email email, Collection<Attachment> attachments) { + AttachmentTopiaDao attachmentTopiaDao = getPersistenceContext().getAttachmentDao(); + + List<Attachment> currentAttachments = attachmentTopiaDao.forTopiaIdIn(email.getAttachmentTopiaIds()).findAll(); + if (currentAttachments == null) { + currentAttachments = new ArrayList<>(); + } + Map<String, Attachment> currentAttachmentIndex = new HashMap<>(Maps.uniqueIndex(currentAttachments, TopiaEntities.getTopiaIdFunction())); + + AttachmentFileTopiaDao attachementFileTopiaDao = getPersistenceContext().getAttachmentFileDao(); + for (Attachment attachment : attachments) { + + // get session attachment from id + Attachment currentAttachment; + if (StringUtils.isNotBlank(attachment.getTopiaId())) { + currentAttachment = currentAttachmentIndex.remove(attachment.getTopiaId()); + } else { + currentAttachment = new AttachmentImpl(); + } + + AttachmentFile originalFile = null; + AttachmentFile editedFile = null; + // dans tout les cas, les pieces jointes courante de l'attchent prévale + // sur celles en base + if (attachment.getOriginalFile() != null) { + originalFile = attachment.getOriginalFile(); + } + if (attachment.getEditedFile() != null) { + editedFile = attachment.getEditedFile(); + } + + // copy new data + attachmentBinder.copyExcluding(attachment, currentAttachment, + Attachment.PROPERTY_EDITED_FILE, + Attachment.PROPERTY_EDITED_FILE_NAME, + Attachment.PROPERTY_ORIGINAL_FILE, + Attachment.PROPERTY_ORIGINAL_FILE_NAME, + Attachment.PROPERTY_TOPIA_CREATE_DATE, + Attachment.PROPERTY_TOPIA_ID, + Attachment.PROPERTY_TOPIA_VERSION); + + currentAttachment.setEditedFile(editedFile); + currentAttachment.setOriginalFile(originalFile); + + // ici les pieces jointes peuvent être sauvegardées sans que les pièces jointes + // soit présentes dans les entités car l'ui ne les a pas copiées + // pour ne pas les charger inutilement + // donc on les remet manuellement + + if (!originalFile.isPersisted()) { + attachementFileTopiaDao.create(originalFile); + } else { + attachementFileTopiaDao.update(originalFile); + } + + if (editedFile != null) { + if (!editedFile.isPersisted()) { + attachementFileTopiaDao.create(editedFile); + } else { + attachementFileTopiaDao.update(editedFile); + } + } + + if (!currentAttachment.isPersisted()) { + // persist using cascade + currentAttachments.add(currentAttachment); + } + } + + // delete not found attachments + for (Attachment attachment : currentAttachmentIndex.values()) { + currentAttachments.remove(attachment); + } + + email.setAttachment(currentAttachments); + } + + protected void handleEdiTransmission(Email email, HistoryTopiaDao historyDao, Set<String> fieldSet) { + History transmissionToEdi; + if (email.getDemandType().containsFields(MailField.RANGE_ROW)) { + + // si les gammes sont vides, la demande n'est pas valide, on ne fait rien dans ce cas + // sinon on transfer à edi + if (email.isRangeRowNotEmpty()) { + + // recherche parmis les dossiers parent, si la configuration ediTranfer à été demandée + Boolean ediTranfer = null; + MailFolder loopFolder = email.getMailFolder(); + do { + ediTranfer = loopFolder.getEdiTransfer(); + loopFolder = loopFolder.getParent(); + } while (ediTranfer == null && loopFolder != null); + + if (BooleanUtils.isTrue(ediTranfer)) { + // ajout d'un historique + transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI, + History.PROPERTY_MODIFICATION_DATE, new Date()); + email.addHistory(transmissionToEdi); + + // changement du status + email.setDemandStatus(DemandStatus.TRANSMISSION_TO_EDI); + fieldSet.add(Email.PROPERTY_DEMAND_STATUS); + } else { + // TODO echatellier : pas sur qu'il faille l'ajouter tout le temps, mais sinon, le transfer se reproduira + transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI, + History.PROPERTY_MODIFICATION_DATE, new Date()); + email.addHistory(transmissionToEdi); + + // passage en status + email.setDemandStatus(DemandStatus.IN_PROGRESS); + fieldSet.add(Email.PROPERTY_DEMAND_STATUS); + } + } + + } else { + + // TODO echatellier : pas sur qu'il faille l'ajouter tout le temps, mais sinon, le transfer se reproduira + transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI, + History.PROPERTY_MODIFICATION_DATE, new Date()); + email.addHistory(transmissionToEdi); + + // passage en status + email.setDemandStatus(DemandStatus.IN_PROGRESS); + fieldSet.add(Email.PROPERTY_DEMAND_STATUS); + } + } + @Override public void transmitPendingDemandsToEdi() { EmailTopiaDao dao = getPersistenceContext().getEmailDao(); @@ -702,22 +737,9 @@ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao(); PaginationResult<Email> result = emailDao.search(emailFilter, readMailFolders, pagination); - MailFolderService mailFolderService = serviceContext.getMailFolderService(); // Fetch lazy field for list display for (Email email : result.getElements()) { fetchEmailData(email); - MailFolder folder = email.getMailFolder(); - while (folder != null) { - Hibernate.initialize(folder); - //TODO 20140807 kmorin : is folder readable - folder.setFolderReadable(false); - folder.setFolderWritable(false); - - mailFolderService.fetchFolderAttributes(folder); - - folder = folder.getParent(); - } - } return result; @@ -732,7 +754,7 @@ // if both groups are null if (group1 == null && group2 == null) { - EmailGroup group = groupDao.create(EmailGroup.PROPERTY_EMAIL, Lists.newArrayList(email1, email2)); + EmailGroup group = groupDao.create(EmailGroup.PROPERTY_EMAIL, Sets.newHashSet(email1, email2)); email1.setEmailGroup(group); email2.setEmailGroup(group); Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java 2014-08-08 08:40:04 UTC (rev 501) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java 2014-08-08 12:59:17 UTC (rev 502) @@ -169,6 +169,7 @@ Hibernate.initialize(folder.getRanges()); Hibernate.initialize(folder.getReplyAddresses()); Hibernate.initialize(folder.getReplyDomains()); + Hibernate.initialize(folder.getDemandTypes()); if (folder.sizeEtatAttentes() > 0) { for (EtatAttente etatAttente : folder.getEtatAttentes()) { @@ -176,8 +177,6 @@ Hibernate.initialize(etatAttente.getValidFormDisabledActions()); } } - - Hibernate.initialize(folder.getDemandTypes()); } @Override Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java 2014-08-08 12:59:17 UTC (rev 502) @@ -0,0 +1,111 @@ +package com.franciaflex.faxtomail.ui.swing.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.exceptions.AlreadyLockedMailException; +import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUI; +import com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup.DemandGroupUI; +import com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup.DemandGroupUIHandler; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; + +import javax.swing.*; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Kevin Morin (Code Lutin) + */ +public class OpenGroupedDemandAction extends AbstractFaxToMailAction<DemandeUIModel, DemandGroupUI, DemandGroupUIHandler> { + + protected DemandeUIModel demandToOpen; + + public OpenGroupedDemandAction(DemandGroupUIHandler handler, DemandeUIModel demandToOpen) { + super(handler, false); + this.demandToOpen = demandToOpen; + setActionDescription(t("faxtomail.action.goto.demand.tip")); + } + + @Override + public boolean prepareAction() throws Exception { + boolean result = super.prepareAction(); + + // tentative de verrouillages des email existants + if (StringUtils.isNotBlank(demandToOpen.getTopiaId())) { + FaxToMailUser currentUser = getContext().getCurrentUser(); + + try { + FaxToMailServiceContext serviceContext = getContext().newServiceContext(); + serviceContext.getEmailService().lockEmail(demandToOpen.getTopiaId(), currentUser); + + } catch (AlreadyLockedMailException ex) { + result = false; + + String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(ex.getLockedBy())); + JOptionPane.showMessageDialog(getHandler().getTopestUI(), + htmlMessage, + t("faxtomail.alert.alreadyLockedBy.title"), + JOptionPane.ERROR_MESSAGE); + } + } + + return result; + } + + + @Override + public void doAction() throws Exception { + FaxToMailUIContext context = getContext(); + Email email = context.newServiceContext().getEmailService().getEmailById(demandToOpen.getTopiaId(), + context.getCurrentUser()); + demandToOpen.fromEntity(email); + demandToOpen.setMailFolder(email.getMailFolder()); + demandToOpen.setCloseable(true); + } + + @Override + public void postSuccessAction() { + super.postSuccessAction(); + FaxToMailUser takenBy = demandToOpen.getTakenBy(); + FaxToMailUser currentUser = getContext().getCurrentUser(); + + if (demandToOpen.getArchiveDate() != null) { + demandToOpen.setEditable(false); + + } else if (takenBy != null && !currentUser.equals(takenBy)) { + String htmlMessage = String.format( + AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)), + t("faxtomail.alert.alreadyTakenBy.help")); + + int result = JOptionPane.showConfirmDialog(getHandler().getTopestUI(), + htmlMessage, + t("faxtomail.alert.alreadyTakenBy.title"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE); + + switch (result) { + case JOptionPane.CANCEL_OPTION: + return; + + case JOptionPane.NO_OPTION: + demandToOpen.setEditable(false); + break; + + case JOptionPane.YES_OPTION: + Email email = getContext().newServiceContext().getEmailService().takeEmail(demandToOpen.getTopiaId(), currentUser); + demandToOpen.fromEntity(email); + demandToOpen.setEditable(true); + break; + } + } + + MainUIHandler mainUIHandler = getContext().getMainUI().getHandler(); + DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody(); + parentContainer.getModel().addDemand(demandToOpen); + } +} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-08 08:40:04 UTC (rev 501) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-08 12:59:17 UTC (rev 502) @@ -81,14 +81,14 @@ @Override public void doAction() throws Exception { - super.doAction(); - DemandeUIModel currentEmail = getContext().getCurrentEmail(); if (StringUtils.isNotBlank(currentEmail.getTopiaId())) { FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - Email email = serviceContext.getEmailService().getEmailById(currentEmail.getTopiaId()); + Email email = serviceContext.getEmailService().getEmailById(currentEmail.getTopiaId(), getContext().getCurrentUser()); currentEmail.setGroupedDemandes(email.getEmailGroup()); + currentEmail.setMailFolder(email.getMailFolder()); } + super.doAction(); } @Override Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-08 08:40:04 UTC (rev 501) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-08 12:59:17 UTC (rev 502) @@ -761,7 +761,9 @@ for (Email email : emails) { if (!email.getTopiaId().equals(getTopiaId())) { DemandeUIModel demandeUIModel = new DemandeUIModel(); - demandeUIModel.fromEntity(email); + demandeUIModel.setObject(email.getObject()); + demandeUIModel.setCompanyReference(email.getCompanyReference()); + demandeUIModel.setTopiaId(email.getTopiaId()); groupedDemandes.add(demandeUIModel); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java 2014-08-08 08:40:04 UTC (rev 501) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java 2014-08-08 12:59:17 UTC (rev 502) @@ -29,6 +29,7 @@ import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; +import com.franciaflex.faxtomail.ui.swing.actions.OpenGroupedDemandAction; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUI; @@ -153,60 +154,8 @@ public void openDemande(DemandeUIModel demande) { closeEditor(); - FaxToMailUIContext context = getContext(); - demande.setCloseable(true); -// context.setCurrentEmail(demande); -// context.getActionEngine().runAction(new ShowDemandeAction(context.getMainUI().getHandler())); - - FaxToMailUser takenBy = demande.getTakenBy(); - FaxToMailUser currentUser = getContext().getCurrentUser(); - - try { - // tentative de verrouillage de la demande - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - serviceContext.getEmailService().lockEmail(demande.getTopiaId(), currentUser); - - if (demande.getArchiveDate() != null) { - demande.setEditable(false); - - } else if (takenBy != null && !currentUser.equals(takenBy)) { - String htmlMessage = String.format( - AbstractApplicationUIHandler.CONFIRMATION_FORMAT, - t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)), - t("faxtomail.alert.alreadyTakenBy.help")); - - int result = JOptionPane.showConfirmDialog(getTopestUI(), - htmlMessage, - t("faxtomail.alert.alreadyTakenBy.title"), - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE); - - switch (result) { - case JOptionPane.CANCEL_OPTION: - return; - - case JOptionPane.NO_OPTION: - demande.setEditable(false); - break; - - case JOptionPane.YES_OPTION: - Email email = serviceContext.getEmailService().takeEmail(demande.getTopiaId(), currentUser); - demande.fromEntity(email); - demande.setEditable(true); - break; - } - } - - MainUIHandler mainUIHandler = context.getMainUI().getHandler(); - DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody(); - parentContainer.getModel().addDemand(demande); - } catch (AlreadyLockedMailException ex) { - String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(ex.getLockedBy())); - JOptionPane.showMessageDialog(getTopestUI(), - htmlMessage, - t("faxtomail.alert.alreadyLockedBy.title"), - JOptionPane.ERROR_MESSAGE); - } + OpenGroupedDemandAction openAction = new OpenGroupedDemandAction(this, demande); + getContext().getActionFactory().createUIAction(null, openAction).actionPerformed(null); } protected class DemandGroupItemRenderer extends DemandGroupItem Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-08 08:40:04 UTC (rev 501) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-08 12:59:17 UTC (rev 502) @@ -267,7 +267,7 @@ protected void runSearchAction() { try { - SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class); + SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class); searchAction.doAction(); } catch (Exception e) { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-08-08 08:40:04 UTC (rev 501) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-08-08 12:59:17 UTC (rev 502) @@ -373,7 +373,7 @@ if (!Desktop.isDesktopSupported()) { throw new ApplicationTechnicalException( - t("jaxx.application.error.desktop.not.supported")); + t("jaxx.application.error.desktop.print.not.supported")); } Desktop desktop = Desktop.getDesktop(); Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-08 08:40:04 UTC (rev 501) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-08 12:59:17 UTC (rev 502) @@ -251,7 +251,7 @@ faxtomail.reply.message=\nLe %1$s, %2$s a écrit \:\n> %3$s faxtomail.reply.subject=Re \: %s faxtomail.reply.title=Réponse à \: %s -faxtomail.search.action.error= +faxtomail.search.action.error=Erreur lors de la recherche faxtomail.search.action.gotoFolder=Aller au dossier faxtomail.search.action.gotoFolder.tip=Aller au dossier faxtomail.search.addGroupedElement.label=Ajouter les éléments groupés aux résultats @@ -289,9 +289,8 @@ faxtomail.validator.error.reply.to.email=Le champ 'A\:' doit être une adresse email valide \! faxtomail.validator.error.reply.to.required=Le champ 'A\:' est requis \! faxtomail.validator.error.reply.totalAttachmentLength.required=La taille totale des pièces jointes dépasse la limite acceptée -jaxx.application.error.cannot.mail= -jaxx.application.error.cannot.print= -jaxx.application.error.desktop.not.supported= -jaxx.application.error.desktop.print.not.supported= -jaxx.application.error.noPrinter= -swing.error.cannot.copy.file= +jaxx.application.error.cannot.mail=Erreur lors de l'ouverture du client mail +jaxx.application.error.cannot.print=Erreur lors de l'impression +jaxx.application.error.desktop.print.not.supported=Erreur lors de l'impression +jaxx.application.error.noPrinter=Erreur lors de l'impression +swing.error.cannot.copy.file=Erreur lors de la copie des fichiers