This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit 00dd680bd77a7e22f9bb880dce9b889ccd4975fc Author: Kevin Morin <morin@codelutin.com> Date: Thu Aug 27 11:22:47 2015 +0200 remplacement du champ code client par une combo avec les clients dans la recherche (refs #7422) --- .../persistence/entities/EmailTopiaDao.java | 8 +++---- .../persistence/entities/SearchFilter.java | 18 +++++++-------- .../faxtomail/services/service/ClientService.java | 3 +++ .../services/service/ClientServiceImpl.java | 25 +++++++++++++++++++++ .../services/service/EmailServiceTest.java | 5 ++++- .../swing/actions/AbstractChangeScreenAction.java | 18 --------------- .../ui/swing/actions/ShowDemandeListAction.java | 16 +++++++++++++ .../ui/swing/actions/ShowRechercheAction.java | 15 ++++++++++++- .../faxtomail/ui/swing/content/search/SearchUI.css | 5 +++++ .../ui/swing/content/search/SearchUI.jaxx | 6 +++-- .../ui/swing/content/search/SearchUIHandler.java | 9 +++++++- .../ui/swing/content/search/SearchUIModel.java | 26 +++++++++++++++++----- .../i18n/faxtomail-ui-swing_fr_FR.properties | 2 +- 13 files changed, 113 insertions(+), 43 deletions(-) diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java index c3efeff..c0ff0b3 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java @@ -270,10 +270,10 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { args.put(SearchFilter.PROPERTY_SENDER, "%" + searchFilter.getSender() + "%"); } - // client code - if (StringUtils.isNoneBlank(searchFilter.getClientCode())) { - query.append(" AND lower(E." + Email.PROPERTY_CLIENT + "." + Client.PROPERTY_CODE + ") LIKE lower(:" + SearchFilter.PROPERTY_CLIENT_CODE + ")"); - args.put(SearchFilter.PROPERTY_CLIENT_CODE, "%" + searchFilter.getClientCode() + "%"); + // client + if (searchFilter.getClient() != null) { + query.append(" AND E." + Email.PROPERTY_CLIENT + " = :" + SearchFilter.PROPERTY_CLIENT); + args.put(SearchFilter.PROPERTY_CLIENT, searchFilter.getClient()); } // email subject diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/SearchFilter.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/SearchFilter.java index 9507e5d..de934e2 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/SearchFilter.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/SearchFilter.java @@ -65,7 +65,7 @@ public class SearchFilter extends AbstractSerializableBean { public static final String PROPERTY_MAX_TRANSFER_DATE = "maxTransferDate"; public static final String PROPERTY_MIN_REPLY_DATE = "minReplyDate"; public static final String PROPERTY_MAX_REPLY_DATE = "maxReplyDate"; - public static final String PROPERTY_CLIENT_CODE = "clientCode"; + public static final String PROPERTY_CLIENT = "client"; public static final String PROPERTY_ADD_GROUP_DEMANDS = "addGroupDemands"; protected String sender; @@ -130,7 +130,7 @@ public class SearchFilter extends AbstractSerializableBean { protected Date maxReplyDate; - protected String clientCode; + protected Client client; protected boolean addGroupDemands; @@ -289,15 +289,15 @@ public class SearchFilter extends AbstractSerializableBean { this.maxPrintingDate = maxPrintingDate; firePropertyChange(PROPERTY_MAX_PRINTING_DATE, oldValue, maxPrintingDate); } - - public String getClientCode() { - return clientCode; + + public Client getClient() { + return client; } - public void setClientCode(String clientCode) { - String oldValue = this.clientCode; - this.clientCode = clientCode; - firePropertyChange(PROPERTY_CLIENT_CODE, oldValue, clientCode); + public void setClient(Client client) { + Object oldValue = getClient(); + this.client = client; + firePropertyChange(PROPERTY_CLIENT, oldValue, client); } public String getMessage() { 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 5a4bceb..29c436a 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 @@ -26,6 +26,7 @@ package com.franciaflex.faxtomail.services.service; import com.franciaflex.faxtomail.persistence.entities.Client; 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.services.FaxToMailService; @@ -43,4 +44,6 @@ public interface ClientService extends FaxToMailService { List<Client> getClientsForFolder(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 005fba7..c066c72 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 @@ -52,8 +52,11 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; import java.util.List; import java.util.Objects; +import java.util.Set; /** * Service de gestion des clients. @@ -307,4 +310,26 @@ public class ClientServiceImpl extends FaxToMailServiceSupport implements Client getPersistenceContext().commit(); } + @Override + public List<Client> getAllClientsForUser(FaxToMailUser user) { + List<MailFolder> folders = getMailFolderService().getRootMailFoldersWithReadingRights(user); + Set<String> companies = new HashSet<>(); + + fetchCompaniesFromFolders(folders, companies); + + ClientTopiaDao clientDao = getPersistenceContext().getClientDao(); + List<Client> result = clientDao.forCompanyIn(companies).findAll(); + return result; + } + + protected void fetchCompaniesFromFolders(Collection<MailFolder> folders, Set<String> companies) { + for (MailFolder folder : folders) { + if (folder.isUseCurrentLevelCompany()) { + companies.add(folder.getCompany()); + } + + fetchCompaniesFromFolders(folder.getChildren(), companies); + } + + } } diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java index 8720163..d36bddf 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java @@ -62,11 +62,14 @@ public class EmailServiceTest extends AbstractFaxToMailServiceTest { protected UserService userService; + protected ClientService clientService; + @Before public void setUp() throws IOException { service = newService(EmailService.class); referentielService = newService(ReferentielService.class); userService = newService(UserService.class); + clientService = newService(ClientService.class); newService(InitTestData.class).initTestData(); } @@ -81,7 +84,7 @@ public class EmailServiceTest extends AbstractFaxToMailServiceTest { Assert.assertEquals(10, emails.getCount()); // client code filter - filter.setClientCode("9915"); + filter.setClient(clientService.getClientForCode("9915", null)); emails = service.search(filter, getCurrentUser(), paginationParameter); Assert.assertEquals(10, emails.getCount()); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java index a89892f..fa60926 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java @@ -22,12 +22,9 @@ package com.franciaflex.faxtomail.ui.swing.actions; * #L% */ -import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUI; -import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import jaxx.runtime.SwingUtil; import jaxx.runtime.context.JAXXContextEntryDef; @@ -102,19 +99,4 @@ public abstract class AbstractChangeScreenAction extends AbstractMainUIFaxToMail context.setScreen(screen); } - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - if (screen == FaxToMailScreen.LIST) { - MailFolder currentMailFolder = getContext().getCurrentMailFolder(); - DemandeUIModel currentEmail = getContext().getCurrentEmail(); - - if (currentMailFolder == null && currentEmail != null) { - currentMailFolder = currentEmail.getMailFolder(); - } - DemandeListUI listUI = (DemandeListUI) getHandler().getCurrentBody(); - listUI.getModel().setSelectedFolder(currentMailFolder); - } - } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeListAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeListAction.java index f03c88e..bcabf89 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeListAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeListAction.java @@ -22,8 +22,11 @@ package com.franciaflex.faxtomail.ui.swing.actions; * #L% */ +import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUI; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import static org.nuiton.i18n.I18n.t; @@ -46,4 +49,17 @@ public class ShowDemandeListAction extends AbstractChangeScreenAction { super.doAction(); } + @Override + public void postSuccessAction() { + super.postSuccessAction(); + + MailFolder currentMailFolder = getContext().getCurrentMailFolder(); + DemandeUIModel currentEmail = getContext().getCurrentEmail(); + + if (currentMailFolder == null && currentEmail != null) { + currentMailFolder = currentEmail.getMailFolder(); + } + DemandeListUI listUI = (DemandeListUI) getHandler().getCurrentBody(); + listUI.getModel().setSelectedFolder(currentMailFolder); + } } 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 0a32182..d434fd7 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 @@ -22,8 +22,14 @@ package com.franciaflex.faxtomail.ui.swing.actions; * #L% */ +import com.franciaflex.faxtomail.persistence.entities.Client; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; +import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; +import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIModel; + +import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -41,7 +47,14 @@ public class ShowRechercheAction extends AbstractChangeScreenAction { @Override public void doAction() throws Exception { - getContext().setCurrentPaginationParameter(null); + 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); + super.doAction(); } + } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css index 8dbeb3b..d3d3ee3 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css @@ -201,6 +201,11 @@ JXDatePicker { text: "faxtomail.demande.client.label"; } +#clientComboBox { + property: client; + selectedItem: { model.getClient() }; +} + #docTypeLabel { text: "faxtomail.demande.docType.label"; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx index 2bbff9d..c90bfee 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx @@ -28,6 +28,7 @@ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil com.franciaflex.faxtomail.persistence.entities.HasLabel + com.franciaflex.faxtomail.persistence.entities.Client com.franciaflex.faxtomail.persistence.entities.Email com.franciaflex.faxtomail.persistence.entities.DemandType com.franciaflex.faxtomail.persistence.entities.DemandStatus @@ -175,8 +176,9 @@ <JLabel id='clientLabel'/> </cell> <cell columns='3' weightx='1'> - <JTextField id='clientField' - onKeyReleased='handler.setText(event, "clientCode")'/> + <BeanFilterableComboBox id='clientComboBox' + constructorParams='this' + genericType="Client"/> </cell> <cell> 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 c5b91a3..a837f83 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 @@ -22,15 +22,16 @@ package com.franciaflex.faxtomail.ui.swing.content.search; * #L% */ +import com.franciaflex.faxtomail.persistence.entities.Client; import com.franciaflex.faxtomail.persistence.entities.DemandStatus; 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.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.content.search.actions.SearchAction; import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.content.search.actions.SearchAction; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler; import com.franciaflex.faxtomail.ui.swing.util.DemandeTableModel; import com.franciaflex.faxtomail.ui.swing.util.PaginationComboModel; @@ -93,6 +94,9 @@ public class SearchUIHandler extends AbstractFaxToMailDemandListHandler<SearchUI searchUIModel.setMinReceptionDate(twoMonthsAgo); //searchUIModel.setMaxPrintingDate(now); //searchUIModel.setMinPrintingDate(twoMonthsAgo); + + List<Client> allowedClients = ui.getContextValue(List.class, SearchUIModel.PROPERTY_ALLOWED_CLIENTS); + searchUIModel.setAllowedClients(allowedClients); } getUI().setContextValue(searchUIModel); @@ -124,6 +128,9 @@ public class SearchUIHandler extends AbstractFaxToMailDemandListHandler<SearchUI initBeanFilterableComboBox(ui.getRepliedByComboBox(), users, model.getReplyBy()); + initBeanFilterableComboBox(ui.getClientComboBox(), + model.getAllowedClients(), + model.getClient()); initCheckBoxComboBox(ui.getDocTypeComboBox(), getContext().getDemandTypeCache(), diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java index 67be867..e859dd6 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java @@ -22,6 +22,7 @@ package com.franciaflex.faxtomail.ui.swing.content.search; * #L% */ +import com.franciaflex.faxtomail.persistence.entities.Client; import com.franciaflex.faxtomail.persistence.entities.DemandStatus; import com.franciaflex.faxtomail.persistence.entities.DemandType; import com.franciaflex.faxtomail.persistence.entities.Email; @@ -46,6 +47,7 @@ import java.util.List; */ public class SearchUIModel extends AbstractFaxToMailBeanUIModel<SearchFilter, SearchUIModel> { + public static final String PROPERTY_ALLOWED_CLIENTS = "allowedClients"; public static final String PROPERTY_RESULTS = "results"; public static final String PROPERTY_MENU_ENABLED = "menuEnabled"; public static final String PROPERTY_GROUP_ENABLED = "groupEnabled"; @@ -55,6 +57,8 @@ public class SearchUIModel extends AbstractFaxToMailBeanUIModel<SearchFilter, Se protected final SearchFilter editObject = new SearchFilter(); + protected List<Client> allowedClients; + protected int resultPerPage = 50; protected PaginationParameter paginationParameter = PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false); protected PaginationResult<Email> paginationResult = PaginationResult.of(null, 0, paginationParameter); @@ -95,14 +99,24 @@ public class SearchUIModel extends AbstractFaxToMailBeanUIModel<SearchFilter, Se return editObject.getDemandObject(); } - public void setClientCode(String clientCode) { - Object oldValue = getClientCode(); - editObject.setClientCode(clientCode); - firePropertyChanged(SearchFilter.PROPERTY_CLIENT_CODE, oldValue, clientCode); + public void setClient(Client client) { + Object oldValue = getClient(); + editObject.setClient(client); + firePropertyChanged(SearchFilter.PROPERTY_CLIENT, oldValue, client); + } + + public Client getClient() { + return editObject.getClient(); + } + + public List<Client> getAllowedClients() { + return allowedClients; } - public String getClientCode() { - return editObject.getClientCode(); + public void setAllowedClients(List<Client> allowedClients) { + Object oldValue = getAllowedClients(); + this.allowedClients = allowedClients; + firePropertyChange(PROPERTY_ALLOWED_CLIENTS, oldValue, allowedClients); } public void setMessage(String message) { diff --git a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties index 710628a..5517953 100644 --- a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties +++ b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties @@ -106,7 +106,7 @@ faxtomail.demande.attachment.label=Pièces-jointes faxtomail.demande.back.button.label=Quitter faxtomail.demande.body.label=Corps du mail faxtomail.demande.ccRecipients.label=Copie à \: -faxtomail.demande.client.label=Code client +faxtomail.demande.client.label=Client faxtomail.demande.clientBrand.label=Marque faxtomail.demande.clientCode.label=Client faxtomail.demande.commandNb.label=Numéro de commande/devis -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.