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 ab49fc1099ca45ba45ff55db55e7562cfb372541 Author: Kevin Morin <morin@codelutin.com> Date: Thu Apr 6 18:06:14 2017 +0200 fixes #9099 mauvais tri si on affiche le nom entier dans les colonnes representant des utilisateurs + correction sur des requetes qui ne passent pas sur sqlserver --- .../persistence/entities/EmailTopiaDao.java | 49 ++++++++++++++++++---- .../faxtomail/persistence/entities/MailField.java | 6 +-- .../src/main/resources/faxToMail.properties | 2 +- .../ui/swing/util/FolderTreeSwingSessionState.java | 24 +++++++++++ 4 files changed, 70 insertions(+), 11 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 7ee4374..aba1a85 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 @@ -524,30 +524,65 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { String tableToJoin = null; if (!pagination.getOrderClauses().isEmpty()) { orderClause = pagination.getOrderClauses().get(0).getClause(); - String clauseNoSum = orderClause.replaceAll("SUM\\((.*)\\)", "$1"); + String clauseNoSum = orderClause.replaceAll("(SUM|SIZE)\\((.*)\\)", "$2"); int dotIndex = clauseNoSum.indexOf('.'); if (dotIndex >= 0) { tableToJoin = clauseNoSum.substring(0, dotIndex); + } else { + // il s'agit d'un champ portant sur un utilisateur, + // donc on vérifie dans la conf du dossier si on trie sur le trigramme ou le nom complet + MailFolder folderWithTrigrammConf = folder; + while (folderWithTrigrammConf.getParent() != null + && folderWithTrigrammConf.getDisplayOnlyUserTrigraphInTables() == null) { + folderWithTrigrammConf = folderWithTrigrammConf.getParent(); + } + boolean sortOnTrigraph = Boolean.TRUE.equals(folderWithTrigrammConf.getDisplayOnlyUserTrigraphInTables()); + boolean desc = pagination.getOrderClauses().get(0).isDesc(); + if (sortOnTrigraph) { + orderClause += "." + FaxToMailUser.PROPERTY_TRIGRAPH; + pagination = PaginationParameter.of(pagination.getPageNumber(), pagination.getPageSize(), + orderClause, desc); + } else { + String originalClause = orderClause; + orderClause += "." + FaxToMailUser.PROPERTY_LAST_NAME + + ", " + originalClause + "." + FaxToMailUser.PROPERTY_FIRST_NAME + + ", " + originalClause + "." + FaxToMailUser.PROPERTY_TRIGRAPH; + pagination = PaginationParameter.of(pagination.getPageNumber(), pagination.getPageSize(), + originalClause + "." + FaxToMailUser.PROPERTY_LAST_NAME, desc, + originalClause + "." + FaxToMailUser.PROPERTY_FIRST_NAME, desc, + originalClause + "." + FaxToMailUser.PROPERTY_TRIGRAPH, desc); + } } } boolean orderByWithSum = orderClause != null && orderClause.startsWith("SUM("); + boolean orderByWithSize = orderClause != null && orderClause.startsWith("SIZE("); // add same fecth liste as emailService#getEmailForFolder() StringBuilder hqlForFetchStep1 = new StringBuilder("SELECT " + EMAIL_IDENTIFIER + "." + TopiaEntity.PROPERTY_TOPIA_ID); - if (orderByWithSum) { - hqlForFetchStep1.append(", " + orderClause); + if (orderClause != null && !orderByWithSize) { + hqlForFetchStep1.append(", ").append(orderClause); } - hqlForFetchStep1.append(" FROM " + Email.class.getName() + " " + EMAIL_IDENTIFIER); + if (orderByWithSize && tableToJoin != null) { + hqlForFetchStep1.append(", ").append(tableToJoin).append(".").append(TopiaEntity.PROPERTY_TOPIA_ID); + } + hqlForFetchStep1.append(" FROM ").append(Email.class.getName()).append(" ").append(EMAIL_IDENTIFIER); if (RANGE_ROW_IDENTIFIER.equals(tableToJoin)) { - hqlForFetchStep1.append(" LEFT JOIN " + EMAIL_IDENTIFIER + "." + Email.PROPERTY_RANGE_ROW + " " + RANGE_ROW_IDENTIFIER); + hqlForFetchStep1.append(" LEFT JOIN ").append(EMAIL_IDENTIFIER).append(".").append(Email.PROPERTY_RANGE_ROW) + .append(" ").append(RANGE_ROW_IDENTIFIER); } if (orderClause != null) { addJoinsForOrderBy(orderClause, hqlForFetchStep1); } - hqlForFetchStep1.append(" ").append(query).append(" GROUP BY E.topiaId"); + hqlForFetchStep1.append(" ").append(query).append(" GROUP BY ") + .append(EMAIL_IDENTIFIER).append(".").append(Email.PROPERTY_TOPIA_ID); + if (orderClause != null && !orderByWithSum && !orderByWithSize) { + hqlForFetchStep1.append(", ").append(orderClause); + } else if (orderByWithSize && tableToJoin != null) { + hqlForFetchStep1.append(", ").append(tableToJoin).append(".").append(TopiaEntity.PROPERTY_TOPIA_ID); + } if (log.isTraceEnabled()) { log.trace("getEmailForFolder 1 - " + hqlForFetchStep1); } @@ -578,7 +613,7 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { } List<String> step1ResultTopiaIds; - if (orderByWithSum) { + if (orderClause != null && (!orderByWithSize || tableToJoin != null)) { step1ResultTopiaIds = Lists.transform(pageResult.getElements(), new Function<Object[], String>() { @Override public String apply(Object[] input) { diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailField.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailField.java index 0056018..9dd1e65 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailField.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailField.java @@ -51,14 +51,14 @@ public enum MailField { PF_NB("SUM(" + EmailTopiaDao.RANGE_ROW_IDENTIFIER + "." + RangeRow.PROPERTY_PRODUCT_QUANTITY + ")"), SAV_NB("SUM(" + EmailTopiaDao.RANGE_ROW_IDENTIFIER + "." + RangeRow.PROPERTY_SAV_QUANTITY + ")"), QUOTATION_NB("SUM(" + EmailTopiaDao.RANGE_ROW_IDENTIFIER + "." + RangeRow.PROPERTY_QUOTATION_QUANTITY + ")"), - TAKEN_BY(EmailTopiaDao.TAKEN_BY_IDENTIFIER + "." + FaxToMailUser.PROPERTY_TRIGRAPH), - LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER(EmailTopiaDao.LAST_ATTACHMENT_OPENER_IDENTIFIER + "." + FaxToMailUser.PROPERTY_TRIGRAPH), + TAKEN_BY(EmailTopiaDao.TAKEN_BY_IDENTIFIER), + LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER(EmailTopiaDao.LAST_ATTACHMENT_OPENER_IDENTIFIER), REPLIES("SIZE(" + EmailTopiaDao.EMAIL_IDENTIFIER + "." + Email.PROPERTY_REPLIES + ")"), ATTACHMENT("SIZE(" + EmailTopiaDao.EMAIL_IDENTIFIER + "." + Email.PROPERTY_ATTACHMENT + ")"), GROUP("SIZE(" + EmailTopiaDao.GROUP_IDENTIFIER + "." + EmailGroup.PROPERTY_EMAIL + ")"), EDI_RETURN(EmailTopiaDao.EMAIL_IDENTIFIER + "." + Email.PROPERTY_EDI_ERROR), SUBJECT(EmailTopiaDao.EMAIL_IDENTIFIER + "." + Email.PROPERTY_SUBJECT), - LAST_PRINTING_USER(EmailTopiaDao.LAST_PRINTING_USER_IDENTIFIER + "." + FaxToMailUser.PROPERTY_TRIGRAPH), + LAST_PRINTING_USER(EmailTopiaDao.LAST_PRINTING_USER_IDENTIFIER), LAST_PRINTING_DATE(EmailTopiaDao.EMAIL_IDENTIFIER + "." + Email.PROPERTY_LAST_PRINTING_DATE); private String orderProperty; diff --git a/faxtomail-persistence/src/main/resources/faxToMail.properties b/faxtomail-persistence/src/main/resources/faxToMail.properties index f7d5084..237548e 100644 --- a/faxtomail-persistence/src/main/resources/faxToMail.properties +++ b/faxtomail-persistence/src/main/resources/faxToMail.properties @@ -31,7 +31,7 @@ hibernate.connection.password= #hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect #hibernate.connection.driver_class=net.sourceforge.jtds.jdbc.Driver -#hibernate.connection.url=jdbc:jtds:sqlserver://192.168.100.247:1433/faxtomailtest +#hibernate.connection.url=jdbc:jtds:sqlserver://192.168.100.238:1433/faxtomail #hibernate.connection.username=fx #hibernate.connection.password=FX2013! diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FolderTreeSwingSessionState.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FolderTreeSwingSessionState.java index f6c9b16..7a56231 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FolderTreeSwingSessionState.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FolderTreeSwingSessionState.java @@ -1,5 +1,29 @@ package com.franciaflex.faxtomail.ui.swing.util; +/*- + * #%L + * FaxToMail :: UI + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2014 - 2017 Mac-Groupe, Code Lutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + import com.franciaflex.faxtomail.persistence.entities.MailFolder; import jaxx.runtime.swing.session.State; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.