Faxtomail-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- 1934 discussions
r524 - in trunk/faxtomail-ui-swing/src/main: java/com/franciaflex/faxtomail/ui/swing/actions java/com/franciaflex/faxtomail/ui/swing/content/demande java/com/franciaflex/faxtomail/ui/swing/content/reply java/com/franciaflex/faxtomail/ui/swing/util resources/com/franciaflex/faxtomail/ui/swing/content/reply resources/i18n
by kmorin@users.forge.codelutin.com 12 Aug '14
by kmorin@users.forge.codelutin.com 12 Aug '14
12 Aug '14
Author: kmorin
Date: 2014-08-12 16:00:32 +0200 (Tue, 12 Aug 2014)
New Revision: 524
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/524
Log:
fixes #5534 lorsqu'on a modifi?\195?\169 un document attach?\195?\169, et qu'on quitte, on ne demande pas de confirmation alors qu'il y a eu des modifications
on ne prend pas quand on groupe
correction de la validation de l'adresse exp?\195?\169diteur de la r?\195?\169ponse
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel-error-validation.xml
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java 2014-08-12 09:25:55 UTC (rev 523)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java 2014-08-12 14:00:32 UTC (rev 524)
@@ -78,7 +78,6 @@
public void doAction() throws Exception {
FaxToMailServiceContext serviceContext = getContext().newServiceContext();
EmailService emailService = serviceContext.getEmailService();
- FaxToMailUser user = getContext().getCurrentUser();
FaxToMailUser currentUser = getContext().getCurrentUser();
Email email = emailService.groupEmails(currentEmail.getTopiaId(), selectedEmail.getTopiaId(), currentUser);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-08-12 09:25:55 UTC (rev 523)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-08-12 14:00:32 UTC (rev 524)
@@ -418,7 +418,7 @@
dialogContent,
t("faxtomail.searchToGroup.title", demandeUI.getModel().getTitle()),
getContext().getMainUI().getSize(),
- true);
+ false);
getContext().getActionFactory().createUIAction(null, action).actionPerformed(null);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java 2014-08-12 09:25:55 UTC (rev 523)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java 2014-08-12 14:00:32 UTC (rev 524)
@@ -30,6 +30,7 @@
import java.util.List;
import java.util.Set;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -270,10 +271,9 @@
public boolean isValid(String field) {
boolean result = true;
if (PROPERTY_FROM.equals(field)) {
- // si les deux listes liste getSenderAllowedAddresses et getSenderAllowedDomains sont
- // toutes les deux vides on ne valide pas
- // sinon un des deux autres test doit forcement etre vrai sinon de n'est pas valide
- result = getSenderAllowedAddresses().isEmpty() && getSenderAllowedDomains().isEmpty() || isEmailAllowed(getFrom()) || isDomainAllowed(getFrom());
+ // valid if the email address is in the list of the authorized addresses
+ // or if the domain is in the authorized domains, or if the domain list is empty
+ result = isEmailAllowed(getFrom()) || isDomainAllowed(getFrom());
}
return result;
}
@@ -286,9 +286,12 @@
*/
protected boolean isEmailAllowed(String mail) {
Preconditions.checkNotNull(mail);
- for (String address : getSenderAllowedAddresses()) {
- if (mail.equalsIgnoreCase(address)) {
- return true;
+ List<String> senderAllowedAddresses = getSenderAllowedAddresses();
+ if (senderAllowedAddresses != null) {
+ for (String address : senderAllowedAddresses) {
+ if (mail.equalsIgnoreCase(address)) {
+ return true;
+ }
}
}
return false;
@@ -302,7 +305,12 @@
*/
protected boolean isDomainAllowed(String mail) {
Preconditions.checkNotNull(mail);
- for (String domain : getSenderAllowedDomains()) {
+ List<String> senderAllowedDomains = getSenderAllowedDomains();
+
+ if (CollectionUtils.isEmpty(senderAllowedDomains)) {
+ return true;
+ }
+ for (String domain : senderAllowedDomains) {
if (mail.endsWith(domain)) {
return true;
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-08-12 09:25:55 UTC (rev 523)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-08-12 14:00:32 UTC (rev 524)
@@ -265,10 +265,10 @@
SwingUtil.center(getContext().getMainUI(), result);
result.setVisible(true);
}
-
+
/**
* Surchargée pour temporairement ajouter un appel à ApplicationUI#onCloseUI on windowClosing.
- *
+ *
* @deprecated overriden during waiting response for issue : http://nuiton.org/issues/3415
*/
@Deprecated
@@ -285,7 +285,7 @@
result.add((Component) dialogContent);
result.setResizable(true);
-
+
result.setSize(dim);
final AbstractApplicationUIHandler handler = dialogContent.getHandler();
@@ -308,16 +308,11 @@
});
}
+ result.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
result.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
- boolean canClose = true;
- if (handler instanceof CloseableUI) {
- canClose = ((CloseableUI)handler).quitUI();
- }
- if (canClose) {
- result.setVisible(false);
- }
+ closeDialog();
}
@Override
@@ -335,6 +330,18 @@
result.setVisible(true);
}
+ @Override
+ public void closeDialog() {
+ JDialog dialog = getParentContainer(JDialog.class);
+ boolean canClose = true;
+ if (this instanceof CloseableUI) {
+ canClose = ((CloseableUI)this).quitUI();
+ }
+ if (canClose) {
+ dialog.setVisible(false);
+ }
+ }
+
/**
* Gros copier/coller de quitScreen() pour appeler runActionAndWait au lieu de saveAction.actionPerformed(null); par defaut
* pour tenter de corriger un problème de concurrence entre l'action de sauvegarde de l'email
@@ -389,7 +396,7 @@
}
public void closeFrame() {
- getParentContainer(JFrame.class).setVisible(false);
+ getParentContainer(JFrame.class).dispose();
}
protected <HL extends HasLabel> void initCheckBoxComboBox(final JComboBox<HL> comboBox,
Modified: trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel-error-validation.xml
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel-error-validation.xml 2014-08-12 09:25:55 UTC (rev 523)
+++ trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel-error-validation.xml 2014-08-12 14:00:32 UTC (rev 524)
@@ -51,12 +51,18 @@
</field>
<field name="from">
+ <field-validator type="requiredstring" short-circuit="true">
+ <message>faxtomail.validator.error.reply.from.required</message>
+ </field-validator>
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
<![CDATA[ isValid("from") ]]>
</param>
<message>faxtomail.validator.error.reply.from.invalidDomain</message>
</field-validator>
+ <field-validator type="email" short-circuit="true">
+ <message>faxtomail.validator.error.reply.from.email</message>
+ </field-validator>
</field>
<field name="subject">
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-12 09:25:55 UTC (rev 523)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-12 14:00:32 UTC (rev 524)
@@ -291,6 +291,7 @@
faxtomail.validator.error.email.rangeRow.required=Tableau des gammes requis
faxtomail.validator.error.reply.cc.email=Le champ 'Copie\:' doit être une adresse email valide \!
faxtomail.validator.error.reply.cci.email=Le champ 'opie cachée\:' doit être une adresse email valide \!
+faxtomail.validator.error.reply.from.email=
faxtomail.validator.error.reply.from.invalidDomain=
faxtomail.validator.error.reply.from.required=
faxtomail.validator.error.reply.subject.required=
1
0
r523 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions
by kmorin@users.forge.codelutin.com 12 Aug '14
by kmorin@users.forge.codelutin.com 12 Aug '14
12 Aug '14
Author: kmorin
Date: 2014-08-12 11:25:55 +0200 (Tue, 12 Aug 2014)
New Revision: 523
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/523
Log:
check null
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-12 09:24:40 UTC (rev 522)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-12 09:25:55 UTC (rev 523)
@@ -152,7 +152,7 @@
MailFolder currentFolder = currentEmail.getMailFolder();
MailFolder actualFolder = email.getMailFolder();
- if (!currentFolder.equals(actualFolder)) {
+ if (currentFolder != null && !currentFolder.equals(actualFolder)) {
displayWarningMessage(t("faxtomail.alert.emailMoved.title"),
t("faxtomail.alert.emailMoved.message",
currentFolder.getName(),
1
0
12 Aug '14
Author: kmorin
Date: 2014-08-12 11:24:40 +0200 (Tue, 12 Aug 2014)
New Revision: 522
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/522
Log:
fixes #5554 ?\195?\137diteur de pi?\195?\168ces jointes : Ajout des ?\195?\169l?\195?\169ments ?\195?\160 l?\226?\128?\153endroit o?\195?\185 on clique
fixes #5555 ?\195?\137diteur de pi?\195?\168ces jointes : lignes verticales
v?\195?\169rification qu'un ?\195?\169l?\195?\169ment est toujous lisible et n'a pas chang?\195?\169 de dossier quand on l'ouvre
am?\195?\169lioration du code d'ouverture de demandes group?\195?\169es
Added:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/exceptions/FolderNotReadableException.java
trunk/faxtomail-ui-swing/src/main/resources/icons/action-hline.png
trunk/faxtomail-ui-swing/src/main/resources/icons/action-vline.png
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorNoteUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -34,6 +34,7 @@
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
+import org.apache.commons.lang3.tuple.Pair;
import org.nuiton.util.pagination.PaginationParameter;
import org.nuiton.util.pagination.PaginationResult;
@@ -404,4 +405,19 @@
return result;
}
+
+// public Map<String, FaxToMailUser> getLastForEmails(List<String> emailIds) {
+//// récupérer l'utilisateur de l'historique max date pour type = ouverture pj
+// String query = "SELECT topiaId, " +
+// "FROM " + Email.class.getName() + " AS email " +
+// "INNER JOIN email." + Email.PROPERTY_HISTORY + " AS history " +
+// "INNER JOIN rangeRow." + RangeRow.PROPERTY_RANGE + " AS range " +
+// "WHERE email." + Email.PROPERTY_TOPIA_ID + " IN :emailIds " +
+// "AND history"
+// "GROUP BY topiaId";
+//
+// Map<String, Object> params = new HashMap<>();
+// params.put("emailIds", emailIds);
+// List<Pair<String, FaxToMailUser>> result = findAll(query, params);
+// }
}
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -36,6 +36,7 @@
import com.franciaflex.faxtomail.persistence.entities.Range;
import com.franciaflex.faxtomail.services.FaxToMailService;
import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException;
+import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException;
import com.franciaflex.faxtomail.services.service.exceptions.InvalidClientException;
import org.apache.commons.mail.EmailException;
@@ -58,15 +59,17 @@
public interface EmailService extends FaxToMailService {
Email getEmailById(String id);
- Email getEmailById(String id, FaxToMailUser user);
+ Email getFullEmailById(String id);
+ Email getFullEmailById(String id, FaxToMailUser user);
+
Email saveEmail(Email email, FaxToMailUser user, String... modifiedFields) throws InvalidClientException;
Email saveEmail(Email email, Collection<Attachment> attachments, String clientCode, FaxToMailUser user, String... modifiedFields) throws InvalidClientException;
void transmitPendingDemandsToEdi();
- PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, List<MailField> fields, PaginationParameter page);
+ PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, PaginationParameter page);
List<MailFolder> getChildrenRecursively(MailFolder folder);
@@ -74,15 +77,17 @@
Email addToHistory(String emailId, HistoryType type, FaxToMailUser user, Date date, String... fields);
+ Email openEmail(String emailId, FaxToMailUser user, boolean takeEmail) throws FolderNotReadableException;
+
Email takeEmail(String emailId, FaxToMailUser user);
- Email lockEmail(String emailId, FaxToMailUser currentUser) throws AlreadyLockedMailException;
+ Email lockEmail(String emailId, FaxToMailUser currentUser) throws AlreadyLockedMailException, FolderNotReadableException;
void unlockEmail(String emailId);
PaginationResult<Email> search(EmailFilter emailFilter, FaxToMailUser user, PaginationParameter pagination);
- Email groupEmails(Email email1, Email email2, FaxToMailUser user);
+ Email groupEmails(String email1Id, String email2Id, FaxToMailUser user);
Email reply(String from, String to, String cc, String bcc, String subject,
String content, Collection<AttachmentFile> attachments,
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -51,6 +51,8 @@
import javax.activation.FileDataSource;
import javax.mail.MessagingException;
+import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException;
+import com.google.common.collect.Collections2;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.io.FileUtils;
@@ -107,6 +109,12 @@
@Override
public Email getEmailById(String id) {
+ Email email = getPersistenceContext().getEmailDao().forTopiaIdEquals(id).findUnique();
+ return email;
+ }
+
+ @Override
+ public Email getFullEmailById(String id) {
Email email = getPersistenceContext().getEmailDao()
.forTopiaIdEquals(id)
.addAllFetches(Email.PROPERTY_DEMAND_TYPE,
@@ -131,8 +139,8 @@
}
@Override
- public Email getEmailById(String id, FaxToMailUser user) {
- Email email = getEmailById(id);
+ public Email getFullEmailById(String id, FaxToMailUser user) {
+ Email email = getFullEmailById(id);
MailFolderService mailFolderService = serviceContext.getMailFolderService();
MailFolder folder = email.getMailFolder();
@@ -546,65 +554,27 @@
@Override
public PaginationResult<Email> getEmailForFolder(MailFolder folder,
FaxToMailUser currentUser,
- List<MailField> fields,
PaginationParameter page) {
// perform request or not depending on rigths
PaginationResult<Email> result;
if (folder.isFolderReadable()) {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
- TopiaQueryBuilderAddCriteriaOrRunQueryStep queryStep =
- dao.forMailFolderEquals(folder)
+ result = dao.forMailFolderEquals(folder)
.addNull(Email.PROPERTY_ARCHIVE_DATE)
- .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED);
+ .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED)
+ .addAllFetches(Email.PROPERTY_PRIORITY,
+ Email.PROPERTY_DEMAND_TYPE,
+ Email.PROPERTY_CLIENT,
+ Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
+ Email.PROPERTY_ETAT_ATTENTE,
+ Email.PROPERTY_TAKEN_BY,
+ Email.PROPERTY_REPLIES,
+ Email.PROPERTY_ATTACHMENT,
+ Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
+ Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS)
+ .findPage(page);
- boolean noFields = CollectionUtils.isEmpty(fields);
- if (noFields || fields.contains(MailField.PRIORITY)) {
- queryStep.addFetch(Email.PROPERTY_PRIORITY);
- }
- if (noFields || fields.contains(MailField.DEMAND_TYPE)) {
- queryStep.addFetch(Email.PROPERTY_DEMAND_TYPE);
- }
- if (noFields || CollectionUtils.containsAny(fields,
- Lists.newArrayList(MailField.CLIENT_BRAND,
- MailField.CLIENT_CODE))) {
- queryStep.addFetch(Email.PROPERTY_CLIENT);
- }
- if (noFields || CollectionUtils.containsAny(fields,
- Lists.newArrayList(MailField.REFERENCE,
- MailField.QUOTATION_NB,
- MailField.PF_NB,
- MailField.SAV_NB))) {
- queryStep.addFetch(Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE);
- }
- if (noFields || fields.contains(MailField.ETAT_ATTENTE)) {
- queryStep.addFetch(Email.PROPERTY_ETAT_ATTENTE);
- }
- if (noFields || fields.contains(MailField.TAKEN_BY)) {
- queryStep.addFetch(Email.PROPERTY_TAKEN_BY);
- }
- if (noFields || fields.contains(MailField.REPLIES)) {
- queryStep.addFetch(Email.PROPERTY_REPLIES);
- }
- if (noFields || fields.contains(MailField.ATTACHMENT)) {
- queryStep.addFetch(Email.PROPERTY_ATTACHMENT);
- }
- //TODO 20140808 kmorin remove when hql query coded
- if (noFields || fields.contains(MailField.LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER)) {
- queryStep.addAllFetches(Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
- Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS);
- }
-
- result = queryStep.findPage(page);
-
- if (noFields || fields.contains(MailField.LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER)) {
- Collection<String> topiaIds = Collections2.transform(result.getElements(), TopiaEntities.getTopiaIdFunction());
- //TODO 20140808 kmorin hql pour récupérer l'utilisateur de l'historique max date pour type = ouverture pj
-// Email.PROPERTY_HISTORY,
-// Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
-// Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS,
- }
-
} else {
List<Email> elements = Collections.emptyList();
result = PaginationResult.of(elements, 0, page);
@@ -633,7 +603,7 @@
@Override
public Email addToHistory(String emailId, HistoryType type, FaxToMailUser user, Date date, String... fields) {
EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
- Email email = getEmailById(emailId, user);
+ Email email = getEmailById(emailId);
HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
History history = historyDao.create(History.PROPERTY_TYPE, type,
@@ -649,6 +619,38 @@
return email;
}
+ @Override
+ public Email openEmail(String emailId, FaxToMailUser user, boolean takeEmail) throws FolderNotReadableException {
+ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
+ Email email = getFullEmailById(emailId, user);
+
+ MailFolder mailFolder = email.getMailFolder();
+ if (!mailFolder.isFolderReadable()) {
+ throw new FolderNotReadableException(String.format("Mail folder %s not readable by %s",
+ mailFolder.getName(),
+ user.getLogin()),
+ mailFolder);
+ }
+
+ HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
+ History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.OPENING,
+ History.PROPERTY_FAX_TO_MAIL_USER, user,
+ History.PROPERTY_MODIFICATION_DATE, new Date());
+ email.addHistory(history);
+ if (takeEmail) {
+ history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
+ History.PROPERTY_FAX_TO_MAIL_USER, user,
+ History.PROPERTY_FIELDS, Sets.newHashSet(Email.PROPERTY_TAKEN_BY),
+ History.PROPERTY_MODIFICATION_DATE, new Date());
+ email.addHistory(history);
+ email.setTakenBy(user);
+ }
+
+ email = emailDao.update(email);
+ getPersistenceContext().commit();
+ return email;
+ }
+
/**
* Take email (takenBy).
*
@@ -683,12 +685,27 @@
* @throws AlreadyLockedMailException if email is already locked by another user
*/
@Override
- public Email lockEmail(String emailId, FaxToMailUser currentUser) throws AlreadyLockedMailException {
+ public Email lockEmail(String emailId, FaxToMailUser currentUser) throws AlreadyLockedMailException,
+ FolderNotReadableException {
// get current lock on mail if any
EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
MailLockTopiaDao mailLockDao = getPersistenceContext().getMailLockDao();
Email email = emailDao.forTopiaIdEquals(emailId).findUnique();
+
+ MailFolderService mailFolderService = serviceContext.getMailFolderService();
+ MailFolder folder = email.getMailFolder();
+ browseFolderParent(folder, currentUser, mailFolderService);
+
+ if (!folder.isFolderReadable()) {
+ throw new FolderNotReadableException(String.format("Mail folder %s not readable by %s",
+ folder.getName(),
+ currentUser.getLogin()),
+ folder);
+ }
+
+ Hibernate.initialize(email.getTakenBy());
+
MailLock mailLock = mailLockDao.forLockOnEquals(email).findUniqueOrNull();
// if no lock found, create new one
@@ -714,6 +731,7 @@
mailLockDao.deleteAll(mailLocksToRemove);
getPersistenceContext().commit();
+
} else if (!mailLock.getLockBy().equals(currentUser)) {
// throw exception if already locked by another user
throw new AlreadyLockedMailException(String.format("Mail %s already locked by %s", emailId, mailLock.getLockBy().getTopiaId()), mailLock.getLockBy());
@@ -787,9 +805,12 @@
}
@Override
- public Email groupEmails(Email email1, Email email2, FaxToMailUser user) {
+ public Email groupEmails(String email1Id, String email2Id, FaxToMailUser user) {
EmailGroupTopiaDao groupDao = getPersistenceContext().getEmailGroupDao();
+ Email email1 = getFullEmailById(email1Id, user);
+ Email email2 = getEmailById(email2Id);
+
EmailGroup group1 = email1.getEmailGroup();
EmailGroup group2 = email2.getEmailGroup();
Added: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/exceptions/FolderNotReadableException.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/exceptions/FolderNotReadableException.java (rev 0)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/exceptions/FolderNotReadableException.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -0,0 +1,20 @@
+package com.franciaflex.faxtomail.services.service.exceptions;
+
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ */
+public class FolderNotReadableException extends Exception {
+
+ protected MailFolder forbiddenFolder;
+
+ public FolderNotReadableException(String message, MailFolder forbiddenFolder) {
+ super(message);
+ this.forbiddenFolder = forbiddenFolder;
+ }
+
+ public MailFolder getForbiddenFolder() {
+ return forbiddenFolder;
+ }
+}
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -144,11 +144,11 @@
MailFolderTopiaDao mailFolderDao = getServiceContext().getPersistenceContext().getMailFolderDao();
MailFolder cyril = mailFolderDao.forNameEquals("Cyril").findUnique();
- PaginationResult<Email> page1 = service.getEmailForFolder(cyril, getCurrentUser(), null, page);
+ PaginationResult<Email> page1 = service.getEmailForFolder(cyril, getCurrentUser(), page);
Assert.assertEquals(10, page1.getCount());
Assert.assertEquals(7, page1.getElements().size());
- PaginationResult<Email> page2 = service.getEmailForFolder(cyril, getCurrentUser(), null, page1.getNextPage());
+ PaginationResult<Email> page2 = service.getEmailForFolder(cyril, getCurrentUser(), page1.getNextPage());
Assert.assertEquals(10, page2.getCount());
Assert.assertEquals(3, page2.getElements().size());
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -103,16 +103,11 @@
}
@Override
- public void postFailedAction(Throwable error) {
+ public void releaseAction() {
+ super.releaseAction();
setTopBarButtonEnabled(true);
}
- @Override
- public void postSuccessAction() {
- super.postSuccessAction();
- setTopBarButtonEnabled(true);
- }
-
protected void setTopBarButtonEnabled(boolean enabled) {
MainUI ui = getUI();
ui.getSearchButton().setEnabled(enabled);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -61,10 +61,6 @@
return (ProgressionModel) getContext().getActionUI().getModel().getProgressionModel();
}
-// public FaxToMailDataContext getDataContext() {
-// return getContext().getDataContext();
-// }
-
@Override
protected FaxToMailConfiguration getConfig() {
return getContext().getConfig();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -65,7 +65,7 @@
int i = JOptionPane.showConfirmDialog(
null,
- t("faxtomail.alert.groupConfirmation.message", currentEmail.getObject(), selectedEmail.getObject()),
+ t("faxtomail.alert.groupConfirmation.message", currentEmail.getTitle(), selectedEmail.getTitle()),
t("faxtomail.alert.groupConfirmation.title"),
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
@@ -78,16 +78,14 @@
public void doAction() throws Exception {
FaxToMailServiceContext serviceContext = getContext().newServiceContext();
EmailService emailService = serviceContext.getEmailService();
+ FaxToMailUser user = getContext().getCurrentUser();
- Email email2 = emailService.getEmailById(selectedEmail.getTopiaId());
- Email email1 = emailService.getEmailById(currentEmail.getTopiaId());
-
FaxToMailUser currentUser = getContext().getCurrentUser();
- email1 = emailService.groupEmails(email1, email2, currentUser);
- currentEmail.fromEntity(email1);
- currentEmail.setGroupedDemandes(email1.getEmailGroup());
+ Email email = emailService.groupEmails(currentEmail.getTopiaId(), selectedEmail.getTopiaId(), currentUser);
+ currentEmail.fromEntity(email);
+ currentEmail.setGroupedDemandes(email.getEmailGroup());
- handler.showInformationMessage(t("faxtomail.demande.group.successful", email2.getObject()));
+ handler.showInformationMessage(t("faxtomail.demande.group.successful"));
handler.closeFrame();
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -28,10 +28,15 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport;
import com.franciaflex.faxtomail.persistence.entities.MailField;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
@@ -91,10 +96,15 @@
FaxToMailUser currentUser = getContext().getCurrentUser();
List<MailField> columns = handler.getColumns();
+ Collection<MailField> fields = new HashSet<MailField>();
+ if (columns != null) {
+ fields.addAll(columns);
+ }
+ fields.add(MailField.TAKEN_BY);
+
PaginationResult<Email> paginationResult = getContext().newServiceContext().getEmailService()
.getEmailForFolder(folder,
currentUser,
- columns,
model.getPaginationParameter());
List<Email> emails = paginationResult.getElements();
if (log.isDebugEnabled()) {
@@ -104,7 +114,7 @@
List<DemandeUIModel> demands = new ArrayList<DemandeUIModel>();
for (Email email : emails) {
DemandeUIModel demand = new DemandeUIModel();
- demand.fromEntity(email, columns);
+ demand.fromEntityExcluding(email, Sets.newHashSet(Email.PROPERTY_MAIL_FOLDER, Email.PROPERTY_EMAIL_GROUP));
// on ajoute toutes les lignes de rangeRow,
// qui sont toutes valides puisqu'on les récupère de la base et qu'on ne sauvegarde que les lignes valides
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -2,8 +2,12 @@
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
+import com.franciaflex.faxtomail.services.service.EmailService;
import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException;
+import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException;
+import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
@@ -23,6 +27,7 @@
public class OpenGroupedDemandAction extends AbstractFaxToMailAction<DemandeUIModel, DemandGroupUI, DemandGroupUIHandler> {
protected DemandeUIModel demandToOpen;
+ protected boolean takeEmail;
public OpenGroupedDemandAction(DemandGroupUIHandler handler, DemandeUIModel demandToOpen) {
super(handler, false);
@@ -34,76 +39,112 @@
public boolean prepareAction() throws Exception {
boolean result = super.prepareAction();
- // tentative de verrouillages des email existants
- if (StringUtils.isNotBlank(demandToOpen.getTopiaId())) {
- FaxToMailUser currentUser = getContext().getCurrentUser();
+ MainUIHandler mainUIHandler = getContext().getMainUI().getHandler();
+ DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody();
+ if (parentContainer.getModel().containsDemand(demandToOpen)) {
+ openDemandScreen();
+ result = false;
- try {
- FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- serviceContext.getEmailService().lockEmail(demandToOpen.getTopiaId(), currentUser);
+ } else {
+ String topiaId = demandToOpen.getTopiaId();
+ if (StringUtils.isNotBlank(topiaId)) {
+ FaxToMailUser currentUser = getContext().getCurrentUser();
+ int answer = -1;
- } catch (AlreadyLockedMailException ex) {
- result = false;
+ try {
+ FaxToMailServiceContext serviceContext = getContext().newServiceContext();
+ EmailService emailService = serviceContext.getEmailService();
- String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(ex.getLockedBy()));
- JOptionPane.showMessageDialog(getHandler().getTopestUI(),
- htmlMessage,
- t("faxtomail.alert.alreadyLockedBy.title"),
- JOptionPane.ERROR_MESSAGE);
+ // tentative de verrouillages des email existants
+ Email email = emailService.lockEmail(topiaId, currentUser);
+
+ FaxToMailUser takenBy = email.getTakenBy();
+
+ // si le mail est pris par quelqu'un d'autre, le prend-on ou pas ?
+ if (takenBy != null && !currentUser.equals(takenBy)) {
+ String htmlMessage = String.format(
+ AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
+ t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
+ t("faxtomail.alert.alreadyTakenBy.help"));
+
+ answer = JOptionPane.showConfirmDialog(getHandler().getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.alreadyTakenBy.title"),
+ JOptionPane.YES_NO_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+ }
+
+ // si on annule, on délock
+ if (answer == JOptionPane.CANCEL_OPTION) {
+ result = false;
+ emailService.unlockEmail(topiaId);
+
+ } else {
+ // sinon on ouvre
+
+ // si on ne prend pas, le mail est en readonly
+ if (answer == JOptionPane.NO_OPTION) {
+ demandToOpen.setEditable(false);
+ takeEmail = false;
+ }
+ // si on prend, on prend et on rend editable
+ else if (answer == JOptionPane.YES_OPTION) {
+ takeEmail = true;
+ demandToOpen.setEditable(true);
+ }
+ }
+ }
+ // le mail est locké, on ne fait rien
+ catch (AlreadyLockedMailException ex) {
+ result = false;
+
+ String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(ex.getLockedBy()));
+ JOptionPane.showMessageDialog(getHandler().getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.alreadyLockedBy.title"),
+ JOptionPane.ERROR_MESSAGE);
+ }
+ // l'utilisateur n'a pas les droits de lecture sur le dossier
+ catch (FolderNotReadableException e) {
+ result = false;
+
+ String htmlMessage = t("faxtomail.alert.userNotAuthorizedToReadEmail.message", e.getForbiddenFolder().getName());
+ JOptionPane.showMessageDialog(getHandler().getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.userNotAuthorizedToReadEmail.title"),
+ JOptionPane.ERROR_MESSAGE);
+ }
}
}
-
return result;
}
@Override
public void doAction() throws Exception {
- FaxToMailUIContext context = getContext();
- Email email = context.newServiceContext().getEmailService().getEmailById(demandToOpen.getTopiaId(),
- context.getCurrentUser());
- demandToOpen.fromEntity(email);
- demandToOpen.setMailFolder(email.getMailFolder());
- demandToOpen.setCloseable(true);
+ if (StringUtils.isNotBlank(demandToOpen.getTopiaId())) {
+ FaxToMailServiceContext serviceContext = getContext().newServiceContext();
+
+ Email email = serviceContext.getEmailService().openEmail(demandToOpen.getTopiaId(),
+ getContext().getCurrentUser(),
+ takeEmail);
+
+ demandToOpen.fromEntity(email);
+ MailFolder folder = demandToOpen.getMailFolder();
+ if (demandToOpen.getArchiveDate() != null || !folder.isFolderWritable()) {
+ demandToOpen.setEditable(false);
+ }
+ demandToOpen.setCloseable(true);
+ }
}
@Override
public void postSuccessAction() {
super.postSuccessAction();
- FaxToMailUser takenBy = demandToOpen.getTakenBy();
- FaxToMailUser currentUser = getContext().getCurrentUser();
+ openDemandScreen();
+ }
- if (demandToOpen.getArchiveDate() != null) {
- demandToOpen.setEditable(false);
-
- } else if (takenBy != null && !currentUser.equals(takenBy)) {
- String htmlMessage = String.format(
- AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
- t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
- t("faxtomail.alert.alreadyTakenBy.help"));
-
- int result = JOptionPane.showConfirmDialog(getHandler().getTopestUI(),
- htmlMessage,
- t("faxtomail.alert.alreadyTakenBy.title"),
- JOptionPane.YES_NO_CANCEL_OPTION,
- JOptionPane.QUESTION_MESSAGE);
-
- switch (result) {
- case JOptionPane.CANCEL_OPTION:
- return;
-
- case JOptionPane.NO_OPTION:
- demandToOpen.setEditable(false);
- break;
-
- case JOptionPane.YES_OPTION:
- Email email = getContext().newServiceContext().getEmailService().takeEmail(demandToOpen.getTopiaId(), currentUser);
- demandToOpen.fromEntity(email);
- demandToOpen.setEditable(true);
- break;
- }
- }
-
+ protected void openDemandScreen() {
MainUIHandler mainUIHandler = getContext().getMainUI().getHandler();
DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody();
parentContainer.getModel().addDemand(demandToOpen);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -35,6 +35,7 @@
import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
+import com.google.common.collect.Sets;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -81,7 +82,7 @@
originalDemand.getTopiaId(),
getContext().getCurrentUser());
- originalDemand.fromEntity(email);
+ originalDemand.fromEntityIncluding(email, Sets.newHashSet(Email.PROPERTY_REPLIES, Email.PROPERTY_HISTORY));
}
@Override
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -68,7 +68,7 @@
String topiaId = model.getTopiaId();
FaxToMailServiceContext serviceContext = context.newServiceContext();
if (!StringUtils.isBlank(topiaId)) {
- persistedEmail = serviceContext.getEmailService().getEmailById(topiaId);
+ persistedEmail = serviceContext.getEmailService().getFullEmailById(topiaId);
} else {
persistedEmail = new EmailImpl();
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -27,7 +27,9 @@
import com.franciaflex.faxtomail.persistence.entities.HistoryType;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
+import com.franciaflex.faxtomail.services.service.EmailService;
import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException;
+import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException;
import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen;
import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
@@ -44,11 +46,16 @@
/**
* To show demande screen.
+ * TODO kmorin 20140811 gérer le cas où la demande a changé de dossier entre le moment où on a affiché la liste
+ * et le moment où on l'ouvre
*
* @author kmorin - morin(a)codelutin.com
*/
public class ShowDemandeAction extends AbstractChangeScreenAction {
+ // if true, take the email when opening
+ protected boolean takeEmail;
+
public ShowDemandeAction(MainUIHandler handler) {
super(handler, true, FaxToMailScreen.DEMANDE);
setActionDescription(t("faxtomail.action.goto.demand.tip"));
@@ -60,49 +67,53 @@
DemandeUIModel currentEmail = getContext().getCurrentEmail();
- FaxToMailUser takenBy = currentEmail.getTakenBy();
- FaxToMailUser currentUser = getContext().getCurrentUser();
- int answer = -1;
+ String topiaId = currentEmail.getTopiaId();
+ if (StringUtils.isNotBlank(topiaId)) {
+ FaxToMailUser currentUser = getContext().getCurrentUser();
+ int answer = -1;
- // si le mail est pris par quelqu'un d'autre, le prend-on ou pas ?
- if (takenBy != null && !currentUser.equals(takenBy)) {
- String htmlMessage = String.format(
- AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
- t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
- t("faxtomail.alert.alreadyTakenBy.help"));
+ try {
+ FaxToMailServiceContext serviceContext = getContext().newServiceContext();
+ EmailService emailService = serviceContext.getEmailService();
- answer = JOptionPane.showConfirmDialog(getHandler().getTopestUI(),
- htmlMessage,
- t("faxtomail.alert.alreadyTakenBy.title"),
- JOptionPane.YES_NO_CANCEL_OPTION,
- JOptionPane.QUESTION_MESSAGE);
- }
+ // tentative de verrouillages des email existants
+ Email email = emailService.lockEmail(topiaId, currentUser);
- // si on annule, on n'ouvre pas
- if (answer == JOptionPane.CANCEL_OPTION) {
- result = false;
+ FaxToMailUser takenBy = email.getTakenBy();
- } else {
- // sinon on ouvre
- try {
- // tentative de verrouillages des email existants
- if (StringUtils.isNotBlank(currentEmail.getTopiaId())) {
- FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- serviceContext.getEmailService().lockEmail(currentEmail.getTopiaId(), currentUser);
+ // si le mail est pris par quelqu'un d'autre, le prend-on ou pas ?
+ if (takenBy != null && !currentUser.equals(takenBy)) {
+ String htmlMessage = String.format(
+ AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
+ t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
+ t("faxtomail.alert.alreadyTakenBy.help"));
+
+ answer = JOptionPane.showConfirmDialog(getHandler().getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.alreadyTakenBy.title"),
+ JOptionPane.YES_NO_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
}
- // si on ne prend pas, le mail est en readonly
- if (answer == JOptionPane.NO_OPTION) {
- currentEmail.setEditable(false);
+ // si on annule, on délock
+ if (answer == JOptionPane.CANCEL_OPTION) {
+ result = false;
+ emailService.unlockEmail(topiaId);
+
+ } else {
+ // sinon on ouvre
+
+ // si on ne prend pas, le mail est en readonly
+ if (answer == JOptionPane.NO_OPTION) {
+ currentEmail.setEditable(false);
+ takeEmail = false;
+ }
+ // si on prend, on prend et on rend editable
+ else if (answer == JOptionPane.YES_OPTION) {
+ takeEmail = true;
+ currentEmail.setEditable(true);
+ }
}
- // si on prend, on prend et on rend editable
- else if (answer == JOptionPane.YES_OPTION) {
- FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- serviceContext.getEmailService().takeEmail(currentEmail.getTopiaId(), currentUser);
- currentEmail.setTakenBy(currentUser);
- currentEmail.setEditable(true);
- }
-
}
// le mail est locké, on ne fait rien
catch (AlreadyLockedMailException ex) {
@@ -113,9 +124,19 @@
htmlMessage,
t("faxtomail.alert.alreadyLockedBy.title"),
JOptionPane.ERROR_MESSAGE);
+
}
+ // l'utilisateur n'a pas les droits de lecture sur le dossier
+ catch (FolderNotReadableException e) {
+ result = false;
+
+ String htmlMessage = t("faxtomail.alert.userNotAuthorizedToReadEmail.message", e.getForbiddenFolder().getName());
+ JOptionPane.showMessageDialog(getHandler().getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.userNotAuthorizedToReadEmail.title"),
+ JOptionPane.ERROR_MESSAGE);
+ }
}
-
return result;
}
@@ -125,29 +146,29 @@
if (StringUtils.isNotBlank(currentEmail.getTopiaId())) {
FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- Email email = serviceContext.getEmailService().addToHistory(currentEmail.getTopiaId(),
- HistoryType.OPENING,
- getContext().getCurrentUser(),
- new Date());
+ Email email = serviceContext.getEmailService().openEmail(currentEmail.getTopiaId(),
+ getContext().getCurrentUser(),
+ takeEmail);
- currentEmail.setHistory(email.getHistory());
- currentEmail.setEtatAttente(email.getEtatAttente());
- currentEmail.setDemandType(email.getDemandType());
- currentEmail.setGroupedDemandes(email.getEmailGroup());
- currentEmail.setMailFolder(email.getMailFolder());
+ MailFolder currentFolder = currentEmail.getMailFolder();
+ MailFolder actualFolder = email.getMailFolder();
+ if (!currentFolder.equals(actualFolder)) {
+ displayWarningMessage(t("faxtomail.alert.emailMoved.title"),
+ t("faxtomail.alert.emailMoved.message",
+ currentFolder.getName(),
+ actualFolder.getName(),
+ currentEmail.getTitle()));
+ }
+
+ currentEmail.fromEntity(email);
+
+ MailFolder folder = currentEmail.getMailFolder();
+ if (currentEmail.getArchiveDate() != null || !folder.isFolderWritable()) {
+ currentEmail.setEditable(false);
+ }
}
+
super.doAction();
}
- @Override
- public void postSuccessAction() {
- super.postSuccessAction();
-
- DemandeUIModel currentEmail = getContext().getCurrentEmail();
- MailFolder folder = currentEmail.getMailFolder();
-
- if (currentEmail.getArchiveDate() != null || !folder.isFolderWritable()) {
- currentEmail.setEditable(false);
- }
- }
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -25,6 +25,8 @@
*/
import static org.nuiton.i18n.I18n.t;
+
+import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI;
import jaxx.runtime.JAXXContext;
import jaxx.runtime.JAXXUtil;
@@ -60,27 +62,28 @@
// suivant la condition on est soit dans le cas d'une edition de demande
// soit dans le cas d'une action contextuel depuis la liste des demandes
- DemandeListUI parentDemandeListUI = (DemandeListUI)getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT);
+ FaxToMailUI parentDemandeListUI = (FaxToMailUI) getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT);
if (parentDemandeListUI != null) {
+ if (DemandeListUI.class.isAssignableFrom(parentDemandeListUI.getClass())) {
+ // appel du service pour sauver les mails
+ // mais il faudrai sauver tous les mails d'un seul coup
+ for (DemandeUIModel demande : model.getDemandeUIModels()) {
+ String topiaId = demande.getTopiaId();
+ Email email = getContext().newServiceContext().getEmailService().getEmailById(topiaId);
+ email = demande.toEntity(email);
+ getContext().newServiceContext().getEmailService().saveEmail(email, null, Email.PROPERTY_MAIL_FOLDER);
+ }
- // appel du service pour sauver les mails
- // mais il faudrai sauver tous les mails d'un seul coup
- for (DemandeUIModel demande : model.getDemandeUIModels()) {
- String topiaId = demande.getTopiaId();
- Email email = getContext().newServiceContext().getEmailService().getEmailById(topiaId);
- email = demande.toEntity(email);
- getContext().newServiceContext().getEmailService().saveEmail(email, null, Email.PROPERTY_MAIL_FOLDER);
+ // appel de l'action de rechargement de la liste
+ getContext().getActionEngine().runInternalAction(parentDemandeListUI.getHandler(),
+ LoadFolderEmailsAction.class);
+
+ } else {
+ DemandesUI parentUI = (DemandesUI) getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT);
+ DemandeUI demandeUI = (DemandeUI) parentUI.getDemandsTabPane().getSelectedComponent();
+ getContext().getActionEngine().runInternalAction(demandeUI.getHandler(),
+ SaveDemandeAndExitAction.class);
}
-
- // appel de l'action de rechargement de la liste
- getContext().getActionEngine().runInternalAction(parentDemandeListUI.getHandler(),
- LoadFolderEmailsAction.class);
-
- } else {
- DemandesUI parentUI = (DemandesUI) getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT);
- DemandeUI demandeUI = (DemandeUI) parentUI.getDemandsTabPane().getSelectedComponent();
- getContext().getActionEngine().runInternalAction(demandeUI.getHandler(),
- SaveDemandeAndExitAction.class);
}
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-08-12 09:24:40 UTC (rev 522)
@@ -81,7 +81,8 @@
<JToolBar id='topToolBar'>
<ButtonDemandReplies id="demandRepliesButton"
constructorParams="model"/>
- <ButtonHistory id="historyButton"/>
+ <ButtonHistory id="historyButton"
+ constructorParams="model"/>
<ButtonAttachment id="attachmentsButton"
constructorParams="model"/>
</JToolBar>
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -72,7 +72,9 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import static org.nuiton.i18n.I18n.t;
@@ -194,89 +196,31 @@
*/
@Override
public void fromEntity(Email entity) {
- fromBeanBinder.copyExcluding(entity, this, Email.PROPERTY_ATTACHMENT, Email.PROPERTY_MAIL_FOLDER);
-
+ fromBeanBinder.copyExcluding(entity, this, Email.PROPERTY_ATTACHMENT);
loadAttachments(entity);
+ setGroupedDemandes(entity.getEmailGroup());
}
- public void fromEntity(Email entity, List<MailField> fields) {
- List<String> properties = new ArrayList<String>();
- properties.add(Email.PROPERTY_TOPIA_ID);
- properties.add(Email.PROPERTY_TOPIA_ID);
- properties.add(Email.PROPERTY_TOPIA_ID);
- properties.add(Email.PROPERTY_TOPIA_ID);
- properties.add(Email.PROPERTY_TOPIA_ID);
-
- boolean noFields = CollectionUtils.isEmpty(fields);
- if (noFields || fields.contains(MailField.OBJECT)) {
- properties.add(Email.PROPERTY_OBJECT);
+ public void fromEntityExcluding(Email entity, Set<String> properties) {
+ boolean includeAttachment = properties.add(Email.PROPERTY_ATTACHMENT);
+ boolean includeDemandGroup = properties.add(Email.PROPERTY_EMAIL_GROUP);
+ fromBeanBinder.copyExcluding(entity, this, properties.toArray(new String[properties.size()]));
+ if (includeAttachment) {
+ loadAttachments(entity);
}
- if (noFields || fields.contains(MailField.PROJECT_REFERENCE)) {
- properties.add(Email.PROPERTY_PROJECT_REFERENCE);
+ if (includeDemandGroup) {
+ setGroupedDemandes(entity.getEmailGroup());
}
- if (noFields || fields.contains(MailField.COMPANY_REFERENCE)) {
- properties.add(Email.PROPERTY_COMPANY_REFERENCE);
- }
- if (noFields || fields.contains(MailField.COMMENT)) {
- properties.add(Email.PROPERTY_COMMENT);
- }
- if (noFields || fields.contains(MailField.SENDER)) {
- properties.add(Email.PROPERTY_SENDER);
- }
- if (noFields || fields.contains(MailField.RECEPTION_DATE)) {
- properties.add(Email.PROPERTY_RECEPTION_DATE);
- }
- if (noFields || fields.contains(MailField.RECIPIENT)) {
- properties.add(Email.PROPERTY_RECIPIENT);
- }
- if (noFields || fields.contains(MailField.DEMAND_STATUS)) {
- properties.add(Email.PROPERTY_DEMAND_STATUS);
- }
- if (noFields || fields.contains(MailField.RECEPTION_DATE)) {
- properties.add(Email.PROPERTY_RECEPTION_DATE);
- }
- if (noFields || fields.contains(MailField.EDI_RETURN)) {
- properties.add(Email.PROPERTY_EDI_ERROR);
- }
- if (noFields || fields.contains(MailField.PRIORITY)) {
- properties.add(Email.PROPERTY_PRIORITY);
- }
- if (noFields || fields.contains(MailField.DEMAND_TYPE)) {
- properties.add(Email.PROPERTY_DEMAND_TYPE);
- }
- if (noFields || CollectionUtils.containsAny(fields,
- Lists.newArrayList(MailField.CLIENT_BRAND,
- MailField.CLIENT_CODE))) {
- properties.add(Email.PROPERTY_CLIENT);
- }
- if (noFields || CollectionUtils.containsAny(fields,
- Lists.newArrayList(MailField.REFERENCE,
- MailField.QUOTATION_NB,
- MailField.PF_NB,
- MailField.SAV_NB))) {
- properties.add(Email.PROPERTY_RANGE_ROW);
- }
- if (noFields || fields.contains(MailField.ETAT_ATTENTE)) {
- properties.add(Email.PROPERTY_ETAT_ATTENTE);
- }
- if (noFields || fields.contains(MailField.TAKEN_BY)) {
- properties.add(Email.PROPERTY_TAKEN_BY);
- }
- if (noFields || fields.contains(MailField.REPLIES)) {
- properties.add(Email.PROPERTY_REPLIES);
- }
- if (noFields || fields.contains(MailField.ATTACHMENT)) {
- properties.add(Email.PROPERTY_ATTACHMENT);
- }
- if (noFields || fields.contains(MailField.LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER)) {
- properties.add(Email.PROPERTY_HISTORY);
- }
+ }
+ public void fromEntityIncluding(Email entity, Set<String> properties) {
fromBeanBinder.copy(entity, this, properties.toArray(new String[properties.size()]));
-
- if (noFields || fields.contains(MailField.ATTACHMENT)) {
+ if (properties.isEmpty() || properties.contains(Email.PROPERTY_ATTACHMENT)) {
loadAttachments(entity);
}
+ if (properties.isEmpty() || properties.contains(Email.PROPERTY_EMAIL_GROUP)) {
+ setGroupedDemandes(entity.getEmailGroup());
+ }
}
protected void loadAttachments(Email entity) {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -401,7 +401,7 @@
SaveAndOpenDialogAction action = new SaveAndOpenDialogAction(demandeUI.getHandler(),
false,
dialogContent,
- t("faxtomail.reply.title", currentDemand.getObject()),
+ t("faxtomail.reply.title", currentDemand.getTitle()),
new Dimension(800, 600),
true);
@@ -416,7 +416,7 @@
SaveAndOpenDialogAction action = new SaveAndOpenDialogAction(demandeUI.getHandler(),
false,
dialogContent,
- t("faxtomail.searchToGroup.title", demandeUI.getModel().getObject()),
+ t("faxtomail.searchToGroup.title", demandeUI.getModel().getTitle()),
getContext().getMainUI().getSize(),
true);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -127,6 +127,10 @@
fireDemandRemoved(demand, i);
}
+ public boolean containsDemand(DemandeUIModel demand) {
+ return demands.contains(demand);
+ }
+
public void addDemandsListener(DemandsListener listener) {
listeners.add(listener);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -26,13 +26,17 @@
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.History;
+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 org.apache.commons.collections4.CollectionUtils;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Collection;
+import static org.nuiton.i18n.I18n.n;
import static org.nuiton.i18n.I18n.t;
/**
@@ -42,22 +46,35 @@
*/
public class ButtonHistory extends AbstractToolbarPopupButton<HistoryListUI> {
- public ButtonHistory() {
+ private PropertyChangeListener listener = new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ Collection<History> histories = (Collection<History>) evt.getNewValue();
+ setText(getButtonText(histories));
+ }
+ };
+
+ public ButtonHistory(DemandeUIModel model) {
setToolTipText(t("faxtomail.historyList.action.tip"));
- int historySize = popup.getModel().sizeHistory();
- setText(t("faxtomail.historyList.text", historySize));
+ init(model);
+ }
- popup.getModel().addPropertyChangeListener(Email.PROPERTY_HISTORY, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- Collection<History> history = (Collection<History>) evt.getNewValue();
- if (history != null) {
- setText(t("faxtomail.historyList.text", history.size()));
- }
- }
- });
+ public String getButtonText(Collection<History> histories) {
+ int replyNb = CollectionUtils.size(histories);
+ return t("faxtomail.historyList.text", replyNb);
}
+ public void init(DemandeUIModel model) {
+ if (popup.getModel() != null) {
+ popup.getModel().removePropertyChangeListener(Email.PROPERTY_HISTORY, listener);
+ }
+ popup.setModel(model);
+ if (model != null) {
+ popup.getModel().addPropertyChangeListener(Email.PROPERTY_HISTORY, listener);
+ setText(getButtonText(model != null ? model.getHistory() : null));
+ }
+ }
+
@Override
protected String getActionIcon() {
return "view-history";
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx 2014-08-12 09:24:40 UTC (rev 522)
@@ -33,7 +33,7 @@
</import>
<DemandeUIModel id='model'
- initializer='getContextValue(DemandeUIModel.class)'/>
+ javaBean="null"/>
<JXTitledPanel id='body'>
<JScrollPane id='attachmentBodyScrollPane'>
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -84,44 +84,49 @@
protected Action sendAction;
@Override
- public void beforeInit(HistoryListUI ui) {
- super.beforeInit(ui);
-
- DemandeUIModel currentEmail = getContext().getCurrentEmail();
- this.ui.setContextValue(currentEmail);
- }
-
- @Override
public void afterInit(HistoryListUI ui) {
super.afterInit(ui);
- JXList list = ui.getHistories();
+ final JXList list = ui.getHistories();
list.setCellRenderer(new HistoryListCellRenderer());
JaxxDefaultListModel listModel = new JaxxDefaultListModel<History>();
- final List<History> histories;
- if (getModel().getHistory() != null) {
- histories = new ArrayList<History>(getModel().getHistory());
- } else {
- histories = new ArrayList<History>();
- }
- //sort histories by modification date
- Collections.sort(histories, Ordering.natural().onResultOf(new Function<History, Comparable>() {
- @Override
- public Comparable apply(History history) {
- return history.getModificationDate();
- }
- }));
-
+ List<History> histories = new ArrayList<History>();
listModel.setAllElements(histories);
list.setModel(listModel);
list.addHighlighter(HighlighterFactory.createAlternateStriping());
- getModel().addPropertyChangeListener(Email.PROPERTY_HISTORY, new PropertyChangeListener() {
+
+ final PropertyChangeListener listener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
- Collection<History> history = (Collection<History>) evt.getNewValue();
- ((JaxxDefaultListModel) getUI().getHistories().getModel()).setAllElements(history);
+ Collection<History> newValue = (Collection<History>) evt.getNewValue();
+ List<History> histories = new ArrayList<History>();
+ if (newValue != null) {
+ histories.addAll(newValue);
+ }
+ //sort histories by modification date
+ Collections.sort(histories, Ordering.natural().onResultOf(new Function<History, Comparable>() {
+ @Override
+ public Comparable apply(History history) {
+ return history.getModificationDate();
+ }
+ }));
+ ((JaxxDefaultListModel) getUI().getHistories().getModel()).setAllElements(histories);
}
+ };
+ getUI().addPropertyChangeListener(HistoryListUI.PROPERTY_MODEL, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ DemandeUIModel oldModel = (DemandeUIModel) evt.getOldValue();
+ if (oldModel != null) {
+ oldModel.removePropertyChangeListener(Email.PROPERTY_HISTORY, listener);
+ }
+ DemandeUIModel newModel = (DemandeUIModel) evt.getNewValue();
+ if (newModel != null) {
+ newModel.addPropertyChangeListener(Email.PROPERTY_HISTORY, listener);
+ listener.propertyChange(new PropertyChangeEvent(newModel, Email.PROPERTY_HISTORY, null, newModel.getHistory()));
+ }
+ }
});
sendAction = new AbstractAction() {
@@ -132,7 +137,7 @@
// AbstractToolbarPopupHandler.this.ui.dispose();
// AbstractToolbarPopupHandler.this.ui.setVisible(false);
StringBuilder historyAsString = new StringBuilder();
- for (History history : histories) {
+ for (History history : getModel().getHistory()) {
historyAsString.append(t("faxtomail.common.on.label") + " " + decorate(history.getModificationDate()))
.append(" : " + JAXXUtil.getStringValue(history.getType().getLabel()));
String decoratedFields = decorateFields(history.getFields());
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorNoteUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorNoteUI.css 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorNoteUI.css 2014-08-12 09:24:40 UTC (rev 522)
@@ -38,10 +38,10 @@
#removeButton {
text: "X";
- borderPainted: { false };
+ /*borderPainted: { false };
border: { null };
opaque : { false };
- background: { null };
+ background: { null }; */
}
#noteText {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.css 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.css 2014-08-12 09:24:40 UTC (rev 522)
@@ -34,6 +34,7 @@
#noteButton {
actionIcon: note;
toolTipText: "faxtomail.pdfEditor.button.addNote.tip";
+ selected: true;
}
#crossButton {
@@ -41,11 +42,16 @@
toolTipText: "faxtomail.pdfEditor.button.addCross.tip";
}
-#lineButton {
- actionIcon: line;
- toolTipText: "faxtomail.pdfEditor.button.addLine.tip";
+#hLineButton {
+ actionIcon: hline;
+ toolTipText: "faxtomail.pdfEditor.button.addHLine.tip";
}
+#vLineButton {
+ actionIcon: vline;
+ toolTipText: "faxtomail.pdfEditor.button.addVLine.tip";
+}
+
#highlighterButton {
actionIcon: highlighter;
toolTipText: "faxtomail.pdfEditor.button.addHighlighter.tip";
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.jaxx 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.jaxx 2014-08-12 09:24:40 UTC (rev 522)
@@ -49,15 +49,17 @@
<JToolBar id="toolbar"
constraints='BorderLayout.NORTH'>
- <JButton id='noteButton'
- onActionPerformed="handler.addNote()"/>
- <JButton id='crossButton'
- onActionPerformed="handler.addCross()"/>
- <JButton id='lineButton'
- onActionPerformed="handler.addLine()"/>
- <JButton id='highlighterButton'
- onActionPerformed="handler.addHighlighter()"/>
+ <JToggleButton id='noteButton' buttonGroup="actionGroup" value="NOTE"/>
+ <!--onActionPerformed="handler.addNote()"/>-->
+ <JToggleButton id='crossButton' buttonGroup="actionGroup" value="CROSS"/>
+ <!--onActionPerformed="handler.addCross()"/>-->
+ <JToggleButton id='hLineButton' buttonGroup="actionGroup" value="HLINE"/>
+ <JToggleButton id='vLineButton' buttonGroup="actionGroup" value="VLINE"/>
+ <!--onActionPerformed="handler.addLine()"/>-->
+ <JToggleButton id='highlighterButton' buttonGroup="actionGroup" value="HIGHLIGHTER"/>
+ <!--onActionPerformed="handler.addHighlighter()"/>-->
+
<JSeparator constructorParams="SwingConstants.VERTICAL"/>
<JButton id="prevPageButton"
@@ -89,7 +91,7 @@
<JScrollPane constraints='BorderLayout.CENTER'>
<JPanel>
<JPanel id="container" layout="{null}">
- <JImagePanel id="documentPanel">
+ <JImagePanel id="documentPanel" onMouseClicked="handler.addEditionComponent(event)">
</JImagePanel>
</JPanel>
</JPanel>
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -26,14 +26,10 @@
import static org.nuiton.i18n.I18n.t;
-import java.awt.Component;
-import java.awt.Cursor;
-import java.awt.Dimension;
-import java.awt.Image;
-import java.awt.Insets;
-import java.awt.Rectangle;
+import java.awt.*;
import java.awt.event.ContainerEvent;
import java.awt.event.ContainerListener;
+import java.awt.event.MouseEvent;
import java.awt.geom.Rectangle2D;
import java.awt.image.RenderedImage;
import java.beans.PropertyChangeEvent;
@@ -58,6 +54,7 @@
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
import jaxx.runtime.swing.ComponentMover;
import jaxx.runtime.swing.ComponentResizer;
+import jaxx.runtime.swing.JAXXButtonGroup;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
@@ -107,8 +104,20 @@
cm.setDragInsets(cr.getDragInsets());
cm.setEdgeInsets(new Insets(0, 0, 0, 0));
+ final PDFEditorUIModel model = getModel();
- final PDFEditorUIModel model = getModel();
+ JAXXButtonGroup actionGroup = ui.getActionGroup();
+ actionGroup.addPropertyChangeListener(JAXXButtonGroup.SELECTED_VALUE_PROPERTY, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ String value = (String) evt.getNewValue();
+ model.setSelectedComponent(PDFEditorUIModel.EditionComponent.valueOf(value));
+ }
+ });
+
+ String value = (String) actionGroup.getSelectedValue();
+ model.setSelectedComponent(PDFEditorUIModel.EditionComponent.valueOf(value));
+
ui.getContainer().addContainerListener(new ContainerListener() {
@Override
public void componentAdded(ContainerEvent e) {
@@ -256,39 +265,67 @@
}
- public void addNote() {
+ public void addEditionComponent(MouseEvent event) {
+ PDFEditorUIModel.EditionComponent editionComponent = getModel().getSelectedComponent();
+ switch (editionComponent) {
+ case NOTE:
+ addNote(event.getX(), event.getY());
+ break;
+ case CROSS:
+ addCross(event.getX(), event.getY());
+ break;
+ case HLINE:
+ addHLine(event.getX(), event.getY());
+ break;
+ case VLINE:
+ addVLine(event.getX(), event.getY());
+ break;
+ case HIGHLIGHTER:
+ addHighlighter(event.getX(), event.getY());
+ break;
+ }
+ }
+
+ public void addNote(int x, int y) {
PDFEditorNoteUI note = new PDFEditorNoteUI();
String title = decorate(new Date()) + " - " + getContext().getCurrentUser().getTrigraph();
note.setTitle(title);
- addPanel(note);
+ addPanel(note, x, y);
}
- public void addCross() {
+ public void addCross(int x, int y) {
PDFEditorCrossUI cross = new PDFEditorCrossUI();
- addPanel(cross);
+ addPanel(cross, x, y);
cr.registerComponent(cross);
}
- public void addLine() {
+ public void addHLine(int x, int y) {
PDFEditorLineUI line = new PDFEditorLineUI();
- addPanel(line);
+ line.setHorizontal(true);
+ addPanel(line, x, y);
cr.registerComponent(ComponentResizer.DIRECTION_HORIZONTAL, line);
}
- public void addHighlighter() {
+ public void addVLine(int x, int y) {
+ PDFEditorLineUI line = new PDFEditorLineUI();
+ line.setHorizontal(false);
+ addPanel(line, x, y);
+ cr.registerComponent(ComponentResizer.DIRECTION_VERTICAL, line);
+ }
+
+ public void addHighlighter(int x, int y) {
PDFEditorHighlighterUI highlighter = new PDFEditorHighlighterUI();
- addPanel(highlighter);
+ addPanel(highlighter, x, y);
cr.registerComponent(highlighter);
}
- protected void addPanel(JPanel panel) {
+ protected void addPanel(JPanel panel, int x, int y) {
JPanel container = ui.getContainer();
container.add(panel, 0);
Insets insets = container.getInsets();
Dimension size = panel.getPreferredSize();
- Rectangle rect = container.getVisibleRect();
- panel.setBounds(rect.x + insets.left, rect.y + insets.top,
+ panel.setBounds(x + insets.left, y + insets.top,
size.width, size.height);
container.updateUI();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIModel.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIModel.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -54,6 +54,12 @@
protected DemandeUIModel demand;
+ protected EditionComponent selectedComponent;
+
+ public static enum EditionComponent {
+ NOTE, CROSS, HLINE, VLINE, HIGHLIGHTER
+ }
+
public class Page {
protected List<PDFEditorNoteUI> notes = new ArrayList<PDFEditorNoteUI>();
@@ -255,6 +261,14 @@
this.demand = demand;
}
+ public EditionComponent getSelectedComponent() {
+ return selectedComponent;
+ }
+
+ public void setSelectedComponent(EditionComponent selectedComponent) {
+ this.selectedComponent = selectedComponent;
+ }
+
@Override
protected Attachment newEntity() {
return new AttachmentImpl();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java 2014-08-12 09:24:40 UTC (rev 522)
@@ -121,10 +121,7 @@
models.addAll(demand.getGroupedDemandes());
for (DemandeUIModel demandeUIModel : models) {
- String prefix = demandeUIModel.getObject() + " - ";
- if (StringUtils.isNotBlank(demandeUIModel.getCompanyReference())) {
- prefix = demandeUIModel.getCompanyReference() + " - " + prefix;
- }
+ String prefix = demandeUIModel.getTitle();
for (Attachment attachment : demandeUIModel.getAttachment()) {
ReplyAttachmentModel replyOriginalAttachmentModel =
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-12 09:08:06 UTC (rev 521)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-12 09:24:40 UTC (rev 522)
@@ -30,8 +30,12 @@
faxtomail.alert.alreadyTakenBy.title=Document déjà pris
faxtomail.alert.archiveConfirmation.message=<html>Êtes vous sûr de vouloir archiver cet élément ?<br/>L'archivage est définitif.</html>
faxtomail.alert.archiveConfirmation.title=Confirmation de l'archivage
+faxtomail.alert.emailMoved.message=<html>Depuis que vous avez chargé les éléments du dossier %1$s, l'élément<br/>%3$s<br/>a été déplacé dans le dossier %2$s.</html>
+faxtomail.alert.emailMoved.title=Élément déplacé
faxtomail.alert.groupConfirmation.message=<html>Êtes vous sûr de vouloir grouper les éléments<br/>%1$s et<br/>%2$s ?<br/>Le groupement est définitif.</html>
faxtomail.alert.groupConfirmation.title=Confirmation du groupement
+faxtomail.alert.userNotAuthorizedToReadEmail.message=Vous n'avez pas le droit de lire les éléments du dossier %s
+faxtomail.alert.userNotAuthorizedToReadEmail.title=Dossier interdit
faxtomail.attachment.editedFile.name=%s-annoté
faxtomail.attachmentCellRenderer.text=(%s)
faxtomail.attachmentEditor.action.add.tip=Ajouter une pièce jointe
@@ -98,7 +102,7 @@
faxtomail.demande.firstOpened.label=Première ouverture
faxtomail.demande.gamme.label=Gamme
faxtomail.demande.group.button.label=Grouper
-faxtomail.demande.group.successful=Groupement réussi avec l'élément %s
+faxtomail.demande.group.successful=Groupement réussi
faxtomail.demande.history.action.send.tip=Envoyer l'historique par email
faxtomail.demande.history.send.subject=Historique de %s
faxtomail.demande.lastAttachmentOpening.label=Dernière ouverture de pièce-jointe
@@ -213,9 +217,11 @@
faxtomail.pdfEditor.action.validate.tip=Enregistrer les changements et fermer
faxtomail.pdfEditor.askSaveBeforeLeaving.save=Les modifications apportées n'ont pas été sauvegardées.
faxtomail.pdfEditor.button.addCross.tip=Ajouter une croix
+faxtomail.pdfEditor.button.addHLine.tip=
faxtomail.pdfEditor.button.addHighlighter.tip=Ajouter un surlignement
faxtomail.pdfEditor.button.addLine.tip=Ajouter une ligne
faxtomail.pdfEditor.button.addNote.tip=Ajouter une note
+faxtomail.pdfEditor.button.addVLine.tip=
faxtomail.pdfEditor.button.nextPage=Page suivante
faxtomail.pdfEditor.button.previousPage=Page précédente
faxtomail.pdfEditor.convertToPdf.error=
Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-hline.png
===================================================================
(Binary files differ)
Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-hline.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-vline.png
===================================================================
(Binary files differ)
Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-vline.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
1
0
r521 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande
by kmorin@users.forge.codelutin.com 12 Aug '14
by kmorin@users.forge.codelutin.com 12 Aug '14
12 Aug '14
Author: kmorin
Date: 2014-08-12 11:08:06 +0200 (Tue, 12 Aug 2014)
New Revision: 521
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/521
Log:
correction icone filtre
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-12 07:29:24 UTC (rev 520)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-12 09:08:06 UTC (rev 521)
@@ -177,10 +177,10 @@
return b;
}
-// @Override
-// public void modelChanged(TableModel model) {
-// // do nothing
-// }
+ @Override
+ public void modelChanged(TableModel model) {
+ // do nothing
+ }
};
TableRowFilterSupport.forFilter(tableFilter).searchable(true).useTableRenderers(true).apply();
@@ -272,10 +272,6 @@
navigationTree.setEnabled(false);
MailFolder folder = folderNode.getMailFolder();
-// // open new transaction for current folder
-// getContext().createNewTransaction();
-// folder = getContext().getMailFolderService().getMailFolder(folder.getTopiaId()); // Fix lazy exception
-
getModel().setSelectedFolder(folder);
getContext().setCurrentMailFolder(folder);
@@ -342,7 +338,9 @@
}
if (currentMailFolder != null) {
DefaultMutableTreeNode node = nodesByFolder.get(currentMailFolder);
- navigationTree.setSelectionPath(new TreePath(node.getPath()));
+ if (node != null) {
+ navigationTree.setSelectionPath(new TreePath(node.getPath()));
+ }
}
}
@@ -593,7 +591,7 @@
}
model.setTo(sender);
- openFrame(dialogContent, t("faxtomail.reply.title", demand.getObject()), new Dimension(800, 600));
+ openFrame(dialogContent, t("faxtomail.reply.title", demand.getTitle()), new Dimension(800, 600));
}
public void archive() {
1
0
r520 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment
by echatellier@users.forge.codelutin.com 12 Aug '14
by echatellier@users.forge.codelutin.com 12 Aug '14
12 Aug '14
Author: echatellier
Date: 2014-08-12 09:29:24 +0200 (Tue, 12 Aug 2014)
New Revision: 520
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/520
Log:
Fix commons collections 4 import
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java 2014-08-11 16:17:56 UTC (rev 519)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java 2014-08-12 07:29:24 UTC (rev 520)
@@ -27,7 +27,7 @@
import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton;
-import org.apache.commons.collections.ListUtils;
+import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.CollectionUtils;
import java.beans.PropertyChangeEvent;
1
0
r519 - in trunk: faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin
by echatellier@users.forge.codelutin.com 11 Aug '14
by echatellier@users.forge.codelutin.com 11 Aug '14
11 Aug '14
Author: echatellier
Date: 2014-08-11 18:17:56 +0200 (Mon, 11 Aug 2014)
New Revision: 519
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/519
Log:
refs-70 #5559: Import csv des archives existantes
Added:
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ImportArchiveAction.java
trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-archive-input.jsp
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-11 14:46:33 UTC (rev 518)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-11 16:17:56 UTC (rev 519)
@@ -104,6 +104,13 @@
AttachmentFile getEmailDetailAsAttachment(Email email);
/**
+ * Retourne le nombre de mail archivé.
+ *
+ * @return le nombre de mail archivé
+ */
+ long getArchivedMailCount();
+
+ /**
* Import archive from input stream.
*
* @param is input stream of csv file
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-11 14:46:33 UTC (rev 518)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-11 16:17:56 UTC (rev 519)
@@ -1296,4 +1296,11 @@
IOUtils.closeQuietly(inputStream);
}
}
+
+ @Override
+ public long getArchivedMailCount() {
+ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
+ long result = emailDao.forDemandStatusEquals(DemandStatus.ARCHIVED).count();
+ return result;
+ }
}
Added: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ImportArchiveAction.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ImportArchiveAction.java (rev 0)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ImportArchiveAction.java 2014-08-11 16:17:56 UTC (rev 519)
@@ -0,0 +1,116 @@
+package com.franciaflex.faxtomail.web.action.admin;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.convention.annotation.Action;
+import org.apache.struts2.convention.annotation.InterceptorRef;
+import org.apache.struts2.convention.annotation.InterceptorRefs;
+import org.apache.struts2.convention.annotation.Result;
+
+import com.franciaflex.faxtomail.services.service.EmailService;
+import com.franciaflex.faxtomail.web.FaxToMailActionSupport;
+import com.opensymphony.xwork2.Preparable;
+
+/**
+ * Action de reprise des archives.
+ *
+ * @author Eric Chatellier
+ */
+@InterceptorRefs({
+ @InterceptorRef("faxToMailInterceptor"),
+ @InterceptorRef("loginInterceptor"),
+ @InterceptorRef("paramsPrepareParamsStack")
+})
+public class ImportArchiveAction extends FaxToMailActionSupport implements Preparable {
+
+ private static final Log log = LogFactory.getLog(ImportArchiveAction.class);
+
+ protected String attachmentBase;
+
+ protected File archiveFile;
+
+ protected EmailService emailService;
+
+ protected boolean disabledImport;
+
+ public void setEmailService(EmailService emailService) {
+ this.emailService = emailService;
+ }
+
+ public void setArchiveFile(File archiveFile) {
+ this.archiveFile = archiveFile;
+ }
+
+ public void setAttachmentBase(String attachmentBase) {
+ this.attachmentBase = attachmentBase;
+ }
+
+ public boolean isDisabledImport() {
+ return disabledImport;
+ }
+
+ @Override
+ public void prepare() throws Exception {
+ // check authorization
+ if (!getSession().isAdmin()) {
+ throw new RuntimeException("Not authorized");
+ }
+ }
+
+ @Override
+ @Action("import-archive-input")
+ public String input() throws Exception {
+ checkDisabled();
+ return super.input();
+ }
+
+ protected boolean checkDisabled() {
+
+ // pour eviter les erreurs, on considere que si 1000 mails archivés sont présents, il
+ // proviennent de la reprise des archives
+ if (emailService.getArchivedMailCount() > 1000) {
+ disabledImport = true;
+ }
+ return disabledImport;
+ }
+
+ @Override
+ public void validate() {
+ if (StringUtils.isEmpty(attachmentBase)) {
+ addActionError("Le répertoire de base des pièces jointes est obligatoire !");
+ }
+ else if (!new File(attachmentBase).isDirectory()) {
+ addActionError("Le répertoire de base des pièces jointes n'est pas un répertoire lisible !");
+ }
+ if (archiveFile == null) {
+ addActionError("Le fichier d'archive est obligatoire !");
+ }
+
+ checkDisabled();
+ }
+
+ @Action(results = {@Result(type = "redirectAction", params = {"actionName", "import-archive-input"})})
+ @Override
+ public String execute() throws Exception {
+ String result = INPUT;
+
+ if (!checkDisabled()) {
+ try (InputStream is = new FileInputStream(archiveFile)) {
+ File file = new File(attachmentBase);
+ emailService.importArchive(is, file);
+ result = SUCCESS;
+ } catch (Exception ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't import archive file", ex);
+ }
+ addActionError("Can't import archive " + ex.getMessage());
+ }
+ }
+ return result;
+ }
+}
Property changes on: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ImportArchiveAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-archive-input.jsp
===================================================================
--- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-archive-input.jsp (rev 0)
+++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-archive-input.jsp 2014-08-11 16:17:56 UTC (rev 519)
@@ -0,0 +1,66 @@
+<%--
+ #%L
+ FaxToMail :: Web
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2014 Franciaflex, 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%
+ --%>
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
+<!DOCTYPE html>
+<%@taglib uri="/struts-tags" prefix="s" %>
+
+<html>
+ <head>
+ <title>Reprise des archives</title>
+ </head>
+
+ <body>
+
+ <div id="main-container" class="container">
+
+ <h1 class="page-header">Reprise des archives</h1>
+
+ <s:if test="disabledImport">
+ <em>L'import des archives a déjà été effectué, il n'est plus disponible</em>
+ </s:if>
+ <s:else>
+ <s:form id="main_form" action="import-archive" method="post" enctype="multipart/form-data">
+
+ <s:actionmessage/>
+ <s:actionerror/>
+
+ <div class="form-group">
+ <label for="archiveFile" class="control-label">Fichier d'archive :</label>
+ <input type="file" id="archiveFile" name="archiveFile" class="form-control">
+ <p class="help-block">Format du fichier csv : <code>receptionDate;projectReference;sender;fax;recipient;object;archiveDate;companyReference;originalEmail;comment;etatAttente;demandType;priority;mailFolder;client-code;client-brand;attachments</code><br />
+ Encodage du fichier csv : <code>${applicationConfig.importFileEncoding}</code></p>
+ </div>
+ <div class="form-group">
+ <label for="attachmentBase" class="control-label">Répertoire de base des pièces jointes :</label>
+ <input type="text" id="attachmentBase" name="attachmentBase" class="form-control">
+ <p class="help-block">Dossier contenant les pièces jointes référencées dans le fichier d'archive</p>
+ </div>
+ <button type="submit" class="btn btn-primary navbar-btn">Valider</button>
+ <hr />
+
+ </s:form>
+ </s:else>
+ </div>
+ </body>
+</html>
Property changes on: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-archive-input.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r518 - in trunk/faxtomail-service/src: main/java/com/franciaflex/faxtomail/services/service main/java/com/franciaflex/faxtomail/services/service/imports test/java/com/franciaflex/faxtomail/services/service test/resources test/resources/archives
by echatellier@users.forge.codelutin.com 11 Aug '14
by echatellier@users.forge.codelutin.com 11 Aug '14
11 Aug '14
Author: echatellier
Date: 2014-08-11 16:46:33 +0200 (Mon, 11 Aug 2014)
New Revision: 518
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/518
Log:
refs-50 #5559: Import csv des archives existantes
Added:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportBean.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportModel.java
trunk/faxtomail-service/src/test/resources/archives/
trunk/faxtomail-service/src/test/resources/archives/archives.csv
trunk/faxtomail-service/src/test/resources/archives/att1.txt
trunk/faxtomail-service/src/test/resources/archives/att2.txt
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-11 10:58:27 UTC (rev 517)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-11 14:46:33 UTC (rev 518)
@@ -37,11 +37,14 @@
import com.franciaflex.faxtomail.services.FaxToMailService;
import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException;
import com.franciaflex.faxtomail.services.service.exceptions.InvalidClientException;
+
import org.apache.commons.mail.EmailException;
import org.nuiton.util.pagination.PaginationParameter;
import org.nuiton.util.pagination.PaginationResult;
import javax.mail.MessagingException;
+
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
@@ -99,4 +102,12 @@
void updateRangeRowsWithEdiReturns();
AttachmentFile getEmailDetailAsAttachment(Email email);
+
+ /**
+ * Import archive from input stream.
+ *
+ * @param is input stream of csv file
+ * @param attachmentBase base folder containing attachment listed in csv file
+ */
+ void importArchive(InputStream is, File attachmentBase);
}
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-11 10:58:27 UTC (rev 517)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-11 14:46:33 UTC (rev 518)
@@ -32,6 +32,8 @@
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collection;
@@ -40,6 +42,7 @@
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -48,9 +51,9 @@
import javax.activation.FileDataSource;
import javax.mail.MessagingException;
-import com.google.common.collect.Collections2;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
@@ -66,6 +69,9 @@
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
import org.hibernate.Hibernate;
+import org.nuiton.csv.Import;
+import org.nuiton.csv.ImportRuntimeException;
+import org.nuiton.jaxx.application.ApplicationTechnicalException;
import org.nuiton.topia.persistence.TopiaEntities;
import org.nuiton.topia.persistence.TopiaQueryBuilderAddCriteriaOrRunQueryStep;
import org.nuiton.util.beans.Binder;
@@ -77,10 +83,14 @@
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException;
import com.franciaflex.faxtomail.services.service.exceptions.InvalidClientException;
+import com.franciaflex.faxtomail.services.service.imports.ArchiveImportBean;
+import com.franciaflex.faxtomail.services.service.imports.ArchiveImportModel;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
+import com.google.common.base.Splitter;
import com.google.common.base.Strings;
+import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -1173,4 +1183,117 @@
Hibernate.initialize(email.getEtatAttente());
Hibernate.initialize(email.getPriority());
}
+
+ /**
+ * Compute mail folder path (separated by /) from root to current.
+ *
+ * @param folder folder to get path
+ * @return full mail folder path
+ */
+ protected String getFullMailFolderPath(MailFolder folder) {
+ StringBuilder sb = new StringBuilder(folder.getName());
+ MailFolder loopFolder = folder.getParent();
+ while (loopFolder != null) {
+ sb.insert(0, "/");
+ sb.insert(0, loopFolder.getName());
+ loopFolder = loopFolder.getParent();
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public void importArchive(InputStream inputStream, File attachmentBase) {
+
+ // all doas involved
+ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
+ DemandTypeTopiaDao demandTypedao = getPersistenceContext().getDemandTypeDao();
+ PriorityTopiaDao priorityDao = getPersistenceContext().getPriorityDao();
+ EtatAttenteTopiaDao etatAttenteDao = getPersistenceContext().getEtatAttenteDao();
+ MailFolderTopiaDao mailFolderDao = getPersistenceContext().getMailFolderDao();
+ AttachmentTopiaDao attachmentDao = getPersistenceContext().getAttachmentDao();
+ AttachmentFileTopiaDao attachmentFileDao = getPersistenceContext().getAttachmentFileDao();
+
+ // get referentiel map
+ Map<String, DemandType> allDemandTypes = Maps.uniqueIndex(demandTypedao, new Function<DemandType, String>() {
+ @Override
+ public String apply(DemandType input) {
+ return input.getLabel();
+ }
+ });
+ Map<String, Priority> allPriority = Maps.uniqueIndex(priorityDao, new Function<Priority, String>() {
+ @Override
+ public String apply(Priority input) {
+ return input.getLabel();
+ }
+ });
+ Map<String, EtatAttente> allEtatAttentes = Maps.uniqueIndex(etatAttenteDao, new Function<EtatAttente, String>() {
+ @Override
+ public String apply(EtatAttente input) {
+ return input.getLabel();
+ }
+ });
+
+ // build folder map
+ Map<String, MailFolder> mailFolderMap = Maps.uniqueIndex(mailFolderDao, new Function<MailFolder, String>() {
+ @Override
+ public String apply(MailFolder input) {
+ return getFullMailFolderPath(input);
+ }
+ });
+
+ // run import
+ ArchiveImportModel archiveImportModel = new ArchiveImportModel(';', allEtatAttentes, allDemandTypes, allPriority, mailFolderMap);
+ Binder<ArchiveImportBean, Email> emailBinder = BinderFactory.newBinder(ArchiveImportBean.class, Email.class);
+ Import<ArchiveImportBean> importer = null;
+ try {
+ importer = Import.newImport(archiveImportModel, new InputStreamReader(inputStream, getApplicationConfig().getImportFileEncoding()));
+ for (ArchiveImportBean archiveBean : importer) {
+
+ // create new email to persist
+ Email email = emailDao.newInstance();
+ emailBinder.copy(archiveBean, email);
+ email.setDemandStatus(DemandStatus.ARCHIVED);
+
+ // persist it
+ email = emailDao.create(email);
+
+ // manage attachments
+ if (archiveBean.getAttachmentPaths() != null) {
+ Iterable<String> itAttachmentPaths = Splitter.on(',').omitEmptyStrings().trimResults().split(archiveBean.getAttachmentPaths());
+ for (String attachmentPath : itAttachmentPaths) {
+ File attFile = new File(attachmentBase, attachmentPath);
+ if (!attFile.isFile()) {
+ throw new RuntimeException("Missing file " + attFile.getAbsolutePath());
+ }
+
+ Attachment attachment = new AttachmentImpl();
+ AttachmentFile attachmentFile = new AttachmentFileImpl();
+ attachmentFile.setFilename(attFile.getName());
+ attachmentFile.setContent(FileUtils.readFileToByteArray(attFile));
+ attachmentFile = attachmentFileDao.create(attachmentFile);
+ attachment.setOriginalFile(attachmentFile);
+
+ attachment = attachmentDao.create(attachment);
+ email.addAttachment(attachment);
+ }
+
+ emailDao.update(email);
+ }
+ }
+
+ getPersistenceContext().commit();
+
+ } catch (ImportRuntimeException|IOException e) {
+ String message;
+ if (e.getCause() != null) {
+ message = e.getCause().getMessage();
+ } else {
+ message = e.getMessage();
+ }
+ throw new ApplicationTechnicalException(message, e);
+ } finally {
+ IOUtils.closeQuietly(importer);
+ IOUtils.closeQuietly(inputStream);
+ }
+ }
}
Added: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportBean.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportBean.java (rev 0)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportBean.java 2014-08-11 14:46:33 UTC (rev 518)
@@ -0,0 +1,49 @@
+package com.franciaflex.faxtomail.services.service.imports;
+
+import com.franciaflex.faxtomail.persistence.entities.EmailImpl;
+
+/**
+ * Bean model d'import des archives. (très proche de l'entité
+ * {@link com.franciaflex.faxtomail.persistence.entities.Email}).
+ *
+ * @author Eric Chatellier
+ */
+public class ArchiveImportBean extends EmailImpl {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 1498046445018851410L;
+
+ protected static final String PROPERTY_ATTACHMENT_PATHS = "attachmentPaths";
+ protected static final String PROPERTY_CLIENT_CODE = "clientCode";
+ protected static final String PROPERTY_CLIENT_BRAND = "clientBrand";
+
+ protected String attachmentPaths;
+
+ protected String clientCode;
+
+ protected String clientBrand;
+
+ public String getAttachmentPaths() {
+ return attachmentPaths;
+ }
+
+ public void setAttachmentPaths(String attachmentPaths) {
+ this.attachmentPaths = attachmentPaths;
+ }
+
+ public String getClientCode() {
+ return clientCode;
+ }
+
+ public void setClientCode(String clientCode) {
+ this.clientCode = clientCode;
+ }
+
+ public String getClientBrand() {
+ return clientBrand;
+ }
+
+ public void setClientBrand(String clientBrand) {
+ this.clientBrand = clientBrand;
+ }
+}
Property changes on: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportBean.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportModel.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportModel.java (rev 0)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportModel.java 2014-08-11 14:46:33 UTC (rev 518)
@@ -0,0 +1,97 @@
+package com.franciaflex.faxtomail.services.service.imports;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+import org.nuiton.csv.ValueParser;
+import org.nuiton.csv.ext.AbstractImportModel;
+
+import com.franciaflex.faxtomail.persistence.entities.DemandType;
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.EtatAttente;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.Priority;
+
+/**
+ * Modele d'import des archives, défini comme suit:
+ *
+ * receptionDate;projectReference;sender;fax;recipient;object;archiveDate;companyReference;
+ * originalEmail;comment;etatAttente;demandType;priority;mailFolder;client-code;client-brand;attachments
+ *
+ * @author Eric Chatellier
+ */
+public class ArchiveImportModel extends AbstractImportModel<ArchiveImportBean> {
+
+ /**
+ * Parse date pattern : dd/MM/yyyy hh:mm:ss.
+ */
+ protected ValueParser<Date> dateValueParser = new ValueParser<Date>() {
+ protected DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
+ @Override
+ public Date parse(String value) throws ParseException {
+ return dateFormat.parse(value);
+ }
+ };
+
+ /**
+ * Parser for boolean fields.
+ */
+ protected ValueParser<Boolean> yesNoParser = new ValueParser<Boolean>() {
+ @Override
+ public Boolean parse(String value) throws ParseException {
+ return "oui".equalsIgnoreCase(value);
+ }
+ };
+
+ public ArchiveImportModel(char separator,
+ final Map<String, EtatAttente> etatAttentes, final Map<String, DemandType> demandTypes,
+ final Map<String, Priority> priorities, final Map<String, MailFolder> mailFolderMap) {
+ super(separator);
+
+ newMandatoryColumn("receptionDate", Email.PROPERTY_RECEPTION_DATE, dateValueParser);
+ newMandatoryColumn("projectReference", Email.PROPERTY_PROJECT_REFERENCE);
+ newMandatoryColumn("sender", Email.PROPERTY_SENDER);
+ newMandatoryColumn("fax", Email.PROPERTY_FAX, yesNoParser);
+ newMandatoryColumn("recipient", Email.PROPERTY_RECIPIENT);
+ newMandatoryColumn("object", Email.PROPERTY_OBJECT);
+ newMandatoryColumn("archiveDate", Email.PROPERTY_ARCHIVE_DATE, dateValueParser);
+ newMandatoryColumn("companyReference", Email.PROPERTY_COMPANY_REFERENCE);
+ newMandatoryColumn("originalEmail", Email.PROPERTY_ORIGINAL_EMAIL);
+ newMandatoryColumn("comment", Email.PROPERTY_COMMENT);
+ newMandatoryColumn("etatAttente", Email.PROPERTY_ETAT_ATTENTE, new ValueParser<EtatAttente>() {
+ @Override
+ public EtatAttente parse(String value) throws ParseException {
+ return etatAttentes.get(value);
+ }
+ });
+ newMandatoryColumn("demandType", Email.PROPERTY_DEMAND_TYPE, new ValueParser<DemandType>() {
+ @Override
+ public DemandType parse(String value) throws ParseException {
+ return demandTypes.get(value);
+ }
+ });
+ newMandatoryColumn("priority", Email.PROPERTY_PRIORITY, new ValueParser<Priority>() {
+ @Override
+ public Priority parse(String value) throws ParseException {
+ return priorities.get(value);
+ }
+ });
+ newMandatoryColumn("mailFolder", Email.PROPERTY_MAIL_FOLDER, new ValueParser<MailFolder>() {
+ @Override
+ public MailFolder parse(String value) throws ParseException {
+ return mailFolderMap.get(value);
+ }
+ });
+ newMandatoryColumn("client-code", ArchiveImportBean.PROPERTY_CLIENT_CODE);
+ newMandatoryColumn("client-brand", ArchiveImportBean.PROPERTY_CLIENT_BRAND);
+ newMandatoryColumn("attachments", ArchiveImportBean.PROPERTY_ATTACHMENT_PATHS);
+ }
+
+ @Override
+ public ArchiveImportBean newEmptyInstance() {
+ return new ArchiveImportBean();
+ }
+}
Property changes on: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-08-11 10:58:27 UTC (rev 517)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-08-11 14:46:33 UTC (rev 518)
@@ -24,14 +24,12 @@
* #L%
*/
+import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.util.Collections;
import java.util.Set;
-import com.franciaflex.faxtomail.persistence.entities.MailFolder;
-import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -43,6 +41,10 @@
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
/**
* Email service tests.
@@ -155,4 +157,17 @@
Assert.assertTrue(Sets.intersection(page1Ids, page2Ids).isEmpty());
}
+
+ /**
+ * Test de l'import de la reprise des archives.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testImportArchive() throws IOException {
+ try (InputStream is = EmailServiceTest.class.getResourceAsStream("/archives/archives.csv")) {
+ File attachmentBase = new File("src/test/resources/archives");
+ service.importArchive(is, attachmentBase);
+ }
+ }
}
Added: trunk/faxtomail-service/src/test/resources/archives/archives.csv
===================================================================
--- trunk/faxtomail-service/src/test/resources/archives/archives.csv (rev 0)
+++ trunk/faxtomail-service/src/test/resources/archives/archives.csv 2014-08-11 14:46:33 UTC (rev 518)
@@ -0,0 +1,2 @@
+receptionDate;projectReference;sender;fax;recipient;object;archiveDate;companyReference;originalEmail;comment;etatAttente;demandType;priority;mailFolder;client-code;client-brand;attachments
+30/07/1984 23:10:00;naissance de l'élu;dieu@skysupport.com;non;humanity@populasse.fr;Une nouvelle ere commence;30/07/2014 12:00:00;osef;"Ha la la, je te raconte pas...";"no comment";Pris;Retour;Haut;Franciaflex/Chargés de clientèle/Agathe;99153;FX;att1.txt,att2.txt
Added: trunk/faxtomail-service/src/test/resources/archives/att1.txt
===================================================================
--- trunk/faxtomail-service/src/test/resources/archives/att1.txt (rev 0)
+++ trunk/faxtomail-service/src/test/resources/archives/att1.txt 2014-08-11 14:46:33 UTC (rev 518)
@@ -0,0 +1 @@
+Test
\ No newline at end of file
Added: trunk/faxtomail-service/src/test/resources/archives/att2.txt
===================================================================
--- trunk/faxtomail-service/src/test/resources/archives/att2.txt (rev 0)
+++ trunk/faxtomail-service/src/test/resources/archives/att2.txt 2014-08-11 14:46:33 UTC (rev 518)
@@ -0,0 +1 @@
+Re test
\ No newline at end of file
1
0
r517 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande
by kmorin@users.forge.codelutin.com 11 Aug '14
by kmorin@users.forge.codelutin.com 11 Aug '14
11 Aug '14
Author: kmorin
Date: 2014-08-11 12:58:27 +0200 (Mon, 11 Aug 2014)
New Revision: 517
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/517
Log:
fix compilation
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-11 10:43:42 UTC (rev 516)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-11 10:58:27 UTC (rev 517)
@@ -200,7 +200,7 @@
}
public void fromEntity(Email entity, List<MailField> fields) {
- List<String> properties = new ArrayList<>();
+ List<String> properties = new ArrayList<String>();
properties.add(Email.PROPERTY_TOPIA_ID);
properties.add(Email.PROPERTY_TOPIA_ID);
properties.add(Email.PROPERTY_TOPIA_ID);
1
0
r516 - in trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing: actions content/demande util
by kmorin@users.forge.codelutin.com 11 Aug '14
by kmorin@users.forge.codelutin.com 11 Aug '14
11 Aug '14
Author: kmorin
Date: 2014-08-11 12:43:42 +0200 (Mon, 11 Aug 2014)
New Revision: 516
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/516
Log:
fixes #5528 filtre sur les colonnes : il manque l'icone qui indique que la colonne est filtr?\195?\169e
fixes #5526 dans la recherche, bug dans le statut : il apparait un 'sans' alors qu'il n'existe pas dans la liste
bind seulement les propri?\195?\169t?\195?\169s r?\195?\169cup?\195?\169r?\195?\169es par le service
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/CheckBoxComboBoxModel.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-11 09:25:21 UTC (rev 515)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-11 10:43:42 UTC (rev 516)
@@ -30,6 +30,8 @@
import java.util.Collection;
import java.util.List;
+import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport;
+import com.franciaflex.faxtomail.persistence.entities.MailField;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
@@ -75,6 +77,9 @@
dataTable.setName("dataTable" + columns);
getContext().getSwingSession().add(dataTable, true);
+ // fixes #5528 filtre sur les colonnes : il manque l'icone qui indique que la colonne est filtrée
+ TableRowFilterSupport.forFilter(handler.getTableFilter()).searchable(true).useTableRenderers(true).apply();
+
return true;
}
@@ -85,10 +90,11 @@
MailFolder folder = model.getSelectedFolder();
FaxToMailUser currentUser = getContext().getCurrentUser();
+ List<MailField> columns = handler.getColumns();
PaginationResult<Email> paginationResult = getContext().newServiceContext().getEmailService()
.getEmailForFolder(folder,
currentUser,
- handler.getColumns(),
+ columns,
model.getPaginationParameter());
List<Email> emails = paginationResult.getElements();
if (log.isDebugEnabled()) {
@@ -98,7 +104,7 @@
List<DemandeUIModel> demands = new ArrayList<DemandeUIModel>();
for (Email email : emails) {
DemandeUIModel demand = new DemandeUIModel();
- demand.fromEntity(email);
+ demand.fromEntity(email, columns);
// on ajoute toutes les lignes de rangeRow,
// qui sont toutes valides puisqu'on les récupère de la base et qu'on ne sauvegarde que les lignes valides
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-11 09:25:21 UTC (rev 515)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-11 10:43:42 UTC (rev 516)
@@ -113,9 +113,11 @@
/** Logger. */
private static final Log log = LogFactory.getLog(DemandeListUIHandler.class);
- protected Map<String, String> pdfFieldValues;
+ protected ITableFilter<JTable> tableFilter;
- protected DateFormat dayFormat = new SimpleDateFormat("dd/MM/yyyy");
+ public ITableFilter<JTable> getTableFilter() {
+ return tableFilter;
+ }
public final PropertyChangeListener selectedDemandeChangeListener = new PropertyChangeListener() {
@Override
@@ -160,7 +162,7 @@
initDemandeTable(dataTable, false);
- final ITableFilter<JTable> tableFilter = new JTableFilter(dataTable) {
+ tableFilter = new JTableFilter(dataTable) {
@Override
protected boolean execute(int col, Collection<DistinctColumnItem> items) {
@@ -175,10 +177,10 @@
return b;
}
- @Override
- public void modelChanged(TableModel model) {
- // do nothing
- }
+// @Override
+// public void modelChanged(TableModel model) {
+// // do nothing
+// }
};
TableRowFilterSupport.forFilter(tableFilter).searchable(true).useTableRenderers(true).apply();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-11 09:25:21 UTC (rev 515)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-11 10:43:42 UTC (rev 516)
@@ -47,6 +47,7 @@
import com.google.common.base.Strings;
import com.google.common.collect.Collections2;
+import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
@@ -193,9 +194,92 @@
*/
@Override
public void fromEntity(Email entity) {
-// super.fromEntity(entity);
fromBeanBinder.copyExcluding(entity, this, Email.PROPERTY_ATTACHMENT, Email.PROPERTY_MAIL_FOLDER);
-
+
+ loadAttachments(entity);
+ }
+
+ public void fromEntity(Email entity, List<MailField> fields) {
+ List<String> properties = new ArrayList<>();
+ properties.add(Email.PROPERTY_TOPIA_ID);
+ properties.add(Email.PROPERTY_TOPIA_ID);
+ properties.add(Email.PROPERTY_TOPIA_ID);
+ properties.add(Email.PROPERTY_TOPIA_ID);
+ properties.add(Email.PROPERTY_TOPIA_ID);
+
+ boolean noFields = CollectionUtils.isEmpty(fields);
+ if (noFields || fields.contains(MailField.OBJECT)) {
+ properties.add(Email.PROPERTY_OBJECT);
+ }
+ if (noFields || fields.contains(MailField.PROJECT_REFERENCE)) {
+ properties.add(Email.PROPERTY_PROJECT_REFERENCE);
+ }
+ if (noFields || fields.contains(MailField.COMPANY_REFERENCE)) {
+ properties.add(Email.PROPERTY_COMPANY_REFERENCE);
+ }
+ if (noFields || fields.contains(MailField.COMMENT)) {
+ properties.add(Email.PROPERTY_COMMENT);
+ }
+ if (noFields || fields.contains(MailField.SENDER)) {
+ properties.add(Email.PROPERTY_SENDER);
+ }
+ if (noFields || fields.contains(MailField.RECEPTION_DATE)) {
+ properties.add(Email.PROPERTY_RECEPTION_DATE);
+ }
+ if (noFields || fields.contains(MailField.RECIPIENT)) {
+ properties.add(Email.PROPERTY_RECIPIENT);
+ }
+ if (noFields || fields.contains(MailField.DEMAND_STATUS)) {
+ properties.add(Email.PROPERTY_DEMAND_STATUS);
+ }
+ if (noFields || fields.contains(MailField.RECEPTION_DATE)) {
+ properties.add(Email.PROPERTY_RECEPTION_DATE);
+ }
+ if (noFields || fields.contains(MailField.EDI_RETURN)) {
+ properties.add(Email.PROPERTY_EDI_ERROR);
+ }
+ if (noFields || fields.contains(MailField.PRIORITY)) {
+ properties.add(Email.PROPERTY_PRIORITY);
+ }
+ if (noFields || fields.contains(MailField.DEMAND_TYPE)) {
+ properties.add(Email.PROPERTY_DEMAND_TYPE);
+ }
+ if (noFields || CollectionUtils.containsAny(fields,
+ Lists.newArrayList(MailField.CLIENT_BRAND,
+ MailField.CLIENT_CODE))) {
+ properties.add(Email.PROPERTY_CLIENT);
+ }
+ if (noFields || CollectionUtils.containsAny(fields,
+ Lists.newArrayList(MailField.REFERENCE,
+ MailField.QUOTATION_NB,
+ MailField.PF_NB,
+ MailField.SAV_NB))) {
+ properties.add(Email.PROPERTY_RANGE_ROW);
+ }
+ if (noFields || fields.contains(MailField.ETAT_ATTENTE)) {
+ properties.add(Email.PROPERTY_ETAT_ATTENTE);
+ }
+ if (noFields || fields.contains(MailField.TAKEN_BY)) {
+ properties.add(Email.PROPERTY_TAKEN_BY);
+ }
+ if (noFields || fields.contains(MailField.REPLIES)) {
+ properties.add(Email.PROPERTY_REPLIES);
+ }
+ if (noFields || fields.contains(MailField.ATTACHMENT)) {
+ properties.add(Email.PROPERTY_ATTACHMENT);
+ }
+ if (noFields || fields.contains(MailField.LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER)) {
+ properties.add(Email.PROPERTY_HISTORY);
+ }
+
+ fromBeanBinder.copy(entity, this, properties.toArray(new String[properties.size()]));
+
+ if (noFields || fields.contains(MailField.ATTACHMENT)) {
+ loadAttachments(entity);
+ }
+ }
+
+ protected void loadAttachments(Email entity) {
// On ne copie pas entierrement les attachments pour ne pas force le chargement du contenu binaire du fichier en mémoire.
List<Attachment> attachmentCopy = new ArrayList<Attachment>();
if (entity.getAttachment() != null) {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-08-11 09:25:21 UTC (rev 515)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-08-11 10:43:42 UTC (rev 516)
@@ -230,9 +230,6 @@
table.setModel(tableModel);
table.setColumnModel(columnModel);
- // fixes #5528 filtre sur les colonnes : il manque l'icone qui indique que la colonne est filtrée
- TableRowFilterSupport.forTable(table).apply();
-
return StringUtils.join(columns, "-");
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/CheckBoxComboBoxModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/CheckBoxComboBoxModel.java 2014-08-11 09:25:21 UTC (rev 515)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/CheckBoxComboBoxModel.java 2014-08-11 10:43:42 UTC (rev 516)
@@ -37,8 +37,8 @@
*/
public class CheckBoxComboBoxModel<HL extends HasLabel> extends AbstractListModel<HL> implements ComboBoxModel<HL> {
- List<Object> selection;
- List<HL> values;
+ private List<Object> selection;
+ private List<HL> values;
public CheckBoxComboBoxModel(List<HL> values, List<HL> selection) {
this.values = new ArrayList<HL>();
@@ -57,7 +57,9 @@
selection = new ArrayList<Object>(selection);
if (selection.contains(anItem)) {
selection.remove(anItem);
- } else {
+
+ // do not add the item if it si not in the universe values
+ } else if (values.contains(anItem)) {
selection.add(anItem);
}
}
1
0
Author: echatellier
Date: 2014-08-11 11:25:21 +0200 (Mon, 11 Aug 2014)
New Revision: 515
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/515
Log:
Fix build
Modified:
trunk/faxtomail-service/pom.xml
trunk/pom.xml
Modified: trunk/faxtomail-service/pom.xml
===================================================================
--- trunk/faxtomail-service/pom.xml 2014-08-11 09:13:14 UTC (rev 514)
+++ trunk/faxtomail-service/pom.xml 2014-08-11 09:25:21 UTC (rev 515)
@@ -92,6 +92,11 @@
<groupId>org.nuiton</groupId>
<artifactId>nuiton-validator</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.struts.xwork</groupId>
+ <artifactId>xwork-core</artifactId>
+ </dependency>
<dependency>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-08-11 09:13:14 UTC (rev 514)
+++ trunk/pom.xml 2014-08-11 09:25:21 UTC (rev 515)
@@ -110,11 +110,10 @@
<hibernateVersion>4.3.6.Final</hibernateVersion>
<h2Version>1.3.176</h2Version>
- <jaxxVersion>2.9</jaxxVersion>
+ <jaxxVersion>2.9.1</jaxxVersion>
<!-- do not upgrade to 1.6.5-1 -->
<swingXVersion>1.6.4</swingXVersion>
- <xworkVersion>2.3.15.1</xworkVersion>
-
+ <xworkVersion>2.3.16.3</xworkVersion>
<struts2Version>2.3.16.3</struts2Version>
<jqueryPluginVersion>3.7.1</jqueryPluginVersion>
<bootstrapPluginVersion>2.0.0</bootstrapPluginVersion>
1
0