Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
3e383a05
by tchemit at 2018-12-14T13:49:32Z
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:
| ... | ... | @@ -71,8 +71,10 @@ public class SaveTableDataUIAction<D extends DataDto, C extends DataDto, U exten |
| 71 | 71 |
ContentTableModel<D, C> tableModel = ui.getTableModel();
|
| 72 | 72 |
if (model.isModified() || model.isCanSaveRow()) {
|
| 73 | 73 |
|
| 74 |
- // flush modified line to model
|
|
| 75 |
- tableModel.updateRowFromEditBean();
|
|
| 74 |
+ // flush modified line to model if table not empty
|
|
| 75 |
+ if (!tableModel.isEmpty()) {
|
|
| 76 |
+ tableModel.updateRowFromEditBean();
|
|
| 77 |
+ }
|
|
| 76 | 78 |
}
|
| 77 | 79 |
|
| 78 | 80 |
List<C> objets = tableModel.getData();
|
| ... | ... | @@ -59,25 +59,27 @@ import fr.ird.observe.services.service.actions.synchro.referential.ng.Referentia |
| 59 | 59 |
import fr.ird.observe.services.service.actions.validate.ValidateService;
|
| 60 | 60 |
import fr.ird.observe.services.service.data.NavigationService;
|
| 61 | 61 |
import fr.ird.observe.services.service.data.TripManagementService;
|
| 62 |
-import fr.ird.observe.services.service.data.longline.obs.ActivityLongLineObsEncounterService;
|
|
| 63 |
-import fr.ird.observe.services.service.data.longline.obs.ActivityLongLineObsSensorUsedService;
|
|
| 62 |
+import fr.ird.observe.services.service.data.longline.TripLonglineGearUseService;
|
|
| 63 |
+import fr.ird.observe.services.service.data.longline.TripLonglineSampleLogbookService;
|
|
| 64 |
+import fr.ird.observe.services.service.data.longline.TripLonglineService;
|
|
| 65 |
+import fr.ird.observe.services.service.data.longline.landing.TripLonglineLandingService;
|
|
| 64 | 66 |
import fr.ird.observe.services.service.data.longline.logbook.ActivityLonglineLogbookSampleService;
|
| 65 | 67 |
import fr.ird.observe.services.service.data.longline.logbook.ActivityLonglineLogbookService;
|
| 66 |
-import fr.ird.observe.services.service.data.longline.obs.ActivityLonglineObsService;
|
|
| 67 |
-import fr.ird.observe.services.service.data.longline.obs.BranchlineObsService;
|
|
| 68 | 68 |
import fr.ird.observe.services.service.data.longline.logbook.SetLonglineLogbookCatchService;
|
| 69 | 69 |
import fr.ird.observe.services.service.data.longline.logbook.SetLonglineLogbookGlobalCompositionService;
|
| 70 | 70 |
import fr.ird.observe.services.service.data.longline.logbook.SetLonglineLogbookService;
|
| 71 |
+import fr.ird.observe.services.service.data.longline.obs.ActivityLongLineObsEncounterService;
|
|
| 72 |
+import fr.ird.observe.services.service.data.longline.obs.ActivityLongLineObsSensorUsedService;
|
|
| 73 |
+import fr.ird.observe.services.service.data.longline.obs.ActivityLonglineObsService;
|
|
| 74 |
+import fr.ird.observe.services.service.data.longline.obs.BranchlineObsService;
|
|
| 71 | 75 |
import fr.ird.observe.services.service.data.longline.obs.SetLonglineObsCatchService;
|
| 72 | 76 |
import fr.ird.observe.services.service.data.longline.obs.SetLonglineObsDetailCompositionService;
|
| 73 | 77 |
import fr.ird.observe.services.service.data.longline.obs.SetLonglineObsGlobalCompositionService;
|
| 74 | 78 |
import fr.ird.observe.services.service.data.longline.obs.SetLonglineObsService;
|
| 75 | 79 |
import fr.ird.observe.services.service.data.longline.obs.TdrObsService;
|
| 76 |
-import fr.ird.observe.services.service.data.longline.TripLonglineGearUseService;
|
|
| 77 |
-import fr.ird.observe.services.service.data.longline.landing.TripLonglineLandingService;
|
|
| 78 |
-import fr.ird.observe.services.service.data.longline.TripLonglineSampleLogbookService;
|
|
| 79 |
-import fr.ird.observe.services.service.data.longline.TripLonglineService;
|
|
| 80 | 80 |
import fr.ird.observe.services.service.data.longline.pairing.ActivityLonglinePairingService;
|
| 81 |
+import fr.ird.observe.services.service.data.seine.TripSeineGearUseService;
|
|
| 82 |
+import fr.ird.observe.services.service.data.seine.TripSeineService;
|
|
| 81 | 83 |
import fr.ird.observe.services.service.data.seine.obs.ActivitySeineService;
|
| 82 | 84 |
import fr.ird.observe.services.service.data.seine.obs.FloatingObjectService;
|
| 83 | 85 |
import fr.ird.observe.services.service.data.seine.obs.NonTargetCatchReleaseService;
|
| ... | ... | @@ -91,8 +93,6 @@ import fr.ird.observe.services.service.data.seine.obs.SetSeineService; |
| 91 | 93 |
import fr.ird.observe.services.service.data.seine.obs.TargetCatchService;
|
| 92 | 94 |
import fr.ird.observe.services.service.data.seine.obs.TargetSampleService;
|
| 93 | 95 |
import fr.ird.observe.services.service.data.seine.obs.TransmittingBuoyOperationService;
|
| 94 |
-import fr.ird.observe.services.service.data.seine.TripSeineGearUseService;
|
|
| 95 |
-import fr.ird.observe.services.service.data.seine.TripSeineService;
|
|
| 96 | 96 |
import fr.ird.observe.services.service.referential.ReferentialService;
|
| 97 | 97 |
import fr.ird.observe.services.service.sql.SqlScriptProducerService;
|
| 98 | 98 |
import fr.ird.observe.spi.DtoModelHelper;
|
| ... | ... | @@ -387,6 +387,9 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe |
| 387 | 387 |
}
|
| 388 | 388 |
|
| 389 | 389 |
final void destroyUI() {
|
| 390 |
+ if (ui==null) {
|
|
| 391 |
+ return;
|
|
| 392 |
+ }
|
|
| 390 | 393 |
UIHelper.removeAllDataBindings(getUi());
|
| 391 | 394 |
getModel().destroy();
|
| 392 | 395 |
UIHelper.destroy(getUi());
|
| ... | ... | @@ -608,6 +611,11 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe |
| 608 | 611 |
// }
|
| 609 | 612 |
|
| 610 | 613 |
final boolean closeUI() {
|
| 614 |
+ if (ui == null) {
|
|
| 615 |
+ // When a error was found while loading the previous screen
|
|
| 616 |
+ // If we do nothing, then we can't ever qui the data source
|
|
| 617 |
+ return true;
|
|
| 618 |
+ }
|
|
| 611 | 619 |
boolean b = checkEdit(ui);
|
| 612 | 620 |
log.debug(prefix + "Can close " + ui.getClass() + " : " + b);
|
| 613 | 621 |
if (b) {
|
| ... | ... | @@ -118,13 +118,26 @@ public abstract class ContentTableUIModel<D extends DataDto, C extends DataDto> |
| 118 | 118 |
|
| 119 | 119 |
@Override
|
| 120 | 120 |
protected ContentMode computeMode(boolean canWrite) {
|
| 121 |
- if (!canWrite || !showData) {
|
|
| 121 |
+ if (!canWrite) {
|
|
| 122 | 122 |
return ContentMode.READ;
|
| 123 | 123 |
}
|
| 124 |
+ ContentMode result;
|
|
| 124 | 125 |
if (getSelectedNode().getType().equals(getEditNode().getType())) {
|
| 125 |
- return getContentModeFromSelf();
|
|
| 126 |
+ result = getContentModeFromSelf();
|
|
| 127 |
+ return result;
|
|
| 126 | 128 |
}
|
| 127 |
- return getContentModeFromParent();
|
|
| 129 |
+ result = getContentModeFromParent();
|
|
| 130 |
+ boolean showData = computeShowData(result);
|
|
| 131 |
+ setShowData(showData);
|
|
| 132 |
+ if (!showData) {
|
|
| 133 |
+ result = ContentMode.READ;
|
|
| 134 |
+ }
|
|
| 135 |
+ return result;
|
|
| 136 |
+ }
|
|
| 137 |
+ |
|
| 138 |
+ protected boolean computeShowData(ContentMode contentMode) {
|
|
| 139 |
+ // by default can show data
|
|
| 140 |
+ return true;
|
|
| 128 | 141 |
}
|
| 129 | 142 |
|
| 130 | 143 |
@Override
|
| ... | ... | @@ -209,9 +222,8 @@ public abstract class ContentTableUIModel<D extends DataDto, C extends DataDto> |
| 209 | 222 |
}
|
| 210 | 223 |
|
| 211 | 224 |
public void setShowData(boolean showData) {
|
| 212 |
- boolean oldValue = this.showData;
|
|
| 213 | 225 |
this.showData = showData;
|
| 214 |
- firePropertyChange(PROPERTY_SHOW_DATA, oldValue, showData);
|
|
| 226 |
+ firePropertyChange(PROPERTY_SHOW_DATA, showData);
|
|
| 215 | 227 |
}
|
| 216 | 228 |
|
| 217 | 229 |
@Override
|
| ... | ... | @@ -68,6 +68,23 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS |
| 68 | 68 |
return ui.getModel();
|
| 69 | 69 |
}
|
| 70 | 70 |
|
| 71 |
+ @Override
|
|
| 72 |
+ public void beforeInit(NonTargetSampleUI ui) {
|
|
| 73 |
+ super.beforeInit(ui);
|
|
| 74 |
+ }
|
|
| 75 |
+ |
|
| 76 |
+ @Override
|
|
| 77 |
+ public void afterInit(NonTargetSampleUI ui) {
|
|
| 78 |
+ super.afterInit(ui);
|
|
| 79 |
+ }
|
|
| 80 |
+ |
|
| 81 |
+ @Override
|
|
| 82 |
+ protected void onOpenBeforeOpenModel() {
|
|
| 83 |
+ super.onOpenBeforeOpenModel();
|
|
| 84 |
+ // We can't add filter since it uses the model.form, so add them now
|
|
| 85 |
+ onAfterInitAddReferentialFilters(getModel().getReferenceCache());
|
|
| 86 |
+ }
|
|
| 87 |
+ |
|
| 71 | 88 |
@Override
|
| 72 | 89 |
protected ObserveLayoutFocusTraversalPolicy<NonTargetSampleUI> createFocusTraversalPolicy() {
|
| 73 | 90 |
return new ObserveLayoutFocusTraversalPolicy<NonTargetSampleUI>() {
|
| ... | ... | @@ -93,6 +110,9 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS |
| 93 | 110 |
|
| 94 | 111 |
@Override
|
| 95 | 112 |
protected void onAfterInitAddReferentialFilters(ContentUIReferenceCache referenceCache) {
|
| 113 |
+ if (getModel().getForm() == null) {
|
|
| 114 |
+ return;
|
|
| 115 |
+ }
|
|
| 96 | 116 |
referenceCache.addReferentialFilter(NonTargetLengthDto.PROPERTY_SPECIES, incomingReferences -> {
|
| 97 | 117 |
ReferentialDtoReferenceSet<SpeciesReference> sampleSpecies = getNonTargetSampleService().getSampleSpecies(getModel().getSelectedId());
|
| 98 | 118 |
return new LinkedList<>(sampleSpecies.toSet());
|
| ... | ... | @@ -166,8 +186,10 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS |
| 166 | 186 |
protected void loadEditBean(String beanId) {
|
| 167 | 187 |
Form<NonTargetSampleDto> form = getNonTargetSampleService().loadForm(beanId);
|
| 168 | 188 |
// FIXME
|
| 189 |
+ |
|
| 169 | 190 |
NonTargetSampleUIModel model = getModel();
|
| 170 |
- model.setForm(form);
|
|
| 191 |
+// model.getReferenceCache().loadReferentialReferenceSetsInModel(form);
|
|
| 192 |
+// model.setForm(form);
|
|
| 171 | 193 |
model.openForm(form);
|
| 172 | 194 |
// // on a besoin du formulaire dans cette méthode
|
| 173 | 195 |
// loadReferentialReferenceSetsInModel(form);
|
| ... | ... | @@ -242,7 +264,7 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS |
| 242 | 264 |
|
| 243 | 265 |
@Override
|
| 244 | 266 |
public void doPersist(NonTargetSampleDto bean) {
|
| 245 |
- SaveResultDto saveResult = getNonTargetSampleService().save(getModel().getSelectedParentId(), bean);
|
|
| 267 |
+ SaveResultDto saveResult = getNonTargetSampleService().save(getModel().getSelectedId(), bean);
|
|
| 246 | 268 |
saveResult.toDto(bean);
|
| 247 | 269 |
}
|
| 248 | 270 |
|
| ... | ... | @@ -22,6 +22,7 @@ package fr.ird.observe.client.ui.content.data.ps.observation; |
| 22 | 22 |
* #L%
|
| 23 | 23 |
*/
|
| 24 | 24 |
|
| 25 |
+import fr.ird.observe.client.ui.content.api.ContentMode;
|
|
| 25 | 26 |
import fr.ird.observe.client.ui.content.api.data.table.ContentTableMeta;
|
| 26 | 27 |
import fr.ird.observe.client.ui.content.api.data.table.ContentTableModel;
|
| 27 | 28 |
import fr.ird.observe.client.ui.content.api.data.table.ContentTableUI;
|
| ... | ... | @@ -122,6 +123,12 @@ public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleD |
| 122 | 123 |
firePropertyChange(PROPERTY_DEFAULT_SIZE_MEASURE_TYPE, oldValue, defaultSizeMeasureType);
|
| 123 | 124 |
}
|
| 124 | 125 |
|
| 126 |
+ @Override
|
|
| 127 |
+ protected boolean computeShowData(ContentMode contentMode) {
|
|
| 128 |
+ String selectedId = getSelectedId();
|
|
| 129 |
+ return ui.getDataSource().getNonTargetSampleService().canUseNonTargetSample(selectedId);
|
|
| 130 |
+ }
|
|
| 131 |
+ |
|
| 125 | 132 |
//FIXME Voir pourquoi c'est le seul modèle qui surcharge ça ???
|
| 126 | 133 |
// @Override
|
| 127 | 134 |
// public <D extends ReferentialDto, R extends ReferentialDtoReference<D, R>> Optional<Set<R>> tryToGetReferentialReferenceSet(String propertyName) {
|
| ... | ... | @@ -39,16 +39,16 @@ public class TargetSampleCaptureUIHandler extends TargetSampleUIHandler implemen |
| 39 | 39 |
TargetSampleCaptureUIHandler() {
|
| 40 | 40 |
super(false);
|
| 41 | 41 |
}
|
| 42 |
-//
|
|
| 43 |
-// @Override
|
|
| 44 |
-// public void beforeInit(TargetSampleCaptureUI ui) {
|
|
| 45 |
-// super.beforeInit(ui);
|
|
| 46 |
-// }
|
|
| 47 |
-//
|
|
| 48 |
-// @Override
|
|
| 49 |
-// public void afterInit(TargetSampleCaptureUI ui) {
|
|
| 50 |
-// super.afterInit(ui);
|
|
| 51 |
-// }
|
|
| 42 |
+ |
|
| 43 |
+ @Override
|
|
| 44 |
+ public void beforeInit(TargetSampleCaptureUI ui) {
|
|
| 45 |
+ super.beforeInit(ui);
|
|
| 46 |
+ }
|
|
| 47 |
+ |
|
| 48 |
+ @Override
|
|
| 49 |
+ public void afterInit(TargetSampleCaptureUI ui) {
|
|
| 50 |
+ super.afterInit(ui);
|
|
| 51 |
+ }
|
|
| 52 | 52 |
|
| 53 | 53 |
|
| 54 | 54 |
@Override
|
| ... | ... | @@ -40,15 +40,15 @@ public class TargetSampleRejeteUIHandler extends TargetSampleUIHandler implement |
| 40 | 40 |
super(true);
|
| 41 | 41 |
}
|
| 42 | 42 |
|
| 43 |
-// @Override
|
|
| 44 |
-// public void beforeInit(TargetSampleRejeteUI targetSampleRejeteUI) {
|
|
| 45 |
-// super.beforeInit(targetSampleRejeteUI);
|
|
| 46 |
-// }
|
|
| 47 |
-//
|
|
| 48 |
-// @Override
|
|
| 49 |
-// public void afterInit(TargetSampleRejeteUI targetSampleRejeteUI) {
|
|
| 50 |
-// super.afterInit(targetSampleRejeteUI);
|
|
| 51 |
-// }
|
|
| 43 |
+ @Override
|
|
| 44 |
+ public void beforeInit(TargetSampleRejeteUI targetSampleRejeteUI) {
|
|
| 45 |
+ super.beforeInit(targetSampleRejeteUI);
|
|
| 46 |
+ }
|
|
| 47 |
+ |
|
| 48 |
+ @Override
|
|
| 49 |
+ public void afterInit(TargetSampleRejeteUI targetSampleRejeteUI) {
|
|
| 50 |
+ super.afterInit(targetSampleRejeteUI);
|
|
| 51 |
+ }
|
|
| 52 | 52 |
|
| 53 | 53 |
@Override
|
| 54 | 54 |
protected ObserveLayoutFocusTraversalPolicy createFocusTraversalPolicy() {
|
| ... | ... | @@ -39,6 +39,7 @@ import fr.ird.observe.dto.referential.common.SizeMeasureTypeReference; |
| 39 | 39 |
import fr.ird.observe.dto.referential.common.SpeciesDto;
|
| 40 | 40 |
import fr.ird.observe.dto.referential.common.SpeciesReference;
|
| 41 | 41 |
import fr.ird.observe.dto.result.SaveResultDto;
|
| 42 |
+import fr.ird.observe.spi.DtoModelHelper;
|
|
| 42 | 43 |
import org.nuiton.validator.NuitonValidatorScope;
|
| 43 | 44 |
|
| 44 | 45 |
import javax.swing.JComponent;
|
| ... | ... | @@ -130,6 +131,10 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar |
| 130 | 131 |
}
|
| 131 | 132 |
}
|
| 132 | 133 |
|
| 134 |
+ boolean isDiscarded() {
|
|
| 135 |
+ return discarded;
|
|
| 136 |
+ }
|
|
| 137 |
+ |
|
| 133 | 138 |
@Override
|
| 134 | 139 |
protected ObserveLayoutFocusTraversalPolicy<U> createFocusTraversalPolicy() {
|
| 135 | 140 |
return null;
|
| ... | ... | @@ -183,6 +188,8 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar |
| 183 | 188 |
List<SizeMeasureTypeReference> sizeMeasureTypes = getReferentialReferences(SizeMeasureTypeReference.class);
|
| 184 | 189 |
List<SizeMeasureTypeReference> data = SizeMeasureTypeHelper.filterForSeine(sizeMeasureTypes);
|
| 185 | 190 |
log.info(prefix + "Using " + data.size() + " size measure type(s).");
|
| 191 |
+ // We need to fill the referential cache (normally this is done in onOpenModel method)
|
|
| 192 |
+ getModel().getReferenceCache().loadReferentialReferenceSetsInModel(DtoModelHelper.getOptionalFormDefinition(TargetSampleDto.class).get(), true);
|
|
| 186 | 193 |
loadSizeMeasureTypes();
|
| 187 | 194 |
checkSizeMeasureTypes(data);
|
| 188 | 195 |
((TargetSampleUI) ui).getSizeMeasureType().setData(data);
|
| ... | ... | @@ -224,7 +231,7 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar |
| 224 | 231 |
|
| 225 | 232 |
@Override
|
| 226 | 233 |
public void doPersist(TargetSampleDto bean) {
|
| 227 |
- SaveResultDto saveResult = getTargetSampleService().save(getModel().getSelectedParentId(), bean);
|
|
| 234 |
+ SaveResultDto saveResult = getTargetSampleService().save(getModel().getSelectedId(), bean);
|
|
| 228 | 235 |
saveResult.toDto(bean);
|
| 229 | 236 |
}
|
| 230 | 237 |
|
| ... | ... | @@ -22,6 +22,7 @@ package fr.ird.observe.client.ui.content.data.ps.observation; |
| 22 | 22 |
* #L%
|
| 23 | 23 |
*/
|
| 24 | 24 |
|
| 25 |
+import fr.ird.observe.client.ui.content.api.ContentMode;
|
|
| 25 | 26 |
import fr.ird.observe.client.ui.content.api.data.table.ContentTableMeta;
|
| 26 | 27 |
import fr.ird.observe.client.ui.content.api.data.table.ContentTableModel;
|
| 27 | 28 |
import fr.ird.observe.client.ui.content.api.data.table.ContentTableUI;
|
| ... | ... | @@ -104,6 +105,12 @@ public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, Ta |
| 104 | 105 |
};
|
| 105 | 106 |
}
|
| 106 | 107 |
|
| 108 |
+ @Override
|
|
| 109 |
+ protected boolean computeShowData(ContentMode contentMode) {
|
|
| 110 |
+ String selectedId = getSelectedId();
|
|
| 111 |
+ return ui.getDataSource().getTargetSampleService().canUseTargetSample(selectedId,((TargetSampleUI)ui).getHandler().isDiscarded());
|
|
| 112 |
+ }
|
|
| 113 |
+ |
|
| 107 | 114 |
public SizeMeasureTypeReference getDefaultSizeMeasureType() {
|
| 108 | 115 |
return defaultSizeMeasureType;
|
| 109 | 116 |
}
|