Author: kmorin Date: 2014-11-28 10:47:15 +0000 (Fri, 28 Nov 2014) New Revision: 706 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/706 Log: test am?\195?\169lioration perfs Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 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-27 16:05:17 UTC (rev 705) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-11-28 10:47:15 UTC (rev 706) @@ -386,7 +386,7 @@ } // add same fecth liste as emailService#getEmailForFolder() - String hqlForFetchStep1 = "select E." + TopiaEntity.PROPERTY_TOPIA_ID + " FROM " + Email.class.getName() + " E " + String hqlForFetchStep1 = "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<String> pageResult = findPage(hqlForFetchStep1, args, pagination); - List<String> step1ResultTopiaIds = pageResult.getElements(); + PaginationResult<Email> pageResult = findPage(hqlForFetchStep1, args, pagination); + List<Email> 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 = sortAccordingToIds(entities, step1ResultTopiaIds); + sortedEntities = 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 = "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_ )"; + 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_ )"; // code copied from topia to perform search - PaginationResult<String> pageResult = findPage(hqlForFetchStep1, args, pagination); - List<String> step1ResultTopiaIds = pageResult.getElements(); + PaginationResult<Email> pageResult = findPage(hqlForFetchStep1, args, pagination); + List<Email> 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 = sortAccordingToIds(entities, step1ResultTopiaIds); + sortedEntities = 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,6 +918,7 @@ /* * @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) { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-11-27 16:05:17 UTC (rev 705) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-11-28 10:47:15 UTC (rev 706) @@ -862,6 +862,11 @@ } @Override + public int hashCode() { + return editObject.hashCode(); + } + + @Override public boolean equals(Object obj) { if (obj == null || !obj.getClass().isAssignableFrom(DemandeUIModel.class)) { return false; @@ -874,6 +879,8 @@ try { // ce code peut provoquer une NPE avec les données de test Message message = new MimeMessage(null, new ByteArrayInputStream(getOriginalEmail().getBytes(StandardCharsets.UTF_8))); + Charset charset = FaxToMailServiceUtils.getCharset(message); + subject = MimeUtility.decodeText(message.getSubject()); toRecipients = new ArrayList<String>(); @@ -895,7 +902,7 @@ decomposeMultipartEmail(message); } else { - String content = IOUtils.toString(message.getInputStream()); + String content = IOUtils.toString(message.getInputStream(), charset); plainContent = content; } @@ -930,6 +937,7 @@ if (bp.isMimeType("text/*") && !Part.ATTACHMENT.equals(disposition)) { Charset charset = FaxToMailServiceUtils.getCharset(bp); String content = IOUtils.toString(bp.getInputStream(), charset); + if (bp.isMimeType("text/plain")) { plainContent = content; } else { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2014-11-27 16:05:17 UTC (rev 705) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2014-11-28 10:47:15 UTC (rev 706) @@ -349,6 +349,9 @@ } protected void displayPage(int pageNb, float previousZoom, int previousRotation) { + if (pageNb < 0 || pageNb > pdfDecoder.getPageCount()) { + return; + } try { float zoom = getModel().getZoom();