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
August 2014
- 4 participants
- 141 discussions
r507 - 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/java/com/franciaflex/faxtomail/ui/swing/util
by kmorin@users.forge.codelutin.com 08 Aug '14
by kmorin@users.forge.codelutin.com 08 Aug '14
08 Aug '14
Author: kmorin
Date: 2014-08-08 17:19:04 +0200 (Fri, 08 Aug 2014)
New Revision: 507
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/507
Log:
v?\195?\169rification du pris par avant d'ouvrir le mail
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveFromListAction.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/DemandeUI.css
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/util/FaxToMailUIUtil.java
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 15:17:08 UTC (rev 506)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 15:19:04 UTC (rev 507)
@@ -556,7 +556,6 @@
.addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED)
.addAllFetches(
Email.PROPERTY_DEMAND_TYPE,
- Email.PROPERTY_DEMAND_TYPE + "." + DemandType.PROPERTY_FIELDS,
Email.PROPERTY_RANGE_ROW,
Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
Email.PROPERTY_HISTORY,
@@ -566,8 +565,6 @@
Email.PROPERTY_ATTACHMENT,
Email.PROPERTY_TAKEN_BY,
Email.PROPERTY_CLIENT,
- Email.PROPERTY_EMAIL_GROUP,
- Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL,
Email.PROPERTY_ETAT_ATTENTE,
Email.PROPERTY_PRIORITY
)
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java 2014-08-08 15:17:08 UTC (rev 506)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java 2014-08-08 15:19:04 UTC (rev 507)
@@ -322,7 +322,7 @@
protected void createEmails(Random random, HistoryTopiaDao historyDao, RangeRowTopiaDao rangeRowDao, EmailTopiaDao emailDao,
List<Range> ranges, List<Client> clients, List<DemandType> types, List<Priority> priorities,
MailFolder folder, FaxToMailUser user) throws InvalidClientException {
- int r = random.nextInt(10) + 5;
+ int r = random.nextInt(100) + 50;
for (int i = 0 ; i < r ; i++) {
createEmail(random, historyDao, rangeRowDao, emailDao, ranges, clients, types, priorities, folder, user);
}
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java 2014-08-08 15:17:08 UTC (rev 506)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java 2014-08-08 15:19:04 UTC (rev 507)
@@ -70,10 +70,10 @@
@Override
public FaxToMailUser getUserByLogin(String login) {
FaxToMailUserTopiaDao dao = getPersistenceContext().getFaxToMailUserDao();
- FaxToMailUser user = dao.forLoginEquals(login).findUnique();
- //FIXME kmorin 20140805 use fetch
- user.getUserGroups();
- user.getUserGroupsTopiaIds();
+ FaxToMailUser user = dao.forLoginEquals(login)
+ .addAllFetches(FaxToMailUser.PROPERTY_USER_GROUPS,
+ FaxToMailUser.PROPERTY_AFFECTED_FOLDERS)
+ .findUnique();
return user;
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveFromListAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveFromListAction.java 2014-08-08 15:17:08 UTC (rev 506)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveFromListAction.java 2014-08-08 15:19:04 UTC (rev 507)
@@ -78,4 +78,5 @@
getModel().removeEmails(getModel().getSelectedEmails());
getModel().setSelectedEmails(null);
}
+
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-08 15:17:08 UTC (rev 506)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-08 15:19:04 UTC (rev 507)
@@ -60,22 +60,54 @@
DemandeUIModel currentEmail = getContext().getCurrentEmail();
- // tentative de verrouillages des email existants
- if (StringUtils.isNotBlank(currentEmail.getTopiaId())) {
- FaxToMailUser currentUser = getContext().getCurrentUser();
-
+ FaxToMailUser takenBy = currentEmail.getTakenBy();
+ FaxToMailUser currentUser = getContext().getCurrentUser();
+ int answer = -1;
+
+ if (takenBy != null && !currentUser.equals(takenBy)) {
+ String htmlMessage = String.format(
+ AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
+ t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
+ t("faxtomail.alert.alreadyTakenBy.help"));
+
+ answer = JOptionPane.showConfirmDialog(getHandler().getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.alreadyTakenBy.title"),
+ JOptionPane.YES_NO_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+ }
+
+ if (answer == JOptionPane.CANCEL_OPTION) {
+ result = false;
+
+ } else {
+
try {
- FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- serviceContext.getEmailService().lockEmail(currentEmail.getTopiaId(), currentUser);
+ // tentative de verrouillages des email existants
+ if (StringUtils.isNotBlank(currentEmail.getTopiaId())) {
+ FaxToMailServiceContext serviceContext = getContext().newServiceContext();
+ serviceContext.getEmailService().lockEmail(currentEmail.getTopiaId(), currentUser);
+ }
+ if (answer == JOptionPane.NO_OPTION) {
+ currentEmail.setEditable(false);
+ }
+ // if the user takes the email
+ else if (answer == JOptionPane.YES_OPTION) {
+ FaxToMailServiceContext serviceContext = getContext().newServiceContext();
+ serviceContext.getEmailService().takeEmail(currentEmail.getTopiaId(), currentUser);
+ currentEmail.setTakenBy(currentUser);
+ currentEmail.setEditable(true);
+ }
+
} catch (AlreadyLockedMailException ex) {
result = false;
-
+
String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(ex.getLockedBy()));
JOptionPane.showMessageDialog(getHandler().getTopestUI(),
- htmlMessage,
- t("faxtomail.alert.alreadyLockedBy.title"),
- JOptionPane.ERROR_MESSAGE);
+ htmlMessage,
+ t("faxtomail.alert.alreadyLockedBy.title"),
+ JOptionPane.ERROR_MESSAGE);
}
}
@@ -93,7 +125,9 @@
getContext().getCurrentUser(),
new Date());
+ currentEmail.setHistory(email.getHistory());
currentEmail.setEtatAttente(email.getEtatAttente());
+ currentEmail.setDemandType(email.getDemandType());
currentEmail.setGroupedDemandes(email.getEmailGroup());
currentEmail.setMailFolder(email.getMailFolder());
}
@@ -105,41 +139,10 @@
super.postSuccessAction();
DemandeUIModel currentEmail = getContext().getCurrentEmail();
- FaxToMailUser takenBy = currentEmail.getTakenBy();
- FaxToMailUser currentUser = getContext().getCurrentUser();
MailFolder folder = currentEmail.getMailFolder();
if (currentEmail.getArchiveDate() != null || !folder.isFolderWritable()) {
currentEmail.setEditable(false);
-
- } else if (takenBy != null && !currentUser.equals(takenBy)) {
- String htmlMessage = String.format(
- AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
- t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
- t("faxtomail.alert.alreadyTakenBy.help"));
-
- int result = JOptionPane.showConfirmDialog(getHandler().getTopestUI(),
- htmlMessage,
- t("faxtomail.alert.alreadyTakenBy.title"),
- JOptionPane.YES_NO_CANCEL_OPTION,
- JOptionPane.QUESTION_MESSAGE);
-
- switch (result) {
- case JOptionPane.CANCEL_OPTION:
- getContext().setScreen(FaxToMailScreen.LIST);
- break;
-
- case JOptionPane.NO_OPTION:
- currentEmail.setEditable(false);
- break;
-
- case JOptionPane.YES_OPTION:
- FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- Email email = serviceContext.getEmailService().takeEmail(currentEmail.getTopiaId(), currentUser);
- currentEmail.fromEntity(email);
- currentEmail.setEditable(true);
- break;
- }
}
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-08-08 15:17:08 UTC (rev 506)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-08-08 15:19:04 UTC (rev 507)
@@ -274,12 +274,12 @@
}
#leftVerticalSplitPanel {
- dividerSize : { model.isRangePanelVisible() ? 10 : 0 };
+ dividerSize : { FaxToMailUIUtil.isRangePanelVisible(model.getDemandType()) ? 10 : 0 };
resizeWeight: 0.8;
}
#rangePanel {
- visible: { model.isRangePanelVisible() };
+ visible: { FaxToMailUIUtil.isRangePanelVisible(model.getDemandType()) };
_validatorLabel: { t("faxtomail.demande.rangeRow.label") };
}
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-08-08 15:17:08 UTC (rev 506)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-08-08 15:19:04 UTC (rev 507)
@@ -391,18 +391,23 @@
);
final JSplitPane leftVerticalSplitPanel = getUI().getLeftVerticalSplitPanel();
- model.addPropertyChangeListener(DemandeUIModel.PROPERTY_RANGE_PANEL_VISIBLE, new PropertyChangeListener() {
+ model.addPropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
- leftVerticalSplitPanel.setName("leftVerticalSplitPanel" + evt.getNewValue());
- getContext().getSwingSession().add(leftVerticalSplitPanel, true);
- if (Boolean.FALSE.equals(evt.getNewValue())) {
- leftVerticalSplitPanel.setDividerLocation(leftVerticalSplitPanel.getHeight());
+ boolean oldRangePanelVisible = FaxToMailUIUtil.isRangePanelVisible((DemandType) evt.getOldValue());
+ boolean newRangePanelVisible = FaxToMailUIUtil.isRangePanelVisible((DemandType) evt.getNewValue());
+
+ if (oldRangePanelVisible != newRangePanelVisible) {
+ leftVerticalSplitPanel.setName("leftVerticalSplitPanel" + newRangePanelVisible);
+ getContext().getSwingSession().add(leftVerticalSplitPanel, true);
+ if (!oldRangePanelVisible) {
+ leftVerticalSplitPanel.setDividerLocation(leftVerticalSplitPanel.getHeight());
+ }
}
}
});
- leftVerticalSplitPanel.setName("leftVerticalSplitPanel" + model.isRangePanelVisible());
+ leftVerticalSplitPanel.setName("leftVerticalSplitPanel" + FaxToMailUIUtil.isRangePanelVisible(model.getDemandType()));
getContext().getSwingSession().add(leftVerticalSplitPanel, true);
listModelIsModify(getModel());
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-08 15:17:08 UTC (rev 506)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-08 15:19:04 UTC (rev 507)
@@ -86,7 +86,6 @@
public static final String PROPERTY_QUOTATION_NB = "quotationNb";
public static final String PROPERTY_PF_NB = "pfNb";
public static final String PROPERTY_SAV_NB = "savNb";
- public static final String PROPERTY_RANGE_PANEL_VISIBLE = "rangePanelVisible";
public static final String PROPERTY_CLIENT_CODE = "clientCode";
public static final String PROPERTY_CLIENT_BRAND = "clientBrand";
public static final String PROPERTY_REFERENCE = "reference";
@@ -387,17 +386,10 @@
public void setDemandType(DemandType demandType) {
Object oldValue = getDemandType();
- Object rangePanelVisibleOldValue = isRangePanelVisible();
editObject.setDemandType(demandType);
firePropertyChanged(Email.PROPERTY_DEMAND_TYPE, oldValue, demandType);
- firePropertyChanged(DemandeUIModel.PROPERTY_RANGE_PANEL_VISIBLE, rangePanelVisibleOldValue, isRangePanelVisible());
}
- public boolean isRangePanelVisible() {
- DemandType demandType = getDemandType();
- return demandType != null && demandType.containsFields(MailField.RANGE_ROW);
- }
-
public DemandStatus getDemandStatus() {
return editObject.getDemandStatus();
}
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-08-08 15:17:08 UTC (rev 506)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-08-08 15:19:04 UTC (rev 507)
@@ -64,6 +64,8 @@
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
+import com.franciaflex.faxtomail.persistence.entities.DemandType;
+import com.franciaflex.faxtomail.persistence.entities.MailField;
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.JAXXUtil;
@@ -544,4 +546,8 @@
}
}
+ public static boolean isRangePanelVisible(DemandType demandType) {
+ return demandType != null && demandType.containsFields(MailField.RANGE_ROW);
+ }
+
}
1
0
r506 - in trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing: content/demande content/search util
by echatellier@users.forge.codelutin.com 08 Aug '14
by echatellier@users.forge.codelutin.com 08 Aug '14
08 Aug '14
Author: echatellier
Date: 2014-08-08 17:17:08 +0200 (Fri, 08 Aug 2014)
New Revision: 506
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/506
Log:
Modification des nombres de resultats par page
Added:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/PaginationComboModel.java
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-08 14:25:57 UTC (rev 505)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-08 15:17:08 UTC (rev 506)
@@ -99,6 +99,7 @@
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler;
import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode;
+import com.franciaflex.faxtomail.ui.swing.util.PaginationComboModel;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
@@ -320,7 +321,7 @@
});
// int combo box for result per page
- ui.getResultPerPageCombo().setModel(new DefaultComboBoxModel<Integer>(new Integer[] {10, 20, 30, 40, 50}));
+ ui.getResultPerPageCombo().setModel(new PaginationComboModel());
int resultPerPage = getConfig().getResultPerPage();
ui.getModel().setResultPerPage(resultPerPage);
ui.getResultPerPageCombo().setSelectedItem(resultPerPage);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-08 14:25:57 UTC (rev 505)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-08 15:17:08 UTC (rev 506)
@@ -35,6 +35,8 @@
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.PaginationComboModel;
+
import org.nuiton.jaxx.application.swing.util.Cancelable;
import jaxx.runtime.validator.swing.SwingValidator;
@@ -227,7 +229,7 @@
dataTable.addHighlighter(new ColorHighlighter(rowAlreadyInGroupPredicate, null, Color.GRAY, Color.GRAY, Color.WHITE));
// int combo box for result per page
- ui.getResultPerPageCombo().setModel(new DefaultComboBoxModel<Integer>(new Integer[] {10, 20, 30, 40, 50}));
+ ui.getResultPerPageCombo().setModel(new PaginationComboModel());
int resultPerPage = getConfig().getResultPerPage();
ui.getModel().setResultPerPage(resultPerPage);
ui.getResultPerPageCombo().setSelectedItem(resultPerPage);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-08-08 14:25:57 UTC (rev 505)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-08-08 15:17:08 UTC (rev 506)
@@ -33,7 +33,6 @@
import java.util.Date;
import java.util.List;
-import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import javax.swing.ListSelectionModel;
@@ -43,6 +42,7 @@
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
+import org.nuiton.jaxx.application.swing.util.CloseableUI;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
@@ -53,8 +53,8 @@
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler;
-import org.nuiton.jaxx.application.swing.util.CloseableUI;
import com.franciaflex.faxtomail.ui.swing.util.DemandeTableModel;
+import com.franciaflex.faxtomail.ui.swing.util.PaginationComboModel;
/**
* Handler of UI {@link SearchUIHandler}.
@@ -187,7 +187,7 @@
}
// int combo box for result per page
- ui.getResultPerPageCombo().setModel(new DefaultComboBoxModel<Integer>(new Integer[] {10, 20, 30, 40, 50}));
+ ui.getResultPerPageCombo().setModel(new PaginationComboModel());
int resultPerPage = getConfig().getResultPerPage();
ui.getModel().setResultPerPage(resultPerPage);
ui.getResultPerPageCombo().setSelectedItem(resultPerPage);
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/PaginationComboModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/PaginationComboModel.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/PaginationComboModel.java 2014-08-08 15:17:08 UTC (rev 506)
@@ -0,0 +1,40 @@
+package com.franciaflex.faxtomail.ui.swing.util;
+
+/*
+ * #%L
+ * FaxToMail :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Franciaflex, Code Lutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import javax.swing.DefaultComboBoxModel;
+
+/**
+ * Combo box model contenant les nombres de resultats par page par defaut.
+ */
+public class PaginationComboModel extends DefaultComboBoxModel<Integer> {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 5197282481327291647L;
+
+ public PaginationComboModel() {
+ super(new Integer[] {50, 100, 150, 200, 250});
+ }
+}
Property changes on: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/PaginationComboModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
1
0
r505 - 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/search faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util
by kmorin@users.forge.codelutin.com 08 Aug '14
by kmorin@users.forge.codelutin.com 08 Aug '14
08 Aug '14
Author: kmorin
Date: 2014-08-08 16:25:57 +0200 (Fri, 08 Aug 2014)
New Revision: 505
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/505
Log:
integration des fetchs
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeFromListAction.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/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/AbstractFaxToMailDemandListHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 14:24:35 UTC (rev 504)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 14:25:57 UTC (rev 505)
@@ -131,6 +131,7 @@
protected void browseFolderParent(MailFolder folder, FaxToMailUser user, MailFolderService mailFolderService) {
Hibernate.initialize(folder);
+ Hibernate.initialize(folder.getChildren());
mailFolderService.fetchFolderAttributes(folder);
MailFolder parent = folder.getParent();
@@ -139,11 +140,15 @@
}
boolean writable = parent != null && parent.isFolderWritable();
- writable |= CollectionUtils.containsAny(folder.getWriteRightGroups(), user.getUserGroups());
+ if (folder.getWriteRightGroups() != null && user.getUserGroups() != null) {
+ writable |= CollectionUtils.containsAny(folder.getWriteRightGroups(), user.getUserGroups());
+ }
writable |= folder.containsWriteRightUsers(user);
boolean readable = parent != null && parent.isFolderReadable();
- readable |= CollectionUtils.containsAny(folder.getReadRightGroups(), user.getUserGroups());
+ if (folder.getReadRightGroups() != null && user.getUserGroups() != null) {
+ readable |= CollectionUtils.containsAny(folder.getReadRightGroups(), user.getUserGroups());
+ }
readable |= folder.containsReadRightUsers(user);
folder.setFolderWritable(writable);
@@ -282,9 +287,13 @@
// sur celles en base
if (attachment.getOriginalFile() != null) {
originalFile = attachment.getOriginalFile();
+ } else {
+ originalFile = currentAttachment.getOriginalFile();
}
if (attachment.getEditedFile() != null) {
editedFile = attachment.getEditedFile();
+ } else {
+ editedFile = currentAttachment.getEditedFile();
}
// copy new data
@@ -592,7 +601,7 @@
@Override
public Email addToHistory(String emailId, HistoryType type, FaxToMailUser user, Date date, String... fields) {
EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
- Email email = getEmailById(emailId);
+ Email email = getEmailById(emailId, user);
HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
History history = historyDao.create(History.PROPERTY_TYPE, type,
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeFromListAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeFromListAction.java 2014-08-08 14:24:35 UTC (rev 504)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeFromListAction.java 2014-08-08 14:25:57 UTC (rev 505)
@@ -27,6 +27,7 @@
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
+import com.franciaflex.faxtomail.services.service.EmailService;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUI;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler;
@@ -53,16 +54,18 @@
public void doAction() throws Exception {
FaxToMailUIContext context = getContext();
+ FaxToMailServiceContext serviceContext = context.newServiceContext();
+ EmailService emailService = serviceContext.getEmailService();
+
for (DemandeUIModel model : getModel().getSelectedEmails()) {
String topiaId = model.getTopiaId();
- FaxToMailServiceContext serviceContext = context.newServiceContext();
- Email persistedEmail = serviceContext.getEmailService().getEmailById(topiaId);
+ Email persistedEmail = emailService.getEmailById(topiaId);
FaxToMailUser currentUser = context.getCurrentUser();
Email email = model.toEntity(persistedEmail);
- email = serviceContext.getEmailService().saveEmail(email, currentUser, modifiedProperties);
+ email = emailService.saveEmail(email, currentUser, modifiedProperties);
model.fromEntity(email);
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-08 14:24:35 UTC (rev 504)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-08 14:25:57 UTC (rev 505)
@@ -24,6 +24,7 @@
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.HistoryType;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException;
@@ -37,6 +38,8 @@
import javax.swing.*;
+import java.util.Date;
+
import static org.nuiton.i18n.I18n.t;
/**
@@ -84,7 +87,13 @@
DemandeUIModel currentEmail = getContext().getCurrentEmail();
if (StringUtils.isNotBlank(currentEmail.getTopiaId())) {
FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- Email email = serviceContext.getEmailService().getEmailById(currentEmail.getTopiaId(), getContext().getCurrentUser());
+
+ Email email = serviceContext.getEmailService().addToHistory(currentEmail.getTopiaId(),
+ HistoryType.OPENING,
+ getContext().getCurrentUser(),
+ new Date());
+
+ currentEmail.setEtatAttente(email.getEtatAttente());
currentEmail.setGroupedDemandes(email.getEmailGroup());
currentEmail.setMailFolder(email.getMailFolder());
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-08 14:24:35 UTC (rev 504)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-08 14:25:57 UTC (rev 505)
@@ -267,9 +267,10 @@
protected void runSearchAction() {
try {
- SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class);
- searchAction.doAction();
+ SearchToGroupAction searchAction = new SearchToGroupAction(this);
+ getContext().getActionFactory().createUIAction(null, searchAction).actionPerformed(null);
+
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error("error while searching", 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-08-08 14:24:35 UTC (rev 504)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-08-08 14:25:57 UTC (rev 505)
@@ -227,8 +227,8 @@
protected void runSearchAction() {
try {
- SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class);
- searchAction.doAction();
+ SearchAction searchAction = new SearchAction(this);
+ getContext().getActionFactory().createUIAction(null, searchAction).actionPerformed(null);
} catch (Exception e) {
if (log.isErrorEnabled()) {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-08-08 14:24:35 UTC (rev 504)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-08-08 14:25:57 UTC (rev 505)
@@ -266,15 +266,8 @@
(AbstractApplicationTableModel<DemandeUIModel>) table.getModel();
DemandeUIModel selectedEmail = tableModel.getEntry(rowIndex);
onDoubleClickOnDemande(selectedEmail);
- FaxToMailUIContext context = getContext();
//TODO kmorin 02140806 put in action
- FaxToMailServiceContext serviceContext = context.newServiceContext();
- Email email = serviceContext.getEmailService().addToHistory(selectedEmail.getTopiaId(),
- HistoryType.OPENING,
- context.getCurrentUser(),
- new Date());
- selectedEmail.fromEntity(email);
openDemand(selectedEmail);
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-08-08 14:24:35 UTC (rev 504)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-08-08 14:25:57 UTC (rev 505)
@@ -329,6 +329,8 @@
JAXXUtil.destroy(ui);
}
});
+
+ result.setSize(dim);
SwingUtil.center(getContext().getMainUI(), result);
result.setVisible(true);
}
1
0
r504 - trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services
by echatellier@users.forge.codelutin.com 08 Aug '14
by echatellier@users.forge.codelutin.com 08 Aug '14
08 Aug '14
Author: echatellier
Date: 2014-08-08 16:24:35 +0200 (Fri, 08 Aug 2014)
New Revision: 504
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/504
Log:
Remove sysout
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java 2014-08-08 14:20:13 UTC (rev 503)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java 2014-08-08 14:24:35 UTC (rev 504)
@@ -112,7 +112,6 @@
} else {
if (persistenceContext == null) {
persistenceContext = topiaApplicationContext.newPersistenceContext();
- System.out.println("Open new session" + Thread.currentThread().getName());
}
return persistenceContext;
}
@@ -255,7 +254,6 @@
if (persistenceContext != null) {
persistenceContext.close();
persistenceContext = null;
- System.out.println("Close session" + Thread.currentThread().getName());
}
}
}
1
0
08 Aug '14
Author: echatellier
Date: 2014-08-08 16:20:13 +0200 (Fri, 08 Aug 2014)
New Revision: 503
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/503
Log:
fixes #5536: il faut pouvoir faire un d?\195?\169plac?\195?\169 depuis la liste via le menu contextuel
Added:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIModel.java
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderImpl.java
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java
trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveFromListAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeFromListAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUI.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/AbstractFaxToMailDemandListHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.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/MailFolderImpl.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderImpl.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderImpl.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -6,27 +6,37 @@
*/
public class MailFolderImpl extends MailFolderAbstract {
- protected Boolean folderReadable;
- protected Boolean folderWritable;
+ protected transient boolean folderReadable;
+ protected transient boolean folderWritable;
+ protected transient boolean folderMoveable;
@Override
- public Boolean isFolderReadable() {
+ public boolean isFolderReadable() {
return folderReadable;
}
@Override
- public void setFolderReadable(Boolean folderReadable) {
+ public void setFolderReadable(boolean folderReadable) {
this.folderReadable = folderReadable;
}
@Override
- public Boolean isFolderWritable() {
+ public boolean isFolderWritable() {
return folderWritable;
}
@Override
- public void setFolderWritable(Boolean folderWritable) {
+ public void setFolderWritable(boolean folderWritable) {
this.folderWritable = folderWritable;
}
+ @Override
+ public void setFolderMoveable(boolean moveable) {
+ this.folderMoveable = moveable;
+ }
+
+ @Override
+ public boolean isFolderMoveable() {
+ return folderMoveable;
+ }
}
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -24,13 +24,10 @@
* #L%
*/
-import com.google.common.collect.Collections2;
import com.google.common.collect.Maps;
-import org.apache.commons.lang3.StringUtils;
import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
public class MailFolderTopiaDao extends AbstractMailFolderTopiaDao<MailFolder> {
@@ -65,5 +62,14 @@
Collection<MailFolder> folders = findAll(query, map);
return folders;
}
+
+ public Collection<MailFolder> getMoveableFolders(FaxToMailUser user) {
+ String query = newFromClause("mf") + " where :user in elements(mf.moveRightUsers) or exists (from mf.moveRightGroups g where g in (:groups))";
+ HashMap<String, Object> map = Maps.newHashMap();
+ map.put("user", user);
+ map.put("groups", user.getUserGroups());
+ Collection<MailFolder> folders = findAll(query, map);
+ return folders;
+ }
} //MailFolderTopiaDao
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
===================================================================
(Binary files differ)
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -112,6 +112,7 @@
} else {
if (persistenceContext == null) {
persistenceContext = topiaApplicationContext.newPersistenceContext();
+ System.out.println("Open new session" + Thread.currentThread().getName());
}
return persistenceContext;
}
@@ -254,6 +255,7 @@
if (persistenceContext != null) {
persistenceContext.close();
persistenceContext = null;
+ System.out.println("Close session" + Thread.currentThread().getName());
}
}
}
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-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -24,16 +24,18 @@
* #L%
*/
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.franciaflex.faxtomail.persistence.entities.DemandType;
import com.franciaflex.faxtomail.persistence.entities.EtatAttente;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.MailFilter;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.services.FaxToMailService;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
/**
* @author Kevin Morin (Code Lutin)
*/
@@ -54,7 +56,7 @@
List<MailFolder> getMailFolders(Collection<String> ids);
- Collection<MailFolder> getFoldersWithEtatAttente(EtatAttente etatAttente);
+ Collection<MailFolder> getFoldersWithEtatAttenteAndDemandType(Set<EtatAttente> etatAttentes, Set<DemandType> demandTypes);
Map<String, Long> getMailFoldersUsage();
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -26,30 +26,29 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import com.franciaflex.faxtomail.persistence.entities.DemandType;
-import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
-
-import com.franciaflex.faxtomail.persistence.entities.MailField;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.Predicate;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;
import org.nuiton.util.pagination.PaginationParameter;
+import com.franciaflex.faxtomail.persistence.entities.DemandType;
import com.franciaflex.faxtomail.persistence.entities.EmailTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.EtatAttente;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
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.MailFolderTopiaDao;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
+import com.google.common.collect.Collections2;
/**
* @author kmorin - kmorin(a)codelutin.com
@@ -164,31 +163,48 @@
}
@Override
- public void fetchFolderAttributes(MailFolder folder) {
- Hibernate.initialize(folder.getFolderTableColumns());
- Hibernate.initialize(folder.getRanges());
- Hibernate.initialize(folder.getReplyAddresses());
- Hibernate.initialize(folder.getReplyDomains());
- Hibernate.initialize(folder.getDemandTypes());
+ public List<MailFolder> getRootMailFoldersWithMoveRights(FaxToMailUser user) {
+ MailFolderTopiaDao dao = getPersistenceContext().getMailFolderDao();
- if (folder.sizeEtatAttentes() > 0) {
- for (EtatAttente etatAttente : folder.getEtatAttentes()) {
- Hibernate.initialize(etatAttente.getInvalidFormDisabledActions());
- Hibernate.initialize(etatAttente.getValidFormDisabledActions());
+ List<MailFolder> folders = new ArrayList<>(dao.getMoveableFolders(user));
+ // copy the list to be able to remove the folders whose parent is already in the list
+ List<MailFolder> result = new ArrayList<>(folders);
+
+ for (MailFolder folder : folders) {
+ MailFolder f = folder;
+ while (f.getParent() != null) {
+ f = f.getParent();
+
+ // if the parent is already in the readable roots, remove the current folder from the roots
+ if (result.contains(f)) {
+ result.remove(folder);
+ folder = null;
+ break;
+ }
+
+ fetchFolderAttributes(f);
}
+
+ if (folder != null) {
+ browseMoveableFolders(folder, result, user);
+ }
}
+ return result;
}
- @Override
- public List<MailFolder> getRootMailFoldersWithMoveRights(FaxToMailUser user) {
- List<MailFolder> rootFolders = getRootMailFolders();
- List<MailFolder> result = new ArrayList<>();
+ protected void browseMoveableFolders(MailFolder folder, List<MailFolder> readableRoots, FaxToMailUser user) {
+ folder.setFolderMoveable(true);
- for (MailFolder folder : rootFolders) {
- findMoveFolders(folder, user, result);
+ if (folder.isChildrenNotEmpty()) {
+ for (MailFolder child : folder.getChildren()) {
+ // if the child is in the readable roots, rmeove it to merge the branches
+ if (!readableRoots.remove(child)) {
+ browseMoveableFolders(child, readableRoots, user);
+ }
+ }
}
- return result;
+ fetchFolderAttributes(folder);
}
protected void findMoveFolders(MailFolder folder, FaxToMailUser user, List<MailFolder> folders) {
@@ -204,20 +220,43 @@
}
@Override
+ public void fetchFolderAttributes(MailFolder folder) {
+ Hibernate.initialize(folder.getFolderTableColumns());
+ Hibernate.initialize(folder.getRanges());
+ Hibernate.initialize(folder.getReplyAddresses());
+ Hibernate.initialize(folder.getReplyDomains());
+
+ if (folder.sizeEtatAttentes() > 0) {
+ for (EtatAttente etatAttente : folder.getEtatAttentes()) {
+ Hibernate.initialize(etatAttente.getInvalidFormDisabledActions());
+ Hibernate.initialize(etatAttente.getValidFormDisabledActions());
+ }
+ }
+
+ Hibernate.initialize(folder.getDemandTypes());
+ }
+
+ @Override
public List<MailFolder> getMailFolders(Collection<String> ids) {
MailFolderTopiaDao dao = getPersistenceContext().getMailFolderDao();
return new ArrayList<MailFolder>(dao.forTopiaIdIn(ids).findAll());
}
+ /**
+ * Retourne les dossiers qui ont l'ensemble des etats d'attente et l'ensemble des types de
+ * demande compatible avec ceux en argument.
+ */
@Override
- public Collection<MailFolder> getFoldersWithEtatAttente(EtatAttente etatAttente) {
- Collection<MailFolder> result = new HashSet<>();
+ public Set<MailFolder> getFoldersWithEtatAttenteAndDemandType(Set<EtatAttente> requiredEtatAttentes, Set<DemandType> requiredDemandTypes) {
+ Set<MailFolder> result = new HashSet<>();
MailFolderTopiaDao dao = getPersistenceContext().getMailFolderDao();
List<MailFolder> roots = dao.forParentEquals(null).findAll();
for (MailFolder root : roots) {
- result.addAll(getFoldersWithEtatAttente(root, new HashSet<EtatAttente>(), etatAttente));
+ Collection<MailFolder> mailFolders = getFoldersWithEtatAttente(root, new HashSet<EtatAttente>(),
+ new HashSet<DemandType>(), requiredEtatAttentes, requiredDemandTypes);
+ result.addAll(mailFolders);
}
return result;
@@ -225,23 +264,45 @@
protected Collection<MailFolder> getFoldersWithEtatAttente(MailFolder folder,
Collection<EtatAttente> parentEtatAttente,
- EtatAttente etatAttente) {
+ Collection<DemandType> parentDemandType,
+ Set<EtatAttente> requiredEtatAttentes,
+ Set<DemandType> requiredDemandTypes) {
Collection<EtatAttente> etatAttentes = folder.getEtatAttentes();
if (CollectionUtils.isEmpty(etatAttentes)) {
etatAttentes = parentEtatAttente;
} else {
parentEtatAttente = etatAttentes;
}
+ Collection<DemandType> demandTypes = folder.getDemandTypes();
+ if (CollectionUtils.isEmpty(demandTypes)) {
+ demandTypes = parentDemandType;
+ } else {
+ parentDemandType = demandTypes;
+ }
+ // resursion
Collection<MailFolder> result = new HashSet<>();
Collection<MailFolder> children = folder.getChildren();
if (children != null) {
for (MailFolder child : children) {
- result.addAll(getFoldersWithEtatAttente(child, parentEtatAttente, etatAttente));
+ Collection<MailFolder> subMailFolders = getFoldersWithEtatAttente(child,
+ parentEtatAttente, parentDemandType, requiredEtatAttentes, requiredDemandTypes);
+ result.addAll(subMailFolders);
}
}
- if (etatAttentes.contains(etatAttente)) {
+ // pour qu'un dossier soit sélectionné il faut que les dossiers ait des etat d'attentes (ou ses parents)
+ // que les etats d'attente requis ne soit pas vide
+ // ET
+ // qu'un dossier ait des types de demandes et que les types de demande requis ne soit pas
+ // vide
+ if ((CollectionUtils.isEmpty(etatAttentes) ||
+ CollectionUtils.isEmpty(requiredEtatAttentes) ||
+ etatAttentes.containsAll(requiredEtatAttentes))
+ &&
+ CollectionUtils.isEmpty(demandTypes) ||
+ CollectionUtils.isEmpty(requiredDemandTypes) ||
+ demandTypes.containsAll(requiredDemandTypes)) {
result.add(folder);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveFromListAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveFromListAction.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveFromListAction.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -61,7 +61,7 @@
@Override
public void doAction() throws Exception {
- List<DemandeUIModel> currentEmails = getModel().getCurrentEmails();
+ List<DemandeUIModel> currentEmails = getModel().getSelectedEmails();
for (DemandeUIModel email : currentEmails) {
email.setArchiveDate(new Date());
email.setDemandStatus(DemandStatus.ARCHIVED);
@@ -75,12 +75,7 @@
@Override
public void postSuccessAction() {
super.postSuccessAction();
- getModel().removeEmails(getModel().getCurrentEmails());
- getModel().setCurrentEmails(null);
+ getModel().removeEmails(getModel().getSelectedEmails());
+ getModel().setSelectedEmails(null);
}
-
- @Override
- protected void releaseAction() {
- super.releaseAction();
- }
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeFromListAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeFromListAction.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeFromListAction.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -53,7 +53,7 @@
public void doAction() throws Exception {
FaxToMailUIContext context = getContext();
- for (DemandeUIModel model : getModel().getCurrentEmails()) {
+ for (DemandeUIModel model : getModel().getSelectedEmails()) {
String topiaId = model.getTopiaId();
FaxToMailServiceContext serviceContext = context.newServiceContext();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -100,7 +100,7 @@
FaxToMailUser currentUser = getContext().getCurrentUser();
MailFolder folder = currentEmail.getMailFolder();
- if (currentEmail.getArchiveDate() != null || !Boolean.TRUE.equals(folder.isFolderWritable())) {
+ if (currentEmail.getArchiveDate() != null || !folder.isFolderWritable()) {
currentEmail.setEditable(false);
} else if (takenBy != null && !currentUser.equals(takenBy)) {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -24,22 +24,25 @@
* #L%
*/
+import static org.nuiton.i18n.I18n.t;
+import jaxx.runtime.JAXXContext;
+import jaxx.runtime.JAXXUtil;
+
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUI;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUI;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUI;
import com.franciaflex.faxtomail.ui.swing.content.transmit.MailFolderChooserUI;
import com.franciaflex.faxtomail.ui.swing.content.transmit.MailFolderChooserUIHandler;
-import jaxx.runtime.JAXXContext;
-import jaxx.runtime.JAXXUtil;
+import com.franciaflex.faxtomail.ui.swing.content.transmit.MailFolderChooserUIModel;
-import static org.nuiton.i18n.I18n.t;
-
/**
* @author Kevin Morin (Code Lutin)
*
*/
-public class TransmitAction extends AbstractFaxToMailAction<DemandeUIModel, MailFolderChooserUI, MailFolderChooserUIHandler> {
+public class TransmitAction extends AbstractFaxToMailAction<MailFolderChooserUIModel, MailFolderChooserUI, MailFolderChooserUIHandler> {
public TransmitAction(MailFolderChooserUIHandler handler) {
super(handler, false);
@@ -48,14 +51,36 @@
@Override
public void doAction() throws Exception {
- DemandeUIModel model = getModel();
- model.setDemandStatus(DemandStatus.QUALIFIED);
- model.setTakenBy(null);
+ MailFolderChooserUIModel model = getModel();
+ for (DemandeUIModel demande : model.getDemandeUIModels()) {
+ demande.setDemandStatus(DemandStatus.QUALIFIED);
+ demande.setMailFolder(model.getMailFolder());
+ demande.setTakenBy(null);
+ }
- DemandesUI parentUI = (DemandesUI) getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT);
- DemandeUI demandeUI = (DemandeUI) parentUI.getDemandsTabPane().getSelectedComponent();
- getContext().getActionEngine().runInternalAction(demandeUI.getHandler(),
- SaveDemandeAndExitAction.class);
+ // suivant la condition on est soit dans le cas d'une edition de demande
+ // soit dans le cas d'une action contextuel depuis la liste des demandes
+ DemandeListUI parentDemandeListUI = (DemandeListUI)getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT);
+ if (parentDemandeListUI != null) {
+ // appel du service pour sauver les mails
+ // mais il faudrai sauver tous les mails d'un seul coup
+ for (DemandeUIModel demande : model.getDemandeUIModels()) {
+ String topiaId = demande.getTopiaId();
+ Email email = getContext().newServiceContext().getEmailService().getEmailById(topiaId);
+ email = demande.toEntity(email);
+ getContext().newServiceContext().getEmailService().saveEmail(email, null, Email.PROPERTY_MAIL_FOLDER);
+ }
+
+ // appel de l'action de rechargement de la liste
+ getContext().getActionEngine().runInternalAction(parentDemandeListUI.getHandler(),
+ LoadFolderEmailsAction.class);
+
+ } else {
+ DemandesUI parentUI = (DemandesUI) getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT);
+ DemandeUI demandeUI = (DemandeUI) parentUI.getDemandsTabPane().getSelectedComponent();
+ getContext().getActionEngine().runInternalAction(demandeUI.getHandler(),
+ SaveDemandeAndExitAction.class);
+ }
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-08-08 14:20:13 UTC (rev 503)
@@ -113,6 +113,13 @@
enabled: { model.isArchiveEnabled() };
}
+#moveMenu {
+ actionIcon: transmit;
+ text: "faxtomail.demandeList.action.transmit";
+ toolTipText: "faxtomail.demandeList.action.transmit.tip";
+ enabled: { model.isTransmitEnabled() };
+}
+
#totalDemandCountLabel {
text: "faxtomail.demandeList.totalCount";
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-08-08 14:20:13 UTC (rev 503)
@@ -64,6 +64,8 @@
onActionPerformed='handler.reply()'/>
<JMenuItem id='archiveMenu'
onActionPerformed='handler.archive()'/>
+ <JMenuItem id='moveMenu'
+ onActionPerformed='handler.transmit()'/>
</JPopupMenu>
<JSplitPane constraints='BorderLayout.CENTER' id="mainSplitPane">
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -32,7 +32,6 @@
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-import java.io.ObjectInputStream.GetField;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -58,6 +57,7 @@
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
+import jaxx.runtime.JAXXContext;
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.validator.swing.SwingValidator;
@@ -68,6 +68,7 @@
import org.jdesktop.swingx.decorator.ComponentAdapter;
import org.jdesktop.swingx.decorator.HighlightPredicate;
import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
+import org.nuiton.jaxx.application.swing.util.CloseableUI;
import com.ezware.oxbow.swingbits.table.filter.DistinctColumnItem;
import com.ezware.oxbow.swingbits.table.filter.ITableFilter;
@@ -88,11 +89,14 @@
import com.franciaflex.faxtomail.ui.swing.actions.ComputeQuantitiesByRangeAction;
import com.franciaflex.faxtomail.ui.swing.actions.LoadFolderEmailsAction;
import com.franciaflex.faxtomail.ui.swing.actions.PrintOnDefaultPrinterAction;
+import com.franciaflex.faxtomail.ui.swing.actions.SaveAndOpenDialogAction;
+import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAndExitAction;
import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeFromListAction;
import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI;
import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel;
+import com.franciaflex.faxtomail.ui.swing.content.transmit.MailFolderChooserUI;
+import com.franciaflex.faxtomail.ui.swing.content.transmit.MailFolderChooserUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler;
-import org.nuiton.jaxx.application.swing.util.CloseableUI;
import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode;
import com.google.common.collect.HashMultimap;
@@ -117,8 +121,7 @@
public void propertyChange(PropertyChangeEvent evt) {
String propertyName = evt.getPropertyName();
- if (Email.PROPERTY_PRIORITY.equals(propertyName)
- || Email.PROPERTY_TAKEN_BY.equals(propertyName)) {
+ if (Email.PROPERTY_PRIORITY.equals(propertyName)) {
if (evt.getNewValue() != null || evt.getOldValue() != null) {
SaveDemandeFromListAction saveAction =
getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this,
@@ -187,7 +190,7 @@
DemandeListUIModel model = getModel();
if (source.isSelectionEmpty()) {
- model.setCurrentEmails(null);
+ model.setSelectedEmails(null);
} else {
List<DemandeUIModel> selectedRows = new ArrayList<DemandeUIModel>();
AbstractApplicationTableModel<DemandeUIModel> dataTableModel = (AbstractApplicationTableModel<DemandeUIModel>) dataTable.getModel();
@@ -196,7 +199,7 @@
selectedRows.add(dataTableModel.getEntry(i));
}
}
- model.setCurrentEmails(selectedRows);
+ model.setSelectedEmails(selectedRows);
}
}
});
@@ -232,7 +235,7 @@
}
});
- model.addPropertyChangeListener(DemandeListUIModel.PROPERTY_CURRENT_EMAILS, new PropertyChangeListener() {
+ model.addPropertyChangeListener(DemandeListUIModel.PROPERTY_SELECTED_EMAILS, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
@@ -466,11 +469,20 @@
int selectedRowCount = getUI().getDataTable().getSelectedRowCount();
DemandeListUIModel model = getModel();
- model.setReplyEnabled(selectedRowCount == 1 && model.getCurrentEmails().get(0).isEditable());
+ model.setReplyEnabled(selectedRowCount == 1 && model.getSelectedEmails().get(0).isEditable());
model.setArchiveEnabled(selectedRowCount > 1 ||
- selectedRowCount > 0 && model.getCurrentEmails().get(0).isEditable());
+ selectedRowCount > 0 && model.getSelectedEmails().get(0).isEditable());
+ model.setTransmitEnabled(selectedRowCount > 1 ||
+ selectedRowCount > 0 && model.getSelectedEmails().get(0).isEditable());
}
+ /**
+ * During rigth clic, auto-select located under mouse position (not done by default by java) and
+ * display contextual menu.
+ *
+ * @param e event
+ * @param popup popup menu to display
+ */
public void autoSelectNodeInTree(MouseEvent e, JPopupMenu popup) {
boolean rightClick = SwingUtilities.isRightMouseButton(e);
@@ -541,7 +553,7 @@
Multimap<DemandeUIModel, AttachmentFile> attachmentToPrints = HashMultimap.create();
- for (DemandeUIModel demandeUIModel : model.getCurrentEmails()) {
+ for (DemandeUIModel demandeUIModel : model.getSelectedEmails()) {
for (Attachment attachment : demandeUIModel.getAttachment()) {
// force lazy loading
@@ -563,7 +575,7 @@
}
public void reply() {
- DemandeUIModel demand = getModel().getCurrentEmails().get(0);
+ DemandeUIModel demand = getModel().getSelectedEmails().get(0);
getContext().setCurrentEmail(demand);
ReplyFormUI dialogContent = new ReplyFormUI(ui);
@@ -587,4 +599,16 @@
ArchiveFromListAction.class);
getContext().getActionEngine().runAction(saveAction);
}
+
+ /**
+ * Display move popup for user to chose where to move all selected demands.
+ */
+ public void transmit() {
+ List<DemandeUIModel> selectedEmails = getModel().getSelectedEmails();
+ MailFolderChooserUIModel model = new MailFolderChooserUIModel();
+ model.setDemandeUIModels(selectedEmails);
+ MailFolderChooserUI dialogContent = new MailFolderChooserUI(ui, model);
+
+ openDialog(dialogContent, t("faxtomail.chooseMailFolder.title"), new Dimension(350, 500));
+ }
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -43,7 +43,7 @@
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_SELECTED_EMAILS = "selectedEmails";
public static final String PROPERTY_EMAIL_NB = "emailNb";
public static final String PROPERTY_SELECTED_FOLDER = "selectedFolder";
public static final String PROPERTY_QUOTATION_NB = "quotationNb";
@@ -51,6 +51,7 @@
public static final String PROPERTY_SAV_NB = "savNb";
public static final String PROPERTY_REPLY_ENABLED = "replyEnabled";
public static final String PROPERTY_ARCHIVE_ENABLED = "archiveEnabled";
+ public static final String PROPERTY_TRANSMIT_ENABLED = "transmitEnabled";
public static final String PROPERTY_COMPUTE_QUANTITIES_BY_RANGE_ENABLED = "computeQuantitiesByRangeEnabled";
public static final String PROPERTY_NEW_DEMAND_ENABLED = "newDemandEnabled";
public static final String PROPERTY_RESULT_PER_PAGE = "resultPerPage";
@@ -67,7 +68,8 @@
protected List<DemandeUIModel> filteredEmails;
- protected List<DemandeUIModel> currentEmails;
+ /** Currently selected email in table. */
+ protected List<DemandeUIModel> selectedEmails;
protected MailFolder selectedFolder;
@@ -75,6 +77,8 @@
protected boolean archiveEnabled;
+ protected boolean transmitEnabled;
+
protected boolean computeQuantitiesByRangeEnabled;
protected boolean newDemandEnabled;
@@ -141,14 +145,14 @@
firePropertyChange(PROPERTY_EMAIL_NB, oldValue, newValue);
}
- public List<DemandeUIModel> getCurrentEmails() {
- return currentEmails;
+ public List<DemandeUIModel> getSelectedEmails() {
+ return selectedEmails;
}
- public void setCurrentEmails(List<DemandeUIModel> currentEmails) {
- Object oldValue = getCurrentEmails();
- this.currentEmails = currentEmails;
- firePropertyChange(PROPERTY_CURRENT_EMAILS, oldValue, currentEmails);
+ public void setSelectedEmails(List<DemandeUIModel> selectedEmails) {
+ Object oldValue = getSelectedEmails();
+ this.selectedEmails = selectedEmails;
+ firePropertyChange(PROPERTY_SELECTED_EMAILS, oldValue, selectedEmails);
}
public int getEmailNb() {
@@ -207,7 +211,17 @@
this.archiveEnabled = archiveEnabled;
firePropertyChange(PROPERTY_ARCHIVE_ENABLED, oldValue, archiveEnabled);
}
+
+ public boolean isTransmitEnabled() {
+ return transmitEnabled;
+ }
+ public void setTransmitEnabled(boolean transmitEnabled) {
+ Object oldValue = this.transmitEnabled;
+ this.transmitEnabled = transmitEnabled;
+ firePropertyChange(PROPERTY_TRANSMIT_ENABLED, oldValue, transmitEnabled);
+ }
+
public boolean isComputeQuantitiesByRangeEnabled() {
return computeQuantitiesByRangeEnabled;
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -24,7 +24,36 @@
* #L%
*/
+import static org.nuiton.i18n.I18n.t;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.DefaultSingleSelectionModel;
+import javax.swing.JComponent;
+import javax.swing.JTabbedPane;
+
+import jaxx.runtime.JAXXContext;
+import jaxx.runtime.JAXXUtil;
+import jaxx.runtime.validator.swing.SwingValidator;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler;
+import org.nuiton.jaxx.application.swing.ApplicationUI;
+import org.nuiton.jaxx.application.swing.tab.CustomTab;
+import org.nuiton.jaxx.application.swing.tab.DelegateTabContainerHandler;
+import org.nuiton.jaxx.application.swing.tab.TabContainerHandler;
+import org.nuiton.jaxx.application.swing.tab.TabContentModel;
+import org.nuiton.jaxx.application.swing.tab.TabHandler;
+import org.nuiton.jaxx.application.swing.util.CloseableUI;
+
import com.franciaflex.faxtomail.persistence.entities.Configuration;
+import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.EtatAttente;
import com.franciaflex.faxtomail.persistence.entities.MailAction;
@@ -38,30 +67,9 @@
import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel;
import com.franciaflex.faxtomail.ui.swing.content.search.SearchToGroupUI;
import com.franciaflex.faxtomail.ui.swing.content.transmit.MailFolderChooserUI;
+import com.franciaflex.faxtomail.ui.swing.content.transmit.MailFolderChooserUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
-import org.nuiton.jaxx.application.swing.util.CloseableUI;
-import jaxx.runtime.JAXXUtil;
-import jaxx.runtime.validator.swing.SwingValidator;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler;
-import org.nuiton.jaxx.application.swing.ApplicationUI;
-import org.nuiton.jaxx.application.swing.tab.CustomTab;
-import org.nuiton.jaxx.application.swing.tab.DelegateTabContainerHandler;
-import org.nuiton.jaxx.application.swing.tab.TabContainerHandler;
-import org.nuiton.jaxx.application.swing.tab.TabContentModel;
-import org.nuiton.jaxx.application.swing.tab.TabHandler;
-
-import javax.swing.*;
-
-import java.awt.*;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import static org.nuiton.i18n.I18n.t;
-
/**
* @author Kevin Morin (Code Lutin)
*
@@ -330,7 +338,10 @@
closeButtonPopups();
DemandeUI demandeUI = (DemandeUI) getTabPanel().getSelectedComponent();
- MailFolderChooserUI dialogContent = new MailFolderChooserUI(ui, demandeUI.getModel());
+ List<DemandeUIModel> demandes = Collections.singletonList(demandeUI.getModel());
+ MailFolderChooserUIModel model = new MailFolderChooserUIModel();
+ model.setDemandeUIModels(demandes);
+ MailFolderChooserUI dialogContent = new MailFolderChooserUI(ui, model);
SaveAndOpenDialogAction action = new SaveAndOpenDialogAction(demandeUI.getHandler(),
true,
dialogContent,
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -24,18 +24,19 @@
* #L%
*/
-import com.franciaflex.faxtomail.persistence.entities.MailFolder;
-import org.jdesktop.beans.AbstractSerializableBean;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import org.jdesktop.beans.AbstractBean;
+
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+
/**
* @author Kevin Morin (Code Lutin)
*
*/
-public class QuantitiesByRangeUIModel extends AbstractSerializableBean {
+public class QuantitiesByRangeUIModel extends AbstractBean {
public static final String PROPERTY_ROOT_FOLDER = "rootFolder";
public static final String PROPERTY_RANGE_ROWS = "rangeRows";
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUI.jaxx 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUI.jaxx 2014-08-08 14:20:13 UTC (rev 503)
@@ -22,11 +22,9 @@
#L%
-->
<JPanel id='mailFolderChooser' layout='{new BorderLayout()}'
- implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel, MailFolderChooserUIHandler>'>
+ implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<MailFolderChooserUIModel, MailFolderChooserUIHandler>'>
<import>
- com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel
-
com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI
com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
@@ -34,15 +32,13 @@
</import>
<script><![CDATA[
-
- public MailFolderChooserUI(FaxToMailUI parentUI, DemandeUIModel model) {
+ public MailFolderChooserUI(FaxToMailUI parentUI, MailFolderChooserUIModel model) {
FaxToMailUIUtil.setParentUI(this, parentUI);
setContextValue(model);
}
-
]]></script>
- <DemandeUIModel id='model' javaBean='getContextValue(DemandeUIModel.class)'/>
+ <MailFolderChooserUIModel id='model' initializer='getContextValue(MailFolderChooserUIModel.class)' />
<JLabel id="message" constraints='BorderLayout.NORTH'/>
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-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -24,32 +24,38 @@
* #L%
*/
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.swing.JComponent;
+import javax.swing.JTree;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import jaxx.runtime.validator.swing.SwingValidator;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.jaxx.application.swing.util.Cancelable;
+
+import com.franciaflex.faxtomail.persistence.entities.DemandType;
import com.franciaflex.faxtomail.persistence.entities.EtatAttente;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
-import org.nuiton.jaxx.application.swing.util.Cancelable;
import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode;
-import jaxx.runtime.validator.swing.SwingValidator;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import javax.swing.*;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
-import javax.swing.tree.DefaultMutableTreeNode;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-
/**
* @author Kevin Morin (Code Lutin)
*
*/
-public class MailFolderChooserUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, MailFolderChooserUI> implements Cancelable {
+public class MailFolderChooserUIHandler extends AbstractFaxToMailUIHandler<MailFolderChooserUIModel, MailFolderChooserUI> implements Cancelable {
private static final Log log = LogFactory.getLog(MailFolderChooserUIHandler.class);
@@ -57,15 +63,32 @@
public void afterInit(MailFolderChooserUI mailFolderChooserUI) {
initUI(mailFolderChooserUI);
- DemandeUIModel model = getModel();
+ MailFolderChooserUIModel model = getModel();
- EtatAttente etatAttente = model.getEtatAttente();
- final Collection<MailFolder> foldersWithEtatAttente;
+ // fixme echatellier 20140808 : pour le dossier courant, on prend celui du premier mai
+ // ce n'est pas forcement très correct pour la recherche car les demandes peuvent
+ // provenir de dossier différents
+ MailFolder currentMailFolder = model.getDemandeUIModels().get(0).getMailFolder();
+
+ // on recupere seulement les dossiers qui accepte l'ensemble des états d'attentes
+ // et des types de demande de l'ensemble des demandes
+ Set<EtatAttente> allEtatsAttentes = new HashSet<EtatAttente>();
+ Set<DemandType> allDemandTypes = new HashSet<DemandType>();
+ for (DemandeUIModel demande : model.getDemandeUIModels()) {
+ if (demande.getEtatAttente() != null) {
+ allEtatsAttentes.add(demande.getEtatAttente());
+ }
+ if (demande.getDemandType() != null) {
+ allDemandTypes.add(demande.getDemandType());
+ }
+ }
+
FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- if (etatAttente != null) {
- foldersWithEtatAttente = serviceContext.getMailFolderService().getFoldersWithEtatAttente(etatAttente);
- } else {
- foldersWithEtatAttente = new HashSet<MailFolder>();
+ Collection<MailFolder> foldersWithEtatAttente = null;
+ // foldersWithEtatAttente reste à null dans le cas ou l'arbre ne doit pas être filtré
+ // sinon l'appel peut renvoyer une liste de vide dans le cas où aucun dossier n'est selectionnable
+ if (!allEtatsAttentes.isEmpty() || !allDemandTypes.isEmpty()) {
+ foldersWithEtatAttente = serviceContext.getMailFolderService().getFoldersWithEtatAttenteAndDemandType(allEtatsAttentes, allDemandTypes);
}
// init tree
@@ -75,7 +98,6 @@
Map<MailFolder, FolderTreeNode> nodesByFolder =
FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, folders, false);
- MailFolder currentFolder = getModel().getMailFolder();
for (MailFolder folder : nodesByFolder.keySet()) {
DefaultMutableTreeNode node = nodesByFolder.get(folder);
@@ -84,15 +106,13 @@
FolderTreeNode folderTreeNode = (FolderTreeNode) node;
MailFolder folderWithAllowMoveDemandIntoFolder = folder;
- while (folderWithAllowMoveDemandIntoFolder.getAllowMoveDemandIntoFolder() == null
- && folderWithAllowMoveDemandIntoFolder.getParent() != null) {
- folderWithAllowMoveDemandIntoFolder = folderWithAllowMoveDemandIntoFolder.getParent();
- }
-
- folderTreeNode.setCanSelect(!currentFolder.equals(folder) &&
- Boolean.TRUE.equals(folderWithAllowMoveDemandIntoFolder.getAllowMoveDemandIntoFolder()) &&
- (CollectionUtils.isEmpty(foldersWithEtatAttente)
- || foldersWithEtatAttente.contains(folder)));
+ // le dossier n'est pas grisé si:
+ // - le n'est pas le dossier courrant
+ // - l'utilsateur à les droits sur le dossier
+ // - le dossier cible à les mêmes etatAttente/typeDemande que toutes les demandes à bouger
+ folderTreeNode.setCanSelect(!currentMailFolder.equals(folder) &&
+ folderWithAllowMoveDemandIntoFolder.isFolderMoveable() &&
+ (foldersWithEtatAttente == null || foldersWithEtatAttente.contains(folder)));
}
}
@@ -107,6 +127,9 @@
getModel().setMailFolder(folder);
}
});
+
+ // fix jaxx binding, apparement, il faut lui refaire un set null
+ getModel().setMailFolder(null);
}
@Override
@@ -114,7 +137,7 @@
}
@Override
- public SwingValidator<DemandeUIModel> getValidator() {
+ public SwingValidator<MailFolderChooserUIModel> getValidator() {
return null;
}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIModel.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIModel.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -0,0 +1,68 @@
+package com.franciaflex.faxtomail.ui.swing.content.transmit;
+
+/*
+ * #%L
+ * FaxToMail :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Franciaflex, Code Lutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import java.util.List;
+
+import org.jdesktop.beans.AbstractBean;
+
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+
+/**
+ * Model for mail folder chooser UI.
+ *
+ * @author Eric Chatellier
+ */
+public class MailFolderChooserUIModel extends AbstractBean {
+
+ protected static final String PROPERTY_MAIL_FOLDER = "mailFolder";
+ protected static final String PROPERTY_DEMANDE_U_I_MODELS = "demandeUIModels";
+
+ /** Le dossier de destination du mail après validation de l'action .*/
+ protected MailFolder mailFolder;
+
+ /** L'ensemble des demandes concernées par le déplacement. */
+ protected List<DemandeUIModel> demandeUIModels;
+
+ public void setMailFolder(MailFolder mailFolder) {
+ MailFolder oldValue = this.mailFolder;
+ this.mailFolder = mailFolder;
+ firePropertyChange(PROPERTY_MAIL_FOLDER, oldValue, mailFolder);
+ }
+
+ public MailFolder getMailFolder() {
+ return mailFolder;
+ }
+
+ public void setDemandeUIModels(List<DemandeUIModel> demandeUIModels) {
+ this.demandeUIModels = demandeUIModels;
+ firePropertyChange(PROPERTY_DEMANDE_U_I_MODELS, null, demandeUIModels);
+ }
+
+ public List<DemandeUIModel> getDemandeUIModels() {
+ return demandeUIModels;
+ }
+}
Property changes on: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIModel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -281,6 +281,9 @@
};
}
+ /**
+ * Auto select closest row near clic-mouse position and display popup menu.
+ */
@Override
public void autoSelectRowInTable(MouseEvent e, JPopupMenu popup) {
boolean rightClick = SwingUtilities.isRightMouseButton(e);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-08-08 14:20:13 UTC (rev 503)
@@ -285,6 +285,8 @@
result.add((Component) dialogContent);
result.setResizable(true);
+
+ result.setSize(dim);
final AbstractApplicationUIHandler handler = dialogContent.getHandler();
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-08 12:59:17 UTC (rev 502)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-08 14:20:13 UTC (rev 503)
@@ -137,6 +137,8 @@
faxtomail.demandeList.action.print.tip=Imprimer
faxtomail.demandeList.action.reply=Répondre
faxtomail.demandeList.action.reply.tip=Répondre
+faxtomail.demandeList.action.transmit=Déplacer
+faxtomail.demandeList.action.transmit.tip=Déplacer
faxtomail.demandeList.demandNbLabel=Nombre de demandes
faxtomail.demandeList.goToNextPage=>
faxtomail.demandeList.goToPreviousPage=<
1
0
08 Aug '14
Author: kmorin
Date: 2014-08-08 14:59:17 +0200 (Fri, 08 Aug 2014)
New Revision: 502
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/502
Log:
integration des fetchs
Added:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.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/EmailServiceImpl.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.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/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/util/FaxToMailUIUtil.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-08-08 08:40:04 UTC (rev 501)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-08 12:59:17 UTC (rev 502)
@@ -54,6 +54,8 @@
public interface EmailService extends FaxToMailService {
Email getEmailById(String id);
+ Email getEmailById(String id, FaxToMailUser user);
+
Email saveEmail(Email email, FaxToMailUser user, String... modifiedFields) throws InvalidClientException;
Email saveEmail(Email email, Collection<Attachment> attachments, String clientCode, FaxToMailUser user, String... modifiedFields) throws InvalidClientException;
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 08:40:04 UTC (rev 501)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 12:59:17 UTC (rev 502)
@@ -66,7 +66,6 @@
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
import org.hibernate.Hibernate;
import org.nuiton.topia.persistence.TopiaEntities;
-import org.nuiton.topia.persistence.TopiaQueryBuilderAddCriteriaOrRunQueryStep;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
import org.nuiton.util.pagination.PaginationParameter;
@@ -97,28 +96,60 @@
@Override
public Email getEmailById(String id) {
Email email = getPersistenceContext().getEmailDao()
- .forTopiaIdEquals(id)
- .addAllFetches(Email.PROPERTY_DEMAND_TYPE,
- Email.PROPERTY_DEMAND_TYPE + "." + DemandType.PROPERTY_FIELDS,
- Email.PROPERTY_RANGE_ROW,
- Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
- Email.PROPERTY_HISTORY,
- Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
- Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS,
- Email.PROPERTY_REPLIES,
- Email.PROPERTY_ATTACHMENT,
- Email.PROPERTY_TAKEN_BY,
- Email.PROPERTY_CLIENT,
- Email.PROPERTY_EMAIL_GROUP,
- Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL,
- Email.PROPERTY_ETAT_ATTENTE,
- Email.PROPERTY_ETAT_ATTENTE + "." + EtatAttente.PROPERTY_INVALID_FORM_DISABLED_ACTIONS,
- Email.PROPERTY_ETAT_ATTENTE + "." + EtatAttente.PROPERTY_VALID_FORM_DISABLED_ACTIONS,
- Email.PROPERTY_PRIORITY).findUnique();
-// fetchEmailData(email);
+ .forTopiaIdEquals(id)
+ .addAllFetches(Email.PROPERTY_DEMAND_TYPE,
+ Email.PROPERTY_DEMAND_TYPE + "." + DemandType.PROPERTY_FIELDS,
+ Email.PROPERTY_RANGE_ROW,
+ Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
+ Email.PROPERTY_HISTORY,
+ Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
+ Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS,
+ Email.PROPERTY_REPLIES,
+ Email.PROPERTY_ATTACHMENT,
+ Email.PROPERTY_TAKEN_BY,
+ Email.PROPERTY_CLIENT,
+ Email.PROPERTY_EMAIL_GROUP,
+ Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL,
+ Email.PROPERTY_ETAT_ATTENTE,
+ Email.PROPERTY_ETAT_ATTENTE + "." + EtatAttente.PROPERTY_INVALID_FORM_DISABLED_ACTIONS,
+ Email.PROPERTY_ETAT_ATTENTE + "." + EtatAttente.PROPERTY_VALID_FORM_DISABLED_ACTIONS,
+ Email.PROPERTY_PRIORITY).findUnique();
+
return email;
}
+ @Override
+ public Email getEmailById(String id, FaxToMailUser user) {
+ Email email = getEmailById(id);
+
+ MailFolderService mailFolderService = serviceContext.getMailFolderService();
+ MailFolder folder = email.getMailFolder();
+ browseFolderParent(folder, user, mailFolderService);
+
+ return email;
+ }
+
+ protected void browseFolderParent(MailFolder folder, FaxToMailUser user, MailFolderService mailFolderService) {
+ Hibernate.initialize(folder);
+ mailFolderService.fetchFolderAttributes(folder);
+
+ MailFolder parent = folder.getParent();
+ if (parent != null) {
+ browseFolderParent(parent, user, mailFolderService);
+ }
+
+ boolean writable = parent != null && parent.isFolderWritable();
+ writable |= CollectionUtils.containsAny(folder.getWriteRightGroups(), user.getUserGroups());
+ writable |= folder.containsWriteRightUsers(user);
+
+ boolean readable = parent != null && parent.isFolderReadable();
+ readable |= CollectionUtils.containsAny(folder.getReadRightGroups(), user.getUserGroups());
+ readable |= folder.containsReadRightUsers(user);
+
+ folder.setFolderWritable(writable);
+ folder.setFolderReadable(readable);
+ }
+
/**
* Save email with default email client code.
*
@@ -152,85 +183,7 @@
email.setClient(client);
if (attachments != null) {
- AttachmentTopiaDao attachmentTopiaDao = getPersistenceContext().getAttachmentDao();
- List<Attachment> currentAttachments = attachmentTopiaDao.forTopiaIdIn(email.getAttachmentTopiaIds()).findAll();
- if (currentAttachments == null) {
- currentAttachments = new ArrayList<>();
- }
- Map<String, Attachment> currentAttachmentIndex = new HashMap<>(Maps.uniqueIndex(currentAttachments, TopiaEntities.getTopiaIdFunction()));
-
- AttachmentFileTopiaDao attachementFileTopiaDao = getPersistenceContext().getAttachmentFileDao();
- for (Attachment attachment : attachments) {
-
- // get attachment BEFORE for flush
- AttachmentFile originalFile = null;
- AttachmentFile editedFile = null;
- if (attachment.isPersisted()) {
- originalFile = getAttachmentFile(attachment.getTopiaId(), true);
- editedFile = getAttachmentFile(attachment.getTopiaId(), false);
- }
-
- // get session attachment from id
- Attachment currentAttachment;
- if (StringUtils.isNotBlank(attachment.getTopiaId())) {
- currentAttachment = currentAttachmentIndex.remove(attachment.getTopiaId());
- } else {
- currentAttachment = new AttachmentImpl();
- }
-
- // dans tout les cas, les pieces jointes courante de l'attchent prévale
- // sur celles en base
- if (attachment.getOriginalFile() != null) {
- originalFile = attachment.getOriginalFile();
- }
- if (attachment.getEditedFile() != null) {
- editedFile = attachment.getEditedFile();
- }
-
- // copy new data
- attachmentBinder.copyExcluding(attachment, currentAttachment,
- Attachment.PROPERTY_EDITED_FILE,
- Attachment.PROPERTY_EDITED_FILE_NAME,
- Attachment.PROPERTY_ORIGINAL_FILE,
- Attachment.PROPERTY_ORIGINAL_FILE_NAME,
- Attachment.PROPERTY_TOPIA_CREATE_DATE,
- Attachment.PROPERTY_TOPIA_ID,
- Attachment.PROPERTY_TOPIA_VERSION);
-
- currentAttachment.setEditedFile(editedFile);
- currentAttachment.setOriginalFile(originalFile);
-
- // ici les pieces jointes peuvent être sauvegardées sans que les pièces jointes
- // soit présentes dans les entités car l'ui ne les a pas copiées
- // pour ne pas les charger inutilement
- // donc on les remet manuellement
-
- if (!originalFile.isPersisted()) {
- attachementFileTopiaDao.create(originalFile);
- } else {
- attachementFileTopiaDao.update(originalFile);
- }
-
- if (editedFile != null) {
- if (!editedFile.isPersisted()) {
- attachementFileTopiaDao.create(editedFile);
- } else {
- attachementFileTopiaDao.update(editedFile);
- }
- }
-
- if (!currentAttachment.isPersisted()) {
- // persist using cascade
- currentAttachments.add(currentAttachment);
- }
- }
-
- // delete not found attachments
- for (Attachment attachment : currentAttachmentIndex.values()) {
- currentAttachments.remove(attachment);
- }
-
- email.setAttachment(currentAttachments);
+ updateAttachments(email, attachments);
}
if (email.getRangeRow() != null) {
@@ -269,52 +222,7 @@
&& email.getDemandType() != null
&& StringUtils.isNotBlank(email.getProjectReference())) {
- if (email.getDemandType().containsFields(MailField.RANGE_ROW)) {
-
- // si les gammes sont vides, la demande n'est pas valide, on ne fait rien dans ce cas
- // sinon on transfer à edi
- if (email.isRangeRowNotEmpty()) {
-
- // recherche parmis les dossiers parent, si la configuration ediTranfer à été demandée
- Boolean ediTranfer = null;
- MailFolder loopFolder = email.getMailFolder();
- do {
- ediTranfer = loopFolder.getEdiTransfer();
- loopFolder = loopFolder.getParent();
- } while (ediTranfer == null && loopFolder != null);
-
- if (BooleanUtils.isTrue(ediTranfer)) {
- // ajout d'un historique
- transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI,
- History.PROPERTY_MODIFICATION_DATE, new Date());
- email.addHistory(transmissionToEdi);
-
- // changement du status
- email.setDemandStatus(DemandStatus.TRANSMISSION_TO_EDI);
- fieldSet.add(Email.PROPERTY_DEMAND_STATUS);
- } else {
- // TODO echatellier : pas sur qu'il faille l'ajouter tout le temps, mais sinon, le transfer se reproduira
- transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI,
- History.PROPERTY_MODIFICATION_DATE, new Date());
- email.addHistory(transmissionToEdi);
-
- // passage en status
- email.setDemandStatus(DemandStatus.IN_PROGRESS);
- fieldSet.add(Email.PROPERTY_DEMAND_STATUS);
- }
- }
-
- } else {
-
- // TODO echatellier : pas sur qu'il faille l'ajouter tout le temps, mais sinon, le transfer se reproduira
- transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI,
- History.PROPERTY_MODIFICATION_DATE, new Date());
- email.addHistory(transmissionToEdi);
-
- // passage en status
- email.setDemandStatus(DemandStatus.IN_PROGRESS);
- fieldSet.add(Email.PROPERTY_DEMAND_STATUS);
- }
+ handleEdiTransmission(email, historyDao, fieldSet);
}
History history;
@@ -348,6 +256,133 @@
return result;
}
+ protected void updateAttachments(Email email, Collection<Attachment> attachments) {
+ AttachmentTopiaDao attachmentTopiaDao = getPersistenceContext().getAttachmentDao();
+
+ List<Attachment> currentAttachments = attachmentTopiaDao.forTopiaIdIn(email.getAttachmentTopiaIds()).findAll();
+ if (currentAttachments == null) {
+ currentAttachments = new ArrayList<>();
+ }
+ Map<String, Attachment> currentAttachmentIndex = new HashMap<>(Maps.uniqueIndex(currentAttachments, TopiaEntities.getTopiaIdFunction()));
+
+ AttachmentFileTopiaDao attachementFileTopiaDao = getPersistenceContext().getAttachmentFileDao();
+ for (Attachment attachment : attachments) {
+
+ // get session attachment from id
+ Attachment currentAttachment;
+ if (StringUtils.isNotBlank(attachment.getTopiaId())) {
+ currentAttachment = currentAttachmentIndex.remove(attachment.getTopiaId());
+ } else {
+ currentAttachment = new AttachmentImpl();
+ }
+
+ AttachmentFile originalFile = null;
+ AttachmentFile editedFile = null;
+ // dans tout les cas, les pieces jointes courante de l'attchent prévale
+ // sur celles en base
+ if (attachment.getOriginalFile() != null) {
+ originalFile = attachment.getOriginalFile();
+ }
+ if (attachment.getEditedFile() != null) {
+ editedFile = attachment.getEditedFile();
+ }
+
+ // copy new data
+ attachmentBinder.copyExcluding(attachment, currentAttachment,
+ Attachment.PROPERTY_EDITED_FILE,
+ Attachment.PROPERTY_EDITED_FILE_NAME,
+ Attachment.PROPERTY_ORIGINAL_FILE,
+ Attachment.PROPERTY_ORIGINAL_FILE_NAME,
+ Attachment.PROPERTY_TOPIA_CREATE_DATE,
+ Attachment.PROPERTY_TOPIA_ID,
+ Attachment.PROPERTY_TOPIA_VERSION);
+
+ currentAttachment.setEditedFile(editedFile);
+ currentAttachment.setOriginalFile(originalFile);
+
+ // ici les pieces jointes peuvent être sauvegardées sans que les pièces jointes
+ // soit présentes dans les entités car l'ui ne les a pas copiées
+ // pour ne pas les charger inutilement
+ // donc on les remet manuellement
+
+ if (!originalFile.isPersisted()) {
+ attachementFileTopiaDao.create(originalFile);
+ } else {
+ attachementFileTopiaDao.update(originalFile);
+ }
+
+ if (editedFile != null) {
+ if (!editedFile.isPersisted()) {
+ attachementFileTopiaDao.create(editedFile);
+ } else {
+ attachementFileTopiaDao.update(editedFile);
+ }
+ }
+
+ if (!currentAttachment.isPersisted()) {
+ // persist using cascade
+ currentAttachments.add(currentAttachment);
+ }
+ }
+
+ // delete not found attachments
+ for (Attachment attachment : currentAttachmentIndex.values()) {
+ currentAttachments.remove(attachment);
+ }
+
+ email.setAttachment(currentAttachments);
+ }
+
+ protected void handleEdiTransmission(Email email, HistoryTopiaDao historyDao, Set<String> fieldSet) {
+ History transmissionToEdi;
+ if (email.getDemandType().containsFields(MailField.RANGE_ROW)) {
+
+ // si les gammes sont vides, la demande n'est pas valide, on ne fait rien dans ce cas
+ // sinon on transfer à edi
+ if (email.isRangeRowNotEmpty()) {
+
+ // recherche parmis les dossiers parent, si la configuration ediTranfer à été demandée
+ Boolean ediTranfer = null;
+ MailFolder loopFolder = email.getMailFolder();
+ do {
+ ediTranfer = loopFolder.getEdiTransfer();
+ loopFolder = loopFolder.getParent();
+ } while (ediTranfer == null && loopFolder != null);
+
+ if (BooleanUtils.isTrue(ediTranfer)) {
+ // ajout d'un historique
+ transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI,
+ History.PROPERTY_MODIFICATION_DATE, new Date());
+ email.addHistory(transmissionToEdi);
+
+ // changement du status
+ email.setDemandStatus(DemandStatus.TRANSMISSION_TO_EDI);
+ fieldSet.add(Email.PROPERTY_DEMAND_STATUS);
+ } else {
+ // TODO echatellier : pas sur qu'il faille l'ajouter tout le temps, mais sinon, le transfer se reproduira
+ transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI,
+ History.PROPERTY_MODIFICATION_DATE, new Date());
+ email.addHistory(transmissionToEdi);
+
+ // passage en status
+ email.setDemandStatus(DemandStatus.IN_PROGRESS);
+ fieldSet.add(Email.PROPERTY_DEMAND_STATUS);
+ }
+ }
+
+ } else {
+
+ // TODO echatellier : pas sur qu'il faille l'ajouter tout le temps, mais sinon, le transfer se reproduira
+ transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI,
+ History.PROPERTY_MODIFICATION_DATE, new Date());
+ email.addHistory(transmissionToEdi);
+
+ // passage en status
+ email.setDemandStatus(DemandStatus.IN_PROGRESS);
+ fieldSet.add(Email.PROPERTY_DEMAND_STATUS);
+ }
+ }
+
@Override
public void transmitPendingDemandsToEdi() {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
@@ -702,22 +737,9 @@
EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
PaginationResult<Email> result = emailDao.search(emailFilter, readMailFolders, pagination);
- MailFolderService mailFolderService = serviceContext.getMailFolderService();
// Fetch lazy field for list display
for (Email email : result.getElements()) {
fetchEmailData(email);
- MailFolder folder = email.getMailFolder();
- while (folder != null) {
- Hibernate.initialize(folder);
- //TODO 20140807 kmorin : is folder readable
- folder.setFolderReadable(false);
- folder.setFolderWritable(false);
-
- mailFolderService.fetchFolderAttributes(folder);
-
- folder = folder.getParent();
- }
-
}
return result;
@@ -732,7 +754,7 @@
// if both groups are null
if (group1 == null && group2 == null) {
- EmailGroup group = groupDao.create(EmailGroup.PROPERTY_EMAIL, Lists.newArrayList(email1, email2));
+ EmailGroup group = groupDao.create(EmailGroup.PROPERTY_EMAIL, Sets.newHashSet(email1, email2));
email1.setEmailGroup(group);
email2.setEmailGroup(group);
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java 2014-08-08 08:40:04 UTC (rev 501)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java 2014-08-08 12:59:17 UTC (rev 502)
@@ -169,6 +169,7 @@
Hibernate.initialize(folder.getRanges());
Hibernate.initialize(folder.getReplyAddresses());
Hibernate.initialize(folder.getReplyDomains());
+ Hibernate.initialize(folder.getDemandTypes());
if (folder.sizeEtatAttentes() > 0) {
for (EtatAttente etatAttente : folder.getEtatAttentes()) {
@@ -176,8 +177,6 @@
Hibernate.initialize(etatAttente.getValidFormDisabledActions());
}
}
-
- Hibernate.initialize(folder.getDemandTypes());
}
@Override
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java 2014-08-08 12:59:17 UTC (rev 502)
@@ -0,0 +1,111 @@
+package com.franciaflex.faxtomail.ui.swing.actions;
+
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
+import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException;
+import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
+import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUI;
+import com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup.DemandGroupUI;
+import com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup.DemandGroupUIHandler;
+import org.apache.commons.lang3.StringUtils;
+import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler;
+
+import javax.swing.*;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ */
+public class OpenGroupedDemandAction extends AbstractFaxToMailAction<DemandeUIModel, DemandGroupUI, DemandGroupUIHandler> {
+
+ protected DemandeUIModel demandToOpen;
+
+ public OpenGroupedDemandAction(DemandGroupUIHandler handler, DemandeUIModel demandToOpen) {
+ super(handler, false);
+ this.demandToOpen = demandToOpen;
+ setActionDescription(t("faxtomail.action.goto.demand.tip"));
+ }
+
+ @Override
+ public boolean prepareAction() throws Exception {
+ boolean result = super.prepareAction();
+
+ // tentative de verrouillages des email existants
+ if (StringUtils.isNotBlank(demandToOpen.getTopiaId())) {
+ FaxToMailUser currentUser = getContext().getCurrentUser();
+
+ try {
+ FaxToMailServiceContext serviceContext = getContext().newServiceContext();
+ serviceContext.getEmailService().lockEmail(demandToOpen.getTopiaId(), currentUser);
+
+ } catch (AlreadyLockedMailException ex) {
+ result = false;
+
+ String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(ex.getLockedBy()));
+ JOptionPane.showMessageDialog(getHandler().getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.alreadyLockedBy.title"),
+ JOptionPane.ERROR_MESSAGE);
+ }
+ }
+
+ return result;
+ }
+
+
+ @Override
+ public void doAction() throws Exception {
+ FaxToMailUIContext context = getContext();
+ Email email = context.newServiceContext().getEmailService().getEmailById(demandToOpen.getTopiaId(),
+ context.getCurrentUser());
+ demandToOpen.fromEntity(email);
+ demandToOpen.setMailFolder(email.getMailFolder());
+ demandToOpen.setCloseable(true);
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ FaxToMailUser takenBy = demandToOpen.getTakenBy();
+ FaxToMailUser currentUser = getContext().getCurrentUser();
+
+ if (demandToOpen.getArchiveDate() != null) {
+ demandToOpen.setEditable(false);
+
+ } else if (takenBy != null && !currentUser.equals(takenBy)) {
+ String htmlMessage = String.format(
+ AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
+ t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
+ t("faxtomail.alert.alreadyTakenBy.help"));
+
+ int result = JOptionPane.showConfirmDialog(getHandler().getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.alreadyTakenBy.title"),
+ JOptionPane.YES_NO_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+
+ switch (result) {
+ case JOptionPane.CANCEL_OPTION:
+ return;
+
+ case JOptionPane.NO_OPTION:
+ demandToOpen.setEditable(false);
+ break;
+
+ case JOptionPane.YES_OPTION:
+ Email email = getContext().newServiceContext().getEmailService().takeEmail(demandToOpen.getTopiaId(), currentUser);
+ demandToOpen.fromEntity(email);
+ demandToOpen.setEditable(true);
+ break;
+ }
+ }
+
+ MainUIHandler mainUIHandler = getContext().getMainUI().getHandler();
+ DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody();
+ parentContainer.getModel().addDemand(demandToOpen);
+ }
+}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-08 08:40:04 UTC (rev 501)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-08 12:59:17 UTC (rev 502)
@@ -81,14 +81,14 @@
@Override
public void doAction() throws Exception {
- super.doAction();
-
DemandeUIModel currentEmail = getContext().getCurrentEmail();
if (StringUtils.isNotBlank(currentEmail.getTopiaId())) {
FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- Email email = serviceContext.getEmailService().getEmailById(currentEmail.getTopiaId());
+ Email email = serviceContext.getEmailService().getEmailById(currentEmail.getTopiaId(), getContext().getCurrentUser());
currentEmail.setGroupedDemandes(email.getEmailGroup());
+ currentEmail.setMailFolder(email.getMailFolder());
}
+ super.doAction();
}
@Override
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-08 08:40:04 UTC (rev 501)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-08 12:59:17 UTC (rev 502)
@@ -761,7 +761,9 @@
for (Email email : emails) {
if (!email.getTopiaId().equals(getTopiaId())) {
DemandeUIModel demandeUIModel = new DemandeUIModel();
- demandeUIModel.fromEntity(email);
+ demandeUIModel.setObject(email.getObject());
+ demandeUIModel.setCompanyReference(email.getCompanyReference());
+ demandeUIModel.setTopiaId(email.getTopiaId());
groupedDemandes.add(demandeUIModel);
}
}
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-08-08 08:40:04 UTC (rev 501)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java 2014-08-08 12:59:17 UTC (rev 502)
@@ -29,6 +29,7 @@
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
+import com.franciaflex.faxtomail.ui.swing.actions.OpenGroupedDemandAction;
import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUI;
@@ -153,60 +154,8 @@
public void openDemande(DemandeUIModel demande) {
closeEditor();
- FaxToMailUIContext context = getContext();
- demande.setCloseable(true);
-// context.setCurrentEmail(demande);
-// context.getActionEngine().runAction(new ShowDemandeAction(context.getMainUI().getHandler()));
-
- FaxToMailUser takenBy = demande.getTakenBy();
- FaxToMailUser currentUser = getContext().getCurrentUser();
-
- try {
- // tentative de verrouillage de la demande
- FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- serviceContext.getEmailService().lockEmail(demande.getTopiaId(), currentUser);
-
- 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 = serviceContext.getEmailService().takeEmail(demande.getTopiaId(), currentUser);
- demande.fromEntity(email);
- demande.setEditable(true);
- break;
- }
- }
-
- MainUIHandler mainUIHandler = context.getMainUI().getHandler();
- DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody();
- parentContainer.getModel().addDemand(demande);
- } catch (AlreadyLockedMailException ex) {
- String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(ex.getLockedBy()));
- JOptionPane.showMessageDialog(getTopestUI(),
- htmlMessage,
- t("faxtomail.alert.alreadyLockedBy.title"),
- JOptionPane.ERROR_MESSAGE);
- }
+ OpenGroupedDemandAction openAction = new OpenGroupedDemandAction(this, demande);
+ getContext().getActionFactory().createUIAction(null, openAction).actionPerformed(null);
}
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-08-08 08:40:04 UTC (rev 501)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-08 12:59:17 UTC (rev 502)
@@ -267,7 +267,7 @@
protected void runSearchAction() {
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/util/FaxToMailUIUtil.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-08-08 08:40:04 UTC (rev 501)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-08-08 12:59:17 UTC (rev 502)
@@ -373,7 +373,7 @@
if (!Desktop.isDesktopSupported()) {
throw new ApplicationTechnicalException(
- t("jaxx.application.error.desktop.not.supported"));
+ t("jaxx.application.error.desktop.print.not.supported"));
}
Desktop desktop = Desktop.getDesktop();
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-08 08:40:04 UTC (rev 501)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-08 12:59:17 UTC (rev 502)
@@ -251,7 +251,7 @@
faxtomail.reply.message=\nLe %1$s, %2$s a écrit \:\n> %3$s
faxtomail.reply.subject=Re \: %s
faxtomail.reply.title=Réponse à \: %s
-faxtomail.search.action.error=
+faxtomail.search.action.error=Erreur lors de la recherche
faxtomail.search.action.gotoFolder=Aller au dossier
faxtomail.search.action.gotoFolder.tip=Aller au dossier
faxtomail.search.addGroupedElement.label=Ajouter les éléments groupés aux résultats
@@ -289,9 +289,8 @@
faxtomail.validator.error.reply.to.email=Le champ 'A\:' doit être une adresse email valide \!
faxtomail.validator.error.reply.to.required=Le champ 'A\:' est requis \!
faxtomail.validator.error.reply.totalAttachmentLength.required=La taille totale des pièces jointes dépasse la limite acceptée
-jaxx.application.error.cannot.mail=
-jaxx.application.error.cannot.print=
-jaxx.application.error.desktop.not.supported=
-jaxx.application.error.desktop.print.not.supported=
-jaxx.application.error.noPrinter=
-swing.error.cannot.copy.file=
+jaxx.application.error.cannot.mail=Erreur lors de l'ouverture du client mail
+jaxx.application.error.cannot.print=Erreur lors de l'impression
+jaxx.application.error.desktop.print.not.supported=Erreur lors de l'impression
+jaxx.application.error.noPrinter=Erreur lors de l'impression
+swing.error.cannot.copy.file=Erreur lors de la copie des fichiers
1
0
r501 - in trunk: faxtomail-persistence/src/main/xmi faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service
by echatellier@users.forge.codelutin.com 08 Aug '14
by echatellier@users.forge.codelutin.com 08 Aug '14
08 Aug '14
Author: echatellier
Date: 2014-08-08 10:40:04 +0200 (Fri, 08 Aug 2014)
New Revision: 501
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/501
Log:
Fix valid/invalid actions fetch
Modified:
trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties
===================================================================
--- trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties 2014-08-08 08:26:09 UTC (rev 500)
+++ trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties 2014-08-08 08:40:04 UTC (rev 501)
@@ -28,6 +28,8 @@
# EtatAttente
com.franciaflex.faxtomail.persistence.entities.EtatAttente.attribute.label.tagvalue.naturalId=true
+com.franciaflex.faxtomail.persistence.entities.EtatAttente.attribute.validFormDisabledActions.stereotype=unique
+com.franciaflex.faxtomail.persistence.entities.EtatAttente.attribute.invalidFormDisabledActions.stereotype=unique
# Priority
com.franciaflex.faxtomail.persistence.entities.Priority.attribute.label.tagvalue.naturalId=true
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 08:26:09 UTC (rev 500)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-08 08:40:04 UTC (rev 501)
@@ -112,6 +112,8 @@
Email.PROPERTY_EMAIL_GROUP,
Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL,
Email.PROPERTY_ETAT_ATTENTE,
+ Email.PROPERTY_ETAT_ATTENTE + "." + EtatAttente.PROPERTY_INVALID_FORM_DISABLED_ACTIONS,
+ Email.PROPERTY_ETAT_ATTENTE + "." + EtatAttente.PROPERTY_VALID_FORM_DISABLED_ACTIONS,
Email.PROPERTY_PRIORITY).findUnique();
// fetchEmailData(email);
return email;
1
0
r500 - trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service
by athimel@users.forge.codelutin.com 08 Aug '14
by athimel@users.forge.codelutin.com 08 Aug '14
08 Aug '14
Author: athimel
Date: 2014-08-08 10:26:09 +0200 (Fri, 08 Aug 2014)
New Revision: 500
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/500
Log:
Fix type on demo data
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java 2014-08-08 08:25:12 UTC (rev 499)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java 2014-08-08 08:26:09 UTC (rev 500)
@@ -110,7 +110,7 @@
if (count == 0) {
List<DemandType> types = Lists.newArrayList(
- demandTypeDao.create(DemandType.PROPERTY_LABEL, "Commande", DemandType.PROPERTY_FIELDS, Lists.newArrayList(MailField.RANGE_ROW)),
+ demandTypeDao.create(DemandType.PROPERTY_LABEL, "Commande", DemandType.PROPERTY_FIELDS, Sets.newHashSet(MailField.RANGE_ROW)),
demandTypeDao.create(DemandType.PROPERTY_LABEL, "Commande Réponse"),
demandTypeDao.create(DemandType.PROPERTY_LABEL, "Commande Annulation/Modification"),
demandTypeDao.create(DemandType.PROPERTY_LABEL, "Devis Diffus"),
1
0
r499 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions
by echatellier@users.forge.codelutin.com 08 Aug '14
by echatellier@users.forge.codelutin.com 08 Aug '14
08 Aug '14
Author: echatellier
Date: 2014-08-08 10:25:12 +0200 (Fri, 08 Aug 2014)
New Revision: 499
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/499
Log:
Fix pagination
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-08 08:15:15 UTC (rev 498)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-08 08:25:12 UTC (rev 499)
@@ -118,8 +118,8 @@
}
model.setEmails(demands);
-// model.setPaginationParameter(paginationResult.getCurrentPage());
-// model.setPaginationResult(paginationResult);
+ model.setPaginationParameter(paginationResult.getCurrentPage());
+ model.setPaginationResult(paginationResult);
}
@Override
1
0
r498 - in trunk: faxtomail-persistence/src/main/xmi faxtomail-service/src/main/resources/db/migration
by echatellier@users.forge.codelutin.com 08 Aug '14
by echatellier@users.forge.codelutin.com 08 Aug '14
08 Aug '14
Author: echatellier
Date: 2014-08-08 10:15:15 +0200 (Fri, 08 Aug 2014)
New Revision: 498
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/498
Log:
Remove index between email and email group
Removed:
trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_492__add_emailGroup_emails_idx.sql
Modified:
trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties
trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties
===================================================================
--- trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties 2014-08-08 07:13:57 UTC (rev 497)
+++ trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties 2014-08-08 08:15:15 UTC (rev 498)
@@ -86,6 +86,9 @@
com.franciaflex.faxtomail.persistence.entities.Email.attribute.mailFolder.tagvalue.notNull=true
com.franciaflex.faxtomail.persistence.entities.Email.attribute.originalEmail.tagvalue.notNull=true
+# EmailGroup
+com.franciaflex.faxtomail.persistence.entities.EmailGroup.attribute.email.stereotype=unique
+
# History
com.franciaflex.faxtomail.persistence.entities.History.attribute.type.tagvalue.notNull=true
com.franciaflex.faxtomail.persistence.entities.History.attribute.fields.stereotype=unique
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
===================================================================
(Binary files differ)
Deleted: trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_492__add_emailGroup_emails_idx.sql
===================================================================
--- trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_492__add_emailGroup_emails_idx.sql 2014-08-08 07:13:57 UTC (rev 497)
+++ trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_492__add_emailGroup_emails_idx.sql 2014-08-08 08:15:15 UTC (rev 498)
@@ -1,6 +0,0 @@
-ALTER TABLE email ADD COLUMN emailgroup_idx ${indexType};
-
-UPDATE email SET emailgroup_idx = (
- SELECT COUNT(topiaid) FROM email sub
- WHERE sub.email = emailgroup.email AND (sub.topiacreatedate || sub.topiaid) < (emailgroup.topiacreatedate || emailgroup.topiaid)
-);
\ No newline at end of file
1
0