Author: kmorin Date: 2014-12-16 15:25:54 +0000 (Tue, 16 Dec 2014) New Revision: 730 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/730 Log: refs #6315 fuites m?\195?\169moires logs 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/DemandeUIHandler.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/demandgroup/DemandGroupUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.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-12-12 15:05:59 UTC (rev 729) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-16 15:25:54 UTC (rev 730) @@ -57,6 +57,7 @@ import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.actions.OpenMailFolderChooserFromListAction; import com.franciaflex.faxtomail.ui.swing.util.DemandeTableModel; +import com.franciaflex.faxtomail.ui.swing.util.RemoveablePropertyChangeListener; import com.google.common.collect.Lists; import jaxx.runtime.JAXXUtil; import jaxx.runtime.swing.table.filter.TableFilter; @@ -119,6 +120,14 @@ protected final Binder<EmailFilter, EmailFilter> binder = BinderFactory.newBinder(EmailFilter.class); + protected final PropertyChangeListener actionInProgressListener = new RemoveablePropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + boolean inProgress = (boolean) evt.getNewValue(); + getUI().getNavigationTree().setEnabled(!inProgress); + } + }; + public TableFilter<JXTable> getTableFilter() { return tableFilter; } @@ -278,13 +287,7 @@ final Map<MailFolder, FolderTreeNode> nodesByFolder = FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, model.getFolders(), true); - getContext().addPropertyChangeListener(FaxToMailUIContext.PROPERTY_ACTION_IN_PROGRESS, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - boolean inProgress = (boolean) evt.getNewValue(); - navigationTree.setEnabled(!inProgress); - } - }); + getContext().addPropertyChangeListener(FaxToMailUIContext.PROPERTY_ACTION_IN_PROGRESS, actionInProgressListener); navigationTree.addTreeSelectionListener(new TreeSelectionListener() { @Override @@ -600,8 +603,16 @@ log.debug("closing: " + ui); } - getModel().getEmailFilter().removePropertyChangeListener(emailFilterPropertyChangeListener); + DemandeListUIModel model = getModel(); + model.getEmailFilter().removePropertyChangeListener(emailFilterPropertyChangeListener); + List<DemandeUIModel> selectedEmails = model.getSelectedEmails(); + if (selectedEmails != null) { + for (DemandeUIModel demand : selectedEmails) { + demand.removePropertyChangeListener(selectedDemandeChangeListener); + } + } + JTree tree = getUI().getNavigationTree(); TreeModel treeModel = tree.getModel(); Enumeration<TreePath> paths = tree.getExpandedDescendants(new TreePath(treeModel.getRoot())); @@ -622,6 +633,8 @@ rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(KeyStroke.getKeyStroke(REFRESH_KEY)); rootPane.getActionMap().remove(REFRESH_FOLDER_ACTION); + getContext().removePropertyChangeListener(FaxToMailUIContext.PROPERTY_ACTION_IN_PROGRESS, actionInProgressListener); + clearValidators(); } 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-12-12 15:05:59 UTC (rev 729) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-12-16 15:25:54 UTC (rev 730) @@ -103,43 +103,96 @@ protected BeanMonitor monitor; - @Override - public void afterInit(DemandeUI ui) { + protected PropertyChangeListener rangeRowListener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + DemandeUIModel model = getModel(); + String propertyName = evt.getPropertyName(); - initUI(ui); + if (RangeRowModel.PROPERTY_VALID.equals(propertyName)) { + RangeRowModel row = (RangeRowModel) evt.getSource(); + Boolean valid = (Boolean) evt.getNewValue(); + if (Boolean.TRUE.equals(valid)) { + model.addValidRangeRow(row); + } else { + model.removeValidRangeRow(row); + } + } - final DemandeUIModel model = getModel(); - Set<String> propertiesToIgnore = getPropertiesToIgnore(); - monitor = new BeanMonitor(true, propertiesToIgnore.toArray(new String[propertiesToIgnore.size()])); - monitor.setBean(model); + if (RangeRowModel.PROPERTY_VALID.equals(propertyName) + || RangeRow.PROPERTY_QUOTATION_QUANTITY.equals(propertyName) + || RangeRow.PROPERTY_PRODUCT_QUANTITY.equals(propertyName) + || RangeRow.PROPERTY_SAV_QUANTITY.equals(propertyName)) { - model.addPropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, new PropertyChangeListener() { + RangeTableModel rangeTableModel = (RangeTableModel) getUI().getRangeTable().getModel(); + List<RangeRowModel> rangeRows = rangeTableModel.getRows(); + Map<String, Integer> quantities = FaxToMailUIUtil.computeQuantities(rangeRows); + model.setQuotationNb(quantities.get(DemandeUIModel.PROPERTY_QUOTATION_NB)); + model.setPfNb(quantities.get(DemandeUIModel.PROPERTY_PF_NB)); + model.setSavNb(quantities.get(DemandeUIModel.PROPERTY_SAV_NB)); + } - private int dividerLocation = -1; + } + }; - @Override - public void propertyChange(PropertyChangeEvent evt) { - DemandType newType = (DemandType) evt.getNewValue(); - DemandType oldType = (DemandType) evt.getOldValue(); + protected final PropertyChangeListener demandTypeListener = new PropertyChangeListener() { - if (newType != null && (oldType == null - || !Objects.equals(FaxToMailServiceUtils.contains(oldType.getRequiredFields(), MailField.RANGE_ROW), - FaxToMailServiceUtils.contains(newType.getRequiredFields(), MailField.RANGE_ROW)))) { - JSplitPane leftVerticalSplitPanel = getUI().getLeftVerticalSplitPanel(); + private int dividerLocation = -1; - if (FaxToMailServiceUtils.contains(newType.getRequiredFields(), MailField.RANGE_ROW)) { - if (dividerLocation < 0) { - dividerLocation = leftVerticalSplitPanel.getLeftComponent().getPreferredSize().height + 10; - } - leftVerticalSplitPanel.setDividerLocation(dividerLocation); + @Override + public void propertyChange(PropertyChangeEvent evt) { + DemandType oldType = (DemandType) evt.getOldValue(); + DemandType newType = (DemandType) evt.getNewValue(); - } else { - dividerLocation = leftVerticalSplitPanel.getDividerLocation(); + boolean oldRangePanelVisible = FaxToMailUIUtil.isRangePanelVisible(oldType); + boolean newRangePanelVisible = FaxToMailUIUtil.isRangePanelVisible(newType); + + JSplitPane leftVerticalSplitPanel = getUI().getLeftVerticalSplitPanel(); + + if (oldRangePanelVisible != newRangePanelVisible) { + if (newRangePanelVisible) { + if (dividerLocation < 0) { + dividerLocation = leftVerticalSplitPanel.getLeftComponent().getPreferredSize().height + 10; } + leftVerticalSplitPanel.setDividerLocation(dividerLocation); + + } else { + dividerLocation = leftVerticalSplitPanel.getDividerLocation(); + leftVerticalSplitPanel.setDividerLocation(leftVerticalSplitPanel.getHeight()); } + + leftVerticalSplitPanel.setName("leftVerticalSplitPanel" + newRangePanelVisible); + getContext().getSwingSession().add(leftVerticalSplitPanel, true); } - }); + +// if (newType != null && (oldType == null +// || !Objects.equals(FaxToMailServiceUtils.contains(oldType.getRequiredFields(), MailField.RANGE_ROW), +// FaxToMailServiceUtils.contains(newType.getRequiredFields(), MailField.RANGE_ROW)))) { +// +// if (FaxToMailServiceUtils.contains(newType.getRequiredFields(), MailField.RANGE_ROW)) { +// if (dividerLocation < 0) { +// dividerLocation = leftVerticalSplitPanel.getLeftComponent().getPreferredSize().height + 10; +// } +// leftVerticalSplitPanel.setDividerLocation(dividerLocation); +// +// } else { +// dividerLocation = leftVerticalSplitPanel.getDividerLocation(); +// } +// } + } + }; + + @Override + public void afterInit(DemandeUI ui) { + + initUI(ui); + + DemandeUIModel model = getModel(); + Set<String> propertiesToIgnore = getPropertiesToIgnore(); + monitor = new BeanMonitor(true, propertiesToIgnore.toArray(new String[propertiesToIgnore.size()])); + monitor.setBean(model); + MailFolder folder = model.getMailFolder(); initBeanFilterableComboBox(ui.getPriorityComboBox(), getContext().getPriorityCache(), model.getPriority()); @@ -231,44 +284,13 @@ // add listener to update row validity and quantity totals table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - protected PropertyChangeListener listener = new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - DemandeUIModel model = getModel(); - String propertyName = evt.getPropertyName(); - - if (RangeRowModel.PROPERTY_VALID.equals(propertyName)) { - RangeRowModel row = (RangeRowModel) evt.getSource(); - Boolean valid = (Boolean) evt.getNewValue(); - if (Boolean.TRUE.equals(valid)) { - model.addValidRangeRow(row); - } else { - model.removeValidRangeRow(row); - } - } - - if (RangeRowModel.PROPERTY_VALID.equals(propertyName) - || RangeRow.PROPERTY_QUOTATION_QUANTITY.equals(propertyName) - || RangeRow.PROPERTY_PRODUCT_QUANTITY.equals(propertyName) - || RangeRow.PROPERTY_SAV_QUANTITY.equals(propertyName)) { - - List<RangeRowModel> rangeRows = rangeTableModel.getRows(); - Map<String, Integer> quantities = FaxToMailUIUtil.computeQuantities(rangeRows); - model.setQuotationNb(quantities.get(DemandeUIModel.PROPERTY_QUOTATION_NB)); - model.setPfNb(quantities.get(DemandeUIModel.PROPERTY_PF_NB)); - model.setSavNb(quantities.get(DemandeUIModel.PROPERTY_SAV_NB)); - } - - } - }; - protected RangeRowModel currentRow; @Override public void valueChanged(ListSelectionEvent e) { ListSelectionModel source = (ListSelectionModel) e.getSource(); if (currentRow != null) { - currentRow.removePropertyChangeListener(listener); + currentRow.removePropertyChangeListener(rangeRowListener); } if (source.isSelectionEmpty()) { @@ -276,7 +298,7 @@ } else { int rowIndex = source.getLeadSelectionIndex(); currentRow = rangeTableModel.getEntry(rowIndex); - currentRow.addPropertyChangeListener(listener); + currentRow.addPropertyChangeListener(rangeRowListener); } } }); @@ -410,24 +432,9 @@ } ); - final JSplitPane leftVerticalSplitPanel = getUI().getLeftVerticalSplitPanel(); - model.addPropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - boolean oldRangePanelVisible = FaxToMailUIUtil.isRangePanelVisible((DemandType) evt.getOldValue()); - boolean newRangePanelVisible = FaxToMailUIUtil.isRangePanelVisible((DemandType) evt.getNewValue()); + JSplitPane leftVerticalSplitPanel = getUI().getLeftVerticalSplitPanel(); - if (oldRangePanelVisible != newRangePanelVisible) { - leftVerticalSplitPanel.setName("leftVerticalSplitPanel" + newRangePanelVisible); - getContext().getSwingSession().add(leftVerticalSplitPanel, true); - if (oldRangePanelVisible) { - leftVerticalSplitPanel.setDividerLocation(leftVerticalSplitPanel.getHeight()); - } else { - leftVerticalSplitPanel.setDividerLocation(getUI().getDemandForm().getPreferredSize().height); - } - } - } - }); + model.addPropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, demandTypeListener); leftVerticalSplitPanel.setName("leftVerticalSplitPanel" + FaxToMailUIUtil.isRangePanelVisible(model.getDemandType())); getContext().getSwingSession().add(leftVerticalSplitPanel, true); @@ -457,8 +464,17 @@ log.debug("closing: " + ui); } FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - serviceContext.getEmailService().unlockEmail(getModel().getTopiaId()); + DemandeUIModel model = getModel(); + + serviceContext.getEmailService().unlockEmail(model.getTopiaId()); + + model.removePropertyChangeListener(listModelListener); + model.removePropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, demandTypeListener); + for (RangeRowModel row : model.getValidRangeRowModels()) { + row.removePropertyChangeListener(rangeRowListener); + } + clearValidators(); } 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-12-12 15:05:59 UTC (rev 729) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-12-16 15:25:54 UTC (rev 730) @@ -39,6 +39,7 @@ import com.franciaflex.faxtomail.ui.swing.content.pdfeditor.PDFEditorUI; import jaxx.runtime.validator.swing.SwingValidator; +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.action.AbstractApplicationAction; @@ -63,10 +64,34 @@ */ public class DemandesUIHandler extends AbstractFaxToMailUIHandler<DemandesUIModel, DemandesUI> implements TabContainerHandler, CloseableUI { - protected DelegateTabContainerHandler delegateTabHandler; protected Configuration config; - protected SaveDemandeAction saveDemandeAction; + protected final PropertyChangeListener demandEnabledAndValidListener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + + if (evt.getPropertyName().equals(DemandeUIModel.PROPERTY_VALID) + || evt.getPropertyName().equals(DemandeUIModel.PROPERTY_EDITABLE) + || evt.getPropertyName().equals(Email.PROPERTY_ARCHIVE_DATE)) { + + DemandesUI ui = getUI(); + ui.processDataBinding(DemandesUI.BINDING_ARCHIVE_BUTTON_ENABLED); + ui.processDataBinding(DemandesUI.BINDING_GROUP_BUTTON_ENABLED); + ui.processDataBinding(DemandesUI.BINDING_REPLY_BUTTON_ENABLED); + ui.processDataBinding(DemandesUI.BINDING_SAVE_BUTTON_ENABLED); + ui.processDataBinding(DemandesUI.BINDING_TRANSMIT_BUTTON_ENABLED); + + } + + if (evt.getPropertyName().equals(DemandeUIModel.PROPERTY_VALID) + || evt.getPropertyName().equals(DemandeUIModel.PROPERTY_EDITABLE) + || evt.getPropertyName().equals(Email.PROPERTY_WAITING_STATE)) { + + updateButtonEnability(); + } + } + }; + @Override public void beforeInit(DemandesUI ui) { super.beforeInit(ui); @@ -186,6 +211,7 @@ int tabCount = getTabPanel().getTabCount(); for (int i = 0 ; i < tabCount ; i++) { DemandeUIHandler tabHandler = (DemandeUIHandler) getTabHandler(i); + tabHandler.getModel().removePropertyChangeListener(demandEnabledAndValidListener); tabHandler.onCloseUI(); } } @@ -285,8 +311,6 @@ handler = getTabHandler(newIndex); if (handler != null) { handler.onShowTab(currentIndex, newIndex); - saveDemandeAction = getContext().getActionFactory().createLogicAction((AbstractApplicationUIHandler) handler, - SaveDemandeAction.class); } } if (change) { 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-12-12 15:05:59 UTC (rev 729) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java 2014-12-16 15:25:54 UTC (rev 730) @@ -55,6 +55,14 @@ */ public class DemandGroupUIHandler extends AbstractToolbarPopupHandler<DemandeUIModel, DemandGroupUI> { + protected final PropertyChangeListener groupedDemandListener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + AbstractTableModel tableModel = (AbstractTableModel) getUI().getDemandGroup().getModel(); + tableModel.fireTableDataChanged(); + } + }; + @Override public void beforeInit(DemandGroupUI ui) { super.beforeInit(ui); @@ -69,13 +77,7 @@ initTable(ui.getDemandGroup()); - getModel().addPropertyChangeListener(DemandeUIModel.PROPERTY_GROUPED_DEMANDES, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - AbstractTableModel tableModel = (AbstractTableModel) getUI().getDemandGroup().getModel(); - tableModel.fireTableDataChanged(); - } - }); + getModel().addPropertyChangeListener(DemandeUIModel.PROPERTY_GROUPED_DEMANDES, groupedDemandListener); } protected void initTable(JXTable table) { @@ -122,6 +124,7 @@ @Override public void onCloseUI() { + getModel().removePropertyChangeListener(DemandeUIModel.PROPERTY_GROUPED_DEMANDES, groupedDemandListener); } @Override 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-12-12 15:05:59 UTC (rev 729) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-12-16 15:25:54 UTC (rev 730) @@ -99,6 +99,22 @@ private static final Log log = LogFactory.getLog(AbstractFaxToMailUIHandler.class); + protected final PropertyChangeListener listModelListener = new PropertyChangeListener() { + + final Set<String> excludeProperties = getPropertiesToIgnore(); + + @Override + public void propertyChange(PropertyChangeEvent evt) { + Object newValue = evt.getNewValue(); + Object oldValue = evt.getOldValue(); + if (!excludeProperties.contains(evt.getPropertyName()) + //check that the new value and old value are not both null + && newValue != oldValue) { + ((AbstractFaxToMailBeanUIModel) evt.getSource()).setModify(true); + } + } + }; + @Override public void showInformationMessage(String message) { getContext().showInformationMessage(message); @@ -207,21 +223,7 @@ } protected void listModelIsModify(AbstractFaxToMailBeanUIModel model) { - model.addPropertyChangeListener(new PropertyChangeListener() { - - final Set<String> excludeProperties = getPropertiesToIgnore(); - - @Override - public void propertyChange(PropertyChangeEvent evt) { - Object newValue = evt.getNewValue(); - Object oldValue = evt.getOldValue(); - if (!excludeProperties.contains(evt.getPropertyName()) - //check that the new value and old value are not both null - && newValue != oldValue) { - ((AbstractFaxToMailBeanUIModel) evt.getSource()).setModify(true); - } - } - }); + model.addPropertyChangeListener(listModelListener); } protected Set<String> getPropertiesToIgnore() { Modified: trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml 2014-12-12 15:05:59 UTC (rev 729) +++ trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml 2014-12-16 15:25:54 UTC (rev 730) @@ -45,8 +45,9 @@ <Loggers> <Logger name="com.franciaflex.faxtomail" level="info"/> - <Logger name="com.franciaflex.faxtomail.persistence" level="debug"/> - <Logger name="com.franciaflex.faxtomail.services" level="debug"/> + <!--<Logger name="com.franciaflex.faxtomail.persistence" level="debug"/>--> + <!--<Logger name="com.franciaflex.faxtomail.persistence.entities.AbstractFaxToMailTopiaDao" level="trace"/>--> + <!--<Logger name="com.franciaflex.faxtomail.services" level="debug"/>--> <!--<Logger name="org.hibernate.SQL" level="debug"/>--> <!--<Logger name="org.hibernate.type" level="all"/>--> Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-12-12 15:05:59 UTC (rev 729) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-12-16 15:25:54 UTC (rev 730) @@ -292,7 +292,7 @@ String recipient = address.toString(); // some recipient are like "toto tutu<toto.tutu73@gmail.com>" // the regex is to extract email address from it - recipient = recipient.replaceFirst("^.*<(.*)>$", "$1"); + recipient = recipient.replaceAll("\\s", "").replaceFirst("^.*<(.*)>$", "$1"); recipient = recipient.toLowerCase(); return recipient; }