Author: kmorin Date: 2014-11-25 16:26:20 +0000 (Tue, 25 Nov 2014) New Revision: 697 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/697 Log: fixes #6158 Ajouter la colonne Gamme ?\195?\160 la liste des ?\195?\169l?\195?\169ments Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailField.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.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/DemandeTableModel.java trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties trunk/pom.xml Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java 2014-11-20 06:37:20 UTC (rev 696) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java 2014-11-25 16:26:20 UTC (rev 697) @@ -48,6 +48,7 @@ public static final String PROPERTY_RECEPTION_DATES = "receptionDates"; public static final String PROPERTY_RECIPIENTS = "recipients"; public static final String PROPERTY_DEMAND_STATUS = "demandStatus"; + public static final String PROPERTY_RANGES = "ranges"; public static final String PROPERTY_PRODUCT_QUANTITIES = "productsQuantities"; public static final String PROPERTY_SAV_QUANTITIES = "savQuantities"; public static final String PROPERTY_QUOTATION_QUANTITIES = "quotationQuantities"; @@ -82,6 +83,8 @@ protected Set<DemandStatus> demandStatus; + protected Set<Range> ranges; + protected Set<Long> productsQuantities; protected Set<Long> savQuantities; @@ -206,6 +209,15 @@ firePropertyChange(PROPERTY_DEMAND_STATUS, null, demandStatus); } + public Set<Range> getRanges() { + return ranges; + } + + public void setRanges(Set<Range> ranges) { + this.ranges = ranges; + firePropertyChange(PROPERTY_RANGES, null, ranges); + } + public Set<Long> getProductsQuantities() { return productsQuantities; } @@ -294,6 +306,7 @@ setLocalReferences(null); setReferences(null); setProjectReferences(null); + setRanges(null); setProductsQuantities(null); setReceptionDates(null); setRecipients(null); Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-11-20 06:37:20 UTC (rev 696) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-11-25 16:26:20 UTC (rev 697) @@ -749,6 +749,37 @@ query.append(")"); } + Set<Range> ranges = emailFilter.getRanges(); + if (CollectionUtils.isNotEmpty(ranges)) { + query.append(" AND ((EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + "))" + + " AND (select count(*) FROM " + RangeRow.class.getName() + " RR" + + " WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ") AND RR." + RangeRow.PROPERTY_RANGE + + " IN (:" + EmailFilter.PROPERTY_RANGES + ")"); + query.append(") > 0"); + + if (ranges.contains(null)) { + query.append(" OR NOT EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + "))"); + } + query.append("))"); + + args.put(EmailFilter.PROPERTY_RANGES, ranges); + } + + Set<Long> productQuantities = emailFilter.getProductsQuantities(); + if (CollectionUtils.isNotEmpty(productQuantities)) { + query.append(" AND ((EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + "))" + + " AND (select sum(RR." + RangeRow.PROPERTY_PRODUCT_QUANTITY + ") " + + "FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")"); + query.append(") IN (:" + EmailFilter.PROPERTY_PRODUCT_QUANTITIES + ")"); + + if (productQuantities.contains(null) || productQuantities.contains(0L)) { + query.append(" OR NOT EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + "))"); + } + query.append("))"); + + args.put(EmailFilter.PROPERTY_PRODUCT_QUANTITIES, productQuantities); + } + Set<Long> savQuantities = emailFilter.getSavQuantities(); if (CollectionUtils.isNotEmpty(savQuantities)) { query.append(" AND ((EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + "))" Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailField.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailField.java 2014-11-20 06:37:20 UTC (rev 696) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailField.java 2014-11-25 16:26:20 UTC (rev 697) @@ -85,6 +85,7 @@ RECIPIENT, DEMAND_STATUS, WAITING_STATE, + RANGE_ROW, PF_NB, SAV_NB, QUOTATION_NB, Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java 2014-11-20 06:37:20 UTC (rev 696) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java 2014-11-25 16:26:20 UTC (rev 697) @@ -143,6 +143,10 @@ emailFilter.setReferences(!filtered ? null : new HashSet<String>((Collection) items)); break; + case Email.PROPERTY_RANGE_ROW: + emailFilter.setRanges(!filtered ? null : new HashSet<Range>((Collection) items)); + break; + case DemandeUIModel.PROPERTY_PF_NB: emailFilter.setProductsQuantities(!filtered ? null : new HashSet<Long>((Collection) items)); break; @@ -202,6 +206,10 @@ "rangeRow." + RangeRow.PROPERTY_COMMAND_NUMBER }; break; + case Email.PROPERTY_RANGE_ROW: + properties = new String[] { "rangeRow." + RangeRow.PROPERTY_RANGE }; + break; + case DemandeUIModel.PROPERTY_PF_NB: properties = new String[] { "rangeRow." + RangeRow.PROPERTY_PRODUCT_QUANTITY }; sum = true; @@ -220,6 +228,7 @@ case Email.PROPERTY_ATTACHMENT: case Email.PROPERTY_REPLIES: case Email.PROPERTY_EMAIL_GROUP: + case DemandeUIModel.PROPERTY_GROUPED_DEMANDES: return null; default: 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-11-20 06:37:20 UTC (rev 696) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-11-25 16:26:20 UTC (rev 697) @@ -191,6 +191,10 @@ tableCellRenderer = newTableCellRender(Date.class); break; + case RANGE_ROW: + tableCellRenderer = new RangeTableCellRenderer(); + break; + case PF_NB: tableCellRenderer = new QuantityTableCellRenderer(new Function<RangeRow, Integer>() { @Override @@ -344,4 +348,28 @@ return this; } } + + public class RangeTableCellRenderer extends DefaultTableCellRenderer { + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasfocus, int row, int column) { + super.getTableCellRendererComponent(table, value, isSelected, hasfocus, row, column); + + DemandeTableModel tableModel = (DemandeTableModel) table.getModel(); + int rowInModel = table.convertRowIndexToModel(row); + DemandeUIModel demande = tableModel.getEntry(rowInModel); + + String text = null; + + List<String> ranges = new ArrayList<String>(); + List<RangeRow> rangeRows = demande.getRangeRow(); + if (CollectionUtils.isNotEmpty(rangeRows)) { + text = decorate(rangeRows.get(0).getRange()); + } + setText(text); + setToolTipText(text); + + return this; + } + } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-11-20 06:37:20 UTC (rev 696) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-11-25 16:26:20 UTC (rev 697) @@ -150,6 +150,12 @@ n("faxtomail.demandeList.table.header.reference"), n("faxtomail.demandeList.table.header.reference.tip"))); + put(MailField.RANGE_ROW, + ColumnIdentifier.<Email>newReadOnlyId( + Email.PROPERTY_RANGE_ROW, + n("faxtomail.demandeList.table.header.range"), + n("faxtomail.demandeList.table.header.range.tip"))); + put(MailField.PF_NB, ColumnIdentifier.<Email>newReadOnlyId( DemandeUIModel.PROPERTY_PF_NB, 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-11-20 06:37:20 UTC (rev 696) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-11-25 16:26:20 UTC (rev 697) @@ -195,6 +195,8 @@ faxtomail.demandeList.table.header.projectReference.tip=Référence chantier faxtomail.demandeList.table.header.quotationNb=Qté devis faxtomail.demandeList.table.header.quotationNb.tip=Quantité de devis +faxtomail.demandeList.table.header.range=Gamme +faxtomail.demandeList.table.header.range.tip=Première gamme de l'élément faxtomail.demandeList.table.header.receptionDate=Date de réception faxtomail.demandeList.table.header.receptionDate.tip=Date de réception faxtomail.demandeList.table.header.recipient=Destinataire Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-11-20 06:37:20 UTC (rev 696) +++ trunk/pom.xml 2014-11-25 16:26:20 UTC (rev 697) @@ -111,7 +111,7 @@ <h2Version>1.3.176</h2Version> <guavaVersion>18.0</guavaVersion> - <jaxxVersion>2.16</jaxxVersion> + <jaxxVersion>2.17</jaxxVersion> <!-- do not upgrade to 1.6.5-1 --> <swingXVersion>1.6.4</swingXVersion> <xworkVersion>2.3.16.3</xworkVersion>