Author: kmorin Date: 2014-12-23 16:24:48 +0000 (Tue, 23 Dec 2014) New Revision: 735 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/735 Log: refs #6335 Corriger les lenteurs d'affichage des listes Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-12-20 20:35:03 UTC (rev 734) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-12-23 16:24:48 UTC (rev 735) @@ -166,31 +166,20 @@ Email email = getPersistenceContext().getEmailDao() .forTopiaIdEquals(id) .addAllFetches(Email.PROPERTY_DEMAND_TYPE, - //Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE, - //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, - //Email.PROPERTY_REPLIES, - //Email.PROPERTY_ATTACHMENT, Email.PROPERTY_TAKEN_BY, Email.PROPERTY_LAST_ATTACHMENT_OPENER, Email.PROPERTY_CLIENT, - //Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL, - //Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL + "." + Email.PROPERTY_MAIL_FOLDER, Email.PROPERTY_WAITING_STATE, Email.PROPERTY_ORIGINAL_EMAIL, Email.PROPERTY_PRIORITY).findUnique(); // manual fetch - //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.getReplies()); Hibernate.initialize(email.getAttachment()); Collection<History> histories = email.getHistory(); @@ -312,6 +301,11 @@ } } + OriginalEmail originalEmail = email.getOriginalEmail(); + if (!originalEmail.isPersisted()) { + getPersistenceContext().getOriginalEmailDao().create(originalEmail); + } + Collection<History> histories; if (!email.isPersisted()) { histories = email.getHistory(); @@ -387,11 +381,6 @@ email.addHistory(history); } - OriginalEmail originalEmail = email.getOriginalEmail(); - if (!originalEmail.isPersisted()) { - getPersistenceContext().getOriginalEmailDao().create(originalEmail); - } - Email result = dao.update(email); getPersistenceContext().commit(); @@ -749,159 +738,8 @@ PaginationResult<Email> result; if (folder.isFolderReadable()) { EmailTopiaDao dao = getPersistenceContext().getEmailDao(); - result = dao.getEmailForFolder(filter, folder, page); -// result = dao.getEmailForFolder2(filter, folder, page); -// result = dao.getEmailForFolder(filter, folder, page); -// result = dao.getEmailForFolder3(filter, folder, page); -// -// -// TopiaSqlSupport sqlSupport = getPersistenceContext().getSqlSupport(); -// sqlSupport.doSqlWork(new TopiaSqlWork() { -// -// @Override -// public void execute(Connection connection) throws SQLException { -// -// -// long time = new Date().getTime(); -// log.info("before sql : " + time); -// -// // attention, le sql à pour cible postgresql, mssql, h2, il doit rester simple -// String query = String.format("select\n" + -// " distinct top(%s) emailimpl0_.topiaId as topiaId1_7_,\n" + -// " emailimpl0_.topiaVersion as topiaVer2_7_,\n" + -// " emailimpl0_.topiaCreateDate as topiaCre3_7_,\n" + -// " emailimpl0_.receptionDate as receptio4_7_,\n" + -// " emailimpl0_.ediError as ediError5_7_,\n" + -// " emailimpl0_.projectReference as projectR6_7_,\n" + -// " emailimpl0_.sender as sender7_7_,\n" + -// " emailimpl0_.fax as fax8_7_,\n" + -// " emailimpl0_.recipient as recipien9_7_,\n" + -// " emailimpl0_.object as object10_7_,\n" + -// " emailimpl0_.archiveDate as archive11_7_,\n" + -// " emailimpl0_.companyReference as company12_7_,\n" + -// " emailimpl0_.originalEmail as origina13_7_,\n" + -// " emailimpl0_.comment as comment14_7_,\n" + -// " emailimpl0_.mailFolder as mailFol15_7_,\n" + -// " emailimpl0_.demandType as demandT16_7_,\n" + -// " emailimpl0_.priority as priorit17_7_,\n" + -// " emailimpl0_.waitingState as waiting18_7_,\n" + -// " emailimpl0_.takenBy as takenBy19_7_,\n" + -// " emailimpl0_.client as client20_7_,\n" + -// " emailimpl0_.demandStatus as demandS21_7_,\n" + -// " emailimpl0_.emailGroup as emailGr22_7_,\n" + -// " emailimpl0_.lastAttachmentOpener as lastAtt23_7_ \n" + -// " from\n" + -// " email emailimpl0_ \n" + -// " where\n" + -// " emailimpl0_.mailFolder='%s' \n" + -// " and emailimpl0_.demandStatus<>'ARCHIVED' " + -// "order by emailimpl0_.topiaCreateDate ASC", -// page.getPageSize(), -// folder.getTopiaId()); -// log.info(query); -// Statement stat = connection.createStatement(); -// -// long time2 = new Date().getTime(); -// log.info("after sql : " + time2 + "(" + (time2 - time) + ")"); -// -// // get query result set -// ResultSet resultSet = stat.executeQuery(query); -// while (resultSet.next()) { -// Email email = new EmailImpl(); -//// String topiaId = topiaId1_7_ -//// String topiaVersion = topiaVer2_7_ -//// String topiaCreateDate = topiaCre3_7_ -//// String receptionDate = receptio4_7_ -//// String ediError = ediError5_7_ -//// String projectReference = projectR6_7_ -//// String sender = sender7_7_ -//// String fax = fax8_7_ -//// String recipient = recipien9_7_ -//// String object = object10_7_ -//// String acrhiveDate = archive11_7_ -//// String companyReference = company12_7_ -//// String originalEmail = origina13_7_ -//// String comment = comment14_7_ -//// String mailFolder = mailFol15_7_ -//// String demandType = demandT16_7_ -//// String priority = priorit17_7_ -//// String waintingState = waiting18_7_ -//// String takenBy = takenBy19_7_ -//// String client = client20_7_ -//// String topiaId = demandS21_7_ -//// String topiaId = emailGr22_7_ -//// String topiaId = lastAtt23_7_ -// } -// -// -// long time3 = new Date().getTime(); -// log.info("after sql : " + time2 + "(" + (time2 - time) + ")"); -// } -// }); -// TopiaQueryBuilderAddCriteriaOrRunQueryStep<Email> builderAddCriteriaOrRunQueryStep = -// dao.forMailFolderEquals(folder) -// .addNull(Email.PROPERTY_ARCHIVE_DATE) -// .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED); -// -// if (CollectionUtils.isNotEmpty(filter.getDemandStatus())) { -// builderAddCriteriaOrRunQueryStep.addIn(Email.PROPERTY_DEMAND_STATUS, filter.getDemandStatus()); -// } -// if (CollectionUtils.isNotEmpty(filter.getSenders())) { -// builderAddCriteriaOrRunQueryStep.addIn(Email.PROPERTY_SENDER, filter.getSenders()); -// } -// -// if (Boolean.getBoolean("faxtomail.fullfetch")) { -// result = builderAddCriteriaOrRunQueryStep -// .addAllFetches(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 -// ).findPage(page); -// } else { -// result = builderAddCriteriaOrRunQueryStep -// .addAllFetches(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 -// ).findPage(page); -// -// -// // manual fetch -// for (Email email : result.getElements()) { -// //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.getReplies()); -// Hibernate.initialize(email.getAttachment()); -// /*List<History> histories = email.getHistory(); -// if (histories != null) { -// for (History history : histories) { -// Hibernate.initialize(history.getFaxToMailUser()); -// } -// }*/ -// } -// } - } else { List<Email> elements = Collections.emptyList(); result = PaginationResult.of(elements, 0, page);