Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 914fb93e by Tony Chemit at 2021-01-18T16:59:06+01:00 Make possible to override properties in referential reference cache - - - - - 38b0dc72 by Tony Chemit at 2021-01-18T16:59:55+01:00 Valider tous les écrans du modèle LL - See #1665 Composition détaillée fonctionne \o/ - - - - - 5 changed files: - client/core/src/main/java/fr/ird/observe/client/datasource/api/cache/ReferencesCache.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetDetailCompositionUI.jaxx - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetDetailCompositionUI.jcss - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetDetailCompositionUIHandler.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/composition/SetDetailCompositionUIValidationHelper.java Changes: ===================================== client/core/src/main/java/fr/ird/observe/client/datasource/api/cache/ReferencesCache.java ===================================== @@ -128,9 +128,13 @@ public class ReferencesCache { public void loadReferentialReferenceSetsInModel(FormDefinition<?> formDefinition, boolean clear) { Class<? extends IdDto> dtoType = formDefinition.getType(); ImmutableMap.Builder<String, ReferentialDtoReferenceSet<?>> modelReferentialReferenceSets = ImmutableMap.builder(); + Set<String> existingProperties; if (!clear) { // keep existing sets modelReferentialReferenceSets.putAll(referentialReferenceSetsByPropertyName); + existingProperties = referentialReferenceSetsByPropertyName.keySet(); + } else { + existingProperties = Collections.emptySet(); } log.debug("Update referential reference sets for: " + dtoType); // mettre à jour le cache de référentiel @@ -138,6 +142,10 @@ public class ReferencesCache { // calculer les listes de référentiels à utiliser dans le modèle for (Map.Entry<String, ReferentialDtoReferenceDefinition<?, ?>> entry : formDefinition.getProperties().entrySet()) { String propertyName = entry.getKey(); + if (existingProperties.contains(propertyName)) { + // already in cache + continue; + } ReferentialDtoReferenceDefinition definition = entry.getValue(); ReferentialDtoReferenceSet<?> referentialReferenceSet = referentialReferenceSetsByType.get(definition.getType()); ReferentialDtoReferenceSet<?> filteredReferentialReferenceSet = filterReferentialReferenceSet(propertyName, definition, referentialReferenceSet); ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetDetailCompositionUI.jaxx ===================================== @@ -63,9 +63,9 @@ <BasketTableModel id='basketsTableModel' initializer="getStates().getBasketsTableModel()"/> <BranchlineTableModel id='branchlinesTableModel' initializer="getStates().getBranchlinesTableModel()"/> - <BeanValidator id='validator' autoField='true' - beanClass='fr.ird.observe.dto.data.ll.observation.SetDetailCompositionDto' - errorTableModel='{getErrorTableModel()}' context='update-detailComposition'> + <BeanValidator id='validator' beanClass='fr.ird.observe.dto.data.ll.observation.SetDetailCompositionDto' + errorTableModel='{getErrorTableModel()}' context='update'> + <field name='comment' component='contentBody'/> </BeanValidator> <BeanValidator id='generateValidator' @@ -88,9 +88,13 @@ <BeanValidator id='branchlineValidator' beanClass='fr.ird.observe.dto.data.ll.observation.BranchlineDto' errorTableModel='{getErrorTableModel()}' context='update'> - <field name='settingIdentifier' component='branchlinesPane'/> - <field name='tracelineLength' component='branchlinesPane'/> - <field name='branchlineLength' component='branchlinesPane'/> + <field name='settingIdentifier' component='branchlinesTable'/> + <field name='tracelineLength' component='branchlinesTable'/> + <field name='branchlineLength' component='branchlinesTable'/> + </BeanValidator> + + <BeanValidator id='branchlineDetailValidator' autoField="true" beanClass='fr.ird.observe.dto.data.ll.observation.BranchlineDto' + errorTableModel='{getErrorTableModel()}' context='update'> </BeanValidator> <JPopupMenu id='sectionTemplatesPopup'> @@ -326,7 +330,7 @@ </cell> </row> <row> - <cell> + <cell weighty="1" fill="both"> <BigTextEditor id="comment"/> </cell> </row> ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetDetailCompositionUI.jcss ===================================== @@ -25,7 +25,7 @@ valid:{states.isCompositionTabValid() && states.isBranchlineDetailTabValid()}; generateTabValid: {!states.isCanGenerate() || sectionTemplatesTableModel.isValid()}; compositionTabValid: {sectionsTableModel.isValid() && basketsTableModel.isValid() && branchlinesTableModel.isValid()}; - branchlineDetailTabValid: {branchlineValidator.isValid()}; + branchlineDetailTabValid: {branchlineDetailValidator.isValid()}; } #mainTabbedPane { @@ -117,7 +117,7 @@ /* ***************************************************************************** */ #branchlineTab { - enabled: {compositionTab.isEnabled() && states.isCompositionTabValid() && !branchlinesTableModel.isSelectionEmpty()}; + enabled: {compositionTab.isEnabled() && states.isCompositionTabValid() && branchlinesTableModel.getSelectedRowIndex() != -1}; } #noBranchlineSelected { @@ -146,9 +146,9 @@ } #resetBranchline { - enabled:{branchlineValidator.isChanged()}; + enabled:{branchlineDetailValidator.isChanged()}; } #saveBranchline { - enabled:{branchlineValidator.isChanged() && branchlineValidator.isValid()}; + enabled:{branchlineDetailValidator.isChanged() && branchlineDetailValidator.isValid()}; } ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetDetailCompositionUIHandler.java ===================================== @@ -105,11 +105,12 @@ public class SetDetailCompositionUIHandler extends GeneratedSetDetailComposition ResetAction.installAction(ui, ui.getReset(), new DefaultResetAdapter<>() { @Override public void onUpdate(SetDetailCompositionUI ui) { - BranchlineDto branchline = ui.getBranchlinesTableModel().getSelectedRow(); +// BranchlineDto branchline = ui.getBranchlinesTableModel().getSelectedRow(); + onBranchlineChanged(null); + ui.getSectionsTableModel().clear(); + ui.getBasketsTableModel().clear(); + ui.getBranchlinesTableModel().clear(); super.onUpdate(ui); - if (branchline != null) { - onBranchlineChanged(branchline); - } } }); ResetAction<SetDetailCompositionUI> action = ResetAction.prepareAction(new DefaultResetAdapter<>() { @@ -145,7 +146,9 @@ public class SetDetailCompositionUIHandler extends GeneratedSetDetailComposition model.getStates().getSectionTemplatesTableModel().setData(new ArrayList<>()); BranchlineDto selectedRow = model.getStates().getBranchlinesTableModel().getSelectedRow(); - onBranchlineChanged(selectedRow); + if (ui.getMainTabbedPane().getSelectedIndex() == 2) { + onBranchlineChanged(selectedRow); + } } @Override @@ -171,6 +174,9 @@ public class SetDetailCompositionUIHandler extends GeneratedSetDetailComposition public void onInstallValidators(IdDto editBean) { super.onInstallValidators(editBean); ui.getGenerateValidator().setBean(getModel().getStates()); + if (ui.getMainTabbedPane().getSelectedIndex() == 2 && getModel().getStates().getBranchlinesTableModel().getSelectedRow() != null) { + ui.getBranchlineDetailValidator().setBean(ui.getBranchlineBean()); + } } @Override @@ -280,7 +286,7 @@ public class SetDetailCompositionUIHandler extends GeneratedSetDetailComposition } public void onBranchlineChanged(BranchlineDto newValue) { - boolean changed = ui.getValidator().isChanged(); + boolean changed = ui.getValidator().isChanged() || ui.getModel().getStates().isModified(); String oldId = null; BranchlineDto branchlineBean = ui.getModel().getStates().getBranchlineBean(); @@ -296,8 +302,7 @@ public class SetDetailCompositionUIHandler extends GeneratedSetDetailComposition return; } - SwingValidator<BranchlineDto> branchlineValidator = ui.getBranchlineValidator(); - SetDetailCompositionUIModel model = getModel(); + SwingValidator<BranchlineDto> branchlineValidator = ui.getBranchlineDetailValidator(); if (newValue == null) { log.info(String.format("%s Remove branchline", prefix)); branchlineValidator.setBean(null); @@ -314,9 +319,9 @@ public class SetDetailCompositionUIHandler extends GeneratedSetDetailComposition void updateBranchlineAccessibility(boolean withBranchline) { if (withBranchline) { - ui.getMainTabbedPane().setComponentAt(5, ui.getBranchlinePanel()); + ui.getMainTabbedPane().setComponentAt(2, ui.getBranchlinePanel()); } else { - ui.getMainTabbedPane().setComponentAt(5, ui.getNoBranchlineForm()); + ui.getMainTabbedPane().setComponentAt(2, ui.getNoBranchlineForm()); } } @@ -324,7 +329,7 @@ public class SetDetailCompositionUIHandler extends GeneratedSetDetailComposition boolean canContinue; SetDetailCompositionUIModel model = getModel(); SetDetailCompositionUIModelStates states = model.getStates(); - if (states.isEditing() && ui.getBranchlineValidator().isChanged()) { + if (states.isEditing() && ui.getBranchlineDetailValidator().isChanged()) { canContinue = false; if (states.isBranchlineDetailTabValid()) { // le formulaire est valide, on demande a l'utilisateur s'il @@ -384,8 +389,9 @@ public class SetDetailCompositionUIHandler extends GeneratedSetDetailComposition public void doSaveBranchline() { BranchlineDto beanToSave = ui.getModel().getStates().getBranchlineBean(); beanToSave.copy(ui.getModel().getStates().getBranchlinesTableModel().getSelectedRow()); - ui.getBranchlineValidator().setChanged(false); - ui.getBranchlineValidator().setValid(true); + ui.getBranchlineDetailValidator().setChanged(false); + ui.getBranchlineDetailValidator().setValid(true); + ui.getValidator().setChanged(true); } void onTimerChanged(Boolean newValue) { ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/composition/SetDetailCompositionUIValidationHelper.java ===================================== @@ -35,6 +35,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.validator.swing.SwingValidator; import org.nuiton.jaxx.validator.swing.SwingValidatorMessage; +import org.nuiton.validator.NuitonValidatorScope; import org.nuiton.validator.bean.simple.SimpleBeanValidator; import javax.swing.JComponent; @@ -79,7 +80,8 @@ public class SetDetailCompositionUIValidationHelper { List<SwingValidatorMessage> messages = validatorService.validateSections(notEmptyData); removeOldMessages(); errorTableModel.addMessages(messages); - model.getStates().setCompositionTabValid(messages.isEmpty()); + long errorMessagesCount = messages.stream().filter(m -> m.getScope() == NuitonValidatorScope.ERROR).count(); + model.getStates().setCompositionTabValid(errorMessagesCount == 0); } } @@ -90,7 +92,8 @@ public class SetDetailCompositionUIValidationHelper { List<SwingValidatorMessage> messages = validatorService.validateSections(notEmptyData); removeOldMessages(); errorTableModel.addMessages(messages); - model.getStates().setCompositionTabValid(messages.isEmpty()); + long errorMessagesCount = messages.stream().filter(m -> m.getScope() == NuitonValidatorScope.ERROR).count(); + model.getStates().setCompositionTabValid(errorMessagesCount == 0); } } @@ -101,7 +104,8 @@ public class SetDetailCompositionUIValidationHelper { List<SwingValidatorMessage> messages = validatorService.validateSections(notEmptyData); removeOldMessages(); errorTableModel.addMessages(messages); - model.getStates().setCompositionTabValid(messages.isEmpty()); + long errorMessagesCount = messages.stream().filter(m -> m.getScope() == NuitonValidatorScope.ERROR).count(); + model.getStates().setCompositionTabValid(errorMessagesCount == 0); } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/fd7adab93f7415422d866774d... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/fd7adab93f7415422d866774d... You're receiving this email because of your account on gitlab.com.