branch develop updated (5f3c832 -> f6f5d22)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git from 5f3c832 [jgitflow-maven-plugin]Updating develop poms back to pre merge state new 500d3d9 ajout du filtre sur la colonne subject (fixes #8103) new e6e878a Dans les réponses, la liste déroulante des expéditeurs n'est plus filtrée (fixes #8054) new 14be55c - ajout du sujet dans l'email - correction des sujets mal formés refs #8053 new e633a19 ajout de la colonne sujet (refs #8053) new 45d1d9a upgrade pom new 0966094 migration des emails non archivés (refs #8053) new c9b302b fix merge new 0adf241 upgrade i18n new 1d36b80 modification des signatures : configurées par domaine au lieu de par utilisateur (refs #8258) new 5884cf9 config des signatures dans l'admin (refs #8258) new e2c8061 on ajoute automatiquement la signature du nom de domaine de l'adresse de l'expéditeur au début du mail (remplacée si l'utilisateur change d'adresse expéditeur) (fixes #8258) new f2d4db6 ajout de tests new b8a2fce add deprecated new f6f5d22 prise en compte des demandes creees manuellement (fixes #8258) The 14 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit f6f5d22dcb2b67cf77a7ac7dc2e5404da9e95c5a Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 14:54:06 2016 +0200 prise en compte des demandes creees manuellement (fixes #8258) commit b8a2fce542525fa94d54b07d7ea6e5028e319198 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 14:54:02 2016 +0200 add deprecated commit f2d4db6df41fb33cf1dc348a6ca16d5f65ca54fe Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 14:51:24 2016 +0200 ajout de tests commit e2c8061760a0fead9f60ab377700199bd5182d06 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 09:37:25 2016 +0200 on ajoute automatiquement la signature du nom de domaine de l'adresse de l'expéditeur au début du mail (remplacée si l'utilisateur change d'adresse expéditeur) (fixes #8258) commit 5884cf962469fb2664986b131f65d96ddee34326 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 09:35:34 2016 +0200 config des signatures dans l'admin (refs #8258) commit 1d36b8017e129925e3096f315ff4b7e3a5df8391 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 09:35:00 2016 +0200 modification des signatures : configurées par domaine au lieu de par utilisateur (refs #8258) commit 0adf241a79ff04792572e21251da9538dc7f74ed Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 09:34:20 2016 +0200 upgrade i18n commit c9b302b962609adce0dd3fd63658a002eea6f4b7 Author: Kevin Morin <morin@codelutin.com> Date: Thu Apr 7 09:12:27 2016 +0200 fix merge commit 0966094f1385aa6e07e44bd53515adb05a6f4dff Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 15:52:38 2016 +0100 migration des emails non archivés (refs #8053) commit 45d1d9a431da60cedab021746e02c18e6a27b10c Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 15:52:03 2016 +0100 upgrade pom Conflicts: faxtomail-ui-swing/pom.xml pom.xml commit e633a19093ffa772a7591d0e85eff5fa8f9bfbe2 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 12:37:47 2016 +0100 ajout de la colonne sujet (refs #8053) Conflicts: faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/actions/OpenGroupedDemandAction.java commit 14be55cc7a7b9bb585e496808cd135ca09c0a6b6 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 11:50:20 2016 +0100 - ajout du sujet dans l'email - correction des sujets mal formés refs #8053 Conflicts: faxtomail-persistence/src/main/resources/faxToMail.properties faxtomail-persistence/src/main/xmi/faxtomail.zargo commit e6e878a7e3a04801dba239954b46714a3ac2fa5f Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 10:42:02 2016 +0100 Dans les réponses, la liste déroulante des expéditeurs n'est plus filtrée (fixes #8054) commit 500d3d963cfd9f87e8aadecccd8d3ad9e9f4ef36 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 10 14:42:40 2016 +0100 ajout du filtre sur la colonne subject (fixes #8103) Summary of changes: faxtomail-ui-web/README.txt => README.md | 0 .../README.txt => faxtomail-persistence/README.md | 0 .../persistence/entities/EmailFilter.java | 14 ++ .../persistence/entities/EmailTopiaDao.java | 11 ++ .../faxtomail/persistence/entities/MailField.java | 4 +- .../src/main/resources/faxToMail.properties | 3 +- .../src/main/xmi/faxtomail.properties | 5 +- faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 32762 -> 32715 bytes faxtomail-service/{README.txt => README.md} | 0 .../faxtomail/services/DecoratorServiceImpl.java | 19 +++ .../faxtomail/services/FaxToMailServiceUtils.java | 19 +++ .../services/service/ConfigurationService.java | 13 +- .../services/service/ConfigurationServiceImpl.java | 89 ++++++++++- .../faxtomail/services/service/EmailService.java | 3 +- .../services/service/EmailServiceImpl.java | 58 +++++-- .../services/service/LdapServiceImpl.java | 1 - .../services/service/ReferentielServiceImpl.java | 2 +- .../faxtomail/services/service/UserService.java | 4 - .../services/service/UserServiceImpl.java | 52 ------ .../services/service/ldap/LdapServiceMock.java | 1 - .../h2/V1_1_10_735__subject_migration.java | 120 ++++++++++++++ .../sqlserver/V1_1_10_735__subject_migration.java | 119 ++++++++++++++ .../h2/V1_1_10_734__add_subject_field_to_email.sql | 2 + ..._user_signings_and_add_signings_for_domains.sql | 16 ++ .../V1_1_10_734__add_subject_field_to_email.sql | 2 + ..._user_signings_and_add_signings_for_domains.sql | 18 +++ .../services/FaxToMailServiceUtilsTest.java | 44 +++++ .../services/service/ClientServiceTest.java | 4 +- .../service/migration/FlywayMigrationTest.java | 4 +- .../README.txt => faxtomail-ui-swing/README.md | 0 .../faxtomail/ui/swing/FaxToMailUIContext.java | 10 +- .../ui/swing/actions/ShowDemandeAction.java | 2 +- .../content/attachment/AttachmentEditorUI.jaxx | 4 +- .../attachment/AttachmentEditorUIHandler.java | 2 +- .../swing/content/attachment/ButtonAttachment.java | 2 +- .../content/demande/DemandeListTableFilter.java | 4 + .../content/demande/DemandeListUIHandler.java | 4 + .../ui/swing/content/demande/DemandeUIModel.java | 32 +++- .../actions/SaveAndOpenReplyFormAction.java | 10 +- .../demande/demandgroup/ButtonEmailGroup.java | 2 +- .../content/demande/demandgroup/DemandGroupUI.jaxx | 4 +- .../demande/demandgroup/DemandGroupUIHandler.java | 2 +- .../actions/OpenGroupedDemandAction.java | 2 +- .../content/demande/history/ButtonHistory.java | 2 +- .../content/demande/history/HistoryListUI.jaxx | 4 +- .../demande/history/HistoryListUIHandler.java | 2 +- .../demande/replies/ButtonDemandReplies.java | 2 +- .../content/demande/replies/DemandRepliesUI.jaxx | 4 +- .../demande/replies/DemandRepliesUIHandler.java | 2 +- .../ui/swing/content/reply/ReplyFormUI.css | 42 +---- .../ui/swing/content/reply/ReplyFormUI.jaxx | 47 +----- .../ui/swing/content/reply/ReplyFormUIHandler.java | 129 +++++++++++---- .../ui/swing/content/reply/ReplyFormUIModel.java | 28 ++-- .../ui/swing/content/reply/SigningSettingsUI.css | 95 ----------- .../ui/swing/content/reply/SigningSettingsUI.jaxx | 101 ------------ .../content/reply/SigningSettingsUIHandler.java | 178 --------------------- .../content/reply/SigningSettingsUIModel.java | 152 ------------------ .../content/reply/actions/DeleteSigningAction.java | 94 ----------- .../content/reply/actions/NewSigningAction.java | 84 ---------- .../reply/actions/OpenSigningSettingsAction.java | 72 --------- .../swing/content/reply/actions/ReplyAction.java | 17 +- .../content/reply/actions/SaveSigningAction.java | 74 --------- .../content/reply/actions/SenderChangedAction.java | 57 +++++++ .../reply/actions/SetDefaultSigningAction.java | 74 --------- .../faxtomail/ui/swing/util/DemandeTableModel.java | 6 + .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 3 - .../ui/swing/util/data/DataConnection.java | 33 ++++ .../faxtomail/ui/swing/util/data/Handler.java | 34 ++++ .../{ => toolbar}/AbstractToolbarPopupButton.java | 3 +- .../{ => toolbar}/AbstractToolbarPopupHandler.java | 3 +- .../util/{ => toolbar}/AbstractToolbarPopupUI.css | 0 .../util/{ => toolbar}/AbstractToolbarPopupUI.jaxx | 0 .../i18n/faxtomail-ui-swing_fr_FR.properties | 25 +-- README.txt => faxtomail-ui-web/README.md | 0 .../web/action/admin/ConfigurationAction.java | 16 +- .../faxtomail/web/job/MailFilterJob.java | 5 +- .../i18n/faxtomail-ui-web_fr_FR.properties | 1 + .../WEB-INF/content/admin/configuration-input.jsp | 64 +++++++- .../src/main/webapp/js/configuration.js | 103 ++++++++++++ pom.xml | 12 +- 80 files changed, 1081 insertions(+), 1194 deletions(-) rename faxtomail-ui-web/README.txt => README.md (100%) rename faxtomail-ui-swing/README.txt => faxtomail-persistence/README.md (100%) rename faxtomail-service/{README.txt => README.md} (100%) create mode 100644 faxtomail-service/src/main/java/db/migration/h2/V1_1_10_735__subject_migration.java create mode 100644 faxtomail-service/src/main/java/db/migration/sqlserver/V1_1_10_735__subject_migration.java create mode 100644 faxtomail-service/src/main/resources/db/migration/h2/V1_1_10_734__add_subject_field_to_email.sql create mode 100644 faxtomail-service/src/main/resources/db/migration/h2/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql create mode 100644 faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_10_734__add_subject_field_to_email.sql create mode 100644 faxtomail-service/src/main/resources/db/migration/sqlserver/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql create mode 100644 faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtilsTest.java rename faxtomail-persistence/README.txt => faxtomail-ui-swing/README.md (100%) delete mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.css delete mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.jaxx delete mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIHandler.java delete mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIModel.java delete mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/DeleteSigningAction.java delete mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/NewSigningAction.java delete mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/OpenSigningSettingsAction.java delete mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SaveSigningAction.java create mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java delete mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SetDefaultSigningAction.java create mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/DataConnection.java create mode 100644 faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/Handler.java rename faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/{ => toolbar}/AbstractToolbarPopupButton.java (97%) rename faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/{ => toolbar}/AbstractToolbarPopupHandler.java (97%) rename faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/{ => toolbar}/AbstractToolbarPopupUI.css (100%) rename faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/{ => toolbar}/AbstractToolbarPopupUI.jaxx (100%) rename README.txt => faxtomail-ui-web/README.md (100%) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 500d3d963cfd9f87e8aadecccd8d3ad9e9f4ef36 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 10 14:42:40 2016 +0100 ajout du filtre sur la colonne subject (fixes #8103) --- .../faxtomail/persistence/entities/EmailFilter.java | 14 ++++++++++++++ .../faxtomail/persistence/entities/EmailTopiaDao.java | 11 +++++++++++ .../ui/swing/content/demande/DemandeListTableFilter.java | 4 ++++ .../ui/swing/content/demande/DemandeListUIHandler.java | 4 ++++ 4 files changed, 33 insertions(+) diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java index be500fe..1b767de 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java @@ -56,6 +56,7 @@ public class EmailFilter extends AbstractSerializableBean { public static final String PROPERTY_EDI_CODE_NUMBERS = "ediCodeNumbers"; public static final String PROPERTY_LAST_ATTACHMENT_OPENERS = "lastAttachmentOpeners"; public static final String PROPERTY_WAITING_STATES = "waitingStates"; + public static final String PROPERTY_SUBJECTS = "subjects"; protected Set<Priority> priorities; @@ -102,6 +103,8 @@ public class EmailFilter extends AbstractSerializableBean { protected Set<WaitingState> waitingStates; + protected Set<String> subjects; + public Set<Priority> getPriorities() { return priorities; } @@ -300,6 +303,16 @@ public class EmailFilter extends AbstractSerializableBean { firePropertyChange(PROPERTY_WAITING_STATES,null, waitingStates); } + public Set<String> getSubjects() { + return subjects; + } + + public void setSubjects(Set<String> subjects) { + Object oldValue = getSubjects(); + this.subjects = subjects; + firePropertyChange(PROPERTY_SUBJECTS, oldValue, subjects); + } + public void clear() { setClientCodes(null); setWaitingStates(null); @@ -322,5 +335,6 @@ public class EmailFilter extends AbstractSerializableBean { setRecipients(null); setSavQuantities(null); setSenders(null); + setSubjects(null); } } 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 68b036c..5ce2399 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 @@ -948,6 +948,17 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { query.append(")"); } + Set<String> subjects = emailFilter.getSubjects(); + if (subjects != null) { + query.append(" AND (E." + Email.PROPERTY_SUBJECT + " in (:" + EmailFilter.PROPERTY_SUBJECTS + ")"); + args.put(EmailFilter.PROPERTY_SUBJECTS, subjects); + + if (subjects.contains(null)) { + query.append(" OR E." + Email.PROPERTY_SUBJECT + " IS NULL"); + } + query.append(")"); + } + return query.toString(); } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java index e9981da..4dcc368 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java @@ -163,6 +163,10 @@ public class DemandeListTableFilter extends AbstractTableFilter<JXTable> { case Email.PROPERTY_COMMENT: emailFilter.setComments(!filtered ? null : new HashSet<String>((Collection) items)); break; + + case Email.PROPERTY_SUBJECT: + emailFilter.setSubjects(!filtered ? null : new HashSet<String>((Collection) items)); + break; } executeFilter(); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java index 8a5e864..348605e 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java @@ -466,6 +466,10 @@ public class DemandeListUIHandler extends AbstractFaxToMailDemandListHandler<Dem case COMMENT: property = EmailFilter.PROPERTY_COMMENTS; break; + + case SUBJECT: + property = EmailFilter.PROPERTY_SUBJECTS; + break; } if (log.isTraceEnabled()) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 e6e878a7e3a04801dba239954b46714a3ac2fa5f Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 10:42:02 2016 +0100 Dans les réponses, la liste déroulante des expéditeurs n'est plus filtrée (fixes #8054) --- .../faxtomail/services/DecoratorServiceImpl.java | 19 +++++++++++++++++++ .../faxtomail/ui/swing/content/reply/ReplyFormUI.css | 5 ++++- .../faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx | 7 ++++--- .../ui/swing/content/reply/ReplyFormUIHandler.java | 10 ++++++---- 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java index 18c6ceb..a29f8a0 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java @@ -33,6 +33,7 @@ import com.franciaflex.faxtomail.persistence.entities.Reply; import com.franciaflex.faxtomail.services.service.ldap.Contact; import org.nuiton.decorator.Decorator; import org.nuiton.decorator.DecoratorProvider; +import org.nuiton.decorator.MultiJXPathDecorator; import java.text.DateFormat; import java.util.Date; @@ -113,6 +114,7 @@ public class DecoratorServiceImpl extends FaxToMailServiceSupport implements Dec return DateFormat.getDateInstance(DateFormat.MEDIUM).format(bean); } }); + registerDecorator(new StringMultiJXPathDecorator()); registerMultiJXPathDecorator(Contact.class, "${name}$s <${email}$s>", SEPARATOR, " - "); registerMultiJXPathDecorator(HasLabel.class, "${label}$s", SEPARATOR, " - "); registerDecorator(new Decorator<Attachment>(Attachment.class) { @@ -143,4 +145,21 @@ public class DecoratorServiceImpl extends FaxToMailServiceSupport implements Dec } }; } + + public static class StringMultiJXPathDecorator extends MultiJXPathDecorator<String> implements Cloneable { + + public StringMultiJXPathDecorator() throws IllegalArgumentException, NullPointerException { + super(String.class, "", "#", null); + } + + @Override + public String toString(Object bean) { + return String.valueOf(bean); + } + + @Override + public Object clone() throws CloneNotSupportedException { + return new StringMultiJXPathDecorator(); + } + } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css index 04aa031..b3e1cd7 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css @@ -35,7 +35,10 @@ } #fromComboBox { - editable: true; + showReset: true; + showDecorator: false; + bean: {model}; + property: from; selectedItem: { model.getFrom() }; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx index f580568..2756629 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx @@ -75,9 +75,10 @@ layout="{ fromPanelLayout }"> <JTextField id="fromField" constraints='"true"'/> - <JComboBox id="fromComboBox" - onItemStateChanged='handler.setText(event, "from")' - constraints='"false"'/> + <BeanFilterableComboBox id="fromComboBox" + constructorParams='this' + genericType="String" + constraints='"false"'/> </JPanel> </cell> </row> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java index e38d3b8..ef1317b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java @@ -48,7 +48,6 @@ import org.nuiton.jaxx.application.swing.util.Cancelable; import org.nuiton.validator.bean.simple.SimpleBeanValidator; import javax.swing.ComboBoxEditor; -import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JFileChooser; @@ -172,9 +171,12 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo } Collections.sort(replyToAddresses); - DefaultComboBoxModel comboBoxModel = SwingUtil.newComboModel(replyToAddresses.toArray()); - comboBoxModel.setSelectedItem(selectedItem); - ui.getFromComboBox().setModel(comboBoxModel); +// DefaultComboBoxModel comboBoxModel = SwingUtil.newComboModel(replyToAddresses.toArray()); +// comboBoxModel.setSelectedItem(selectedItem); +// ui.getFromComboBox().setModel(comboBoxModel); + ui.getFromComboBox().setBeanType(String.class); + initBeanFilterableComboBox(ui.getFromComboBox(), replyToAddresses, selectedItem); + model.setSenderAllowedAddresses(replyToAddresses); initBeanFilterableComboBox(ui.getContactField(), getContext().getContactCache(), null); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 14be55cc7a7b9bb585e496808cd135ca09c0a6b6 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 11:50:20 2016 +0100 - ajout du sujet dans l'email - correction des sujets mal formés refs #8053 Conflicts: faxtomail-persistence/src/main/resources/faxToMail.properties faxtomail-persistence/src/main/xmi/faxtomail.zargo --- .../src/main/resources/faxToMail.properties | 3 ++- .../faxtomail/services/FaxToMailServiceUtils.java | 14 ++++++++++++++ .../h2/V1_1_10_734__add_subject_field_to_email.sql | 2 ++ .../V1_1_10_734__add_subject_field_to_email.sql | 2 ++ .../faxtomail/services/service/EmailServiceTest.java | 14 ++++++++++++++ .../ui/swing/content/demande/DemandeUIModel.java | 19 ++++++++++++++++--- .../franciaflex/faxtomail/web/job/MailFilterJob.java | 2 ++ 7 files changed, 52 insertions(+), 4 deletions(-) diff --git a/faxtomail-persistence/src/main/resources/faxToMail.properties b/faxtomail-persistence/src/main/resources/faxToMail.properties index 08a89db..2bcc043 100644 --- a/faxtomail-persistence/src/main/resources/faxToMail.properties +++ b/faxtomail-persistence/src/main/resources/faxToMail.properties @@ -24,7 +24,8 @@ hibernate.dialect=org.hibernate.dialect.H2Dialect hibernate.connection.driver_class=org.h2.Driver -hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE +#hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE +hibernate.connection.url=jdbc:h2:file:/opt/data/ftm/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE;CACHE_SIZE=8192 hibernate.connection.username=sa hibernate.connection.password= diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java index 6de2d01..526d1a9 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java @@ -25,6 +25,7 @@ package com.franciaflex.faxtomail.services; */ import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.google.common.base.Preconditions; import org.apache.commons.httpclient.URIException; import org.apache.commons.httpclient.util.URIUtil; import org.apache.commons.io.Charsets; @@ -34,7 +35,9 @@ import org.apache.commons.logging.LogFactory; import javax.mail.MessagingException; import javax.mail.Part; import javax.mail.internet.ContentType; +import javax.mail.internet.MimeUtility; import java.awt.GraphicsEnvironment; +import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.Charset; @@ -155,4 +158,15 @@ public class FaxToMailServiceUtils { return emailContent; } + + public static String getDecodedSubject(String subject) throws UnsupportedEncodingException { + Preconditions.checkNotNull(subject); + + if (subject.startsWith("=?iso-")) { + subject = subject.replaceAll(" ", "=20"); + subject = MimeUtility.decodeText(subject); + } + + return subject; + } } diff --git a/faxtomail-service/src/main/resources/db/migration/h2/V1_1_10_734__add_subject_field_to_email.sql b/faxtomail-service/src/main/resources/db/migration/h2/V1_1_10_734__add_subject_field_to_email.sql new file mode 100644 index 0000000..0e45a8b --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/h2/V1_1_10_734__add_subject_field_to_email.sql @@ -0,0 +1,2 @@ +-- add subject field +alter table email add subject longvarchar; \ No newline at end of file diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_10_734__add_subject_field_to_email.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_10_734__add_subject_field_to_email.sql new file mode 100644 index 0000000..f570d09 --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_10_734__add_subject_field_to_email.sql @@ -0,0 +1,2 @@ +-- add subject field +alter table email add subject varchar(MAX); \ No newline at end of file diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java index 6ed7f72..987eec6 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java @@ -379,6 +379,20 @@ public class EmailServiceTest extends AbstractFaxToMailServiceTest { } + @Test + public void testDecodeSubject() { + try { + String subject = "=?iso-8859-1?Q?Un fax de 1 page(s) a =E9t=E9 re=E7u?="; + Assert.assertEquals("Un fax de 1 page(s) a été reçu", FaxToMailServiceUtils.getDecodedSubject(subject)); + + subject = "Un fax de 1 page(s) a été reçu"; + Assert.assertEquals("Un fax de 1 page(s) a été reçu", FaxToMailServiceUtils.getDecodedSubject(subject)); + + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + } + // @Test // public void testSendPdfBlanc() { // testSendEmail(""); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java index 549a404..91fe056 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java @@ -62,7 +62,6 @@ import javax.mail.Message; import javax.mail.Part; import javax.mail.Session; import javax.mail.internet.MimeMultipart; -import javax.mail.internet.MimeUtility; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.nio.charset.Charset; @@ -190,10 +189,15 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU */ @Override public void fromEntity(Email entity) { - fromBeanBinder.copyExcluding(entity, this, Email.PROPERTY_ATTACHMENT, Email.PROPERTY_REPLIES, Email.PROPERTY_EMAIL_GROUP); + fromBeanBinder.copyExcluding(entity, this, + Email.PROPERTY_ATTACHMENT, + Email.PROPERTY_REPLIES, + Email.PROPERTY_EMAIL_GROUP, + Email.PROPERTY_SUBJECT); loadAttachments(entity); setGroupedDemandes(entity.getEmailGroup()); loadReplies(entity); + this.subject = entity.getSubject(); } public void fromEntityExcluding(Email entity, Set<String> properties) { @@ -203,6 +207,7 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU boolean includeAttachment = properties.add(Email.PROPERTY_ATTACHMENT); boolean includeDemandGroup = properties.add(Email.PROPERTY_EMAIL_GROUP); boolean includeReply = properties.add(Email.PROPERTY_REPLIES); + boolean includeSubject = properties.add(Email.PROPERTY_SUBJECT); fromBeanBinder.copyExcluding(entity, this, properties.toArray(new String[properties.size()])); if (includeAttachment) { loadAttachments(entity); @@ -213,6 +218,9 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU if (includeReply) { loadReplies(entity); } + if (includeSubject) { + this.subject = entity.getSubject(); + } } public void fromEntityIncluding(Email entity, Set<String> properties) { @@ -226,6 +234,9 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU if (properties.isEmpty() || properties.contains(Email.PROPERTY_REPLIES)) { loadReplies(entity); } + if (properties.isEmpty() || properties.contains(Email.PROPERTY_SUBJECT)) { + this.subject = entity.getSubject(); + } } protected void loadAttachments(Email entity) { @@ -917,7 +928,9 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU Charset charset = FaxToMailServiceUtils.getCharset(message); - subject = MimeUtility.decodeText(message.getSubject()); + if (subject == null) { + subject = FaxToMailServiceUtils.getDecodedSubject(message.getSubject()); + } toRecipients = new ArrayList<String>(); ccRecipients = new ArrayList<String>(); diff --git a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java index 05d0e41..5ebd6b6 100644 --- a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java +++ b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java @@ -472,6 +472,8 @@ public class MailFilterJob extends AbstractFaxToMailJob { OriginalEmail originalEmail = emailService.originalEmailFromMessage((MimeMessage) message, charset); email.setOriginalEmail(originalEmail); + email.setSubject(FaxToMailServiceUtils.getDecodedSubject(message.getSubject())); + List<Attachment> attachments = new ArrayList<>(); if (message.isMimeType("multipart/*")) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 e633a19093ffa772a7591d0e85eff5fa8f9bfbe2 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 12:37:47 2016 +0100 ajout de la colonne sujet (refs #8053) Conflicts: faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/actions/OpenGroupedDemandAction.java --- .../faxtomail/persistence/entities/MailField.java | 4 +++- .../faxtomail/ui/swing/actions/ShowDemandeAction.java | 2 +- .../faxtomail/ui/swing/content/demande/DemandeUIModel.java | 13 ++++++++++--- .../demandgroup/actions/OpenGroupedDemandAction.java | 2 +- .../faxtomail/ui/swing/util/DemandeTableModel.java | 6 ++++++ .../main/resources/i18n/faxtomail-ui-swing_fr_FR.properties | 2 ++ .../main/resources/i18n/faxtomail-ui-web_fr_FR.properties | 1 + 7 files changed, 24 insertions(+), 6 deletions(-) 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 c91cdb5..4497572 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 @@ -56,7 +56,8 @@ public enum MailField { REPLIES, ATTACHMENT, GROUP, - EDI_RETURN; + EDI_RETURN, + SUBJECT; public static MailField[] getCanBeRequiredMailFields() { return new MailField[] { @@ -80,6 +81,7 @@ public enum MailField { CLIENT_NAME, CLIENT_BRAND, SENDER, + SUBJECT, PROJECT_REFERENCE, COMPANY_REFERENCE, REFERENCE, diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java index d592b1a..ba1abf9 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java @@ -171,7 +171,7 @@ public class ShowDemandeAction extends AbstractMainUIFaxToMailAction { currentEmail.getTitle())); } - currentEmail.fromEntity(email); + currentEmail.fromEntity(email, true); MailFolder folder = currentEmail.getMailFolder(); if (currentEmail.getArchiveDate() != null diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java index 91fe056..5ba2ef0 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java @@ -189,6 +189,10 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU */ @Override public void fromEntity(Email entity) { + fromEntity(entity, false); + } + + public void fromEntity(Email entity, boolean decomposeEmail) { fromBeanBinder.copyExcluding(entity, this, Email.PROPERTY_ATTACHMENT, Email.PROPERTY_REPLIES, @@ -198,6 +202,9 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU setGroupedDemandes(entity.getEmailGroup()); loadReplies(entity); this.subject = entity.getSubject(); + if (decomposeEmail) { + decomposeEmail(); + } } public void fromEntityExcluding(Email entity, Set<String> properties) { @@ -326,9 +333,9 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU } public String getSubject() { - if (subject == null) { - decomposeEmail(); - } +// if (subject == null) { +// decomposeEmail(); +// } return subject; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/actions/OpenGroupedDemandAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/actions/OpenGroupedDemandAction.java index a9742ba..1fb9d83 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/actions/OpenGroupedDemandAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/actions/OpenGroupedDemandAction.java @@ -157,7 +157,7 @@ public class OpenGroupedDemandAction extends AbstractFaxToMailAction<DemandeUIMo getContext().getCurrentUser(), takeEmail); - demandToOpen.fromEntity(email); + demandToOpen.fromEntity(email, true); demandToOpen.recomputeValidRangeRows(); if (demandToOpen.getArchiveDate() != null diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java index e537140..77cf1fa 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java @@ -209,6 +209,12 @@ public class DemandeTableModel extends AbstractTableModel { n("faxtomail.demandeList.table.header.comment"), n("faxtomail.demandeList.table.header.comment.tip"))); + put(MailField.SUBJECT, + ColumnIdentifier.<Email>newId( + Email.PROPERTY_SUBJECT, + n("faxtomail.demandeList.table.header.subject"), + n("faxtomail.demandeList.table.header.subject.tip"))); + }}; public DemandeTableModel(TableColumnModelExt columnModel, MailField... editableProperties) { diff --git a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties index 2d1647b..d5f3f40 100644 --- a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties +++ b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties @@ -221,6 +221,8 @@ faxtomail.demandeList.table.header.sender=Émetteur faxtomail.demandeList.table.header.sender.tip=Addresse email ou numéro de fax de l'émetteur faxtomail.demandeList.table.header.status=Statut faxtomail.demandeList.table.header.status.tip=Statut +faxtomail.demandeList.table.header.subject=Sujet +faxtomail.demandeList.table.header.subject.tip=Sujet de l'email reçu faxtomail.demandeList.table.header.type=Type faxtomail.demandeList.table.header.type.tip=Type faxtomail.demandeList.table.header.user=Pris par diff --git a/faxtomail-ui-web/src/main/resources/i18n/faxtomail-ui-web_fr_FR.properties b/faxtomail-ui-web/src/main/resources/i18n/faxtomail-ui-web_fr_FR.properties index da7b9b5..3d377db 100644 --- a/faxtomail-ui-web/src/main/resources/i18n/faxtomail-ui-web_fr_FR.properties +++ b/faxtomail-ui-web/src/main/resources/i18n/faxtomail-ui-web_fr_FR.properties @@ -34,6 +34,7 @@ com.franciaflex.faxtomail.persistence.entities.MailField.REFERENCE=Référence com.franciaflex.faxtomail.persistence.entities.MailField.REPLIES=Réponses com.franciaflex.faxtomail.persistence.entities.MailField.SAV_NB=Quantité de SAV com.franciaflex.faxtomail.persistence.entities.MailField.SENDER=Émetteur +com.franciaflex.faxtomail.persistence.entities.MailField.SUBJECT=Sujet com.franciaflex.faxtomail.persistence.entities.MailField.TAKEN_BY=Pris par com.franciaflex.faxtomail.persistence.entities.MailField.WAITING_STATE=État d'attente faxtomail.demandDetail.noAttachmentForId=Aucune pièce jointe ne correspond à l'identifiant %s. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 45d1d9a431da60cedab021746e02c18e6a27b10c Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 15:52:03 2016 +0100 upgrade pom Conflicts: faxtomail-ui-swing/pom.xml pom.xml --- faxtomail-ui-web/README.txt => README.md | 0 .../README.txt => faxtomail-persistence/README.md | 0 faxtomail-service/{README.txt => README.md} | 0 .../README.txt => faxtomail-ui-swing/README.md | 0 faxtomail-ui-swing/pom.xml | 2 +- README.txt => faxtomail-ui-web/README.md | 0 pom.xml | 15 ++++++++++++++- 7 files changed, 15 insertions(+), 2 deletions(-) diff --git a/faxtomail-ui-web/README.txt b/README.md similarity index 100% rename from faxtomail-ui-web/README.txt rename to README.md diff --git a/faxtomail-ui-swing/README.txt b/faxtomail-persistence/README.md similarity index 100% rename from faxtomail-ui-swing/README.txt rename to faxtomail-persistence/README.md diff --git a/faxtomail-service/README.txt b/faxtomail-service/README.md similarity index 100% rename from faxtomail-service/README.txt rename to faxtomail-service/README.md diff --git a/faxtomail-persistence/README.txt b/faxtomail-ui-swing/README.md similarity index 100% rename from faxtomail-persistence/README.txt rename to faxtomail-ui-swing/README.md diff --git a/faxtomail-ui-swing/pom.xml b/faxtomail-ui-swing/pom.xml index 0aaaedd..b82ef86 100644 --- a/faxtomail-ui-swing/pom.xml +++ b/faxtomail-ui-swing/pom.xml @@ -289,7 +289,7 @@ <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> </dependency> - + </dependencies> <build> diff --git a/README.txt b/faxtomail-ui-web/README.md similarity index 100% rename from README.txt rename to faxtomail-ui-web/README.md diff --git a/pom.xml b/pom.xml index 67a96c8..4c204e6 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,11 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>codelutinpom</artifactId> +<<<<<<< HEAD <version>6</version> +======= + <version>9</version> +>>>>>>> 1d67506... upgrade pom </parent> <groupId>com.franciaflex</groupId> @@ -90,8 +94,9 @@ <properties> - <platform>codelutin.com</platform> + <!--<platform>codelutin.com</platform>--> <projectId>faxtomail</projectId> + <ciViewId>FaxToMail</ciViewId> <!-- libraries version --> <nuitonI18nVersion>3.3</nuitonI18nVersion> @@ -136,6 +141,14 @@ <license.organizationName>Mac-Groupe, Code Lutin</license.organizationName> <license.licenseName>gpl_v3</license.licenseName> +<<<<<<< HEAD +======= + <!-- Java version --> + <javaVersion>1.7</javaVersion> + <signatureArtifactId>java17</signatureArtifactId> + <signatureVersion>1.0</signatureVersion> + +>>>>>>> 1d67506... upgrade pom <!-- issues status to include in changelog --> <!--<redmine.statusIds>18,19,3,10,11</redmine.statusIds>--> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 0966094f1385aa6e07e44bd53515adb05a6f4dff Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 15:52:38 2016 +0100 migration des emails non archivés (refs #8053) --- .../h2/V1_1_10_735__subject_migration.java | 120 +++++++++++++++++++++ .../sqlserver/V1_1_10_735__subject_migration.java | 119 ++++++++++++++++++++ .../service/migration/FlywayMigrationTest.java | 4 +- 3 files changed, 241 insertions(+), 2 deletions(-) diff --git a/faxtomail-service/src/main/java/db/migration/h2/V1_1_10_735__subject_migration.java b/faxtomail-service/src/main/java/db/migration/h2/V1_1_10_735__subject_migration.java new file mode 100644 index 0000000..6ebff4e --- /dev/null +++ b/faxtomail-service/src/main/java/db/migration/h2/V1_1_10_735__subject_migration.java @@ -0,0 +1,120 @@ +package db.migration.h2; + +/* + * #%L + * FaxToMail :: Service + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2014 - 2016 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.services.FaxToMailServiceUtils; +import org.apache.commons.mail.util.MimeMessageUtils; +import org.flywaydb.core.api.migration.jdbc.JdbcMigration; +import org.flywaydb.core.internal.util.logging.Log; +import org.flywaydb.core.internal.util.logging.LogFactory; + +import javax.mail.Session; +import javax.mail.internet.MimeMessage; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.Properties; + +/** + * @author Kevin Morin (Code Lutin) + * @since 1.1.10 + */ +public class V1_1_10_735__subject_migration implements JdbcMigration { + + /** Logger. */ + private static final Log log = LogFactory.getLog(V1_1_10_735__subject_migration.class); + + @Override + public void migrate(Connection connection) throws Exception { + + PreparedStatement updateStatement = null; + ResultSet resultSet = null; + + try { + connection.setAutoCommit(false); + + updateStatement = + connection.prepareStatement("UPDATE email SET subject = ? WHERE topiaid = ?"); + + int emailWoSubjectRemaining = 100; + + while (emailWoSubjectRemaining > 0) { + + emailWoSubjectRemaining = 0; + + resultSet = connection.createStatement() + .executeQuery("SELECT e.topiaId, oe.content " + + "FROM email e LEFT OUTER JOIN originalemail oe " + + "ON e.originalemail = oe.topiaid " + + "WHERE e.archivedate IS NULL AND e.subject IS NULL " + + "LIMIT 100"); + + while (resultSet.next()) { + emailWoSubjectRemaining++; + + String emailId = resultSet.getString(1); + String emailContent = resultSet.getString(2); + + Properties properties = new Properties(); + // set the mail.mime.address.strict to false to avoid + // javax.mail.internet.AddressException: Domain contains illegal character errors when recipients contains [] + properties.setProperty("mail.mime.address.strict", "false"); + + Session session = Session.getInstance(properties); + String subject; + try { + MimeMessage message = MimeMessageUtils.createMimeMessage(session, emailContent); + subject = FaxToMailServiceUtils.getDecodedSubject(message.getSubject()); + + } catch (Exception e) { + subject = ""; + } + + updateStatement.setString(1, subject); + updateStatement.setString(2, emailId); + updateStatement.addBatch(); + } + + log.info("update " + emailWoSubjectRemaining + " emails"); + + updateStatement.executeBatch(); + resultSet.close(); + } + + log.info("commit"); + connection.commit(); + + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (updateStatement != null) { + updateStatement.close(); + } + } + + log.info("done !"); + } +} diff --git a/faxtomail-service/src/main/java/db/migration/sqlserver/V1_1_10_735__subject_migration.java b/faxtomail-service/src/main/java/db/migration/sqlserver/V1_1_10_735__subject_migration.java new file mode 100644 index 0000000..f9c132e --- /dev/null +++ b/faxtomail-service/src/main/java/db/migration/sqlserver/V1_1_10_735__subject_migration.java @@ -0,0 +1,119 @@ +package db.migration.sqlserver; + +/* + * #%L + * FaxToMail :: Service + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2014 - 2016 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.services.FaxToMailServiceUtils; +import org.apache.commons.mail.util.MimeMessageUtils; +import org.flywaydb.core.api.migration.jdbc.JdbcMigration; +import org.flywaydb.core.internal.util.logging.Log; +import org.flywaydb.core.internal.util.logging.LogFactory; + +import javax.mail.Session; +import javax.mail.internet.MimeMessage; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.Properties; + +/** + * @author Kevin Morin (Code Lutin) + * @since 1.1.10 + */ +public class V1_1_10_735__subject_migration implements JdbcMigration { + + /** Logger. */ + private static final Log log = LogFactory.getLog(V1_1_10_735__subject_migration.class); + + @Override + public void migrate(Connection connection) throws Exception { + + PreparedStatement updateStatement = null; + ResultSet resultSet = null; + + try { + connection.setAutoCommit(false); + + updateStatement = + connection.prepareStatement("UPDATE email SET subject = ? WHERE topiaid = ?"); + + int emailWoSubjectRemaining = 100; + + while (emailWoSubjectRemaining > 0) { + + emailWoSubjectRemaining = 0; + + resultSet = connection.createStatement() + .executeQuery("SELECT TOP(100) e.topiaId, oe.content " + + "FROM email e LEFT OUTER JOIN originalemail oe " + + "ON e.originalemail = oe.topiaid " + + "WHERE e.archivedate IS NULL AND e.subject IS NULL"); + + while (resultSet.next()) { + emailWoSubjectRemaining++; + + String emailId = resultSet.getString(1); + String emailContent = resultSet.getString(2); + + Properties properties = new Properties(); + // set the mail.mime.address.strict to false to avoid + // javax.mail.internet.AddressException: Domain contains illegal character errors when recipients contains [] + properties.setProperty("mail.mime.address.strict", "false"); + + Session session = Session.getInstance(properties); + String subject; + try { + MimeMessage message = MimeMessageUtils.createMimeMessage(session, emailContent); + subject = FaxToMailServiceUtils.getDecodedSubject(message.getSubject()); + + } catch (Exception e) { + subject = ""; + } + + updateStatement.setString(1, subject); + updateStatement.setString(2, emailId); + updateStatement.addBatch(); + } + + log.info("update " + emailWoSubjectRemaining + " emails"); + + updateStatement.executeBatch(); + resultSet.close(); + } + + log.info("commit"); + connection.commit(); + + } finally { + if (resultSet != null) { + resultSet.close(); + } + if (updateStatement != null) { + updateStatement.close(); + } + } + + log.info("done !"); + } +} diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/migration/FlywayMigrationTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/migration/FlywayMigrationTest.java index fb81152..b2289a7 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/migration/FlywayMigrationTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/migration/FlywayMigrationTest.java @@ -110,7 +110,7 @@ public class FlywayMigrationTest extends AbstractFaxToMailServiceTest { // il y en a au moins 4 depuis la version 1.0.0-rc-3 Assert.assertTrue(migrationCount >= 4); - // +1 car il y a l'init en plus - Assert.assertEquals(migrationFiles.size() + 1, migrationCount.intValue()); + // +2 car il y a l'init en plus et les fichiers java + Assert.assertEquals(migrationFiles.size() + 2, migrationCount.intValue()); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 c9b302b962609adce0dd3fd63658a002eea6f4b7 Author: Kevin Morin <morin@codelutin.com> Date: Thu Apr 7 09:12:27 2016 +0200 fix merge --- faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 32762 -> 32858 bytes faxtomail-ui-swing/pom.xml | 2 +- pom.xml | 7 ------- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/faxtomail-persistence/src/main/xmi/faxtomail.zargo b/faxtomail-persistence/src/main/xmi/faxtomail.zargo index ea071eb..e512b8c 100644 Binary files a/faxtomail-persistence/src/main/xmi/faxtomail.zargo and b/faxtomail-persistence/src/main/xmi/faxtomail.zargo differ diff --git a/faxtomail-ui-swing/pom.xml b/faxtomail-ui-swing/pom.xml index b82ef86..0aaaedd 100644 --- a/faxtomail-ui-swing/pom.xml +++ b/faxtomail-ui-swing/pom.xml @@ -289,7 +289,7 @@ <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> </dependency> - + </dependencies> <build> diff --git a/pom.xml b/pom.xml index 4c204e6..5467db1 100644 --- a/pom.xml +++ b/pom.xml @@ -27,11 +27,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>codelutinpom</artifactId> -<<<<<<< HEAD - <version>6</version> -======= <version>9</version> ->>>>>>> 1d67506... upgrade pom </parent> <groupId>com.franciaflex</groupId> @@ -141,14 +137,11 @@ <license.organizationName>Mac-Groupe, Code Lutin</license.organizationName> <license.licenseName>gpl_v3</license.licenseName> -<<<<<<< HEAD -======= <!-- Java version --> <javaVersion>1.7</javaVersion> <signatureArtifactId>java17</signatureArtifactId> <signatureVersion>1.0</signatureVersion> ->>>>>>> 1d67506... upgrade pom <!-- issues status to include in changelog --> <!--<redmine.statusIds>18,19,3,10,11</redmine.statusIds>--> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 0adf241a79ff04792572e21251da9538dc7f74ed Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 09:34:20 2016 +0200 upgrade i18n --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5467db1..93ec9d3 100644 --- a/pom.xml +++ b/pom.xml @@ -95,7 +95,7 @@ <ciViewId>FaxToMail</ciViewId> <!-- libraries version --> - <nuitonI18nVersion>3.3</nuitonI18nVersion> + <nuitonI18nVersion>3.4.1</nuitonI18nVersion> <nuitonConfigVersion>3.0-rc-2</nuitonConfigVersion> <nuitonCsvVersion>3.0-rc-4</nuitonCsvVersion> <nuitonDecoratorVersion>3.0-alpha-3</nuitonDecoratorVersion> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 1d36b8017e129925e3096f315ff4b7e3a5df8391 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 09:35:00 2016 +0200 modification des signatures : configurées par domaine au lieu de par utilisateur (refs #8258) --- .../src/main/resources/faxToMail.properties | 2 +- .../src/main/xmi/faxtomail.properties | 5 +- faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 32858 -> 32715 bytes .../faxtomail/services/FaxToMailServiceUtils.java | 4 + .../services/service/ConfigurationService.java | 13 ++- .../services/service/ConfigurationServiceImpl.java | 89 ++++++++++++++++++++- .../services/service/LdapServiceImpl.java | 1 - .../services/service/ReferentielServiceImpl.java | 2 +- .../faxtomail/services/service/UserService.java | 4 - .../services/service/UserServiceImpl.java | 52 ------------ .../services/service/ldap/LdapServiceMock.java | 1 - ..._user_signings_and_add_signings_for_domains.sql | 16 ++++ ..._user_signings_and_add_signings_for_domains.sql | 18 +++++ .../services/service/ClientServiceTest.java | 4 +- 14 files changed, 141 insertions(+), 70 deletions(-) diff --git a/faxtomail-persistence/src/main/resources/faxToMail.properties b/faxtomail-persistence/src/main/resources/faxToMail.properties index 2bcc043..f7d5084 100644 --- a/faxtomail-persistence/src/main/resources/faxToMail.properties +++ b/faxtomail-persistence/src/main/resources/faxToMail.properties @@ -25,7 +25,7 @@ hibernate.dialect=org.hibernate.dialect.H2Dialect hibernate.connection.driver_class=org.h2.Driver #hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE -hibernate.connection.url=jdbc:h2:file:/opt/data/ftm/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE;CACHE_SIZE=8192 +hibernate.connection.url=jdbc:h2:file:/opt/data/ftm/faxtomail-2/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE;CACHE_SIZE=8192 hibernate.connection.username=sa hibernate.connection.password= diff --git a/faxtomail-persistence/src/main/xmi/faxtomail.properties b/faxtomail-persistence/src/main/xmi/faxtomail.properties index faa06ad..583da0f 100644 --- a/faxtomail-persistence/src/main/xmi/faxtomail.properties +++ b/faxtomail-persistence/src/main/xmi/faxtomail.properties @@ -133,5 +133,6 @@ com.franciaflex.faxtomail.persistence.entities.MailLock.attribute.lockOn.stereot # BrandsForDomain com.franciaflex.faxtomail.persistence.entities.BrandsForDomain.attribute.domainName.tagvalue.notNull=true -#Stamp -#com.franciaflex.faxtomail.persistence.entities.Stamp.attribute.label.tagvalue.naturalId=true \ No newline at end of file +# SigningForDomain +com.franciaflex.faxtomail.persistence.entities.SigningForDomain.attribute.domainName.tagvalue.notNull=true +com.franciaflex.faxtomail.persistence.entities.SigningForDomain.attribute.domainName.stereotype=unique \ No newline at end of file diff --git a/faxtomail-persistence/src/main/xmi/faxtomail.zargo b/faxtomail-persistence/src/main/xmi/faxtomail.zargo index e512b8c..0d2edee 100644 Binary files a/faxtomail-persistence/src/main/xmi/faxtomail.zargo and b/faxtomail-persistence/src/main/xmi/faxtomail.zargo differ diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java index 526d1a9..695d7ba 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java @@ -169,4 +169,8 @@ public class FaxToMailServiceUtils { return subject; } + + public static String getDomainForEmailAddress(String emailAddress) { + return emailAddress.substring(emailAddress.lastIndexOf("@") + 1); + } } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java index f897299..b1c9960 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java @@ -33,9 +33,11 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.persistence.entities.MailFilter; import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; import com.franciaflex.faxtomail.persistence.entities.Stamp; import com.franciaflex.faxtomail.persistence.entities.WaitingState; import com.franciaflex.faxtomail.services.FaxToMailService; +import com.google.common.base.Optional; import java.util.Collection; import java.util.List; @@ -57,7 +59,8 @@ public interface ConfigurationService extends FaxToMailService { List<MailFolder> mailFolders, List<MailFilter> mailFilters, List<EmailAccount> emailAccounts, - List<BrandsForDomain> brandsForDomains); + List<BrandsForDomain> brandsForDomains, + List<SigningForDomain> signingForDomains); List<EmailAccount> getEmailAccountsWithoutPasswords(); @@ -79,6 +82,12 @@ public interface ConfigurationService extends FaxToMailService { List<BrandsForDomain> getAllBrandsForDomains(); - List<String> getBrandsForDomain(String domain); + List<String> getBrandsForEmailAddress(String emailAddress); + + List<SigningForDomain> getAllSigningsForDomains(); + + Optional<SigningForDomain> getSigningForEmailAddress(String emailAddress); + + } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java index 20313f8..4c37309 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java @@ -24,9 +24,45 @@ package com.franciaflex.faxtomail.services.service; * #L% */ -import com.franciaflex.faxtomail.persistence.entities.*; +import com.franciaflex.faxtomail.persistence.entities.BrandsForDomain; +import com.franciaflex.faxtomail.persistence.entities.BrandsForDomainImpl; +import com.franciaflex.faxtomail.persistence.entities.BrandsForDomainTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Configuration; +import com.franciaflex.faxtomail.persistence.entities.ConfigurationImpl; +import com.franciaflex.faxtomail.persistence.entities.ConfigurationTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.DemandType; +import com.franciaflex.faxtomail.persistence.entities.DemandTypeImpl; +import com.franciaflex.faxtomail.persistence.entities.DemandTypeTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.EmailAccount; +import com.franciaflex.faxtomail.persistence.entities.EmailAccountImpl; +import com.franciaflex.faxtomail.persistence.entities.EmailAccountTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.EmailProtocol; +import com.franciaflex.faxtomail.persistence.entities.ExtensionCommand; +import com.franciaflex.faxtomail.persistence.entities.ExtensionCommandTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.GroupChef; +import com.franciaflex.faxtomail.persistence.entities.GroupChefTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.MailField; +import com.franciaflex.faxtomail.persistence.entities.MailFilter; +import com.franciaflex.faxtomail.persistence.entities.MailFilterTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.MailFolderImpl; +import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomainImpl; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomainTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Stamp; +import com.franciaflex.faxtomail.persistence.entities.StampImpl; +import com.franciaflex.faxtomail.persistence.entities.StampTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.WaitingState; +import com.franciaflex.faxtomail.persistence.entities.WaitingStateImpl; +import com.franciaflex.faxtomail.persistence.entities.WaitingStateTopiaDao; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; +import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.google.common.base.Function; +import com.google.common.base.Optional; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.lang3.StringUtils; @@ -124,7 +160,8 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements List<MailFolder> mailFolders, List<MailFilter> mailFilters, List<EmailAccount> emailAccounts, - List<BrandsForDomain> brandsForDomains) { + List<BrandsForDomain> brandsForDomains, + List<SigningForDomain> signingForDomains) { Collection<MailFolder> toDeleteMailFolder = new ArrayList<>(); @@ -137,6 +174,7 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements saveMailFilters(mailFolderCache, mailFilters); saveEmailAccounts(emailAccounts); saveBrandsForDomains(brandsForDomains); + saveSigningsForDomains(signingForDomains); // delete after loop MailFolderTopiaDao mailFilterDao = getPersistenceContext().getMailFolderDao(); @@ -187,7 +225,6 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements Stamp currentStamp; if (StringUtils.isBlank(stamp.getTopiaId()) || stamp.getTopiaId().startsWith("new_")) { currentStamp = new StampImpl(); - currentStamp.setSigning(false); } else { currentStamp = allStampsIndex.remove(stamp.getTopiaId()); @@ -488,6 +525,38 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements brandsForDomainTopiaDao.deleteAll(brandsForDomainMap.values()); } + protected void saveSigningsForDomains(List<SigningForDomain> newSigningForDomains) { + SigningForDomainTopiaDao signingForDomainTopiaDao = getPersistenceContext().getSigningForDomainDao(); + List<SigningForDomain> signingForDomains = signingForDomainTopiaDao.findAll(); + + Map<String, SigningForDomain> signingsForDomainMap = new HashMap<>(Maps.uniqueIndex(signingForDomains, TopiaEntities.getTopiaIdFunction())); + Binder<SigningForDomain, SigningForDomain> binder = BinderFactory.newBinder(SigningForDomain.class); + + for (SigningForDomain newSigningForDomain : newSigningForDomains) { + SigningForDomain signingForDomain; + if (StringUtils.isBlank(newSigningForDomain.getTopiaId()) || newSigningForDomain.getTopiaId().startsWith("new_")) { + signingForDomain = new SigningForDomainImpl(); + + } else { + signingForDomain = signingsForDomainMap.remove(newSigningForDomain.getTopiaId()); + } + + binder.copyExcluding(newSigningForDomain, signingForDomain, + SigningForDomain.PROPERTY_TOPIA_ID, + SigningForDomain.PROPERTY_TOPIA_CREATE_DATE, + SigningForDomain.PROPERTY_TOPIA_VERSION); + + + if (signingForDomain.isPersisted()) { + signingForDomainTopiaDao.update(signingForDomain); + } else { + signingForDomainTopiaDao.create(signingForDomain); + } + } + + signingForDomainTopiaDao.deleteAll(signingsForDomainMap.values()); + } + @Override public void saveUserFolders(Map<String, Collection<MailFolder>> userFolders) { FaxToMailUserTopiaDao faxToMailUserTopiaDao = getPersistenceContext().getFaxToMailUserDao(); @@ -662,9 +731,21 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements } @Override - public List<String> getBrandsForDomain(String domain) { + public List<String> getBrandsForEmailAddress(String emailAddress) { + String domain = FaxToMailServiceUtils.getDomainForEmailAddress(emailAddress); BrandsForDomainTopiaDao dao = getPersistenceContext().getBrandsForDomainDao(); BrandsForDomain brandsForDomain = dao.forDomainNameEquals(domain).findUnique(); return brandsForDomain.getBrands(); } + + @Override + public List<SigningForDomain> getAllSigningsForDomains() { + return getPersistenceContext().getSigningForDomainDao().findAll(); + } + + @Override + public Optional<SigningForDomain> getSigningForEmailAddress(String emailAddress) { + String domain = FaxToMailServiceUtils.getDomainForEmailAddress(emailAddress); + return getPersistenceContext().getSigningForDomainDao().forDomainNameEquals(domain).tryFindUnique(); + } } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java index 9045b20..023992b 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java @@ -390,7 +390,6 @@ public class LdapServiceImpl extends FaxToMailServiceSupport implements LdapServ // force collection loading to force non lazy collections user.isAffectedFoldersEmpty(); user.isUserGroupsEmpty(); - user.isSigningsEmpty(); return user; } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java index 50e51b9..076deaf 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java @@ -100,7 +100,7 @@ public class ReferentielServiceImpl extends FaxToMailServiceSupport implements R @Override public List<Stamp> getAllStamps() { StampTopiaDao dao = getPersistenceContext().getStampDao(); - return dao.forSigningEquals(false).setOrderByArguments(Stamp.PROPERTY_LABEL).findAll(); + return dao.forAll().setOrderByArguments(Stamp.PROPERTY_LABEL).findAll(); } @Override diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java index 309a861..a6a4e86 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java @@ -56,9 +56,5 @@ public interface UserService extends FaxToMailService { FaxToMailUser getUser(String topiaId); - Stamp saveSigning(FaxToMailUser user, Stamp signing, boolean defaultSigning); - - void deleteSigning(FaxToMailUser user, Stamp signing); - Collection<Stamp> getPdfEditorStamps(FaxToMailUser user); } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java index 16aaab5..dc7fb43 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java @@ -97,58 +97,6 @@ public class UserServiceImpl extends FaxToMailServiceSupport implements UserServ } @Override - public Stamp saveSigning(FaxToMailUser user, Stamp signing, boolean defaultSigning) { - Preconditions.checkNotNull(user); - Preconditions.checkNotNull(signing); - Preconditions.checkArgument(!signing.isPersisted() || user.containsSignings(signing)); - - StampTopiaDao stampDao = getPersistenceContext().getStampDao(); - FaxToMailUserTopiaDao userDao = getPersistenceContext().getFaxToMailUserDao(); - - if (signing.isPersisted()) { - stampDao.update(signing); - - } else { - stampDao.create(signing); - user.addSignings(signing); - userDao.update(user); - } - - if (defaultSigning) { - user.setDefaultSigning(signing); - userDao.update(user); - } - - getPersistenceContext().commit(); - - return signing; - } - - @Override - public void deleteSigning(FaxToMailUser user, Stamp signing) { - Preconditions.checkNotNull(user); - Preconditions.checkNotNull(signing); - Preconditions.checkArgument(!signing.isPersisted() || user.containsSignings(signing)); - - - if (signing.isPersisted()) { - StampTopiaDao stampDao = getPersistenceContext().getStampDao(); - FaxToMailUserTopiaDao userDao = getPersistenceContext().getFaxToMailUserDao(); - - user.removeSignings(signing); - if (signing.equals(user.getDefaultSigning())) { - user.setDefaultSigning(null); - } - userDao.update(user); - - stampDao.delete(signing); - - getPersistenceContext().commit(); - } - - } - - @Override public Collection<Stamp> getPdfEditorStamps(FaxToMailUser user) { Preconditions.checkNotNull(user); diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java index fe29972..6de2dfd 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java @@ -109,7 +109,6 @@ public class LdapServiceMock extends LdapServiceImpl { // force collection loading to force non lazy collections result.isAffectedFoldersEmpty(); result.isUserGroupsEmpty(); - result.isSigningsEmpty(); return result; } diff --git a/faxtomail-service/src/main/resources/db/migration/h2/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql b/faxtomail-service/src/main/resources/db/migration/h2/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql new file mode 100644 index 0000000..9fa2e28 --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/h2/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql @@ -0,0 +1,16 @@ +delete from stamp where signing = true; + +alter table stamp drop signing; +alter table stamp drop faxtomailuser; + +alter table faxtomailuser drop defaultsigning; + +create table signingForDomain ( + topiaId varchar(255) not null, + topiaVersion bigint not null, + topiaCreateDate timestamp, + domainName longvarchar unique, + image longvarchar, + text longvarchar, + primary key (topiaId) +); \ No newline at end of file diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql new file mode 100644 index 0000000..bb32114 --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql @@ -0,0 +1,18 @@ +delete from stamp where signing = 1; +GO + +alter table stamp drop signing; +alter table stamp drop faxtomailuser; +GO +alter table faxtomailuser drop defaultsigning; +GO + +create table signingForDomain ( + topiaId varchar(255) not null, + topiaVersion bigint not null, + topiaCreateDate datetime2, + domainName varchar(MAX) unique, + image varchar(MAX), + text varchar(MAX), + primary key (topiaId) +); \ No newline at end of file diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java index c80e8fe..bd3a864 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java @@ -164,7 +164,7 @@ public class ClientServiceTest extends AbstractFaxToMailServiceTest { client.setName("Test Test"); client = clientTopiaDao.create(client); - List<String> brands = getServiceContext().getConfigurationService().getBrandsForDomain(domain); + List<String> brands = getServiceContext().getConfigurationService().getBrandsForEmailAddress(domain); foundClients = getServiceContext().getClientService().getClientForEmailAddress(emailAddress, new EmailImpl(), "FX", brands); @@ -175,7 +175,7 @@ public class ClientServiceTest extends AbstractFaxToMailServiceTest { brandsForDomain.setBrands(Lists.newArrayList("CREAL", "FX")); brandsForDomain = brandsForDomainTopiaDao.update(brandsForDomain); - brands = getServiceContext().getConfigurationService().getBrandsForDomain(domain); + brands = getServiceContext().getConfigurationService().getBrandsForEmailAddress(domain); foundClients = getServiceContext().getClientService().getClientForEmailAddress(emailAddress, new EmailImpl(), "FX", brands); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 5884cf962469fb2664986b131f65d96ddee34326 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 09:35:34 2016 +0200 config des signatures dans l'admin (refs #8258) --- .../web/action/admin/ConfigurationAction.java | 16 +++- .../faxtomail/web/job/MailFilterJob.java | 3 +- .../WEB-INF/content/admin/configuration-input.jsp | 64 ++++++++++++- .../src/main/webapp/js/configuration.js | 103 +++++++++++++++++++++ 4 files changed, 182 insertions(+), 4 deletions(-) diff --git a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java index d1f96b5..8e203b7 100644 --- a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java +++ b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java @@ -36,6 +36,7 @@ import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.persistence.entities.MailFilter; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.Range; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; import com.franciaflex.faxtomail.persistence.entities.Stamp; import com.franciaflex.faxtomail.persistence.entities.WaitingState; import com.franciaflex.faxtomail.services.service.ConfigurationService; @@ -107,6 +108,8 @@ public class ConfigurationAction extends FaxToMailActionSupport implements Prepa protected List<BrandsForDomain> brandsForDomains; + protected List<SigningForDomain> signingForDomains; + @Override public void prepare() throws Exception { // check authorization @@ -131,6 +134,7 @@ public class ConfigurationAction extends FaxToMailActionSupport implements Prepa users = userService.getAllActiveUsers(); groups = userService.getAllActiveUserGroups(); brandsForDomains = configurationService.getAllBrandsForDomains(); + signingForDomains = configurationService.getAllSigningsForDomains(); return INPUT; } @@ -147,7 +151,8 @@ public class ConfigurationAction extends FaxToMailActionSupport implements Prepa mailFolders, mailFilters, emailAccounts, - brandsForDomains); + brandsForDomains, + signingForDomains); return result; } @@ -251,6 +256,15 @@ public class ConfigurationAction extends FaxToMailActionSupport implements Prepa this.brandsForDomains = getGson().fromJson(json, type); } + public List<SigningForDomain> getSigningForDomains() { + return signingForDomains; + } + + public void setSigningForDomainsJson(String json) { + Type type = new TypeToken<List<SigningForDomain>>() {}.getType(); + this.signingForDomains = getGson().fromJson(json, type); + } + public List<FaxToMailUser> getUsers() { return users; } diff --git a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java index 5ebd6b6..0c5ba9d 100644 --- a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java +++ b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java @@ -328,8 +328,7 @@ public class MailFilterJob extends AbstractFaxToMailJob { } String company = filterFolder.getCompany(); - String domain = email.getRecipient().substring(email.getRecipient().lastIndexOf("@") + 1); - List<String> brands = configurationService.getBrandsForDomain(domain); + List<String> brands = configurationService.getBrandsForEmailAddress(email.getRecipient()); Address[] addresses = message.getFrom(); if (addresses != null && addresses.length > 0) { diff --git a/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp b/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp index 7b31e82..f54f55e 100644 --- a/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp +++ b/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp @@ -52,6 +52,7 @@ 'mailFilters': <s:property value="toJson(mailFilters)" escapeHtml="false"/>, 'emailAccounts': <s:property value="toJson(emailAccounts)" escapeHtml="false"/>, 'brandsForDomains': <s:property value="toJson(brandsForDomains)" escapeHtml="false"/>, + 'signings': <s:property value="toJson(signingForDomains)" escapeHtml="false"/>, // referentiels 'users': <s:property value="toJson(users)" escapeHtml="false"/>, 'groups': <s:property value="toJson(groups)" escapeHtml="false"/>, @@ -82,6 +83,7 @@ <li><a href="#tabs-search" data-toggle="tab">Recherche</a></li> <li><a href="#tabs-mailaccounts" data-toggle="tab">Comptes mail</a></li> <li><a href="#tabs-brandsForDomain" data-toggle="tab">Noms de domaine / Marques</a></li> + <li><a href="#tabs-signings" data-toggle="tab">Signatures</a></li> <li><a href="#tabs-chefgroup" data-toggle="tab">Chef de groupe</a></li> </ul> @@ -238,7 +240,7 @@ <div class="row"> <div class="col-md-4"> - <h3>Tampon <input type="button" class="btn btn-success btn-xs pull-right" value="Nouveau" ng-click="newStamp()" /></h3> + <h3>Tampons <input type="button" class="btn btn-success btn-xs pull-right" value="Nouveau" ng-click="newStamp()" /></h3> <table class="table table-hover"> <tbody> <tr ng-repeat="stamp in stamps" @@ -1365,6 +1367,66 @@ </div> </div> + <div id="tabs-signings" class="tab-pane" ng-controller="ConfigurationSigningsController"> + <input type="hidden" name="signingForDomainsJson" value="{{signings}}" /> + + <div class="row"> + <div class="col-md-4"> + <h3>Signatures <input type="button" class="btn btn-success btn-xs pull-right" value="Nouveau" ng-click="newSigning()" /></h3> + <table class="table table-hover"> + <tbody> + <tr ng-repeat="signing in signings" + ng-class="{'info' : signing == selectedSigning}" + ng-click="editSigning(signing)"> + <td> + {{signing.domainName}} + <a class="pull-right btn btn-danger btn-xs" data-nodrag ng-click="deleteSigning(signing, $index)" + tooltip="Supprimer cette signature"> + <span class="glyphicon glyphicon-remove"></span></a> + </td> + </tr> + </tbody> + </table> + </div> + + <div class="col-md-8" ng-show="selectedSigning"> + + <h3>Édition de la signature du domaine {{selectedSigning.domainName}}</h3> + + <div class="form-group"> + <label><input type="radio" ng-model="selectedSigning.isImageType" ng-value="true"/> + Image :</label> + + <div ng-show="selectedSigning.isImageType"> + + <input type="file" accept="image/*" id="signingImage" + class="form-control" + onchange="angular.element(this).scope().imageChanged(this)"/> + + <output> + <img id="signingPreview"/> + </output> + + </div> + + </div> + + <div class="form-group"> + <label><input type="radio" ng-model="selectedSigning.isImageType" ng-value="false" /> Texte :</label> + <textarea name="text" class="form-control" + ng-model="selectedSigning.text" ng-show="!selectedSigning.isImageType"> + </textarea> + </div> + + </div> + + <div class="col-md-8" ng-show="!selectedSigning"> + <em>Sélectionnez une signature.</em> + </div> + </div> + + </div> + <div id="tabs-chefgroup" class="tab-pane" ng-controller="ConfigurationChefGroupController"> <div class="row"> diff --git a/faxtomail-ui-web/src/main/webapp/js/configuration.js b/faxtomail-ui-web/src/main/webapp/js/configuration.js index 98f84a1..c21df34 100644 --- a/faxtomail-ui-web/src/main/webapp/js/configuration.js +++ b/faxtomail-ui-web/src/main/webapp/js/configuration.js @@ -45,6 +45,8 @@ ConfigurationModule.controller('ConfigurationController', ['$scope', 'Configurat $scope.demandTypes = ConfigurationData.demandTypes; //{Array} les tampons $scope.stamps = ConfigurationData.stamps; + //{Array} les signatures + $scope.signings = ConfigurationData.signings; //{Array} mail folders $scope.mailFolders = ConfigurationData.mailFolders; // {Map} Mail folder usage @@ -1365,6 +1367,9 @@ ConfigurationModule.controller('ConfigurationBrandsForDomainController', ['$scop if ($scope.brandsForDomains.indexOfBy('domainName', $scope.newBrandsForDomain) != -1) { $window.alert("Ce nom de domaine est déjà configuré !"); + } else if ($scope.newBrandsForDomain.domainName.indexOf("@") != -1) { + $window.alert("Le nom de domaine ne doit pas contenir le symbole @ !"); + } else { var newBrandsForDomain = $scope.newBrandsForDomain; newBrandsForDomain.brandsJson = newBrandsForDomain.brands.toString(); @@ -1384,6 +1389,104 @@ ConfigurationModule.controller('ConfigurationBrandsForDomainController', ['$scop }]); /** + * Signings tab controller. + */ +ConfigurationModule.controller('ConfigurationSigningsController', ['$scope', '$window', 'ConfigurationData', + function($scope, $window, ConfigurationData) { + //{Object} signature selectionné + $scope.selectedSigning; + + for (var i = 0 ; i < $scope.signings.length ; i++) { + var signing = $scope.signings[i]; + signing.isImageType = signing.image != null; + signing.oldImage = signing.image; + signing.oldText = signing.text; + } + + $scope.$watch("selectedSigning.isImageType", function(newValue) { + if (newValue) { + $scope.selectedSigning.text = null; + $scope.selectedSigning.image = $scope.selectedSigning.oldImage; + + } else { + $scope.selectedSigning.image = null; + $scope.selectedSigning.text = $scope.selectedSigning.oldText; + } + }); + + // edition d'une signature + $scope.editSigning = function(signing) { + + $scope.selectedSigning = signing; + + $('#signingImage').val(null); + $('#signingPreview').attr('src', signing.image ? signing.image : null); + + }; + + // ajout d'une nouvelle signature + $scope.newSigning = function() { + var domainName = $window.prompt("Nom de domaine pour la nouvelle signature"); + // check if correct domain + if (domainName) { + // auto select new etat + var newSigning = { + topiaId : "new_" + guid(), + domainName: domainName + }; + + // check if already exists + if ($scope.signings.indexOfBy('domainName', newSigning) != -1) { + $window.alert("Ce nom de domaine est déjà configuré !"); + + } else if (domainName.indexOf("@") != -1) { + $window.alert("Le nom de domaine ne doit pas contenir le symbole @ !"); + + } else { + $scope.signings.push(newSigning); + + // auto select + $scope.editSigning(newSigning); + } + } + }; + + // suppression d'un tampon + $scope.deleteSigning = function(signing, index) { + if ($window.confirm("Êtes-vous sûr de vouloir supprimer cette signature ?")) { + $scope.signings.splice(index, 1); + $scope.selectedSigning = null; + } + }; + + $scope.imageChanged = function(input) { + var f = input.files[0]; // FileList object + + // Only process image files. + if (!f.type.match('image.*')) { + $window.alert("Erreur lors du chargement de l'image"); + $('#signingPreview').attr('src', null); + } + + var reader = new FileReader(); + + // Closure to capture the file information. + reader.onloadend = function() { + + $scope.$apply(function() { + $scope.selectedSigning.image = reader.result; + $scope.selectedSigning.oldImage = reader.result; + }); + $('#signingPreview').attr('src', reader.result); + }; + + // Read in the image file as a data URL. + reader.readAsDataURL(f); + } + +}]); + +/** * Chef de groupe controller. */ ConfigurationModule.controller('ConfigurationChefGroupController', ['$scope', '$window', 'ConfigurationData', -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 e2c8061760a0fead9f60ab377700199bd5182d06 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 09:37:25 2016 +0200 on ajoute automatiquement la signature du nom de domaine de l'adresse de l'expéditeur au début du mail (remplacée si l'utilisateur change d'adresse expéditeur) (fixes #8258) --- .../faxtomail/services/service/EmailService.java | 3 +- .../services/service/EmailServiceImpl.java | 58 +++++-- .../faxtomail/ui/swing/FaxToMailUIContext.java | 10 +- .../content/attachment/AttachmentEditorUI.jaxx | 4 +- .../attachment/AttachmentEditorUIHandler.java | 2 +- .../swing/content/attachment/ButtonAttachment.java | 2 +- .../actions/SaveAndOpenReplyFormAction.java | 9 +- .../demande/demandgroup/ButtonEmailGroup.java | 2 +- .../content/demande/demandgroup/DemandGroupUI.jaxx | 4 +- .../demande/demandgroup/DemandGroupUIHandler.java | 2 +- .../content/demande/history/ButtonHistory.java | 2 +- .../content/demande/history/HistoryListUI.jaxx | 4 +- .../demande/history/HistoryListUIHandler.java | 2 +- .../demande/replies/ButtonDemandReplies.java | 2 +- .../content/demande/replies/DemandRepliesUI.jaxx | 4 +- .../demande/replies/DemandRepliesUIHandler.java | 2 +- .../ui/swing/content/reply/ReplyFormUI.css | 37 ----- .../ui/swing/content/reply/ReplyFormUI.jaxx | 40 +---- .../ui/swing/content/reply/ReplyFormUIHandler.java | 115 ++++++++++--- .../ui/swing/content/reply/ReplyFormUIModel.java | 18 +-- .../ui/swing/content/reply/SigningSettingsUI.css | 95 ----------- .../ui/swing/content/reply/SigningSettingsUI.jaxx | 101 ------------ .../content/reply/SigningSettingsUIHandler.java | 178 --------------------- .../content/reply/SigningSettingsUIModel.java | 152 ------------------ .../content/reply/actions/DeleteSigningAction.java | 94 ----------- .../content/reply/actions/NewSigningAction.java | 84 ---------- .../reply/actions/OpenSigningSettingsAction.java | 72 --------- .../swing/content/reply/actions/ReplyAction.java | 17 +- .../content/reply/actions/SaveSigningAction.java | 74 --------- .../content/reply/actions/SenderChangedAction.java | 57 +++++++ .../reply/actions/SetDefaultSigningAction.java | 74 --------- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 3 - .../ui/swing/util/data/DataConnection.java | 33 ++++ .../faxtomail/ui/swing/util/data/Handler.java | 34 ++++ .../{ => toolbar}/AbstractToolbarPopupButton.java | 3 +- .../{ => toolbar}/AbstractToolbarPopupHandler.java | 3 +- .../util/{ => toolbar}/AbstractToolbarPopupUI.css | 0 .../util/{ => toolbar}/AbstractToolbarPopupUI.jaxx | 0 .../i18n/faxtomail-ui-swing_fr_FR.properties | 22 +-- 39 files changed, 321 insertions(+), 1097 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java index 0005165..77dbc2e 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java @@ -38,7 +38,6 @@ import com.franciaflex.faxtomail.persistence.entities.Range; import com.franciaflex.faxtomail.persistence.entities.Reply; import com.franciaflex.faxtomail.persistence.entities.ReplyContent; import com.franciaflex.faxtomail.persistence.entities.SearchFilter; -import com.franciaflex.faxtomail.persistence.entities.Stamp; import com.franciaflex.faxtomail.services.FaxToMailService; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException; @@ -102,7 +101,7 @@ public interface EmailService extends FaxToMailService { Email groupEmails(String email1Id, String email2Id, FaxToMailUser user); Email reply(String from, String to, String cc, String bcc, String subject, - String content, Stamp signing, Collection<AttachmentFile> attachments, + String content, Collection<AttachmentFile> attachments, String originalEmailId, FaxToMailUser user) throws EmailException, MessagingException, IOException; /** 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 0d97002..0d4b2dd 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 @@ -24,7 +24,51 @@ package com.franciaflex.faxtomail.services.service; * #L% */ -import com.franciaflex.faxtomail.persistence.entities.*; +import com.franciaflex.faxtomail.persistence.entities.AbstractFaxToMailTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFileTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; +import com.franciaflex.faxtomail.persistence.entities.AttachmentTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Client; +import com.franciaflex.faxtomail.persistence.entities.DemandStatus; +import com.franciaflex.faxtomail.persistence.entities.DemandType; +import com.franciaflex.faxtomail.persistence.entities.DemandTypeTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.EdiReturn; +import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.EmailFilter; +import com.franciaflex.faxtomail.persistence.entities.EmailGroup; +import com.franciaflex.faxtomail.persistence.entities.EmailGroupTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.EmailTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.ExtensionCommand; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; +import com.franciaflex.faxtomail.persistence.entities.History; +import com.franciaflex.faxtomail.persistence.entities.HistoryTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.HistoryType; +import com.franciaflex.faxtomail.persistence.entities.MailField; +import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.MailLock; +import com.franciaflex.faxtomail.persistence.entities.MailLockImpl; +import com.franciaflex.faxtomail.persistence.entities.MailLockTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.OriginalEmail; +import com.franciaflex.faxtomail.persistence.entities.OriginalEmailTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Priority; +import com.franciaflex.faxtomail.persistence.entities.PriorityTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Range; +import com.franciaflex.faxtomail.persistence.entities.RangeRow; +import com.franciaflex.faxtomail.persistence.entities.RangeRowTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.RangeTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Reply; +import com.franciaflex.faxtomail.persistence.entities.ReplyContent; +import com.franciaflex.faxtomail.persistence.entities.ReplyContentTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.ReplyTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.SearchFilter; +import com.franciaflex.faxtomail.persistence.entities.WaitingState; +import com.franciaflex.faxtomail.persistence.entities.WaitingStateTopiaDao; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; @@ -68,6 +112,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.commons.mail.DefaultAuthenticator; import org.apache.commons.mail.EmailConstants; import org.apache.commons.mail.EmailException; +import org.apache.commons.mail.HtmlEmail; import org.apache.commons.mail.MultiPartEmail; import org.hibernate.Hibernate; import org.hibernate.HibernateException; @@ -1085,7 +1130,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe */ @Override public Email reply(String from, String to, String cc, String bcc, String subject, - String content, Stamp signing, Collection<AttachmentFile> attachments, + String content, Collection<AttachmentFile> attachments, String originalEmailId, FaxToMailUser user) throws EmailException, MessagingException, IOException { Email email = getEmailById(originalEmailId, @@ -1096,7 +1141,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe final String password = getApplicationConfig().getSmtpPassword(); final boolean useSsl = getApplicationConfig().isSmtpUseSsl(); - MultiPartEmail message = new MultiPartEmail(); + HtmlEmail message = new HtmlEmail(); message.setHostName(getApplicationConfig().getSmtpHost()); message.setSmtpPort(getApplicationConfig().getSmtpPort()); if (StringUtils.isNotBlank(smtpUser) && password != null) { @@ -1124,12 +1169,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe toSendContent.append(content); } - // l'insertion de cette signature sera faîte pour l'envoi de fax uniquement si un corps de mail est renseigné. - if (signing != null && (!email.isFax() || StringUtils.isNotEmpty(content))) { - toSendContent.append("\n\n").append(signing.getText()); - } - - message.setMsg(toSendContent.toString()); + message.setHtmlMsg(toSendContent.toString()); for (AttachmentFile attachmentFile : attachments) { // Create the attachment diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java index dfebc45..e578793 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java @@ -43,6 +43,7 @@ import com.franciaflex.faxtomail.ui.swing.content.MainUI; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIModel; import com.franciaflex.faxtomail.ui.swing.util.UIMessageNotifier; +import com.franciaflex.faxtomail.ui.swing.util.data.Handler; import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -79,8 +80,11 @@ import org.nuiton.util.converter.ConverterUtil; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; -import javax.swing.*; -import java.awt.*; +import javax.swing.JFrame; +import javax.swing.JOptionPane; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Closeable; @@ -346,6 +350,8 @@ public class FaxToMailUIContext extends AbstractBean implements Closeable, UIMes public void init() { + Handler.install(); + config.prepareDirectories(); // use our special classLoader (which will read some files from resources from a configuration directory) diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx index b355c84..f1fb63f 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx @@ -21,7 +21,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI +<com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI superGenericType="AttachmentEditorUIModel, AttachmentEditorUIHandler" id='attachmentDialog'> @@ -110,4 +110,4 @@ </JPanel> </JScrollPane> </JXTitledPanel> -</com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI> +</com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java index 4b1811b..a8d4b0a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java @@ -27,7 +27,7 @@ package com.franciaflex.faxtomail.ui.swing.content.attachment; import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.ui.swing.content.attachment.actions.EditAttachmentAction; import com.franciaflex.faxtomail.ui.swing.content.attachment.actions.OpenAttachmentAction; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.collect.Iterables; import jaxx.runtime.SwingUtil; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java index 5f46702..8af8d2a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java @@ -26,7 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.attachment; import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupButton; import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java index 00f4d3b..2c94e47 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java @@ -24,6 +24,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.actions; * #L% */ +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUIHandler; @@ -31,7 +32,7 @@ import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; import jaxx.runtime.JAXXUtil; -import java.awt.*; +import java.awt.Dimension; import static org.nuiton.i18n.I18n.t; @@ -63,6 +64,12 @@ public class SaveAndOpenReplyFormAction extends SaveAndOpenModalFrameAction<Repl ReplyFormUIModel model = frameContent.getModel(); DemandeUIModel currentDemand = getModel(); + SigningForDomain signingForDomain = null; + if (!currentDemand.isFax()) { + signingForDomain = getContext().newServiceContext().getConfigurationService().getSigningForEmailAddress(currentDemand.getRecipient()).orNull(); + } + model.setSigning(signingForDomain); + model.setOriginalDemand(currentDemand); String sender = JAXXUtil.getStringValue(currentDemand.getSender()); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java index 4759691..d544aa2 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java @@ -26,7 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupButton; import jaxx.runtime.swing.JAXXWidgetUtil; import javax.swing.*; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx index 73ab13c..666d247 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx @@ -21,7 +21,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI +<com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI superGenericType="com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel, DemandGroupUIHandler" id='groupedDemandDialog'> @@ -52,4 +52,4 @@ </JScrollPane> </JXTitledPanel> -</com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI> +</com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java index 695403d..356f8e1 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java @@ -26,7 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup; import com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup.actions.OpenGroupedDemandAction; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupHandler; import com.google.common.collect.Iterables; import jaxx.runtime.validator.swing.SwingValidator; import org.jdesktop.swingx.JXTable; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java index 11e6e9e..733b2ae 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java @@ -28,7 +28,7 @@ import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.History; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupButton; import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.collections4.CollectionUtils; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx index e12bb8a..4c88ef4 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx @@ -21,7 +21,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI +<com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI superGenericType="com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel, HistoryListUIHandler" id='historyListDialog'> @@ -50,4 +50,4 @@ </JScrollPane> </JXTitledPanel> -</com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI> +</com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java index 086f7b8..3d9278f 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java @@ -27,7 +27,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.history; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.History; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.base.Function; import com.google.common.collect.Ordering; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java index af89479..2143127 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java @@ -28,7 +28,7 @@ import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.Reply; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupButton; import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.collections4.CollectionUtils; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx index 5e0cc10..e9d371a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx @@ -21,7 +21,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI +<com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI superGenericType="com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel, DemandRepliesUIHandler" id='repliesDialog'> @@ -55,4 +55,4 @@ </JScrollPane> </JXTitledPanel> -</com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI> +</com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java index b6319c8..19226b1 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java @@ -38,7 +38,7 @@ import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyAttachmentModel; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.collect.Iterables; import jaxx.runtime.JAXXUtil; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css index b3e1cd7..e813e30 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css @@ -119,48 +119,11 @@ dividerLocation: 270; } -#signingSplitPane { - dividerSize: { model.isReadonly() ? 0 : 10 }; - resizeWeight: 1.0; - name: { "signingSplitPane" + model.isReadonly() }; // to save the state differently in the swing session -} - #message { text: { model.getMessage() }; editable: { !model.isReadonly() }; } -#signingPanel { - visible: { !model.isReadonly() }; -} - -#signingLabel { - text: "faxtomail.reply.label.signing"; -} - -#stampComboBox { - showReset: true; - showDecorator: false; - bean: {model}; - property: stamp; - selectedItem: { model.getStamp() }; -} - -#configureSigningButton { - actionIcon: settings; - toolTipText: "faxtomail.reply.action.signing.configure.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.OpenSigningSettingsAction.class }; -} - -#signingScrollPanel { - visible: { model.getStamp() != null }; -} - -#signingTextPanel { - editable: false; - text: { model.getStamp().getText() }; -} - #attachmentsPanel { background: { Color.WHITE }; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx index 2756629..66b2e4e 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx @@ -150,42 +150,10 @@ orientation="{JSplitPane.VERTICAL_SPLIT}" constraints='BorderLayout.CENTER'> - <JSplitPane id="signingSplitPane" - orientation="{JSplitPane.VERTICAL_SPLIT}"> - - - <JScrollPane> - <JTextPane id="message" - onKeyReleased='handler.setText(event, "message")'/> - </JScrollPane> - - <JPanel id="signingPanel" - layout="{new BorderLayout()}"> - - <JPanel layout="{new BorderLayout()}" - constraints="BorderLayout.NORTH"> - - <JLabel id="signingLabel" - constraints="BorderLayout.WEST"/> - - <BeanComboBox id="stampComboBox" - constructorParams='this' - genericType="Stamp" - constraints="BorderLayout.CENTER"/> - - <JButton id="configureSigningButton" - constraints="BorderLayout.EAST"/> - - </JPanel> - - <JScrollPane id="signingScrollPanel" - constraints="BorderLayout.CENTER"> - <JTextPane id="signingTextPanel"/> - </JScrollPane> - - </JPanel> - - </JSplitPane> + <JScrollPane> + <JTextPane id="message" + onKeyReleased='handler.setText(event, "message")'/> + </JScrollPane> <JPanel layout='{new BorderLayout()}'> <JLabel id="attachmentsLabel" constraints='BorderLayout.NORTH'/> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java index ef1317b..192c948 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java @@ -30,10 +30,11 @@ import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailFolder; -import com.franciaflex.faxtomail.persistence.entities.Stamp; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; import com.franciaflex.faxtomail.services.service.ldap.Contact; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.reply.actions.AddAttachmentToReplyAction; +import com.franciaflex.faxtomail.ui.swing.content.reply.actions.SenderChangedAction; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.base.Strings; @@ -50,12 +51,14 @@ import org.nuiton.validator.bean.simple.SimpleBeanValidator; import javax.swing.ComboBoxEditor; import javax.swing.JComboBox; import javax.swing.JComponent; +import javax.swing.JEditorPane; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JTextPane; import java.awt.Component; import java.awt.Dimension; +import java.awt.Font; import java.awt.Window; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; @@ -66,7 +69,9 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Date; import java.util.List; +import java.util.regex.Pattern; import static org.nuiton.i18n.I18n.t; @@ -78,14 +83,22 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo private static final Log log = LogFactory.getLog(ReplyFormUIHandler.class); + private static final String SIGNING_CLASS_PREFIX = "faxToMailSigning"; + + private static final String CONTENT_SEPARATOR = "<br/><br/>----------------<br/><br/>"; + + private String signingClass; + protected AddAttachmentToReplyAction addAttachmentToReplyAction; + protected SenderChangedAction senderChangedAction; + @Override public void beforeInit(ReplyFormUI ui) { super.beforeInit(ui); - addAttachmentToReplyAction = - getContext().getActionFactory().createLogicAction(this, AddAttachmentToReplyAction.class); + addAttachmentToReplyAction = getContext().getActionFactory().createLogicAction(this, AddAttachmentToReplyAction.class); + senderChangedAction = getContext().getActionFactory().createLogicAction(this, SenderChangedAction.class); ReplyFormUIModel model = new ReplyFormUIModel(); //TODO kmorin 20140813 action ? @@ -102,6 +115,12 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo JTextPane editor = ui.getMessage(); editor.setCaretPosition(0); + editor.setContentType("text/html"); + + editor.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); + Font font = new Font(Font.MONOSPACED, Font.PLAIN, 16); + editor.setFont(font); + ReplyFormUIModel model = getModel(); model.addPropertyChangeListener(ReplyFormUIModel.PROPERTY_ORIGINAL_DEMAND, new PropertyChangeListener() { @Override @@ -109,7 +128,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo DemandeUIModel demand = (DemandeUIModel) evt.getNewValue(); ReplyFormUIModel model = (ReplyFormUIModel) evt.getSource(); - List<DemandeUIModel> models = new ArrayList<DemandeUIModel>(); + List<DemandeUIModel> models = new ArrayList<>(); models.addAll(demand.getGroupedDemandes()); for (DemandeUIModel demandeUIModel : models) { @@ -132,14 +151,9 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo model.setSubject(t("faxtomail.reply.subject", demand.getSubject())); - String plainContent = StringUtils.join(demand.getPlainContent(), "\n\n----------------\n\n"); - String quotedReply = t("faxtomail.reply.message", - decorate(demand.getReceptionDate()), - demand.getSender(), - plainContent != null ? plainContent.replaceAll("\n", "\n> ") : ""); - model.setMessage(quotedReply); - String recipient = demand.getRecipient(); + String signing; + // this have to be disable for read only mode (useless) if (!model.isReadonly()) { @@ -150,8 +164,8 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo // sender combo MailFolder folder = demand.getMailFolder(); - List<String> folderReplyAdresses = new ArrayList<String>(); - List<String> folderReplyDomains = new ArrayList<String>(); + List<String> folderReplyAdresses = new ArrayList<>(); + List<String> folderReplyDomains = new ArrayList<>(); while (folder != null) { folderReplyAdresses.addAll(folder.getReplyAddresses()); folderReplyDomains.addAll(folder.getReplyDomains()); @@ -171,9 +185,6 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo } Collections.sort(replyToAddresses); -// DefaultComboBoxModel comboBoxModel = SwingUtil.newComboModel(replyToAddresses.toArray()); -// comboBoxModel.setSelectedItem(selectedItem); -// ui.getFromComboBox().setModel(comboBoxModel); ui.getFromComboBox().setBeanType(String.class); initBeanFilterableComboBox(ui.getFromComboBox(), replyToAddresses, selectedItem); @@ -181,9 +192,24 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo initBeanFilterableComboBox(ui.getContactField(), getContext().getContactCache(), null); + signingClass = SIGNING_CLASS_PREFIX + new Date().getTime(); + + signing = getSigningParagraph(createSigning(recipient)); + } else { model.setFrom(recipient); + signing = ""; } + + String plainContent = StringUtils.join(demand.getPlainContent(), CONTENT_SEPARATOR); + String quotedText = plainContent != null ? plainContent.replaceAll("\n", "<br/> ") : ""; + + String quotedReply = t("faxtomail.reply.message", + signing, + decorate(demand.getReceptionDate()), + demand.getSender(), + quotedText); + model.setMessage(quotedReply); } }); @@ -201,6 +227,17 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo } }); + model.addPropertyChangeListener(ReplyFormUIModel.PROPERTY_FROM, new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + ReplyFormUIModel model = (ReplyFormUIModel) evt.getSource(); + if (!model.isReadonly()) { + getContext().getActionEngine().runAction(senderChangedAction); + } + } + }); + JComboBox addAttachmentFile = ui.getAddAttachmentFile(); addAttachmentFile.setEditor(new FileComboBoxEditor()); @@ -218,16 +255,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo } }); - FaxToMailUser currentUser = getContext().getCurrentUser(); - Collection<Stamp> userStamps = currentUser.getSignings(); - List<Stamp> stamps = new ArrayList<>(); - - if (userStamps != null) { - stamps.addAll(userStamps); - model.setStamp(currentUser.getDefaultSigning()); - } - - initBeanComboBox(ui.getStampComboBox(), stamps, model.getStamp()); + } @Override @@ -514,4 +542,39 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo model.setCci(cci); } } + + public void replaceSigning() { + ReplyFormUIModel model = getModel(); + String signing = createSigning(model.getFrom()); + String message = model.getMessage(); + if (message != null) { + message = Pattern.compile(getSigningParagraph(".*?"), Pattern.DOTALL).matcher(message).replaceFirst(getSigningParagraph(signing)); + model.setMessage(message); + } + } + + protected String createSigning(String from) { + FaxToMailUser currentUser = getContext().getCurrentUser(); + String signing = currentUser.getFirstName() + " " + currentUser.getLastName() + + "<br/>" + from + "<br/>"; + + SigningForDomain signingForDomain = getModel().getSigning(); + if (signingForDomain != null) { + if (signingForDomain.getImage() != null) { + signing += "<img src=\"" + signingForDomain.getImage() + "\"/>"; + } else { + signing += signingForDomain.getText().replaceAll("\\n", "<br/>"); + + if (log.isInfoEnabled()) { + log.info("signing " + signing); + } + } + } + + return signing; + } + + protected String getSigningParagraph(String signing) { + return "<div class=\"" + signingClass + "\">" + signing + "</div>"; + } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java index e3fea53..de82dd7 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java @@ -24,7 +24,7 @@ package com.franciaflex.faxtomail.ui.swing.content.reply; * #L% */ -import com.franciaflex.faxtomail.persistence.entities.Stamp; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; import com.franciaflex.faxtomail.services.service.ldap.Contact; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.google.common.base.Preconditions; @@ -54,7 +54,7 @@ public class ReplyFormUIModel extends AbstractSerializableBean { public static final String PROPERTY_SUBJECT = "subject"; public static final String PROPERTY_MESSAGE = "message"; public static final String PROPERTY_ORIGINAL_DEMAND = "originalDemand"; - public static final String PROPERTY_STAMP = "stamp"; + public static final String PROPERTY_SIGNING = "signing"; public static final String PROPERTY_ATTACHMENT = "attachment"; public static final String PROPERTY_MAX_ATTACHMENT_LENGTH = "maxAttachmentLength"; public static final String PROPERTY_TOTAL_ATTACHMENT_LENGTH = "totalAttachmentLength"; @@ -73,7 +73,7 @@ public class ReplyFormUIModel extends AbstractSerializableBean { protected String subject; protected String message; protected DemandeUIModel originalDemand; - protected Stamp stamp; + protected SigningForDomain signing; protected long maxAttachmentLength = 0; protected long totalAttachmentLength = 0; protected boolean valid = true; @@ -180,14 +180,14 @@ public class ReplyFormUIModel extends AbstractSerializableBean { firePropertyChange(PROPERTY_ORIGINAL_DEMAND, oldValue, originalDemand); } - public Stamp getStamp() { - return stamp; + public SigningForDomain getSigning() { + return signing; } - public void setStamp(Stamp stamp) { - Object oldValue = getStamp(); - this.stamp = stamp; - firePropertyChange(PROPERTY_STAMP, oldValue, stamp); + public void setSigning(SigningForDomain signing) { + Object oldValue = getSigning(); + this.signing = signing; + firePropertyChange(PROPERTY_SIGNING, oldValue, signing); } public Set<ReplyAttachmentModel> getAttachments() { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.css deleted file mode 100644 index 4baf2ea..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.css +++ /dev/null @@ -1,95 +0,0 @@ -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 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% - */ -#signingsLabel { - text: "faxtomail.signings.settings.label"; -} - -#newSigningButton { - actionIcon: add; - toolTipText: "faxtomail.signings.settings.action.newSigning.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.NewSigningAction.class }; -} - -/* -#signingList { - items: { model.getSignings() }; - selectedItem: { model.getSelectedSigning() }; -} -*/ - -#signingPanelLayout { - selected: { String.valueOf(model.getSelectedSigning() != null) }; -} - -#nameLabel { - text: "faxtomail.signings.settings.name.label"; -} - -#nameField { - text: { model.getSelectedSigningName() }; -} - -#textLabel { - text: "faxtomail.signings.settings.text.label"; -} - -#textField { - text: { model.getSelectedSigningText() }; -} - -#noSigningSelected { - text: "faxtomail.signings.settings.noSelection.label"; - horizontalAlignment: { SwingConstants.CENTER }; - enabled: false; -} - -#cancelButton { - actionIcon: cancel; - text: "faxtomail.signings.settings.action.cancel"; - toolTipText: "faxtomail.signings.settings.action.cancel.tip"; -} - -#saveButton { - actionIcon: save; - text: "faxtomail.signings.settings.action.save"; - toolTipText: "faxtomail.signings.settings.action.save.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.SaveSigningAction.class }; - enabled: { model.getSelectedSigning() != null && model.isModified() && validator.isValid() }; -} - -#setDefaultButton { - actionIcon: default; - text: "faxtomail.signings.settings.action.default"; - toolTipText: "faxtomail.signings.settings.action.default.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.SetDefaultSigningAction.class }; - enabled: { model.isSetDefaultButtonEnabled() && validator.isValid() }; -} - -#deleteButton { - actionIcon: delete; - text: "faxtomail.signings.settings.action.delete"; - toolTipText: "faxtomail.signings.settings.action.delete.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.DeleteSigningAction.class }; - enabled: { model.getSelectedSigning() != null }; -} \ No newline at end of file diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.jaxx deleted file mode 100644 index 8045303..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.jaxx +++ /dev/null @@ -1,101 +0,0 @@ -<!-- - #%L - FaxToMail :: UI - %% - Copyright (C) 2014 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% - --> -<JSplitPane id='signingSettingsPanel' - implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<SigningSettingsUIModel, SigningSettingsUIHandler>'> - - <import> - com.franciaflex.faxtomail.persistence.entities.Stamp - com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI - com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil - - javax.swing.SwingConstants - - jaxx.runtime.swing.CardLayout2Ext - </import> - - <SigningSettingsUIModel id='model' - initializer='getContextValue(SigningSettingsUIModel.class)'/> - - <BeanValidator id='validator' bean='model' - uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> - <field name='selectedSigningName' component='nameField'/> - <field name='selectedSigningText' component='textField'/> - </BeanValidator> - - <CardLayout2Ext id='signingPanelLayout' - constructorParams='this, "signingPanel"'/> - - <Table> - <row> - <cell weightx="1.0" fill="both"> - <JLabel id="signingsLabel"/> - </cell> - <cell> - <JButton id="newSigningButton"/> - </cell> - </row> - <row> - <cell columns="2" weighty="1.0" fill="both"> - <JList id="signingList" genericType="Stamp"/> - </cell> - </row> - </Table> - - <JPanel layout="{new BorderLayout()}"> - - <JPanel id="signingPanel" - layout="{ signingPanelLayout }" - constraints="BorderLayout.CENTER"> - - <Table constraints='"true"'> - <row> - <cell> - <JLabel id="nameLabel"/> - </cell> - <cell weightx="1.0" fill="both" > - <JTextField id="nameField" onKeyReleased='handler.setText(event, "selectedSigningName")'/> - </cell> - </row> - <row> - <cell anchor="northwest"> - <JLabel id="textLabel"/> - </cell> - <cell weightx="1.0" weighty="1.0" fill="both" > - <JTextPane id="textField" onKeyReleased='handler.setText(event, "selectedSigningText")'/> - </cell> - </row> - </Table> - - <JLabel id="noSigningSelected" constraints='"false"'/> - - </JPanel> - - <JPanel constraints="BorderLayout.SOUTH"> - <JButton id="cancelButton" onActionPerformed="handler.cancel()"/> - <JButton id="saveButton"/> - <JButton id="setDefaultButton"/> - <JButton id="deleteButton"/> - </JPanel> - - </JPanel> - -</JSplitPane> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIHandler.java deleted file mode 100644 index b90997a..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIHandler.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 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.Stamp; -import com.franciaflex.faxtomail.ui.swing.content.reply.actions.SaveSigningAction; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; -import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; -import jaxx.runtime.validator.swing.SwingValidator; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.decorator.Decorator; -import org.nuiton.jaxx.application.swing.util.Cancelable; - -import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import java.awt.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.Collection; -import java.util.List; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class SigningSettingsUIHandler extends AbstractFaxToMailUIHandler<SigningSettingsUIModel, SigningSettingsUI> implements Cancelable { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(SigningSettingsUIHandler.class); - - @Override - public void beforeInit(SigningSettingsUI ui) { - super.beforeInit(ui); - - SigningSettingsUIModel model = new SigningSettingsUIModel(); - this.ui.setContextValue(model); - } - - @Override - public void afterInit(SigningSettingsUI ui) { - initUI(ui); - - SigningSettingsUIModel model = getModel(); - - model.addPropertyChangeListener(SigningSettingsUIModel.PROPERTY_SIGNINGS, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - - List<Stamp> signings = (List<Stamp>) evt.getNewValue(); - JList<Stamp> signingList = getUI().getSigningList(); - signingList.setListData(signings.toArray(new Stamp[signings.size()])); - } - }); - - model.addPropertyChangeListener(SigningSettingsUIModel.PROPERTY_SELECTED_SIGNING, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - getUI().getSigningList().setSelectedValue(evt.getNewValue(), true); - } - }); - - Collection<Stamp> stampSigning = getContext().getCurrentUser().getSignings(); - model.setSignings(stampSigning); - - JList<Stamp> signingList = getUI().getSigningList(); - - Decorator<Stamp> signingDecorator = getDecorator(Stamp.class, null); - ListCellRenderer listCellRenderer = new SigningListCellRenderer(signingDecorator); - signingList.setCellRenderer(listCellRenderer); - - signingList.addListSelectionListener(new ListSelectionListener() { - @Override - public void valueChanged(ListSelectionEvent e) { - if (!e.getValueIsAdjusting()) { - - SigningSettingsUIModel model = getModel(); - JList<Stamp> list = (JList<Stamp>) e.getSource(); - - if (model.isModified()) { - int saveAnswer = askSaveBeforeLeaving(t("faxtomail.signings.settings.saveBeforeLeaving", - model.getSelectedSigningName())); - switch (saveAnswer) { - case JOptionPane.CANCEL_OPTION: - model.setModified(false); // don't cause yet another prompt when reverting selection - list.setSelectedValue(model.getSelectedSigning(), true); - model.setModified(true); - return; - - case JOptionPane.YES_OPTION: - getContext().getActionEngine().runActionAndWait(SigningSettingsUIHandler.this, SaveSigningAction.class); - break; - - case JOptionPane.NO_OPTION: - model.resetSelectedSigning(); - break; - } - } - - Stamp selectedValue = list.getSelectedValue(); - model.setSelectedSigning(selectedValue); - model.setSelectedSigningDefault(selectedValue != null && - selectedValue.equals(getContext().getCurrentUser().getDefaultSigning())); - } - } - }); - - } - - @Override - public void cancel() { - getParentContainer(Dialog.class).setVisible(false); - } - - @Override - public void onCloseUI() { - } - - - @Override - public Component getTopestUI() { - return getUI(); - } - - @Override - public SwingValidator<SigningSettingsUIModel> getValidator() { - return getUI().getValidator(); - } - - @Override - protected JComponent getComponentToFocus() { - return null; - } - - private class SigningListCellRenderer extends DecoratorListCellRenderer { - - public SigningListCellRenderer(Decorator<Stamp> decorator) { - super(decorator); - } - - @Override - protected Object decorateValue(Object value, int index) { - String label = (String) super.decorateValue(value, index); - Stamp signing = (Stamp) value; - if (signing != null && signing.equals(getContext().getCurrentUser().getDefaultSigning())) { - label = "<html><strong>" + label + "</strong></html>"; - } - return label; - } - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIModel.java deleted file mode 100644 index 9c78e38..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIModel.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 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.Stamp; -import org.jdesktop.beans.AbstractSerializableBean; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class SigningSettingsUIModel extends AbstractSerializableBean { - - public static final String PROPERTY_SIGNINGS = "signings"; - public static final String PROPERTY_SELECTED_SIGNING = "selectedSigning"; - public static final String PROPERTY_SELECTED_SIGNING_NAME = "selectedSigningName"; - public static final String PROPERTY_SELECTED_SIGNING_TEXT = "selectedSigningText"; - public static final String PROPERTY_SELECTED_SIGNING_DEFAULT = "selectedSigningDefault"; - public static final String PROPERTY_SET_DEFAULT_BUTTON_ENABLED = "setDefaultButtonEnabled"; - public static final String PROPERTY_MODIFIED = "modified"; - - - protected List<Stamp> signings = new ArrayList<>(); - protected Stamp selectedSigning; - protected String selectedSigningName; - protected String selectedSigningText; - protected boolean selectedSigningDefault; - protected boolean modified; - - public Stamp getSelectedSigning() { - return selectedSigning; - } - - public void setSelectedSigning(Stamp selectedSigning) { - Object oldValue = getSelectedSigning(); - this.selectedSigning = selectedSigning; - firePropertyChange(PROPERTY_SELECTED_SIGNING, oldValue, selectedSigning); - - setSelectedSigningName(selectedSigning != null ? selectedSigning.getLabel() : ""); - setSelectedSigningText(selectedSigning != null ? selectedSigning.getText() : ""); - - setModified(false); - updateSetDefaultButtonEnabled(); - } - - public List<Stamp> getSignings() { - return signings; - } - - public void setSignings(Collection<Stamp> signings) { - this.signings.clear(); - if (signings != null) { - this.signings.addAll(signings); - } - firePropertyChange(PROPERTY_SIGNINGS, null, this.signings); - } - - public void addSigning(Stamp signing) { - this.signings.add(signing); - firePropertyChange(PROPERTY_SIGNINGS, null, this.signings); - } - - public void removeSigning(Stamp signing) { - this.signings.remove(signing); - firePropertyChange(PROPERTY_SIGNINGS, null, this.signings); - } - - public String getSelectedSigningName() { - return selectedSigningName; - } - - public void setSelectedSigningName(String selectedSigningName) { - Object oldValue = getSelectedSigningName(); - this.selectedSigningName = selectedSigningName; - firePropertyChange(PROPERTY_SELECTED_SIGNING_NAME, oldValue, selectedSigningName); - setModified(true); - } - - public String getSelectedSigningText() { - return selectedSigningText; - } - - public void setSelectedSigningText(String selectedSigningText) { - Object oldValue = getSelectedSigningText(); - this.selectedSigningText = selectedSigningText; - firePropertyChange(PROPERTY_SELECTED_SIGNING_TEXT, oldValue, selectedSigningText); - setModified(true); - } - - public boolean isSelectedSigningDefault() { - return selectedSigningDefault; - } - - public void setSelectedSigningDefault(boolean selectedSigningDefault) { - Object oldValue = isSelectedSigningDefault(); - this.selectedSigningDefault = selectedSigningDefault; - firePropertyChange(PROPERTY_SELECTED_SIGNING_DEFAULT, oldValue, selectedSigningDefault); - updateSetDefaultButtonEnabled(); - } - - public boolean isSetDefaultButtonEnabled() { - return selectedSigning != null - && selectedSigning.isPersisted() - && !selectedSigningDefault; - } - - public void updateSetDefaultButtonEnabled() { - firePropertyChange(PROPERTY_SET_DEFAULT_BUTTON_ENABLED, null, isSetDefaultButtonEnabled()); - } - - public boolean isModified() { - return modified; - } - - public void setModified(boolean modified) { - Object oldValue = isModified(); - this.modified = modified; - firePropertyChange(PROPERTY_MODIFIED, oldValue, modified); - } - - public void resetSelectedSigning() { - setSelectedSigningName(selectedSigning.getLabel()); - setSelectedSigningText(selectedSigning.getText()); - setModified(false); - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/DeleteSigningAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/DeleteSigningAction.java deleted file mode 100644 index a0f0cc3..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/DeleteSigningAction.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply.actions; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 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.FaxToMailUser; -import com.franciaflex.faxtomail.persistence.entities.Stamp; -import com.franciaflex.faxtomail.services.service.UserService; -import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class DeleteSigningAction extends AbstractFaxToMailAction<SigningSettingsUIModel, SigningSettingsUI, SigningSettingsUIHandler> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(DeleteSigningAction.class); - - public DeleteSigningAction(SigningSettingsUIHandler handler) { - super(handler, false); - } - - @Override - public boolean prepareAction() throws Exception { - boolean result = super.prepareAction(); - - if (result) { - result = askBeforeDelete(t("faxtomail.signings.settings.action.delete.confirm.title"), - t("faxtomail.signings.settings.action.delete.confirm.message", - getModel().getSelectedSigningName())); - } - - return result; - } - - @Override - public void doAction() throws Exception { - SigningSettingsUIModel model = getModel(); - Stamp signing = model.getSelectedSigning(); - - FaxToMailUser user = getContext().getCurrentUser(); - - UserService userService = getContext().newServiceContext().getUserService(); - userService.deleteSigning(user, signing); - - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - SigningSettingsUIModel model = getModel(); - model.setModified(false); - - Stamp selectedSigning = model.getSelectedSigning(); - model.setSelectedSigning(null); - model.removeSigning(selectedSigning); - - model.updateSetDefaultButtonEnabled(); - - getUI().getSigningList().repaint(); - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/NewSigningAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/NewSigningAction.java deleted file mode 100644 index 487fe99..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/NewSigningAction.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply.actions; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 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.Stamp; -import com.franciaflex.faxtomail.persistence.entities.StampImpl; -import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class NewSigningAction extends AbstractFaxToMailAction<SigningSettingsUIModel, SigningSettingsUI, SigningSettingsUIHandler> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(NewSigningAction.class); - - protected Stamp newSigning; - - public NewSigningAction(SigningSettingsUIHandler handler) { - super(handler, false); - } - - @Override - public boolean prepareAction() throws Exception { - return super.prepareAction(); - } - - @Override - public void doAction() throws Exception { - newSigning = new StampImpl(); - newSigning.setSigning(true); - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - SigningSettingsUIModel model = getModel(); - model.addSigning(newSigning); - newSigning.setLabel(t("faxtomail.signings.settings.action.newSigning.name")); - model.setSelectedSigning(newSigning); - model.setSelectedSigningDefault(false); - model.updateSetDefaultButtonEnabled(); - - } - - @Override - protected void releaseAction() { - super.releaseAction(); - newSigning = null; - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/OpenSigningSettingsAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/OpenSigningSettingsAction.java deleted file mode 100644 index 5890fab..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/OpenSigningSettingsAction.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply.actions; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 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.Stamp; -import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUI; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.awt.*; -import java.util.List; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class OpenSigningSettingsAction extends AbstractFaxToMailAction<ReplyFormUIModel, ReplyFormUI, ReplyFormUIHandler> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(OpenSigningSettingsAction.class); - - public OpenSigningSettingsAction(ReplyFormUIHandler handler) { - super(handler, false); - } - - @Override - public void doAction() throws Exception { - // do nothing - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - SigningSettingsUI signingSettingsUI = new SigningSettingsUI(getUI()); - handler.openDialog(signingSettingsUI, t("faxtomail.signings.settings.title"), new Dimension(700, 400)); - - List<Stamp> signings = signingSettingsUI.getModel().getSignings(); - getContext().getCurrentUser().setSignings(signings); - getUI().getStampComboBox().setData(signings); - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java index 7a8ba79..6bc96a9 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java @@ -71,15 +71,14 @@ public class ReplyAction extends AbstractFaxToMailAction<ReplyFormUIModel, Reply } }); Email email = emailService.reply(model.getFrom(), - model.getTo(), - model.getCc(), - model.getCci(), - model.getSubject(), - model.getMessage(), - model.getStamp(), - attachmentFiles, - originalDemand.getTopiaId(), - getContext().getCurrentUser()); + model.getTo(), + model.getCc(), + model.getCci(), + model.getSubject(), + model.getMessage(), + attachmentFiles, + originalDemand.getTopiaId(), + getContext().getCurrentUser()); originalDemand.fromEntityIncluding(email, Sets.newHashSet(Email.PROPERTY_REPLIES, Email.PROPERTY_HISTORY)); } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SaveSigningAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SaveSigningAction.java deleted file mode 100644 index 976cdee..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SaveSigningAction.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply.actions; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 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.FaxToMailUser; -import com.franciaflex.faxtomail.persistence.entities.Stamp; -import com.franciaflex.faxtomail.services.service.UserService; -import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class SaveSigningAction extends AbstractFaxToMailAction<SigningSettingsUIModel, SigningSettingsUI, SigningSettingsUIHandler> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(SaveSigningAction.class); - - public SaveSigningAction(SigningSettingsUIHandler handler) { - super(handler, false); - } - - @Override - public void doAction() throws Exception { - SigningSettingsUIModel model = getModel(); - Stamp signing = model.getSelectedSigning(); - signing.setLabel(model.getSelectedSigningName()); - signing.setText(model.getSelectedSigningText()); - - FaxToMailUser user = getContext().getCurrentUser(); - - UserService userService = getContext().newServiceContext().getUserService(); - userService.saveSigning(user, signing, user.isSigningsEmpty()); - - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - SigningSettingsUIModel model = getModel(); - model.updateSetDefaultButtonEnabled(); - model.setModified(false); - getUI().getSigningList().repaint(); - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java new file mode 100644 index 0000000..943cb39 --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java @@ -0,0 +1,57 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply.actions; + +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; +import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIHandler; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; +import com.google.common.base.Optional; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Kevin Morin (Code Lutin) + * @since 2.0.4 + */ +public class SenderChangedAction extends AbstractFaxToMailAction<ReplyFormUIModel, ReplyFormUI, ReplyFormUIHandler> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(SenderChangedAction.class); + + private SigningForDomain signingForDomain; + + public SenderChangedAction(ReplyFormUIHandler handler) { + super(handler, false); + setActionDescription(t("faxtomail.action.senderChanged.tip")); + } + + @Override + public boolean prepareAction() throws Exception { + return super.prepareAction() && !getModel().isReadonly(); + } + + @Override + public void doAction() throws Exception { + ReplyFormUIModel model = getModel(); + FaxToMailServiceContext serviceContext = getContext().newServiceContext(); + Optional<SigningForDomain> signingForEmailAddress = serviceContext.getConfigurationService().getSigningForEmailAddress(model.getFrom()); + signingForDomain = signingForEmailAddress.orNull(); + } + + @Override + public void postSuccessAction() { + super.postSuccessAction(); + + getModel().setSigning(signingForDomain); + getHandler().replaceSigning(); + } + + @Override + protected void releaseAction() { + super.releaseAction(); + signingForDomain = null; + } +} \ No newline at end of file diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SetDefaultSigningAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SetDefaultSigningAction.java deleted file mode 100644 index 298f7dc..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SetDefaultSigningAction.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply.actions; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 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.FaxToMailUser; -import com.franciaflex.faxtomail.persistence.entities.Stamp; -import com.franciaflex.faxtomail.services.service.UserService; -import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class SetDefaultSigningAction extends AbstractFaxToMailAction<SigningSettingsUIModel, SigningSettingsUI, SigningSettingsUIHandler> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(SetDefaultSigningAction.class); - - public SetDefaultSigningAction(SigningSettingsUIHandler handler) { - super(handler, false); - } - - @Override - public void doAction() throws Exception { - SigningSettingsUIModel model = getModel(); - Stamp signing = model.getSelectedSigning(); - signing.setLabel(model.getSelectedSigningName()); - signing.setText(model.getSelectedSigningText()); - - FaxToMailUser user = getContext().getCurrentUser(); - - UserService userService = getContext().newServiceContext().getUserService(); - userService.saveSigning(user, signing, true); - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - getModel().setSelectedSigningDefault(true); - getModel().updateSetDefaultButtonEnabled(); - getModel().setModified(false); - getUI().getSigningList().repaint(); - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java index 42c1b24..4deca44 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java @@ -80,7 +80,6 @@ import javax.swing.JTextPane; import javax.swing.JTree; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; -import javax.swing.text.html.HTMLEditorKit; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; @@ -866,8 +865,6 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { textPane.setEditable(false); textPane.setContentType("text/html"); - HTMLEditorKit htmlEditorKit = new HTMLEditorKit(); - textPane.setEditorKit(htmlEditorKit); textPane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); Font font = new Font(Font.MONOSPACED, Font.PLAIN, 16); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/DataConnection.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/DataConnection.java new file mode 100644 index 0000000..55ff86e --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/DataConnection.java @@ -0,0 +1,33 @@ +package com.franciaflex.faxtomail.ui.swing.util.data; + +import javax.xml.bind.DatatypeConverter; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; + +/** + * @author Kevin Morin (Code Lutin) + * @since 2.0.4 + */ +public class DataConnection extends URLConnection { + + public DataConnection(URL u) { + super(u); + } + + @Override + public void connect() throws IOException { + connected = true; + } + + @Override + public InputStream getInputStream() throws IOException { + String data = url.toString(); + data = data.replaceFirst("^.*;base64,", ""); + byte[] bytes = DatatypeConverter.parseBase64Binary(data); + return new ByteArrayInputStream(bytes); + } + +} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/Handler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/Handler.java new file mode 100644 index 0000000..283cc67 --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/Handler.java @@ -0,0 +1,34 @@ +package com.franciaflex.faxtomail.ui.swing.util.data; + +import java.io.IOException; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLStreamHandler; + +/** + * Handler to display base64 images in html emails in the jtextpane + * + * @author Kevin Morin (Code Lutin) + * @since 2.0.4 + */ +public class Handler extends URLStreamHandler { + + @Override + protected URLConnection openConnection(URL u) throws IOException { + return new DataConnection(u); + } + + public static void install() { + String pkgName = Handler.class.getPackage().getName(); + String pkg = pkgName.substring(0, pkgName.lastIndexOf('.')); + + String protocolHandlers = System.getProperty("java.protocol.handler.pkgs", ""); + if (!protocolHandlers.contains(pkg)) { + if (!protocolHandlers.isEmpty()) { + protocolHandlers += "|"; + } + protocolHandlers += pkg; + System.setProperty("java.protocol.handler.pkgs", protocolHandlers); + } + } +} \ No newline at end of file diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupButton.java similarity index 97% rename from faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java rename to faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupButton.java index 3dab88f..9cb0216 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupButton.java @@ -1,4 +1,4 @@ -package com.franciaflex.faxtomail.ui.swing.util; +package com.franciaflex.faxtomail.ui.swing.util.toolbar; /* * #%L @@ -24,6 +24,7 @@ package com.franciaflex.faxtomail.ui.swing.util; * #L% */ +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.logging.Log; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupHandler.java similarity index 97% rename from faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java rename to faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupHandler.java index f3b370d..d452b9b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupHandler.java @@ -1,4 +1,4 @@ -package com.franciaflex.faxtomail.ui.swing.util; +package com.franciaflex.faxtomail.ui.swing.util.toolbar; /* * #%L @@ -24,6 +24,7 @@ package com.franciaflex.faxtomail.ui.swing.util; * #L% */ +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ComponentMover; import jaxx.runtime.swing.ComponentResizer; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupUI.css similarity index 100% rename from faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css rename to faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupUI.css diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupUI.jaxx similarity index 100% rename from faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx rename to faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupUI.jaxx diff --git a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties index d5f3f40..f469c11 100644 --- a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties +++ b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties @@ -289,7 +289,6 @@ faxtomail.reply.action.close=Fermer faxtomail.reply.action.close.tip=Fermer faxtomail.reply.action.forward=Transférer faxtomail.reply.action.forward.tip=Retransférer la réponse vers une autre adresse email -faxtomail.reply.action.signing.configure.tip=Configurer les signatures faxtomail.reply.action.validate=Envoyer faxtomail.reply.action.validate.tip=Envoyer la réponse au mail faxtomail.reply.attachment.label=%1$s (%2$s ko) @@ -301,10 +300,9 @@ faxtomail.reply.label.cc=Copie \: faxtomail.reply.label.cci=Copie cachée \: faxtomail.reply.label.contact=Contact \: faxtomail.reply.label.from=De \: -faxtomail.reply.label.signing=Signature faxtomail.reply.label.subject=Objet \: faxtomail.reply.label.to=À \: -faxtomail.reply.message=\nLe %1$s, %2$s a écrit \:\n> %3$s +faxtomail.reply.message=<html><body><p></p>%s<p>Le %s, %s a écrit \:</p><p style\='border-left\: 2px solid blue;padding-left\: 5px;'>%s</p> faxtomail.reply.subject=Re \: %s faxtomail.reply.title=Réponse à \: %s faxtomail.search.action.error=Erreur lors de la recherche @@ -329,24 +327,6 @@ faxtomail.searchToGroup.action.cancel.tip=Fermer la fenêtre sans grouper l'él faxtomail.searchToGroup.action.group=Grouper faxtomail.searchToGroup.action.group.tip=Grouper avec l'élément courant faxtomail.searchToGroup.title=Recherche de l'élément avec lequel grouper l'élément %s -faxtomail.signings.settings.action.cancel=Fermer -faxtomail.signings.settings.action.cancel.tip=Fermer la configuration des signatures sans enregistrer -faxtomail.signings.settings.action.default=Par défault -faxtomail.signings.settings.action.default.tip=Signature par défault -faxtomail.signings.settings.action.delete=Supprimer -faxtomail.signings.settings.action.delete.confirm.message=Vous êtes sur le point de supprimer la signature %s. -faxtomail.signings.settings.action.delete.confirm.title=Suppression de signature -faxtomail.signings.settings.action.delete.tip=Supprimer la signature -faxtomail.signings.settings.action.newSigning.name=Nouvelle signature -faxtomail.signings.settings.action.newSigning.tip=Créer une nouvelle signature -faxtomail.signings.settings.action.save=Enregistrer -faxtomail.signings.settings.action.save.tip=Enregistrer les modifications faites à la signature -faxtomail.signings.settings.label=Signatures -faxtomail.signings.settings.name.label=Nom -faxtomail.signings.settings.noSelection.label=Sélectionnez une signature pour l'éditer -faxtomail.signings.settings.saveBeforeLeaving=Vous avez modifié la signature %s. Voulez-vous l'enregistrer avant d'éditer une autre signature ? -faxtomail.signings.settings.text.label=Texte -faxtomail.signings.settings.title=Configuration des signatures faxtomail.systemUser=Système faxtomail.validator.error.email.client.required=Client requis faxtomail.validator.error.email.comment.required=Message requis -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 f2d4db6df41fb33cf1dc348a6ca16d5f65ca54fe Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 14:51:24 2016 +0200 ajout de tests --- .../faxtomail/services/FaxToMailServiceUtils.java | 1 + .../services/FaxToMailServiceUtilsTest.java | 44 ++++++++++++++++++++++ .../services/service/EmailServiceTest.java | 14 ------- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java index 695d7ba..bee6aae 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java @@ -171,6 +171,7 @@ public class FaxToMailServiceUtils { } public static String getDomainForEmailAddress(String emailAddress) { + Preconditions.checkNotNull(emailAddress); return emailAddress.substring(emailAddress.lastIndexOf("@") + 1); } } diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtilsTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtilsTest.java new file mode 100644 index 0000000..3a3a556 --- /dev/null +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtilsTest.java @@ -0,0 +1,44 @@ +package com.franciaflex.faxtomail.services; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Kevin Morin (Code Lutin) + * @since 2.0.4 + */ +public class FaxToMailServiceUtilsTest { + + @Test + public void testGetDomainForEmailAddress() { + String email = "test@test.com"; + String domain = FaxToMailServiceUtils.getDomainForEmailAddress(email); + Assert.assertEquals("test.com", domain); + + email = "test.com"; + domain = FaxToMailServiceUtils.getDomainForEmailAddress(email); + Assert.assertEquals("test.com", domain); + + try { + FaxToMailServiceUtils.getDomainForEmailAddress(null); + Assert.fail("null email address should throw an excpetion"); + + } catch(NullPointerException e) { + // a NPE should be caught + } + } + + @Test + public void testDecodeSubject() { + try { + String subject = "=?iso-8859-1?Q?Un fax de 1 page(s) a =E9t=E9 re=E7u?="; + Assert.assertEquals("Un fax de 1 page(s) a été reçu", FaxToMailServiceUtils.getDecodedSubject(subject)); + + subject = "Un fax de 1 page(s) a été reçu"; + Assert.assertEquals("Un fax de 1 page(s) a été reçu", FaxToMailServiceUtils.getDecodedSubject(subject)); + + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + } +} \ No newline at end of file diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java index 987eec6..6ed7f72 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java @@ -379,20 +379,6 @@ public class EmailServiceTest extends AbstractFaxToMailServiceTest { } - @Test - public void testDecodeSubject() { - try { - String subject = "=?iso-8859-1?Q?Un fax de 1 page(s) a =E9t=E9 re=E7u?="; - Assert.assertEquals("Un fax de 1 page(s) a été reçu", FaxToMailServiceUtils.getDecodedSubject(subject)); - - subject = "Un fax de 1 page(s) a été reçu"; - Assert.assertEquals("Un fax de 1 page(s) a été reçu", FaxToMailServiceUtils.getDecodedSubject(subject)); - - } catch (Exception e) { - Assert.fail(e.getMessage()); - } - } - // @Test // public void testSendPdfBlanc() { // testSendEmail(""); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 b8a2fce542525fa94d54b07d7ea6e5028e319198 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 14:54:02 2016 +0200 add deprecated --- .../faxtomail/ui/swing/content/reply/ReplyFormUIModel.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java index de82dd7..d68cd0a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java @@ -338,7 +338,9 @@ public class ReplyFormUIModel extends AbstractSerializableBean { * * @param mail email to test * @return true/false + * @deprecated avant, l'utilisateur pouvait saisir n'importe quelle adresse expediteur, a condition qu'elle soit sur des domaines definis dans la conf */ + @Deprecated protected boolean isDomainAllowed(String mail) { Preconditions.checkNotNull(mail); List<String> senderAllowedDomains = getSenderAllowedDomains(); @@ -361,10 +363,18 @@ public class ReplyFormUIModel extends AbstractSerializableBean { return valid; } + /** + * @deprecated avant, l'utilisateur pouvait saisir n'importe quelle adresse expediteur, a condition qu'elle soit sur des domaines definis dans la conf + */ + @Deprecated public List<String> getSenderAllowedDomains() { return senderAllowedDomains; } + /** + * @deprecated avant, l'utilisateur pouvait saisir n'importe quelle adresse expediteur, a condition qu'elle soit sur des domaines definis dans la conf + */ + @Deprecated public void setSenderAllowedDomains(List<String> senderAllowedDomains) { Object oldValue = getSenderAllowedDomains(); this.senderAllowedDomains = senderAllowedDomains; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 f6f5d22dcb2b67cf77a7ac7dc2e5404da9e95c5a Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 14:54:06 2016 +0200 prise en compte des demandes creees manuellement (fixes #8258) --- .../demande/actions/SaveAndOpenReplyFormAction.java | 3 +-- .../ui/swing/content/reply/ReplyFormUIHandler.java | 20 ++++++++++++-------- .../i18n/faxtomail-ui-swing_fr_FR.properties | 1 + 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java index 2c94e47..13d52b4 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java @@ -65,7 +65,7 @@ public class SaveAndOpenReplyFormAction extends SaveAndOpenModalFrameAction<Repl DemandeUIModel currentDemand = getModel(); SigningForDomain signingForDomain = null; - if (!currentDemand.isFax()) { + if (!currentDemand.isFax() && currentDemand.getRecipient() != null) { signingForDomain = getContext().newServiceContext().getConfigurationService().getSigningForEmailAddress(currentDemand.getRecipient()).orNull(); } model.setSigning(signingForDomain); @@ -74,7 +74,6 @@ public class SaveAndOpenReplyFormAction extends SaveAndOpenModalFrameAction<Repl String sender = JAXXUtil.getStringValue(currentDemand.getSender()); if (currentDemand.isFax()) { -// MailFolder selectedFolder = getContext().getCurrentMailFolder(); sender = FaxToMailServiceUtils.addFaxDomainToFaxNumber(sender, currentDemand.getMailFolder()); } model.setTo(sender); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java index 192c948..cd29d89 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java @@ -87,12 +87,12 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo private static final String CONTENT_SEPARATOR = "<br/><br/>----------------<br/><br/>"; + // classe à mettre sur le div de la signature pour pouvoir la remplacer private String signingClass; protected AddAttachmentToReplyAction addAttachmentToReplyAction; protected SenderChangedAction senderChangedAction; - @Override public void beforeInit(ReplyFormUI ui) { super.beforeInit(ui); @@ -131,6 +131,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo List<DemandeUIModel> models = new ArrayList<>(); models.addAll(demand.getGroupedDemandes()); + // on crée les pj disponibles (versions éditées et non éditées) for (DemandeUIModel demandeUIModel : models) { // remove newline character (cf #6960) String prefix = StringUtils.remove(demandeUIModel.getTitle(), '\n'); @@ -165,14 +166,14 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo // sender combo MailFolder folder = demand.getMailFolder(); List<String> folderReplyAdresses = new ArrayList<>(); - List<String> folderReplyDomains = new ArrayList<>(); +// List<String> folderReplyDomains = new ArrayList<>(); while (folder != null) { folderReplyAdresses.addAll(folder.getReplyAddresses()); - folderReplyDomains.addAll(folder.getReplyDomains()); +// folderReplyDomains.addAll(folder.getReplyDomains()); folder = folder.getParent(); } - model.setSenderAllowedDomains(folderReplyDomains); - +// model.setSenderAllowedDomains(folderReplyDomains); + List<String> replyToAddresses = Lists.newArrayList(); String selectedItem = null; if (!demand.isFax() && recipient != null) { @@ -190,10 +191,11 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo model.setSenderAllowedAddresses(replyToAddresses); + // contacts initBeanFilterableComboBox(ui.getContactField(), getContext().getContactCache(), null); + // signatures signingClass = SIGNING_CLASS_PREFIX + new Date().getTime(); - signing = getSigningParagraph(createSigning(recipient)); } else { @@ -555,8 +557,10 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo protected String createSigning(String from) { FaxToMailUser currentUser = getContext().getCurrentUser(); - String signing = currentUser.getFirstName() + " " + currentUser.getLastName() - + "<br/>" + from + "<br/>"; + String signing = currentUser.getFirstName() + " " + currentUser.getLastName() + "<br/>"; + if (from != null) { + signing += from + "<br/>"; + } SigningForDomain signingForDomain = getModel().getSigning(); if (signingForDomain != null) { diff --git a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties index f469c11..24c8a37 100644 --- a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties +++ b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties @@ -28,6 +28,7 @@ faxtomail.action.reloadFaxToMail=Recharger FaxToMail faxtomail.action.reply.tip=Envoyer la réponse faxtomail.action.save.tip=Enregistrer faxtomail.action.search.tip=Rechercher +faxtomail.action.senderChanged.tip=Changement d'expéditeur faxtomail.action.transmit.tip=Déplacer l'élément faxtomail.alert.alreadyLockedBy.message=L'élément est déjà verrouillé par %s, vous ne pouvez pas l'ouvrir. faxtomail.alert.alreadyLockedBy.title=Document déjà verrouillé -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm