Observe-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- 7199 discussions
[Git][ultreiaio/ird-observe][develop] Suppression en cade des libérations de capture accessoire - Closes #1768
by Tony CHEMIT 21 Jan '21
by Tony CHEMIT 21 Jan '21
21 Jan '21
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
e8ee529f by Tony Chemit at 2021-01-21T18:19:47+01:00
Suppression en cade des libérations de capture accessoire - Closes #1768
- - - - -
7 changed files:
- client/datasource/editor/ps/src/main/i18n/getters/jaxx.getter
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUI.jcss
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUIModelStates.java
- client/i18n/src/main/i18n/translations/observe_en_GB.properties
- client/i18n/src/main/i18n/translations/observe_es_ES.properties
- client/i18n/src/main/i18n/translations/observe_fr_FR.properties
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/SetImpl.java
Changes:
=====================================
client/datasource/editor/ps/src/main/i18n/getters/jaxx.getter
=====================================
@@ -89,7 +89,6 @@ observe.data.ps.observation.NonTargetCatchRelease.length
observe.data.ps.observation.NonTargetCatchRelease.message.cantAdd
observe.data.ps.observation.NonTargetCatchRelease.releasingTime
observe.data.ps.observation.NonTargetCatchRelease.speciesGroupReleaseMode
-observe.data.ps.observation.NonTargetCatchRelease.table.deleteExtraMessage
observe.data.ps.observation.NonTargetLength.count
observe.data.ps.observation.NonTargetLength.length
observe.data.ps.observation.NonTargetLength.picturesReferences
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUI.jcss
=====================================
@@ -20,10 +20,6 @@
* #L%
*/
-#tableModel {
- deleteExtraMessage:{t("observe.data.ps.observation.NonTargetCatchRelease.table.deleteExtraMessage")};
-}
-
#editorPanel {
_focusComponent:{species};
}
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUIModelStates.java
=====================================
@@ -27,7 +27,9 @@ import fr.ird.observe.client.constants.AcquisitionMode;
import fr.ird.observe.client.datasource.api.cache.ReferencesCache;
import fr.ird.observe.client.datasource.api.cache.ReferencesFilterHelper;
import fr.ird.observe.dto.data.ps.observation.NonTargetCatchReleaseDto;
+import fr.ird.observe.dto.data.ps.observation.SetNonTargetCatchReleaseDto;
import fr.ird.observe.dto.referential.common.SpeciesGroupDto;
+import fr.ird.observe.dto.referential.common.SpeciesReference;
import fr.ird.observe.navigation.select.ProjectSelectModel;
import fr.ird.observe.services.ObserveServicesProvider;
import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition;
@@ -47,7 +49,7 @@ public class SetNonTargetCatchReleaseUIModelStates extends GeneratedSetNonTarget
@Override
public void onAfterInitAddReferentialFilters(ClientConfig clientConfig, ProjectSelectModel observeSelectModel, ObserveServicesProvider servicesProvider, ReferencesCache referenceCache) {
- referenceCache.addReferentialFilter(NonTargetCatchReleaseDto.PROPERTY_SPECIES, ReferencesFilterHelper.newSubList(getBean().getAvailableSpeciesIds()));
+ referenceCache.addReferentialFilter(NonTargetCatchReleaseDto.PROPERTY_SPECIES, ReferencesFilterHelper.<SetNonTargetCatchReleaseDto, SpeciesReference>newSubList(SetNonTargetCatchReleaseDto::getAvailableSpeciesIds));
}
public Map<String, SpeciesGroupDto> getSpeciesGroupDtoMap() {
@@ -58,5 +60,4 @@ public class SetNonTargetCatchReleaseUIModelStates extends GeneratedSetNonTarget
public void initDefault(NonTargetCatchReleaseDto newTableBean) {
newTableBean.setAcquisitionMode(AcquisitionMode.individual.ordinal());
}
-
}
=====================================
client/i18n/src/main/i18n/translations/observe_en_GB.properties
=====================================
@@ -943,7 +943,6 @@ observe.data.ps.observation.NonTargetCatchRelease.releasingTime.short=Releasing
observe.data.ps.observation.NonTargetCatchRelease.sex.short=Sex
observe.data.ps.observation.NonTargetCatchRelease.species.short=Species
observe.data.ps.observation.NonTargetCatchRelease.speciesGroupReleaseMode.short=Mode
-observe.data.ps.observation.NonTargetCatchRelease.table.deleteExtraMessage=\nIf you delete this catches released, samples using this species will also be deleted.
observe.data.ps.observation.NonTargetLength.count.short=Count
observe.data.ps.observation.NonTargetLength.length.short=Length
observe.data.ps.observation.NonTargetLength.picturesReferences=Pictures references
=====================================
client/i18n/src/main/i18n/translations/observe_es_ES.properties
=====================================
@@ -943,7 +943,6 @@ observe.data.ps.observation.NonTargetCatchRelease.releasingTime.short=Tiempo de
observe.data.ps.observation.NonTargetCatchRelease.sex.short=Sexo
observe.data.ps.observation.NonTargetCatchRelease.species.short=Especie
observe.data.ps.observation.NonTargetCatchRelease.speciesGroupReleaseMode.short=Modo
-observe.data.ps.observation.NonTargetCatchRelease.table.deleteExtraMessage=\nLa eliminación de una captura de fauna puede tener como consecuencia la eliminación de muestreo(s) de la especie. \#TODO
observe.data.ps.observation.NonTargetLength.count.short=Grupo de tallas
observe.data.ps.observation.NonTargetLength.length.short=Talla
observe.data.ps.observation.NonTargetLength.picturesReferences=Referencia foto
=====================================
client/i18n/src/main/i18n/translations/observe_fr_FR.properties
=====================================
@@ -925,11 +925,11 @@ observe.data.ps.observation.NonTargetCatch.meanLengthComputed.observed.tip=La ta
observe.data.ps.observation.NonTargetCatch.meanWeight.short=Poids moy
observe.data.ps.observation.NonTargetCatch.meanWeightComputed.computed.tip=Le poids moyen a été calculé (%s)
observe.data.ps.observation.NonTargetCatch.meanWeightComputed.observed.tip=Le poids moyen a été observé
-observe.data.ps.observation.NonTargetCatch.message.table.will.delete.nonTargetSample=En confirmant la sauvegarde des objets vont être supprimés\!\n\nLes espèces suivantes ne seront plus utilisables dans des échantillonages ou les espèces libérées \:\n%1$s\nCela entrainera la suppression des données saisies liées à ces espèces
+observe.data.ps.observation.NonTargetCatch.message.will.delete.sub.data=En confirmant la sauvegarde des objets vont être supprimés\!\n\nLes espèces suivantes ne seront plus utilisables dans des échantillonnages ou les espèces libérées \:\n%1$s\nCela entrainera la suppression des données saisies liées à ces espèces
+observe.data.ps.observation.NonTargetCatch.message.will.delete.sub.data.for.species=\nLe fait de supprimer cette capture rend indisponible l'espèce (%s) sur les libérations ou les échantillons.\nLes libérations ou échantillons utilisant cette espèce seront alors supprimer.
observe.data.ps.observation.NonTargetCatch.reasonForDiscard.short=Raison rejet
observe.data.ps.observation.NonTargetCatch.species.short=Espèce de faune
observe.data.ps.observation.NonTargetCatch.speciesFate.short=Devenir
-observe.data.ps.observation.NonTargetCatch.table.deleteExtraMessage=\nLe fait de supprimer une capture de faune peut entrainer la suppression d'échantillonnage(s) sur l'espèce.
observe.data.ps.observation.NonTargetCatch.totalCount.short=Nombre
observe.data.ps.observation.NonTargetCatch.totalCountComputed.computed.tip=Le nombre estimé a été calculé (%s)
observe.data.ps.observation.NonTargetCatch.totalCountComputed.observed.tip=Le nombre estimé a été observé
@@ -943,7 +943,6 @@ observe.data.ps.observation.NonTargetCatchRelease.releasingTime.short=Moment
observe.data.ps.observation.NonTargetCatchRelease.sex.short=Sexe
observe.data.ps.observation.NonTargetCatchRelease.species.short=Espèce
observe.data.ps.observation.NonTargetCatchRelease.speciesGroupReleaseMode.short=Mode
-observe.data.ps.observation.NonTargetCatchRelease.table.deleteExtraMessage=\nLe fait de supprimer une capture de faune peut entrainer la suppression d'échantillonnage(s) sur l'espèce. \#TODO
observe.data.ps.observation.NonTargetLength.count.short=Effectif
observe.data.ps.observation.NonTargetLength.length.short=Longueur
observe.data.ps.observation.NonTargetLength.picturesReferences=référence photo
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/SetImpl.java
=====================================
@@ -100,7 +100,7 @@ public class SetImpl extends SetAbstract {
@Override
public boolean canUseNonTargetCatchRelease() {
- return isNonTargetCatchReleaseNotEmpty() && getNonTargetCatch().stream().anyMatch(t -> isSpeciesGroupRelease(t.getSpecies()));
+ return isNonTargetCatchNotEmpty() && getNonTargetCatch().stream().anyMatch(t -> isSpeciesGroupRelease(t.getSpecies()));
}
public boolean isSpeciesGroupRelease(Species species) {
@@ -136,6 +136,10 @@ public class SetImpl extends SetAbstract {
toSetNonTargetCatchDto(referentialLocale, (SetNonTargetCatchDto) dto);
return;
}
+ if (dto instanceof SetNonTargetCatchReleaseDto) {
+ toSetNonTargetCatchReleaseDto(referentialLocale, (SetNonTargetCatchReleaseDto) dto);
+ return;
+ }
super.toDto(referentialLocale, dto);
if (dto instanceof SetDto) {
((SetDto) dto).setDiscardedTargetSampleEnabled(canUseDiscardedTargetSample());
@@ -143,9 +147,6 @@ public class SetImpl extends SetAbstract {
((SetDto) dto).setNonTargetSampleEnabled(canUseNonTargetSample());
((SetDto) dto).setSetNonTargetCatchReleaseEnabled(canUseNonTargetCatchRelease());
}
- if (dto instanceof SetNonTargetCatchReleaseDto) {
- ((SetNonTargetCatchReleaseDto) dto).setAvailableSpeciesIds(getNonTargetCatch().stream().map(NonTargetCatch::getSpecies).filter(this::isSpeciesGroupRelease).map(Species::getTopiaId).distinct().collect(ImmutableSet.toImmutableSet()));
- }
if (dto instanceof NonTargetSampleDto) {
((NonTargetSampleDto) dto).setAvailableSpeciesIds(getNonTargetCatch().stream().map(NonTargetCatch::getSpecies).map(Species::getTopiaId).distinct().collect(ImmutableSet.toImmutableSet()));
((NonTargetSampleDto) dto).setAvailableSpeciesFateIds(getNonTargetCatch().stream().map(NonTargetCatch::getSpeciesFate).map(SpeciesFate::getTopiaId).distinct().collect(ImmutableSet.toImmutableSet()));
@@ -160,10 +161,6 @@ public class SetImpl extends SetAbstract {
@Override
public <D extends DataDto> void fromDto(ReferentialLocale referentialLocale, D dto) {
- if (dto instanceof SetDiscardedTargetCatchDto) {
- fromSetDiscardedTargetCatchDto(referentialLocale, (SetDiscardedTargetCatchDto) dto);
- return;
- }
if (dto instanceof SetKeptTargetCatchDto) {
fromSetKeptTargetCatchDto(referentialLocale, (SetKeptTargetCatchDto) dto);
return;
@@ -206,7 +203,7 @@ public class SetImpl extends SetAbstract {
dtoList.forEach(catchDto -> {
SpeciesReference species = catchDto.getSpecies();
boolean hasSample = speciesId.contains(species.getId());
- catchDto.set(KeptTargetCatchDto.PROPERTY_HAS_SAMPLE, hasSample);
+ catchDto.setHasSample(hasSample);
});
}
}
@@ -224,7 +221,7 @@ public class SetImpl extends SetAbstract {
dtoList.forEach(catchDto -> {
SpeciesReference species = catchDto.getSpecies();
boolean hasSample = speciesId.contains(species.getId());
- catchDto.set(KeptTargetCatchDto.PROPERTY_HAS_SAMPLE, hasSample);
+ catchDto.setHasSample(hasSample);
});
}
}
@@ -255,6 +252,12 @@ public class SetImpl extends SetAbstract {
}
}
+ private void toSetNonTargetCatchReleaseDto(ReferentialLocale referentialLocale, SetNonTargetCatchReleaseDto dto) {
+ // do normal copy
+ super.toDto(referentialLocale, dto);
+ dto.setAvailableSpeciesIds(getNonTargetCatch().stream().map(NonTargetCatch::getSpecies).filter(this::isSpeciesGroupRelease).map(Species::getTopiaId).distinct().collect(ImmutableSet.toImmutableSet()));
+ }
+
private void fromSetKeptTargetCatchDto(ReferentialLocale referentialLocale, SetKeptTargetCatchDto dto) {
// keep other catches
List<TargetCatch> otherTargetCatches = getTargetCatch(true);
@@ -272,23 +275,6 @@ public class SetImpl extends SetAbstract {
otherTargetCatches.forEach(this::addTargetCatch);
}
- private void fromSetDiscardedTargetCatchDto(ReferentialLocale referentialLocale, SetDiscardedTargetCatchDto dto) {
- // keep other catches
- List<TargetCatch> otherTargetCatches = getTargetCatch(false);
- // do normal copy
- super.fromDto(referentialLocale, dto);
- // delete any sample which not using the given species ids
- TargetSample targetSample = getTargetSample(true);
- if (targetSample != null) {
- List<DiscardedTargetCatchDto> targetCatch = dto.getTargetCatch();
- Set<String> speciesIds = DtoReferenceAware.ids(targetCatch.stream().map(DiscardedTargetCatchDto::getSpecies));
- // remove sample from species ids
- targetSample.getTargetLength().removeIf(targetLength -> !speciesIds.contains(targetLength.getSpecies().getTopiaId()));
- }
- // push back other catches
- otherTargetCatches.forEach(this::addTargetCatch);
- }
-
private List<TargetCatch> getTargetCatch(boolean discarded) {
return super.getTargetCatch().stream().filter(c -> c != null && Objects.equals(discarded, c.isDiscarded())).collect(Collectors.toList());
}
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/e8ee529f6b83ed2a9f0b6a479…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/e8ee529f6b83ed2a9f0b6a479…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Suppression en cade des libérations de capture accessoire - See #1768
by Tony CHEMIT 21 Jan '21
by Tony CHEMIT 21 Jan '21
21 Jan '21
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
604da9db by Tony Chemit at 2021-01-21T17:28:11+01:00
Suppression en cade des libérations de capture accessoire - See #1768
Pour le moment, aucun message sur le sujet et aucun traitement.
- - - - -
3 changed files:
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUITableModel.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/SetImpl.java
Changes:
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUIModelStates.java
=====================================
@@ -26,7 +26,6 @@ import fr.ird.observe.client.configuration.ClientConfig;
import fr.ird.observe.client.constants.AcquisitionMode;
import fr.ird.observe.client.datasource.api.cache.ReferencesCache;
import fr.ird.observe.client.datasource.api.cache.ReferencesFilterHelper;
-import fr.ird.observe.client.datasource.editor.api.content.data.table.AskToDelete;
import fr.ird.observe.dto.data.ps.observation.NonTargetCatchReleaseDto;
import fr.ird.observe.dto.data.ps.observation.SetNonTargetCatchReleaseDto;
import fr.ird.observe.dto.referential.common.SpeciesGroupDto;
@@ -34,9 +33,7 @@ import fr.ird.observe.dto.referential.common.SpeciesReference;
import fr.ird.observe.navigation.select.ProjectSelectModel;
import fr.ird.observe.services.ObserveServicesProvider;
import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition;
-import io.ultreia.java4all.i18n.I18n;
-import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -64,11 +61,12 @@ public class SetNonTargetCatchReleaseUIModelStates extends GeneratedSetNonTarget
newTableBean.setAcquisitionMode(AcquisitionMode.individual.ordinal());
}
- @Override
- public boolean canSave(SetNonTargetCatchReleaseDto originalBean, SetNonTargetCatchReleaseDto bean, List<NonTargetCatchReleaseDto> data) {
- AskToDelete<SetNonTargetCatchReleaseDto> ask = new AskToDelete<>(
- SetNonTargetCatchReleaseDto::getRemovedUnsafeSpecies,
- I18n.n("observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data"));
- return ask.needDelete(this.getClientUIContext().getDecoratorService(), originalBean, bean);
- }
+ //FIXME: #1768
+// @Override
+// public boolean canSave(SetNonTargetCatchReleaseDto originalBean, SetNonTargetCatchReleaseDto bean, List<NonTargetCatchReleaseDto> data) {
+// AskToDelete<SetNonTargetCatchReleaseDto> ask = new AskToDelete<>(
+// SetNonTargetCatchReleaseDto::getRemovedUnsafeSpecies,
+// I18n.n("observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data"));
+// return ask.needDelete(this.getClientUIContext().getDecoratorService(), originalBean, bean);
+// }
}
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUITableModel.java
=====================================
@@ -31,8 +31,6 @@ import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseStatus
import javax.swing.JTable;
import java.util.List;
-import static io.ultreia.java4all.i18n.I18n.t;
-
/**
* Created on 12/4/14.
*
@@ -81,16 +79,17 @@ public class SetNonTargetCatchReleaseUITableModel extends GeneratedSetNonTargetC
super.onSelectedRowChanged(ui, editingRow, tableEditBean, previousRowBean, notPersisted, newRow);
}
- @Override
- protected String getDeleteExtraMessage(NonTargetCatchReleaseDto bean) {
- if (bean.isHasSample()) {
- int count = getBean().getUnsafeSpeciesUsageCount(bean.getSpecies());
- if (count == 1) {
- // while deleting this one, this species won't be available on sample
- return t("observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data.for.species", bean.getSpecies());
- }
- }
- // No specific message
- return null;
- }
+ //FIXME: #1768
+// @Override
+// protected String getDeleteExtraMessage(NonTargetCatchReleaseDto bean) {
+// if (bean.isHasSample()) {
+// int count = getBean().getUnsafeSpeciesUsageCount(bean.getSpecies());
+// if (count == 1) {
+// // while deleting this one, this species won't be available on sample
+// return t("observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data.for.species", bean.getSpecies());
+// }
+// }
+// // No specific message
+// return null;
+// }
}
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/SetImpl.java
=====================================
@@ -316,7 +316,7 @@ public class SetImpl extends SetAbstract {
// do normal copy
super.fromDto(referentialLocale, dto);
// delete any discarded sample which not using the given species ids
- //FIXME should we also check in non target catches ???
+ //FIXME: #1768
// TargetSample targetSample = getTargetSample(true);
// if (targetSample != null) {
// List<NonTargetCatchReleaseDto> targetCatch = dto.getNonTargetCatchRelease();
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/604da9dbffd440196544a25b0…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/604da9dbffd440196544a25b0…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Suppression en cade des libérations de capture accessoire - See #1768
by Tony CHEMIT 21 Jan '21
by Tony CHEMIT 21 Jan '21
21 Jan '21
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
b4583d98 by Tony Chemit at 2021-01-21T17:01:28+01:00
Suppression en cade des libérations de capture accessoire - See #1768
- - - - -
11 changed files:
- client/datasource/editor/ps/src/main/i18n/getters/java.getter
- client/datasource/editor/ps/src/main/i18n/getters/jaxx.getter
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUI.jcss
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUITableModel.java
- client/i18n/src/main/i18n/translations/observe_en_GB.properties
- client/i18n/src/main/i18n/translations/observe_es_ES.properties
- client/i18n/src/main/i18n/translations/observe_fr_FR.properties
- models/dto-definition/src/main/models/Observe-20-data-ps-observation.model
- + models/dto/src/main/java/fr/ird/observe/dto/data/ps/observation/SetNonTargetCatchReleaseDto.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/SetImpl.java
Changes:
=====================================
client/datasource/editor/ps/src/main/i18n/getters/java.getter
=====================================
@@ -32,6 +32,8 @@ observe.data.ps.observation.NonTargetCatch.message.will.delete.sub.data
observe.data.ps.observation.NonTargetCatch.message.will.delete.sub.data.for.species
observe.data.ps.observation.NonTargetCatch.totalCountComputed.computed.tip
observe.data.ps.observation.NonTargetCatch.totalCountComputed.observed.tip
+observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data
+observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data.for.species
observe.data.ps.observation.Route.choice.create.fin.veille.activity
observe.data.ps.observation.Route.choice.not.create.fin.veille.activity.and.continue
observe.data.ps.observation.Route.message.need.fin.veille.activity
=====================================
client/datasource/editor/ps/src/main/i18n/getters/jaxx.getter
=====================================
@@ -89,7 +89,6 @@ observe.data.ps.observation.NonTargetCatchRelease.length
observe.data.ps.observation.NonTargetCatchRelease.message.cantAdd
observe.data.ps.observation.NonTargetCatchRelease.releasingTime
observe.data.ps.observation.NonTargetCatchRelease.speciesGroupReleaseMode
-observe.data.ps.observation.NonTargetCatchRelease.table.deleteExtraMessage
observe.data.ps.observation.NonTargetLength.count
observe.data.ps.observation.NonTargetLength.length
observe.data.ps.observation.NonTargetLength.picturesReferences
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUI.jcss
=====================================
@@ -20,10 +20,6 @@
* #L%
*/
-#tableModel {
- deleteExtraMessage:{t("observe.data.ps.observation.NonTargetCatchRelease.table.deleteExtraMessage")};
-}
-
#editorPanel {
_focusComponent:{species};
}
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUIModelStates.java
=====================================
@@ -26,12 +26,17 @@ import fr.ird.observe.client.configuration.ClientConfig;
import fr.ird.observe.client.constants.AcquisitionMode;
import fr.ird.observe.client.datasource.api.cache.ReferencesCache;
import fr.ird.observe.client.datasource.api.cache.ReferencesFilterHelper;
+import fr.ird.observe.client.datasource.editor.api.content.data.table.AskToDelete;
import fr.ird.observe.dto.data.ps.observation.NonTargetCatchReleaseDto;
+import fr.ird.observe.dto.data.ps.observation.SetNonTargetCatchReleaseDto;
import fr.ird.observe.dto.referential.common.SpeciesGroupDto;
+import fr.ird.observe.dto.referential.common.SpeciesReference;
import fr.ird.observe.navigation.select.ProjectSelectModel;
import fr.ird.observe.services.ObserveServicesProvider;
import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition;
+import io.ultreia.java4all.i18n.I18n;
+import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -47,7 +52,7 @@ public class SetNonTargetCatchReleaseUIModelStates extends GeneratedSetNonTarget
@Override
public void onAfterInitAddReferentialFilters(ClientConfig clientConfig, ProjectSelectModel observeSelectModel, ObserveServicesProvider servicesProvider, ReferencesCache referenceCache) {
- referenceCache.addReferentialFilter(NonTargetCatchReleaseDto.PROPERTY_SPECIES, ReferencesFilterHelper.newSubList(getBean().getAvailableSpeciesIds()));
+ referenceCache.addReferentialFilter(NonTargetCatchReleaseDto.PROPERTY_SPECIES, ReferencesFilterHelper.<SetNonTargetCatchReleaseDto, SpeciesReference>newSubList(SetNonTargetCatchReleaseDto::getAvailableSpeciesIds));
}
public Map<String, SpeciesGroupDto> getSpeciesGroupDtoMap() {
@@ -59,4 +64,11 @@ public class SetNonTargetCatchReleaseUIModelStates extends GeneratedSetNonTarget
newTableBean.setAcquisitionMode(AcquisitionMode.individual.ordinal());
}
+ @Override
+ public boolean canSave(SetNonTargetCatchReleaseDto originalBean, SetNonTargetCatchReleaseDto bean, List<NonTargetCatchReleaseDto> data) {
+ AskToDelete<SetNonTargetCatchReleaseDto> ask = new AskToDelete<>(
+ SetNonTargetCatchReleaseDto::getRemovedUnsafeSpecies,
+ I18n.n("observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data"));
+ return ask.needDelete(this.getClientUIContext().getDecoratorService(), originalBean, bean);
+ }
}
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUITableModel.java
=====================================
@@ -31,6 +31,8 @@ import fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseStatus
import javax.swing.JTable;
import java.util.List;
+import static io.ultreia.java4all.i18n.I18n.t;
+
/**
* Created on 12/4/14.
*
@@ -78,4 +80,17 @@ public class SetNonTargetCatchReleaseUITableModel extends GeneratedSetNonTargetC
super.onSelectedRowChanged(ui, editingRow, tableEditBean, previousRowBean, notPersisted, newRow);
}
+
+ @Override
+ protected String getDeleteExtraMessage(NonTargetCatchReleaseDto bean) {
+ if (bean.isHasSample()) {
+ int count = getBean().getUnsafeSpeciesUsageCount(bean.getSpecies());
+ if (count == 1) {
+ // while deleting this one, this species won't be available on sample
+ return t("observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data.for.species", bean.getSpecies());
+ }
+ }
+ // No specific message
+ return null;
+ }
}
=====================================
client/i18n/src/main/i18n/translations/observe_en_GB.properties
=====================================
@@ -939,11 +939,12 @@ observe.data.ps.observation.NonTargetCatchRelease.comment.short=Com
observe.data.ps.observation.NonTargetCatchRelease.conformity.short=Conformity
observe.data.ps.observation.NonTargetCatchRelease.length.short=Length
observe.data.ps.observation.NonTargetCatchRelease.message.cantAdd=<html><body><strong>Can not add non target catch release</strong>(no sensible non target catch)</body></html>
+observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data=If you confirm save, some data could be deleted\!\n\nFollowing species won't be useable in samples \:\n%1$s\nAll samples of those species will be deleted.
+observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data.for.species=\nIf you delete this non target catch release, the species (%s) will not be available for samples.\nSamples using this species (%s) will also be deleted.
observe.data.ps.observation.NonTargetCatchRelease.releasingTime.short=Releasing time
observe.data.ps.observation.NonTargetCatchRelease.sex.short=Sex
observe.data.ps.observation.NonTargetCatchRelease.species.short=Species
observe.data.ps.observation.NonTargetCatchRelease.speciesGroupReleaseMode.short=Mode
-observe.data.ps.observation.NonTargetCatchRelease.table.deleteExtraMessage=\nIf you delete this catches released, samples using this species will also be deleted.
observe.data.ps.observation.NonTargetLength.count.short=Count
observe.data.ps.observation.NonTargetLength.length.short=Length
observe.data.ps.observation.NonTargetLength.picturesReferences=Pictures references
=====================================
client/i18n/src/main/i18n/translations/observe_es_ES.properties
=====================================
@@ -939,11 +939,12 @@ observe.data.ps.observation.NonTargetCatchRelease.comment.short=Observaciones
observe.data.ps.observation.NonTargetCatchRelease.conformity.short=Conformidad
observe.data.ps.observation.NonTargetCatchRelease.length.short=Talla
observe.data.ps.observation.NonTargetCatchRelease.message.cantAdd=<html><body><strong>Impossible d'ajouter des libération</strong>(pas de faune accessoire sensible)</body></html> \#TODO
+observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data=If you confirm save, some data could be deleted\!\n\nFollowing species won't be useable in samples \:\n%1$s\nAll samples of those species will be deleted. \#TODO
+observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data.for.species=\nIf you delete this non target catch release, the species (%s) will not be available for samples.\nSamples using this species (%s) will also be deleted. \#TODO
observe.data.ps.observation.NonTargetCatchRelease.releasingTime.short=Tiempo de liberación
observe.data.ps.observation.NonTargetCatchRelease.sex.short=Sexo
observe.data.ps.observation.NonTargetCatchRelease.species.short=Especie
observe.data.ps.observation.NonTargetCatchRelease.speciesGroupReleaseMode.short=Modo
-observe.data.ps.observation.NonTargetCatchRelease.table.deleteExtraMessage=\nLa eliminación de una captura de fauna puede tener como consecuencia la eliminación de muestreo(s) de la especie. \#TODO
observe.data.ps.observation.NonTargetLength.count.short=Grupo de tallas
observe.data.ps.observation.NonTargetLength.length.short=Talla
observe.data.ps.observation.NonTargetLength.picturesReferences=Referencia foto
=====================================
client/i18n/src/main/i18n/translations/observe_fr_FR.properties
=====================================
@@ -925,11 +925,11 @@ observe.data.ps.observation.NonTargetCatch.meanLengthComputed.observed.tip=La ta
observe.data.ps.observation.NonTargetCatch.meanWeight.short=Poids moy
observe.data.ps.observation.NonTargetCatch.meanWeightComputed.computed.tip=Le poids moyen a été calculé (%s)
observe.data.ps.observation.NonTargetCatch.meanWeightComputed.observed.tip=Le poids moyen a été observé
-observe.data.ps.observation.NonTargetCatch.message.table.will.delete.nonTargetSample=En confirmant la sauvegarde des objets vont être supprimés\!\n\nLes espèces suivantes ne seront plus utilisables dans des échantillonages ou les espèces libérées \:\n%1$s\nCela entrainera la suppression des données saisies liées à ces espèces
+observe.data.ps.observation.NonTargetCatch.message.will.delete.sub.data=En confirmant la sauvegarde des objets vont être supprimés\!\n\nLes espèces suivantes ne seront plus utilisables dans des échantillonnages ou les espèces libérées \:\n%1$s\nCela entrainera la suppression des données saisies liées à ces espèces
+observe.data.ps.observation.NonTargetCatch.message.will.delete.sub.data.for.species=\nLe fait de supprimer cette capture rend indisponible l'espèce (%s) sur les libérations ou les échantillons.\nLes libérations ou échantillons utilisant cette espèce seront alors supprimer.
observe.data.ps.observation.NonTargetCatch.reasonForDiscard.short=Raison rejet
observe.data.ps.observation.NonTargetCatch.species.short=Espèce de faune
observe.data.ps.observation.NonTargetCatch.speciesFate.short=Devenir
-observe.data.ps.observation.NonTargetCatch.table.deleteExtraMessage=\nLe fait de supprimer une capture de faune peut entrainer la suppression d'échantillonnage(s) sur l'espèce.
observe.data.ps.observation.NonTargetCatch.totalCount.short=Nombre
observe.data.ps.observation.NonTargetCatch.totalCountComputed.computed.tip=Le nombre estimé a été calculé (%s)
observe.data.ps.observation.NonTargetCatch.totalCountComputed.observed.tip=Le nombre estimé a été observé
@@ -939,11 +939,12 @@ observe.data.ps.observation.NonTargetCatchRelease.comment.short=Com
observe.data.ps.observation.NonTargetCatchRelease.conformity.short=Conformité
observe.data.ps.observation.NonTargetCatchRelease.length.short=Longueur
observe.data.ps.observation.NonTargetCatchRelease.message.cantAdd=<html><body><strong>Impossible d'ajouter des libérations</strong>(pas de faune accessoire sensible)</body></html>
+observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data=En confirmant la sauvegarde des objets vont être supprimés\!\n\nLes espèces suivantes ne seront plus utilisables dans des échantillonages \:\n%1$s\nCela entrainera la suppression des données saisies liées à ces espèces
+observe.data.ps.observation.NonTargetCatchRelease.message.will.delete.sub.data.for.species=\nLe fait de supprimer cette libération rend indisponible l'espèce (%s) sur les échantillons.\nLes échantillons utilisant cette espèce seront alors supprimer.
observe.data.ps.observation.NonTargetCatchRelease.releasingTime.short=Moment
observe.data.ps.observation.NonTargetCatchRelease.sex.short=Sexe
observe.data.ps.observation.NonTargetCatchRelease.species.short=Espèce
observe.data.ps.observation.NonTargetCatchRelease.speciesGroupReleaseMode.short=Mode
-observe.data.ps.observation.NonTargetCatchRelease.table.deleteExtraMessage=\nLe fait de supprimer une capture de faune peut entrainer la suppression d'échantillonnage(s) sur l'espèce. \#TODO
observe.data.ps.observation.NonTargetLength.count.short=Effectif
observe.data.ps.observation.NonTargetLength.length.short=Longueur
observe.data.ps.observation.NonTargetLength.picturesReferences=référence photo
=====================================
models/dto-definition/src/main/models/Observe-20-data-ps-observation.model
=====================================
@@ -81,6 +81,7 @@ comment + {*:1} String
length + {*:1} Float | positiveNumber
count + {*:1} Integer | notNull strictlyPositiveNumber
acquisitionMode + {*:1} int
+hasSample + {*:1} boolean
status {*:1} !fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseStatusReference | notNull
species {*:1} fr.ird.observe.dto.referential.common.SpeciesReference | notNull
sex {*:1} fr.ird.observe.dto.referential.common.SexReference | notNull
=====================================
models/dto/src/main/java/fr/ird/observe/dto/data/ps/observation/SetNonTargetCatchReleaseDto.java
=====================================
@@ -0,0 +1,68 @@
+package fr.ird.observe.dto.data.ps.observation;
+
+/*-
+ * #%L
+ * ObServe Models :: Dto
+ * %%
+ * Copyright (C) 2008 - 2021 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.dto.referential.common.SpeciesReference;
+import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition;
+
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@GenerateJavaBeanDefinition
+public class SetNonTargetCatchReleaseDto extends GeneratedSetNonTargetCatchReleaseDto {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Get the set of unsafe species no more used in the {@code incoming} dto.
+ *
+ * @param incoming the dto to compare this
+ * @return the set of unsafe species no more used in incoming dto
+ */
+ public Set<SpeciesReference> getRemovedUnsafeSpecies(SetNonTargetCatchReleaseDto incoming) {
+ // Get all unsafe species
+ Set<SpeciesReference> allUnsafeSpecies = getUnsafeSpecies();
+ // Get incoming used unsafe species
+ Set<SpeciesReference> incomingUsedUnsafeSpecies = incoming.getUnsafeSpecies();
+ // Remove for all the used
+ allUnsafeSpecies.removeAll(incomingUsedUnsafeSpecies);
+ // This will return the set of no more used unsafe species
+ return allUnsafeSpecies;
+ }
+
+ /**
+ * @return set of unsafe species used in catches
+ */
+ public Set<SpeciesReference> getUnsafeSpecies() {
+ return getNonTargetCatchRelease().stream().filter(NonTargetCatchReleaseDto::isHasSample).map(NonTargetCatchReleaseDto::getSpecies).collect(Collectors.toSet());
+ }
+
+ /**
+ * @param species species to test
+ * @return count of usage of this species in catches
+ */
+ public int getUnsafeSpeciesUsageCount(SpeciesReference species) {
+ return (int) getNonTargetCatchRelease().stream().filter(d -> Objects.equals(species, d.getSpecies())).count();
+ }
+}
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/SetImpl.java
=====================================
@@ -28,6 +28,7 @@ import fr.ird.observe.dto.data.ps.observation.DiscardedTargetCatchDto;
import fr.ird.observe.dto.data.ps.observation.DiscardedTargetSampleDto;
import fr.ird.observe.dto.data.ps.observation.KeptTargetCatchDto;
import fr.ird.observe.dto.data.ps.observation.KeptTargetSampleDto;
+import fr.ird.observe.dto.data.ps.observation.NonTargetCatchReleaseDto;
import fr.ird.observe.dto.data.ps.observation.NonTargetSampleDto;
import fr.ird.observe.dto.data.ps.observation.SetDiscardedTargetCatchDto;
import fr.ird.observe.dto.data.ps.observation.SetDto;
@@ -100,7 +101,7 @@ public class SetImpl extends SetAbstract {
@Override
public boolean canUseNonTargetCatchRelease() {
- return isNonTargetCatchReleaseNotEmpty() && getNonTargetCatch().stream().anyMatch(t -> isSpeciesGroupRelease(t.getSpecies()));
+ return isNonTargetCatchNotEmpty() && getNonTargetCatch().stream().anyMatch(t -> isSpeciesGroupRelease(t.getSpecies()));
}
public boolean isSpeciesGroupRelease(Species species) {
@@ -136,6 +137,10 @@ public class SetImpl extends SetAbstract {
toSetNonTargetCatchDto(referentialLocale, (SetNonTargetCatchDto) dto);
return;
}
+ if (dto instanceof SetNonTargetCatchReleaseDto) {
+ toSetNonTargetCatchReleaseDto(referentialLocale, (SetNonTargetCatchReleaseDto) dto);
+ return;
+ }
super.toDto(referentialLocale, dto);
if (dto instanceof SetDto) {
((SetDto) dto).setDiscardedTargetSampleEnabled(canUseDiscardedTargetSample());
@@ -143,9 +148,6 @@ public class SetImpl extends SetAbstract {
((SetDto) dto).setNonTargetSampleEnabled(canUseNonTargetSample());
((SetDto) dto).setSetNonTargetCatchReleaseEnabled(canUseNonTargetCatchRelease());
}
- if (dto instanceof SetNonTargetCatchReleaseDto) {
- ((SetNonTargetCatchReleaseDto) dto).setAvailableSpeciesIds(getNonTargetCatch().stream().map(NonTargetCatch::getSpecies).filter(this::isSpeciesGroupRelease).map(Species::getTopiaId).distinct().collect(ImmutableSet.toImmutableSet()));
- }
if (dto instanceof NonTargetSampleDto) {
((NonTargetSampleDto) dto).setAvailableSpeciesIds(getNonTargetCatch().stream().map(NonTargetCatch::getSpecies).map(Species::getTopiaId).distinct().collect(ImmutableSet.toImmutableSet()));
((NonTargetSampleDto) dto).setAvailableSpeciesFateIds(getNonTargetCatch().stream().map(NonTargetCatch::getSpeciesFate).map(SpeciesFate::getTopiaId).distinct().collect(ImmutableSet.toImmutableSet()));
@@ -172,6 +174,10 @@ public class SetImpl extends SetAbstract {
fromSetNonTargetCatchDto(referentialLocale, (SetNonTargetCatchDto) dto);
return;
}
+ if (dto instanceof SetNonTargetCatchReleaseDto) {
+ fromSetNonTargetCatchReleaseDto(referentialLocale, (SetNonTargetCatchReleaseDto) dto);
+ return;
+ }
super.fromDto(referentialLocale, dto);
}
@@ -206,7 +212,7 @@ public class SetImpl extends SetAbstract {
dtoList.forEach(catchDto -> {
SpeciesReference species = catchDto.getSpecies();
boolean hasSample = speciesId.contains(species.getId());
- catchDto.set(KeptTargetCatchDto.PROPERTY_HAS_SAMPLE, hasSample);
+ catchDto.setHasSample(hasSample);
});
}
}
@@ -224,7 +230,7 @@ public class SetImpl extends SetAbstract {
dtoList.forEach(catchDto -> {
SpeciesReference species = catchDto.getSpecies();
boolean hasSample = speciesId.contains(species.getId());
- catchDto.set(KeptTargetCatchDto.PROPERTY_HAS_SAMPLE, hasSample);
+ catchDto.setHasSample(hasSample);
});
}
}
@@ -255,6 +261,23 @@ public class SetImpl extends SetAbstract {
}
}
+ private void toSetNonTargetCatchReleaseDto(ReferentialLocale referentialLocale, SetNonTargetCatchReleaseDto dto) {
+ // do normal copy
+ super.toDto(referentialLocale, dto);
+ // is there some sample?
+ if (isNonTargetSampleNotEmpty()) {
+ NonTargetSample targetSample = getNonTargetSample().iterator().next();
+ // get usable species ids
+ java.util.Set<String> speciesId = DtoReferenceAware.ids(targetSample.getNonTargetLength().stream().map(NonTargetLength::getSpecies));
+ // mark catch if there is associated samples to it
+ dto.getNonTargetCatchRelease().forEach(childDto -> {
+ boolean hasSample = speciesId.contains(childDto.getSpecies().getId());
+ childDto.setHasSample(hasSample);
+ });
+ }
+ dto.setAvailableSpeciesIds(getNonTargetCatch().stream().map(NonTargetCatch::getSpecies).filter(this::isSpeciesGroupRelease).map(Species::getTopiaId).distinct().collect(ImmutableSet.toImmutableSet()));
+ }
+
private void fromSetKeptTargetCatchDto(ReferentialLocale referentialLocale, SetKeptTargetCatchDto dto) {
// keep other catches
List<TargetCatch> otherTargetCatches = getTargetCatch(true);
@@ -289,6 +312,20 @@ public class SetImpl extends SetAbstract {
otherTargetCatches.forEach(this::addTargetCatch);
}
+ private void fromSetNonTargetCatchReleaseDto(ReferentialLocale referentialLocale, SetNonTargetCatchReleaseDto dto) {
+ // do normal copy
+ super.fromDto(referentialLocale, dto);
+ // delete any discarded sample which not using the given species ids
+ //FIXME should we also check in non target catches ???
+// TargetSample targetSample = getTargetSample(true);
+// if (targetSample != null) {
+// List<NonTargetCatchReleaseDto> targetCatch = dto.getNonTargetCatchRelease();
+// Set<String> speciesIds = DtoReferenceAware.ids(targetCatch.stream().map(NonTargetCatchReleaseDto::getSpecies));
+// // remove sample from species ids
+// targetSample.getTargetLength().removeIf(targetLength -> !speciesIds.contains(targetLength.getSpecies().getTopiaId()));
+// }
+ }
+
private List<TargetCatch> getTargetCatch(boolean discarded) {
return super.getTargetCatch().stream().filter(c -> c != null && Objects.equals(discarded, c.isDiscarded())).collect(Collectors.toList());
}
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/b4583d98931b764c7945eab95…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/b4583d98931b764c7945eab95…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 8 commits: Improve ExtraTable and ExtractSchema
by Tony CHEMIT 21 Jan '21
by Tony CHEMIT 21 Jan '21
21 Jan '21
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
5fc94916 by Tony Chemit at 2021-01-20T22:45:21+01:00
Improve ExtraTable and ExtractSchema
- - - - -
429a3949 by Tony Chemit at 2021-01-21T13:09:18+01:00
Fix NPE if no species on NonTargetReleaseUI
- - - - -
a27ecc60 by Tony Chemit at 2021-01-21T13:09:57+01:00
Fix ReferentialCache to be able to use the incoming form object to filter
- - - - -
f09a98fb by Tony Chemit at 2021-01-21T13:10:47+01:00
Review ContentTableUI delete extra message (this should be always specialized, and no using a default message for all the form).
- - - - -
605b4b11 by Tony Chemit at 2021-01-21T16:44:52+01:00
Suppression en cascade des captures conservées - Closes #1765
- - - - -
bced957e by Tony Chemit at 2021-01-21T16:44:52+01:00
Suppression en cascade des captures rejetées - Closes #1766
- - - - -
4c1ca99d by Tony Chemit at 2021-01-21T16:44:52+01:00
Suppression en cascade de la faune accessoire - Closes #1767
- - - - -
7b32c485 by Tony Chemit at 2021-01-21T16:44:52+01:00
Suppression en cade des libérations de capture accessoire - Closes #1768
- - - - -
30 changed files:
- client/core/src/main/java/fr/ird/observe/client/datasource/api/cache/ReferencesCache.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/cache/ReferencesFilter.java
- client/core/src/main/java/fr/ird/observe/client/datasource/api/cache/ReferencesFilterHelper.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUITableModel.java
- client/datasource/editor/ps/src/main/i18n/getters/java.getter
- client/datasource/editor/ps/src/main/i18n/getters/jaxx.getter
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetDiscardedTargetCatchUI.jcss
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetDiscardedTargetCatchUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetDiscardedTargetCatchUITableModel.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetKeptTargetCatchUI.jcss
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetKeptTargetCatchUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetKeptTargetCatchUITableModel.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUI.jcss
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchReleaseUITableModel.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchUI.jcss
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchUITableModel.java
- client/i18n/src/main/i18n/translations/observe_en_GB.properties
- client/i18n/src/main/i18n/translations/observe_es_ES.properties
- client/i18n/src/main/i18n/translations/observe_fr_FR.properties
- models/dto-definition/src/main/models/Observe-20-data-ps-observation.model
- models/dto/src/main/java/fr/ird/observe/dto/data/ps/observation/SetDiscardedTargetCatchDto.java
- models/dto/src/main/java/fr/ird/observe/dto/data/ps/observation/SetKeptTargetCatchDto.java
- models/dto/src/main/java/fr/ird/observe/dto/data/ps/observation/SetNonTargetCatchDto.java
- + models/dto/src/main/java/fr/ird/observe/dto/data/ps/observation/SetNonTargetCatchReleaseDto.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/SetImpl.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/064d69ff2e0a7044e4b28cce…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/064d69ff2e0a7044e4b28cce…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][feature/1254] 5 commits: Problème de digit TargetLength.weight à 1 au lieu de 3 - Closes #1762
by Tony CHEMIT 20 Jan '21
by Tony CHEMIT 20 Jan '21
20 Jan '21
Tony CHEMIT pushed to branch feature/1254 at ultreiaio / ird-observe
Commits:
c8b22b1c by Tony Chemit at 2021-01-20T21:14:49+01:00
Problème de digit TargetLength.weight à 1 au lieu de 3 - Closes #1762
(cherry picked from commit c02970456dbc508257a0be85d6e2c13d237fbb0c)
- - - - -
d69e829d by Tony Chemit at 2021-01-20T21:15:01+01:00
Dysfonctionnement de l'arbre - Closes #1763
- - - - -
acf42c76 by Tony Chemit at 2021-01-20T21:15:07+01:00
Introduce a way to extract schema or table from generated schema (help to create new safe migration for v9)
- - - - -
c035d212 by Tony Chemit at 2021-01-20T22:46:38+01:00
Improve ExtraTable and ExtractSchema
- - - - -
3b4331ab by Tony Chemit at 2021-01-20T22:46:51+01:00
Réorganisation des données d’observation PS - Réorganisation des captures et échantillons de cible et bycatch observés - Closes #1254
- - - - -
30 changed files:
- client/configuration/src/main/config/Client.ini
- client/configuration/src/main/i18n/getters/config.getter
- client/core/src/main/java/fr/ird/observe/client/main/body/ClientConfigUI.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/sample/SampleContentTableUIModelStates.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationCapability.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationInitializer.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationTreeNodeProvider.java
- client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootNavigationTreeNodeProvider.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootNavigationTreeNodeProvider.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/SamplePartUIHandler.java
- client/datasource/editor/ps/src/main/capabilities/fr/ird/observe/client/datasource/editor/ps/data/observation/SetUI.capabilities
- client/datasource/editor/ps/src/main/i18n/getters/java.getter
- client/datasource/editor/ps/src/main/i18n/getters/jaxx.getter
- client/datasource/editor/ps/src/main/i18n/getters/navigation.getter
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootNavigationTreeNodeProvider.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUI.jaxx
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUIHandler.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUIModelStates.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUITableModel.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUI.jaxx
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUIHandler.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUIModelStates.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUITableModel.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUI.jaxx → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SampleUI.jaxx
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUIHandler.java → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SampleUIHandler.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUIModelStates.java → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SampleUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUITableModel.java → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SampleUITableModel.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchUI.jaxx → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetCatchUI.jaxx
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchUI.jcss → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetCatchUI.jcss
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/bfd8462db74bf49fd8527bc7…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/bfd8462db74bf49fd8527bc7…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][feature/1254] 2 commits: le projet compile, à tester
by Tony CHEMIT 20 Jan '21
by Tony CHEMIT 20 Jan '21
20 Jan '21
Tony CHEMIT pushed to branch feature/1254 at ultreiaio / ird-observe
Commits:
cc11d10d by Tony Chemit at 2021-01-20T19:51:02+01:00
le projet compile, à tester
- - - - -
bfd8462d by Tony Chemit at 2021-01-20T21:21:31+01:00
Use table DDL extractor
- - - - -
30 changed files:
- client/configuration/src/main/i18n/getters/config.getter
- client/core/src/main/java/fr/ird/observe/client/main/body/ClientConfigUI.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/sample/SampleContentTableUIModelStates.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIHandler.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/SamplePartUIHandler.java
- client/datasource/editor/ps/src/main/capabilities/fr/ird/observe/client/datasource/editor/ps/data/observation/SetUI.capabilities
- client/datasource/editor/ps/src/main/i18n/getters/java.getter
- client/datasource/editor/ps/src/main/i18n/getters/jaxx.getter
- client/datasource/editor/ps/src/main/i18n/getters/navigation.getter
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUI.jaxx
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUIHandler.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUIModelStates.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/DiscardedTargetSampleUITableModel.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUI.jaxx
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUIHandler.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUITableModel.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUI.jaxx → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SampleUI.jaxx
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUIHandler.java → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SampleUIHandler.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/KeptTargetSampleUIModelStates.java → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SampleUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/NonTargetSampleUITableModel.java → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SampleUITableModel.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchUI.jaxx → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetCatchUI.jaxx
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchUI.jcss → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetCatchUI.jcss
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchUIHandler.java → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetCatchUIHandler.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchUIModelStates.java → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetCatchUIModelStates.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetNonTargetCatchUITableModel.java → client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetCatchUITableModel.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetDiscardedTargetCatchUI.jaxx
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetDiscardedTargetCatchUIHandler.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetDiscardedTargetCatchUIModelStates.java
- − client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/SetDiscardedTargetCatchUITableModel.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/0498c7e8d1b7da2b5562c625…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/0498c7e8d1b7da2b5562c625…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop-9] 3 commits: Problème de digit TargetLength.weight à 1 au lieu de 3 - Closes #1762
by Tony CHEMIT 20 Jan '21
by Tony CHEMIT 20 Jan '21
20 Jan '21
Tony CHEMIT pushed to branch develop-9 at ultreiaio / ird-observe
Commits:
c8b22b1c by Tony Chemit at 2021-01-20T21:14:49+01:00
Problème de digit TargetLength.weight à 1 au lieu de 3 - Closes #1762
(cherry picked from commit c02970456dbc508257a0be85d6e2c13d237fbb0c)
- - - - -
d69e829d by Tony Chemit at 2021-01-20T21:15:01+01:00
Dysfonctionnement de l'arbre - Closes #1763
- - - - -
acf42c76 by Tony Chemit at 2021-01-20T21:15:07+01:00
Introduce a way to extract schema or table from generated schema (help to create new safe migration for v9)
- - - - -
16 changed files:
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationCapability.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationInitializer.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationTreeNodeProvider.java
- client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootNavigationTreeNodeProvider.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootNavigationTreeNodeProvider.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootNavigationTreeNodeProvider.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/TripAwareTopiaDao.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/common/TripTopiaDao.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/common/TripTopiaDao.java
- models/persistence/src/main/models/Observe-20-data-ps-observation.model
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/NavigationServiceLocalSupport.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/TripServiceLocalSupport.java
- toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/ExecuteRunnerMojo.java
- + toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/ExtractSchema.java
- + toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/ExtractTable.java
- toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/GenerateEmptyDatabases.java
Changes:
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationCapability.java
=====================================
@@ -75,8 +75,8 @@ public class RootNavigationCapability implements ReferenceContainerCapability<Ro
NavigationTreeConfig config = initializer.getConfig();
NavigationResult navigationResult = initializer.getNavigationResult();
List<ProgramReference> programs = initializer.getPrograms();
- List<? extends RootNavigationTreeNodeProvider> rootNodeProviders = initializer.getRootNodeProviders();
- List<? extends RootNavigationTreeNodeProvider> providers = rootNodeProviders.stream().filter(p -> config.isShowModule(p.getModule())).collect(Collectors.toList());
+ List<? extends RootNavigationTreeNodeProvider<?>> rootNodeProviders = initializer.getRootNodeProviders();
+ List<? extends RootNavigationTreeNodeProvider<?>> providers = rootNodeProviders.stream().filter(p -> config.isShowModule(p.getModule())).collect(Collectors.toList());
providers.forEach(p -> p.initRootDataNode(config, navigationResult, programs, rootNode));
if (config.isLoadReferential()) {
providers.forEach(p -> p.initRootReferentialNode(rootNode, navigationResult));
@@ -98,13 +98,13 @@ public class RootNavigationCapability implements ReferenceContainerCapability<Ro
return 0;
}
- public RootNavigationTreeNodeProvider getProvider(ProgramReference referenceType) {
+ public RootNavigationTreeNodeProvider<?> getProvider(ProgramReference referenceType) {
return getNode().getInitializer().getRootNodeProvider(referenceType);
}
public NavigationNode newChildNode(ProgramReference reference) {
RootNavigationNode node = getNode();
- RootNavigationTreeNodeProvider provider = getProvider(reference);
+ RootNavigationTreeNodeProvider<?> provider = getProvider(reference);
return provider.newChildNode(node, reference, 0);
}
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationInitializer.java
=====================================
@@ -42,7 +42,7 @@ import java.util.Objects;
* @since 8.0.1
*/
public class RootNavigationInitializer extends NavigationInitializer<RootNavigationContext> {
- private final SingletonSupplier<List<? extends RootNavigationTreeNodeProvider>> rootNodeProviders;
+ private final SingletonSupplier<List<? extends RootNavigationTreeNodeProvider<?>>> rootNodeProviders;
private final SingletonSupplier<Boolean> canLoadChildrenOnOpen;
private final NavigationTreeConfig config;
private final NavigationResult navigationResult;
@@ -73,7 +73,7 @@ public class RootNavigationInitializer extends NavigationInitializer<RootNavigat
protected void reload(NavigationContext<RootNavigationContext> context) {
}
- public final List<? extends RootNavigationTreeNodeProvider> getRootNodeProviders() {
+ public final List<? extends RootNavigationTreeNodeProvider<?>> getRootNodeProviders() {
return rootNodeProviders.get();
}
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationTreeNodeProvider.java
=====================================
@@ -30,11 +30,10 @@ import fr.ird.observe.client.datasource.editor.api.content.referential.Referenti
import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode;
import fr.ird.observe.dto.reference.DataDtoReference;
import fr.ird.observe.dto.referential.ReferentialDto;
-import fr.ird.observe.dto.referential.common.GearType;
import fr.ird.observe.dto.referential.common.ProgramReference;
import fr.ird.observe.services.service.data.NavigationResult;
-import fr.ird.observe.spi.module.BusinessModule;
import fr.ird.observe.spi.module.BusinessProject;
+import fr.ird.observe.spi.module.ObserveBusinessModule;
import java.util.Comparator;
import java.util.LinkedList;
@@ -49,19 +48,17 @@ import java.util.stream.Collectors;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 8.0
*/
-public abstract class RootNavigationTreeNodeProvider {
- public static List<RootNavigationTreeNodeProvider> PROVIDERS;
- private final BusinessModule module;
- //FIXME Add this in BusinessModule
- private final GearType gearType;
+public abstract class RootNavigationTreeNodeProvider<B extends fr.ird.observe.spi.module.BusinessModule & ObserveBusinessModule> {
+ public static List<RootNavigationTreeNodeProvider<?>> PROVIDERS;
+ private final B module;
private final int priority;
private final ImmutableList<Class<? extends NavigationNode>> acceptedNodeTypes;
private final Class<? extends DataDtoReference> acceptedType;
- public static synchronized List<RootNavigationTreeNodeProvider> getProviders() {
+ public static synchronized List<RootNavigationTreeNodeProvider<?>> getProviders() {
if (PROVIDERS == null) {
PROVIDERS = new LinkedList<>();
- for (RootNavigationTreeNodeProvider o : ServiceLoader.load(RootNavigationTreeNodeProvider.class)) {
+ for (RootNavigationTreeNodeProvider<?> o : ServiceLoader.load(RootNavigationTreeNodeProvider.class)) {
PROVIDERS.add(o);
}
PROVIDERS.sort(Comparator.comparing(RootNavigationTreeNodeProvider::priority));
@@ -69,9 +66,8 @@ public abstract class RootNavigationTreeNodeProvider {
return PROVIDERS;
}
- protected RootNavigationTreeNodeProvider(BusinessProject project, BusinessModule module, GearType gearType, ImmutableList<Class<? extends NavigationNode>> acceptedNodeTypes, Class<? extends DataDtoReference> acceptedType) {
+ protected RootNavigationTreeNodeProvider(BusinessProject project, B module, ImmutableList<Class<? extends NavigationNode>> acceptedNodeTypes, Class<? extends DataDtoReference> acceptedType) {
this.module = Objects.requireNonNull(module);
- this.gearType = gearType;
this.acceptedNodeTypes = acceptedNodeTypes;
this.acceptedType = acceptedType;
this.priority = Objects.requireNonNull(project).getModulePriority(module);
@@ -124,7 +120,7 @@ public abstract class RootNavigationTreeNodeProvider {
return priority;
}
- public BusinessModule getModule() {
+ public B getModule() {
return module;
}
@@ -140,7 +136,7 @@ public abstract class RootNavigationTreeNodeProvider {
}
public boolean accept(ProgramReference childrenReference) {
- return gearType != null && Objects.equals(gearType, childrenReference.getGearType());
+ return module.accept(childrenReference);
}
public ContentListUINavigationNode newChildNode(RootNavigationNode node, ProgramReference reference, int tripCount) {
=====================================
client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootNavigationTreeNodeProvider.java
=====================================
@@ -26,21 +26,18 @@ import com.google.auto.service.AutoService;
import com.google.common.collect.ImmutableList;
import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider;
import fr.ird.observe.spi.module.ObserveBusinessProject;
+import fr.ird.observe.spi.module.common.BusinessModule;
/**
* @author Tony Chemit - dev(a)tchemit.fr
* @since 8.0
*/
@AutoService(RootNavigationTreeNodeProvider.class)
-public class CommonRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider {
+public class CommonRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider<BusinessModule> {
public CommonRootNavigationTreeNodeProvider() {
- super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getCommonBusinessModule(), null,
+ super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getCommonBusinessModule(),
ImmutableList.of(fr.ird.observe.client.datasource.editor.common.referential.common.ReferentialHomeUINavigationNode.class), null);
}
-// @Override
-// public void initRootDataNode(NavigationTreeConfig config, NavigationResult navigationResult, List<ProgramReference> programs, RootNavigationNode rootNode) {
-// }
-
}
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootNavigationTreeNodeProvider.java
=====================================
@@ -28,19 +28,19 @@ import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavi
import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider;
import fr.ird.observe.client.datasource.editor.ll.data.common.TripListUINavigationNode;
import fr.ird.observe.dto.data.ll.common.TripReference;
-import fr.ird.observe.dto.referential.common.GearType;
import fr.ird.observe.dto.referential.common.ProgramReference;
import fr.ird.observe.spi.module.ObserveBusinessProject;
+import fr.ird.observe.spi.module.ll.BusinessModule;
/**
* @author Tony Chemit - dev(a)tchemit.fr
* @since 8.0
*/
@AutoService(RootNavigationTreeNodeProvider.class)
-public class LlRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider {
+public class LlRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider<BusinessModule> {
public LlRootNavigationTreeNodeProvider() {
- super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getLlBusinessModule(), GearType.longline,
+ super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getLlBusinessModule(),
ImmutableList.of(TripListUINavigationNode.class,
fr.ird.observe.client.datasource.editor.ll.referential.common.ReferentialHomeUINavigationNode.class,
fr.ird.observe.client.datasource.editor.ll.referential.landing.ReferentialHomeUINavigationNode.class,
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootNavigationTreeNodeProvider.java
=====================================
@@ -28,19 +28,19 @@ import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavi
import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider;
import fr.ird.observe.client.datasource.editor.ps.data.common.TripListUINavigationNode;
import fr.ird.observe.dto.data.ll.common.TripReference;
-import fr.ird.observe.dto.referential.common.GearType;
import fr.ird.observe.dto.referential.common.ProgramReference;
import fr.ird.observe.spi.module.ObserveBusinessProject;
+import fr.ird.observe.spi.module.ps.BusinessModule;
/**
* @author Tony Chemit - dev(a)tchemit.fr
* @since 8.0
*/
@AutoService(RootNavigationTreeNodeProvider.class)
-public class PsRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider {
+public class PsRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider<BusinessModule> {
public PsRootNavigationTreeNodeProvider() {
- super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getPsBusinessModule(), GearType.seine,
+ super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getPsBusinessModule(),
ImmutableList.of(TripListUINavigationNode.class,
fr.ird.observe.client.datasource.editor.ps.referential.common.ReferentialHomeUINavigationNode.class,
fr.ird.observe.client.datasource.editor.ps.referential.observation.ReferentialHomeUINavigationNode.class),
@@ -49,6 +49,6 @@ public class PsRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProv
@Override
public TripListUINavigationNode newChildNode(RootNavigationNode node, ProgramReference reference, int tripCount) {
- return TripListUINavigationNode.create(reference, (int) tripCount);
+ return TripListUINavigationNode.create(reference, tripCount);
}
}
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/TripAwareTopiaDao.java
=====================================
@@ -62,7 +62,7 @@ public interface TripAwareTopiaDao<D extends DataDto & fr.ird.observe.dto.data.T
List<E> getMatchingTripsVesselWithinDateRange(String id, String vesselId, Date startDate, Date endDate);
- List<R> getChildren(ReferentialLocale referentialLocale, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById);
+ List<R> getChildren(ReferentialLocale referentialLocale, String programId, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById);
default void fillTripCountByProgramId(Map<String, Integer> map) {
TopiaEntityEnum entityEnum = ((AbstractObserveTopiaDao<?>) this).getTopiaEntityEnum();
@@ -72,7 +72,7 @@ public interface TripAwareTopiaDao<D extends DataDto & fr.ird.observe.dto.data.T
default List<E> getChildren(Program parent, Date lastUpdate) {
if (lastUpdate == null) {
- return forProperties(TripAware.PROPERTY_PROGRAM, parent).findAll();
+ return forEquals(TripAware.PROPERTY_PROGRAM, parent).findAll();
}
return forLastUpdateDateGreaterThan(lastUpdate).addEquals(TripAware.PROPERTY_PROGRAM, parent).findAll();
}
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ll/common/TripTopiaDao.java
=====================================
@@ -55,7 +55,7 @@ import java.util.stream.Collectors;
public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwareTopiaDao<TripDto, TripReference, Trip> {
- public static final String GET_TRIP_REFERENCES = "SELECT" +
+ public static final String GET_ALL_TRIP_REFERENCES = "SELECT" +
" t.program," +
" t.topiaId," +
" t.startDate," +
@@ -66,6 +66,19 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
" t.observationsAvailability," +
" t.logbookAvailability" +
" FROM %s.%s t;";
+ public static final String GET_TRIP_REFERENCES = "SELECT" +
+ " t.program," +
+ " t.topiaId," +
+ " t.startDate," +
+ " t.endDate," +
+ " t.tripType," +
+ " t.observer," +
+ " t.vessel," +
+ " t.observationsAvailability," +
+ " t.logbookAvailability" +
+ " FROM %s.%s t" +
+ " WHERE t.program = '%s';";
+
private static class TripMapActivityObsPointQuery extends TopiaSqlQuery<List<TripMapPoint>> {
@@ -269,7 +282,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
}
@Override
- public List<TripReference> getChildren(ReferentialLocale referentialLocale, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById) {
+ public List<TripReference> getChildren(ReferentialLocale referentialLocale, String programId, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById) {
String dbTableName = getTopiaEntityEnum().dbTableName();
Map<String, Integer> observationActivityCount = new TreeMap<>();
@@ -281,12 +294,16 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
Map<String, Integer> landingCount = new TreeMap<>();
fillCount(getCountSql(ObserveEntityEnum.ll_landing_Landing, dbTableName), landingCount);
- String sql = String.format(GET_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName);
-
+ String sql;
+ if (programId == null) {
+ sql = String.format(GET_ALL_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName);
+ } else {
+ sql = String.format(GET_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName, programId);
+ }
TopiaSqlQuery<TripReference> query = TopiaSqlQuery.wrap(sql, resultSet -> {
TripDto dto = new TripDto();
- String programId = resultSet.getString(1);
- dto.setProgram(programById.get(programId));
+ String thisProgramId = resultSet.getString(1);
+ dto.setProgram(programById.get(thisProgramId));
String id = resultSet.getString(2);
dto.setId(id);
dto.setStartDate(resultSet.getDate(3));
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ps/common/TripTopiaDao.java
=====================================
@@ -59,7 +59,7 @@ import java.util.stream.Collectors;
*/
public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwareTopiaDao<TripDto, TripReference, Trip> {
- public static final String GET_TRIP_REFERENCES = "SELECT" +
+ public static final String GET_ALL_TRIP_REFERENCES = "SELECT" +
" t.program," +
" t.topiaId," +
" t.startDate," +
@@ -68,6 +68,16 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
" t.vessel" +
" FROM %s.%s t;";
+ public static final String GET_TRIP_REFERENCES = "SELECT" +
+ " t.program," +
+ " t.topiaId," +
+ " t.startDate," +
+ " t.endDate," +
+ " t.observer," +
+ " t.vessel" +
+ " FROM %s.%s t" +
+ " WHERE t.program = '%s';";
+
private static class TripMapActivityObservationPointQuery extends TopiaSqlQuery<TripMapPoint> {
private static final String SQL = "SELECT" +
@@ -169,14 +179,20 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
}
@Override
- public List<TripReference> getChildren(ReferentialLocale referentialLocale, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById) {
+ public List<TripReference> getChildren(ReferentialLocale referentialLocale, String programId, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById) {
String dbTableName = getTopiaEntityEnum().dbTableName();
- String sql = String.format(GET_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName);
+
+ String sql;
+ if (programId == null) {
+ sql = String.format(GET_ALL_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName);
+ } else {
+ sql = String.format(GET_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName, programId);
+ }
Map<String, Integer> observationRouteCount = new TreeMap<>();
fillCount(getCountSql(ObserveEntityEnum.ps_observation_Route, dbTableName), observationRouteCount);
TopiaSqlQuery<TripReference> query = TopiaSqlQuery.wrap(sql, resultSet -> {
- String programId = resultSet.getString(1);
+ String thisProgramId = resultSet.getString(1);
String id = resultSet.getString(2);
Integer routeCount = observationRouteCount.getOrDefault(id, 0);
@@ -186,7 +202,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
return routeCount;
}
};
- dto.setProgram(programById.get(programId));
+ dto.setProgram(programById.get(thisProgramId));
dto.setId(id);
dto.setStartDate(resultSet.getDate(3));
dto.setEndDate(resultSet.getDate(4));
=====================================
models/persistence/src/main/models/Observe-20-data-ps-observation.model
=====================================
@@ -189,7 +189,7 @@ data.ps.observation.TargetLength > data.DataEntity >> data.ps.observation.Length
length + {*:1} Float | sqlType=numeric digits=1
isLengthComputed + {*:1} boolean
count + {*:1} Integer
-weight + {*:1} Float | sqlType=numeric digits=1
+weight + {*:1} Float | sqlType=numeric digits=3
isWeightComputed + {*:1} boolean
acquisitionMode + {*:1} int
tagNumber + {*:1} String
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/NavigationServiceLocalSupport.java
=====================================
@@ -113,12 +113,12 @@ class NavigationServiceLocalSupport extends ObserveServiceLocal implements Navig
ArrayListMultimap<String, fr.ird.observe.dto.data.ll.common.TripReference> tripLlByProgram = ArrayListMultimap.create();
if (canReadData) {
if (loadPs) {
- List<fr.ird.observe.dto.data.ps.common.TripReference> trips = fr.ird.observe.entities.data.ps.common.Trip.SPI.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, programById, personById, vesselById);
+ List<fr.ird.observe.dto.data.ps.common.TripReference> trips = fr.ird.observe.entities.data.ps.common.Trip.SPI.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, null, programById, personById, vesselById);
trips.forEach(t -> tripPsByProgram.put(t.getProgram().getId(), t));
}
if (loadLl) {
- List<fr.ird.observe.dto.data.ll.common.TripReference> tripLl = fr.ird.observe.entities.data.ll.common.Trip.SPI.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, programById, personById, vesselById);
+ List<fr.ird.observe.dto.data.ll.common.TripReference> tripLl = fr.ird.observe.entities.data.ll.common.Trip.SPI.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, null, programById, personById, vesselById);
tripLl.forEach(t -> tripLlByProgram.put(t.getProgram().getId(), t));
}
}
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/TripServiceLocalSupport.java
=====================================
@@ -182,8 +182,7 @@ public abstract class TripServiceLocalSupport<D extends OpenableDto & fr.ird.obs
ImmutableSet<VesselReference> vessels = Vessel.toReferenceSet(referentialLocale, getTopiaPersistenceContext(), null).toSet();
ImmutableMap<String, VesselReference> vesselById = Maps.uniqueIndex(vessels, VesselReference::getId);
-
- List<R> references = spi.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, programById, personById, vesselById);
+ List<R> references = spi.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, parentId, programById, personById, vesselById);
return DataDtoReferenceSet.of(spi.toReferenceType(), references, now());
}
=====================================
toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/ExecuteRunnerMojo.java
=====================================
@@ -33,6 +33,7 @@ import java.io.File;
import java.net.URLClassLoader;
import java.nio.file.Path;
import java.util.List;
+import java.util.Map;
/**
* To execute the given
@@ -76,11 +77,15 @@ public class ExecuteRunnerMojo extends ToolboxMojoSupport {
@Parameter(defaultValue = "${project.build.directory}/generated-sources/java", required = true)
private File targetRoot;
+ @Parameter
+ private Map<String, String> extraProperties;
+
public static abstract class MojoRunnable implements Runnable {
protected I18nKeySet getterFile;
protected Log log;
private boolean force;
+ private Map<String, String> extraProperties;
public I18nKeySet getGetterFile() {
return getterFile;
@@ -105,6 +110,14 @@ public class ExecuteRunnerMojo extends ToolboxMojoSupport {
public void setForce(boolean force) {
this.force = force;
}
+
+ public Map<String, String> getExtraProperties() {
+ return extraProperties;
+ }
+
+ public void setExtraProperties(Map<String, String> extraProperties) {
+ this.extraProperties = extraProperties;
+ }
}
@Override
@@ -136,6 +149,7 @@ public class ExecuteRunnerMojo extends ToolboxMojoSupport {
MojoRunnable o = (MojoRunnable) urlClassLoader.loadClass(runnerType).getConstructor().newInstance();
o.setGetterFile(getterFile);
+ o.setExtraProperties(extraProperties);
o.setLog(getLog());
o.run();
}
=====================================
toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/ExtractSchema.java
=====================================
@@ -0,0 +1,108 @@
+package fr.ird.observe.maven.plugins.toolbox.persistence;
+
+/*-
+ * #%L
+ * ObServe Toolkit :: Maven plugin
+ * %%
+ * Copyright (C) 2008 - 2021 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.maven.plugins.toolbox.ExecuteRunnerMojo;
+import org.nuiton.topia.persistence.script.TopiaSqlScript;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
+import org.nuiton.version.Version;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * To extract a single schema DDL into a specific sql file.
+ * <p>
+ * Created on 20/01/2021.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 8.0.5
+ */
+public class ExtractSchema extends ExecuteRunnerMojo.MojoRunnable {
+
+ @Override
+ public void run() {
+
+ Path targetDirectory = new File(System.getProperty("compile.target.directory")).toPath();
+ Path sourceDirectory = new File(System.getProperty("compile.source.directory")).toPath();
+
+ String schemaName = getExtraProperties().get("schemaName");
+
+ Version modelVersion = MigrationVersionResourceProvider.get().getLastVersion();
+
+ Path dbRootPath = sourceDirectory.getParent().resolve("resources").resolve("db").resolve("migration").resolve(modelVersion.getVersion());
+ Path targetDbRootPath = targetDirectory.resolve("db").resolve("migration").resolve(modelVersion.getVersion());
+ try {
+ processScript(true, dbRootPath.resolve("observe_full-schema-H2.sql"), targetDbRootPath, schemaName);
+ processScript(false, dbRootPath.resolve("observe_full-schema-PG.sql"), targetDbRootPath, schemaName);
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ protected void processScript(boolean h2, Path incomingFullSchema, Path targetDbRootPath, String schemaName) throws IOException {
+ Path pathFullSchema = incomingFullSchema.getParent().resolve(incomingFullSchema.toFile().getName().replace("-schema-", "-schema-" + schemaName+"-"));
+ log.info(String.format("Generating schema %s schema [%s] (from %s).", schemaName, pathFullSchema.toFile().getName(), incomingFullSchema));
+ TopiaSqlScript script = TopiaSqlScript.of(incomingFullSchema);
+ Path pathCreateSchema = pathFullSchema.getParent().resolve(pathFullSchema.toFile().getName().replace("full", "create"));
+ Path pathFinalizeSchema = pathFullSchema.getParent().resolve(pathFullSchema.toFile().getName().replace("full", "finalize"));
+ List<String> createSchemaStatements = new LinkedList<>();
+ List<String> finalizeSchemaStatements = new LinkedList<>();
+ script.getLocation().forEach(statement -> {
+ String trim = statement.toLowerCase().trim();
+ if (trim.startsWith("create schema " + schemaName) || trim.startsWith("create table " + schemaName)) {
+ if (!h2) {
+ statement = statement.replace("data blob", "data OID");
+ }
+ createSchemaStatements.add(statement);
+ } else {
+ if (trim.startsWith("alter table " + schemaName) || trim.startsWith("create index idx_" + schemaName)) {
+ finalizeSchemaStatements.add(statement);
+ }
+ }
+ });
+
+ int createStatementCount = createSchemaStatements.size();
+ int finalizeStatementCount = finalizeSchemaStatements.size();
+
+ log.info(String.format("Generated create schema (%d statements) at %s.", createStatementCount, pathCreateSchema));
+ Files.write(pathCreateSchema, createSchemaStatements);
+ copyToTarget(pathCreateSchema, targetDbRootPath);
+
+ log.info(String.format("Generated finalize schema (%d statements) at %s.", finalizeStatementCount, pathFinalizeSchema));
+ Files.write(pathFinalizeSchema, finalizeSchemaStatements);
+ copyToTarget(pathFinalizeSchema, targetDbRootPath);
+ }
+
+ private void copyToTarget(Path source, Path targetDbRootPath) throws IOException {
+ Path target = targetDbRootPath.resolve(source.toFile().getName());
+ Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
+ getLog().debug(String.format("Copy from %s → %s", source.toFile().getName(), target));
+ }
+
+}
=====================================
toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/ExtractTable.java
=====================================
@@ -0,0 +1,116 @@
+package fr.ird.observe.maven.plugins.toolbox.persistence;
+
+/*-
+ * #%L
+ * ObServe Toolkit :: Maven plugin
+ * %%
+ * Copyright (C) 2008 - 2021 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.entities.ObserveTopiaApplicationContextSupport;
+import fr.ird.observe.entities.ObserveTopiaConfiguration;
+import fr.ird.observe.entities.ObserveTopiaConfigurationFactory;
+import fr.ird.observe.maven.plugins.toolbox.ExecuteRunnerMojo;
+import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2;
+import org.nuiton.topia.persistence.script.TopiaSqlScript;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
+import org.nuiton.version.Version;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.function.BiFunction;
+
+/**
+ * to extract a single table DDL into a specific sql file.
+ * Created on 20/01/2021.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 8.0.5
+ */
+public class ExtractTable extends ExecuteRunnerMojo.MojoRunnable {
+
+ @Override
+ public void run() {
+
+ Path targetDirectory = new File(System.getProperty("compile.target.directory")).toPath();
+ Path sourceDirectory = new File(System.getProperty("compile.source.directory")).toPath();
+
+ String schemaName = getExtraProperties().get("schemaName");
+ String tableName = getExtraProperties().get("tableName");
+
+ Version modelVersion = MigrationVersionResourceProvider.get().getLastVersion();
+
+ Path dbRootPath = sourceDirectory.getParent().resolve("resources").resolve("db").resolve("migration").resolve(modelVersion.getVersion());
+ Path targetDbRootPath = targetDirectory.resolve("db").resolve("migration").resolve(modelVersion.getVersion());
+ try {
+ processScript(true, dbRootPath.resolve("observe_full-schema-H2.sql"), targetDbRootPath, schemaName, tableName);
+ processScript(false, dbRootPath.resolve("observe_full-schema-PG.sql"), targetDbRootPath, schemaName, tableName);
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ protected void processScript(boolean h2, Path incomingFullSchema, Path targetDbRootPath, String schemaName, String tableName) throws IOException {
+ String suffix = schemaName + "." + tableName;
+ Path pathFullSchema = incomingFullSchema.getParent().resolve(incomingFullSchema.toFile().getName().replace("-schema-", "-table-" + suffix+"-"));
+ log.info(String.format("Generating table %s.%s schema [%s] (from %s).", schemaName, tableName, pathFullSchema.toFile().getName(), incomingFullSchema));
+ TopiaSqlScript script = TopiaSqlScript.of(incomingFullSchema);
+ Path pathCreateSchema = pathFullSchema.getParent().resolve(pathFullSchema.toFile().getName().replace("full", "create"));
+ Path pathFinalizeSchema = pathFullSchema.getParent().resolve(pathFullSchema.toFile().getName().replace("full", "finalize"));
+ List<String> createSchemaStatements = new LinkedList<>();
+ List<String> finalizeSchemaStatements = new LinkedList<>();
+
+ String suffix2 = schemaName + "_" + tableName;
+ script.getLocation().forEach(statement -> {
+ String trim = statement.toLowerCase().trim();
+ if (trim.startsWith("create table " + suffix)) {
+ if (!h2) {
+ statement = statement.replace("data blob", "data OID");
+ }
+ createSchemaStatements.add(statement);
+ } else {
+ if (trim.startsWith("alter table " + suffix) || trim.startsWith("create index idx_" + suffix2)) {
+ finalizeSchemaStatements.add(statement);
+ }
+ }
+ });
+
+ int createStatementCount = createSchemaStatements.size();
+ int finalizeStatementCount = finalizeSchemaStatements.size();
+
+ log.info(String.format("Generated create table (%d statements) at %s.", createStatementCount, pathCreateSchema));
+ Files.write(pathCreateSchema, createSchemaStatements);
+ copyToTarget(pathCreateSchema, targetDbRootPath);
+
+ log.info(String.format("Generated finalize table (%d statements) at %s.", finalizeStatementCount, pathFinalizeSchema));
+ Files.write(pathFinalizeSchema, finalizeSchemaStatements);
+ copyToTarget(pathFinalizeSchema, targetDbRootPath);
+ }
+
+ private void copyToTarget(Path source, Path targetDbRootPath) throws IOException {
+ Path target = targetDbRootPath.resolve(source.toFile().getName());
+ Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
+ getLog().debug(String.format("Copy from %s → %s", source.toFile().getName(), target));
+ }
+}
=====================================
toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/GenerateEmptyDatabases.java
=====================================
@@ -115,11 +115,11 @@ public class GenerateEmptyDatabases extends ExecuteRunnerMojo.MojoRunnable {
log.info(String.format("Generated full schema (%d statements) at %s.", fullStatementCount, pathFullSchema));
copyToTarget(pathFullSchema, targetDbRootPath);
- log.info(String.format("Generated create schema (%d statements) at %s.", createStatementCount, pathFullSchema));
+ log.info(String.format("Generated create schema (%d statements) at %s.", createStatementCount, pathCreateSchema));
Files.write(pathCreateSchema, createSchemaStatements);
copyToTarget(pathCreateSchema, targetDbRootPath);
- log.info(String.format("Generated finalize schema (%d statements) at %s.", finalizeStatementCount, pathFullSchema));
+ log.info(String.format("Generated finalize schema (%d statements) at %s.", finalizeStatementCount, pathFinalizeSchema));
Files.write(pathFinalizeSchema, finalizeSchemaStatements);
copyToTarget(pathFinalizeSchema, targetDbRootPath);
}
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/70b7c1856f1012e9866dad38…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/70b7c1856f1012e9866dad38…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Introduce a way to extract schema or table from generated schema (help to...
by Tony CHEMIT 20 Jan '21
by Tony CHEMIT 20 Jan '21
20 Jan '21
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
064d69ff by Tony Chemit at 2021-01-20T21:13:20+01:00
Introduce a way to extract schema or table from generated schema (help to create new safe migration for v9)
- - - - -
4 changed files:
- toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/ExecuteRunnerMojo.java
- + toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/ExtractSchema.java
- + toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/ExtractTable.java
- toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/GenerateEmptyDatabases.java
Changes:
=====================================
toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/ExecuteRunnerMojo.java
=====================================
@@ -33,6 +33,7 @@ import java.io.File;
import java.net.URLClassLoader;
import java.nio.file.Path;
import java.util.List;
+import java.util.Map;
/**
* To execute the given
@@ -76,11 +77,15 @@ public class ExecuteRunnerMojo extends ToolboxMojoSupport {
@Parameter(defaultValue = "${project.build.directory}/generated-sources/java", required = true)
private File targetRoot;
+ @Parameter
+ private Map<String, String> extraProperties;
+
public static abstract class MojoRunnable implements Runnable {
protected I18nKeySet getterFile;
protected Log log;
private boolean force;
+ private Map<String, String> extraProperties;
public I18nKeySet getGetterFile() {
return getterFile;
@@ -105,6 +110,14 @@ public class ExecuteRunnerMojo extends ToolboxMojoSupport {
public void setForce(boolean force) {
this.force = force;
}
+
+ public Map<String, String> getExtraProperties() {
+ return extraProperties;
+ }
+
+ public void setExtraProperties(Map<String, String> extraProperties) {
+ this.extraProperties = extraProperties;
+ }
}
@Override
@@ -136,6 +149,7 @@ public class ExecuteRunnerMojo extends ToolboxMojoSupport {
MojoRunnable o = (MojoRunnable) urlClassLoader.loadClass(runnerType).getConstructor().newInstance();
o.setGetterFile(getterFile);
+ o.setExtraProperties(extraProperties);
o.setLog(getLog());
o.run();
}
=====================================
toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/ExtractSchema.java
=====================================
@@ -0,0 +1,108 @@
+package fr.ird.observe.maven.plugins.toolbox.persistence;
+
+/*-
+ * #%L
+ * ObServe Toolkit :: Maven plugin
+ * %%
+ * Copyright (C) 2008 - 2021 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.maven.plugins.toolbox.ExecuteRunnerMojo;
+import org.nuiton.topia.persistence.script.TopiaSqlScript;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
+import org.nuiton.version.Version;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * To extract a single schema DDL into a specific sql file.
+ * <p>
+ * Created on 20/01/2021.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 8.0.5
+ */
+public class ExtractSchema extends ExecuteRunnerMojo.MojoRunnable {
+
+ @Override
+ public void run() {
+
+ Path targetDirectory = new File(System.getProperty("compile.target.directory")).toPath();
+ Path sourceDirectory = new File(System.getProperty("compile.source.directory")).toPath();
+
+ String schemaName = getExtraProperties().get("schemaName");
+
+ Version modelVersion = MigrationVersionResourceProvider.get().getLastVersion();
+
+ Path dbRootPath = sourceDirectory.getParent().resolve("resources").resolve("db").resolve("migration").resolve(modelVersion.getVersion());
+ Path targetDbRootPath = targetDirectory.resolve("db").resolve("migration").resolve(modelVersion.getVersion());
+ try {
+ processScript(true, dbRootPath.resolve("observe_full-schema-H2.sql"), targetDbRootPath, schemaName);
+ processScript(false, dbRootPath.resolve("observe_full-schema-PG.sql"), targetDbRootPath, schemaName);
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ protected void processScript(boolean h2, Path incomingFullSchema, Path targetDbRootPath, String schemaName) throws IOException {
+ Path pathFullSchema = incomingFullSchema.getParent().resolve(incomingFullSchema.toFile().getName().replace("-schema-", "-schema-" + schemaName+"-"));
+ log.info(String.format("Generating schema %s schema [%s] (from %s).", schemaName, pathFullSchema.toFile().getName(), incomingFullSchema));
+ TopiaSqlScript script = TopiaSqlScript.of(incomingFullSchema);
+ Path pathCreateSchema = pathFullSchema.getParent().resolve(pathFullSchema.toFile().getName().replace("full", "create"));
+ Path pathFinalizeSchema = pathFullSchema.getParent().resolve(pathFullSchema.toFile().getName().replace("full", "finalize"));
+ List<String> createSchemaStatements = new LinkedList<>();
+ List<String> finalizeSchemaStatements = new LinkedList<>();
+ script.getLocation().forEach(statement -> {
+ String trim = statement.toLowerCase().trim();
+ if (trim.startsWith("create schema " + schemaName) || trim.startsWith("create table " + schemaName)) {
+ if (!h2) {
+ statement = statement.replace("data blob", "data OID");
+ }
+ createSchemaStatements.add(statement);
+ } else {
+ if (trim.startsWith("alter table " + schemaName) || trim.startsWith("create index idx_" + schemaName)) {
+ finalizeSchemaStatements.add(statement);
+ }
+ }
+ });
+
+ int createStatementCount = createSchemaStatements.size();
+ int finalizeStatementCount = finalizeSchemaStatements.size();
+
+ log.info(String.format("Generated create schema (%d statements) at %s.", createStatementCount, pathCreateSchema));
+ Files.write(pathCreateSchema, createSchemaStatements);
+ copyToTarget(pathCreateSchema, targetDbRootPath);
+
+ log.info(String.format("Generated finalize schema (%d statements) at %s.", finalizeStatementCount, pathFinalizeSchema));
+ Files.write(pathFinalizeSchema, finalizeSchemaStatements);
+ copyToTarget(pathFinalizeSchema, targetDbRootPath);
+ }
+
+ private void copyToTarget(Path source, Path targetDbRootPath) throws IOException {
+ Path target = targetDbRootPath.resolve(source.toFile().getName());
+ Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
+ getLog().debug(String.format("Copy from %s → %s", source.toFile().getName(), target));
+ }
+
+}
=====================================
toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/ExtractTable.java
=====================================
@@ -0,0 +1,116 @@
+package fr.ird.observe.maven.plugins.toolbox.persistence;
+
+/*-
+ * #%L
+ * ObServe Toolkit :: Maven plugin
+ * %%
+ * Copyright (C) 2008 - 2021 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.entities.ObserveTopiaApplicationContextSupport;
+import fr.ird.observe.entities.ObserveTopiaConfiguration;
+import fr.ird.observe.entities.ObserveTopiaConfigurationFactory;
+import fr.ird.observe.maven.plugins.toolbox.ExecuteRunnerMojo;
+import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2;
+import org.nuiton.topia.persistence.script.TopiaSqlScript;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
+import org.nuiton.version.Version;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.function.BiFunction;
+
+/**
+ * to extract a single table DDL into a specific sql file.
+ * Created on 20/01/2021.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 8.0.5
+ */
+public class ExtractTable extends ExecuteRunnerMojo.MojoRunnable {
+
+ @Override
+ public void run() {
+
+ Path targetDirectory = new File(System.getProperty("compile.target.directory")).toPath();
+ Path sourceDirectory = new File(System.getProperty("compile.source.directory")).toPath();
+
+ String schemaName = getExtraProperties().get("schemaName");
+ String tableName = getExtraProperties().get("tableName");
+
+ Version modelVersion = MigrationVersionResourceProvider.get().getLastVersion();
+
+ Path dbRootPath = sourceDirectory.getParent().resolve("resources").resolve("db").resolve("migration").resolve(modelVersion.getVersion());
+ Path targetDbRootPath = targetDirectory.resolve("db").resolve("migration").resolve(modelVersion.getVersion());
+ try {
+ processScript(true, dbRootPath.resolve("observe_full-schema-H2.sql"), targetDbRootPath, schemaName, tableName);
+ processScript(false, dbRootPath.resolve("observe_full-schema-PG.sql"), targetDbRootPath, schemaName, tableName);
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ protected void processScript(boolean h2, Path incomingFullSchema, Path targetDbRootPath, String schemaName, String tableName) throws IOException {
+ String suffix = schemaName + "." + tableName;
+ Path pathFullSchema = incomingFullSchema.getParent().resolve(incomingFullSchema.toFile().getName().replace("-schema-", "-table-" + suffix+"-"));
+ log.info(String.format("Generating table %s.%s schema [%s] (from %s).", schemaName, tableName, pathFullSchema.toFile().getName(), incomingFullSchema));
+ TopiaSqlScript script = TopiaSqlScript.of(incomingFullSchema);
+ Path pathCreateSchema = pathFullSchema.getParent().resolve(pathFullSchema.toFile().getName().replace("full", "create"));
+ Path pathFinalizeSchema = pathFullSchema.getParent().resolve(pathFullSchema.toFile().getName().replace("full", "finalize"));
+ List<String> createSchemaStatements = new LinkedList<>();
+ List<String> finalizeSchemaStatements = new LinkedList<>();
+
+ String suffix2 = schemaName + "_" + tableName;
+ script.getLocation().forEach(statement -> {
+ String trim = statement.toLowerCase().trim();
+ if (trim.startsWith("create table " + suffix)) {
+ if (!h2) {
+ statement = statement.replace("data blob", "data OID");
+ }
+ createSchemaStatements.add(statement);
+ } else {
+ if (trim.startsWith("alter table " + suffix) || trim.startsWith("create index idx_" + suffix2)) {
+ finalizeSchemaStatements.add(statement);
+ }
+ }
+ });
+
+ int createStatementCount = createSchemaStatements.size();
+ int finalizeStatementCount = finalizeSchemaStatements.size();
+
+ log.info(String.format("Generated create table (%d statements) at %s.", createStatementCount, pathCreateSchema));
+ Files.write(pathCreateSchema, createSchemaStatements);
+ copyToTarget(pathCreateSchema, targetDbRootPath);
+
+ log.info(String.format("Generated finalize table (%d statements) at %s.", finalizeStatementCount, pathFinalizeSchema));
+ Files.write(pathFinalizeSchema, finalizeSchemaStatements);
+ copyToTarget(pathFinalizeSchema, targetDbRootPath);
+ }
+
+ private void copyToTarget(Path source, Path targetDbRootPath) throws IOException {
+ Path target = targetDbRootPath.resolve(source.toFile().getName());
+ Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
+ getLog().debug(String.format("Copy from %s → %s", source.toFile().getName(), target));
+ }
+}
=====================================
toolkit/maven-plugin/src/main/java/fr/ird/observe/maven/plugins/toolbox/persistence/GenerateEmptyDatabases.java
=====================================
@@ -115,11 +115,11 @@ public class GenerateEmptyDatabases extends ExecuteRunnerMojo.MojoRunnable {
log.info(String.format("Generated full schema (%d statements) at %s.", fullStatementCount, pathFullSchema));
copyToTarget(pathFullSchema, targetDbRootPath);
- log.info(String.format("Generated create schema (%d statements) at %s.", createStatementCount, pathFullSchema));
+ log.info(String.format("Generated create schema (%d statements) at %s.", createStatementCount, pathCreateSchema));
Files.write(pathCreateSchema, createSchemaStatements);
copyToTarget(pathCreateSchema, targetDbRootPath);
- log.info(String.format("Generated finalize schema (%d statements) at %s.", finalizeStatementCount, pathFullSchema));
+ log.info(String.format("Generated finalize schema (%d statements) at %s.", finalizeStatementCount, pathFinalizeSchema));
Files.write(pathFinalizeSchema, finalizeSchemaStatements);
copyToTarget(pathFinalizeSchema, targetDbRootPath);
}
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/064d69ff2e0a7044e4b28cce3…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/064d69ff2e0a7044e4b28cce3…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Dysfonctionnement de l'arbre - Closes #1763
by Tony CHEMIT 20 Jan '21
by Tony CHEMIT 20 Jan '21
20 Jan '21
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
9135411f by Tony Chemit at 2021-01-20T20:23:08+01:00
Dysfonctionnement de l'arbre - Closes #1763
- - - - -
11 changed files:
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationCapability.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationInitializer.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationTreeNodeProvider.java
- client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootNavigationTreeNodeProvider.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootNavigationTreeNodeProvider.java
- client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootNavigationTreeNodeProvider.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/TripAwareTopiaDao.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/common/TripTopiaDao.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/common/TripTopiaDao.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/NavigationServiceLocalSupport.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/TripServiceLocalSupport.java
Changes:
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationCapability.java
=====================================
@@ -75,8 +75,8 @@ public class RootNavigationCapability implements ReferenceContainerCapability<Ro
NavigationTreeConfig config = initializer.getConfig();
NavigationResult navigationResult = initializer.getNavigationResult();
List<ProgramReference> programs = initializer.getPrograms();
- List<? extends RootNavigationTreeNodeProvider> rootNodeProviders = initializer.getRootNodeProviders();
- List<? extends RootNavigationTreeNodeProvider> providers = rootNodeProviders.stream().filter(p -> config.isShowModule(p.getModule())).collect(Collectors.toList());
+ List<? extends RootNavigationTreeNodeProvider<?>> rootNodeProviders = initializer.getRootNodeProviders();
+ List<? extends RootNavigationTreeNodeProvider<?>> providers = rootNodeProviders.stream().filter(p -> config.isShowModule(p.getModule())).collect(Collectors.toList());
providers.forEach(p -> p.initRootDataNode(config, navigationResult, programs, rootNode));
if (config.isLoadReferential()) {
providers.forEach(p -> p.initRootReferentialNode(rootNode, navigationResult));
@@ -98,13 +98,13 @@ public class RootNavigationCapability implements ReferenceContainerCapability<Ro
return 0;
}
- public RootNavigationTreeNodeProvider getProvider(ProgramReference referenceType) {
+ public RootNavigationTreeNodeProvider<?> getProvider(ProgramReference referenceType) {
return getNode().getInitializer().getRootNodeProvider(referenceType);
}
public NavigationNode newChildNode(ProgramReference reference) {
RootNavigationNode node = getNode();
- RootNavigationTreeNodeProvider provider = getProvider(reference);
+ RootNavigationTreeNodeProvider<?> provider = getProvider(reference);
return provider.newChildNode(node, reference, 0);
}
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationInitializer.java
=====================================
@@ -42,7 +42,7 @@ import java.util.Objects;
* @since 8.0.1
*/
public class RootNavigationInitializer extends NavigationInitializer<RootNavigationContext> {
- private final SingletonSupplier<List<? extends RootNavigationTreeNodeProvider>> rootNodeProviders;
+ private final SingletonSupplier<List<? extends RootNavigationTreeNodeProvider<?>>> rootNodeProviders;
private final SingletonSupplier<Boolean> canLoadChildrenOnOpen;
private final NavigationTreeConfig config;
private final NavigationResult navigationResult;
@@ -73,7 +73,7 @@ public class RootNavigationInitializer extends NavigationInitializer<RootNavigat
protected void reload(NavigationContext<RootNavigationContext> context) {
}
- public final List<? extends RootNavigationTreeNodeProvider> getRootNodeProviders() {
+ public final List<? extends RootNavigationTreeNodeProvider<?>> getRootNodeProviders() {
return rootNodeProviders.get();
}
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationTreeNodeProvider.java
=====================================
@@ -30,11 +30,10 @@ import fr.ird.observe.client.datasource.editor.api.content.referential.Referenti
import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode;
import fr.ird.observe.dto.reference.DataDtoReference;
import fr.ird.observe.dto.referential.ReferentialDto;
-import fr.ird.observe.dto.referential.common.GearType;
import fr.ird.observe.dto.referential.common.ProgramReference;
import fr.ird.observe.services.service.data.NavigationResult;
-import fr.ird.observe.spi.module.BusinessModule;
import fr.ird.observe.spi.module.BusinessProject;
+import fr.ird.observe.spi.module.ObserveBusinessModule;
import java.util.Comparator;
import java.util.LinkedList;
@@ -49,19 +48,17 @@ import java.util.stream.Collectors;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 8.0
*/
-public abstract class RootNavigationTreeNodeProvider {
- public static List<RootNavigationTreeNodeProvider> PROVIDERS;
- private final BusinessModule module;
- //FIXME Add this in BusinessModule
- private final GearType gearType;
+public abstract class RootNavigationTreeNodeProvider<B extends fr.ird.observe.spi.module.BusinessModule & ObserveBusinessModule> {
+ public static List<RootNavigationTreeNodeProvider<?>> PROVIDERS;
+ private final B module;
private final int priority;
private final ImmutableList<Class<? extends NavigationNode>> acceptedNodeTypes;
private final Class<? extends DataDtoReference> acceptedType;
- public static synchronized List<RootNavigationTreeNodeProvider> getProviders() {
+ public static synchronized List<RootNavigationTreeNodeProvider<?>> getProviders() {
if (PROVIDERS == null) {
PROVIDERS = new LinkedList<>();
- for (RootNavigationTreeNodeProvider o : ServiceLoader.load(RootNavigationTreeNodeProvider.class)) {
+ for (RootNavigationTreeNodeProvider<?> o : ServiceLoader.load(RootNavigationTreeNodeProvider.class)) {
PROVIDERS.add(o);
}
PROVIDERS.sort(Comparator.comparing(RootNavigationTreeNodeProvider::priority));
@@ -69,9 +66,8 @@ public abstract class RootNavigationTreeNodeProvider {
return PROVIDERS;
}
- protected RootNavigationTreeNodeProvider(BusinessProject project, BusinessModule module, GearType gearType, ImmutableList<Class<? extends NavigationNode>> acceptedNodeTypes, Class<? extends DataDtoReference> acceptedType) {
+ protected RootNavigationTreeNodeProvider(BusinessProject project, B module, ImmutableList<Class<? extends NavigationNode>> acceptedNodeTypes, Class<? extends DataDtoReference> acceptedType) {
this.module = Objects.requireNonNull(module);
- this.gearType = gearType;
this.acceptedNodeTypes = acceptedNodeTypes;
this.acceptedType = acceptedType;
this.priority = Objects.requireNonNull(project).getModulePriority(module);
@@ -124,7 +120,7 @@ public abstract class RootNavigationTreeNodeProvider {
return priority;
}
- public BusinessModule getModule() {
+ public B getModule() {
return module;
}
@@ -140,7 +136,7 @@ public abstract class RootNavigationTreeNodeProvider {
}
public boolean accept(ProgramReference childrenReference) {
- return gearType != null && Objects.equals(gearType, childrenReference.getGearType());
+ return module.accept(childrenReference);
}
public ContentListUINavigationNode newChildNode(RootNavigationNode node, ProgramReference reference, int tripCount) {
=====================================
client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootNavigationTreeNodeProvider.java
=====================================
@@ -26,21 +26,18 @@ import com.google.auto.service.AutoService;
import com.google.common.collect.ImmutableList;
import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider;
import fr.ird.observe.spi.module.ObserveBusinessProject;
+import fr.ird.observe.spi.module.common.BusinessModule;
/**
* @author Tony Chemit - dev(a)tchemit.fr
* @since 8.0
*/
@AutoService(RootNavigationTreeNodeProvider.class)
-public class CommonRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider {
+public class CommonRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider<BusinessModule> {
public CommonRootNavigationTreeNodeProvider() {
- super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getCommonBusinessModule(), null,
+ super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getCommonBusinessModule(),
ImmutableList.of(fr.ird.observe.client.datasource.editor.common.referential.common.ReferentialHomeUINavigationNode.class), null);
}
-// @Override
-// public void initRootDataNode(NavigationTreeConfig config, NavigationResult navigationResult, List<ProgramReference> programs, RootNavigationNode rootNode) {
-// }
-
}
=====================================
client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootNavigationTreeNodeProvider.java
=====================================
@@ -28,19 +28,19 @@ import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavi
import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider;
import fr.ird.observe.client.datasource.editor.ll.data.common.TripListUINavigationNode;
import fr.ird.observe.dto.data.ll.common.TripReference;
-import fr.ird.observe.dto.referential.common.GearType;
import fr.ird.observe.dto.referential.common.ProgramReference;
import fr.ird.observe.spi.module.ObserveBusinessProject;
+import fr.ird.observe.spi.module.ll.BusinessModule;
/**
* @author Tony Chemit - dev(a)tchemit.fr
* @since 8.0
*/
@AutoService(RootNavigationTreeNodeProvider.class)
-public class LlRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider {
+public class LlRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider<BusinessModule> {
public LlRootNavigationTreeNodeProvider() {
- super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getLlBusinessModule(), GearType.longline,
+ super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getLlBusinessModule(),
ImmutableList.of(TripListUINavigationNode.class,
fr.ird.observe.client.datasource.editor.ll.referential.common.ReferentialHomeUINavigationNode.class,
fr.ird.observe.client.datasource.editor.ll.referential.landing.ReferentialHomeUINavigationNode.class,
=====================================
client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootNavigationTreeNodeProvider.java
=====================================
@@ -28,19 +28,19 @@ import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavi
import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider;
import fr.ird.observe.client.datasource.editor.ps.data.common.TripListUINavigationNode;
import fr.ird.observe.dto.data.ll.common.TripReference;
-import fr.ird.observe.dto.referential.common.GearType;
import fr.ird.observe.dto.referential.common.ProgramReference;
import fr.ird.observe.spi.module.ObserveBusinessProject;
+import fr.ird.observe.spi.module.ps.BusinessModule;
/**
* @author Tony Chemit - dev(a)tchemit.fr
* @since 8.0
*/
@AutoService(RootNavigationTreeNodeProvider.class)
-public class PsRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider {
+public class PsRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider<BusinessModule> {
public PsRootNavigationTreeNodeProvider() {
- super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getPsBusinessModule(), GearType.seine,
+ super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getPsBusinessModule(),
ImmutableList.of(TripListUINavigationNode.class,
fr.ird.observe.client.datasource.editor.ps.referential.common.ReferentialHomeUINavigationNode.class,
fr.ird.observe.client.datasource.editor.ps.referential.observation.ReferentialHomeUINavigationNode.class),
@@ -49,6 +49,6 @@ public class PsRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProv
@Override
public TripListUINavigationNode newChildNode(RootNavigationNode node, ProgramReference reference, int tripCount) {
- return TripListUINavigationNode.create(reference, (int) tripCount);
+ return TripListUINavigationNode.create(reference, tripCount);
}
}
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/TripAwareTopiaDao.java
=====================================
@@ -62,7 +62,7 @@ public interface TripAwareTopiaDao<D extends DataDto & fr.ird.observe.dto.data.T
List<E> getMatchingTripsVesselWithinDateRange(String id, String vesselId, Date startDate, Date endDate);
- List<R> getChildren(ReferentialLocale referentialLocale, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById);
+ List<R> getChildren(ReferentialLocale referentialLocale, String programId, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById);
default void fillTripCountByProgramId(Map<String, Integer> map) {
TopiaEntityEnum entityEnum = ((AbstractObserveTopiaDao<?>) this).getTopiaEntityEnum();
@@ -72,7 +72,7 @@ public interface TripAwareTopiaDao<D extends DataDto & fr.ird.observe.dto.data.T
default List<E> getChildren(Program parent, Date lastUpdate) {
if (lastUpdate == null) {
- return forProperties(TripAware.PROPERTY_PROGRAM, parent).findAll();
+ return forEquals(TripAware.PROPERTY_PROGRAM, parent).findAll();
}
return forLastUpdateDateGreaterThan(lastUpdate).addEquals(TripAware.PROPERTY_PROGRAM, parent).findAll();
}
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ll/common/TripTopiaDao.java
=====================================
@@ -55,7 +55,7 @@ import java.util.stream.Collectors;
public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwareTopiaDao<TripDto, TripReference, Trip> {
- public static final String GET_TRIP_REFERENCES = "SELECT" +
+ public static final String GET_ALL_TRIP_REFERENCES = "SELECT" +
" t.program," +
" t.topiaId," +
" t.startDate," +
@@ -66,6 +66,19 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
" t.observationsAvailability," +
" t.logbookAvailability" +
" FROM %s.%s t;";
+ public static final String GET_TRIP_REFERENCES = "SELECT" +
+ " t.program," +
+ " t.topiaId," +
+ " t.startDate," +
+ " t.endDate," +
+ " t.tripType," +
+ " t.observer," +
+ " t.vessel," +
+ " t.observationsAvailability," +
+ " t.logbookAvailability" +
+ " FROM %s.%s t" +
+ " WHERE t.program = '%s';";
+
private static class TripMapActivityObsPointQuery extends TopiaSqlQuery<List<TripMapPoint>> {
@@ -269,7 +282,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
}
@Override
- public List<TripReference> getChildren(ReferentialLocale referentialLocale, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById) {
+ public List<TripReference> getChildren(ReferentialLocale referentialLocale, String programId, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById) {
String dbTableName = getTopiaEntityEnum().dbTableName();
Map<String, Integer> observationActivityCount = new TreeMap<>();
@@ -281,12 +294,16 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
Map<String, Integer> landingCount = new TreeMap<>();
fillCount(getCountSql(ObserveEntityEnum.ll_landing_Landing, dbTableName), landingCount);
- String sql = String.format(GET_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName);
-
+ String sql;
+ if (programId == null) {
+ sql = String.format(GET_ALL_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName);
+ } else {
+ sql = String.format(GET_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName, programId);
+ }
TopiaSqlQuery<TripReference> query = TopiaSqlQuery.wrap(sql, resultSet -> {
TripDto dto = new TripDto();
- String programId = resultSet.getString(1);
- dto.setProgram(programById.get(programId));
+ String thisProgramId = resultSet.getString(1);
+ dto.setProgram(programById.get(thisProgramId));
String id = resultSet.getString(2);
dto.setId(id);
dto.setStartDate(resultSet.getDate(3));
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ps/common/TripTopiaDao.java
=====================================
@@ -59,7 +59,7 @@ import java.util.stream.Collectors;
*/
public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwareTopiaDao<TripDto, TripReference, Trip> {
- public static final String GET_TRIP_REFERENCES = "SELECT" +
+ public static final String GET_ALL_TRIP_REFERENCES = "SELECT" +
" t.program," +
" t.topiaId," +
" t.startDate," +
@@ -68,6 +68,16 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
" t.vessel" +
" FROM %s.%s t;";
+ public static final String GET_TRIP_REFERENCES = "SELECT" +
+ " t.program," +
+ " t.topiaId," +
+ " t.startDate," +
+ " t.endDate," +
+ " t.observer," +
+ " t.vessel" +
+ " FROM %s.%s t" +
+ " WHERE t.program = '%s';";
+
private static class TripMapActivityObservationPointQuery extends TopiaSqlQuery<TripMapPoint> {
private static final String SQL = "SELECT" +
@@ -169,14 +179,20 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
}
@Override
- public List<TripReference> getChildren(ReferentialLocale referentialLocale, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById) {
+ public List<TripReference> getChildren(ReferentialLocale referentialLocale, String programId, ImmutableMap<String, ProgramReference> programById, ImmutableMap<String, PersonReference> personById, ImmutableMap<String, VesselReference> vesselById) {
String dbTableName = getTopiaEntityEnum().dbTableName();
- String sql = String.format(GET_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName);
+
+ String sql;
+ if (programId == null) {
+ sql = String.format(GET_ALL_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName);
+ } else {
+ sql = String.format(GET_TRIP_REFERENCES, getTopiaEntityEnum().dbSchemaName(), dbTableName, programId);
+ }
Map<String, Integer> observationRouteCount = new TreeMap<>();
fillCount(getCountSql(ObserveEntityEnum.ps_observation_Route, dbTableName), observationRouteCount);
TopiaSqlQuery<TripReference> query = TopiaSqlQuery.wrap(sql, resultSet -> {
- String programId = resultSet.getString(1);
+ String thisProgramId = resultSet.getString(1);
String id = resultSet.getString(2);
Integer routeCount = observationRouteCount.getOrDefault(id, 0);
@@ -186,7 +202,7 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> implements TripAwar
return routeCount;
}
};
- dto.setProgram(programById.get(programId));
+ dto.setProgram(programById.get(thisProgramId));
dto.setId(id);
dto.setStartDate(resultSet.getDate(3));
dto.setEndDate(resultSet.getDate(4));
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/NavigationServiceLocalSupport.java
=====================================
@@ -113,12 +113,12 @@ class NavigationServiceLocalSupport extends ObserveServiceLocal implements Navig
ArrayListMultimap<String, fr.ird.observe.dto.data.ll.common.TripReference> tripLlByProgram = ArrayListMultimap.create();
if (canReadData) {
if (loadPs) {
- List<fr.ird.observe.dto.data.ps.common.TripReference> trips = fr.ird.observe.entities.data.ps.common.Trip.SPI.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, programById, personById, vesselById);
+ List<fr.ird.observe.dto.data.ps.common.TripReference> trips = fr.ird.observe.entities.data.ps.common.Trip.SPI.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, null, programById, personById, vesselById);
trips.forEach(t -> tripPsByProgram.put(t.getProgram().getId(), t));
}
if (loadLl) {
- List<fr.ird.observe.dto.data.ll.common.TripReference> tripLl = fr.ird.observe.entities.data.ll.common.Trip.SPI.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, programById, personById, vesselById);
+ List<fr.ird.observe.dto.data.ll.common.TripReference> tripLl = fr.ird.observe.entities.data.ll.common.Trip.SPI.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, null, programById, personById, vesselById);
tripLl.forEach(t -> tripLlByProgram.put(t.getProgram().getId(), t));
}
}
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/TripServiceLocalSupport.java
=====================================
@@ -182,8 +182,7 @@ public abstract class TripServiceLocalSupport<D extends OpenableDto & fr.ird.obs
ImmutableSet<VesselReference> vessels = Vessel.toReferenceSet(referentialLocale, getTopiaPersistenceContext(), null).toSet();
ImmutableMap<String, VesselReference> vesselById = Maps.uniqueIndex(vessels, VesselReference::getId);
-
- List<R> references = spi.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, programById, personById, vesselById);
+ List<R> references = spi.getDao(getTopiaPersistenceContext()).getChildren(referentialLocale, parentId, programById, personById, vesselById);
return DataDtoReferenceSet.of(spi.toReferenceType(), references, now());
}
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/9135411f689f22614ef9f6c4f…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/9135411f689f22614ef9f6c4f…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][pages] Site checkin for project ObServe :: Pom
by Tony CHEMIT 20 Jan '21
by Tony CHEMIT 20 Jan '21
20 Jan '21
Tony CHEMIT pushed to branch pages at ultreiaio / ird-observe
Commits:
5b1cbf1b by 166231 at 2021-01-20T15:09:59+00:00
Site checkin for project ObServe :: Pom
- - - - -
3 changed files:
- administration-web.html
- architecture-logicielle.html
- + css/apache-maven-fluido-1.8.min.css
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/5b1cbf1b2c53156ab71dc5e7c…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/5b1cbf1b2c53156ab71dc5e7c…
You're receiving this email because of your account on gitlab.com.
1
0