Author: kmorin Date: 2014-11-28 13:37:30 +0000 (Fri, 28 Nov 2014) New Revision: 707 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/707 Log: revert test am?\195?\169lioration perfs fixes #6197 Les pi?\195?\168ces jointes avec des "/" dans le nom ne s'ouvrent pas Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AttachmentFileImpl.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AttachmentFileImpl.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AttachmentFileImpl.java 2014-11-28 10:47:15 UTC (rev 706) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AttachmentFileImpl.java 2014-11-28 13:37:30 UTC (rev 707) @@ -30,6 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.URLEncoder; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; @@ -55,7 +56,7 @@ File tempFolder = new File(FileUtils.getTempDirectory(), "faxtomail"); tempFolder.mkdir(); - String fileName = getFilename(); + String fileName = URLEncoder.encode(getFilename(), "UTF-8"); tmpLocalFile = new File(tempFolder, fileName); // if the file already exists, then add a number to the name Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-11-28 10:47:15 UTC (rev 706) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-11-28 13:37:30 UTC (rev 707) @@ -386,7 +386,7 @@ } // add same fecth liste as emailService#getEmailForFolder() - String hqlForFetchStep1 = "FROM " + Email.class.getName() + " E " + String hqlForFetchStep1 = "select E." + TopiaEntity.PROPERTY_TOPIA_ID + " FROM " + Email.class.getName() + " E " + "WHERE E." + TopiaEntity.PROPERTY_TOPIA_ID + " IN (" + "select E." + TopiaEntity.PROPERTY_TOPIA_ID + " FROM " + Email.class.getName() + " E " + query.toString() + ") "; @@ -399,33 +399,33 @@ + query.toString() + ")"; } -// String hqlForFetchStep2 = "select distinct E FROM " + Email.class.getName() + " E " + addAllFecthes( -// Email.PROPERTY_PRIORITY, -// Email.PROPERTY_DEMAND_TYPE, -// Email.PROPERTY_CLIENT, -// //Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE, -// Email.PROPERTY_WAITING_STATE, -// Email.PROPERTY_TAKEN_BY -// //Email.PROPERTY_REPLIES, -// //Email.PROPERTY_ATTACHMENT, -// //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, -// //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, -// //Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL -// ) + " WHERE E." + TopiaEntity.PROPERTY_TOPIA_ID + " in ( :topiaIdsForFetch_ )"; + String hqlForFetchStep2 = "select distinct E FROM " + Email.class.getName() + " E " + addAllFecthes( + Email.PROPERTY_PRIORITY, + Email.PROPERTY_DEMAND_TYPE, + Email.PROPERTY_CLIENT, + //Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE, + Email.PROPERTY_WAITING_STATE, + Email.PROPERTY_TAKEN_BY + //Email.PROPERTY_REPLIES, + //Email.PROPERTY_ATTACHMENT, + //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, + //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, + //Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL + ) + " WHERE E." + TopiaEntity.PROPERTY_TOPIA_ID + " in ( :topiaIdsForFetch_ )"; // code copied from topia to perform search - PaginationResult<Email> pageResult = findPage(hqlForFetchStep1, args, pagination); - List<Email> step1ResultTopiaIds = pageResult.getElements(); + PaginationResult<String> pageResult = findPage(hqlForFetchStep1, args, pagination); + List<String> step1ResultTopiaIds = pageResult.getElements(); List<Email> sortedEntities; if (CollectionUtils.isEmpty(step1ResultTopiaIds)) { sortedEntities = Lists.newArrayList(); } else { -// Map<String, Object> step2Args = Maps.newHashMap(); -// step2Args.put("topiaIdsForFetch_", step1ResultTopiaIds); -// List<Email> entities = forHql(hqlForFetchStep2, step2Args).findAll(); + Map<String, Object> step2Args = Maps.newHashMap(); + step2Args.put("topiaIdsForFetch_", step1ResultTopiaIds); + List<Email> entities = forHql(hqlForFetchStep2, step2Args).findAll(); - sortedEntities = step1ResultTopiaIds; + sortedEntities = sortAccordingToIds(entities, step1ResultTopiaIds); } PaginationResult<Email> result = PaginationResult.of(sortedEntities, pageResult.getCount(), pageResult.getCurrentPage()); @@ -445,17 +445,17 @@ // Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, // Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL) for (Email email : result.getElements()) { - Hibernate.initialize(email.getPriority()); - Hibernate.initialize(email.getDemandType()); - Hibernate.initialize(email.getClient()); + //Hibernate.initialize(email.getPriority()); + //Hibernate.initialize(email.getDemandType()); + //Hibernate.initialize(email.getClient()); List<RangeRow> rangeRows = email.getRangeRow(); if (rangeRows != null) { for (RangeRow rangeRow : rangeRows) { Hibernate.initialize(rangeRow.getRange()); } } - Hibernate.initialize(email.getWaitingState()); - Hibernate.initialize(email.getTakenBy()); + //Hibernate.initialize(email.getWaitingState()); + //Hibernate.initialize(email.getTakenBy()); Hibernate.initialize(email.getReplies()); Hibernate.initialize(email.getAttachment()); Collection<History> histories = email.getHistory(); @@ -511,34 +511,34 @@ String query = filteredDemandsOfFolderCondition(folder, emailFilter, args); // add same fecth liste as emailService#getEmailForFolder() - String hqlForFetchStep1 = "FROM " + Email.class.getName() + " E " + query; -// String hqlForFetchStep2 = "select distinct E FROM " + Email.class.getName() + " E " + addAllFecthes( -// Email.PROPERTY_PRIORITY, -// Email.PROPERTY_DEMAND_TYPE, -// Email.PROPERTY_CLIENT, -// //Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE, -// Email.PROPERTY_WAITING_STATE, -// Email.PROPERTY_TAKEN_BY -// //Email.PROPERTY_REPLIES, -// //Email.PROPERTY_ATTACHMENT, -// //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, -// //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, -// //Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL -// ) + " WHERE E." + TopiaEntity.PROPERTY_TOPIA_ID + " in ( :topiaIdsForFetch_ )"; + String hqlForFetchStep1 = "select E." + TopiaEntity.PROPERTY_TOPIA_ID + " FROM " + Email.class.getName() + " E " + query; + String hqlForFetchStep2 = "select distinct E FROM " + Email.class.getName() + " E " + addAllFecthes( + Email.PROPERTY_PRIORITY, + Email.PROPERTY_DEMAND_TYPE, + Email.PROPERTY_CLIENT, + //Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE, + Email.PROPERTY_WAITING_STATE, + Email.PROPERTY_TAKEN_BY + //Email.PROPERTY_REPLIES, + //Email.PROPERTY_ATTACHMENT, + //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, + //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, + //Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL + ) + " WHERE E." + TopiaEntity.PROPERTY_TOPIA_ID + " in ( :topiaIdsForFetch_ )"; // code copied from topia to perform search - PaginationResult<Email> pageResult = findPage(hqlForFetchStep1, args, pagination); - List<Email> step1ResultTopiaIds = pageResult.getElements(); + PaginationResult<String> pageResult = findPage(hqlForFetchStep1, args, pagination); + List<String> step1ResultTopiaIds = pageResult.getElements(); List<Email> sortedEntities; if (CollectionUtils.isEmpty(step1ResultTopiaIds)) { sortedEntities = Lists.newArrayList(); } else { -// Map<String, Object> step2Args = Maps.newHashMap(); -// step2Args.put("topiaIdsForFetch_", step1ResultTopiaIds); -// List<Email> entities = forHql(hqlForFetchStep2, step2Args).findAll(); + Map<String, Object> step2Args = Maps.newHashMap(); + step2Args.put("topiaIdsForFetch_", step1ResultTopiaIds); + List<Email> entities = forHql(hqlForFetchStep2, step2Args).findAll(); - sortedEntities = step1ResultTopiaIds; + sortedEntities = sortAccordingToIds(entities, step1ResultTopiaIds); } PaginationResult<Email> result = PaginationResult.of(sortedEntities, pageResult.getCount(), pageResult.getCurrentPage()); @@ -558,17 +558,17 @@ // Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, // Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL) for (Email email : result.getElements()) { - Hibernate.initialize(email.getPriority()); - Hibernate.initialize(email.getDemandType()); - Hibernate.initialize(email.getClient()); + //Hibernate.initialize(email.getPriority()); + //Hibernate.initialize(email.getDemandType()); + //Hibernate.initialize(email.getClient()); List<RangeRow> rangeRows = email.getRangeRow(); if (rangeRows != null) { for (RangeRow rangeRow : rangeRows) { Hibernate.initialize(rangeRow.getRange()); } } - Hibernate.initialize(email.getWaitingState()); - Hibernate.initialize(email.getTakenBy()); + //Hibernate.initialize(email.getWaitingState()); + //Hibernate.initialize(email.getTakenBy()); Hibernate.initialize(email.getReplies()); Hibernate.initialize(email.getAttachment()); Collection<History> histories = email.getHistory(); @@ -918,7 +918,6 @@ /* * @deprecated because this need to be supported by topia (see http://forge.nuiton.org/issues/3427) - * Do not use with mssql, it is REAAAAAAAAAALLY slow */ @Deprecated protected String addAllFecthes(String... fetchProperties) {