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
r464 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions
by kmorin@users.forge.codelutin.com 04 Aug '14
by kmorin@users.forge.codelutin.com 04 Aug '14
04 Aug '14
Author: kmorin
Date: 2014-08-04 17:42:08 +0200 (Mon, 04 Aug 2014)
New Revision: 464
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/464
Log:
fixes #5584 Cliquer rapidement sur les boutons "Gestion des fax" et "Recherche" cause une exception
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/SaveDemandeAndExitAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java
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-04 15:01:23 UTC (rev 463)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java 2014-08-04 15:42:08 UTC (rev 464)
@@ -24,6 +24,7 @@
import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
+import com.franciaflex.faxtomail.ui.swing.content.MainUI;
import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.context.JAXXContextEntryDef;
@@ -72,6 +73,9 @@
@Override
public boolean prepareAction() throws Exception {
boolean result = super.prepareAction();
+
+ setTopBarButtonEnabled(false);
+
result &= skipCheckCurrentScreen || getHandler().quitCurrentScreen();
return result;
}
@@ -100,10 +104,20 @@
@Override
public void postFailedAction(Throwable error) {
- if (error != null) {
+ setTopBarButtonEnabled(true);
+ }
-// getContext().setFallBackScreen();
- }
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ setTopBarButtonEnabled(true);
}
+ protected void setTopBarButtonEnabled(boolean enabled) {
+ MainUI ui = getUI();
+ ui.getSearchButton().setEnabled(enabled);
+ ui.getDemandListButton().setEnabled(enabled);
+ ui.getExitButton().setEnabled(enabled);
+ }
+
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java 2014-08-04 15:01:23 UTC (rev 463)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java 2014-08-04 15:42:08 UTC (rev 464)
@@ -44,8 +44,6 @@
@Override
public void postSuccessAction() {
super.postSuccessAction();
-
- GoToPreviousScreenAction action = getContext().getActionFactory().createLogicAction(getContext().getMainUI().getHandler(), GoToPreviousScreenAction.class);
- getActionEngine().runInternalAction(action);
+ getActionEngine().runInternalAction(getContext().getMainUI().getHandler(), GoToPreviousScreenAction.class);
}
}
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-04 15:01:23 UTC (rev 463)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-08-04 15:42:08 UTC (rev 464)
@@ -54,9 +54,8 @@
DemandesUI parentUI = (DemandesUI) getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT);
DemandeUI demandeUI = (DemandeUI) parentUI.getDemandsTabPane().getSelectedComponent();
- SaveDemandeAction action = getContext().getActionFactory().createLogicAction(demandeUI.getHandler(),
- SaveDemandeAndExitAction.class);
- getContext().getActionEngine().runInternalAction(action);
+ getContext().getActionEngine().runInternalAction(demandeUI.getHandler(),
+ SaveDemandeAndExitAction.class);
}
}
1
0
r463 - trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail
by echatellier@users.forge.codelutin.com 04 Aug '14
by echatellier@users.forge.codelutin.com 04 Aug '14
04 Aug '14
Author: echatellier
Date: 2014-08-04 17:01:23 +0200 (Mon, 04 Aug 2014)
New Revision: 463
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/463
Log:
Remove init version (not always needed)
Modified:
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java 2014-08-04 14:27:36 UTC (rev 462)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java 2014-08-04 15:01:23 UTC (rev 463)
@@ -96,8 +96,6 @@
// it's set here for only web application to migrate schema, not client
Map<String, String> properties = new HashMap<>();
properties.put("topia.service.migration", FaxtomailFlywayMigrationService.class.getName());
- // init base version with 1.0.0.429 (1.0-rc-2)
- properties.put("topia.service.migration." + TopiaFlywayService.FLYWAY_INIT_VERSION, "1.0.0.429");
properties.put("topia.service.migration." + TopiaFlywayService.USE_MODEL_VERSION, "false");
// add configuration properties after to allow override
1
0
r462 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions
by kmorin@users.forge.codelutin.com 04 Aug '14
by kmorin@users.forge.codelutin.com 04 Aug '14
04 Aug '14
Author: kmorin
Date: 2014-08-04 16:27:36 +0200 (Mon, 04 Aug 2014)
New Revision: 462
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/462
Log:
run internal action instead of just run action
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java 2014-08-04 14:03:00 UTC (rev 461)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java 2014-08-04 14:27:36 UTC (rev 462)
@@ -46,6 +46,6 @@
super.postSuccessAction();
GoToPreviousScreenAction action = getContext().getActionFactory().createLogicAction(getContext().getMainUI().getHandler(), GoToPreviousScreenAction.class);
- getActionEngine().runAction(action);
+ getActionEngine().runInternalAction(action);
}
}
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-04 14:03:00 UTC (rev 461)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-08-04 14:27:36 UTC (rev 462)
@@ -56,7 +56,7 @@
DemandeUI demandeUI = (DemandeUI) parentUI.getDemandsTabPane().getSelectedComponent();
SaveDemandeAction action = getContext().getActionFactory().createLogicAction(demandeUI.getHandler(),
SaveDemandeAndExitAction.class);
- getContext().getActionEngine().runAction(action);
+ getContext().getActionEngine().runInternalAction(action);
}
}
1
0
r461 - in trunk/faxtomail-ui-swing/src/main: java/com/franciaflex/faxtomail/ui/swing/content/demande/replies java/com/franciaflex/faxtomail/ui/swing/content/reply resources/i18n
by echatellier@users.forge.codelutin.com 04 Aug '14
by echatellier@users.forge.codelutin.com 04 Aug '14
04 Aug '14
Author: echatellier
Date: 2014-08-04 16:03:00 +0200 (Mon, 04 Aug 2014)
New Revision: 461
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/461
Log:
fixes #5556: Pouvoir reforwarder un mail envoy?\195?\169 en plus de pouvoir le visualiser
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandReplyItem.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandReplyItem.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx
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/ReplyFormUIModel.java
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/content/demande/replies/DemandRepliesUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java 2014-08-04 09:42:59 UTC (rev 460)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java 2014-08-04 14:03:00 UTC (rev 461)
@@ -86,14 +86,6 @@
private final static Log log = LogFactory.getLog(DemandRepliesUIHandler.class);
-// @Override
-// public void beforeInit(DemandRepliesUI ui) {
-// super.beforeInit(ui);
-//
-// DemandeUIModel currentEmail = getContext().getCurrentEmail();
-// this.ui.setContextValue(currentEmail);
-// }
-
@Override
public void afterInit(DemandRepliesUI ui) {
super.afterInit(ui);
@@ -197,7 +189,9 @@
// TODO echatellier 20140804 : c'est très technique et très bas niveau, ca devrait se trouver dans les services
Message message = new MimeMessage(null, new ByteArrayInputStream(reply.getEmailSource().getBytes()));
ReplyFormUIModel replyModel = dialogContent.getModel();
+ replyModel.setOriginalDemand(ui.getModel());
replyModel.setReadonly(true);
+ replyModel.setReadSentDate(reply.getSentDate());
replyModel.setSubject(message.getSubject());
replyModel.setTo(message.getRecipients(RecipientType.TO)[0].toString());
replyModel.setFrom(message.getFrom()[0].toString());
@@ -219,14 +213,46 @@
openFrame(dialogContent, t("faxtomail.reply.title", getModel().getSubject()), new Dimension(800, 600));
} catch (Exception e) {
- getContext().getErrorHelper().showErrorDialog(t("faxtomail.demandReplies.error"));
+ getContext().getErrorHelper().showErrorDialog(t("faxtomail.demandReplies.error"), e);
}
-// FaxToMailUIContext context = getContext();
-// context.setCurrentEmails(demande);
-// context.getActionEngine().runAction(new ShowDemandeAction(context.getMainUI().getHandler()));
}
+
+ public void openForward(Reply reply) {
+ closeEditor();
+ try {
+ ReplyFormUI dialogContent = new ReplyFormUI(ui);
+ // TODO echatellier 20140804 : c'est très technique et très bas niveau, ca devrait se trouver dans les services
+ Message message = new MimeMessage(null, new ByteArrayInputStream(reply.getEmailSource().getBytes()));
+ ReplyFormUIModel replyModel = dialogContent.getModel();
+ replyModel.setOriginalDemand(ui.getModel());
+ replyModel.setReadSentDate(reply.getSentDate());
+ replyModel.setSubject(t("faxtomail.reply.forwardsubject", message.getSubject()));
+
+ if (message.isMimeType("multipart/*")) {
+ decomposeMultipartEmail(message, replyModel, reply.getTopiaId());
+
+ } else {
+ String content = IOUtils.toString(message.getInputStream());
+ replyModel.setMessage(content);
+ }
+
+ // XXX: à verifier pour le format, et si on quote ou pas encore le forward
+ String quotedReply = t("faxtomail.reply.message",
+ decorate(reply.getSentDate()),
+ message.getRecipients(RecipientType.TO)[0].toString(),
+ replyModel.getMessage().replaceAll("\n", "\n> "));
+ replyModel.setMessage(quotedReply);
+
+ openFrame(dialogContent, t("faxtomail.reply.forward", message.getSubject()), new Dimension(800, 600));
+
+ } catch (Exception e) {
+ getContext().getErrorHelper().showErrorDialog(t("faxtomail.demandReplies.error"), e);
+ }
+
+ }
+
/**
* Decompose a multipart part.
* - sets the email content if the part contains a text bodypart
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandReplyItem.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandReplyItem.css 2014-08-04 09:42:59 UTC (rev 460)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandReplyItem.css 2014-08-04 14:03:00 UTC (rev 461)
@@ -39,6 +39,11 @@
floatable: false;
}
+#openForwardButton {
+ actionIcon: "transmit";
+ toolTipText: "faxtomail.demandReplies.action.forward.tip";
+}
+
#openReplyButton {
actionIcon: "open";
toolTipText: "faxtomail.demandReplies.action.open.tip";
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandReplyItem.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandReplyItem.jaxx 2014-08-04 09:42:59 UTC (rev 460)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandReplyItem.jaxx 2014-08-04 14:03:00 UTC (rev 461)
@@ -46,6 +46,8 @@
<JLabel id='replySubjectLabel' constraints='BorderLayout.CENTER'/>
<JToolBar id='toolbar' constraints='BorderLayout.EAST'>
+ <JButton id='openForwardButton'
+ onActionPerformed='handler.openForward(reply)'/>
<JButton id='openReplyButton'
onActionPerformed='handler.openReply(reply)'/>
</JToolBar>
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css 2014-08-04 09:42:59 UTC (rev 460)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css 2014-08-04 14:03:00 UTC (rev 461)
@@ -119,6 +119,12 @@
selected: { String.valueOf(model.isReadonly()) };
}
+#forwardButton {
+ actionIcon: transmit;
+ text: "faxtomail.reply.action.forward";
+ toolTipText: "faxtomail.reply.action.forward.tip";
+}
+
#closeButton {
actionIcon: cancel;
text: "faxtomail.reply.action.close";
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx 2014-08-04 09:42:59 UTC (rev 460)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx 2014-08-04 14:03:00 UTC (rev 461)
@@ -162,6 +162,7 @@
constraints='BorderLayout.SOUTH'>
<JPanel constraints='"true"'
layout='{new GridLayout(1, 0)}'>
+ <JButton id='forwardButton' onActionPerformed='handler.forward()'/>
<JButton id='closeButton' onActionPerformed='handler.cancel()'/>
</JPanel>
<JPanel constraints='"false"'
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-04 09:42:59 UTC (rev 460)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java 2014-08-04 14:03:00 UTC (rev 461)
@@ -27,18 +27,23 @@
import static org.nuiton.i18n.I18n.t;
import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl;
-
import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl;
import com.franciaflex.faxtomail.services.service.EmailService;
import com.google.common.base.Strings;
+
import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.validator.bean.simple.SimpleBeanValidator;
import java.awt.Component;
+import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
@@ -46,6 +51,14 @@
import java.util.Collection;
import java.util.List;
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.mail.BodyPart;
+import javax.mail.Message;
+import javax.mail.Part;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import javax.mail.internet.MimeMessage.RecipientType;
import javax.swing.ComboBoxEditor;
import javax.swing.JComboBox;
import javax.swing.JComponent;
@@ -63,6 +76,7 @@
import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.persistence.entities.AttachmentFile;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.Reply;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
import com.franciaflex.faxtomail.ui.swing.util.Cancelable;
@@ -400,4 +414,42 @@
editorComponent.removeActionListener(l);
}
}
+
+ /**
+ * Close current dialog ui, and reopen a new one for transfering repons to new recipient.
+ */
+ public void forward() {
+ closeFrame();
+
+ try {
+ // display a new ui with a copy of original ui model
+ ReplyFormUI dialogContent = new ReplyFormUI(ui);
+ ReplyFormUIModel replyModel = dialogContent.getModel();
+ replyModel.fromModel(ui.getModel());
+
+ // XXX: à verifier pour le format, et si on quote ou pas encore le forward
+ String quotedReply = t("faxtomail.reply.message",
+ decorate(replyModel.getReadSentDate()),
+ replyModel.getFrom(),
+ replyModel.getMessage().replaceAll("\n", "\n> "));
+ replyModel.setMessage(quotedReply);
+ replyModel.setSubject(t("faxtomail.reply.forwardsubject", replyModel.getSubject()));
+
+ // clear fields that need to be filled by hand
+ replyModel.setReadonly(false);
+ replyModel.setReadSentDate(null);
+ replyModel.setTo(null);
+ replyModel.setCc(null);
+ replyModel.setCci(null);
+
+ openFrame(dialogContent, t("faxtomail.reply.forward", getModel().getSubject()), new Dimension(800, 600));
+
+ } catch (Exception ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't display forward frame", ex);
+ }
+ getContext().getErrorHelper().showErrorDialog(t("faxtomail.demandReplies.error"), ex);
+ }
+
+ }
}
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-04 09:42:59 UTC (rev 460)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java 2014-08-04 14:03:00 UTC (rev 461)
@@ -24,18 +24,21 @@
* #L%
*/
-import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
-import com.google.common.base.Preconditions;
+import java.io.File;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.beans.AbstractSerializableBean;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
-import java.io.File;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+import com.google.common.base.Preconditions;
/**
* @author Kevin Morin (Code Lutin)
@@ -53,12 +56,13 @@
public static final String PROPERTY_MESSAGE = "message";
public static final String PROPERTY_ORIGINAL_DEMAND = "originalDemand";
public static final String PROPERTY_ATTACHMENT = "attachment";
- public static final String PROPERTY_READONLY = "readonly";
public static final String PROPERTY_MAX_ATTACHMENT_LENGTH = "maxAttachmentLength";
public static final String PROPERTY_TOTAL_ATTACHMENT_LENGTH = "totalAttachmentLength";
public static final String PROPERTY_VALID = "valid";
public static final String PROPERTY_SENDER_ALLOWED_DOMAINS = "senderAllowedDomains";
public static final String PROPERTY_SENDER_ALLOWED_ADDRESSES = "senderAllowedAddresses";
+ public static final String PROPERTY_READONLY = "readonly";
+ public static final String PROPERTY_READ_SENT_DATE = "readSentDate";
protected String to;
protected String cc;
@@ -70,7 +74,13 @@
protected long maxAttachmentLength = 0;
protected long totalAttachmentLength = 0;
protected boolean valid = true;
+
+ /** Flag pour marquer les champs non editables dans le cas d'une lecture d'une réponse déjà envoyée. */
protected boolean readonly = false;
+
+ /** Date d'envoi d'une réponse ouverte en lecture seule (peut être {@code null}). */
+ protected Date readSentDate;
+
protected List<String> senderAllowedDomains;
protected List<String> senderAllowedAddresses;
@@ -79,6 +89,12 @@
protected File lastVisitedDirectory = FileUtils.getUserDirectory();
+ protected Binder<ReplyFormUIModel, ReplyFormUIModel> copyBinder = BinderFactory.newBinder(ReplyFormUIModel.class);
+
+ public void fromModel(ReplyFormUIModel other) {
+ copyBinder.copyExcluding(other, this);
+ }
+
public String getTo() {
return to;
}
@@ -164,6 +180,14 @@
setTotalAttachmentLength(totalAttachmentLength - attachment.getLength());
}
+
+ public void setAttachments(Set<ReplyAttachmentModel> attachments) {
+ this.attachments = attachments;
+ if (availableAttachments != null) {
+ availableAttachments.removeAll(attachments);
+ }
+ firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachments());
+ }
public Set<ReplyAttachmentModel> getAvailableAttachments() {
return availableAttachments;
@@ -195,6 +219,16 @@
firePropertyChange(PROPERTY_READONLY, oldValue, readonly);
}
+ public void setReadSentDate(Date readSentDate) {
+ Object oldValue = this.readSentDate;
+ this.readSentDate = readSentDate;
+ firePropertyChange(PROPERTY_READ_SENT_DATE, oldValue, readSentDate);
+ }
+
+ public Date getReadSentDate() {
+ return readSentDate;
+ }
+
public long getMaxAttachmentLength() {
return maxAttachmentLength / 1024;
}
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-04 09:42:59 UTC (rev 460)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-04 14:03:00 UTC (rev 461)
@@ -67,6 +67,7 @@
faxtomail.demandGroup.action.tip=Éléments groupés avec l'élément courant
faxtomail.demandGroup.text=Groupe (%s)
faxtomail.demandGroup.title=Groupe
+faxtomail.demandReplies.action.forward.tip=
faxtomail.demandReplies.action.open.tip=Visualiser la réponse
faxtomail.demandReplies.action.tip=Réponses envoyées
faxtomail.demandReplies.empty=Aucune réponse envoyée
@@ -232,11 +233,15 @@
faxtomail.reply.action.cancel.tip=Annuler et fermer la popup
faxtomail.reply.action.close=Fermer
faxtomail.reply.action.close.tip=Fermer
+faxtomail.reply.action.forward=Transférer
+faxtomail.reply.action.forward.tip=Retransférer la réponse vers une autre adresse email
faxtomail.reply.action.validate=Envoyer
faxtomail.reply.action.validate.tip=Envoyer la réponse au mail
faxtomail.reply.attachment.label=%1$s (%2$s ko)
faxtomail.reply.attachments.add.label=Ajouter des pièces jointes
faxtomail.reply.attachments.title=Pièces-jointes (%1$s / %2$s ko autorisés)
+faxtomail.reply.forward=Tranfer de la réponse \: %s
+faxtomail.reply.forwardsubject=Tr\: %s
faxtomail.reply.label.cc=Copie \:
faxtomail.reply.label.cci=Copie cachée \:
faxtomail.reply.label.from=De \:
1
0
04 Aug '14
Author: echatellier
Date: 2014-08-04 11:42:59 +0200 (Mon, 04 Aug 2014)
New Revision: 460
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/460
Log:
fixes #5557: Pouvoir lors de l?\226?\128?\153envoi d?\226?\128?\153un mail mettre un Cc, Cci
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.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/content/demande/replies/DemandRepliesUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.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-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-01 16:25:18 UTC (rev 459)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-04 09:42:59 UTC (rev 460)
@@ -705,7 +705,26 @@
return result;
}
- public Email reply(String from, String to, String subject,
+ /**
+ * Envoi une réponse et retourne l'email.
+ *
+ * FIXME echatellier 20140804 : pourquoi retourner l'email ? la réponse ne devrait absolument pas modifier l'email
+ *
+ * @param from from
+ * @param to to
+ * @param cc cc
+ * @param bcc bcc
+ * @param subject subject
+ * @param content content
+ * @param attachments attachement
+ * @param originalEmailId mail topia id
+ * @param user user to add new history entry for user
+ * @return modified email
+ * @throws EmailException if message can't be sent
+ * @throws MessagingException if message can't be sent
+ * @throws IOException if message can't be sent
+ */
+ public Email reply(String from, String to, String cc, String bcc, String subject,
String content, Collection<AttachmentFile> attachments,
String originalEmailId, FaxToMailUser user) throws EmailException, MessagingException, IOException {
@@ -726,6 +745,12 @@
message.setCharset(EmailConstants.UTF_8);
message.setFrom(from);
message.addTo(to);
+ if (StringUtils.isNotBlank(cc)) {
+ message.addCc(cc);
+ }
+ if (StringUtils.isNotBlank(bcc)) {
+ message.addBcc(bcc);
+ }
message.setSubject(subject);
message.setMsg(content);
@@ -736,7 +761,7 @@
message.attach(source, attachmentFile.getFilename(), null);
}
- String emailId = message.send();
+ message.send();
ReplyTopiaDao replyTopiaDao = getPersistenceContext().getReplyDao();
Date now = new Date();
@@ -747,6 +772,7 @@
String headerLine = headerLines.nextElement();
emailSource.append(headerLine).append("\n");
}
+ // TODO echatellier 20140804 : est volontaire et sûr de stocker l'email sous forme textuelle ?
emailSource.append("\n").append(IOUtils.toString(message.getMimeMessage().getInputStream()));
Reply reply = replyTopiaDao.create(Reply.PROPERTY_EMAIL_SOURCE, emailSource.toString(),
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-01 16:25:18 UTC (rev 459)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-08-04 09:42:59 UTC (rev 460)
@@ -71,6 +71,8 @@
});
Email email = emailService.reply(model.getFrom(),
model.getTo(),
+ model.getCc(),
+ model.getCci(),
model.getSubject(),
model.getMessage(),
attachmentFiles,
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java 2014-08-01 16:25:18 UTC (rev 459)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java 2014-08-04 09:42:59 UTC (rev 460)
@@ -39,6 +39,7 @@
import javax.mail.Message;
import javax.mail.Part;
import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;
import javax.swing.AbstractCellEditor;
import javax.swing.JComponent;
@@ -56,10 +57,12 @@
import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl;
import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyAttachmentModel;
+
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
@@ -191,12 +194,19 @@
try {
ReplyFormUI dialogContent = new ReplyFormUI(ui);
+ // TODO echatellier 20140804 : c'est très technique et très bas niveau, ca devrait se trouver dans les services
Message message = new MimeMessage(null, new ByteArrayInputStream(reply.getEmailSource().getBytes()));
ReplyFormUIModel replyModel = dialogContent.getModel();
replyModel.setReadonly(true);
replyModel.setSubject(message.getSubject());
- replyModel.setTo(message.getAllRecipients()[0].toString());
+ replyModel.setTo(message.getRecipients(RecipientType.TO)[0].toString());
replyModel.setFrom(message.getFrom()[0].toString());
+ if (ArrayUtils.isNotEmpty(message.getRecipients(RecipientType.CC))) {
+ replyModel.setCc(message.getRecipients(RecipientType.CC)[0].toString());
+ }
+ if (ArrayUtils.isNotEmpty(message.getRecipients(RecipientType.BCC))) {
+ replyModel.setCci(message.getRecipients(RecipientType.BCC)[0].toString());
+ }
if (message.isMimeType("multipart/*")) {
decomposeMultipartEmail(message, replyModel, reply.getTopiaId());
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css 2014-08-01 16:25:18 UTC (rev 459)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css 2014-08-04 09:42:59 UTC (rev 460)
@@ -48,6 +48,24 @@
editable: { !model.isReadonly() };
}
+#ccLabel {
+ text: "faxtomail.reply.label.cc";
+}
+
+#ccField {
+ text: { model.getCc() };
+ editable: { !model.isReadonly() };
+}
+
+#cciLabel {
+ text: "faxtomail.reply.label.cci";
+}
+
+#cciField {
+ text: { model.getCci() };
+ editable: { !model.isReadonly() };
+}
+
#subjectLabel {
text: "faxtomail.reply.label.subject";
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx 2014-08-01 16:25:18 UTC (rev 459)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx 2014-08-04 09:42:59 UTC (rev 460)
@@ -92,6 +92,24 @@
</row>
<row>
<cell>
+ <JLabel id="ccLabel"/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id="ccField"
+ onKeyReleased='handler.setText(event, "cc")'/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id="cciLabel"/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id="cciField"
+ onKeyReleased='handler.setText(event, "cci")'/>
+ </cell>
+ </row>
+ <row>
+ <cell>
<JLabel id="subjectLabel"/>
</cell>
<cell weightx='1'>
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-01 16:25:18 UTC (rev 459)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java 2014-08-04 09:42:59 UTC (rev 460)
@@ -46,6 +46,8 @@
private static final Log log = LogFactory.getLog(ReplyFormUIModel.class);
public static final String PROPERTY_TO = "to";
+ public static final String PROPERTY_CC = "cc";
+ public static final String PROPERTY_CCI = "cci";
public static final String PROPERTY_FROM = "from";
public static final String PROPERTY_SUBJECT = "subject";
public static final String PROPERTY_MESSAGE = "message";
@@ -59,6 +61,8 @@
public static final String PROPERTY_SENDER_ALLOWED_ADDRESSES = "senderAllowedAddresses";
protected String to;
+ protected String cc;
+ protected String cci;
protected String from;
protected String subject;
protected String message;
@@ -85,6 +89,25 @@
firePropertyChange(PROPERTY_TO, oldValue, to);
}
+ public String getCc() {
+ return cc;
+ }
+ public void setCc(String cc) {
+ Object oldValue = this.cc;
+ this.cc = cc;
+ firePropertyChange(PROPERTY_CC, oldValue, cc);
+ }
+
+ public String getCci() {
+ return cci;
+ }
+
+ public void setCci(String cci) {
+ Object oldValue = this.cci;
+ this.cci = cci;
+ firePropertyChange(PROPERTY_CCI, oldValue, cci);
+ }
+
public String getFrom() {
return from;
}
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-01 16:25:18 UTC (rev 459)
+++ trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel-error-validation.xml 2014-08-04 09:42:59 UTC (rev 460)
@@ -37,6 +37,18 @@
<message>faxtomail.validator.error.reply.to.email</message>
</field-validator>
</field>
+
+ <field name="cc">
+ <field-validator type="email" short-circuit="true">
+ <message>faxtomail.validator.error.reply.cc.email</message>
+ </field-validator>
+ </field>
+
+ <field name="cci">
+ <field-validator type="email" short-circuit="true">
+ <message>faxtomail.validator.error.reply.cci.email</message>
+ </field-validator>
+ </field>
<field name="from">
<field-validator type="fieldexpression" short-circuit="true">
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-01 16:25:18 UTC (rev 459)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-04 09:42:59 UTC (rev 460)
@@ -237,6 +237,8 @@
faxtomail.reply.attachment.label=%1$s (%2$s ko)
faxtomail.reply.attachments.add.label=Ajouter des pièces jointes
faxtomail.reply.attachments.title=Pièces-jointes (%1$s / %2$s ko autorisés)
+faxtomail.reply.label.cc=Copie \:
+faxtomail.reply.label.cci=Copie cachée \:
faxtomail.reply.label.from=De \:
faxtomail.reply.label.subject=Objet \:
faxtomail.reply.label.to=À \:
@@ -273,12 +275,14 @@
faxtomail.validator.error.email.priority.required=Priorité requise
faxtomail.validator.error.email.projectReference.required=Référence chantier requise
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.invalidDomain=
faxtomail.validator.error.reply.from.required=
faxtomail.validator.error.reply.subject.required=
-faxtomail.validator.error.reply.to.email=
-faxtomail.validator.error.reply.to.required=
-faxtomail.validator.error.reply.totalAttachmentLength.required=
+faxtomail.validator.error.reply.to.email=Le champ 'A\:' doit être une adresse email valide \!
+faxtomail.validator.error.reply.to.required=Le champ 'A\:' est requis \!
+faxtomail.validator.error.reply.totalAttachmentLength.required=La taille totale des pièces jointes dépasse la limite acceptée
jaxx.application.error.cannot.mail=
jaxx.application.error.cannot.print=
jaxx.application.error.desktop.not.supported=
1
0
r459 - in trunk: faxtomail-persistence/src/main/java/com/franciaflex/faxtomail faxtomail-persistence/src/main/resources/i18n faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search faxtomail-ui-swing/src/main/resources/i18n
by echatellier@users.forge.codelutin.com 01 Aug '14
by echatellier@users.forge.codelutin.com 01 Aug '14
01 Aug '14
Author: echatellier
Date: 2014-08-01 18:25:18 +0200 (Fri, 01 Aug 2014)
New Revision: 459
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/459
Log:
fixes #5558: Pouvoir configurer le nombre de mails lors de la pagination (dans l'UI swing)
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java
trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx
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/DemandeListUIModel.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/search/SearchToGroupUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.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/FaxToMailConfiguration.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-08-01 16:25:18 UTC (rev 459)
@@ -405,6 +405,14 @@
return applicationConfig.getOptionAsColor(FaxToMailConfigurationOption.COLOR_SELECTED_ROW.getKey());
}
+ public int getResultPerPage() {
+ return applicationConfig.getOptionAsInt(FaxToMailConfigurationOption.RESULT_PER_PAGE.getKey());
+ }
+
+ public void setResultPerPage(int resultPerPage) {
+ applicationConfig.setOption(FaxToMailConfigurationOption.RESULT_PER_PAGE.getKey(), String.valueOf(resultPerPage));
+ }
+
@Override
public KeyStroke getShortcutClosePopup() {
return applicationConfig.getOptionAsKeyStroke(FaxToMailConfigurationOption.SHORTCUT_CLOSE_POPUP.getKey());
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-08-01 16:25:18 UTC (rev 459)
@@ -297,6 +297,13 @@
n("faxtomail.config.option.ui.dateFormat.description"),
"dd/MM/yyyy",
String.class
+ ),
+
+ RESULT_PER_PAGE(
+ "faxtomail.ui.resultPerPage",
+ n("faxtomail.config.option.ui.resultPerPage.description"),
+ "50",
+ Integer.class
);
/** Configuration key. */
Modified: trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties
===================================================================
--- trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties 2014-08-01 16:25:18 UTC (rev 459)
@@ -18,6 +18,7 @@
faxtomail.config.option.ui.color.selectedRow.description=
faxtomail.config.option.ui.config.file.description=
faxtomail.config.option.ui.dateFormat.description=
+faxtomail.config.option.ui.resultPerPage.description=
faxtomail.config.option.ui.shortcut.closePopup.description=
faxtomail.config.option.ui.showNumberEditorButton.description=
faxtomail.config.option.version.description=
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-08-01 16:25:18 UTC (rev 459)
@@ -425,7 +425,7 @@
}
/**
- * Retourne l'utilsateur connecté sur la session utilsateur (ou a defaut un utilisateur de test).
+ * Retourne l'utilsateur connecté sur la session utilisateur (ou a defaut un utilisateur de test).
*
* @return trigramme
*/
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-08-01 16:25:18 UTC (rev 459)
@@ -121,6 +121,10 @@
text: { String.valueOf(model.getPaginationResult().getCount()) };
}
+#resultsPerPageLabel {
+ text: "faxtomail.demandeList.resultPerPage";
+}
+
#pageNumberLabel {
text: "faxtomail.demandeList.pages";
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-08-01 16:25:18 UTC (rev 459)
@@ -97,6 +97,10 @@
<JLabel id="totalDemandCountLabel" />
<JLabel id="totalDemandCountValue" />
+ <JLabel styleClass="horizontal-separator" />
+ <JLabel id="resultsPerPageLabel" />
+ <JComboBox id="resultPerPageCombo" genericType="Integer" />
+
<JLabel styleClass="horizontal-separator"/>
<JLabel id="pageNumberLabel" />
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-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-01 16:25:18 UTC (rev 459)
@@ -27,9 +27,12 @@
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.io.ObjectInputStream.GetField;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -39,6 +42,7 @@
import java.util.List;
import java.util.Map;
+import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import javax.swing.JPopupMenu;
import javax.swing.JTable;
@@ -54,10 +58,6 @@
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
-import com.franciaflex.faxtomail.ui.swing.actions.PrintOnDefaultPrinterAction;
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Multimap;
-
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.validator.swing.SwingValidator;
@@ -87,6 +87,7 @@
import com.franciaflex.faxtomail.ui.swing.actions.ArchiveFromListAction;
import com.franciaflex.faxtomail.ui.swing.actions.ComputeQuantitiesByRangeAction;
import com.franciaflex.faxtomail.ui.swing.actions.LoadFolderEmailsAction;
+import com.franciaflex.faxtomail.ui.swing.actions.PrintOnDefaultPrinterAction;
import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeFromListAction;
import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI;
import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel;
@@ -94,6 +95,8 @@
import com.franciaflex.faxtomail.ui.swing.util.CloseableUI;
import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode;
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Multimap;
/**
* Handler of UI {@link com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler}.
@@ -143,8 +146,6 @@
this.ui.setContextValue(model);
}
- private boolean loading = false;
-
@Override
public void afterInit(DemandeListUI ui) {
@@ -317,6 +318,18 @@
}
});
+ // int combo box for result per page
+ ui.getResultPerPageCombo().setModel(new DefaultComboBoxModel<Integer>(new Integer[] {10, 20, 30, 40, 50}));
+ int resultPerPage = getConfig().getResultPerPage();
+ ui.getModel().setResultPerPage(resultPerPage);
+ ui.getResultPerPageCombo().setSelectedItem(resultPerPage);
+ ui.getResultPerPageCombo().addItemListener(new ItemListener() {
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+ updateResultPerPage(e);
+ }
+ });
+
MailFolder currentMailFolder = getContext().getCurrentMailFolder();
DemandeUIModel currentEmail = getContext().getCurrentEmail();
@@ -327,24 +340,36 @@
DefaultMutableTreeNode node = nodesByFolder.get(currentMailFolder);
navigationTree.setSelectionPath(new TreePath(node.getPath()));
}
-
}
public void goToNextPage() {
getModel().setPaginationParameter(getModel().getPaginationResult().getNextPage());
- LoadFolderEmailsAction loadFolderEmailsAction =
- getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this,
- LoadFolderEmailsAction.class);
- getContext().getActionEngine().runAction(loadFolderEmailsAction);
+ runListAction();
}
public void goToPreviousPage() {
getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage());
- LoadFolderEmailsAction loadFolderEmailsAction =
- getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this,
- LoadFolderEmailsAction.class);
- getContext().getActionEngine().runAction(loadFolderEmailsAction);
+ runListAction();
}
+
+ public void updateResultPerPage(ItemEvent event) {
+ //FIXME echatellier 20140801 this produce transasction exception
+ int resultPerPage = (Integer)event.getItem();
+ getModel().setResultPerPage(resultPerPage);
+ getConfig().setResultPerPage(resultPerPage);
+ getConfig().save();
+ getModel().resetPaginationParameter();
+ runListAction();
+ }
+
+ protected void runListAction() {
+ if (getModel().getSelectedFolder() != null) { // can be when update result per page
+ LoadFolderEmailsAction loadFolderEmailsAction =
+ getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this,
+ LoadFolderEmailsAction.class);
+ getContext().getActionEngine().runAction(loadFolderEmailsAction);
+ }
+ }
@Override
public void initDemandeTable(final JXTable table, boolean sortable) {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-08-01 16:25:18 UTC (rev 459)
@@ -53,13 +53,16 @@
public static final String PROPERTY_ARCHIVE_ENABLED = "archiveEnabled";
public static final String PROPERTY_COMPUTE_QUANTITIES_BY_RANGE_ENABLED = "computeQuantitiesByRangeEnabled";
public static final String PROPERTY_NEW_DEMAND_ENABLED = "newDemandEnabled";
+ public static final String PROPERTY_RESULT_PER_PAGE = "resultPerPage";
protected List<MailFolder> folders;
protected List<DemandeUIModel> emails;
- protected PaginationParameter paginationParameter = PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, false);
+ protected int resultPerPage = 50;
+ protected PaginationParameter paginationParameter = PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false);
+
protected PaginationResult<Email> paginationResult = PaginationResult.of(null, 0, paginationParameter);
protected List<DemandeUIModel> filteredEmails;
@@ -113,7 +116,7 @@
}
public void resetPaginationParameter() {
- setPaginationParameter(PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, false));
+ setPaginationParameter(PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false));
}
public void setPaginationResult(PaginationResult<Email> paginationResult) {
@@ -254,4 +257,14 @@
this.savNb = savNb;
firePropertyChange(PROPERTY_SAV_NB, oldValue, savNb);
}
+
+ public void setResultPerPage(int resultPerPage) {
+ int oldValue = this.resultPerPage;
+ this.resultPerPage = resultPerPage;
+ firePropertyChange(PROPERTY_RESULT_PER_PAGE, oldValue, resultPerPage);
+ }
+
+ public int getResultPerPage() {
+ return resultPerPage;
+ }
}
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-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-08-01 16:25:18 UTC (rev 459)
@@ -40,8 +40,10 @@
import com.franciaflex.faxtomail.ui.swing.content.transmit.MailFolderChooserUI;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
import com.franciaflex.faxtomail.ui.swing.util.CloseableUI;
+
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.validator.swing.SwingValidator;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler;
@@ -53,6 +55,7 @@
import org.nuiton.jaxx.application.swing.tab.TabHandler;
import javax.swing.*;
+
import java.awt.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css 2014-08-01 16:25:18 UTC (rev 459)
@@ -296,6 +296,10 @@
text: { String.valueOf(model.getPaginationResult().getCount()) };
}
+#resultsPerPageLabel {
+ text: "faxtomail.demandeList.resultPerPage";
+}
+
#pageNumberLabel {
text: "faxtomail.demandeList.pages";
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx 2014-08-01 16:25:18 UTC (rev 459)
@@ -347,6 +347,10 @@
<JLabel id="totalDemandCountLabel" />
<JLabel id="totalDemandCountValue" />
+ <JLabel styleClass="horizontal-separator" />
+ <JLabel id="resultsPerPageLabel" />
+ <JComboBox id="resultPerPageCombo" genericType="Integer" />
+
<JLabel styleClass="horizontal-separator"/>
<JLabel id="pageNumberLabel" />
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-01 16:25:18 UTC (rev 459)
@@ -30,6 +30,7 @@
import com.franciaflex.faxtomail.persistence.entities.MailField;
import com.franciaflex.faxtomail.services.service.ReferentielService;
import com.franciaflex.faxtomail.ui.swing.actions.GroupAction;
+import com.franciaflex.faxtomail.ui.swing.actions.SearchAction;
import com.franciaflex.faxtomail.ui.swing.actions.SearchToGroupAction;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler;
@@ -50,6 +51,8 @@
import javax.swing.event.ListSelectionListener;
import java.awt.*;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
@@ -219,40 +222,47 @@
};
dataTable.addHighlighter(new ColorHighlighter(rowAlreadyInGroupPredicate, null, Color.GRAY, Color.GRAY, Color.WHITE));
+ // int combo box for result per page
+ ui.getResultPerPageCombo().setModel(new DefaultComboBoxModel<Integer>(new Integer[] {10, 20, 30, 40, 50}));
+ int resultPerPage = getConfig().getResultPerPage();
+ ui.getModel().setResultPerPage(resultPerPage);
+ ui.getResultPerPageCombo().setSelectedItem(resultPerPage);
+ ui.getResultPerPageCombo().addItemListener(new ItemListener() {
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+ updateResultPerPage(e);
+ }
+ });
}
public void searchDemandes() {
getModel().resetPaginationParameter();
- try {
- SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class);
- searchAction.doAction();
-
- } catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("error while searching", e);
- }
- getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error"));
- }
+ runSearchAction();
}
public void goToNextPage() {
getModel().setPaginationParameter(getModel().getPaginationResult().getNextPage());
- try {
- SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class);
- searchAction.doAction();
-
- } catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("error while searching", e);
- }
- getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error"));
- }
+ runSearchAction();
}
public void goToPreviousPage() {
getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage());
+ runSearchAction();
+ }
+
+ public void updateResultPerPage(ItemEvent event) {
+ getContext().createNewTransaction();
+ int resultPerPage = (Integer)event.getItem();
+ getConfig().setResultPerPage(resultPerPage);
+ getConfig().save();
+ getModel().setResultPerPage(resultPerPage);
+ getModel().resetPaginationParameter();
+ runSearchAction();
+ }
+
+ protected void runSearchAction() {
try {
- SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class);
+ SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class);
searchAction.doAction();
} catch (Exception e) {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-08-01 16:25:18 UTC (rev 459)
@@ -322,6 +322,10 @@
text: { String.valueOf(model.getPaginationResult().getCount()) };
}
+#resultsPerPageLabel {
+ text: "faxtomail.demandeList.resultPerPage";
+}
+
#pageNumberLabel {
text: "faxtomail.demandeList.pages";
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx 2014-08-01 16:25:18 UTC (rev 459)
@@ -367,11 +367,16 @@
<JLabel id="totalDemandCountLabel" />
<JLabel id="totalDemandCountValue" />
+ <JLabel styleClass="horizontal-separator" />
+ <JLabel id="resultsPerPageLabel" />
+ <JComboBox id="resultPerPageCombo" genericType="Integer" />
+
<JLabel styleClass="horizontal-separator"/>
<JLabel id="pageNumberLabel" />
<JButton id="previousPageButton"
onActionPerformed="handler.goToPreviousPage()"/>
+
<JLabel id="currentPageLabel" />
<JLabel styleClass="page-separator"/>
<JLabel id="totalPageNumberLabel" />
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-08-01 16:25:18 UTC (rev 459)
@@ -24,14 +24,16 @@
import static org.nuiton.i18n.I18n.t;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
+import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import javax.swing.ListSelectionModel;
@@ -96,7 +98,6 @@
initUI(ui);
- long before = System.currentTimeMillis();
final ReferentielService referentielService = getContext().getReferentielService();
// this loading take 1,5 seconds
@@ -182,41 +183,47 @@
getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error"));
}
}
- long after = System.currentTimeMillis();
- System.out.println("Time = " + (after - before) + " ms");
+
+ // int combo box for result per page
+ ui.getResultPerPageCombo().setModel(new DefaultComboBoxModel<Integer>(new Integer[] {10, 20, 30, 40, 50}));
+ int resultPerPage = getConfig().getResultPerPage();
+ ui.getModel().setResultPerPage(resultPerPage);
+ ui.getResultPerPageCombo().setSelectedItem(resultPerPage);
+ ui.getResultPerPageCombo().addItemListener(new ItemListener() {
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+ updateResultPerPage(e);
+ }
+ });
}
public void searchDemandes() {
getContext().createNewTransaction();
getModel().resetPaginationParameter();
- try {
- SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class);
- searchAction.doAction();
-
- } catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("error while searching", e);
- }
- getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error"));
- }
+ runSearchAction();
}
public void goToNextPage() {
getModel().setPaginationParameter(getModel().getPaginationResult().getNextPage());
- try {
- SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class);
- searchAction.doAction();
-
- } catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("error while searching", e);
- }
- getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error"));
- }
+ runSearchAction();
}
public void goToPreviousPage() {
getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage());
+ runSearchAction();
+ }
+
+ public void updateResultPerPage(ItemEvent event) {
+ getContext().createNewTransaction();
+ int resultPerPage = (Integer)event.getItem();
+ getConfig().setResultPerPage(resultPerPage);
+ getConfig().save();
+ getModel().setResultPerPage(resultPerPage);
+ getModel().resetPaginationParameter();
+ runSearchAction();
+ }
+
+ protected void runSearchAction() {
try {
SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class);
searchAction.doAction();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-08-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-08-01 16:25:18 UTC (rev 459)
@@ -56,10 +56,12 @@
public static final String PROPERTY_GROUP_ENABLED = "groupEnabled";
public static final String PROPERTY_PAGINATION_PARAMETER = "paginationParameter";
public static final String PROPERTY_PAGINATION_RESULT = "paginationResult";
+ public static final String PROPERTY_RESULT_PER_PAGE = "resultPerPage";
protected final EmailFilter editObject = new EmailFilter();
- protected PaginationParameter paginationParameter = PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, false);
+ protected int resultPerPage = 50;
+ protected PaginationParameter paginationParameter = PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false);
protected PaginationResult<Email> paginationResult = PaginationResult.of(null, 0, paginationParameter);
protected List<DemandeUIModel> results;
@@ -393,6 +395,16 @@
firePropertyChanged(PROPERTY_RESULTS, null, results);
}
+ public void setResultPerPage(int resultPerPage) {
+ int oldValue = this.resultPerPage;
+ this.resultPerPage = resultPerPage;
+ firePropertyChanged(PROPERTY_RESULT_PER_PAGE, oldValue, resultPerPage);
+ }
+
+ public int getResultPerPage() {
+ return resultPerPage;
+ }
+
public void setPaginationParameter(PaginationParameter paginationParameter) {
Object oldValue = this.paginationParameter;
this.paginationParameter = paginationParameter;
@@ -404,7 +416,7 @@
}
public void resetPaginationParameter() {
- setPaginationParameter(PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, false));
+ setPaginationParameter(PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false));
}
public void setPaginationResult(PaginationResult<Email> paginationResult) {
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-01 15:47:29 UTC (rev 458)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-01 16:25:18 UTC (rev 459)
@@ -143,6 +143,7 @@
faxtomail.demandeList.pages=Pages \:
faxtomail.demandeList.pfNbLabel=Nombre de produits finis
faxtomail.demandeList.quotationNbLabel=Nombre de devis
+faxtomail.demandeList.resultPerPage=Nombre de résultat par page \:
faxtomail.demandeList.savNbLabel=Nombre de SAV
faxtomail.demandeList.table.header.attachment=PJ
faxtomail.demandeList.table.header.attachment.tip=Pièces-jointes
1
0
r458 - trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail
by echatellier@users.forge.codelutin.com 01 Aug '14
by echatellier@users.forge.codelutin.com 01 Aug '14
01 Aug '14
Author: echatellier
Date: 2014-08-01 17:47:29 +0200 (Fri, 01 Aug 2014)
New Revision: 458
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/458
Log:
Move mail check frequency to every minutes
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-08-01 08:01:57 UTC (rev 457)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-08-01 15:47:29 UTC (rev 458)
@@ -137,7 +137,7 @@
JOB_MAIL_EXPRESSION(
"faxtomail.job.mail.expression",
- "Expression cron de lancement du job Mail", "0 */5 * * * ?", String.class),
+ "Expression cron de lancement du job Mail", "0 * * * * ?", String.class),
JOB_CLIENT_EXPRESSION(
"faxtomail.job.client.expression",
1
0
r457 - trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web
by echatellier@users.forge.codelutin.com 01 Aug '14
by echatellier@users.forge.codelutin.com 01 Aug '14
01 Aug '14
Author: echatellier
Date: 2014-08-01 10:01:57 +0200 (Fri, 01 Aug 2014)
New Revision: 457
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/457
Log:
Fix scheduler stop
Modified:
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailApplicationListener.java
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailApplicationListener.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailApplicationListener.java 2014-07-31 16:44:24 UTC (rev 456)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailApplicationListener.java 2014-08-01 08:01:57 UTC (rev 457)
@@ -94,7 +94,7 @@
try {
- Scheduler scheduler = new StdSchedulerFactory().getScheduler();
+ scheduler = new StdSchedulerFactory().getScheduler();
// schedule mail job (toutes les 5 minutes)
Trigger trigger = TriggerBuilder
@@ -143,6 +143,7 @@
}
try {
+ // wait for thread to complete
scheduler.shutdown();
} catch (SchedulerException e) {
if (log.isWarnEnabled()) {
1
0
r456 - trunk/faxtomail-ui-web/src/main/webapp/js
by echatellier@users.forge.codelutin.com 31 Jul '14
by echatellier@users.forge.codelutin.com 31 Jul '14
31 Jul '14
Author: echatellier
Date: 2014-07-31 18:44:24 +0200 (Thu, 31 Jul 2014)
New Revision: 456
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/456
Log:
Fix undefined for rootFolders
Modified:
trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js
Modified: trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js
===================================================================
--- trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-07-31 16:38:29 UTC (rev 455)
+++ trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-07-31 16:44:24 UTC (rev 456)
@@ -104,6 +104,7 @@
$scope.flatMailFolders[mailFolder.topiaId] = [];
var cumulativeCount = recursiveAddMailFolder($scope.flatMailFolders[mailFolder.topiaId], mailFolder.children, mailFolder, mailFolder.name, mailFolder);
mailFolder.$cumulativeCount = cumulativeCount;
+ mailFolder.$fullPath = mailFolder.name;
});
};
$scope._updateFlatMailFolders();
1
0
r455 - in trunk: faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities faxtomail-persistence/src/main/xmi faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-service/src/main/resources/db/migration faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin
by echatellier@users.forge.codelutin.com 31 Jul '14
by echatellier@users.forge.codelutin.com 31 Jul '14
31 Jul '14
Author: echatellier
Date: 2014-07-31 18:38:29 +0200 (Thu, 31 Jul 2014)
New Revision: 455
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/455
Log:
Update user and group from ldap and remove non real user and real groups
Added:
trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_454__add_ldap_config.sql
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java
trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/LdapAction.java
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java 2014-07-31 14:19:39 UTC (rev 454)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java 2014-07-31 16:38:29 UTC (rev 455)
@@ -24,6 +24,8 @@
* #L%
*/
+import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -33,6 +35,20 @@
public abstract class AbstractFaxToMailTopiaDao<E extends TopiaEntity> extends AbstractTopiaDao<E> {
+ /**
+ * Find all entity for current table not contained in provided collection.
+ *
+ * @param others others elements
+ * @return remaining elements
+ */
+ public List<E> forNotIn(Collection<E> others) {
+ String query = "FROM " + getEntityClass().getName() + " E" +
+ " WHERE E not in (:others)";
+ Map<String, Object> args = new HashMap<>();
+ args.put("others", others);
+ return findAll(query, args);
+ }
+
public <K> List<K> find(String hql, Map<String, Object> hqlParameters, PaginationParameter pager) {
return super.find(hql, hqlParameters, pager);
}
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
===================================================================
(Binary files differ)
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java 2014-07-31 14:19:39 UTC (rev 454)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java 2014-07-31 16:38:29 UTC (rev 455)
@@ -430,11 +430,6 @@
emailAccountTopiaDao.deleteAll(emailAccountMap.values());
}
- public List<FaxToMailUser> getAllUsers() {
- FaxToMailUserTopiaDao faxToMailUserDao = getPersistenceContext().getFaxToMailUserDao();
- return faxToMailUserDao.forAll().setOrderByArguments(FaxToMailUser.PROPERTY_FIRST_NAME, FaxToMailUser.PROPERTY_LAST_NAME).findAll();
- }
-
public void saveUserFolders(Map<String, Collection<MailFolder>> userFolders) {
FaxToMailUserTopiaDao faxToMailUserTopiaDao = getPersistenceContext().getFaxToMailUserDao();
@@ -453,11 +448,6 @@
getPersistenceContext().commit();
}
- public List<FaxToMailUserGroup> getAllGroups() {
- FaxToMailUserGroupTopiaDao faxToMailUserGroupDao = getPersistenceContext().getFaxToMailUserGroupDao();
- return faxToMailUserGroupDao.forAll().setOrderByArguments(FaxToMailUserGroup.PROPERTY_COMPLETE_NAME).findAll();
- }
-
public ExtensionCommand getExtensionCommand(String extension) {
ExtensionCommandTopiaDao extensionCommandDao = getPersistenceContext().getExtensionCommandDao();
ExtensionCommand result = extensionCommandDao.findByExtension(extension);
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java 2014-07-31 14:19:39 UTC (rev 454)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java 2014-07-31 16:38:29 UTC (rev 455)
@@ -24,7 +24,10 @@
* #L%
*/
+import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
@@ -42,7 +45,6 @@
import com.franciaflex.faxtomail.services.service.ldap.AuthenticationException;
import com.unboundid.ldap.sdk.LDAPConnection;
import com.unboundid.ldap.sdk.LDAPException;
-import com.unboundid.ldap.sdk.LDAPSearchException;
import com.unboundid.ldap.sdk.SearchResult;
import com.unboundid.ldap.sdk.SearchResultEntry;
import com.unboundid.ldap.sdk.SearchScope;
@@ -52,28 +54,6 @@
private static final Log log = LogFactory.getLog(LdapService.class);
/**
- * Retourne le nombre d'utilisateur en base.
- *
- * @return user count
- */
- public long getUserCount() {
- FaxToMailUserTopiaDao faxtomailUserDao = getPersistenceContext().getFaxToMailUserDao();
- long result = faxtomailUserDao.count();
- return result;
- }
-
- /**
- * Retourne le nombre de groupe en base.
- *
- * @return group count
- */
- public long getGroupCount() {
- FaxToMailUserGroupTopiaDao faxtomailUserGroupDao = getPersistenceContext().getFaxToMailUserGroupDao();
- long result = faxtomailUserGroupDao.count();
- return result;
- }
-
- /**
* Update all user and group from ldap.
*/
public void updateLdapData() {
@@ -85,33 +65,77 @@
getApplicationConfig().getLdapUser(),
getApplicationConfig().getLdapPassword());
if (connection.isConnected()) {
- String baseDN = "OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net";
- // on recupere d'abord les organisationUnit
- SearchResult unitResult = connection.search(baseDN, SearchScope.SUB, "(objectClass=organizationalUnit)");
- List<SearchResultEntry> unitEntries = unitResult.getSearchEntries();
+
+ FaxToMailUserTopiaDao faxtomailUserDao = getPersistenceContext().getFaxToMailUserDao();
+ FaxToMailUserGroupTopiaDao faxtomailUserGroupDao = getPersistenceContext().getFaxToMailUserGroupDao();
+
+ // cache group DN > faxtomail user group instance
+ Map<String, FaxToMailUserGroup> groupCache = new HashMap<>();
+ // cache user DN > faxtomail user instance
+ Map<String, FaxToMailUser> userCache = new HashMap<>();
+
+ // get all groups
+ String groupsBaseDN = "OU=Mac-Groupe,DC=mac-groupe,DC=net";
+ String groupsFilter = "(objectCategory=CN=Group,CN=Schema,CN=Configuration,DC=mac-groupe,DC=net)";
+ SearchResult groupsResult = connection.search(groupsBaseDN, SearchScope.SUB, groupsFilter);
+ List<SearchResultEntry> groupEntries = groupsResult.getSearchEntries();
+ for (SearchResultEntry groupEntry : groupEntries) {
+ String groupDN = groupEntry.getDN();
+ String groupPath = getGroupCompleteName(groupDN);
+ String groupName = StringUtils.substringAfterLast(groupPath, "/");
+ FaxToMailUserGroup userGroup = faxtomailUserGroupDao.forNameEquals(groupName).findUniqueOrNull();
+ if (userGroup == null) {
+ userGroup = faxtomailUserGroupDao.create(
+ FaxToMailUserGroup.PROPERTY_NAME, groupName,
+ FaxToMailUserGroup.PROPERTY_COMPLETE_NAME, groupPath);
+ }
+ groupCache.put(groupDN, userGroup);
+ }
+
+ // get all users (
+ String usersBaseDN = "OU=Mac-Groupe,DC=mac-groupe,DC=net";
+ String usersFilter = "(objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=mac-groupe,DC=net)";
+ // on recupere d'abord les organisationUnit pour fractionner les requettes
+ // sinon au dela de 1000 resultats ca veux plus
+ SearchResult usersResult = connection.search(usersBaseDN, SearchScope.SUB, "(objectClass=organizationalUnit)");
+ List<SearchResultEntry> unitEntries = usersResult.getSearchEntries();
for (SearchResultEntry unitEntry : unitEntries) {
if (log.isDebugEnabled()) {
log.debug("Search for unit " + unitEntry.getDN());
}
- SearchResult userResult = connection.search(unitEntry.getDN(), SearchScope.ONE, "(objectClass=user)");
+ SearchResult userResult = connection.search(unitEntry.getDN(), SearchScope.ONE, usersFilter);
List<SearchResultEntry> userEntries = userResult.getSearchEntries();
for (SearchResultEntry userEntry : userEntries) {
String login = userEntry.getAttributeValue("sAMAccountName");
+ String userDN = userEntry.getDN();
if (login == null) {
if (log.isWarnEnabled()) {
- log.warn("Null sAMAccountName for DN " + userEntry.getDN());
+ log.warn("Null sAMAccountName for DN " + userDN);
}
} else {
login = login.toLowerCase();
- updateUserFormLdap(userEntry, login);
+ FaxToMailUser user = updateUserFormLdap(connection, userEntry, login, groupCache);
+ userCache.put(userDN, user);
}
}
}
+ // make remaining user and groups in database as 'hidden'
+ Collection<FaxToMailUser> usersToHide = faxtomailUserDao.forNotIn(userCache.values());
+ for (FaxToMailUser userToHide : usersToHide) {
+ userToHide.setHidden(true);
+ faxtomailUserDao.update(userToHide);
+ }
+ Collection<FaxToMailUserGroup> userGroupsToHide = faxtomailUserGroupDao.forNotIn(groupCache.values());
+ for (FaxToMailUserGroup userGroupToHide : userGroupsToHide) {
+ userGroupToHide.setHidden(true);
+ faxtomailUserGroupDao.update(userGroupToHide);
+ }
getPersistenceContext().commit();
}
+
} catch (LDAPException ex) {
throw new RuntimeException("Can't connect to ldap", ex);
} finally {
@@ -195,7 +219,6 @@
searchEntry = searchResult.getSearchEntries().get(0);
userDN = searchEntry.getDN();
}
- adminConnect.close();
}
if (searchEntry != null) {
@@ -207,7 +230,7 @@
if (userConnect.isConnected()) {
// update in database
- result = updateUserFormLdap(searchEntry, login);
+ result = updateUserFormLdap(adminConnect, searchEntry, login, null);
getPersistenceContext().commit();
userConnect.close();
@@ -217,6 +240,7 @@
} else {
throw new AuthenticationException("Utilisateur inconnu : " + login);
}
+ adminConnect.close();
} catch (LDAPException ex) {
if (log.isWarnEnabled()) {
@@ -257,19 +281,20 @@
if (!searchResult.getSearchEntries().isEmpty()) {
searchEntry = searchResult.getSearchEntries().get(0);
}
- adminConnect.close();
+
} else {
throw new AuthenticationException("Utilisateur inconnu : " + login);
}
if( searchEntry != null ) {
// update in database
- result = updateUserFormLdap(searchEntry, login);
+ result = updateUserFormLdap(adminConnect, searchEntry, login, null);
getPersistenceContext().commit();
-
} else {
throw new AuthenticationException("Utilisateur inconnu : " + login);
}
+
+ adminConnect.close();
} catch (LDAPException ex) {
if (log.isWarnEnabled()) {
log.warn("Can't login to ldap", ex);
@@ -282,12 +307,14 @@
/**
* Update user (or create) in database from ldap search result entry.
*
+ * @param adminConnect admin connection used to load groups content
* @param searchEntry entry containing data
* @param login login
+ * @param groupCache group cache when mass update (can be null)
* @return updated user
- * @throws LDAPSearchException
+ * @throws LDAPException
*/
- protected FaxToMailUser updateUserFormLdap(SearchResultEntry searchEntry, String login) throws LDAPSearchException {
+ protected FaxToMailUser updateUserFormLdap(LDAPConnection adminConnect, SearchResultEntry searchEntry, String login, Map<String, FaxToMailUserGroup> groupCache) throws LDAPException {
FaxToMailUser user;
@@ -300,6 +327,7 @@
user = new FaxToMailUserImpl();
user.setLogin(login);
}
+ user.setHidden(false);
// update other ldap fields
String fullName = searchEntry.getAttributeValue("name");
@@ -321,15 +349,30 @@
String[] groups = searchEntry.getAttributeValues("memberOf");
if (ArrayUtils.isNotEmpty(groups)) {
for (String group : groups) {
- String groupPath = getGroupCompleteName(group);
- String groupName = StringUtils.substringAfterLast(groupPath, "/");
- FaxToMailUserGroup userGroup = faxtomailUserGroupDao.forNameEquals(groupName).findUniqueOrNull();
- if (userGroup == null) {
- userGroup = faxtomailUserGroupDao.create(
- FaxToMailUserGroup.PROPERTY_NAME, groupName,
- FaxToMailUserGroup.PROPERTY_COMPLETE_NAME, groupPath);
+
+ // en mass-update, on a le cache
+ if (groupCache != null) {
+ FaxToMailUserGroup userGroup = groupCache.get(group);
+ if (userGroup != null) {
+ user.addUserGroups(userGroup);
+ }
+ } else {
+ // parmis tous les groupes, on n'utilise que ceux qui sont de la catégories
+ // CN=Group,CN=Schema,CN=Configuration,DC=mac-groupe,DC=net
+ SearchResultEntry groupSearchEntry = adminConnect.getEntry(group);
+ String objectCategory = groupSearchEntry.getAttributeValue("objectCategory");
+ if ("CN=Group,CN=Schema,CN=Configuration,DC=mac-groupe,DC=net".equals(objectCategory)) {
+ String groupPath = getGroupCompleteName(group);
+ String groupName = StringUtils.substringAfterLast(groupPath, "/");
+ FaxToMailUserGroup userGroup = faxtomailUserGroupDao.forNameEquals(groupName).findUniqueOrNull();
+ if (userGroup == null) {
+ userGroup = faxtomailUserGroupDao.create(
+ FaxToMailUserGroup.PROPERTY_NAME, groupName,
+ FaxToMailUserGroup.PROPERTY_COMPLETE_NAME, groupPath);
+ }
+ user.addUserGroups(userGroup);
+ }
}
- user.addUserGroups(userGroup);
}
}
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java 2014-07-31 14:19:39 UTC (rev 454)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java 2014-07-31 16:38:29 UTC (rev 455)
@@ -70,22 +70,22 @@
public List<DemandType> getAllDemandType() {
DemandTypeTopiaDao dao = getPersistenceContext().getDemandTypeDao();
- return new ArrayList<>(dao.findAll());
+ return dao.findAll();
}
public List<Priority> getAllPriority() {
PriorityTopiaDao dao = getPersistenceContext().getPriorityDao();
- return new ArrayList<>(dao.findAll());
+ return dao.findAll();
}
public List<Range> getAllRange() {
RangeTopiaDao dao = getPersistenceContext().getRangeDao();
- return new ArrayList<>(dao.findAll());
+ return dao.findAll();
}
public List<EtatAttente> getAllEtatAttente() {
EtatAttenteTopiaDao dao = getPersistenceContext().getEtatAttenteDao();
- return new ArrayList<>(dao.findAll());
+ return dao.findAll();
}
public Map<String, Long> getEtatAttentesUsage() {
@@ -96,7 +96,7 @@
public List<Client> getAllClients() {
ClientTopiaDao dao = getPersistenceContext().getClientDao();
- return new ArrayList<>(dao.findAll());
+ return dao.findAll();
}
public List<Client> importClients(InputStream inputStream) {
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java 2014-07-31 14:19:39 UTC (rev 454)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java 2014-07-31 16:38:29 UTC (rev 455)
@@ -24,7 +24,6 @@
* #L%
*/
-import java.util.ArrayList;
import java.util.List;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
@@ -38,9 +37,31 @@
*/
public class UserService extends FaxToMailServiceSupport {
- public List<FaxToMailUser> getAllUsers() {
+ /**
+ * Retourne le nombre d'utilisateur en base.
+ *
+ * @return user count
+ */
+ public long getActiveUserCount() {
+ FaxToMailUserTopiaDao faxtomailUserDao = getPersistenceContext().getFaxToMailUserDao();
+ long result = faxtomailUserDao.forHiddenEquals(false).count();
+ return result;
+ }
+
+ /**
+ * Retourne le nombre de groupe en base.
+ *
+ * @return group count
+ */
+ public long getActiveGroupCount() {
+ FaxToMailUserGroupTopiaDao faxtomailUserGroupDao = getPersistenceContext().getFaxToMailUserGroupDao();
+ long result = faxtomailUserGroupDao.forHiddenEquals(false).count();
+ return result;
+ }
+
+ public List<FaxToMailUser> getAllActiveUsers() {
FaxToMailUserTopiaDao dao = getPersistenceContext().getFaxToMailUserDao();
- return new ArrayList<>(dao.findAll());
+ return dao.forHiddenEquals(false).setOrderByArguments(FaxToMailUser.PROPERTY_FIRST_NAME, FaxToMailUser.PROPERTY_LAST_NAME).findAll();
}
public FaxToMailUser getUserByLogin(String login) {
@@ -49,9 +70,9 @@
return user;
}
- public List<FaxToMailUserGroup> getAllUserGroups() {
+ public List<FaxToMailUserGroup> getAllActiveUserGroups() {
FaxToMailUserGroupTopiaDao dao = getPersistenceContext().getFaxToMailUserGroupDao();
- return new ArrayList<>(dao.findAll());
+ return dao.forHiddenEquals(false).setOrderByArguments(FaxToMailUserGroup.PROPERTY_COMPLETE_NAME).findAll();
}
public FaxToMailUser getUser(String topiaId) {
Added: trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_454__add_ldap_config.sql
===================================================================
--- trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_454__add_ldap_config.sql (rev 0)
+++ trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_454__add_ldap_config.sql 2014-07-31 16:38:29 UTC (rev 455)
@@ -0,0 +1,6 @@
+
+-- add user and group hidden configuration
+alter table FaxToMailUserGroup add column hidden ${booleanType};
+update FaxToMailUserGroup set hidden = 'f';
+alter table FaxToMailUser add column hidden ${booleanType};
+update FaxToMailUser set hidden = 'f';
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-07-31 14:19:39 UTC (rev 454)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-07-31 16:38:29 UTC (rev 455)
@@ -110,7 +110,7 @@
ReferentielService referentielService = getContext().getReferentielService();
- List<FaxToMailUser> users = getContext().getUserService().getAllUsers();
+ List<FaxToMailUser> users = getContext().getUserService().getAllActiveUsers();
SearchUIModel model = getModel();
initBeanFilterableComboBox(ui.getTakenByComboBox(),
users,
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-07-31 14:19:39 UTC (rev 454)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-07-31 16:38:29 UTC (rev 455)
@@ -100,7 +100,7 @@
final ReferentielService referentielService = getContext().getReferentielService();
// this loading take 1,5 seconds
- List<FaxToMailUser> users = getContext().getUserService().getAllUsers();
+ List<FaxToMailUser> users = getContext().getUserService().getAllActiveUsers();
SearchUIModel model = getModel();
initBeanFilterableComboBox(ui.getTakenByComboBox(),
users,
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-07-31 14:19:39 UTC (rev 454)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-07-31 16:38:29 UTC (rev 455)
@@ -51,6 +51,7 @@
import com.franciaflex.faxtomail.services.service.ConfigurationService;
import com.franciaflex.faxtomail.services.service.MailFolderService;
import com.franciaflex.faxtomail.services.service.ReferentielService;
+import com.franciaflex.faxtomail.services.service.UserService;
import com.franciaflex.faxtomail.web.FaxToMailActionSupport;
import com.google.gson.reflect.TypeToken;
import com.opensymphony.xwork2.Preparable;
@@ -70,6 +71,8 @@
protected ConfigurationService configurationService;
+ protected UserService userService;
+
protected ReferentielService referentielService;
protected MailFolderService mailFolderService;
@@ -116,8 +119,8 @@
emailAccounts = configurationService.getEmailAccountsWithoutPasswords();
mailFilters = configurationService.getMailFilters();
configuration = configurationService.getConfiguration();
- users = configurationService.getAllUsers();
- groups = configurationService.getAllGroups();
+ users = userService.getAllActiveUsers();
+ groups = userService.getAllActiveUserGroups();
return INPUT;
}
@@ -135,6 +138,10 @@
this.configurationService = configurationService;
}
+ public void setUserService(UserService userService) {
+ this.userService = userService;
+ }
+
public void setReferentielService(ReferentielService referentielService) {
this.referentielService = referentielService;
}
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/LdapAction.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/LdapAction.java 2014-07-31 14:19:39 UTC (rev 454)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/LdapAction.java 2014-07-31 16:38:29 UTC (rev 455)
@@ -35,6 +35,7 @@
import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext;
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
import com.franciaflex.faxtomail.services.service.LdapService;
+import com.franciaflex.faxtomail.services.service.UserService;
import com.franciaflex.faxtomail.web.FaxToMailActionSupport;
import com.opensymphony.xwork2.Preparable;
@@ -49,7 +50,7 @@
private static final Log log = LogFactory.getLog(LdapAction.class);
- protected LdapService ldapService;
+ protected UserService userService;
protected long userCount;
@@ -61,8 +62,8 @@
this.applicationContext = applicationContext;
}
- public void setLdapService(LdapService ldapService) {
- this.ldapService = ldapService;
+ public void setUserService(UserService userService) {
+ this.userService = userService;
}
public long getUserCount() {
@@ -84,8 +85,8 @@
@Override
@Action("ldap-input")
public String input() throws Exception {
- userCount = ldapService.getUserCount();
- groupCount = ldapService.getGroupCount();
+ userCount = userService.getActiveUserCount();
+ groupCount = userService.getActiveGroupCount();
return INPUT;
}
1
0