This is an automated email from the git hooks/post-receive script. New commit to branch bugfix/CacheClients in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit 8698a2d9b05a530bcd782ad8986bdf28c21680fe Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Thu Jun 2 16:46:07 2016 +0200 Create cache on clients --- .../faxtomail/services/service/ClientService.java | 2 ++ .../services/service/ClientServiceImpl.java | 13 +++++++++++ .../faxtomail/ui/swing/FaxToMailUIContext.java | 25 ++++++++++++++++++++++ .../ui/swing/actions/ShowDemandeAction.java | 2 +- .../actions/OpenGroupedDemandAction.java | 3 ++- 5 files changed, 43 insertions(+), 2 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientService.java index 29c436a..4e724ea 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientService.java @@ -43,6 +43,8 @@ public interface ClientService extends FaxToMailService { List<Client> getClientsForFolder(MailFolder folder); + long getClientsCountForFolder(MailFolder folder); + void updateNewClients(); List<Client> getAllClientsForUser(FaxToMailUser currentUser); diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientServiceImpl.java index 7382c76..4b67500 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientServiceImpl.java @@ -161,6 +161,19 @@ public class ClientServiceImpl extends FaxToMailServiceSupport implements Client return result; } + @Override + public long getClientsCountForFolder(MailFolder folder) { + while (!folder.isUseCurrentLevelCompany() && folder.getParent() != null) { + folder = folder.getParent(); + } + + String company = folder.getCompany(); + + ClientTopiaDao clientDao = getPersistenceContext().getClientDao(); + long result = clientDao.forCompanyEquals(company).count(); + return result; + } + /** * Récupère les information de la table NewClient pour mettre à jour la table Client. */ diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java index e578793..82a144b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java @@ -24,6 +24,7 @@ package com.franciaflex.faxtomail.ui.swing; import com.franciaflex.faxtomail.FaxToMailConfiguration; import com.franciaflex.faxtomail.persistence.RessourceClassLoader; +import com.franciaflex.faxtomail.persistence.entities.Client; import com.franciaflex.faxtomail.persistence.entities.DemandType; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.EmailFilter; @@ -34,6 +35,7 @@ import com.franciaflex.faxtomail.persistence.entities.Priority; import com.franciaflex.faxtomail.persistence.entities.Range; import com.franciaflex.faxtomail.persistence.entities.WaitingState; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; +import com.franciaflex.faxtomail.services.service.ClientService; import com.franciaflex.faxtomail.services.service.InitFaxToMailService; import com.franciaflex.faxtomail.services.service.ReferentielService; import com.franciaflex.faxtomail.services.service.UserService; @@ -230,6 +232,8 @@ public class FaxToMailUIContext extends AbstractBean implements Closeable, UIMes /** */ protected List<Contact> contactCache; + protected Map<MailFolder, List<Client>> clientsCache; + protected EmailFilter emailFilter = new EmailFilter(); public static FaxToMailUIContext newContext(FaxToMailConfiguration config) { @@ -325,6 +329,7 @@ public class FaxToMailUIContext extends AbstractBean implements Closeable, UIMes faxToMailActionFactory = new FaxToMailActionFactory(); faxToMailActionEngine = new ApplicationActionEngine(faxToMailActionFactory); + clientsCache = new HashMap<MailFolder, List<Client>>(); } @Override @@ -836,6 +841,26 @@ public class FaxToMailUIContext extends AbstractBean implements Closeable, UIMes this.contactCache = contactCache; } + public List<Client> getClientsCache(MailFolder folder) { + FaxToMailServiceContext serviceContext = newServiceContext(); + ClientService clientService = serviceContext.getClientService(); + + List<Client> clients = clientsCache.get(folder); + if (clients != null) { + long size = clientService.getClientsCountForFolder(folder); + if (size != clients.size()) { + clients = null; + } + } + + if (clients == null) { + clients = clientService.getClientsForFolder(folder); + clientsCache.put(folder, clients); + } + + return clients; + } + public boolean isUseFolderCache() { return useFolderCache; } 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 ba1abf9..3ac3491 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 @@ -182,7 +182,7 @@ public class ShowDemandeAction extends AbstractMainUIFaxToMailAction { } MailFolder folder = currentEmail.getMailFolder(); - List<Client> allowedClients = serviceContext.getClientService().getClientsForFolder(folder); + List<Client> allowedClients = getContext().getClientsCache(folder); currentEmail.setAllowedClients(allowedClients); } 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 1fb9d83..d1139dd 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 @@ -169,7 +169,8 @@ public class OpenGroupedDemandAction extends AbstractFaxToMailAction<DemandeUIMo } - List<Client> allowedClients = serviceContext.getClientService().getClientsForFolder(folder); + + List<Client> allowedClients = getContext().getClientsCache(folder); demandToOpen.setAllowedClients(allowedClients); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.