r511 - in trunk: faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util
Author: kmorin Date: 2014-08-08 18:34:58 +0200 (Fri, 08 Aug 2014) New Revision: 511 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/511 Log: fetch seulement les donn?\195?\169es utiles pour l'affichage 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-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.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/content/search/SearchUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.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/EmailService.java 2014-08-08 16:25:41 UTC (rev 510) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-08 16:34:58 UTC (rev 511) @@ -30,6 +30,7 @@ import com.franciaflex.faxtomail.persistence.entities.EmailFilter; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.HistoryType; +import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.MailLock; import com.franciaflex.faxtomail.persistence.entities.Range; @@ -62,7 +63,7 @@ void transmitPendingDemandsToEdi(); - PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, PaginationParameter page); + PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, List<MailField> fields, PaginationParameter page); List<MailFolder> getChildrenRecursively(MailFolder folder); 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 16:25:41 UTC (rev 510) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 16:34:58 UTC (rev 511) @@ -48,6 +48,7 @@ import javax.activation.FileDataSource; import javax.mail.MessagingException; +import com.google.common.collect.Collections2; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; import org.apache.commons.io.IOUtils; @@ -66,6 +67,7 @@ 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; @@ -532,31 +534,67 @@ * @return paginated results */ @Override - public PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, PaginationParameter page) { + public PaginationResult<Email> getEmailForFolder(MailFolder folder, + FaxToMailUser currentUser, + List<MailField> fields, + PaginationParameter page) { // perform request or not depending on rigths PaginationResult<Email> result; if (folder.isFolderReadable()) { EmailTopiaDao dao = getPersistenceContext().getEmailDao(); - result = dao.forMailFolderEquals(folder) + TopiaQueryBuilderAddCriteriaOrRunQueryStep queryStep = + dao.forMailFolderEquals(folder) .addNull(Email.PROPERTY_ARCHIVE_DATE) - .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED) - .addAllFetches( - Email.PROPERTY_DEMAND_TYPE, - 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_ETAT_ATTENTE, - Email.PROPERTY_PRIORITY - ) - .findPage(page); + .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED); + boolean noFields = CollectionUtils.isEmpty(fields); + if (noFields || fields.contains(MailField.PRIORITY)) { + queryStep.addFetch(Email.PROPERTY_PRIORITY); + } + if (noFields || fields.contains(MailField.DEMAND_TYPE)) { + queryStep.addFetch(Email.PROPERTY_DEMAND_TYPE); + } + if (noFields || CollectionUtils.containsAny(fields, + Lists.newArrayList(MailField.CLIENT_BRAND, + MailField.CLIENT_CODE))) { + queryStep.addFetch(Email.PROPERTY_CLIENT); + } + if (noFields || CollectionUtils.containsAny(fields, + Lists.newArrayList(MailField.REFERENCE, + MailField.QUOTATION_NB, + MailField.PF_NB, + MailField.SAV_NB))) { + queryStep.addFetch(Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE); + } + if (noFields || fields.contains(MailField.ETAT_ATTENTE)) { + queryStep.addFetch(Email.PROPERTY_ETAT_ATTENTE); + } + if (noFields || fields.contains(MailField.TAKEN_BY)) { + queryStep.addFetch(Email.PROPERTY_TAKEN_BY); + } + if (noFields || fields.contains(MailField.REPLIES)) { + queryStep.addFetch(Email.PROPERTY_REPLIES); + } + if (noFields || fields.contains(MailField.ATTACHMENT)) { + queryStep.addFetch(Email.PROPERTY_ATTACHMENT); + } + //TODO 20140808 kmorin remove when hql query coded + if (noFields || fields.contains(MailField.LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER)) { + queryStep.addAllFetches(Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, + Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS); + } + + result = queryStep.findPage(page); + + if (noFields || fields.contains(MailField.LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER)) { + Collection<String> topiaIds = Collections2.transform(result.getElements(), TopiaEntities.getTopiaIdFunction()); + //TODO 20140808 kmorin hql pour récupérer l'utilisateur de l'historique max date pour type = ouverture pj +// Email.PROPERTY_HISTORY, +// Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, +// Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, + } + } else { List<Email> elements = Collections.emptyList(); result = PaginationResult.of(elements, 0, page); 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 16:25:41 UTC (rev 510) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java 2014-08-08 16:34:58 UTC (rev 511) @@ -106,6 +106,9 @@ @Override public List<MailFolder> getRootMailFoldersWithReadingRights(FaxToMailUser user) { + FaxToMailUser upToDateUser = serviceContext.getUserService().getUser(user.getTopiaId()); + user.setAffectedFolders(upToDateUser.getAffectedFolders()); + MailFolderTopiaDao dao = getPersistenceContext().getMailFolderDao(); List<MailFolder> folders = new ArrayList<>(dao.getReadableFolders(user)); Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java 2014-08-08 16:25:41 UTC (rev 510) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java 2014-08-08 16:34:58 UTC (rev 511) @@ -86,7 +86,9 @@ @Override public FaxToMailUser getUser(String topiaId) { FaxToMailUserTopiaDao dao = getPersistenceContext().getFaxToMailUserDao(); - FaxToMailUser user = dao.forTopiaIdEquals(topiaId).findUnique(); + FaxToMailUser user = dao.forTopiaIdEquals(topiaId) + .addAllFetches(FaxToMailUser.PROPERTY_AFFECTED_FOLDERS) + .findUnique(); return user; } } Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java =================================================================== --- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-08-08 16:25:41 UTC (rev 510) +++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-08-08 16:34:58 UTC (rev 511) @@ -142,11 +142,11 @@ MailFolderTopiaDao mailFolderDao = getServiceContext().getPersistenceContext().getMailFolderDao(); MailFolder cyril = mailFolderDao.forNameEquals("Cyril").findUnique(); - PaginationResult<Email> page1 = service.getEmailForFolder(cyril, getCurrentUser(), page); + PaginationResult<Email> page1 = service.getEmailForFolder(cyril, getCurrentUser(), null, page); Assert.assertEquals(10, page1.getCount()); Assert.assertEquals(7, page1.getElements().size()); - PaginationResult<Email> page2 = service.getEmailForFolder(cyril, getCurrentUser(), page1.getNextPage()); + PaginationResult<Email> page2 = service.getEmailForFolder(cyril, getCurrentUser(), null, page1.getNextPage()); Assert.assertEquals(10, page2.getCount()); Assert.assertEquals(3, page2.getElements().size()); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-08 16:25:41 UTC (rev 510) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-08 16:34:58 UTC (rev 511) @@ -86,7 +86,10 @@ FaxToMailUser currentUser = getContext().getCurrentUser(); PaginationResult<Email> paginationResult = getContext().newServiceContext().getEmailService() - .getEmailForFolder(folder, currentUser, model.getPaginationParameter()); + .getEmailForFolder(folder, + currentUser, + handler.getColumns(), + model.getPaginationParameter()); List<Email> emails = paginationResult.getElements(); if (log.isDebugEnabled()) { log.debug(emails.size() + " emails in folder " + folder.getName()); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-08 16:25:41 UTC (rev 510) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-08 16:34:58 UTC (rev 511) @@ -401,7 +401,7 @@ } @Override - protected List<MailField> getColumns() { + public List<MailField> getColumns() { List<MailField> tableColumns = null; MailFolder selectedFolder = getModel().getSelectedFolder(); if (selectedFolder != null) { 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 16:25:41 UTC (rev 510) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-08 16:34:58 UTC (rev 511) @@ -282,7 +282,7 @@ } @Override - protected List<MailField> getColumns() { + public List<MailField> getColumns() { if (tableColumns == null) { tableColumns = getContext().newServiceContext().getConfigurationService().getSearchDisplayColumns(); } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-08-08 16:25:41 UTC (rev 510) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-08-08 16:34:58 UTC (rev 511) @@ -239,7 +239,7 @@ } @Override - protected List<MailField> getColumns() { + public List<MailField> getColumns() { if (tableColumns == null) { tableColumns = getContext().newServiceContext().getConfigurationService().getSearchDisplayColumns(); } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-08-08 16:25:41 UTC (rev 510) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-08-08 16:34:58 UTC (rev 511) @@ -139,7 +139,7 @@ table.addMouseListener(getDataTableMouseListener()); } - protected abstract List<MailField> getColumns(); + public abstract List<MailField> getColumns(); public String populateColumnModel(JXTable table, boolean sortable) { List<MailField> columns = getColumns(); @@ -267,7 +267,6 @@ DemandeUIModel selectedEmail = tableModel.getEntry(rowIndex); onDoubleClickOnDemande(selectedEmail); - //TODO kmorin 02140806 put in action openDemand(selectedEmail); } }
participants (1)
-
kmorin@users.forge.codelutin.com