This is an automated email from the git hooks/post-receive script. New commit to branch develop-1.1.x in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit ee477b24854ea1956fae66e70c9d73d8356437f2 Author: Kevin Morin <morin@codelutin.com> Date: Wed Nov 4 16:11:54 2015 +0100 fixes #7693 --- .../persistence/entities/EmailTopiaDao.java | 38 +++++++++++++--------- .../persistence/entities/MailFolderTopiaDao.java | 9 ++++- .../src/main/resources/faxToMail.properties | 5 ++- .../services/service/EmailServiceImpl.java | 9 ++--- .../services/service/MailFolderServiceImpl.java | 2 +- 5 files changed, 40 insertions(+), 23 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..3c4c215 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 @@ -266,19 +266,19 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { // email sender if (StringUtils.isNotBlank(searchFilter.getSender())) { - query.append(" AND lower(E." + Email.PROPERTY_SENDER + ") LIKE lower(:" + SearchFilter.PROPERTY_SENDER + ")"); + query.append(" AND E." + Email.PROPERTY_SENDER + " LIKE :" + SearchFilter.PROPERTY_SENDER); 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 + ")"); + query.append(" AND E." + Email.PROPERTY_CLIENT + "." + Client.PROPERTY_CODE + " LIKE :" + SearchFilter.PROPERTY_CLIENT_CODE); args.put(SearchFilter.PROPERTY_CLIENT_CODE, "%" + searchFilter.getClientCode() + "%"); } // email subject if (StringUtils.isNotBlank(searchFilter.getDemandObject())) { - query.append(" AND lower(E." + Email.PROPERTY_OBJECT + ") LIKE lower(:" + SearchFilter.PROPERTY_DEMAND_OBJECT + ")"); + query.append(" AND E." + Email.PROPERTY_OBJECT + " LIKE :" + SearchFilter.PROPERTY_DEMAND_OBJECT); args.put(SearchFilter.PROPERTY_DEMAND_OBJECT, "%" + searchFilter.getDemandObject() + "%"); } @@ -296,13 +296,13 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { // email ediCodeNumber if (StringUtils.isNotBlank(searchFilter.getEdiCodeNumber())) { - query.append(" AND lower(E." + Email.PROPERTY_EDI_ERROR + ") LIKE lower(:" + SearchFilter.PROPERTY_EDI_CODE_NUMBER + ")"); + query.append(" AND E." + Email.PROPERTY_EDI_ERROR + " LIKE :" + SearchFilter.PROPERTY_EDI_CODE_NUMBER); args.put(SearchFilter.PROPERTY_EDI_CODE_NUMBER, "%" + searchFilter.getEdiCodeNumber() + "%"); } // email projectReference if (StringUtils.isNotBlank(searchFilter.getProjectReference())) { - query.append(" AND lower(E." + Email.PROPERTY_PROJECT_REFERENCE + ") LIKE lower(:" + SearchFilter.PROPERTY_PROJECT_REFERENCE + ")"); + query.append(" AND E." + Email.PROPERTY_PROJECT_REFERENCE + " LIKE :" + SearchFilter.PROPERTY_PROJECT_REFERENCE); args.put(SearchFilter.PROPERTY_PROJECT_REFERENCE, "%" + searchFilter.getProjectReference() + "%"); } @@ -344,12 +344,12 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { // email message if (StringUtils.isNotBlank(searchFilter.getMessage())) { - query.append(" AND lower(E." + Email.PROPERTY_COMMENT + ") LIKE lower(:" + SearchFilter.PROPERTY_MESSAGE + ")"); + query.append(" AND E." + Email.PROPERTY_COMMENT + " LIKE :" + SearchFilter.PROPERTY_MESSAGE); args.put(SearchFilter.PROPERTY_MESSAGE, "%" + searchFilter.getMessage() + "%"); } if (StringUtils.isNotBlank(searchFilter.getBody())) { - query.append(" AND lower(E." + Email.PROPERTY_ORIGINAL_EMAIL + "." + OriginalEmail.PROPERTY_CONTENT + ") LIKE lower(:" + SearchFilter.PROPERTY_BODY + ")"); + query.append(" AND E." + Email.PROPERTY_ORIGINAL_EMAIL + "." + OriginalEmail.PROPERTY_CONTENT + " LIKE :" + SearchFilter.PROPERTY_BODY); args.put(SearchFilter.PROPERTY_BODY, "%" + searchFilter.getBody() + "%"); } @@ -369,8 +369,8 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { // email localReference if (StringUtils.isNotBlank(searchFilter.getLocalReference())) { query.append(" AND (EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")"); - query.append(" AND lower(RR." + RangeRow.PROPERTY_COMMAND_NUMBER + ") LIKE lower(:" + SearchFilter.PROPERTY_LOCAL_REFERENCE + "))"); - query.append(" OR lower(E." + Email.PROPERTY_COMPANY_REFERENCE + ") LIKE lower(:" + SearchFilter.PROPERTY_LOCAL_REFERENCE + ")"); + query.append(" AND RR." + RangeRow.PROPERTY_COMMAND_NUMBER + " LIKE :" + SearchFilter.PROPERTY_LOCAL_REFERENCE + ")"); + query.append(" OR E." + Email.PROPERTY_COMPANY_REFERENCE + " LIKE :" + SearchFilter.PROPERTY_LOCAL_REFERENCE); args.put(SearchFilter.PROPERTY_LOCAL_REFERENCE, "%" + searchFilter.getLocalReference() + "%"); query.append(")"); } @@ -378,8 +378,8 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { // command Nb if (StringUtils.isNotBlank(searchFilter.getCommandNb())) { query.append(" AND (EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")"); - query.append(" AND lower(RR." + RangeRow.PROPERTY_COMMAND_NUMBER + ") LIKE lower(:" + SearchFilter.PROPERTY_COMMAND_NB + "))"); - query.append(" OR lower(E." + Email.PROPERTY_COMPANY_REFERENCE + ") LIKE lower(:" + SearchFilter.PROPERTY_COMMAND_NB + ")"); + query.append(" AND RR." + RangeRow.PROPERTY_COMMAND_NUMBER + " LIKE :" + SearchFilter.PROPERTY_COMMAND_NB + ")"); + query.append(" OR E." + Email.PROPERTY_COMPANY_REFERENCE + " LIKE :" + SearchFilter.PROPERTY_COMMAND_NB); args.put(SearchFilter.PROPERTY_COMMAND_NB, "%" + searchFilter.getCommandNb() + "%"); query.append(")"); } @@ -447,6 +447,7 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { // Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, // Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL) for (Email email : result.getElements()) { + Hibernate.initialize(email.getMailFolder()); //Hibernate.initialize(email.getPriority()); //Hibernate.initialize(email.getDemandType()); //Hibernate.initialize(email.getClient()); @@ -480,14 +481,19 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { return result; } - public Collection<Email> findArchivedEmails(String commandQuotationNumber, Collection<MailFolder> folders) { +// public Collection<Email> findArchivedEmails(String commandQuotationNumber, Collection<MailFolder> folders) { + public Collection<Email> findArchivedEmails(String commandQuotationNumber, String company) { StringBuilder query = new StringBuilder(); Map<String, Object> args = new HashMap<>(); Set<Email> result = new HashSet<>(); - query.append(newFromClause("E") + " WHERE E." + Email.PROPERTY_MAIL_FOLDER + " in (:folders)"); - args.put("folders", folders); + query.append(newFromClause("E") + " WHERE E." + Email.PROPERTY_MAIL_FOLDER + "." + MailFolder.PROPERTY_COMPANY + " = (:company)"); + args.put("company", company); + +// query.append(newFromClause("E") + " WHERE E." + Email.PROPERTY_MAIL_FOLDER + " in (:folders)"); +// args.put("folders", folders); + query.append(" AND E." + Email.PROPERTY_DEMAND_STATUS + " = :archiveStatus"); args.put("archiveStatus", DemandStatus.ARCHIVED); @@ -502,7 +508,7 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { StringBuilder query1 = new StringBuilder(query); query1.append(" AND (EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")"); - query1.append(" AND lower(RR." + RangeRow.PROPERTY_COMMAND_NUMBER + ") LIKE lower(:" + SearchFilter.PROPERTY_COMMAND_NB + "))"); + query1.append(" AND RR." + RangeRow.PROPERTY_COMMAND_NUMBER + " LIKE :" + SearchFilter.PROPERTY_COMMAND_NB + ")"); args.put(SearchFilter.PROPERTY_COMMAND_NB, "%" + commandQuotationNumber + "%"); @@ -511,7 +517,7 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { result.addAll(this.<Email>findAll(query1.toString(), args)); StringBuilder query2 = new StringBuilder(query); - query2.append(" AND (lower(E." + Email.PROPERTY_COMPANY_REFERENCE + ") LIKE lower(:" + SearchFilter.PROPERTY_COMMAND_NB + ")"); + query2.append(" AND (E." + Email.PROPERTY_COMPANY_REFERENCE + " LIKE :" + SearchFilter.PROPERTY_COMMAND_NB); query2.append(")"); result.addAll(this.<Email>findAll(query2.toString(), args)); diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java index 47738fa..61180f7 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java @@ -55,7 +55,14 @@ public class MailFolderTopiaDao extends AbstractMailFolderTopiaDao<MailFolder> { } public Collection<MailFolder> getReadableFolders(FaxToMailUser user) { - String query = newFromClause("mf") + " where (:user in elements(mf.readRightUsers) or exists (from mf.readRightGroups g where g in (:groups))) and mf.archiveFolder = false"; + return getReadableFolders(user, true); + } + + public Collection<MailFolder> getReadableFolders(FaxToMailUser user, boolean filterArchiveFoldes) { + String query = newFromClause("mf") + " where (:user in elements(mf.readRightUsers) or exists (from mf.readRightGroups g where g in (:groups)))"; + if (filterArchiveFoldes) { + query += " and mf.archiveFolder = false"; + } HashMap<String, Object> map = Maps.newHashMap(); map.put("user", user); map.put("groups", user.getUserGroups()); diff --git a/faxtomail-persistence/src/main/resources/faxToMail.properties b/faxtomail-persistence/src/main/resources/faxToMail.properties index 8c53b23..028c59d 100644 --- a/faxtomail-persistence/src/main/resources/faxToMail.properties +++ b/faxtomail-persistence/src/main/resources/faxToMail.properties @@ -31,13 +31,16 @@ 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.176:1433/faxtomail +#hibernate.connection.url=jdbc:jtds:sqlserver://192.168.100.98:1433/faxtomail #hibernate.connection.username=fx #hibernate.connection.password=FX2013! +#hibernate.connection.isolation=4096 #hibernate.hbm2ddl.auto=validate hibernate.hbm2ddl.auto= +hibernate.show_sql=true + hibernate.jdbc.batch_size=20 hibernate.c3p0.min_size=5 diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java index 300aad0..61fbda9 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java @@ -959,12 +959,13 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe Preconditions.checkArgument(StringUtils.isNotBlank(commandQuotationNumber)); Preconditions.checkArgument(StringUtils.isNotBlank(company)); - MailFolderTopiaDao mailFolderDao = getPersistenceContext().getMailFolderDao(); - Collection<MailFolder> companyFolders = mailFolderDao.forCompanyEquals(company).findAll(); - Set<MailFolder> archiveFolders = new HashSet<>(companyFolders); +// MailFolderTopiaDao mailFolderDao = getPersistenceContext().getMailFolderDao(); +// Collection<MailFolder> companyFolders = mailFolderDao.forCompanyEquals(company).findAll(); +// Set<MailFolder> archiveFolders = new HashSet<>(companyFolders); EmailTopiaDao emailDao = getPersistenceContext().getEmailDao(); - return emailDao.findArchivedEmails(commandQuotationNumber, archiveFolders); +// return emailDao.findArchivedEmails(commandQuotationNumber, archiveFolders); + return emailDao.findArchivedEmails(commandQuotationNumber, company); } @Override diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java index 1ace3ec..b89d4c0 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java @@ -138,7 +138,7 @@ public class MailFolderServiceImpl extends FaxToMailServiceSupport implements Ma @Override public Set<MailFolder> getAllMailFoldersWithReadingRights(FaxToMailUser user) { MailFolderTopiaDao dao = getPersistenceContext().getMailFolderDao(); - return new HashSet<>(dao.getReadableFolders(user)); + return new HashSet<>(dao.getReadableFolders(user, false)); } protected void browseReadableFolders(MailFolder folder, FaxToMailUser user, boolean writable) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.