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
r304 - trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities
by echatellier@users.forge.codelutin.com 01 Jul '14
by echatellier@users.forge.codelutin.com 01 Jul '14
01 Jul '14
Author: echatellier
Date: 2014-07-01 15:42:59 +0200 (Tue, 01 Jul 2014)
New Revision: 304
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/304
Log:
Fix debug message
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AttachmentFileImpl.java
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AttachmentFileImpl.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AttachmentFileImpl.java 2014-07-01 13:09:57 UTC (rev 303)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AttachmentFileImpl.java 2014-07-01 13:42:59 UTC (rev 304)
@@ -102,7 +102,7 @@
@Override
protected void finalize() throws Throwable {
try {
- if (tmpLocalFile != null) {
+ if (tmpLocalFile != null && tmpLocalFile.exists()) {
if (log.isDebugEnabled()) {
log.debug(String.format("Deleting file : %s", tmpLocalFile.getAbsolutePath()));
}
1
0
01 Jul '14
Author: echatellier
Date: 2014-07-01 15:09:57 +0200 (Tue, 01 Jul 2014)
New Revision: 303
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/303
Log:
V?\195?\169rrouillage des mails ?\195?\160 l'ouverture
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/FaxToMailUIContext.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveAndOpenDialogAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.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-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java
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-07-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -48,6 +48,7 @@
import javax.mail.MessagingException;
import com.franciaflex.faxtomail.persistence.entities.Range;
+
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.io.IOUtils;
@@ -463,6 +464,13 @@
return email;
}
+ /**
+ * Take email (takenBy).
+ *
+ * @param emailId
+ * @param user
+ * @return
+ */
public Email takeEmail(String emailId, FaxToMailUser user) {
EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
Email email = emailDao.findByTopiaId(emailId);
@@ -481,6 +489,48 @@
}
/**
+ * Vérrouille une demande par un utilisateur empechant les autres de l'ouvrir.
+ *
+ * @param emailId topiaId de la demande à vérouiller
+ * @param currentUser user
+ * @return email
+ */
+ public Email lockEmail(String emailId, FaxToMailUser currentUser) {
+ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
+ Email email = emailDao.findByTopiaId(emailId);
+ email.setLockedBy(currentUser);
+ email = emailDao.update(email);
+ getPersistenceContext().commit();
+ if (log.isDebugEnabled()) {
+ log.debug("[LOCK] " + emailId + " locked by " + currentUser.getFirstName() + " " + currentUser.getLastName());
+ }
+
+ // TODO echatellier : les utilisateurs peuvent avoir plusieurs verrous actif dans le
+ // cas des interfaces à onglet et des demandes groupé
+ // on pourrait peut-etre supprimer automatiquement les locks sur les autres demande
+ // si elle ne sont pas groupées
+ return email;
+ }
+
+ /**
+ * Dévérrouille une demande.
+ *
+ * @param emailId topiaId de la demande à devérouiller
+ * @return email
+ */
+ public Email unlockEmail(String emailId) {
+ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
+ Email email = emailDao.findByTopiaId(emailId);
+ email.setLockedBy(null);
+ email = emailDao.update(email);
+ getPersistenceContext().commit();
+ if (log.isDebugEnabled()) {
+ log.debug("[UNLOCK] " + emailId + " unlocked ");
+ }
+ return email;
+ }
+
+ /**
* Calcule recursivement l'ensemble des répertoires lisible par un utilisateur récursivement.
*
* @param readMailFolders result mail folders
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-07-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -55,7 +55,6 @@
import org.nuiton.i18n.I18n;
import org.nuiton.i18n.init.ClassPathI18nInitializer;
import org.nuiton.i18n.init.DefaultI18nInitializer;
-import org.nuiton.i18n.init.UserI18nInitializer;
import org.nuiton.jaxx.application.ApplicationConfiguration;
import org.nuiton.jaxx.application.ApplicationTechnicalException;
import org.nuiton.jaxx.application.swing.ApplicationUIContext;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java 2014-07-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -29,13 +29,10 @@
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.google.common.base.Predicate;
-import com.google.common.collect.Collections2;
import com.google.common.collect.Iterables;
import javax.swing.*;
-import java.util.ArrayList;
-import java.util.Collection;
import java.util.Date;
import static org.nuiton.i18n.I18n.t;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveAndOpenDialogAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveAndOpenDialogAction.java 2014-07-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveAndOpenDialogAction.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -24,8 +24,6 @@
* #L%
*/
-import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
-import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-07-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -28,6 +28,7 @@
import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen;
import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler;
@@ -50,11 +51,32 @@
}
@Override
+ public boolean prepareAction() throws Exception {
+ boolean result = super.prepareAction();
+
+ if (result) {
+ DemandeUIModel currentEmail = getContext().getCurrentEmail();
+ FaxToMailUser lockedByUser = currentEmail.getLockedBy();
+ FaxToMailUser currentUser = getContext().getCurrentUser();
+
+ if (lockedByUser != null && !lockedByUser.equals(currentUser)) {
+ String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(lockedByUser));
+ JOptionPane.showMessageDialog(getHandler().getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.alreadyLockedBy.title"),
+ JOptionPane.ERROR_MESSAGE);
+ result = false;
+ }
+ }
+ return result;
+ }
+
+ @Override
public void doAction() throws Exception {
super.doAction();
DemandeUIModel currentEmail = getContext().getCurrentEmail();
- if (StringUtils.isNoneBlank(currentEmail.getTopiaId())) {
+ if (StringUtils.isNotBlank(currentEmail.getTopiaId())) {
Email email = getContext().getEmailService().getEmailById(currentEmail.getTopiaId());
currentEmail.setGroupedDemandes(email.getEmailGroup());
}
@@ -76,10 +98,9 @@
currentUser.getUserGroups()).isEmpty();
folder = folder.getParent();
}
-
+
if (currentEmail.getArchiveDate() != null || !canWrite) {
currentEmail.setEditable(false);
-
} else if (takenBy != null && !currentUser.equals(takenBy)) {
String htmlMessage = String.format(
AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
@@ -108,5 +129,8 @@
break;
}
}
+
+ // au final, on a ouvert la demande, on peut locker la demande
+ getContext().getEmailService().lockEmail(currentEmail.getTopiaId(), currentUser);
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-07-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -37,8 +37,11 @@
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
import com.franciaflex.faxtomail.ui.swing.util.CloseableUI;
import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
+import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.attachment.AttachmentEditorUIModel;
+
import jaxx.runtime.validator.swing.SwingValidator;
+
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -60,6 +63,7 @@
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableCellEditor;
+
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
@@ -405,6 +409,7 @@
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
}
+
clearValidators();
}
@@ -424,6 +429,13 @@
t("faxtomail.demande.askSaveBeforeLeaving.save"),
getContext().getActionFactory().createUIAction(this, SaveDemandeAction.class)
);
+
+ // mettre ca ici et non dans le close, car pour un onglet, le close n'est pas appelé
+ if (result) {
+ Email email = getContext().getEmailService().unlockEmail(getModel().getTopiaId());
+ getModel().fromEntity(email);
+ }
+
return result;
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-07-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -385,6 +385,16 @@
return editObject.getTakenBy();
}
+ public FaxToMailUser getLockedBy() {
+ return editObject.getLockedBy();
+ }
+
+ public void setLockedBy(FaxToMailUser faxToMailUser) {
+ Object oldValue = getLockedBy();
+ editObject.setLockedBy(faxToMailUser);
+ firePropertyChanged(Email.PROPERTY_LOCKED_BY, oldValue, faxToMailUser);
+ }
+
public Priority getPriority() {
return editObject.getPriority();
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java 2014-07-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -32,7 +32,9 @@
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUI;
import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler;
import com.google.common.collect.Iterables;
+
import jaxx.runtime.validator.swing.SwingValidator;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
@@ -49,6 +51,7 @@
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
+
import java.awt.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -155,42 +158,55 @@
FaxToMailUser takenBy = demande.getTakenBy();
FaxToMailUser currentUser = getContext().getCurrentUser();
+ FaxToMailUser lockedByUser = demande.getLockedBy();
//TODO kmorin 20140512 put this in an action
- if (demande.getArchiveDate() != null) {
- demande.setEditable(false);
+ if (lockedByUser != null && !lockedByUser.equals(currentUser)) {
+ String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(lockedByUser));
+ JOptionPane.showMessageDialog(getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.alreadyLockedBy.title"),
+ JOptionPane.ERROR_MESSAGE);
- } else if (takenBy != null && !currentUser.equals(takenBy)) {
- String htmlMessage = String.format(
- AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
- t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
- t("faxtomail.alert.alreadyTakenBy.help"));
+ } else {
+ if (demande.getArchiveDate() != null) {
+ demande.setEditable(false);
+
+ } else if (takenBy != null && !currentUser.equals(takenBy)) {
+ String htmlMessage = String.format(
+ AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
+ t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
+ t("faxtomail.alert.alreadyTakenBy.help"));
+
+ int result = JOptionPane.showConfirmDialog(getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.alreadyTakenBy.title"),
+ JOptionPane.YES_NO_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+
+ switch (result) {
+ case JOptionPane.CANCEL_OPTION:
+ return;
+
+ case JOptionPane.NO_OPTION:
+ demande.setEditable(false);
+ break;
+
+ case JOptionPane.YES_OPTION:
+ Email email = getContext().getEmailService().takeEmail(demande.getTopiaId(), currentUser);
+ demande.fromEntity(email);
+ demande.setEditable(true);
+ break;
+ }
+ }
- int result = JOptionPane.showConfirmDialog(getTopestUI(),
- htmlMessage,
- t("faxtomail.alert.alreadyTakenBy.title"),
- JOptionPane.YES_NO_CANCEL_OPTION,
- JOptionPane.QUESTION_MESSAGE);
-
- switch (result) {
- case JOptionPane.CANCEL_OPTION:
- return;
-
- case JOptionPane.NO_OPTION:
- demande.setEditable(false);
- break;
-
- case JOptionPane.YES_OPTION:
- Email email = getContext().getEmailService().takeEmail(demande.getTopiaId(), currentUser);
- demande.fromEntity(email);
- demande.setEditable(true);
- break;
- }
+ // au final, on a ouvert la demande, on peut locker la demande
+ getContext().getEmailService().lockEmail(demande.getTopiaId(), currentUser);
+
+ MainUIHandler mainUIHandler = context.getMainUI().getHandler();
+ DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody();
+ parentContainer.getModel().addDemand(demande);
}
-
- MainUIHandler mainUIHandler = context.getMainUI().getHandler();
- DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody();
- parentContainer.getModel().addDemand(demande);
}
protected class DemandGroupItemRenderer extends DemandGroupItem
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-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -223,7 +223,7 @@
public void searchDemandes() {
getModel().resetPaginationParameter();
try {
- SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class);
+ SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class);
searchAction.doAction();
} catch (Exception e) {
@@ -237,7 +237,7 @@
public void goToNextPage() {
getModel().setPaginationParameter(getModel().getPaginationResult().getNextPage());
try {
- SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class);
+ SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class);
searchAction.doAction();
} catch (Exception e) {
@@ -251,7 +251,7 @@
public void goToPreviousPage() {
getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage());
try {
- SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class);
+ SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class);
searchAction.doAction();
} catch (Exception e) {
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-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -26,10 +26,8 @@
import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.MailField;
import com.franciaflex.faxtomail.services.service.ReferentielService;
-import com.franciaflex.faxtomail.ui.swing.actions.LoadFolderEmailsAction;
import com.franciaflex.faxtomail.ui.swing.actions.SearchAction;
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction;
-import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler;
import com.franciaflex.faxtomail.ui.swing.util.CloseableUI;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java 2014-07-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java 2014-07-01 13:09:57 UTC (rev 303)
@@ -77,7 +77,7 @@
}
}
- showErrorDialog(cause.getMessage(), cause);
+ showErrorDialog(cause != null ? cause.getMessage() : "", cause);
if (backToScreen) {
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-07-01 06:34:20 UTC (rev 302)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-07-01 13:09:57 UTC (rev 303)
@@ -28,6 +28,8 @@
faxtomail.action.search.tip=Rechercher
faxtomail.action.start.tip=Démarrer FaxToMail
faxtomail.action.transmit.tip=Déplacer l'élément
+faxtomail.alert.alreadyLockedBy.message=L'élément est déjà vérrouillé par %s, vous ne pouvez pas l'ouvrir.
+faxtomail.alert.alreadyLockedBy.title=Document déjà vérrouillé
faxtomail.alert.alreadyTakenBy.button.quit=Quitter
faxtomail.alert.alreadyTakenBy.button.take=Prendre
faxtomail.alert.alreadyTakenBy.button.view=Visualiser
@@ -114,7 +116,7 @@
faxtomail.demande.gamme.label=Gamme
faxtomail.demande.group.button.label=Grouper
faxtomail.demande.group.successful=Groupement réussi avec l'élément %s
-faxtomail.demande.history.action.send.tip=
+faxtomail.demande.history.action.send.tip=Envoyer l'historique par email
faxtomail.demande.history.send.subject=Historique de %s
faxtomail.demande.lastAttachmentOpening.label=Dernière ouverture de pièce-jointe
faxtomail.demande.lastModified.label=Dernière modification
1
0
01 Jul '14
Author: kmorin
Date: 2014-07-01 08:34:20 +0200 (Tue, 01 Jul 2014)
New Revision: 302
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/302
Log:
- extraction des attributs dans le css
- am?\195?\169lioration du calcul des quantit?\195?\169s par gamme
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.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/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/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/transmit/MailFolderChooserUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-07-01 06:34:20 UTC (rev 302)
@@ -373,4 +373,33 @@
List<Email> results = findAll(query);
return results;
}
+
+ public Map<Range, Long[]> computeQuantitiesByRange(List<MailFolder> folders) {
+ String query = "SELECT range, " +
+ "SUM(rangeRow." + RangeRow.PROPERTY_PRODUCT_QUANTITY + ") AS prodQ, " +
+ "SUM(rangeRow." + RangeRow.PROPERTY_SAV_QUANTITY + ") AS savQ, " +
+ "SUM(rangeRow." + RangeRow.PROPERTY_QUOTATION_QUANTITY + ") AS quotQ " +
+ "FROM " + Email.class.getName() + " AS email " +
+ "INNER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow " +
+ "INNER JOIN rangeRow." + RangeRow.PROPERTY_RANGE + " AS range " +
+ "WHERE email." + Email.PROPERTY_MAIL_FOLDER + " IN :folders " +
+ "GROUP BY range";
+
+ Map<String, Object> args = new HashMap<>();
+ args.put("folders", folders);
+
+ Map<Range, Long[]> result = new HashMap<>();
+
+ List<Object[]> queryResuts = findAll(query, args);
+ for (Object[] queryResut : queryResuts) {
+ Range range = (Range) queryResut[0];
+ Long[] sums = new Long[3];
+ sums[0] = (Long) queryResut[1];
+ sums[1] = (Long) queryResut[2];
+ sums[2] = (Long) queryResut[3];
+ result.put(range, sums);
+ }
+
+ return result;
+ }
}
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-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-07-01 06:34:20 UTC (rev 302)
@@ -47,6 +47,7 @@
import javax.activation.FileDataSource;
import javax.mail.MessagingException;
+import com.franciaflex.faxtomail.persistence.entities.Range;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.io.IOUtils;
@@ -428,21 +429,8 @@
return result;
}
- /**
- * @deprecated Ne pas recuperer trop de mails
- */
- @Deprecated
- public List<Email> getEmailForFolderAndSubfolders(MailFolder folder) {
- EmailTopiaDao dao = getPersistenceContext().getEmailDao();
+ public List<MailFolder> getChildrenRecursively(MailFolder folder) {
List<MailFolder> folders = new ArrayList<>();
- folders.addAll(getChildrenRecursively(folder));
- return new ArrayList<>(dao.forMailFolderIn(folders)
- .findAll());
- }
-
- @Deprecated
- protected List<MailFolder> getChildrenRecursively(MailFolder folder) {
- List<MailFolder> folders = new ArrayList<>();
folders.add(folder);
Collection<MailFolder> children = folder.getChildren();
for (MailFolder child : children) {
@@ -451,6 +439,12 @@
return folders;
}
+ public Map<Range, Long[]> computeQuantitiesByRange(MailFolder rootFolder) {
+ List<MailFolder> folders = getChildrenRecursively(rootFolder);
+ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
+ return emailDao.computeQuantitiesByRange(folders);
+ }
+
public Email addToHistory(String emailId, HistoryType type, FaxToMailUser user, Date date, String... fields) {
EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
Email email = emailDao.findByTopiaId(emailId);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java 2014-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java 2014-07-01 06:34:20 UTC (rev 302)
@@ -36,6 +36,7 @@
import org.apache.commons.logging.LogFactory;
import java.awt.*;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -58,42 +59,37 @@
@Override
public void doAction() throws Exception {
- Map<Range, RangeRowModel> quantitiesByRange = new HashMap<Range, RangeRowModel>();
MailFolder folder = getModel().getRootFolder();
- List<Email> emails = getContext().getEmailService().getEmailForFolderAndSubfolders(folder);
+ Map<Range, Long[]> quantitiesByRange = getContext().getEmailService().computeQuantitiesByRange(folder);
- for (Email email : emails) {
- Collection<RangeRow> rangeRows = email.getRangeRow();
- if (rangeRows != null) {
- for (RangeRow rangeRow : rangeRows) {
- Range range = rangeRow.getRange();
- RangeRowModel row = quantitiesByRange.get(range);
- if (row == null) {
- row = new RangeRowModel();
- row.fromEntity(rangeRow);
- quantitiesByRange.put(range, row);
+ List<RangeRowModel> rangeRows = new ArrayList<>();
+ for (Range range : quantitiesByRange.keySet()) {
+ RangeRowModel row = new RangeRowModel();
+ row.setRange(range);
- } else {
- Integer productQuantity = rangeRow.getProductQuantity();
- if (productQuantity != null) {
- row.setProductQuantity(row.getProductQuantity() + productQuantity);
- }
+ Long[] quantities = quantitiesByRange.get(range);
- Integer savQuantity = rangeRow.getSavQuantity();
- if (savQuantity != null) {
- row.setSavQuantity(row.getSavQuantity() + savQuantity);
- }
+ Long productQuantity = quantities[0];
+ if (productQuantity == null) {
+ productQuantity = 0L;
+ }
+ row.setProductQuantity(productQuantity.intValue());
- Integer quotationQuantity = rangeRow.getQuotationQuantity();
- if (quotationQuantity != null) {
- row.setQuotationQuantity(row.getQuotationQuantity() + quotationQuantity);
- }
- }
+ Long savQuantity = quantities[1];
+ if (savQuantity == null) {
+ savQuantity = 0L;
+ }
+ row.setSavQuantity(savQuantity.intValue());
- }
+ Long quotationQuantity = quantities[2];
+ if (quotationQuantity == null) {
+ quotationQuantity = 0L;
}
+ row.setQuotationQuantity(quotationQuantity.intValue());
+
+ rangeRows.add(row);
}
- getModel().setRangeRows(quantitiesByRange.values());
+ getModel().setRangeRows(rangeRows);
}
@Override
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-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-07-01 06:34:20 UTC (rev 302)
@@ -110,4 +110,34 @@
text: "faxtomail.demandeList.action.archive";
toolTipText: "faxtomail.demandeList.action.archive.tip";
enabled: { model.isArchiveEnabled() };
+}
+
+#totalDemandCountLabel {
+ text: "faxtomail.demandeList.totalCount";
+}
+
+#totalDemandCountValue {
+ text: { String.valueOf(model.getPaginationResult().getCount()) };
+}
+
+#pageNumberLabel {
+ text: "faxtomail.demandeList.pages";
+}
+
+#previousPageButton {
+ text: "faxtomail.demandeList.goToPreviousPage";
+ enabled: { model.getPaginationResult().hasPreviousPage() };
+}
+
+#currentPageLabel {
+ text: { String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1) };
+}
+
+#totalPageNumberLabel {
+ text: { String.valueOf(getModel().getPaginationResult().getLastPage().getPageNumber() + 1) };
+}
+
+#nextPageButton {
+ text: "faxtomail.demandeList.goToNextPage";
+ enabled: { model.getPaginationResult().hasNextPage() };
}
\ No newline at end of file
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-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-07-01 06:34:20 UTC (rev 302)
@@ -86,23 +86,27 @@
<JLabel id="savNbLabel"/>
<JLabel id="savNbField"/>
</JPanel>
+
<JScrollPane constraints='BorderLayout.CENTER'>
<JXTable id='dataTable'
onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
+
<JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.SOUTH'>
- <JLabel text="faxtomail.demandeList.totalCount" />
- <JLabel text="{String.valueOf(model.getPaginationResult().getCount())}" />
+ <JLabel id="totalDemandCountLabel" />
+ <JLabel id="totalDemandCountValue" />
+
<JLabel styleClass="horizontal-separator"/>
- <JLabel text="faxtomail.demandeList.pages" />
- <JButton text="faxtomail.demandeList.goToPreviousPage" onActionPerformed="handler.goToPreviousPage()"
- enabled="{model.getPaginationResult().hasPreviousPage()}" />
- <JLabel text="{String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1)}" />
+
+ <JLabel id="pageNumberLabel" />
+ <JButton id="previousPageButton"
+ onActionPerformed="handler.goToPreviousPage()"/>
+ <JLabel id="currentPageLabel" />
<JLabel styleClass="page-separator"/>
- <JLabel text="{String.valueOf(model.getPaginationResult().getLastPage().getPageNumber() + 1)}" />
- <JButton text="faxtomail.demandeList.goToNextPage" onActionPerformed="handler.goToNextPage()"
- enabled="{model.getPaginationResult().hasNextPage()}" />
+ <JLabel id="totalPageNumberLabel" />
+ <JButton id="nextPageButton"
+ onActionPerformed="handler.goToNextPage()" />
</JPanel>
</JPanel>
</JSplitPane>
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-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-07-01 06:34:20 UTC (rev 302)
@@ -130,29 +130,6 @@
Collection<MailFolder> folders = getContext().getMailFolderService().getRootMailFoldersWithReadingRights(getContext().getCurrentUser());
model.setFolders(new ArrayList<MailFolder>(folders));
- model.addPropertyChangeListener(DemandeListUIModel.PROPERTY_SELECTED_FOLDER, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
-
- // reset pagination when folder change
- getModel().resetPaginationParameter();
-
- MailFolder folder = (MailFolder) evt.getNewValue();
- while (folder.getAllowCreateDemandIntoFolder() == null
- && folder.getParent() != null) {
- folder = folder.getParent();
- }
- DemandeListUIModel model = getModel();
- model.setComputeQuantitiesByRangeEnabled(true);
- model.setNewDemandEnabled(folder != null && Boolean.TRUE.equals(folder.getAllowCreateDemandIntoFolder()));
-
- LoadFolderEmailsAction loadFolderEmailsAction =
- getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this,
- LoadFolderEmailsAction.class);
- getContext().getActionEngine().runAction(loadFolderEmailsAction);
- }
- });
-
this.ui.setContextValue(model);
}
@@ -265,7 +242,7 @@
});
// init tree
- Map<MailFolder, DefaultMutableTreeNode> nodesByFolder =
+ final Map<MailFolder, FolderTreeNode> nodesByFolder =
FaxToMailUIUtil.initFolderTree(getContext(), ui.getNavigationTree(), model.getFolders(), true);
ui.getNavigationTree().addTreeSelectionListener(new TreeSelectionListener() {
@@ -290,6 +267,34 @@
}
});
+ model.addPropertyChangeListener(DemandeListUIModel.PROPERTY_SELECTED_FOLDER, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
+ // reset pagination when folder change
+ getModel().resetPaginationParameter();
+
+ MailFolder folder = (MailFolder) evt.getNewValue();
+
+ FolderTreeNode folderNode = nodesByFolder.get(folder);
+ boolean readable = folderNode.isCanRead();
+
+ while (folder.getAllowCreateDemandIntoFolder() == null
+ && folder.getParent() != null) {
+ folder = folder.getParent();
+ }
+
+ DemandeListUIModel model = getModel();
+ model.setComputeQuantitiesByRangeEnabled(readable);
+ model.setNewDemandEnabled(readable && folder != null && Boolean.TRUE.equals(folder.getAllowCreateDemandIntoFolder()));
+
+ LoadFolderEmailsAction loadFolderEmailsAction =
+ getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this,
+ LoadFolderEmailsAction.class);
+ getContext().getActionEngine().runAction(loadFolderEmailsAction);
+ }
+ });
+
MailFolder currentMailFolder = getContext().getCurrentMailFolder();
DemandeUIModel currentEmail = getContext().getCurrentEmail();
@@ -323,7 +328,7 @@
public void initDemandeTable(final JXTable table, boolean sortable) {
super.initDemandeTable(table, sortable);
- HighlightPredicate testPredicate = new HighlightPredicate() {
+ HighlightPredicate reportNotTakenPredicate = new HighlightPredicate() {
@Override
public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
int viewRow = adapter.row;
@@ -341,7 +346,7 @@
}
};
Color color = Color.ORANGE;
- table.addHighlighter(new ColorHighlighter(testPredicate, color, Color.WHITE, color.darker(), Color.WHITE));
+ table.addHighlighter(new ColorHighlighter(reportNotTakenPredicate, color, Color.WHITE, color.darker(), Color.WHITE));
}
@Override
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-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css 2014-07-01 06:34:20 UTC (rev 302)
@@ -286,3 +286,34 @@
text: "faxtomail.searchToGroup.action.cancel";
toolTipText: "faxtomail.searchToGroup.action.cancel.tip";
}
+
+
+#totalDemandCountLabel {
+ text: "faxtomail.demandeList.totalCount";
+}
+
+#totalDemandCountValue {
+ text: { String.valueOf(model.getPaginationResult().getCount()) };
+}
+
+#pageNumberLabel {
+ text: "faxtomail.demandeList.pages";
+}
+
+#previousPageButton {
+ text: "faxtomail.demandeList.goToPreviousPage";
+ enabled: { model.getPaginationResult().hasPreviousPage() };
+}
+
+#currentPageLabel {
+ text: { String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1) };
+}
+
+#totalPageNumberLabel {
+ text: { String.valueOf(getModel().getPaginationResult().getLastPage().getPageNumber() + 1) };
+}
+
+#nextPageButton {
+ text: "faxtomail.demandeList.goToNextPage";
+ enabled: { model.getPaginationResult().hasNextPage() };
+}
\ No newline at end of file
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-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx 2014-07-01 06:34:20 UTC (rev 302)
@@ -345,17 +345,19 @@
<JXTable id='dataTable'/>
</JScrollPane>
<JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.SOUTH'>
- <JLabel text="faxtomail.demandeList.totalCount" />
- <JLabel text="{String.valueOf(model.getPaginationResult().getCount())}" />
+ <JLabel id="totalDemandCountLabel" />
+ <JLabel id="totalDemandCountValue" />
+
<JLabel styleClass="horizontal-separator"/>
- <JLabel text="faxtomail.demandeList.pages" />
- <JButton text="faxtomail.demandeList.goToPreviousPage" onActionPerformed="handler.goToPreviousPage()"
- enabled="{model.getPaginationResult().hasPreviousPage()}" />
- <JLabel text="{String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1)}" />
+
+ <JLabel id="pageNumberLabel" />
+ <JButton id="previousPageButton"
+ onActionPerformed="handler.goToPreviousPage()"/>
+ <JLabel id="currentPageLabel" />
<JLabel styleClass="page-separator"/>
- <JLabel text="{String.valueOf(model.getPaginationResult().getLastPage().getPageNumber() + 1)}" />
- <JButton text="faxtomail.demandeList.goToNextPage" onActionPerformed="handler.goToNextPage()"
- enabled="{model.getPaginationResult().hasNextPage()}" />
+ <JLabel id="totalPageNumberLabel" />
+ <JButton id="nextPageButton"
+ onActionPerformed="handler.goToNextPage()" />
</JPanel>
</JPanel>
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-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-07-01 06:34:20 UTC (rev 302)
@@ -312,4 +312,34 @@
#dataTable {
editable: true;
autoCreateRowSorter: true;
+}
+
+#totalDemandCountLabel {
+ text: "faxtomail.demandeList.totalCount";
+}
+
+#totalDemandCountValue {
+ text: { String.valueOf(model.getPaginationResult().getCount()) };
+}
+
+#pageNumberLabel {
+ text: "faxtomail.demandeList.pages";
+}
+
+#previousPageButton {
+ text: "faxtomail.demandeList.goToPreviousPage";
+ enabled: { model.getPaginationResult().hasPreviousPage() };
+}
+
+#currentPageLabel {
+ text: { String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1) };
+}
+
+#totalPageNumberLabel {
+ text: { String.valueOf(getModel().getPaginationResult().getLastPage().getPageNumber() + 1) };
+}
+
+#nextPageButton {
+ text: "faxtomail.demandeList.goToNextPage";
+ enabled: { model.getPaginationResult().hasNextPage() };
}
\ No newline at end of file
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-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx 2014-07-01 06:34:20 UTC (rev 302)
@@ -365,17 +365,19 @@
onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
<JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.SOUTH'>
- <JLabel text="faxtomail.demandeList.totalCount" />
- <JLabel text="{String.valueOf(model.getPaginationResult().getCount())}" />
+ <JLabel id="totalDemandCountLabel" />
+ <JLabel id="totalDemandCountValue" />
+
<JLabel styleClass="horizontal-separator"/>
- <JLabel text="faxtomail.demandeList.pages" />
- <JButton text="faxtomail.demandeList.goToPreviousPage" onActionPerformed="handler.goToPreviousPage()"
- enabled="{model.getPaginationResult().hasPreviousPage()}" />
- <JLabel text="{String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1)}" />
+
+ <JLabel id="pageNumberLabel" />
+ <JButton id="previousPageButton"
+ onActionPerformed="handler.goToPreviousPage()"/>
+ <JLabel id="currentPageLabel" />
<JLabel styleClass="page-separator"/>
- <JLabel text="{String.valueOf(model.getPaginationResult().getLastPage().getPageNumber() + 1)}" />
- <JButton text="faxtomail.demandeList.goToNextPage" onActionPerformed="handler.goToNextPage()"
- enabled="{model.getPaginationResult().hasNextPage()}" />
+ <JLabel id="totalPageNumberLabel" />
+ <JButton id="nextPageButton"
+ onActionPerformed="handler.goToNextPage()" />
</JPanel>
</JPanel>
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java 2014-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java 2014-07-01 06:34:20 UTC (rev 302)
@@ -73,7 +73,7 @@
getRootMailFoldersWithMoveRights(getContext().getCurrentUser());
JTree navigationTree = ui.getNavigationTree();
- Map<MailFolder, DefaultMutableTreeNode> nodesByFolder =
+ Map<MailFolder, FolderTreeNode> nodesByFolder =
FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, folders, false);
MailFolder currentFolder = getModel().getMailFolder();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-06-30 16:35:30 UTC (rev 301)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-07-01 06:34:20 UTC (rev 302)
@@ -119,22 +119,22 @@
setApplicationContext(ui, parentUI.getHandler().getContext());
}
- public static Map<MailFolder, DefaultMutableTreeNode> initFolderTree(final FaxToMailUIContext context,
+ public static Map<MailFolder, FolderTreeNode> initFolderTree(final FaxToMailUIContext context,
JTree navigationTree,
Collection<MailFolder> folders,
final boolean colorNotAffectedFolders) {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
List<MailFolder> foldersToExpand = context.getExpandedFolders();
- Map<MailFolder, DefaultMutableTreeNode> nodesByFolder = new HashMap<MailFolder, DefaultMutableTreeNode>();
+ Map<MailFolder, FolderTreeNode> nodesByFolder = new HashMap<MailFolder, FolderTreeNode>();
for (MailFolder folder : folders) {
nodesByFolder.putAll(FaxToMailUIUtil.createFolderTree(root, folder));
- DefaultMutableTreeNode node = nodesByFolder.get(folder);
+ FolderTreeNode node = nodesByFolder.get(folder);
MailFolder parent = folder.getParent();
while (parent != null) {
- FolderTreeNode parentNode = (FolderTreeNode) nodesByFolder.get(parent);
+ FolderTreeNode parentNode = nodesByFolder.get(parent);
if (parentNode == null) {
parentNode = new FolderTreeNode(parent);
parentNode.setCanRead(false);
@@ -204,9 +204,9 @@
* @param folder the folder to add to the tree
* @return the map of the nodes by folder
*/
- protected static Map<MailFolder, DefaultMutableTreeNode> createFolderTree(DefaultMutableTreeNode parent,
+ protected static Map<MailFolder, FolderTreeNode> createFolderTree(DefaultMutableTreeNode parent,
MailFolder folder) {
- Map<MailFolder, DefaultMutableTreeNode> result = new HashMap<MailFolder, DefaultMutableTreeNode>();
+ Map<MailFolder, FolderTreeNode> result = new HashMap<MailFolder, FolderTreeNode>();
FolderTreeNode node = new FolderTreeNode(folder);
node.setCanSelect(true);
1
0
r301 - in trunk: faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service 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 30 Jun '14
by echatellier@users.forge.codelutin.com 30 Jun '14
30 Jun '14
Author: echatellier
Date: 2014-06-30 18:35:30 +0200 (Mon, 30 Jun 2014)
New Revision: 301
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/301
Log:
Application de la securit?\195?\169 ?\195?\160 la recherche
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/InitTestData.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/SearchUI.css
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/persistence/entities/EmailTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-06-30 15:35:05 UTC (rev 300)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-06-30 16:35:30 UTC (rev 301)
@@ -27,6 +27,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -39,16 +40,20 @@
* Search for email using filter.
*
* @param emailFilter email filter
- * @param user user (for rights compute)
+ * @param readMailFolders readable mail folders (for rights compute)
* @param pagination pagination
* @return email list matching query filters
*/
- public PaginationResult<Email> search(EmailFilter emailFilter, FaxToMailUser user, PaginationParameter pagination) {
+ public PaginationResult<Email> search(EmailFilter emailFilter, Set<MailFolder> readMailFolders, PaginationParameter pagination) {
StringBuilder query = new StringBuilder("FROM " + Email.class.getName() + " E");
- query.append(" WHERE 1 = 1");
Map<String, Object> args = new HashMap<>();
+ // apply security
+ //query.append(" WHERE E." + Email.PROPERTY_MAIL_FOLDER + " in (:readMailFolders)");
+ //args.put("readMailFolders", readMailFolders);
+ query.append(" WHERE 1 = 1");
+
// email minReceptionDate
if (emailFilter.getMinReceptionDate() != null) {
query.append(" AND E." + Email.PROPERTY_RECEPTION_DATE + " >= :" + EmailFilter.PROPERTY_MIN_RECEPTION_DATE);
@@ -305,9 +310,9 @@
query.append(")");
}
- // email comment
+ // email message
if (StringUtils.isNotBlank(emailFilter.getMessage())) {
- query.append(" AND lower(E." + Email.PROPERTY_COMMENT + ") LIKE lower(:" + EmailFilter.PROPERTY_MESSAGE + ")");
+ query.append(" AND lower(E." + Email.PROPERTY_ORIGINAL_EMAIL + ") LIKE lower(:" + EmailFilter.PROPERTY_MESSAGE + ")");
args.put(EmailFilter.PROPERTY_MESSAGE, "%" + emailFilter.getMessage() + "%");
}
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-06-30 15:35:05 UTC (rev 300)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-06-30 16:35:30 UTC (rev 301)
@@ -47,12 +47,6 @@
import javax.activation.FileDataSource;
import javax.mail.MessagingException;
-import com.franciaflex.faxtomail.persistence.entities.AttachmentTopiaDao;
-import com.franciaflex.faxtomail.persistence.entities.EdiReturn;
-import com.franciaflex.faxtomail.persistence.entities.EdiReturnTopiaDao;
-import com.franciaflex.faxtomail.persistence.entities.MailField;
-import com.google.common.base.Function;
-
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.io.IOUtils;
@@ -75,25 +69,33 @@
import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl;
import com.franciaflex.faxtomail.persistence.entities.AttachmentFileTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl;
+import com.franciaflex.faxtomail.persistence.entities.AttachmentTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.Client;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
+import com.franciaflex.faxtomail.persistence.entities.EdiReturn;
+import com.franciaflex.faxtomail.persistence.entities.EdiReturnTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.EmailGroup;
import com.franciaflex.faxtomail.persistence.entities.EmailGroupTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.EmailTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup;
import com.franciaflex.faxtomail.persistence.entities.History;
import com.franciaflex.faxtomail.persistence.entities.HistoryTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.HistoryType;
+import com.franciaflex.faxtomail.persistence.entities.MailField;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.persistence.entities.RangeRowTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.Reply;
import com.franciaflex.faxtomail.persistence.entities.ReplyTopiaDao;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
+import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -484,10 +486,41 @@
return email;
}
+ /**
+ * Calcule recursivement l'ensemble des répertoires lisible par un utilisateur récursivement.
+ *
+ * @param readMailFolders result mail folders
+ * @param mailFolders mail folder to allow
+ */
+ protected void computeUserReadableFolder(Set<MailFolder> readMailFolders, Iterable<MailFolder> mailFolders) {
+ if (mailFolders != null) {
+ for (MailFolder mailFolder : mailFolders) {
+ readMailFolders.add(mailFolder);
+ computeUserReadableFolder(readMailFolders, mailFolder.getChildren());
+ }
+ }
+ }
+
public PaginationResult<Email> search(EmailFilter emailFilter, FaxToMailUser user, PaginationParameter pagination) {
+
+ // compute rigths
+ MailFolderTopiaDao mailFolderDao = getPersistenceContext().getMailFolderDao();
+ Set<MailFolder> readMailFolders = new HashSet<MailFolder>();
+ // read rights for user
+ Iterable<MailFolder> mailFolders = mailFolderDao.forReadRightUsersContains(user).findAll();
+ computeUserReadableFolder(readMailFolders, mailFolders);
+ // read rigths for groups
+ if (user.getUserGroups() != null) {
+ for (FaxToMailUserGroup group : user.getUserGroups()) {
+ mailFolders = mailFolderDao.forReadRightGroupsContains(group).findAll();
+ computeUserReadableFolder(readMailFolders, mailFolders);
+ }
+ }
- EmailTopiaDao dao = getPersistenceContext().getEmailDao();
- PaginationResult<Email> result = dao.search(emailFilter, user, pagination);
+ // compute search
+ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
+ PaginationResult<Email> result = emailDao.search(emailFilter, readMailFolders, pagination);
+
return result;
}
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java 2014-06-30 15:35:05 UTC (rev 300)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java 2014-06-30 16:35:30 UTC (rev 301)
@@ -32,14 +32,9 @@
import java.util.Map;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
-import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.topia.persistence.TopiaEntities;
-import org.nuiton.util.beans.Binder;
-import org.nuiton.util.beans.BinderFactory;
import org.nuiton.util.pagination.PaginationParameter;
import com.franciaflex.faxtomail.persistence.entities.EmailTopiaDao;
@@ -47,11 +42,8 @@
import com.franciaflex.faxtomail.persistence.entities.MailFilter;
import com.franciaflex.faxtomail.persistence.entities.MailFilterTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
-import com.franciaflex.faxtomail.persistence.entities.MailFolderImpl;
import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
/**
* @author kmorin <kmorin(a)codelutin.com>
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java 2014-06-30 15:35:05 UTC (rev 300)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java 2014-06-30 16:35:30 UTC (rev 301)
@@ -26,7 +26,6 @@
import java.io.File;
import java.io.IOException;
-import java.io.ObjectInputStream.GetField;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/InitTestData.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/InitTestData.java 2014-06-30 15:35:05 UTC (rev 300)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/InitTestData.java 2014-06-30 16:35:30 UTC (rev 301)
@@ -167,6 +167,10 @@
FaxToMailUser.PROPERTY_LOGIN, "jbourgoin",
FaxToMailUser.PROPERTY_TRIGRAPH, "JBO");
+ // droits global à marc pour tout
+ franciaflex.addReadRightUsers(marc);
+ franciaflex = folderDao.update(franciaflex);
+
// import test csv
List<Range> ranges = null;
try (InputStream is = InitTestData.class.getResourceAsStream("/csv/ranges.csv")) {
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-06-30 15:35:05 UTC (rev 300)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css 2014-06-30 16:35:30 UTC (rev 301)
@@ -206,7 +206,6 @@
#ediCodeNumberField {
text: { model.getEdiCodeNumber() };
- editable: false;
}
#priorityLabel {
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-06-30 15:35:05 UTC (rev 300)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-06-30 16:35:30 UTC (rev 301)
@@ -218,7 +218,6 @@
#ediCodeNumberField {
text: { model.getEdiCodeNumber() };
- editable: false;
}
#priorityLabel {
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-06-30 15:35:05 UTC (rev 300)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-06-30 16:35:30 UTC (rev 301)
@@ -283,7 +283,6 @@
Object oldValue = getMinReceptionDate();
editObject.setMinReceptionDate(minReceptionDate);
firePropertyChanged(EmailFilter.PROPERTY_MIN_RECEPTION_DATE, oldValue, minReceptionDate);
- System.out.println(minReceptionDate);
}
public Date getMaxReceptionDate() {
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-06-30 15:35:05 UTC (rev 300)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-06-30 16:35:30 UTC (rev 301)
@@ -106,7 +106,7 @@
faxtomail.demande.demandStatus.label=Statut
faxtomail.demande.demandType.label=Type
faxtomail.demande.docType.label=Type
-faxtomail.demande.ediCodeNumber.label=
+faxtomail.demande.ediCodeNumber.label=Code EDI
faxtomail.demande.ediError.label=Retour EDI
faxtomail.demande.etatAttente.label=État attente
faxtomail.demande.fax.label=Fax
1
0
Author: echatellier
Date: 2014-06-30 17:35:05 +0200 (Mon, 30 Jun 2014)
New Revision: 300
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/300
Log:
Use topia stable
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-06-30 15:18:16 UTC (rev 299)
+++ trunk/pom.xml 2014-06-30 15:35:05 UTC (rev 300)
@@ -105,7 +105,7 @@
<nuitonWebVersion>1.16</nuitonWebVersion>
<eugeneVersion>2.11</eugeneVersion>
- <topiaVersion>3.0-SNAPSHOT</topiaVersion>
+ <topiaVersion>3.0-beta-7</topiaVersion>
<hibernateVersion>4.3.5.Final</hibernateVersion>
<h2Version>1.3.176</h2Version>
1
0
30 Jun '14
Author: echatellier
Date: 2014-06-30 17:18:16 +0200 (Mon, 30 Jun 2014)
New Revision: 299
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/299
Log:
Pagination de la recherche (sans les droits).
Reset de la pagination pour les actions de recherche et pour le changement de dossier dans l'arbre.
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.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/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
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -30,6 +30,8 @@
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
+import org.nuiton.util.pagination.PaginationParameter;
+import org.nuiton.util.pagination.PaginationResult;
public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> {
@@ -37,9 +39,11 @@
* Search for email using filter.
*
* @param emailFilter email filter
+ * @param user user (for rights compute)
+ * @param pagination pagination
* @return email list matching query filters
*/
- public List<Email> search(EmailFilter emailFilter) {
+ public PaginationResult<Email> search(EmailFilter emailFilter, FaxToMailUser user, PaginationParameter pagination) {
StringBuilder query = new StringBuilder("FROM " + Email.class.getName() + " E");
query.append(" WHERE 1 = 1");
@@ -289,12 +293,6 @@
query.append(")");
}
- // email recipient
- /*if (StringUtils.isNotBlank(emailFilter.getRecipient())) {
- query.append(" AND lower(E." + Email.PROPERTY_RECIPIENT + ") LIKE lower(:" + EmailFilter.PROPERTY_RECIPIENT + ")");
- args.put(EmailFilter.PROPERTY_RECIPIENT, "%" + emailFilter.getRecipient() + "%");
- }*/
-
// email etat attente
List<EtatAttente> etatAttente = emailFilter.getEtatAttente();
if (CollectionUtils.isNotEmpty(etatAttente)) {
@@ -326,12 +324,6 @@
query.append("))");
}
-// // email comment
-// if (StringUtils.isNotBlank(emailFilter.getBody())) {
-// query.append(" AND lower(E." + Email.PROPERTY_HTML_CONTENT + ") LIKE lower(:" + EmailFilter.PROPERTY_BODY + ")");
-// args.put(EmailFilter.PROPERTY_BODY, "%" + emailFilter.getBody() + "%");
-// }
-
// email localReference
if (StringUtils.isNotBlank(emailFilter.getLocalReference())) {
query.append(" AND (EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")");
@@ -341,7 +333,9 @@
query.append(")");
}
- return findAll(query.toString(), args);
+ // compute paginated
+ PaginationResult<Email> result = findPage(query.toString(), args, pagination);
+ return result;
}
/**
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -484,10 +484,10 @@
return email;
}
- public List<Email> search(EmailFilter emailFilter) {
+ public PaginationResult<Email> search(EmailFilter emailFilter, FaxToMailUser user, PaginationParameter pagination) {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
- List<Email> result = dao.search(emailFilter);
+ PaginationResult<Email> result = dao.search(emailFilter, user, pagination);
return result;
}
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java 2014-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -26,6 +26,7 @@
import java.io.File;
import java.io.IOException;
+import java.io.ObjectInputStream.GetField;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -43,6 +44,8 @@
import com.franciaflex.faxtomail.FaxToMailConfiguration;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaApplicationContext;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserTopiaDao;
import com.franciaflex.faxtomail.services.FaxToMailService;
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
@@ -61,6 +64,8 @@
protected List<FaxToMailTopiaPersistenceContext> openedTransactions = new LinkedList<>();
protected File databaseFile;
+
+ protected FaxToMailUser currentUser;
protected Map<String, String> getDatabaseConfiguration(String dataBase) {
Map<String, String> hibernateH2Config = new HashMap<String, String>();
@@ -144,12 +149,10 @@
serviceContext.setPersistenceContext(persistenceContext);
-// serviceContext.setStorageFile(new File (tempDirFile, UUID.randomUUID().toString()));
+ InitFaxToMailService initFaxToMailService = serviceContext.newService(InitFaxToMailService.class);
- InitFaxToMailService initExtranetService = serviceContext.newService(InitFaxToMailService.class);
+ initFaxToMailService.init();
- initExtranetService.init();
-
if (log.isTraceEnabled()) {
log.trace("closing transaction " + persistenceContext);
}
@@ -290,4 +293,11 @@
}
+ protected FaxToMailUser getCurrentUser() {
+ if (currentUser == null) {
+ FaxToMailUserTopiaDao faxToMailUserTopiaDao = serviceContext.getPersistenceContext().getFaxToMailUserDao();
+ currentUser = faxToMailUserTopiaDao.forLoginEquals("mlefebvre").findUnique();
+ }
+ return currentUser;
+ }
}
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -26,11 +26,12 @@
import java.io.IOException;
import java.util.Collections;
-import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.nuiton.util.pagination.PaginationParameter;
+import org.nuiton.util.pagination.PaginationResult;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
import com.franciaflex.faxtomail.persistence.entities.Email;
@@ -60,21 +61,23 @@
@Test
public void testSearch() {
+ PaginationParameter paginationParameter = PaginationParameter.of(0, 50);
+
// empty filter
EmailFilter filter = new EmailFilter();
- List<Email> emails = service.search(filter);
- Assert.assertEquals(10, emails.size());
+ PaginationResult<Email> emails = service.search(filter, getCurrentUser(), paginationParameter);
+ Assert.assertEquals(10, emails.getCount());
// client code filter
filter.setClientCode("9915");
- emails = service.search(filter);
- Assert.assertEquals(10, emails.size());
-
+ emails = service.search(filter, getCurrentUser(), paginationParameter);
+ Assert.assertEquals(10, emails.getCount());
+
// client code filter + subject filter
filter.setDemandObject("A+");
- emails = service.search(filter);
- Assert.assertEquals(0, emails.size());
-
+ emails = service.search(filter, getCurrentUser(), paginationParameter);
+ Assert.assertEquals(0, emails.getCount());
+
// some other fields just to test query syntax
filter.setMinReceptionDate(getServiceContext().getNow());
filter.setMaxReceptionDate(getServiceContext().getNow());
@@ -102,7 +105,7 @@
filter.setLocalReference("test");
filter.setMessage("test");
filter.setProjectReference("test");
- emails = service.search(filter);
- Assert.assertEquals(0, emails.size());
+ emails = service.search(filter, getCurrentUser(), paginationParameter);
+ Assert.assertEquals(0, emails.getCount());
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java 2014-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -24,9 +24,13 @@
* #L%
*/
+import static org.nuiton.i18n.I18n.t;
+
import java.util.ArrayList;
import java.util.List;
+import org.nuiton.util.pagination.PaginationResult;
+
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
@@ -34,8 +38,6 @@
import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIModel;
-import static org.nuiton.i18n.I18n.t;
-
/**
* @author Kevin Morin (Code Lutin)
* @since x.x
@@ -54,7 +56,9 @@
EmailFilter emailFilter = model.toEntity();
- List<Email> emails = getContext().getEmailService().search(emailFilter);
+ PaginationResult<Email> paginationResult = getContext().getEmailService().search(emailFilter,
+ getContext().getCurrentUser(), getModel().getPaginationParameter());
+ List<Email> emails = paginationResult.getElements();
List<DemandeUIModel> result = new ArrayList<>();
for (Email email : emails) {
DemandeUIModel demand = new DemandeUIModel();
@@ -68,5 +72,7 @@
}
}
model.setResults(result);
+ model.setPaginationParameter(paginationResult.getCurrentPage());
+ model.setPaginationResult(paginationResult);
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.java 2014-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -34,6 +34,8 @@
import java.util.ArrayList;
import java.util.List;
+import org.nuiton.util.pagination.PaginationResult;
+
import static org.nuiton.i18n.I18n.t;
/**
@@ -53,7 +55,9 @@
getContext().setSearch(model);
EmailFilter emailFilter = model.toEntity();
- List<Email> emails = getContext().getEmailService().search(emailFilter);
+ PaginationResult<Email> paginationResult = getContext().getEmailService().search(emailFilter,
+ getContext().getCurrentUser(), getModel().getPaginationParameter());
+ List<Email> emails = paginationResult.getElements();
List<DemandeUIModel> result = new ArrayList<>();
for (Email mail : emails) {
@@ -63,5 +67,7 @@
result.add(demand);
}
model.setResults(result);
+ model.setPaginationParameter(paginationResult.getCurrentPage());
+ model.setPaginationResult(paginationResult);
}
}
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-06-30 15:18:16 UTC (rev 299)
@@ -57,7 +57,7 @@
}
#demandNbField {
- text: { String.valueOf(model.getEmailNb()) };
+ text: { String.valueOf(model.getPaginationResult().getCount()) };
}
#quotationNbLabel {
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-06-30 15:18:16 UTC (rev 299)
@@ -97,7 +97,7 @@
<JLabel styleClass="horizontal-separator"/>
<JLabel text="faxtomail.demandeList.pages" />
<JButton text="faxtomail.demandeList.goToPreviousPage" onActionPerformed="handler.goToPreviousPage()"
- enabled="{model.getPaginationParameter().getPageNumber() > 0}" />
+ enabled="{model.getPaginationResult().hasPreviousPage()}" />
<JLabel text="{String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1)}" />
<JLabel styleClass="page-separator"/>
<JLabel text="{String.valueOf(model.getPaginationResult().getLastPage().getPageNumber() + 1)}" />
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -49,8 +49,10 @@
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 jaxx.runtime.JAXXUtil;
import jaxx.runtime.validator.swing.SwingValidator;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
@@ -58,6 +60,7 @@
import org.jdesktop.swingx.decorator.ComponentAdapter;
import org.jdesktop.swingx.decorator.HighlightPredicate;
import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
+import org.nuiton.util.pagination.PaginationParameter;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
@@ -68,6 +71,7 @@
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
+
import java.awt.*;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
@@ -129,6 +133,10 @@
model.addPropertyChangeListener(DemandeListUIModel.PROPERTY_SELECTED_FOLDER, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
+
+ // reset pagination when folder change
+ getModel().resetPaginationParameter();
+
MailFolder folder = (MailFolder) evt.getNewValue();
while (folder.getAllowCreateDemandIntoFolder() == null
&& folder.getParent() != null) {
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -60,7 +60,7 @@
protected PaginationParameter paginationParameter = PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, true);
- protected PaginationResult<Email> paginationResult;
+ protected PaginationResult<Email> paginationResult = PaginationResult.of(null, 0, paginationParameter);
protected List<DemandeUIModel> filteredEmails;
@@ -111,6 +111,10 @@
public PaginationParameter getPaginationParameter() {
return paginationParameter;
}
+
+ public void resetPaginationParameter() {
+ setPaginationParameter(PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, true));
+ }
public void setPaginationResult(PaginationResult<Email> paginationResult) {
PaginationResult<Email> oldValue = this.paginationResult;
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css 2014-06-30 15:18:16 UTC (rev 299)
@@ -19,6 +19,13 @@
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+.horizontal-separator {
+ text: " | ";
+}
+.page-separator {
+ text: "/";
+}
+
JSplitPane {
oneTouchExpandable:true;
}
@@ -260,7 +267,7 @@
#searchButton {
text: "faxtomail.search.button.label";
- _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SearchToGroupAction.class };
+ /* _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SearchToGroupAction.class };*/
}
#dataTable {
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx 2014-06-30 15:18:16 UTC (rev 299)
@@ -41,6 +41,8 @@
org.jdesktop.swingx.JXDatePicker
org.jdesktop.swingx.JXTitledPanel
org.jdesktop.swingx.JXTable
+
+ java.awt.FlowLayout
</import>
<script><![CDATA[
@@ -334,7 +336,7 @@
</JScrollPane>
<JPanel constraints='BorderLayout.SOUTH'>
- <JButton id="searchButton"/>
+ <JButton id="searchButton" onActionPerformed="handler.searchDemandes()" />
</JPanel>
</JPanel>
@@ -342,6 +344,19 @@
<JScrollPane constraints='BorderLayout.CENTER'>
<JXTable id='dataTable'/>
</JScrollPane>
+ <JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.SOUTH'>
+ <JLabel text="faxtomail.demandeList.totalCount" />
+ <JLabel text="{String.valueOf(model.getPaginationResult().getCount())}" />
+ <JLabel styleClass="horizontal-separator"/>
+ <JLabel text="faxtomail.demandeList.pages" />
+ <JButton text="faxtomail.demandeList.goToPreviousPage" onActionPerformed="handler.goToPreviousPage()"
+ enabled="{model.getPaginationResult().hasPreviousPage()}" />
+ <JLabel text="{String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1)}" />
+ <JLabel styleClass="page-separator"/>
+ <JLabel text="{String.valueOf(model.getPaginationResult().getLastPage().getPageNumber() + 1)}" />
+ <JButton text="faxtomail.demandeList.goToNextPage" onActionPerformed="handler.goToNextPage()"
+ enabled="{model.getPaginationResult().hasNextPage()}" />
+ </JPanel>
</JPanel>
</JSplitPane>
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -29,11 +29,14 @@
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;
import com.franciaflex.faxtomail.ui.swing.util.Cancelable;
+
import jaxx.runtime.validator.swing.SwingValidator;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
@@ -45,6 +48,7 @@
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
+
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
@@ -216,6 +220,48 @@
}
+ public void searchDemandes() {
+ 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"));
+ }
+ }
+
+ 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"));
+ }
+ }
+
+ public void goToPreviousPage() {
+ getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage());
+ 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"));
+ }
+ }
+
@Override
protected List<MailField> getColumns() {
List<MailField> tableColumns = getContext().getFaxToMailConfiguration().getSearchDisplayColumns();
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-06-30 15:18:16 UTC (rev 299)
@@ -19,6 +19,13 @@
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+.horizontal-separator {
+ text: " | ";
+}
+.page-separator {
+ text: "/";
+}
+
JSplitPane {
oneTouchExpandable:true;
}
@@ -300,7 +307,7 @@
#searchButton {
text: "faxtomail.search.button.label";
- _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SearchAction.class };
+ /* _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SearchAction.class }; */
}
#dataTable {
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx 2014-06-30 15:18:16 UTC (rev 299)
@@ -41,6 +41,8 @@
org.jdesktop.swingx.JXDatePicker
org.jdesktop.swingx.JXTitledPanel
org.jdesktop.swingx.JXTable
+
+ java.awt.FlowLayout
</import>
<script><![CDATA[
@@ -352,7 +354,7 @@
</JScrollPane>
<JPanel constraints='BorderLayout.SOUTH'>
- <JButton id="searchButton"/>
+ <JButton id="searchButton" onActionPerformed="handler.searchDemandes()" />
</JPanel>
</JPanel>
@@ -362,6 +364,19 @@
onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
+ <JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.SOUTH'>
+ <JLabel text="faxtomail.demandeList.totalCount" />
+ <JLabel text="{String.valueOf(model.getPaginationResult().getCount())}" />
+ <JLabel styleClass="horizontal-separator"/>
+ <JLabel text="faxtomail.demandeList.pages" />
+ <JButton text="faxtomail.demandeList.goToPreviousPage" onActionPerformed="handler.goToPreviousPage()"
+ enabled="{model.getPaginationResult().hasPreviousPage()}" />
+ <JLabel text="{String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1)}" />
+ <JLabel styleClass="page-separator"/>
+ <JLabel text="{String.valueOf(model.getPaginationResult().getLastPage().getPageNumber() + 1)}" />
+ <JButton text="faxtomail.demandeList.goToNextPage" onActionPerformed="handler.goToNextPage()"
+ enabled="{model.getPaginationResult().hasNextPage()}" />
+ </JPanel>
</JPanel>
</JSplitPane>
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -26,19 +26,24 @@
import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.MailField;
import com.franciaflex.faxtomail.services.service.ReferentielService;
+import com.franciaflex.faxtomail.ui.swing.actions.LoadFolderEmailsAction;
import com.franciaflex.faxtomail.ui.swing.actions.SearchAction;
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler;
import com.franciaflex.faxtomail.ui.swing.util.CloseableUI;
import com.franciaflex.faxtomail.ui.swing.util.DemandeTableModel;
+
import jaxx.runtime.validator.swing.SwingValidator;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
import javax.swing.*;
+
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Arrays;
@@ -176,6 +181,48 @@
}
+ public void searchDemandes() {
+ 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"));
+ }
+ }
+
+ 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"));
+ }
+ }
+
+ public void goToPreviousPage() {
+ getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage());
+ 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"));
+ }
+ }
+
@Override
protected List<MailField> getColumns() {
List<MailField> tableColumns = getContext().getFaxToMailConfiguration().getSearchDisplayColumns();
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-06-30 14:14:09 UTC (rev 298)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-06-30 15:18:16 UTC (rev 299)
@@ -29,9 +29,12 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
+import org.nuiton.util.pagination.PaginationParameter;
+import org.nuiton.util.pagination.PaginationResult;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
import com.franciaflex.faxtomail.persistence.entities.DemandType;
+import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.EtatAttente;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
@@ -51,9 +54,13 @@
public static final String PROPERTY_RESULTS = "results";
public static final String PROPERTY_MENU_ENABLED = "menuEnabled";
public static final String PROPERTY_GROUP_ENABLED = "groupEnabled";
+ public static final String PROPERTY_PAGINATION_PARAMETER = "paginationParameter";
+ public static final String PROPERTY_PAGINATION_RESULT = "paginationResult";
protected final EmailFilter editObject = new EmailFilter();
+ protected PaginationParameter paginationParameter = PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, true);
+ protected PaginationResult<Email> paginationResult = PaginationResult.of(null, 0, paginationParameter);
protected List<DemandeUIModel> results;
protected boolean menuEnabled;
@@ -82,16 +89,6 @@
return editObject.getSender();
}
- /*public void setRecipient(String recipient) {
- Object oldValue = getRecipient();
- editObject.setRecipient(recipient);
- firePropertyChanged(EmailFilter.PROPERTY_RECIPIENT, oldValue, recipient);
- }
-
- public String getRecipient() {
- return editObject.getRecipient();
- }*/
-
public void setDemandObject(String demandObject) {
Object oldValue = getDemandObject();
editObject.setDemandObject(demandObject);
@@ -131,16 +128,6 @@
public String getBody() {
return editObject.getBody();
}
-//
-// public void setCommandNumber(String commandNumber) {
-// Object oldValue = getCommandNumber();
-// editObject.setCommandNumber(commandNumber);
-// firePropertyChanged(EmailFilter.PROPERTY_COMMAND_NUMBER, oldValue, commandNumber);
-// }
-//
-// public String getCommandNumber() {
-// return editObject.getCommandNumber();
-// }
public void setEtatAttente(List<EtatAttente> etatAttente) {
editObject.setEtatAttente(etatAttente);
@@ -407,6 +394,30 @@
firePropertyChanged(PROPERTY_RESULTS, null, results);
}
+ public void setPaginationParameter(PaginationParameter paginationParameter) {
+ Object oldValue = this.paginationParameter;
+ this.paginationParameter = paginationParameter;
+ firePropertyChanged(PROPERTY_PAGINATION_PARAMETER, oldValue, paginationParameter);
+ }
+
+ public PaginationParameter getPaginationParameter() {
+ return paginationParameter;
+ }
+
+ public void resetPaginationParameter() {
+ setPaginationParameter(PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, true));
+ }
+
+ public void setPaginationResult(PaginationResult<Email> paginationResult) {
+ Object oldValue = this.paginationResult;
+ this.paginationResult = paginationResult;
+ firePropertyChanged(PROPERTY_PAGINATION_RESULT, oldValue, paginationResult);
+ }
+
+ public PaginationResult<Email> getPaginationResult() {
+ return paginationResult;
+ }
+
public boolean isMenuEnabled() {
return menuEnabled;
}
1
0
Author: echatellier
Date: 2014-06-30 16:14:09 +0200 (Mon, 30 Jun 2014)
New Revision: 298
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/298
Log:
Use some release
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-06-30 12:18:46 UTC (rev 297)
+++ trunk/pom.xml 2014-06-30 14:14:09 UTC (rev 298)
@@ -104,7 +104,7 @@
<nuitonValidatorVersion>3.0-rc-1</nuitonValidatorVersion>
<nuitonWebVersion>1.16</nuitonWebVersion>
- <eugeneVersion>2.11-SNAPSHOT</eugeneVersion>
+ <eugeneVersion>2.11</eugeneVersion>
<topiaVersion>3.0-SNAPSHOT</topiaVersion>
<hibernateVersion>4.3.5.Final</hibernateVersion>
<h2Version>1.3.176</h2Version>
@@ -541,7 +541,7 @@
<dependency>
<groupId>org.nuiton.js</groupId>
<artifactId>nuiton-js-bootstrap</artifactId>
- <version>3.2.0-1-SNAPSHOT</version>
+ <version>3.2.0-1</version>
<scope>runtime</scope>
</dependency>
@@ -589,7 +589,7 @@
<dependency>
<groupId>org.nuiton.js</groupId>
<artifactId>nuiton-js-angularjs</artifactId>
- <version>1.2.18-1-SNAPSHOT</version>
+ <version>1.2.18-1</version>
<scope>runtime</scope>
</dependency>
1
0
r297 - in trunk: faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande faxtomail-ui-swing/src/main/resources/i18n faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job
by echatellier@users.forge.codelutin.com 30 Jun '14
by echatellier@users.forge.codelutin.com 30 Jun '14
30 Jun '14
Author: echatellier
Date: 2014-06-30 14:18:46 +0200 (Mon, 30 Jun 2014)
New Revision: 297
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/297
Log:
Pagination de la liste des mails (par dossier)
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/LoadFolderEmailsAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenAttachmentAction.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/resources/i18n/faxtomail-ui-swing_fr_FR.properties
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-06-30 11:39:20 UTC (rev 296)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-06-30 12:18:46 UTC (rev 297)
@@ -51,8 +51,8 @@
import com.franciaflex.faxtomail.persistence.entities.EdiReturn;
import com.franciaflex.faxtomail.persistence.entities.EdiReturnTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.MailField;
+import com.google.common.base.Function;
-import com.google.common.base.Function;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.io.IOUtils;
@@ -67,6 +67,8 @@
import org.nuiton.topia.persistence.TopiaEntities;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
+import org.nuiton.util.pagination.PaginationParameter;
+import org.nuiton.util.pagination.PaginationResult;
import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.persistence.entities.AttachmentFile;
@@ -415,16 +417,19 @@
}
}
- public List<Email> getEmailForFolder(MailFolder folder) {
+ public PaginationResult<Email> getEmailForFolder(MailFolder folder, PaginationParameter page) {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
- List<Email> result = new ArrayList<>(dao.forMailFolderEquals(folder)
- .addNull(Email.PROPERTY_ARCHIVE_DATE)
- .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED)
- .setOrderByArguments(Email.PROPERTY_RECEPTION_DATE)
- .findAll());
+ PaginationResult<Email> result = dao.forMailFolderEquals(folder)
+ .addNull(Email.PROPERTY_ARCHIVE_DATE)
+ .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED)
+ .findPage(page);
return result;
}
+ /**
+ * @deprecated Ne pas recuperer trop de mails
+ */
+ @Deprecated
public List<Email> getEmailForFolderAndSubfolders(MailFolder folder) {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
List<MailFolder> folders = new ArrayList<>();
@@ -433,6 +438,7 @@
.findAll());
}
+ @Deprecated
protected List<MailFolder> getChildrenRecursively(MailFolder folder) {
List<MailFolder> folders = new ArrayList<>();
folders.add(folder);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-06-30 11:39:20 UTC (rev 296)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-06-30 12:18:46 UTC (rev 297)
@@ -30,9 +30,11 @@
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIModel;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
+import org.nuiton.util.pagination.PaginationResult;
import java.util.ArrayList;
import java.util.List;
@@ -76,7 +78,8 @@
DemandeListUIModel model = getModel();
MailFolder folder = model.getSelectedFolder();
- List<Email> emails = getContext().getEmailService().getEmailForFolder(folder);
+ PaginationResult<Email> paginationResult = getContext().getEmailService().getEmailForFolder(folder, model.getPaginationParameter());
+ List<Email> emails = paginationResult.getElements();
log.info(emails.size() + " emails in folder " + folder.getName());
List<DemandeUIModel> demands = new ArrayList<DemandeUIModel>();
@@ -88,5 +91,7 @@
}
model.setEmails(demands);
+ model.setPaginationParameter(paginationResult.getCurrentPage());
+ model.setPaginationResult(paginationResult);
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenAttachmentAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenAttachmentAction.java 2014-06-30 11:39:20 UTC (rev 296)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenAttachmentAction.java 2014-06-30 12:18:46 UTC (rev 297)
@@ -31,10 +31,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.DesktopUtil;
-import java.io.File;
-
import static org.nuiton.i18n.I18n.t;
/**
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-06-30 11:39:20 UTC (rev 296)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-06-30 12:18:46 UTC (rev 297)
@@ -23,6 +23,10 @@
text: " | ";
}
+.page-separator {
+ text: "/";
+}
+
#mainSplitPane {
resizeWeight: 0.2;
}
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-06-30 11:39:20 UTC (rev 296)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-06-30 12:18:46 UTC (rev 297)
@@ -91,6 +91,19 @@
onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
+ <JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.SOUTH'>
+ <JLabel text="faxtomail.demandeList.totalCount" />
+ <JLabel text="{String.valueOf(model.getPaginationResult().getCount())}" />
+ <JLabel styleClass="horizontal-separator"/>
+ <JLabel text="faxtomail.demandeList.pages" />
+ <JButton text="faxtomail.demandeList.goToPreviousPage" onActionPerformed="handler.goToPreviousPage()"
+ enabled="{model.getPaginationParameter().getPageNumber() > 0}" />
+ <JLabel text="{String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1)}" />
+ <JLabel styleClass="page-separator"/>
+ <JLabel text="{String.valueOf(model.getPaginationResult().getLastPage().getPageNumber() + 1)}" />
+ <JButton text="faxtomail.demandeList.goToNextPage" onActionPerformed="handler.goToNextPage()"
+ enabled="{model.getPaginationResult().hasNextPage()}" />
+ </JPanel>
</JPanel>
</JSplitPane>
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-06-30 11:39:20 UTC (rev 296)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-06-30 12:18:46 UTC (rev 297)
@@ -295,6 +295,22 @@
}
+ public void goToNextPage() {
+ getModel().setPaginationParameter(getModel().getPaginationResult().getNextPage());
+ LoadFolderEmailsAction loadFolderEmailsAction =
+ getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this,
+ LoadFolderEmailsAction.class);
+ getContext().getActionEngine().runAction(loadFolderEmailsAction);
+ }
+
+ public void goToPreviousPage() {
+ getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage());
+ LoadFolderEmailsAction loadFolderEmailsAction =
+ getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this,
+ LoadFolderEmailsAction.class);
+ getContext().getActionEngine().runAction(loadFolderEmailsAction);
+ }
+
@Override
public void initDemandeTable(final JXTable table, boolean sortable) {
super.initDemandeTable(table, sortable);
@@ -529,5 +545,4 @@
ArchiveFromListAction.class);
getContext().getActionEngine().runAction(saveAction);
}
-
}
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-06-30 11:39:20 UTC (rev 296)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-06-30 12:18:46 UTC (rev 297)
@@ -22,12 +22,16 @@
* #L%
*/
-import com.franciaflex.faxtomail.persistence.entities.MailFolder;
-import org.jdesktop.beans.AbstractSerializableBean;
-
import java.util.ArrayList;
import java.util.List;
+import org.jdesktop.beans.AbstractSerializableBean;
+import org.nuiton.util.pagination.PaginationParameter;
+import org.nuiton.util.pagination.PaginationResult;
+
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+
/**
* @author kmorin <kmorin(a)codelutin.com>
* @since x.x
@@ -36,6 +40,8 @@
public static final String PROPERTY_FOLDERS = "folders";
public static final String PROPERTY_EMAILS = "emails";
+ public static final String PROPERTY_PAGINATION_PARAMETER = "paginationParameter";
+ public static final String PROPERTY_PAGINATION_RESULT = "paginationResult";
public static final String PROPERTY_FILTERED_EMAILS = "filteredEmails";
public static final String PROPERTY_CURRENT_EMAILS = "currentEmails";
public static final String PROPERTY_EMAIL_NB = "emailNb";
@@ -52,6 +58,10 @@
protected List<DemandeUIModel> emails;
+ protected PaginationParameter paginationParameter = PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, true);
+
+ protected PaginationResult<Email> paginationResult;
+
protected List<DemandeUIModel> filteredEmails;
protected List<DemandeUIModel> currentEmails;
@@ -92,6 +102,26 @@
firePropertyChange(PROPERTY_EMAILS, null, emails);
}
+ public void setPaginationParameter(PaginationParameter paginationParameter) {
+ PaginationParameter oldValue = this.paginationParameter;
+ this.paginationParameter = paginationParameter;
+ firePropertyChange(PROPERTY_PAGINATION_PARAMETER, oldValue, paginationParameter);
+ }
+
+ public PaginationParameter getPaginationParameter() {
+ return paginationParameter;
+ }
+
+ public void setPaginationResult(PaginationResult<Email> paginationResult) {
+ PaginationResult<Email> oldValue = this.paginationResult;
+ this.paginationResult = paginationResult;
+ firePropertyChange(PROPERTY_PAGINATION_RESULT, oldValue, paginationResult);
+ }
+
+ public PaginationResult<Email> getPaginationResult() {
+ return paginationResult;
+ }
+
public List<DemandeUIModel> getFilteredEmails() {
return filteredEmails;
}
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-06-30 11:39:20 UTC (rev 296)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-06-30 12:18:46 UTC (rev 297)
@@ -1,4 +1,5 @@
\ |\ =
+/=
\:=
X=
application.action.create.error=
@@ -155,6 +156,9 @@
faxtomail.demandeList.action.reply=Répondre
faxtomail.demandeList.action.reply.tip=Répondre
faxtomail.demandeList.demandNbLabel=Nombre de demandes
+faxtomail.demandeList.goToNextPage=>
+faxtomail.demandeList.goToPreviousPage=<
+faxtomail.demandeList.pages=Pages \:
faxtomail.demandeList.pfNbLabel=Nombre de produits finis
faxtomail.demandeList.quotationNbLabel=Nombre de devis
faxtomail.demandeList.savNbLabel=Nombre de SAV
@@ -203,6 +207,7 @@
faxtomail.demandeList.table.header.waitingState=État attente
faxtomail.demandeList.table.header.waitingState.tip=État attente
faxtomail.demandeList.title=Liste des éléments
+faxtomail.demandeList.totalCount=Nombre de demandes \:
faxtomail.historyList.action.tip=Historique
faxtomail.historyList.text=Historique (%s)
faxtomail.historyList.title=Historique
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-06-30 11:39:20 UTC (rev 296)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-06-30 12:18:46 UTC (rev 297)
@@ -26,19 +26,11 @@
import static org.nuiton.i18n.I18n.t;
-import java.awt.image.RenderedImage;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
-import java.io.FileReader;
import java.io.IOException;
-import java.io.StringBufferInputStream;
import java.io.UnsupportedEncodingException;
-import java.net.URL;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.text.DateFormat;
import java.util.ArrayList;
1
0
30 Jun '14
Author: kmorin
Date: 2014-06-30 13:39:20 +0200 (Mon, 30 Jun 2014)
New Revision: 296
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/296
Log:
- d?\195?\169sactivation de l'impression des pj non editables
- d?\195?\169placement des archives dans le dossier d'archive
- prise ou non de l'?\195?\169l?\195?\169ment ?\195?\160 l'impression
Modified:
trunk/faxtomail-persistence/src/main/resources/faxToMail.properties
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveAndOpenDialogAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
Modified: trunk/faxtomail-persistence/src/main/resources/faxToMail.properties
===================================================================
--- trunk/faxtomail-persistence/src/main/resources/faxToMail.properties 2014-06-30 11:16:33 UTC (rev 295)
+++ trunk/faxtomail-persistence/src/main/resources/faxToMail.properties 2014-06-30 11:39:20 UTC (rev 296)
@@ -24,7 +24,7 @@
hibernate.dialect=org.hibernate.dialect.H2Dialect
hibernate.connection.driver_class=org.h2.Driver
-hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data;MODE=MSSQLServer
+hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE
hibernate.connection.username=sa
hibernate.connection.password=
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java 2014-06-30 11:16:33 UTC (rev 295)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java 2014-06-30 11:39:20 UTC (rev 296)
@@ -25,11 +25,17 @@
*/
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.Iterables;
import javax.swing.*;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
import static org.nuiton.i18n.I18n.t;
@@ -64,6 +70,24 @@
model.setArchiveDate(new Date());
model.setDemandStatus(DemandStatus.ARCHIVED);
model.setTakenBy(null);
+
+ MailFolder folder = model.getMailFolder();
+ MailFolder archiveChild = null;
+ do {
+ archiveChild = Iterables.find(folder.getChildren(), new Predicate<MailFolder>() {
+ @Override
+ public boolean apply(MailFolder mailFolder) {
+ return mailFolder.isArchiveFolder();
+ }
+ });
+ folder = folder.getParent();
+
+ } while (archiveChild == null && folder != null);
+
+ if (archiveChild != null) {
+ model.setMailFolder(archiveChild);
+ }
+
super.doAction();
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveAndOpenDialogAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveAndOpenDialogAction.java 2014-06-30 11:16:33 UTC (rev 295)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveAndOpenDialogAction.java 2014-06-30 11:39:20 UTC (rev 296)
@@ -24,6 +24,8 @@
* #L%
*/
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI;
@@ -40,23 +42,26 @@
protected FaxToMailUI dialogContent;
protected String title;
protected Dimension dimension;
+ protected boolean takeDemand;
public SaveAndOpenDialogAction(DemandeUIHandler handler,
boolean modal,
FaxToMailUI dialogContent,
String title,
- Dimension dimension) {
+ Dimension dimension,
+ boolean takeDemand) {
super(handler);
this.modal = modal;
this.dialogContent = dialogContent;
this.title = title;
this.dimension = dimension;
+ this.takeDemand = takeDemand;
}
@Override
public void doAction() throws Exception {
DemandeUIModel model = getModel();
- if (model.getTakenBy() == null) {
+ if (takeDemand && model.getTakenBy() == null) {
model.setTakenBy(getContext().getCurrentUser());
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java 2014-06-30 11:16:33 UTC (rev 295)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java 2014-06-30 11:39:20 UTC (rev 296)
@@ -29,6 +29,7 @@
import com.franciaflex.faxtomail.ui.swing.actions.EditAttachmentAction;
import com.franciaflex.faxtomail.ui.swing.actions.OpenAttachmentAction;
import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler;
+import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
@@ -79,9 +80,6 @@
private static final Log log = LogFactory.getLog(AttachmentEditorUIHandler.class);
- public static final List<String> EDITABLE_EXTENSIONS = Lists.newArrayList("PDF", "PNG", "JPG", "JPEG", "GIF",
- "TIF", "BMP", "TXT");
-
protected OpenAttachmentAction openAttachmentAction = new OpenAttachmentAction(this);
protected EditAttachmentAction editAttachmentAction = new EditAttachmentAction(this);
@@ -190,8 +188,7 @@
public void editAttachment(Attachment attachment) {
AttachmentEditorUIModel model = getModel();
- String extension = FileUtil.extension(attachment.getOriginalFileName());
- if (model.isEditable() && EDITABLE_EXTENSIONS.contains(extension.toUpperCase())) {
+ if (model.isEditable() && FaxToMailUIUtil.isFileTypeEditable(attachment.getOriginalFileName())) {
editAttachmentAction.setAttachment(attachment);
getContext().getActionFactory().createUIAction(null, editAttachmentAction).actionPerformed(null);
@@ -229,8 +226,8 @@
}
public boolean isAttachmentEditable(Attachment attachment) {
- String extension = FileUtil.extension(attachment.getOriginalFileName());
- return EDITABLE_EXTENSIONS.contains(extension.toUpperCase()) && (getModel().isEditable() || attachment.getEditedFileName() != null);
+ return FaxToMailUIUtil.isFileTypeEditable(attachment.getOriginalFileName())
+ && (getModel().isEditable() || attachment.getEditedFileName() != null);
}
public boolean isAttachmentRemovable(Attachment attachment) {
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-06-30 11:16:33 UTC (rev 295)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-06-30 11:39:20 UTC (rev 296)
@@ -495,7 +495,12 @@
if (attachmentFile == null) {
attachmentFile = attachment.getOriginalFile();
}
- FaxToMailUIUtil.print(attachmentFile, true);
+ boolean printable = FaxToMailUIUtil.isFileTypeEditable(attachmentFile.getFilename());
+ if (printable) {
+ FaxToMailUIUtil.print(attachmentFile, true);
+ } else {
+ //TODO kmorin 20140629 add to errors
+ }
}
}
}
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-06-30 11:16:33 UTC (rev 295)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-06-30 11:39:20 UTC (rev 296)
@@ -328,7 +328,8 @@
true,
dialogContent,
t("faxtomail.chooseMailFolder.title"),
- new Dimension(350, 500));
+ new Dimension(350, 500),
+ true);
getContext().getActionFactory().createUIAction(null, action).actionPerformed(null);
}
@@ -355,11 +356,19 @@
DemandeUI demandeUI = (DemandeUI) getTabPanel().getSelectedComponent();
AttachmentToPrintChooserUI dialogContent = new AttachmentToPrintChooserUI(ui, demandeUI.getModel());
+
+ MailFolder selectedFolder = getModel().getCurrentDemand().getMailFolder();
+ while (selectedFolder.getParent() != null && selectedFolder.getPrintActionEqualTakeAction() == null) {
+ selectedFolder = selectedFolder.getParent();
+ }
+ boolean take = Boolean.TRUE.equals(selectedFolder.getPrintActionEqualTakeAction());
+
SaveAndOpenDialogAction action = new SaveAndOpenDialogAction(demandeUI.getHandler(),
true,
dialogContent,
t("faxtomail.chooseAttachmentToPrint.title"),
- new Dimension(350, 500));
+ new Dimension(350, 500),
+ take);
getContext().getActionFactory().createUIAction(null, action).actionPerformed(null);
}
@@ -393,7 +402,8 @@
false,
dialogContent,
t("faxtomail.reply.title", currentDemand.getObject()),
- new Dimension(800, 600));
+ new Dimension(800, 600),
+ true);
getContext().getActionFactory().createUIAction(null, action).actionPerformed(null);
}
@@ -407,7 +417,8 @@
false,
dialogContent,
t("faxtomail.searchToGroup.title", demandeUI.getModel().getObject()),
- getContext().getMainUI().getSize());
+ getContext().getMainUI().getSize(),
+ true);
getContext().getActionFactory().createUIAction(null, action).actionPerformed(null);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java 2014-06-30 11:16:33 UTC (rev 295)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java 2014-06-30 11:39:20 UTC (rev 296)
@@ -92,7 +92,6 @@
if (attachment.getOriginalFile() == null) {
FaxToMailUIUtil.forceAttachmentFileLoading(getContext(), attachment);
-
}
createCheckBox(attachment.getOriginalFile());
@@ -104,22 +103,31 @@
}
protected void createCheckBox(final AttachmentFile attachmentFile) {
- String attachmentName = attachmentFile != null ? attachmentFile.getFilename() : "";
- JCheckBox checkBox = new JCheckBox(attachmentName, true);
+ if (attachmentFile == null) {
+ return;
+ }
+ String attachmentName = attachmentFile.getFilename();
+ boolean printable = FaxToMailUIUtil.isFileTypeEditable(attachmentName);
+
+ JCheckBox checkBox = new JCheckBox(attachmentName, printable);
+ checkBox.setEnabled(printable);
ui.getAttachmentPanel().add(checkBox);
- getModel().addAttachmentToPrint(attachmentFile);
- checkBox.addItemListener(new ItemListener() {
- @Override
- public void itemStateChanged(ItemEvent e) {
- log.info("state changed " + e.getStateChange());
- if (e.getStateChange() == ItemEvent.SELECTED) {
- getModel().addAttachmentToPrint(attachmentFile);
- } else {
- getModel().removeAttachmentToPrint(attachmentFile);
+ if (printable) {
+ getModel().addAttachmentToPrint(attachmentFile);
+
+ checkBox.addItemListener(new ItemListener() {
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+ log.info("state changed " + e.getStateChange());
+ if (e.getStateChange() == ItemEvent.SELECTED) {
+ getModel().addAttachmentToPrint(attachmentFile);
+ } else {
+ getModel().removeAttachmentToPrint(attachmentFile);
+ }
}
- }
- });
+ });
+ }
}
@Override
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-06-30 11:16:33 UTC (rev 295)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-06-30 11:39:20 UTC (rev 296)
@@ -63,6 +63,7 @@
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
+import com.google.common.collect.Lists;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.JAXXUtil;
@@ -102,6 +103,9 @@
/** Logger. */
private static final Log log = LogFactory.getLog(FaxToMailUIUtil.class);
+ public static final List<String> EDITABLE_EXTENSIONS = Lists.newArrayList("PDF", "PNG", "JPG", "JPEG", "GIF",
+ "TIF", "BMP", "TXT");
+
private FaxToMailUIUtil() {
// never instanciate util class
}
@@ -272,6 +276,11 @@
return FileUtil.extension(file.getFilename()).toUpperCase().equals("TIF");
}
+ public static boolean isFileTypeEditable(String fileName) {
+ String extension = FileUtil.extension(fileName);
+ return EDITABLE_EXTENSIONS.contains(extension.toUpperCase());
+ }
+
public static void setEmailContentInTextPane(DemandeUIHandler handler, JTextPane textPane, DemandeUIModel demandeUIModel) {
String content = demandeUIModel.getHtmlContent();
if (content != null) {
1
0
r295 - in trunk: faxtomail-persistence/src/main/java/com/franciaflex/faxtomail faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service
by echatellier@users.forge.codelutin.com 30 Jun '14
by echatellier@users.forge.codelutin.com 30 Jun '14
30 Jun '14
Author: echatellier
Date: 2014-06-30 13:16:33 +0200 (Mon, 30 Jun 2014)
New Revision: 295
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/295
Log:
Fix ldap connection with sAMAccountName
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-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-06-30 08:20:04 UTC (rev 294)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-06-30 11:16:33 UTC (rev 295)
@@ -275,10 +275,6 @@
return applicationConfig.getOptionAsList(FaxToMailConfigurationOption.LDAP_ADMIN_GROUPS.getKey()).getOption();
}
- public String getLdapPrincipalDomain() {
- return applicationConfig.getOption(FaxToMailConfigurationOption.LDAP_PRINCIPAL_DOMAIN.getKey());
- }
-
public String getLdapTestPrincipal() {
return applicationConfig.getOption(FaxToMailConfigurationOption.LDAP_TEST_PRINCIPAL.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-06-30 08:20:04 UTC (rev 294)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-06-30 11:16:33 UTC (rev 295)
@@ -120,10 +120,6 @@
"faxtomail.ldap.admin.groups",
"DN du groupe ldap ayant les autorisations d'accéder à la partie admin de l'interface web", null, String.class),
- LDAP_PRINCIPAL_DOMAIN(
- "faxtomail.ldap.principal.domain",
- "Domaine des principals utilisés par l'authentification kerberos", "mac-groupe.net", String.class),
-
LDAP_TEST_PRINCIPAL(
"faxtomail.ldap.test.principal",
"Principal de test pour forcer un utilsateur particulier", null, String.class),
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-06-30 08:20:04 UTC (rev 294)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java 2014-06-30 11:16:33 UTC (rev 295)
@@ -76,12 +76,13 @@
List<SearchResultEntry> userEntries = userResult.getSearchEntries();
for (SearchResultEntry userEntry : userEntries) {
- String login = userEntry.getAttributeValue("sn");
+ String login = userEntry.getAttributeValue("sAMAccountName");
if (login == null) {
if (log.isWarnEnabled()) {
- log.warn("Null sn for DN " + userEntry.getDN());
+ log.warn("Null sAMAccountName for DN " + userEntry.getDN());
}
} else {
+ login = login.toLowerCase();
updateUserFormLdap(userEntry, login);
}
}
@@ -154,6 +155,7 @@
FaxToMailUser result;
+ login = login.toLowerCase();
try {
// first connexion to get full user login
LDAPConnection adminConnect = new LDAPConnection();
@@ -165,7 +167,7 @@
SearchResultEntry searchEntry = null;
if (adminConnect.isConnected()) {
// sn est le login interne à franciaflex
- String filter = String.format("(sn=%s)", login);
+ String filter = String.format("(sAMAccountName=%s)", login);
SearchResult searchResult = adminConnect.search(getApplicationConfig().getLdapBaseDn(), SearchScope.SUB, filter);
if (!searchResult.getSearchEntries().isEmpty()) {
searchEntry = searchResult.getSearchEntries().get(0);
@@ -212,14 +214,16 @@
*
* This method doesn't require any password.
*
- * @param principal user principal (without domain)
+ * @param login user principal (without domain)
* @return user instance
* @throws AuthenticationException is user can't be found in ldap
*/
- public FaxToMailUser getUserFromPrincipal(String principal) throws AuthenticationException {
+ public FaxToMailUser getUserFromPrincipal(String login) throws AuthenticationException {
FaxToMailUser result;
+ login = login.toLowerCase();
+
try {
// first connexion to get full user login
LDAPConnection adminConnect = new LDAPConnection();
@@ -227,21 +231,17 @@
adminConnect.bind(getApplicationConfig().getLdapUser(), getApplicationConfig().getLdapPassword());
// search user in ldap
- String login = null;
SearchResultEntry searchEntry = null;
if (adminConnect.isConnected()) {
- // userPrincipalName est l'identifiant kerberos
- // xxx(a)mac-groupe.net
- String filter = String.format("(userPrincipalName=%s@%s)", principal, getApplicationConfig().getLdapPrincipalDomain());
+ // sAMAccountName est l'identifiant kerberos
+ String filter = String.format("(sAMAccountName=%s)", login);
SearchResult searchResult = adminConnect.search(getApplicationConfig().getLdapBaseDn(), SearchScope.SUB, filter);
if (!searchResult.getSearchEntries().isEmpty()) {
searchEntry = searchResult.getSearchEntries().get(0);
- // sn est le 'login' interne a franciaflex
- login = searchEntry.getAttributeValue("sn");
}
adminConnect.close();
} else {
- throw new AuthenticationException("Utilisateur inconnu : " + principal);
+ throw new AuthenticationException("Utilisateur inconnu : " + login);
}
if( searchEntry != null ) {
@@ -254,7 +254,7 @@
result = new FaxToMailUserImpl();
faxToMailUserBinder.copyExcluding(user, result);
} else {
- throw new AuthenticationException("Utilisateur inconnu : " + principal);
+ throw new AuthenticationException("Utilisateur inconnu : " + login);
}
} catch (LDAPException ex) {
if (log.isWarnEnabled()) {
1
0