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] 3 commits: Add referential replication order more easy from topia application context - See #1691
by Tony CHEMIT 22 Dec '20
by Tony CHEMIT 22 Dec '20
22 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
d0cee04c by Tony Chemit at 2020-12-22T19:35:16+01:00
Add referential replication order more easy from topia application context - See #1691
- - - - -
17341bb8 by Tony Chemit at 2020-12-22T19:37:31+01:00
Add referential replication order more easy from topia application context - Closes #1691
- - - - -
1acf1864 by Tony Chemit at 2020-12-22T19:37:38+01:00
fix typo
- - - - -
8 changed files:
- models/persistence/src/main/java/fr/ird/observe/entities/ObserveTopiaApplicationContext.java
- models/persistence/src/main/java/fr/ird/observe/entities/ObserveTopiaEntitySqlModelSupportImpl.java
- server/core/src/main/filtered-resources/mapping
- services/api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java
- services/api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService.java
- services/api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeResult.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceLocal.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/actions/synchro/referential/sql/ReplaceSqlStatementGenerator.java
Changes:
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/ObserveTopiaApplicationContext.java
=====================================
@@ -22,6 +22,8 @@ package fr.ird.observe.entities;
* #L%
*/
+import com.google.common.collect.ImmutableSet;
+import fr.ird.observe.dto.referential.ReferentialDto;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hibernate.tool.hbm2ddl.SchemaExport;
@@ -165,6 +167,10 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
return getTopiaEntitySqlModelSupport().getSqlModel();
}
+ public ImmutableSet<Class<? extends ReferentialDto>> referentialForReplicationDto() {
+ return getTopiaEntitySqlModelSupport().referentialForReplicationDto();
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/ObserveTopiaEntitySqlModelSupportImpl.java
=====================================
@@ -22,7 +22,12 @@ package fr.ird.observe.entities;
* #L%
*/
+import com.google.common.collect.ImmutableSet;
+import fr.ird.observe.dto.referential.ReferentialDto;
import fr.ird.observe.entities.referential.ReferentialEntity;
+import fr.ird.observe.spi.PersistenceBusinessProject;
+import fr.ird.observe.spi.context.ReferentialDtoEntityContext;
+import io.ultreia.java4all.lang.Objects2;
import org.nuiton.topia.persistence.metadata.sql.TopiaEntitySqlDescriptor;
import org.nuiton.topia.persistence.metadata.sql.TopiaEntitySqlDescriptors;
@@ -34,6 +39,8 @@ import org.nuiton.topia.persistence.metadata.sql.TopiaEntitySqlDescriptors;
*/
public class ObserveTopiaEntitySqlModelSupportImpl extends ObserveTopiaEntitySqlModelSupport {
+ private ImmutableSet<Class<? extends ReferentialDto>> referentialForReplication;
+
public TopiaEntitySqlDescriptors dataPsTripForReplication() {
return getSqlModel().getReplicationOrderByEntryPointDescriptors(fr.ird.observe.entities.data.ps.common.Trip.class.getName());
}
@@ -64,4 +71,21 @@ public class ObserveTopiaEntitySqlModelSupportImpl extends ObserveTopiaEntitySql
return getSqlModel().getDescriptor(fqn);
}
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ public ImmutableSet<Class<? extends ReferentialDto>> referentialForReplicationDto() {
+ if (referentialForReplication == null) {
+ ImmutableSet.Builder<Class<? extends ReferentialDto>> builder = ImmutableSet.builder();
+ for (TopiaEntitySqlDescriptor descriptor : getSqlModel().getReplicationOrderWithStandaloneDescriptors()) {
+ String entityName = descriptor.getTable().getEntityName();
+ Class<? extends ReferentialEntity> entityType = Objects2.forName(entityName);
+ ReferentialDtoEntityContext spi = PersistenceBusinessProject.fromReferentialEntity(entityType);
+ if (spi != null) {
+ Class<? extends ReferentialDto> dtoType = spi.toDtoType();
+ builder.add(dtoType);
+ }
+ }
+ referentialForReplication = builder.build();
+ }
+ return referentialForReplication;
+ }
}
=====================================
server/core/src/main/filtered-resources/mapping
=====================================
@@ -81,6 +81,7 @@ POST /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynch
GET /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService/filterIdsUsedInLocalSource v1.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalServiceRestApi.filterIdsUsedInLocalSource
GET /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService/generateSqlRequests v1.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalServiceRestApi.generateSqlRequests
GET /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService/getLocalSourceReferentialToDelete v1.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalServiceRestApi.getLocalSourceReferentialToDelete
+GET /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService/referentialReplicationOrder v1.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalServiceRestApi.referentialReplicationOrder
POST /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService/updateLastUpdateDates v1.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalServiceRestApi.updateLastUpdateDates
POST /api/v1/actions/synchro/referential/ng/ReferentialSynchronizeService/executeSqlListRequest v1.actions.synchro.referential.ng.ReferentialSynchronizeServiceRestApi.executeSqlListRequest
POST /api/v1/actions/synchro/referential/ng/ReferentialSynchronizeService/produceSqlListRequest v1.actions.synchro.referential.ng.ReferentialSynchronizeServiceRestApi.produceSqlListRequest
=====================================
services/api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java
=====================================
@@ -78,6 +78,8 @@ public class UnidirectionalReferentialSynchronizeEngine {
.addAll(rightDiffStates.keySet())
.build();
+ ImmutableSet<Class<? extends ReferentialDto>> replicationOrder = localService.referentialReplicationOrder();
+
ImmutableSet.Builder<UnidirectionalReferentialSynchronizeRequest.Builder<?>> referentialSynchronizeRequestBuilders = ImmutableSet.builder();
UnidirectionalReferentialSynchronizeCallbackRequests callbackRequests = new UnidirectionalReferentialSynchronizeCallbackRequests();
@@ -86,7 +88,7 @@ public class UnidirectionalReferentialSynchronizeEngine {
ObserveBusinessProject businessProject = ObserveBusinessProject.get();
- for (Class<? extends ReferentialDto> dtoType : businessProject.getReferentialTypes()) {
+ for (Class<? extends ReferentialDto> dtoType : replicationOrder) {
if (types.contains(dtoType)) {
@SuppressWarnings("rawtypes") DtoReferenceDefinition referentialDefinition = businessProject.getOptionalReferenceDefinition(dtoType).orElseThrow(IllegalStateException::new);
@@ -141,7 +143,7 @@ public class UnidirectionalReferentialSynchronizeEngine {
result.flushRequest(referentialSynchronizeRequest);
- Set<String> generatedSqlRequests = localService.generateSqlRequests(referentialSynchronizeRequest);
+ List<String> generatedSqlRequests = localService.generateSqlRequests(referentialSynchronizeRequest);
for (String sqlStatement : generatedSqlRequests) {
if (sqlStatement.startsWith("INSERT")) {
=====================================
services/api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService.java
=====================================
@@ -22,6 +22,7 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy;
* #L%
*/
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import fr.ird.observe.dto.reference.ReferentialDtoReferenceSet;
@@ -43,6 +44,14 @@ import io.ultreia.java4all.http.spi.Post;
*/
public interface UnidirectionalReferentialSynchronizeLocalService extends ObserveService {
+ /**
+ * @return the replication order to insert data
+ * @since 8.0.2
+ */
+ @MethodCredential(Permission.READ_REFERENTIAL)
+ @Get
+ ImmutableSet<Class<? extends ReferentialDto>> referentialReplicationOrder();
+
/**
* Pour un référentiel d'un type donné (son nom est donné), détecte les référentiels dont
* les identifiants sont passés en paramètres qui sont réellement utilisés dans la source locale.
@@ -73,16 +82,16 @@ public interface UnidirectionalReferentialSynchronizeLocalService extends Observ
*
* @param <D> type des référentiels à traiter
* @param request la demande des actions à produire pour un référentiel donné
- * @return l'ensemble des requètes sql à appliquer.
+ * @return l'ensemble des requêtes sql à appliquer.
*/
@MethodCredential(Permission.READ_REFERENTIAL)
@Get
- <D extends ReferentialDto> ImmutableSet<String> generateSqlRequests(UnidirectionalReferentialSynchronizeRequest<D> request);
+ <D extends ReferentialDto> ImmutableList<String> generateSqlRequests(UnidirectionalReferentialSynchronizeRequest<D> request);
/**
- * Pour appliquer les requètes sql de mise à jour du réferentiel.
+ * Pour appliquer les requêtes sql de mise à jour du référentiel.
*
- * @param sqlRequests les requètes sql à appliquer
+ * @param sqlRequests les requêtes sql à appliquer
*/
@MethodCredential(Permission.READ_REFERENTIAL)
//FIXME::Security Il faut introduire une nouvelle permission EditReferentialPermission et ici bien utiliser WriteReferentialPermission
=====================================
services/api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeResult.java
=====================================
@@ -23,14 +23,12 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy;
*/
import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.Multimap;
import fr.ird.observe.dto.ObserveDto;
import fr.ird.observe.dto.referential.ReferentialDto;
import org.apache.commons.lang3.tuple.Pair;
-import java.util.Collection;
import java.util.LinkedHashSet;
-import java.util.Map;
+import java.util.List;
import java.util.Set;
/**
@@ -44,10 +42,10 @@ import java.util.Set;
public class UnidirectionalReferentialSynchronizeResult implements ObserveDto {
private final Set<Class<? extends ReferentialDto>> referentialNames;
- private final Multimap<Class<? extends ReferentialDto>, String> referentialAdded;
- private final Multimap<Class<? extends ReferentialDto>, String> referentialUpdated;
- private final Multimap<Class<? extends ReferentialDto>, Pair<String, String>> referentialReplaced;
- private final Multimap<Class<? extends ReferentialDto>, String> referentialRemoved;
+ private final ArrayListMultimap<Class<? extends ReferentialDto>, String> referentialAdded;
+ private final ArrayListMultimap<Class<? extends ReferentialDto>, String> referentialUpdated;
+ private final ArrayListMultimap<Class<? extends ReferentialDto>, Pair<String, String>> referentialReplaced;
+ private final ArrayListMultimap<Class<? extends ReferentialDto>, String> referentialRemoved;
public UnidirectionalReferentialSynchronizeResult() {
this.referentialNames = new LinkedHashSet<>();
@@ -65,58 +63,36 @@ public class UnidirectionalReferentialSynchronizeResult implements ObserveDto {
return referentialNames;
}
- public Collection<String> getReferentialAdded(Class<? extends ReferentialDto> referentialName) {
+ public List<String> getReferentialAdded(Class<? extends ReferentialDto> referentialName) {
return referentialAdded.get(referentialName);
}
- public Collection<String> getReferentialUpdated(Class<? extends ReferentialDto> referentialName) {
+ public List<String> getReferentialUpdated(Class<? extends ReferentialDto> referentialName) {
return referentialUpdated.get(referentialName);
}
- public Collection<Pair<String, String>> getReferentialReplaced(Class<? extends ReferentialDto> referentialName) {
+ public List<Pair<String, String>> getReferentialReplaced(Class<? extends ReferentialDto> referentialName) {
return referentialReplaced.get(referentialName);
}
- public Collection<String> getReferentialRemoved(Class<? extends ReferentialDto> referentialName) {
+ public List<String> getReferentialRemoved(Class<? extends ReferentialDto> referentialName) {
return referentialRemoved.get(referentialName);
}
void flushRequest(UnidirectionalReferentialSynchronizeRequest<?> referentialSynchronizeRequest) {
-
Class<? extends ReferentialDto> referentialName = referentialSynchronizeRequest.getReferentialName();
-
if (referentialSynchronizeRequest.withReferentialToAdd()) {
-
- for (ReferentialDto referentialDto : referentialSynchronizeRequest.getReferentialToAdd()) {
- addReferentialAdded(referentialName, referentialDto.getId());
- }
-
+ referentialSynchronizeRequest.getReferentialToAdd().forEach(referentialDto -> addReferentialAdded(referentialName, referentialDto.getId()));
}
-
if (referentialSynchronizeRequest.withReferentialToUpdate()) {
-
- for (ReferentialDto referentialDto : referentialSynchronizeRequest.getReferentialToUpdate()) {
- addReferentialUpdated(referentialName, referentialDto.getId());
- }
-
+ referentialSynchronizeRequest.getReferentialToUpdate().forEach(referentialDto -> addReferentialUpdated(referentialName, referentialDto.getId()));
}
-
if (referentialSynchronizeRequest.withReferentialToRemove()) {
-
- for (String id : referentialSynchronizeRequest.getReferentialToRemove()) {
- addReferentialRemoved(referentialName, id);
- }
-
+ referentialSynchronizeRequest.getReferentialToRemove().forEach(id -> addReferentialRemoved(referentialName, id));
}
-
if (referentialSynchronizeRequest.withReferentialToReplace()) {
-
- for (Map.Entry<String, String> entry : referentialSynchronizeRequest.getReferentialToReplace().entrySet()) {
- addReferentialReplaced(referentialName, entry.getKey(), entry.getValue());
- }
-
+ referentialSynchronizeRequest.getReferentialToReplace().forEach((key, value) -> addReferentialReplaced(referentialName, key, value));
}
-
}
private void addReferentialAdded(Class<? extends ReferentialDto> referentialName, String id) {
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceLocal.java
=====================================
@@ -32,7 +32,6 @@ import fr.ird.observe.entities.ObserveEntityEnum;
import fr.ird.observe.entities.referential.ReferentialEntity;
import fr.ird.observe.services.local.ObserveServiceContextLocal;
import fr.ird.observe.services.local.service.ObserveServiceLocal;
-import fr.ird.observe.services.local.service.actions.synchro.referential.sql.ApplySqlRequestWork;
import fr.ird.observe.services.local.service.actions.synchro.referential.sql.DeleteSqlStatementGenerator;
import fr.ird.observe.services.local.service.actions.synchro.referential.sql.InsertSqlStatementGenerator;
import fr.ird.observe.services.local.service.actions.synchro.referential.sql.ReplaceSqlStatementGenerator;
@@ -45,12 +44,18 @@ import fr.ird.observe.services.service.usage.DtoUsageCountResult;
import fr.ird.observe.services.service.usage.UsageService;
import fr.ird.observe.spi.ObservePersistenceBusinessProject;
import fr.ird.observe.spi.context.ReferentialDtoEntityContext;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.nuiton.topia.persistence.TopiaDao;
import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
-import org.nuiton.topia.persistence.support.TopiaSqlWork;
+import org.nuiton.topia.persistence.script.SqlScriptReader;
+import org.nuiton.topia.persistence.script.TopiaSqlScript;
+import java.io.IOException;
+import java.nio.file.Path;
import java.util.LinkedHashSet;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -62,6 +67,7 @@ import java.util.Set;
* @since 5.0
*/
public class UnidirectionalReferentialSynchronizeLocalServiceLocal extends ObserveServiceLocal implements UnidirectionalReferentialSynchronizeLocalService {
+ private static final Logger log = LogManager.getLogger(UnidirectionalReferentialSynchronizeLocalServiceLocal.class);
private LastUpdateDateService lastUpdateDateService;
private UsageService usageService;
@@ -73,6 +79,11 @@ public class UnidirectionalReferentialSynchronizeLocalServiceLocal extends Obser
usageService = serviceContext.newService(UsageService.class);
}
+ @Override
+ public ImmutableSet<Class<? extends ReferentialDto>> referentialReplicationOrder() {
+ return serviceContext.getTopiaApplicationContext().referentialForReplicationDto();
+ }
+
@Override
public <D extends ReferentialDto> ImmutableSet<String> filterIdsUsedInLocalSource(Class<D> dtoType, ImmutableSet<String> ids) {
Set<String> result = new LinkedHashSet<>();
@@ -89,13 +100,12 @@ public class UnidirectionalReferentialSynchronizeLocalServiceLocal extends Obser
public <D extends ReferentialDto, R extends ReferentialDtoReference> ReferentialDtoReferenceSet<R> getLocalSourceReferentialToDelete(Class<D> dtoType, ImmutableSet<String> ids) {
ReferentialDtoEntityContext<D, R, ?, ?> modelContext = ObservePersistenceBusinessProject.fromReferentialDto(dtoType);
Class<? extends ReferentialEntity<D, R>> entityType = modelContext.toEntityType();
- Class<R> referenceType = modelContext.toReferenceType();
- return getLocalSourceReferentialToDelete0(entityType, referenceType, ids);
+ return getLocalSourceReferentialToDelete0(entityType, ids);
}
@Override
- public <D extends ReferentialDto> ImmutableSet<String> generateSqlRequests(UnidirectionalReferentialSynchronizeRequest<D> request) {
- Set<String> result = new LinkedHashSet<>();
+ public <D extends ReferentialDto> ImmutableList<String> generateSqlRequests(UnidirectionalReferentialSynchronizeRequest<D> request) {
+ List<String> result = new LinkedList<>();
Class<D> dtoType = request.getReferentialName();
Class<ReferentialEntity<D, ?>> entityType = ObservePersistenceBusinessProject.fromReferentialDtoWeak(dtoType).toEntityType();
ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(entityType);
@@ -137,13 +147,23 @@ public class UnidirectionalReferentialSynchronizeLocalServiceLocal extends Obser
result.addAll(sql);
}
}
- return ImmutableSet.copyOf(result);
+ return ImmutableList.copyOf(result);
}
@Override
public void applySqlRequests(ImmutableSet<String> sqlRequests) {
- TopiaSqlWork applySqlWork = new ApplySqlRequestWork(sqlRequests);
- getTopiaPersistenceContext().getSqlSupport().doSqlWork(applySqlWork);
+
+ Path scriptPath = serviceContext.getTemporaryDirectoryRoot().toPath().resolve("apply-UnidirectionalReferentialSynchronize-" + serviceContext.now().getTime() + "-sql");
+
+ TopiaSqlScript topiaSqlScript = TopiaSqlScript.of(scriptPath);
+ topiaSqlScript.setLocation(() -> SqlScriptReader.of(sqlRequests));
+ try {
+ topiaSqlScript.copy(scriptPath);
+ } catch (IOException e) {
+ throw new IllegalStateException("Can't write script at: " + scriptPath, e);
+ }
+ log.info(String.format("Will execute script (with %d statement(s): %s", sqlRequests.size(), scriptPath));
+ getTopiaPersistenceContext().executeSqlScript(topiaSqlScript);
}
@Override
@@ -157,7 +177,7 @@ public class UnidirectionalReferentialSynchronizeLocalServiceLocal extends Obser
return usageCount.getCount().values().stream().reduce(Long::sum).orElse(0L);
}
- private <E extends ReferentialEntity<D, R>, D extends ReferentialDto, R extends ReferentialDtoReference> ReferentialDtoReferenceSet<R> getLocalSourceReferentialToDelete0(Class<E> entityType, Class<R> referenceType, ImmutableSet<String> ids) {
+ private <E extends ReferentialEntity<D, R>, D extends ReferentialDto, R extends ReferentialDtoReference> ReferentialDtoReferenceSet<R> getLocalSourceReferentialToDelete0(Class<E> entityType, ImmutableSet<String> ids) {
TopiaDao<E> dao = getTopiaPersistenceContext().getDao(entityType);
List<E> entities = dao.forTopiaIdIn(ids).findAll();
ReferentialDtoEntityContext<D, R, E, ?> spi = ObservePersistenceBusinessProject.fromReferentialEntity(entityType);
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/actions/synchro/referential/sql/ReplaceSqlStatementGenerator.java
=====================================
@@ -70,7 +70,7 @@ public class ReplaceSqlStatementGenerator {
for (TopiaMetadataAssociation replacementStruct : associations) {
Class<? extends TopiaEntity> entityType = ObserveEntityEnum.valueOf(replacementStruct.getOwner().getType()).getContract();
if (ReferentialEntity.class.isAssignableFrom(entityType)) {
- // do not update referentials associations (see https://gitlab.com/ultreiaio/ird-observe/issues/1065)
+ // do not update referential associations (see https://gitlab.com/ultreiaio/ird-observe/issues/1065)
continue;
}
String sql = SqlStatements.generateAssociationUpdateStatement(replacementStruct, sourceId, replacementId);
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/5ffad0061b1ace8710dd1c0a…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/5ffad0061b1ace8710dd1c0a…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Ajouter un onglet cartographie dans la configuration - Closes #1689
by Tony CHEMIT 22 Dec '20
by Tony CHEMIT 22 Dec '20
22 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
5ffad006 by Tony Chemit at 2020-12-22T16:26:21+01:00
Ajouter un onglet cartographie dans la configuration - Closes #1689
- - - - -
6 changed files:
- client/core/src/main/i18n/getters/java.getter
- client/core/src/main/java/fr/ird/observe/client/main/body/ClientConfigUI.java
- client/datasource/editor/api/src/main/i18n/getters/jaxx.getter
- 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
Changes:
=====================================
client/core/src/main/i18n/getters/java.getter
=====================================
@@ -7,6 +7,8 @@ observe.config.category.application
observe.config.category.application.description
observe.config.category.expert
observe.config.category.expert.description
+observe.config.category.map
+observe.config.category.map.description
observe.config.category.observation
observe.config.category.observation.description
observe.config.category.speciesList.longline
=====================================
client/core/src/main/java/fr/ird/observe/client/main/body/ClientConfigUI.java
=====================================
@@ -107,7 +107,7 @@ public class ClientConfigUI extends JXTitledPanel {
private final SpeciesListsTableCellRenderer speciesListsTableCellRenderer;
protected ObserveConfigUIBuilder(ClientConfig config,
- ObserveUICallbackManager uiCallbackManager, SpeciesListTableCellEditor speciesListTableCellEditor,
+ SpeciesListTableCellEditor speciesListTableCellEditor,
SpeciesListsTableCellRenderer speciesListsTableCellRenderer) {
super(config, config.get(), config.get().getUserConfigFile());
this.speciesListTableCellEditor = speciesListTableCellEditor;
@@ -189,7 +189,6 @@ public class ClientConfigUI extends JXTitledPanel {
@Override
public void setValue(Object value) {
if (value instanceof String) {
-
value = SpeciesListTableCellEditor.this.entityMap.get(String.valueOf(value));
}
component.setSelectedItem((SpeciesListReference) value);
@@ -197,10 +196,8 @@ public class ClientConfigUI extends JXTitledPanel {
@Override
public Object getCellEditorValue() {
- String result = null;
SpeciesListReference selectedItem = component.getModel().getSelectedItem();
- result = selectedItem.getId();
- return result;
+ return selectedItem.getId();
}
@Override
@@ -216,15 +213,12 @@ public class ClientConfigUI extends JXTitledPanel {
public boolean stopCellEditing() {
if (component.getConfig().isEditable()) {
// Commit edited value.
- component.getCombobox().actionPerformed(
- new ActionEvent(SpeciesListTableCellEditor.this, 0, ""));
+ component.getCombobox().actionPerformed(new ActionEvent(SpeciesListTableCellEditor.this, 0, ""));
}
return super.stopCellEditing();
}
};
-
}
-
}
private void quit() {
@@ -232,24 +226,17 @@ public class ClientConfigUI extends JXTitledPanel {
}
private ObserveConfigUIBuilder buildUI(ObserveUICallbackManager uiCallbackManager, ClientConfig config, ObserveSwingDataSource dataSource, DecoratorService decoratorService) {
-
SpeciesListTableCellEditor editor = null;
SpeciesListsTableCellRenderer renderer = null;
-
if (dataSource != null && dataSource.isOpen()) {
-
Set<SpeciesListReference> speciesLists = dataSource.getReferentialReferences(SpeciesListReference.class);
-
Map<String, SpeciesListReference> speciesListMap = ReferentialDtoReference.splitById(speciesLists);
-
ReferentialReferenceDecorator<SpeciesListReference> referenceDecorator = decoratorService.getReferentialReferenceDecorator(SpeciesListReference.class);
-
editor = new SpeciesListTableCellEditor(speciesLists, speciesListMap, referenceDecorator);
renderer = new SpeciesListsTableCellRenderer(speciesListMap, referenceDecorator);
-
}
- ObserveConfigUIBuilder helper = new ObserveConfigUIBuilder(config, uiCallbackManager, editor, renderer);
+ ObserveConfigUIBuilder helper = new ObserveConfigUIBuilder(config, editor, renderer);
uiCallbackManager.getCallbacks().forEach(helper::registerCallBack);
@@ -264,6 +251,7 @@ public class ClientConfigUI extends JXTitledPanel {
addApplicationOptions(helper);
addUiOptions(helper);
addNavigationOptions(helper);
+ addMapOptions(helper);
addDataOptions(helper, dataSource);
addExpertOptions(helper);
addTechnicalOptions(helper);
@@ -304,6 +292,13 @@ public class ClientConfigUI extends JXTitledPanel {
helper.addOption(ClientConfigOption.DEFAULT_DB_MODE);
helper.addOption(ClientConfigOption.DEFAULT_CREATION_MODE);
helper.addOption(ClientConfigOption.STORE_REMOTE_STORAGE);
+ }
+
+ private void addMapOptions(ObserveConfigUIBuilder helper) {
+
+ helper.addCategory(n("observe.config.category.map"),
+ n("observe.config.category.map.description"),
+ "ui");
helper.addOption(ClientConfigOption.MAP_BACKGROUND_COLOR);
ClientConfig.MAP_LAYERS.forEach(helper::addOption);
=====================================
client/datasource/editor/api/src/main/i18n/getters/jaxx.getter
=====================================
@@ -69,4 +69,3 @@ observe.ui.usage.action.shouldReplace
observe.ui.usage.replaceTitle
observe.ui.usage.usageTitle
observe.ui.view.message
-observe.ui.view.navigation
=====================================
client/i18n/src/main/i18n/translations/observe_en_GB.properties
=====================================
@@ -39,6 +39,8 @@ observe.config.category.application=Application
observe.config.category.application.description=Application options
observe.config.category.expert=Expert
observe.config.category.expert.description=Export mode options
+observe.config.category.map=Map
+observe.config.category.map.description=Maps configuration
observe.config.category.observation=Qualification of observations
observe.config.category.observation.description=Qualification of observations
observe.config.category.speciesList.longline=Species lists for longline
@@ -1689,6 +1691,5 @@ observe.ui.usage.action.shouldReplace=Remplace desactivated referential ?
observe.ui.usage.replaceTitle=Replacement object
observe.ui.usage.usageTitle=Founded references
observe.ui.view.message=Messages
-observe.ui.view.navigation=Navigation
observe.warning.nimbus.landf=Could not use Look and Fell Nimbus, need at least version 1.6u10 of java.
observe.warning.no.ui=No gui environment found
=====================================
client/i18n/src/main/i18n/translations/observe_es_ES.properties
=====================================
@@ -39,6 +39,8 @@ observe.config.category.application=Aplicación
observe.config.category.application.description=Opciones de la aplicación
observe.config.category.expert=Experto
observe.config.category.expert.description=Opciones de modo experto
+observe.config.category.map=Mapa
+observe.config.category.map.description=Mapa Configuración
observe.config.category.observation=Calificación de las observaciones
observe.config.category.observation.description=Gestion de los indicadores de calificación de los programas
observe.config.category.speciesList.longline=Configuración de las listas de especies (Palangre)
@@ -1689,6 +1691,5 @@ observe.ui.usage.action.shouldReplace=Reemplaza referencial desactivado?
observe.ui.usage.replaceTitle=Objeto de sustitución
observe.ui.usage.usageTitle=Referencias encontradas
observe.ui.view.message=Mensajes
-observe.ui.view.navigation=Navegación
observe.warning.nimbus.landf=El look and Feel Nimbus no fue encontrado, se necesita como mínimo la versión 1.6 ó 10 de java.
observe.warning.no.ui=Ninguno entorno gráfico fue detectado
=====================================
client/i18n/src/main/i18n/translations/observe_fr_FR.properties
=====================================
@@ -39,6 +39,8 @@ observe.config.category.application=Application
observe.config.category.application.description=Options applicatives
observe.config.category.expert=Avancé
observe.config.category.expert.description=Configuration avancée
+observe.config.category.map=Cartographie
+observe.config.category.map.description=Configuration de la cartographie
observe.config.category.observation=Qualification des observations
observe.config.category.observation.description=Gestion des indicateurs de qualification des programmes
observe.config.category.speciesList.longline=Configuration des listes d'espèces (Palangre)
@@ -1689,6 +1691,5 @@ observe.ui.usage.action.shouldReplace=Remplacer le référentiel désactivé ?
observe.ui.usage.replaceTitle=Objet de remplacement
observe.ui.usage.usageTitle=Références trouvées
observe.ui.view.message=Messages
-observe.ui.view.navigation=Navigation
observe.warning.nimbus.landf=Le look and Feel Nimbus n'a pas été trouvé, il faut au moins la version 1.6u10 de java.
observe.warning.no.ui=Aucun environnement graphique détecté
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/5ffad0061b1ace8710dd1c0a0…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/5ffad0061b1ace8710dd1c0a0…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 4 commits: La 1ère liste déroulante de chaque form s'ouvre toute seule à l'affichage d'un...
by Tony CHEMIT 22 Dec '20
by Tony CHEMIT 22 Dec '20
22 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
6dd42c94 by Tony Chemit at 2020-12-22T15:48:45+01:00
La 1ère liste déroulante de chaque form s'ouvre toute seule à l'affichage d'un onglet - Closes #1684
- - - - -
fdc62d8b by Tony Chemit at 2020-12-22T15:51:41+01:00
Open API
- - - - -
bdf480bd by Tony Chemit at 2020-12-22T15:52:00+01:00
Open API
- - - - -
cedaee45 by Tony Chemit at 2020-12-22T16:13:31+01:00
À la sortie de la configuration (avec un appel de rechargement d'interface graphique), la base est masquée et innacessible - Closes #1690
- - - - -
9 changed files:
- client/core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java
- client/core/src/main/java/fr/ird/observe/client/main/body/MainUIBodyContent.java
- client/core/src/main/java/fr/ird/observe/client/main/body/MainUIBodyContentManager.java
- client/core/src/main/java/fr/ird/observe/client/main/callback/ReloadUiCallback.java
- client/core/src/main/java/fr/ird/observe/client/util/init/DefaultUIInitializer.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/DataSourceEditorBodyContent.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIHandler.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIInitializer.java
- pom.xml
Changes:
=====================================
client/core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java
=====================================
@@ -443,7 +443,7 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple
listenerList.remove(ObserveSwingDataSourceListener.class, listener);
}
- private ObserveSwingDataSourceListener[] getObserveSwingDataSourceListener() {
+ public ObserveSwingDataSourceListener[] getObserveSwingDataSourceListener() {
return listenerList.getListeners(ObserveSwingDataSourceListener.class);
}
=====================================
client/core/src/main/java/fr/ird/observe/client/main/body/MainUIBodyContent.java
=====================================
@@ -22,6 +22,7 @@ package fr.ird.observe.client.main.body;
* #L%
*/
+import fr.ird.observe.client.ClientUIContext;
import fr.ird.observe.client.main.ObserveMainUI;
import io.ultreia.java4all.util.SingletonSupplier;
@@ -120,6 +121,15 @@ public abstract class MainUIBodyContent<B extends JComponent> implements Supplie
supplier.clear();
}
+ /**
+ * when ui was recreated, make what you can to reload this content.
+ * @param clientUIContext new client context
+ * @param mainUI new main ui
+ */
+ public void reloadContent(ClientUIContext clientUIContext, ObserveMainUI mainUI) {
+
+ }
+
public void setSupplier(SingletonSupplier<B> supplier) {
this.supplier = Objects.requireNonNull(supplier);
}
=====================================
client/core/src/main/java/fr/ird/observe/client/main/body/MainUIBodyContentManager.java
=====================================
@@ -195,4 +195,8 @@ public class MainUIBodyContentManager extends AbstractJavaBean {
changeCurrentBody(previousBody);
}
}
+
+ public MainUIBodyContent<?> getPreviousBody() {
+ return previousBody;
+ }
}
=====================================
client/core/src/main/java/fr/ird/observe/client/main/callback/ReloadUiCallback.java
=====================================
@@ -26,15 +26,19 @@ import com.google.auto.service.AutoService;
import fr.ird.observe.client.ClientUIContext;
import fr.ird.observe.client.configuration.ClientConfig;
import fr.ird.observe.client.configuration.WithClientConfig;
+import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
import fr.ird.observe.client.main.ObserveMainUI;
import fr.ird.observe.client.main.body.ClientConfigUI;
+import fr.ird.observe.client.main.body.MainUIBodyContent;
import fr.ird.observe.client.main.body.NoBodyContentComponent;
+import fr.ird.observe.client.util.UIHelper;
import io.ultreia.java4all.application.context.ApplicationContext;
import org.nuiton.jaxx.runtime.swing.SwingUtil;
import javax.swing.Icon;
import javax.swing.JComponent;
import java.util.Objects;
+import java.util.Optional;
import static io.ultreia.java4all.i18n.I18n.n;
@@ -74,21 +78,33 @@ public class ReloadUiCallback implements ObserveUICallback, WithClientConfig {
//FIXME:BodyContent, cela doit être délégué au body content concerné
Class<? extends JComponent> bodyContent = NoBodyContentComponent.class;
+ MainUIBodyContent<?> previousBody = null;
if (ui != null) {
// Keep a reference on ui instance since it will be reset in close method
// FIXME Should use a closing state in application to improve this
ObserveMainUI ui = this.ui;
- bodyContent = ui.getMainUIBodyContentManager().getCurrentBodyType();
- if (ClientConfigUI.class.equals(bodyContent)) {
- bodyContent = NoBodyContentComponent.class;
+ previousBody = ui.getMainUIBodyContentManager().getPreviousBody();
+ Optional<ObserveSwingDataSource> mainDataSource = clientUIContext.getDataSourcesManager().getOptionalMainDataSource();
+ if (mainDataSource.isPresent() && previousBody != null) {
+ bodyContent = previousBody.type();
+ } else {
+ previousBody = null;
+ bodyContent = ui.getMainUIBodyContentManager().getCurrentBodyType();
+ if (ClientConfigUI.class.equals(bodyContent)) {
+ bodyContent = NoBodyContentComponent.class;
+ }
}
ui.dispose();
System.runFinalization();
}
ui = clientUIContext.initUI(rootContext, config);
-
- ui.changeBodyContent(bodyContent);
+ if (previousBody != null) {
+ MainUIBodyContent<? extends JComponent> body = ui.getMainUIBodyContentManager().getBody(bodyContent);
+ body.reloadContent(clientUIContext, ui);
+ } else {
+ ui.changeBodyContent(bodyContent);
+ }
// show ui
clientUIContext.setMainUIVisible(ui, true);
=====================================
client/core/src/main/java/fr/ird/observe/client/util/init/DefaultUIInitializer.java
=====================================
@@ -166,6 +166,7 @@ public class DefaultUIInitializer<UI extends JComponent & JAXXObject> extends UI
initializerContext.checkFirstPass();
editor.getCombobox().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F4, 0), "none");
editor.setI18nPrefix("observe.common.");
+ editor.setAutoSelectContent(true);
editor.setMinimumSize(new Dimension(0, 24));
if (StringUtils.isEmpty(editor.getConfig().getProperty())) {
editor.setProperty(editor.getName());
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/DataSourceEditorBodyContent.java
=====================================
@@ -23,11 +23,13 @@ package fr.ird.observe.client.datasource.editor.api;
*/
import com.google.auto.service.AutoService;
+import fr.ird.observe.client.ClientUIContext;
import fr.ird.observe.client.WithClientUIContext;
import fr.ird.observe.client.configuration.ClientConfig;
import fr.ird.observe.client.configuration.WithClientConfig;
import fr.ird.observe.client.constants.DbMode;
import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
+import fr.ird.observe.client.datasource.api.event.ObserveSwingDataSourceListener;
import fr.ird.observe.client.datasource.editor.api.menu.DataSourceEditorMenu;
import fr.ird.observe.client.datasource.editor.api.menu.DataSourceEditorNavigationMenu;
import fr.ird.observe.client.datasource.editor.api.menu.actions.ChangeStorageAction;
@@ -177,6 +179,28 @@ public class DataSourceEditorBodyContent extends MainUIBodyContent<DataSourceEdi
}
}
+ @Override
+ public void reloadContent(ClientUIContext clientUIContext, ObserveMainUI mainUI) {
+ ObserveSwingDataSource mainDataSource = clientUIContext.getDataSourcesManager().getMainDataSource();
+ if (mainDataSource.isOpen()) {
+ // need to remove any old listeners
+ for (ObserveSwingDataSourceListener listener : mainDataSource.getObserveSwingDataSourceListener()) {
+ if (listener instanceof MainDataSourceListener) {
+ log.info("Remove obsolete listener: "+listener);
+ mainDataSource.removeObserveSwingDataSourceListener(listener);
+ }
+ }
+ }
+ prepareMainStorage(mainDataSource);
+ try {
+ setDataSource(mainDataSource);
+ mainUI.changeBodyContent(DataSourceEditor.class);
+ } catch (Exception e) {
+ UIHelper.handlingError(e);
+ mainUI.removeBodyContent();
+ }
+ }
+
public void doChangeStorage(Set<DbMode> dbModes, String title) {
ChangeStorageAction action = new ChangeStorageAction(dbModes, title);
action.run();
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIHandler.java
=====================================
@@ -48,7 +48,6 @@ import fr.ird.observe.dto.form.Form;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import fr.ird.observe.services.ObserveServicesProvider;
import fr.ird.observe.services.service.ObserveService;
-import io.ultreia.java4all.jaxx.widgets.combobox.JaxxComboBox;
import io.ultreia.java4all.util.SingletonSupplier;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -61,10 +60,8 @@ import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JMenuItem;
-import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import java.awt.Component;
-import java.awt.Container;
import java.awt.FocusTraversalPolicy;
import java.awt.KeyboardFocusManager;
import java.beans.PropertyChangeListener;
@@ -445,30 +442,14 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe
focusAdjusting = true;
try {
getModel().setFormFocusOwner(newValue);
- //FIXME on contentTable should also check we are in entry form
if (getDataSourceEditor().getModel().isFocusOnNavigation()) {
- return;
- }
- if ("ComboBox.textField".equals(newValue.getName())) {
- if (!getModel().getStates().isReadingMode()) {
- // we are on jaxx combo box, let's open popup
- Container parent = newValue.getParent();
- if (parent!=null) {
- parent = parent.getParent();
- if (parent!=null) {
- JaxxComboBox<?> combo = (JaxxComboBox<?>) parent;
- log.debug(String.format("On a JaxxComboBox: %s on edit mode, will open popup", combo.getName()));
- ((JTextField)newValue).setCaretPosition(0);
- combo.getCombobox().setPopupVisible(true);
- }
- }
- }
+ //FIXME on contentTable should also check we are in entry form
}
} finally {
focusAdjusting = false;
}
} else {
- log.debug(String.format("%sCan't set focus owner: %s", prefix,newValue));
+ log.debug(String.format("%sCan't set focus owner: %s", prefix, newValue));
}
}
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIInitializer.java
=====================================
@@ -309,6 +309,7 @@ public class ContentUIInitializer<UI extends ContentUI> extends UIInitializerSup
editor.getCombobox().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F4, 0), "none");
@SuppressWarnings({"RawTypeCanBeGeneric", "rawtypes"}) Class referenceType = editor.getBeanType();
editor.setI18nPrefix("observe.common.");
+ editor.setAutoSelectContent(true);
editor.setMinimumSize(new Dimension(0, 24));
editor.setShowReset(true);
if (StringUtils.isEmpty(editor.getConfig().getProperty())) {
=====================================
pom.xml
=====================================
@@ -155,7 +155,7 @@
<!-- <lib.version.java4all.topia>1.35</lib.version.java4all.topia>-->
<!-- <lib.version.java4all.eugene>3.0-alpha-38</lib.version.java4all.eugene>-->
-<!-- <lib.version.java4all.jaxx>3.0-alpha-85</lib.version.java4all.jaxx>-->
+ <lib.version.java4all.jaxx>3.0-alpha-86</lib.version.java4all.jaxx>
<!--<lib.version.java4all.application-context>1.0.3-SNAPSHOT</lib.version.java4all.application-context>-->
<!--<lib.version.java4all.application-template>1.0.2-SNAPSHOT</lib.version.java4all.application-template>-->
<!--<lib.version.java4all.i18n>4.0-beta-3-SNAPSHOT</lib.version.java4all.i18n>-->
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c15bb44901049f5e7c1f3f46…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c15bb44901049f5e7c1f3f46…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 23 commits: realign gearUseFeatures model (should be always exactly the same on both domains)
by Tony CHEMIT 21 Dec '20
by Tony CHEMIT 21 Dec '20
21 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
88af34fc by Tony Chemit at 2020-12-20T10:50:13+01:00
realign gearUseFeatures model (should be always exactly the same on both domains)
- - - - -
9a7cf35f by Tony Chemit at 2020-12-20T11:47:48+01:00
Add more methods on WithFormula contract (and then remove the entity formula abstract class)
- - - - -
7220e32d by Tony Chemit at 2020-12-20T11:49:39+01:00
Fix a relation bad inverse (the main relation was considered as not main by topia)
- - - - -
62ef95c0 by Tony Chemit at 2020-12-20T15:32:46+01:00
Generate all missing indexes - See #1683
- - - - -
901d6ab3 by Tony Chemit at 2020-12-20T18:49:39+01:00
Add new test (but still not used to generate schema)
- - - - -
66b4ed2e by Tony Chemit at 2020-12-20T18:50:12+01:00
Open API
- - - - -
90f7005d by Tony Chemit at 2020-12-20T18:50:26+01:00
add ressource in ExecuteRunnerMojo
- - - - -
c3d08308 by Tony Chemit at 2020-12-20T18:50:56+01:00
Add a runner to generate schema
- - - - -
1df711f7 by Tony Chemit at 2020-12-20T19:13:15+01:00
Il reste quelques optimisations à réaliser sur la couche de persistence - See #1664
- - - - -
ba18ad03 by Tony Chemit at 2020-12-21T09:57:40+01:00
Rename full schema scripts
- - - - -
778075e6 by Tony Chemit at 2020-12-21T11:51:42+01:00
Introduce create and finalize schema scripts
- - - - -
fa575825 by Tony Chemit at 2020-12-21T11:52:16+01:00
clean dto code
- - - - -
febdf613 by Tony Chemit at 2020-12-21T11:52:57+01:00
Introduce digits tagvalue in topia and use it
- - - - -
4ef63975 by Tony Chemit at 2020-12-21T12:20:39+01:00
Mise en place du schéma avec les bonnes précisions sur les numériques
- - - - -
b3cc1c42 by Tony Chemit at 2020-12-21T12:28:51+01:00
Missing dependency
- - - - -
71ad2d89 by Tony Chemit at 2020-12-21T12:29:09+01:00
Génération du type précis pour les champs textes - Closes #1687
- - - - -
5a42e519 by Tony Chemit at 2020-12-21T12:57:47+01:00
Rename generated schema script to be usable in migration
- - - - -
c6ce8204 by Tony Chemit at 2020-12-21T20:56:02+01:00
Fix blog generation for postgres
- - - - -
bb222cf1 by Tony Chemit at 2020-12-21T21:03:08+01:00
update topia-extension
- - - - -
8c3a3635 by Tony Chemit at 2020-12-21T22:12:38+01:00
use last pom
- - - - -
174c3bdf by Tony Chemit at 2020-12-21T22:36:15+01:00
fix typo
- - - - -
a827043d by Tony Chemit at 2020-12-21T22:37:04+01:00
clean entities
- - - - -
c15bb449 by Tony Chemit at 2020-12-21T22:42:07+01:00
Génération du type précis pour les champs textes - Closes #1687
Il semble manquer des index sur des relations many-to-one (par exemple Tdr → Section) - Closes #1683
Meilleur intégration de la précision sur les champs numériques - Closes #1686
Il reste quelques optimisations à réaliser sur la couche de persistence - See #1664
- - - - -
30 changed files:
- models/dto/src/main/java/fr/ird/observe/dto/data/ps/TypeTransmittingBuoyOperation.java
- models/persistence/pom.xml
- models/persistence/src/main/java/fr/ird/observe/entities/ObserveTopiaApplicationContext.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SectionObsTemplate.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/ActivityImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/FloatingObjectImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/LengthWeightComputableAware.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/NonTargetCatchImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/NonTargetLengthImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/SetImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/TargetCatchImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/TargetLengthImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/TargetSampleImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_8_0.java
- − models/persistence/src/main/java/fr/ird/observe/entities/referential/common/AbstractLengthFormulaSupportTopiaDao.java
- models/persistence/src/main/java/fr/ird/observe/entities/referential/common/HarbourImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/referential/common/LengthFormulaSupportImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/referential/common/LengthLengthParameterImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/referential/common/LengthLengthParameterTopiaDao.java
- models/persistence/src/main/java/fr/ird/observe/entities/referential/common/LengthWeightParameterImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/referential/common/LengthWeightParameterTopiaDao.java
- − models/persistence/src/main/java/fr/ird/observe/entities/referential/common/PersonImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/referential/common/ProgramImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/referential/common/SpeciesImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/referential/common/VesselImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/referential/ps/common/ObjectMaterialImpl.java
- + models/persistence/src/main/java/fr/ird/observe/entities/spi/GenerateEmptyDatabases.java
- models/persistence/src/main/models/Observe-00-common.model
- models/persistence/src/main/models/Observe-01-referential-common.model
- models/persistence/src/main/models/Observe-02-referential-ps-common.model
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/b7bd2bc4a5aaf25223ec8409…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/b7bd2bc4a5aaf25223ec8409…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Generate some missing indexes - Closes #1683
by Tony CHEMIT 18 Dec '20
by Tony CHEMIT 18 Dec '20
18 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
b7bd2bc4 by Tony Chemit at 2020-12-18T20:49:16+01:00
Generate some missing indexes - Closes #1683
- - - - -
1 changed file:
- pom.xml
Changes:
=====================================
pom.xml
=====================================
@@ -153,7 +153,7 @@
<lib.version.h2>1.4.196</lib.version.h2>
<lib.version.nuiton.utils>3.0</lib.version.nuiton.utils>
-<!-- <lib.version.java4all.topia>1.31</lib.version.java4all.topia>-->
+ <lib.version.java4all.topia>1.32</lib.version.java4all.topia>
<!-- <lib.version.java4all.eugene>3.0-alpha-38</lib.version.java4all.eugene>-->
<lib.version.java4all.jaxx>3.0-alpha-85</lib.version.java4all.jaxx>
<!--<lib.version.java4all.application-context>1.0.3-SNAPSHOT</lib.version.java4all.application-context>-->
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/b7bd2bc4a5aaf25223ec8409f…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/b7bd2bc4a5aaf25223ec8409f…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Generate some missing indexes - Closes #1664
by Tony CHEMIT 18 Dec '20
by Tony CHEMIT 18 Dec '20
18 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
18ea7843 by Tony Chemit at 2020-12-18T20:48:44+01:00
Generate some missing indexes - Closes #1664
- - - - -
1 changed file:
- pom.xml
Changes:
=====================================
pom.xml
=====================================
@@ -153,7 +153,7 @@
<lib.version.h2>1.4.196</lib.version.h2>
<lib.version.nuiton.utils>3.0</lib.version.nuiton.utils>
-<!-- <lib.version.java4all.topia>1.31</lib.version.java4all.topia>-->
+ <lib.version.java4all.topia>1.32</lib.version.java4all.topia>
<!-- <lib.version.java4all.eugene>3.0-alpha-38</lib.version.java4all.eugene>-->
<lib.version.java4all.jaxx>3.0-alpha-85</lib.version.java4all.jaxx>
<!--<lib.version.java4all.application-context>1.0.3-SNAPSHOT</lib.version.java4all.application-context>-->
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/18ea7843a3271eeb66d3652d7…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/18ea7843a3271eeb66d3652d7…
You're receiving this email because of your account on gitlab.com.
1
0
18 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
0c952acb by Tony Chemit at 2020-12-18T20:32:47+01:00
remove unused method
- - - - -
b2ace90a by Tony Chemit at 2020-12-18T20:34:52+01:00
Il reste quelques optimisations à réaliser sur la couche de persistence - See #1664
* Suppression de contrat sur les entités inutiles
* Utilisation de requetes optimisées pour construire le dto de la composition détaillée
* suppression de liens sur le modèle de persistence inutiles
- - - - -
f11cbc8e by Tony Chemit at 2020-12-18T20:47:37+01:00
Generate some missing indexes - Closes #58
- - - - -
13 changed files:
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/LonglinePositionAware.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SetImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/LonglineElementAware.java → models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SetTopiaDao.java
- models/persistence/src/main/models/Observe-30-data-ll-observation.model
- pom.xml
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/observation/SetDetailCompositionServiceLocal.java
- services/local-impl/src/test/java/fr/ird/observe/services/local/service/data/ll/observation/SetDetailCompositionServiceLocalTest.java
- tests/test/src/main/resources/db/8.0/dataForTestLongline.sql.gz
- tests/test/src/main/resources/db/8.0/dataForTestSeine.sql.gz
- tests/test/src/main/resources/db/8.0/empty_h2.sql.gz
- tests/test/src/main/resources/db/8.0/empty_pg.sql.gz
- tests/test/src/main/resources/db/8.0/referentiel.sql.gz
- toolkit/persistence/src/main/java/fr/ird/observe/entities/EntityHelper.java
Changes:
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/LonglinePositionAware.java deleted
=====================================
@@ -1,53 +0,0 @@
-package fr.ird.observe.entities.data.ll.observation;
-
-/*
- * #%L
- * ObServe Models :: Persistence
- * %%
- * Copyright (C) 2008 - 2020 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.data.DataDto;
-import fr.ird.observe.dto.reference.DataDtoReference;
-import fr.ird.observe.entities.data.DataEntity;
-
-/**
- * Place this contract on any data that use a position on a longline.
- * Created on 1/6/15.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @see Catch
- * @see Tdr
- * @see fr.ird.observe.dto.data.ll.observation.LonglinePositionAware
- * @since 3.11
- */
-public interface LonglinePositionAware<Dt extends DataDto, R extends DataDtoReference> extends DataEntity<Dt, R> {
-
- void setSection(Section section);
-
- Section getSection();
-
- void setBasket(Basket basket);
-
- Basket getBasket();
-
- void setBranchline(Branchline branchline);
-
- Branchline getBranchline();
-
-}
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SetImpl.java
=====================================
@@ -22,15 +22,12 @@ package fr.ird.observe.entities.data.ll.observation;
* #L%
*/
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
import fr.ird.observe.dto.CoordinateHelper;
import fr.ird.observe.dto.data.DataDto;
import fr.ird.observe.dto.data.ll.observation.BasketReference;
import fr.ird.observe.dto.data.ll.observation.BranchlineReference;
import fr.ird.observe.dto.data.ll.observation.LonglinePositionContainerAware;
import fr.ird.observe.dto.data.ll.observation.SectionReference;
-import fr.ird.observe.dto.data.ll.observation.SetDetailCompositionDto;
import fr.ird.observe.dto.data.ll.observation.SetDto;
import fr.ird.observe.dto.referential.ReferentialLocale;
@@ -44,10 +41,6 @@ public class SetImpl extends SetAbstract {
@Override
public <D extends DataDto> void toDto(ReferentialLocale referentialLocale, D dto) {
boolean useLonglinePosition = dto instanceof LonglinePositionContainerAware;
- boolean detailComposition = dto instanceof SetDetailCompositionDto;
- if (useLonglinePosition || detailComposition) {
- loadEntityParents();
- }
super.toDto(referentialLocale, dto);
if (dto instanceof SetDto) {
SetDto dto1 = (SetDto) dto;
@@ -56,62 +49,27 @@ public class SetImpl extends SetAbstract {
dto1.setHaulingStartQuadrant(CoordinateHelper.getQuadrant(haulingStartLongitude, haulingStartLatitude));
dto1.setHaulingEndQuadrant(CoordinateHelper.getQuadrant(haulingEndLongitude, haulingEndLatitude));
}
- if (detailComposition) {
- loadDtoParents((SetDetailCompositionDto) dto);
- }
if (useLonglinePosition) {
loadDtoReferenceParents((LonglinePositionContainerAware) dto, referentialLocale);
}
}
- private void loadEntityParents() {
- getSection().forEach(section -> {
- section.setParentId(getTopiaId());
- section.getBasket().forEach(basket -> {
- String sectionId = section.getTopiaId();
- basket.setParentId(sectionId);
- String basketId = basket.getTopiaId();
- basket.getBranchline().forEach(branchline -> branchline.setParentId(basketId));
- });
- });
- }
-
- private void loadDtoParents(SetDetailCompositionDto dto) {
- //FIXME If not performant, let's used an optimized dao query
- ImmutableMap<String, Section> sectionsById = Maps.uniqueIndex(getSection(), Section::getTopiaId);
- dto.getSection().forEach(section -> {
- section.setParentId(dto.getId());
- String sectionId = section.getTopiaId();
- Section entitySection = sectionsById.get(sectionId);
- ImmutableMap<String, Basket> basketsById = Maps.uniqueIndex(entitySection.getBasket(), Basket::getTopiaId);
- section.setNotUsed(entitySection.isNotUsed());
- section.getBasket().forEach(basket -> {
- basket.setParentId(sectionId);
- String basketId = basket.getTopiaId();
- Basket entityBasket = basketsById.get(basketId);
- basket.setNotUsed(entityBasket.isNotUsed());
- ImmutableMap<String, Branchline> branchlinesById = Maps.uniqueIndex(entityBasket.getBranchline(), Branchline::getTopiaId);
- basket.getBranchline().forEach(branchline -> {
- String branchlineId = branchline.getId();
- Branchline entityBranchline = branchlinesById.get(branchlineId);
- branchline.setParentId(basketId);
- branchline.setNotUsed(entityBranchline.isNotUsed());
- });
- });
- });
- }
-
private void loadDtoReferenceParents(LonglinePositionContainerAware dto, ReferentialLocale referentialLocale) {
List<SectionReference> sections = new LinkedList<>();
List<BasketReference> baskets = new LinkedList<>();
List<BranchlineReference> branchlines = new LinkedList<>();
getSection().forEach(section -> {
+ section.setParentId(getTopiaId());
+ String sectionId = section.getTopiaId();
SectionReference sectionReference = section.toReference(referentialLocale);
sections.add(sectionReference);
section.getBasket().forEach(basket -> {
+ String basketId = basket.getTopiaId();
+ basket.setParentId(sectionId);
BasketReference basketReference = basket.toReference(referentialLocale);
baskets.add(basketReference);
basket.getBranchline().forEach(branchline -> {
+ branchline.setParentId(basketId);
BranchlineReference branchlineReference = branchline.toReference(referentialLocale);
branchlines.add(branchlineReference);
});
=====================================
models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/LonglineElementAware.java → models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SetTopiaDao.java
=====================================
@@ -1,6 +1,6 @@
package fr.ird.observe.entities.data.ll.observation;
-/*
+/*-
* #%L
* ObServe Models :: Persistence
* %%
@@ -22,37 +22,44 @@ package fr.ird.observe.entities.data.ll.observation;
* #L%
*/
-import fr.ird.observe.dto.DtoParentAware;
-import fr.ird.observe.dto.data.DataDto;
-import fr.ird.observe.dto.reference.DataDtoReference;
-import fr.ird.observe.entities.data.DataEntity;
+import com.google.common.collect.ImmutableSet;
+import fr.ird.observe.spi.context.DataDtoEntityContext;
+
+import java.util.List;
/**
- * Place this contract on any element involved in longline definition.
- * Created on 12/13/14.
+ * Created on 12/18/2020.
*
* @author Tony Chemit - dev(a)tchemit.fr
- * @see Section
- * @see Basket
- * @see Branchline
- * @see fr.ird.observe.dto.data.ll.observation.LonglineElementAware
- * @since 3.10
+ * @since 8.0.1
*/
-public interface LonglineElementAware<Dt extends DataDto, R extends DataDtoReference> extends DataEntity<Dt, R>, DtoParentAware {
-
- Integer getSettingIdentifier();
-
- void setSettingIdentifier(Integer settingIdentifier);
+public class SetTopiaDao extends AbstractSetTopiaDao<Set> {
- Integer getHaulingIdentifier();
+ private static final String SQL_PATTERN = "SELECT DISTINCT(%1$s) FROM %2$s WHERE set = '%3$s' AND %1$s IS NOT NULL";
- void setHaulingIdentifier(Integer haulingIdentifier);
+ public ImmutableSet<String> getSectionUsed(String setId) {
+ ImmutableSet.Builder<String> builder = ImmutableSet.builder();
+ getUsages(Tdr.SPI, Tdr.PROPERTY_SECTION, setId, builder);
+ getUsages(Catch.SPI, Catch.PROPERTY_SECTION, setId, builder);
+ return builder.build();
+ }
- boolean isTdrEmpty();
+ public ImmutableSet<String> getBasketUsed(String setId) {
+ ImmutableSet.Builder<String> builder = ImmutableSet.builder();
+ getUsages(Tdr.SPI, Tdr.PROPERTY_BASKET, setId, builder);
+ getUsages(Catch.SPI, Catch.PROPERTY_BASKET, setId, builder);
+ return builder.build();
+ }
- boolean isCatchesEmpty();
+ public ImmutableSet<String> getBranchlineUsed(String setId) {
+ ImmutableSet.Builder<String> builder = ImmutableSet.builder();
+ getUsages(Tdr.SPI, Tdr.PROPERTY_BRANCHLINE, setId, builder);
+ getUsages(Catch.SPI, Catch.PROPERTY_BRANCHLINE, setId, builder);
+ return builder.build();
+ }
- default boolean isNotUsed() {
- return isTdrEmpty() && isCatchesEmpty();
+ protected void getUsages(DataDtoEntityContext<?, ?, ?, ?> spi, String propertyName, String setId, ImmutableSet.Builder<String> ids) {
+ List<String> newIds = topiaSqlSupport.findMultipleResult(String.format(SQL_PATTERN, propertyName, spi.getEntitySqlDescriptor().getTable().getSchemaAndTableName(), setId), r -> r.getString(1));
+ ids.addAll(newIds);
}
}
=====================================
models/persistence/src/main/models/Observe-30-data-ll-observation.model
=====================================
@@ -1,19 +1,5 @@
package fr.ird.observe.entities.data.ll.observation | dbSchema=ll_observation
-interface data.ll.observation.LonglineElementAware > fr.ird.observe.entities.data.DataEntity
-getSettingIdentifier() Integer
-setSettingIdentifier(identifier Integer)
-getHaulingIdentifier() Integer
-setHaulingIdentifier(identifier Integer)
-
-interface data.ll.observation.LonglinePositionAware > fr.ird.observe.entities.data.DataEntity
-getSection() data.ll.observation.Section
-setSection(section data.ll.observation.Section)
-getBasket() data.ll.observation.Basket
-setBasket(basket data.ll.observation.Basket)
-getBranchline() data.ll.observation.Branchline
-setBranchline(branchline data.ll.observation.Branchline)
-
data.ll.observation.Activity > data.DataEntity | entity constants=date,time
comment + {*:1} String | hibernateAttributeType=text
timeStamp + {*:1} Date
@@ -35,16 +21,14 @@ individualWeight + {*:1} Float
baitSettingStatus {*:1} referential.ll.common.BaitSettingStatus
baitType {*:1} referential.ll.common.BaitType
-data.ll.observation.Basket > data.DataEntity >> data.ll.observation.LonglineElementAware fr.ird.observe.dto.DtoParentAware | entity
+data.ll.observation.Basket > data.DataEntity >> fr.ird.observe.dto.DtoParentAware | entity
settingIdentifier + {*:1} Integer | notNull
haulingIdentifier + {*:1} Integer
floatline1Length + {*:1} Float
floatline2Length + {*:1} Float
branchline + {*} data.ll.observation.Branchline | unique orderBy=settingIdentifier inverse=false
-catches {*} data.ll.observation.Catch | skipModelNavigation inverse
-tdr {*} data.ll.observation.Tdr | skipModelNavigation inverse
-data.ll.observation.Branchline > data.DataEntity >> data.ll.observation.LonglineElementAware fr.ird.observe.dto.DtoParentAware | entity constants=timerTimeOnBoardDate,timerTimeOnBoardTime
+data.ll.observation.Branchline > data.DataEntity >> fr.ird.observe.dto.DtoParentAware | entity constants=timerTimeOnBoardDate,timerTimeOnBoardTime
comment + {*:1} String | hibernateAttributeType=text
settingIdentifier + {*:1} Integer | notNull
haulingIdentifier + {*:1} Integer
@@ -62,8 +46,6 @@ tracelineLength + {*:1} Float | sqlType=numeric
hookLost + {*:1} Boolean
traceCutOff + {*:1} Boolean
hookType {*:0..1} referential.ll.common.HookType
-catches {*} data.ll.observation.Catch | skipModelNavigation inverse
-tdr {*} data.ll.observation.Tdr | skipModelNavigation inverse
baitType {*:0..1} referential.ll.common.BaitType
topType {*:0..1} referential.ll.common.LineType
tracelineType {*:0..1} referential.ll.common.LineType
@@ -78,7 +60,7 @@ tracelineLength + {*:1} Float
topType {*:0..1} referential.ll.common.LineType
tracelineType {*:0..1} referential.ll.common.LineType
-data.ll.observation.Catch > data.DataEntity >> data.ll.observation.LonglinePositionAware | entity
+data.ll.observation.Catch > data.DataEntity | entity
comment + {*:1} String | hibernateAttributeType=text
count + {*:1} Integer
totalWeight + {*:1} Float | sqlType=numeric
@@ -123,12 +105,10 @@ hookOffset + {*:1} Integer
hookType {*:1} referential.ll.common.HookType
hookSize {*:1} referential.ll.common.HookSize
-data.ll.observation.Section > data.DataEntity >> data.ll.observation.LonglineElementAware fr.ird.observe.dto.DtoParentAware | entity
+data.ll.observation.Section > data.DataEntity >> fr.ird.observe.dto.DtoParentAware | entity
settingIdentifier + {*:1} Integer | notNull
haulingIdentifier + {*:1} Integer
basket + {*} data.ll.observation.Basket | unique orderBy=settingIdentifier inverse=false
-catches {*} data.ll.observation.Catch | skipModelNavigation inverse
-tdr {*} data.ll.observation.Tdr | skipModelNavigation inverse
data.ll.observation.SensorUsed > data.DataEntity >> data.DataFileAware | entity
data + {*:1} !java.sql.Blob
@@ -190,7 +170,7 @@ size + {*:1} Float | sqlType=numeric
sizeMeasureType {*:1} referential.common.SizeMeasureType
lengthMeasureMethod {*:0..1} referential.common.LengthMeasureMethod
-data.ll.observation.Tdr > data.DataEntity >> data.ll.observation.LonglinePositionAware data.DataFileAware | entity constants=deploymentStartDate,deploymentStartTime,deploymentEndDate,deploymentEndTime,fishingStartDate,fishingStartTime,fishingEndDate,fishingEndTime
+data.ll.observation.Tdr > data.DataEntity >> data.DataFileAware | entity constants=deploymentStartDate,deploymentStartTime,deploymentEndDate,deploymentEndTime,fishingStartDate,fishingStartTime,fishingEndDate,fishingEndTime
floatline1Length + {*:1} Float | sqlType=numeric
floatline2Length + {*:1} Float | sqlType=numeric
serialNo + {*:1} String
=====================================
pom.xml
=====================================
@@ -153,7 +153,7 @@
<lib.version.h2>1.4.196</lib.version.h2>
<lib.version.nuiton.utils>3.0</lib.version.nuiton.utils>
-<!-- <lib.version.java4all.topia>1.31</lib.version.java4all.topia>-->
+ <lib.version.java4all.topia>1.32</lib.version.java4all.topia>
<!-- <lib.version.java4all.eugene>3.0-alpha-38</lib.version.java4all.eugene>-->
<lib.version.java4all.jaxx>3.0-alpha-85</lib.version.java4all.jaxx>
<!--<lib.version.java4all.application-context>1.0.3-SNAPSHOT</lib.version.java4all.application-context>-->
=====================================
services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/observation/SetDetailCompositionServiceLocal.java
=====================================
@@ -22,8 +22,11 @@ package fr.ird.observe.services.local.service.data.ll.observation;
* #L%
*/
+import com.google.common.collect.ImmutableSet;
import fr.ird.observe.dto.data.ll.observation.SetDetailCompositionDto;
+import fr.ird.observe.dto.form.Form;
import fr.ird.observe.entities.data.ll.observation.Set;
+import fr.ird.observe.entities.data.ll.observation.SetTopiaDao;
import fr.ird.observe.services.local.service.data.Simple2DataServiceLocalSupport;
import fr.ird.observe.services.service.data.ll.observation.SetDetailCompositionService;
@@ -37,4 +40,29 @@ public class SetDetailCompositionServiceLocal extends Simple2DataServiceLocalSup
super(Set.SPI, Set.SET_DETAIL_COMPOSITION_SPI, null);
}
+ @Override
+ protected Form<SetDetailCompositionDto> entityToForm(Set entity) {
+ Form<SetDetailCompositionDto> form = super.entityToForm(entity);
+ SetDetailCompositionDto dto = form.getObject();
+ SetTopiaDao dao = Set.SPI.getDao(getTopiaPersistenceContext());
+ ImmutableSet<String> sectionUsed = dao.getSectionUsed(entity.getTopiaId());
+ ImmutableSet<String> basketUsed = dao.getBasketUsed(entity.getTopiaId());
+ ImmutableSet<String> branchlineUsed = dao.getBranchlineUsed(entity.getTopiaId());
+ dto.getSection().forEach(section -> {
+ section.setParentId(dto.getId());
+ String sectionId = section.getTopiaId();
+ section.setNotUsed(!sectionUsed.contains(sectionId));
+ section.getBasket().forEach(basket -> {
+ basket.setParentId(sectionId);
+ String basketId = basket.getTopiaId();
+ basket.setNotUsed(!basketUsed.contains(basketId));
+ basket.getBranchline().forEach(branchline -> {
+ String branchlineId = branchline.getId();
+ branchline.setParentId(basketId);
+ branchline.setNotUsed(!branchlineUsed.contains(branchlineId));
+ });
+ });
+ });
+ return form;
+ }
}
=====================================
services/local-impl/src/test/java/fr/ird/observe/services/local/service/data/ll/observation/SetDetailCompositionServiceLocalTest.java
=====================================
@@ -79,6 +79,7 @@ public class SetDetailCompositionServiceLocalTest extends ServiceLocalTestSuppor
Assert.assertEquals(Integer.valueOf(18), sectionDto.getHaulingIdentifier());
Assert.assertEquals(13, sectionDto.getBasketSize());
Assert.assertNotNull(sectionDto.getParentId());
+ Assert.assertTrue(sectionDto.isNotUsed());
Assert.assertEquals(compositionDto.getId(), sectionDto.getParentId());
Assert.assertNotNull(sectionDto.toReference(ReferentialLocale.FR));
Assert.assertNotNull(sectionDto.toReference(ReferentialLocale.FR).getParentId());
@@ -88,6 +89,8 @@ public class SetDetailCompositionServiceLocalTest extends ServiceLocalTestSuppor
Assert.assertEquals(Integer.valueOf(13), basketDto.getHaulingIdentifier());
Assert.assertEquals(6, basketDto.getBranchlineSize());
Assert.assertNotNull(basketDto.getParentId());
+ Assert.assertTrue(basketDto.isNotUsed());
+
Assert.assertEquals(sectionDto.getId(), basketDto.getParentId());
Assert.assertNotNull(basketDto.toReference(ReferentialLocale.FR));
Assert.assertNotNull(basketDto.toReference(ReferentialLocale.FR).getParentId());
@@ -96,9 +99,14 @@ public class SetDetailCompositionServiceLocalTest extends ServiceLocalTestSuppor
Assert.assertEquals(Integer.valueOf(1), branchlineDto.getSettingIdentifier());
Assert.assertEquals(Integer.valueOf(6), branchlineDto.getHaulingIdentifier());
Assert.assertNotNull(branchlineDto.getParentId());
+ Assert.assertTrue(branchlineDto.isNotUsed());
Assert.assertEquals(basketDto.getId(), branchlineDto.getParentId());
Assert.assertNotNull(branchlineDto.toReference(ReferentialLocale.FR));
Assert.assertNotNull(branchlineDto.toReference(ReferentialLocale.FR).getParentId());
+
+ sectionDto = compositionDto.getSection(6);
+ basketDto = sectionDto.getBasket(8);
+ Assert.assertFalse(basketDto.isNotUsed());
}
@Test
=====================================
tests/test/src/main/resources/db/8.0/dataForTestLongline.sql.gz
=====================================
Binary files a/tests/test/src/main/resources/db/8.0/dataForTestLongline.sql.gz and b/tests/test/src/main/resources/db/8.0/dataForTestLongline.sql.gz differ
=====================================
tests/test/src/main/resources/db/8.0/dataForTestSeine.sql.gz
=====================================
Binary files a/tests/test/src/main/resources/db/8.0/dataForTestSeine.sql.gz and b/tests/test/src/main/resources/db/8.0/dataForTestSeine.sql.gz differ
=====================================
tests/test/src/main/resources/db/8.0/empty_h2.sql.gz
=====================================
Binary files a/tests/test/src/main/resources/db/8.0/empty_h2.sql.gz and b/tests/test/src/main/resources/db/8.0/empty_h2.sql.gz differ
=====================================
tests/test/src/main/resources/db/8.0/empty_pg.sql.gz
=====================================
Binary files a/tests/test/src/main/resources/db/8.0/empty_pg.sql.gz and b/tests/test/src/main/resources/db/8.0/empty_pg.sql.gz differ
=====================================
tests/test/src/main/resources/db/8.0/referentiel.sql.gz
=====================================
Binary files a/tests/test/src/main/resources/db/8.0/referentiel.sql.gz and b/tests/test/src/main/resources/db/8.0/referentiel.sql.gz differ
=====================================
toolkit/persistence/src/main/java/fr/ird/observe/entities/EntityHelper.java
=====================================
@@ -204,18 +204,6 @@ public class EntityHelper {
return dtoList;
}
- public static <DD extends DataDto, RR extends DataDtoReference, EE extends DataEntity<DD, RR>> LinkedHashSet<RR> toDataReferenceLinkedHashSet(ReferentialLocale referentialLocale, Collection<EE> entities) {
- LinkedHashSet<RR> result = null;
- if (entities != null) {
- result = new LinkedHashSet<>();
- for (EE entity : entities) {
- result.add(entity.toReference(referentialLocale));
- }
- }
- return result;
- }
-
-
@SuppressWarnings({"unchecked", "unused"})
public static <DD extends DataDto, RR extends DataDtoReference, EE extends DataEntity<?, ?>, C extends Collection<EE>> C toDataEntityCollectionFromReference(Collection<RR> referencesList, C entities) {
if (entities == null) {
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/5af39beb242c07d5e4268bd1…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/5af39beb242c07d5e4268bd1…
You're receiving this email because of your account on gitlab.com.
1
0
18 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
fe0a298a by Tony Chemit at 2020-12-18T11:29:18+01:00
clean some tests
- - - - -
55095dec by Tony Chemit at 2020-12-18T11:29:48+01:00
Let's the framework manage WtiDatafile data
- - - - -
5af39beb by Tony Chemit at 2020-12-18T13:32:10+01:00
Première passe pour supprimer toutes le code inutile et il y en a!
Il reste quelques optimisations à réaliser sur la couche de persistence - See #1664
Première passe pour supprimer toutes le code inutile et il y en a!
- - - - -
30 changed files:
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ActivityAware.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/SetAware.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/TripAware.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ll/common/GearUseFeaturesImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/common/TripImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/logbook/ActivityImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ll/logbook/ActivityTopiaDao.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/logbook/SampleImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/logbook/SetImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/ActivityImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/ActivityTopiaDao.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/BranchlineImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SensorUsedImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SetImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/TdrImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ps/common/GearUseFeaturesImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/common/TripImpl.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/ActivityImpl.java
- − models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/ActivityTopiaDao.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/RouteTopiaDao.java
- models/persistence/src/main/java/fr/ird/observe/entities/data/ps/observation/SetImpl.java
- models/persistence/src/main/models/Observe-00-common.model
- models/persistence/src/main/models/Observe-20-data-ps-observation.model
- models/persistence/src/main/models/Observe-25-data-ps-common.model
- models/persistence/src/main/models/Observe-30-data-ll-observation.model
- models/persistence/src/main/models/Observe-31-data-ll-logbook.model
- models/persistence/src/main/models/Observe-35-data-ll-common.model
- services/local-impl/pom.xml
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/actions/report/ReportServiceLocal.java
- services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/SetServiceLocal.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c485f84c32a2207a2d64fd1f…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c485f84c32a2207a2d64fd1f…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Comportement des combobox - Closes #1642
by Tony CHEMIT 18 Dec '20
by Tony CHEMIT 18 Dec '20
18 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
c485f84c by Tony Chemit at 2020-12-18T11:10:44+01:00
Comportement des combobox - Closes #1642
- - - - -
1 changed file:
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIHandler.java
Changes:
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIHandler.java
=====================================
@@ -48,6 +48,7 @@ import fr.ird.observe.dto.form.Form;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import fr.ird.observe.services.ObserveServicesProvider;
import fr.ird.observe.services.service.ObserveService;
+import io.ultreia.java4all.jaxx.widgets.combobox.JaxxComboBox;
import io.ultreia.java4all.util.SingletonSupplier;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -60,8 +61,10 @@ import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JMenuItem;
+import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import java.awt.Component;
+import java.awt.Container;
import java.awt.FocusTraversalPolicy;
import java.awt.KeyboardFocusManager;
import java.beans.PropertyChangeListener;
@@ -442,9 +445,30 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe
focusAdjusting = true;
try {
getModel().setFormFocusOwner(newValue);
+ //FIXME on contentTable should also check we are in entry form
+ if (getDataSourceEditor().getModel().isFocusOnNavigation()) {
+ return;
+ }
+ if ("ComboBox.textField".equals(newValue.getName())) {
+ if (!getModel().getStates().isReadingMode()) {
+ // we are on jaxx combo box, let's open popup
+ Container parent = newValue.getParent();
+ if (parent!=null) {
+ parent = parent.getParent();
+ if (parent!=null) {
+ JaxxComboBox<?> combo = (JaxxComboBox<?>) parent;
+ log.debug(String.format("On a JaxxComboBox: %s on edit mode, will open popup", combo.getName()));
+ ((JTextField)newValue).setCaretPosition(0);
+ combo.getCombobox().setPopupVisible(true);
+ }
+ }
+ }
+ }
} finally {
focusAdjusting = false;
}
+ } else {
+ log.debug(String.format("%sCan't set focus owner: %s", prefix,newValue));
}
}
@@ -460,7 +484,7 @@ public abstract class ContentUIHandler<U extends ContentUI> implements ObserveSe
return;
}
- log.debug(String.format("%sSet form focus on %s", prefix, focusComponent));
+ log.info(String.format("%sSet form focus on %s", prefix, focusComponent));
if (focusComponent != null) {
focusAdjusting = true;
SwingUtilities.invokeLater(() -> {
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/c485f84c32a2207a2d64fd1f5…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/c485f84c32a2207a2d64fd1f5…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Lisibilité de la carte - police de la date - Closes #1640
by Tony CHEMIT 18 Dec '20
by Tony CHEMIT 18 Dec '20
18 Dec '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
b9d86eb8 by Tony Chemit at 2020-12-18T10:14:17+01:00
Lisibilité de la carte - police de la date - Closes #1640
- - - - -
3 changed files:
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapContentBuilderSupport.java
- client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapUIHandler.java
- client/datasource/editor/ps/src/main/resources/map/ps-style.xml
Changes:
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapContentBuilderSupport.java
=====================================
@@ -83,7 +83,7 @@ public abstract class TripMapContentBuilderSupport implements TripMapContentBuil
protected static final String LOGBOOK_LINES_LAYER_NAME = "Logbook lines";
protected static final String LOGBOOK_POINTS_LAYER_NAME = "Logbook points";
- protected static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM");
+ protected static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd");
protected final List<ObserveMapPaneLegendItem> legendItems;
protected final List<TripMapPoint> notValidPoints = new LinkedList<>();
=====================================
client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapUIHandler.java
=====================================
@@ -123,16 +123,16 @@ public class TripMapUIHandler implements UIHandler<TripMapUI> {
if (zoomRatio != 1 && !rendererRunning) {
JMapPane mapPane = getObserveMapPane();
- log.info("Zoom ratio: " + zoomRatio);
+ log.debug("Zoom ratio: " + zoomRatio);
ReferencedEnvelope displayArea = mapPane.getDisplayArea();
double deltaWidth = displayArea.getWidth() * (zoomRatio - 1);
double deltaHeight = displayArea.getHeight() * (zoomRatio - 1);
- double ratioLeft = zoomCenter.getX() * 1d / mapPane.getWidth();
+ double ratioLeft = zoomCenter.getX() / mapPane.getWidth();
// l'axe de Y est inversé entre le référentiel du composant swing et le référentiel géographique
- double ratioTop = 1 - (zoomCenter.getY() * 1d / mapPane.getHeight());
+ double ratioTop = 1 - (zoomCenter.getY() / mapPane.getHeight());
double deltaLeft = deltaWidth * ratioLeft;
double deltaRight = deltaLeft - deltaWidth;
=====================================
client/datasource/editor/ps/src/main/resources/map/ps-style.xml
=====================================
@@ -58,7 +58,7 @@
<Font>
<CssParameter name="font-size">14</CssParameter>
<CssParameter name="font-style">normal</CssParameter>
- <CssParameter name="font-weight">bold</CssParameter>
+ <CssParameter name="font-family">Sans-Serif</CssParameter>
</Font>
</TextSymbolizer>
</Rule>
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/b9d86eb83242e40585297e2bc…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/b9d86eb83242e40585297e2bc…
You're receiving this email because of your account on gitlab.com.
1
0