Author: kmorin Date: 2014-05-30 22:43:45 +0200 (Fri, 30 May 2014) New Revision: 116 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/116 Log: add validator on the range table Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.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/DemandeUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel-error-validation.xml trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-05-30 16:32:40 UTC (rev 115) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-05-30 20:43:45 UTC (rev 116) @@ -128,14 +128,15 @@ HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); // if client code is null, do not manage client at all - if (clientCode != null) { - Client client = clientDao.forCodeEquals(clientCode).findAnyOrNull(); + Client client = null; + if (StringUtils.isNotBlank(clientCode)) { + client = clientDao.forCodeEquals(clientCode).findAnyOrNull(); if (client == null) { String message = t("faxtomail.service.email.save.clientCode.error", clientCode); throw new InvalidClientException(message); } - email.setClient(client); } + email.setClient(client); if (attachments != null) { Collection<Attachment> currentAttachments = CollectionUtils.emptyIfNull(email.getAttachment()); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-05-30 16:32:40 UTC (rev 115) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-05-30 20:43:45 UTC (rev 116) @@ -26,7 +26,6 @@ import java.util.ArrayList; import java.util.Collection; -import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; @@ -44,7 +43,6 @@ import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel; -import com.franciaflex.faxtomail.ui.swing.content.demande.RangeTableModel; import com.google.common.collect.Maps; import static org.nuiton.i18n.I18n.t; @@ -73,8 +71,7 @@ persistedEmail = new EmailImpl(); } - RangeTableModel rtm = (RangeTableModel) getUI().getRangeTable().getModel(); - List<RangeRowModel> rows = rtm.getRows(); + Collection<RangeRowModel> rows = model.getValidRangeRowModels(); Collection<RangeRow> rangeRows = model.getRangeRow(); if (rangeRows == null) { rangeRows = new ArrayList<>(); @@ -82,14 +79,13 @@ Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(rangeRows, TopiaEntities.getTopiaIdFunction()); + model.setRangeRow(new ArrayList<RangeRow>()); for (RangeRowModel rangeRowModel : rows) { - if (rangeRowModel.isValid()) { - RangeRow rangeRow = rangeRowsById.get(rangeRowModel.getTopiaId()); - if (rangeRow == null) { - model.addRangeRow(rangeRowModel.toEntity()); - } else { - rangeRowModel.toEntity(rangeRow); - } + RangeRow rangeRow = rangeRowsById.get(rangeRowModel.getTopiaId()); + if (rangeRow == null) { + model.addRangeRow(rangeRowModel.toEntity()); + } else { + model.addRangeRow(rangeRowModel.toEntity(rangeRow)); } } 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-05-30 16:32:40 UTC (rev 115) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-05-30 20:43:45 UTC (rev 116) @@ -279,6 +279,7 @@ #rangePanel { visible: { model.isRangePanelVisible() }; + _validatorLabel: { t("faxtomail.demande.rangeRow.label") }; } #ediCodeNumberLabel { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-05-30 16:32:40 UTC (rev 115) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-05-30 20:43:45 UTC (rev 116) @@ -71,6 +71,7 @@ <field name='object' component='objectField'/> <field name='demandType' component='docTypeComboBox'/> <field name='projectReference' component='projectReferenceField'/> + <field name='validRangeRowModels' component='rangePanel'/> </BeanValidator> <JToolBar id='topToolBar'> 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-05-30 16:32:40 UTC (rev 115) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-05-30 20:43:45 UTC (rev 116) @@ -100,7 +100,7 @@ initUI(ui); - DemandeUIModel model = getModel(); + final DemandeUIModel model = getModel(); Set<String> propertiesToIgnore = getPropertiesToIgnore(); monitor = new BeanMonitor(true, propertiesToIgnore.toArray(new String[propertiesToIgnore.size()])); monitor.setBean(model); @@ -182,8 +182,8 @@ for (RangeRow rangeRow : rangeRows) { RangeRowModel rangeRowModel = new RangeRowModel(); rangeRowModel.fromEntity(rangeRow); - rangeRowModel.setValid(isRangeRowValid(rangeRowModel)); rangeRowModels.add(rangeRowModel); + model.getValidRangeRowModels().add(rangeRowModel); } } rangeTableModel.setRows(rangeRowModels); @@ -199,11 +199,19 @@ protected PropertyChangeListener listener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { + DemandeUIModel model = getModel(); + String propertyName = evt.getPropertyName(); - RangeRowModel row = (RangeRowModel) evt.getSource(); - row.setValid(isRangeRowValid(row)); + 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); + } + } - String propertyName = evt.getPropertyName(); if (RangeRowModel.PROPERTY_VALID.equals(propertyName) || RangeRow.PROPERTY_QUOTATION_QUANTITY.equals(propertyName) || RangeRow.PROPERTY_PRODUCT_QUANTITY.equals(propertyName) @@ -211,7 +219,6 @@ List<RangeRowModel> rangeRows = rangeTableModel.getRows(); Map<String, Integer> quantities = FaxToMailUIUtil.computeQuantities(rangeRows); - DemandeUIModel model = getModel(); model.setQuotationNb(quantities.get(DemandeUIModel.PROPERTY_QUOTATION_NB)); model.setPfNb(quantities.get(DemandeUIModel.PROPERTY_PF_NB)); model.setSavNb(quantities.get(DemandeUIModel.PROPERTY_SAV_NB)); @@ -421,10 +428,6 @@ return monitor; } - protected boolean isRangeRowValid(RangeRowModel rangeRow) { - return rangeRow.getRange() != null; - } - @Override public boolean onHideTab(int currentIndex, int newIndex) { closeButtonPopups(); 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-05-30 16:32:40 UTC (rev 115) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-05-30 20:43:45 UTC (rev 116) @@ -92,6 +92,7 @@ public static final String PROPERTY_EDITABLE = "editable"; public static final String PROPERTY_LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER = "lastAttachmentOpeningInThisFolderUser"; public static final String PROPERTY_GROUPED_DEMANDES = "groupedDemandes"; + public static final String PROPERTY_VALID_RANGE_ROW_MODELS = "validRangeRowModels"; protected final Email editObject = new EmailImpl(); @@ -99,6 +100,8 @@ protected final Collection<DemandeUIModel> groupedDemandes = new ArrayList<DemandeUIModel>(); + protected final Collection<RangeRowModel> validRangeRowModels = new ArrayList<RangeRowModel>(); + protected History firstOpeningHistory; protected History lastModificationHistory; @@ -388,7 +391,7 @@ public boolean isRangePanelVisible() { DemandType demandType = getDemandType(); - return demandType != null && Boolean.TRUE.equals(demandType.getRangeNeeded()); + return demandType != null && demandType.isRangeNeeded(); } public DemandStatus getDemandStatus() { @@ -814,6 +817,30 @@ return editObject.sizeReplies(); } + + public Collection<RangeRowModel> getValidRangeRowModels() { + return validRangeRowModels; + } + + public void setValidRangeRowModels(Collection<RangeRowModel> validRangeRowModels) { + Object oldValue = new ArrayList<RangeRowModel>(validRangeRowModels); + this.validRangeRowModels.clear(); + this.validRangeRowModels.addAll(validRangeRowModels); + firePropertyChanged(PROPERTY_VALID_RANGE_ROW_MODELS, oldValue, validRangeRowModels); + } + + public void addValidRangeRow(RangeRowModel row) { + Object oldValue = new ArrayList<RangeRowModel>(validRangeRowModels); + validRangeRowModels.add(row); + firePropertyChanged(PROPERTY_VALID_RANGE_ROW_MODELS, oldValue, validRangeRowModels); + } + + public void removeValidRangeRow(RangeRowModel row) { + Object oldValue = new ArrayList<RangeRowModel>(validRangeRowModels); + validRangeRowModels.remove(row); + firePropertyChanged(PROPERTY_VALID_RANGE_ROW_MODELS, oldValue, validRangeRowModels); + } + @Override protected Email newEntity() { return new EmailImpl(); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java 2014-05-30 16:32:40 UTC (rev 115) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java 2014-05-30 20:43:45 UTC (rev 116) @@ -107,6 +107,7 @@ Object oldValue = getRange(); editObject.setRange(range); firePropertyChange(RangeRow.PROPERTY_RANGE, oldValue, range); + setValid(range != null); } public Range getRange() { Modified: trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel-error-validation.xml =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel-error-validation.xml 2014-05-30 16:32:40 UTC (rev 115) +++ trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel-error-validation.xml 2014-05-30 20:43:45 UTC (rev 116) @@ -30,6 +30,12 @@ <validators> + <field name="object"> + <field-validator type="requiredstring" short-circuit="true"> + <message>faxtomail.validator.error.email.object.required</message> + </field-validator> + </field> + <field name="clientCode"> <field-validator type="requiredstring" short-circuit="true"> <message>faxtomail.validator.error.email.clientCode.required</message> @@ -48,4 +54,11 @@ </field-validator> </field> + <field name="validRangeRowModels"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"><![CDATA[ !isRangePanelVisible() || validRangeRowModels != null && !validRangeRowModels.isEmpty() ]]></param> + <message>faxtomail.validator.error.email.rangeRow.required</message> + </field-validator> + </field> + </validators> 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-05-30 16:32:40 UTC (rev 115) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-05-30 20:43:45 UTC (rev 116) @@ -276,7 +276,9 @@ faxtomail.systemUser=Système faxtomail.validator.error.email.clientCode.required=Code client requis faxtomail.validator.error.email.demandType.required=Type de demande requis +faxtomail.validator.error.email.object.required=Objet requis faxtomail.validator.error.email.projectReference.required=Référence chantier requise +faxtomail.validator.error.email.rangeRow.required=Tableau des gammes requis faxtomail.validator.error.reply.from.required= faxtomail.validator.error.reply.to.required= jaxx.application.error.cannot.print=