Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 3e383a05 by tchemit at 2018-12-14T13:49:32Z fix some ui handler errors - - - - - 9 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/api/data/table/SaveTableDataUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/table/ContentTableUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/NonTargetSampleUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/NonTargetSampleUIModel.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/TargetSampleCaptureUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/TargetSampleRejeteUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/TargetSampleUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/TargetSampleUIModel.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/api/data/table/SaveTableDataUIAction.java ===================================== @@ -71,8 +71,10 @@ public class SaveTableDataUIAction<D extends DataDto, C extends DataDto, U exten ContentTableModel<D, C> tableModel = ui.getTableModel(); if (model.isModified() || model.isCanSaveRow()) { - // flush modified line to model - tableModel.updateRowFromEditBean(); + // flush modified line to model if table not empty + if (!tableModel.isEmpty()) { + tableModel.updateRowFromEditBean(); + } } List<C> objets = tableModel.getData(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIHandler.java ===================================== @@ -59,25 +59,27 @@ import fr.ird.observe.services.service.actions.synchro.referential.ng.Referentia import fr.ird.observe.services.service.actions.validate.ValidateService; import fr.ird.observe.services.service.data.NavigationService; import fr.ird.observe.services.service.data.TripManagementService; -import fr.ird.observe.services.service.data.longline.obs.ActivityLongLineObsEncounterService; -import fr.ird.observe.services.service.data.longline.obs.ActivityLongLineObsSensorUsedService; +import fr.ird.observe.services.service.data.longline.TripLonglineGearUseService; +import fr.ird.observe.services.service.data.longline.TripLonglineSampleLogbookService; +import fr.ird.observe.services.service.data.longline.TripLonglineService; +import fr.ird.observe.services.service.data.longline.landing.TripLonglineLandingService; import fr.ird.observe.services.service.data.longline.logbook.ActivityLonglineLogbookSampleService; import fr.ird.observe.services.service.data.longline.logbook.ActivityLonglineLogbookService; -import fr.ird.observe.services.service.data.longline.obs.ActivityLonglineObsService; -import fr.ird.observe.services.service.data.longline.obs.BranchlineObsService; import fr.ird.observe.services.service.data.longline.logbook.SetLonglineLogbookCatchService; import fr.ird.observe.services.service.data.longline.logbook.SetLonglineLogbookGlobalCompositionService; import fr.ird.observe.services.service.data.longline.logbook.SetLonglineLogbookService; +import fr.ird.observe.services.service.data.longline.obs.ActivityLongLineObsEncounterService; +import fr.ird.observe.services.service.data.longline.obs.ActivityLongLineObsSensorUsedService; +import fr.ird.observe.services.service.data.longline.obs.ActivityLonglineObsService; +import fr.ird.observe.services.service.data.longline.obs.BranchlineObsService; import fr.ird.observe.services.service.data.longline.obs.SetLonglineObsCatchService; import fr.ird.observe.services.service.data.longline.obs.SetLonglineObsDetailCompositionService; import fr.ird.observe.services.service.data.longline.obs.SetLonglineObsGlobalCompositionService; import fr.ird.observe.services.service.data.longline.obs.SetLonglineObsService; import fr.ird.observe.services.service.data.longline.obs.TdrObsService; -import fr.ird.observe.services.service.data.longline.TripLonglineGearUseService; -import fr.ird.observe.services.service.data.longline.landing.TripLonglineLandingService; -import fr.ird.observe.services.service.data.longline.TripLonglineSampleLogbookService; -import fr.ird.observe.services.service.data.longline.TripLonglineService; import fr.ird.observe.services.service.data.longline.pairing.ActivityLonglinePairingService; +import fr.ird.observe.services.service.data.seine.TripSeineGearUseService; +import fr.ird.observe.services.service.data.seine.TripSeineService; import fr.ird.observe.services.service.data.seine.obs.ActivitySeineService; import fr.ird.observe.services.service.data.seine.obs.FloatingObjectService; import fr.ird.observe.services.service.data.seine.obs.NonTargetCatchReleaseService; @@ -91,8 +93,6 @@ import fr.ird.observe.services.service.data.seine.obs.SetSeineService; import fr.ird.observe.services.service.data.seine.obs.TargetCatchService; import fr.ird.observe.services.service.data.seine.obs.TargetSampleService; import fr.ird.observe.services.service.data.seine.obs.TransmittingBuoyOperationService; -import fr.ird.observe.services.service.data.seine.TripSeineGearUseService; -import fr.ird.observe.services.service.data.seine.TripSeineService; import fr.ird.observe.services.service.referential.ReferentialService; import fr.ird.observe.services.service.sql.SqlScriptProducerService; import fr.ird.observe.spi.DtoModelHelper; @@ -387,6 +387,9 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe } final void destroyUI() { + if (ui==null) { + return; + } UIHelper.removeAllDataBindings(getUi()); getModel().destroy(); UIHelper.destroy(getUi()); @@ -608,6 +611,11 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe // } final boolean closeUI() { + if (ui == null) { + // When a error was found while loading the previous screen + // If we do nothing, then we can't ever qui the data source + return true; + } boolean b = checkEdit(ui); log.debug(prefix + "Can close " + ui.getClass() + " : " + b); if (b) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/api/data/table/ContentTableUIModel.java ===================================== @@ -118,13 +118,26 @@ public abstract class ContentTableUIModel<D extends DataDto, C extends DataDto> @Override protected ContentMode computeMode(boolean canWrite) { - if (!canWrite || !showData) { + if (!canWrite) { return ContentMode.READ; } + ContentMode result; if (getSelectedNode().getType().equals(getEditNode().getType())) { - return getContentModeFromSelf(); + result = getContentModeFromSelf(); + return result; } - return getContentModeFromParent(); + result = getContentModeFromParent(); + boolean showData = computeShowData(result); + setShowData(showData); + if (!showData) { + result = ContentMode.READ; + } + return result; + } + + protected boolean computeShowData(ContentMode contentMode) { + // by default can show data + return true; } @Override @@ -209,9 +222,8 @@ public abstract class ContentTableUIModel<D extends DataDto, C extends DataDto> } public void setShowData(boolean showData) { - boolean oldValue = this.showData; this.showData = showData; - firePropertyChange(PROPERTY_SHOW_DATA, oldValue, showData); + firePropertyChange(PROPERTY_SHOW_DATA, showData); } @Override ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/NonTargetSampleUIHandler.java ===================================== @@ -68,6 +68,23 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS return ui.getModel(); } + @Override + public void beforeInit(NonTargetSampleUI ui) { + super.beforeInit(ui); + } + + @Override + public void afterInit(NonTargetSampleUI ui) { + super.afterInit(ui); + } + + @Override + protected void onOpenBeforeOpenModel() { + super.onOpenBeforeOpenModel(); + // We can't add filter since it uses the model.form, so add them now + onAfterInitAddReferentialFilters(getModel().getReferenceCache()); + } + @Override protected ObserveLayoutFocusTraversalPolicy<NonTargetSampleUI> createFocusTraversalPolicy() { return new ObserveLayoutFocusTraversalPolicy<NonTargetSampleUI>() { @@ -93,6 +110,9 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS @Override protected void onAfterInitAddReferentialFilters(ContentUIReferenceCache referenceCache) { + if (getModel().getForm() == null) { + return; + } referenceCache.addReferentialFilter(NonTargetLengthDto.PROPERTY_SPECIES, incomingReferences -> { ReferentialDtoReferenceSet<SpeciesReference> sampleSpecies = getNonTargetSampleService().getSampleSpecies(getModel().getSelectedId()); return new LinkedList<>(sampleSpecies.toSet()); @@ -166,8 +186,10 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS protected void loadEditBean(String beanId) { Form<NonTargetSampleDto> form = getNonTargetSampleService().loadForm(beanId); // FIXME + NonTargetSampleUIModel model = getModel(); - model.setForm(form); +// model.getReferenceCache().loadReferentialReferenceSetsInModel(form); +// model.setForm(form); model.openForm(form); // // on a besoin du formulaire dans cette méthode // loadReferentialReferenceSetsInModel(form); @@ -242,7 +264,7 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS @Override public void doPersist(NonTargetSampleDto bean) { - SaveResultDto saveResult = getNonTargetSampleService().save(getModel().getSelectedParentId(), bean); + SaveResultDto saveResult = getNonTargetSampleService().save(getModel().getSelectedId(), bean); saveResult.toDto(bean); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/NonTargetSampleUIModel.java ===================================== @@ -22,6 +22,7 @@ package fr.ird.observe.client.ui.content.data.ps.observation; * #L% */ +import fr.ird.observe.client.ui.content.api.ContentMode; import fr.ird.observe.client.ui.content.api.data.table.ContentTableMeta; import fr.ird.observe.client.ui.content.api.data.table.ContentTableModel; import fr.ird.observe.client.ui.content.api.data.table.ContentTableUI; @@ -122,6 +123,12 @@ public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleD firePropertyChange(PROPERTY_DEFAULT_SIZE_MEASURE_TYPE, oldValue, defaultSizeMeasureType); } + @Override + protected boolean computeShowData(ContentMode contentMode) { + String selectedId = getSelectedId(); + return ui.getDataSource().getNonTargetSampleService().canUseNonTargetSample(selectedId); + } + //FIXME Voir pourquoi c'est le seul modèle qui surcharge ça ??? // @Override // public <D extends ReferentialDto, R extends ReferentialDtoReference<D, R>> Optional<Set<R>> tryToGetReferentialReferenceSet(String propertyName) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/TargetSampleCaptureUIHandler.java ===================================== @@ -39,16 +39,16 @@ public class TargetSampleCaptureUIHandler extends TargetSampleUIHandler implemen TargetSampleCaptureUIHandler() { super(false); } -// -// @Override -// public void beforeInit(TargetSampleCaptureUI ui) { -// super.beforeInit(ui); -// } -// -// @Override -// public void afterInit(TargetSampleCaptureUI ui) { -// super.afterInit(ui); -// } + + @Override + public void beforeInit(TargetSampleCaptureUI ui) { + super.beforeInit(ui); + } + + @Override + public void afterInit(TargetSampleCaptureUI ui) { + super.afterInit(ui); + } @Override ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/TargetSampleRejeteUIHandler.java ===================================== @@ -40,15 +40,15 @@ public class TargetSampleRejeteUIHandler extends TargetSampleUIHandler implement super(true); } -// @Override -// public void beforeInit(TargetSampleRejeteUI targetSampleRejeteUI) { -// super.beforeInit(targetSampleRejeteUI); -// } -// -// @Override -// public void afterInit(TargetSampleRejeteUI targetSampleRejeteUI) { -// super.afterInit(targetSampleRejeteUI); -// } + @Override + public void beforeInit(TargetSampleRejeteUI targetSampleRejeteUI) { + super.beforeInit(targetSampleRejeteUI); + } + + @Override + public void afterInit(TargetSampleRejeteUI targetSampleRejeteUI) { + super.afterInit(targetSampleRejeteUI); + } @Override protected ObserveLayoutFocusTraversalPolicy createFocusTraversalPolicy() { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/TargetSampleUIHandler.java ===================================== @@ -39,6 +39,7 @@ import fr.ird.observe.dto.referential.common.SizeMeasureTypeReference; import fr.ird.observe.dto.referential.common.SpeciesDto; import fr.ird.observe.dto.referential.common.SpeciesReference; import fr.ird.observe.dto.result.SaveResultDto; +import fr.ird.observe.spi.DtoModelHelper; import org.nuiton.validator.NuitonValidatorScope; import javax.swing.JComponent; @@ -130,6 +131,10 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar } } + boolean isDiscarded() { + return discarded; + } + @Override protected ObserveLayoutFocusTraversalPolicy<U> createFocusTraversalPolicy() { return null; @@ -183,6 +188,8 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar List<SizeMeasureTypeReference> sizeMeasureTypes = getReferentialReferences(SizeMeasureTypeReference.class); List<SizeMeasureTypeReference> data = SizeMeasureTypeHelper.filterForSeine(sizeMeasureTypes); log.info(prefix + "Using " + data.size() + " size measure type(s)."); + // We need to fill the referential cache (normally this is done in onOpenModel method) + getModel().getReferenceCache().loadReferentialReferenceSetsInModel(DtoModelHelper.getOptionalFormDefinition(TargetSampleDto.class).get(), true); loadSizeMeasureTypes(); checkSizeMeasureTypes(data); ((TargetSampleUI) ui).getSizeMeasureType().setData(data); @@ -224,7 +231,7 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar @Override public void doPersist(TargetSampleDto bean) { - SaveResultDto saveResult = getTargetSampleService().save(getModel().getSelectedParentId(), bean); + SaveResultDto saveResult = getTargetSampleService().save(getModel().getSelectedId(), bean); saveResult.toDto(bean); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/ps/observation/TargetSampleUIModel.java ===================================== @@ -22,6 +22,7 @@ package fr.ird.observe.client.ui.content.data.ps.observation; * #L% */ +import fr.ird.observe.client.ui.content.api.ContentMode; import fr.ird.observe.client.ui.content.api.data.table.ContentTableMeta; import fr.ird.observe.client.ui.content.api.data.table.ContentTableModel; import fr.ird.observe.client.ui.content.api.data.table.ContentTableUI; @@ -104,6 +105,12 @@ public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, Ta }; } + @Override + protected boolean computeShowData(ContentMode contentMode) { + String selectedId = getSelectedId(); + return ui.getDataSource().getTargetSampleService().canUseTargetSample(selectedId,((TargetSampleUI)ui).getHandler().isDiscarded()); + } + public SizeMeasureTypeReference getDefaultSizeMeasureType() { return defaultSizeMeasureType; } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/3e383a05ca58b562062ab6fc77c5... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/3e383a05ca58b562062ab6fc77c5... You're receiving this email because of your account on gitlab.com.