Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe

Commits:

16 changed files:

Changes:

  • client/core/src/main/java/fr/ird/observe/client/datasource/api/data/InsertMissingReferentialTask.java
    ... ... @@ -26,6 +26,7 @@ import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
    26 26
     import fr.ird.observe.client.datasource.usage.UsageForDisplayUIHandler;
    
    27 27
     import fr.ird.observe.dto.ProgressionModel;
    
    28 28
     import fr.ird.observe.dto.ToolkitIdLabel;
    
    29
    +import fr.ird.observe.dto.data.RootOpenableDto;
    
    29 30
     import fr.ird.observe.dto.referential.ReferentialDto;
    
    30 31
     import fr.ird.observe.services.service.referential.ReferentialService;
    
    31 32
     import fr.ird.observe.spi.decoration.I18nDecoratorHelper;
    
    ... ... @@ -51,14 +52,16 @@ import static io.ultreia.java4all.i18n.I18n.t;
    51 52
      */
    
    52 53
     public class InsertMissingReferentialTask extends DataTaskSupport {
    
    53 54
     
    
    55
    +    private final Class<? extends RootOpenableDto> dataType;
    
    54 56
         private final Collection<String> idsToCopy;
    
    55 57
     
    
    56
    -    public static InsertMissingReferentialTask of(TaskSide taskSide, Collection<String> idsToCopy) {
    
    57
    -        return new InsertMissingReferentialTask(taskSide, idsToCopy);
    
    58
    +    public static InsertMissingReferentialTask of(TaskSide taskSide, Class<? extends RootOpenableDto> dataType, Collection<String> idsToCopy) {
    
    59
    +        return new InsertMissingReferentialTask(taskSide, dataType, idsToCopy);
    
    58 60
         }
    
    59 61
     
    
    60
    -    protected InsertMissingReferentialTask(TaskSide taskSide, Collection<String> idsToCopy) {
    
    62
    +    protected InsertMissingReferentialTask(TaskSide taskSide, Class<? extends RootOpenableDto> dataType, Collection<String> idsToCopy) {
    
    61 63
             super(taskSide, taskSide.getCopyLabelKey(), taskSide.getCopyIcon());
    
    64
    +        this.dataType = dataType;
    
    62 65
             this.idsToCopy = Objects.requireNonNull(idsToCopy);
    
    63 66
         }
    
    64 67
     
    
    ... ... @@ -79,7 +82,7 @@ public class InsertMissingReferentialTask extends DataTaskSupport {
    79 82
             ReferentialService targetReferentialService = targetSource.getReferentialService();
    
    80 83
             ReferentialIds targetSourceReferential = targetReferentialService.getReferentialIds();
    
    81 84
             MissingReferentialRequest missingReferentialRequest = MissingReferentialRequest.of(targetSourceReferential.getIds(), idsToCopy.toArray(new String[0]));
    
    82
    -        MissingReferentialResult missingReferentialResult = incomingSource.getReferentialService().computeMissingReferential(missingReferentialRequest);
    
    85
    +        MissingReferentialResult missingReferentialResult = incomingSource.getRootOpenableService().computeMissingReferential(dataType, missingReferentialRequest);
    
    83 86
     
    
    84 87
             progressModel.increments();
    
    85 88
     
    

  • client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/Apply.java
    ... ... @@ -32,6 +32,7 @@ import fr.ird.observe.client.datasource.api.data.InsertMissingReferentialTask;
    32 32
     import fr.ird.observe.client.datasource.api.data.TaskSide;
    
    33 33
     import fr.ird.observe.client.datasource.api.data.UserCancelException;
    
    34 34
     import fr.ird.observe.dto.ProgressionModel;
    
    35
    +import fr.ird.observe.dto.data.RootOpenableDto;
    
    35 36
     import org.apache.logging.log4j.LogManager;
    
    36 37
     import org.apache.logging.log4j.Logger;
    
    37 38
     import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardState;
    
    ... ... @@ -68,6 +69,8 @@ public class Apply extends DataSynchroUIActionSupport {
    68 69
         private WizardState doApply() {
    
    69 70
     
    
    70 71
             DataSynchroModel stepModel = ui.getStepModel();
    
    72
    +        String moduleName = stepModel.getLeftSelectionDataModel().getConfig().getModuleName();
    
    73
    +        Class<? extends RootOpenableDto> dataType = "ps".equals(moduleName) ? fr.ird.observe.dto.data.ps.common.TripDto.class : fr.ird.observe.dto.data.ll.common.TripDto.class;
    
    71 74
             ObserveSwingDataSource leftSource = stepModel.getLeftSource();
    
    72 75
             ObserveSwingDataSource rightSource = stepModel.getRightSource();
    
    73 76
             DefaultListModel<DataTaskSupport> tasks = stepModel.getTasks();
    
    ... ... @@ -105,12 +108,12 @@ public class Apply extends DataSynchroUIActionSupport {
    105 108
             if (!idsToCopyToLeft.isEmpty()) {
    
    106 109
                 stepsCount.addAndGet(3);
    
    107 110
                 // first  add missing referential to left
    
    108
    -            finalTasksToConsume.add(0, InsertMissingReferentialTask.of(TaskSide.FROM_RIGHT, idsToCopyToLeft));
    
    111
    +            finalTasksToConsume.add(0, InsertMissingReferentialTask.of(TaskSide.FROM_RIGHT, dataType, idsToCopyToLeft));
    
    109 112
             }
    
    110 113
             if (!idsToCopyToRight.isEmpty()) {
    
    111 114
                 stepsCount.addAndGet(3);
    
    112 115
                 // first add missing referential to right
    
    113
    -            finalTasksToConsume.add(0, InsertMissingReferentialTask.of(TaskSide.FROM_LEFT, idsToCopyToRight));
    
    116
    +            finalTasksToConsume.add(0, InsertMissingReferentialTask.of(TaskSide.FROM_LEFT, dataType, idsToCopyToRight));
    
    114 117
             }
    
    115 118
             int totalStep = stepsCount.get();
    
    116 119
             log.info("Total step computed: " + totalStep);
    

  • core/persistence/java/src/main/java/fr/ird/observe/entities/ObserveTopiaApplicationContext.java
    ... ... @@ -28,7 +28,10 @@ import fr.ird.observe.dto.db.DatabaseNotFoundException;
    28 28
     import fr.ird.observe.dto.db.configuration.ObserveDataSourceConfiguration;
    
    29 29
     import fr.ird.observe.dto.referential.ReferentialDto;
    
    30 30
     import fr.ird.observe.entities.data.DataGroupByEntity;
    
    31
    +import fr.ird.observe.spi.ObservePersistenceBusinessProject;
    
    31 32
     import fr.ird.observe.spi.module.BusinessProject;
    
    33
    +import fr.ird.observe.spi.referential.ReferentialIds;
    
    34
    +import fr.ird.observe.spi.referential.ReferentialIdsBuilder;
    
    32 35
     import fr.ird.observe.spi.referential.differential.DifferentialMetaModel;
    
    33 36
     import fr.ird.observe.spi.referential.synchro.OneSideSqlResultBuilder;
    
    34 37
     import fr.ird.observe.spi.script.ToolkitEntitySqlScriptModel;
    
    ... ... @@ -48,7 +51,6 @@ import org.nuiton.topia.service.sql.plan.replicate.TopiaEntitySqlReplicatePlanMo
    48 51
     import org.nuiton.topia.service.sql.request.ReplicatePartialRequestCallback;
    
    49 52
     import org.nuiton.topia.service.sql.usage.TopiaEntitySqlUsageModel;
    
    50 53
     
    
    51
    -import java.time.Duration;
    
    52 54
     import java.util.Date;
    
    53 55
     import java.util.Set;
    
    54 56
     import java.util.function.Consumer;
    
    ... ... @@ -75,7 +77,7 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
    75 77
                             getTopiaFiresSupport(),
    
    76 78
                             getTopiaIdFactory(),
    
    77 79
                             getSessionRegistry(),
    
    78
    -                        Duration.ofMinutes(1),
    
    80
    +                        null,/* FIXME We dont not need this, this is too much for the purpose (creating thread... for counting time berk)...Duration.ofMinutes(1),*/
    
    79 81
                             getConfiguration(),
    
    80 82
                             getDaoMapping()
    
    81 83
                     )
    
    ... ... @@ -99,6 +101,11 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
    99 101
             return ObserveTopiaEntitySqlModelResource.get().newOneSideSqlResultBuilder(context, defaultLastUpdateDate);
    
    100 102
         }
    
    101 103
     
    
    104
    +    @Override
    
    105
    +    public ReferentialIds getReferentialIds(Class<? extends TopiaEntity> dataType, String... ids) {
    
    106
    +        return ReferentialIdsBuilder.builder(this, ObservePersistenceBusinessProject.get(), this, dataType, ids).build(this);
    
    107
    +    }
    
    108
    +
    
    102 109
         @Override
    
    103 110
         public final TagValues getPersistenceTagValues() {
    
    104 111
             return ObserveTopiaEntitySqlModelResource.get().getPersistenceTagValues();
    

  • core/persistence/java/src/main/java/fr/ird/observe/entities/ObserveTopiaPersistenceContext.java
    ... ... @@ -35,7 +35,6 @@ import fr.ird.observe.spi.navigation.parent.ObserveToParentIdProviderImpl;
    35 35
     import fr.ird.observe.spi.report.ObserveDefaultReportRequestExecutor;
    
    36 36
     import org.apache.logging.log4j.LogManager;
    
    37 37
     import org.apache.logging.log4j.Logger;
    
    38
    -import org.nuiton.topia.persistence.TopiaEntity;
    
    39 38
     import org.nuiton.topia.persistence.TopiaPersistenceContextConstructorParameterSupport;
    
    40 39
     import org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContextConstructorParameter;
    
    41 40
     import org.nuiton.topia.persistence.script.SqlScriptReader;
    
    ... ... @@ -81,11 +80,6 @@ public class ObserveTopiaPersistenceContext extends AbstractObserveTopiaPersiste
    81 80
             return new ObserveDefaultReportRequestExecutor(referentialLocale, this, daoSupplier);
    
    82 81
         }
    
    83 82
     
    
    84
    -    @Override
    
    85
    -    public <E extends TopiaEntity> ToolkitTopiaDao<E> getDao(Class<E> entityClass) {
    
    86
    -        return (ToolkitTopiaDao<E>) super.getDao(entityClass);
    
    87
    -    }
    
    88
    -
    
    89 83
         @Override
    
    90 84
         public ObserveToParentIdProvider getToParentIdProvider() {
    
    91 85
             return (ObserveToParentIdProvider) super.getToParentIdProvider();
    

  • core/persistence/test/src/test/java/fr/ird/observe/persistence/test/request/GetReferentialIdsTest.java
    1
    +package fr.ird.observe.persistence.test.request;
    
    2
    +
    
    3
    +/*-
    
    4
    + * #%L
    
    5
    + * ObServe Core :: Persistence :: Test
    
    6
    + * %%
    
    7
    + * Copyright (C) 2008 - 2022 IRD, Code Lutin, Ultreia.io
    
    8
    + * %%
    
    9
    + * This program is free software: you can redistribute it and/or modify
    
    10
    + * it under the terms of the GNU General Public License as
    
    11
    + * published by the Free Software Foundation, either version 3 of the
    
    12
    + * License, or (at your option) any later version.
    
    13
    + *
    
    14
    + * This program is distributed in the hope that it will be useful,
    
    15
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    16
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    17
    + * GNU General Public License for more details.
    
    18
    + *
    
    19
    + * You should have received a copy of the GNU General Public
    
    20
    + * License along with this program.  If not, see
    
    21
    + * <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    22
    + * #L%
    
    23
    + */
    
    24
    +
    
    25
    +import fr.ird.observe.dto.BusinessDto;
    
    26
    +import fr.ird.observe.dto.referential.ReferentialDto;
    
    27
    +import fr.ird.observe.entities.ObserveTopiaApplicationContext;
    
    28
    +import fr.ird.observe.persistence.test.ObservePersistenceFixtures;
    
    29
    +import fr.ird.observe.persistence.test.PersistenceTestSupportRead;
    
    30
    +import fr.ird.observe.spi.referential.ReferentialIds;
    
    31
    +import fr.ird.observe.test.DatabaseName;
    
    32
    +import fr.ird.observe.test.spi.DatabaseNameConfiguration;
    
    33
    +import io.ultreia.java4all.lang.Objects2;
    
    34
    +import org.junit.Assert;
    
    35
    +import org.junit.Before;
    
    36
    +import org.junit.Test;
    
    37
    +import org.junit.runner.RunWith;
    
    38
    +import org.junit.runners.Parameterized;
    
    39
    +import org.nuiton.topia.persistence.TopiaEntity;
    
    40
    +
    
    41
    +import java.util.Arrays;
    
    42
    +import java.util.LinkedList;
    
    43
    +import java.util.List;
    
    44
    +import java.util.Map;
    
    45
    +import java.util.Set;
    
    46
    +
    
    47
    +/**
    
    48
    + * Created on 12/04/2022.
    
    49
    + *
    
    50
    + * @author Tony Chemit - dev@tchemit.fr
    
    51
    + * @since 9.0.0
    
    52
    + */
    
    53
    +@RunWith(Parameterized.class)
    
    54
    +@DatabaseNameConfiguration(DatabaseName.data)
    
    55
    +public class GetReferentialIdsTest extends PersistenceTestSupportRead {
    
    56
    +
    
    57
    +    @Parameterized.Parameter
    
    58
    +    public String classifier;
    
    59
    +    @Parameterized.Parameter(1)
    
    60
    +    public Class<? extends TopiaEntity> entityType;
    
    61
    +    @Parameterized.Parameter(2)
    
    62
    +    public Set<String> tripId;
    
    63
    +    private Map<String, Long> expectedResults;
    
    64
    +
    
    65
    +    @Parameterized.Parameters(name = "{0}")
    
    66
    +    public static Iterable<Object[]> data() {
    
    67
    +        return Arrays.asList(new Object[]{CLASSIFIER_DATA_PS, fr.ird.observe.entities.data.ps.common.Trip.class, Set.of(ObservePersistenceFixtures.getPsCommonTripId())},
    
    68
    +                             new Object[]{CLASSIFIER_DATA_LL, fr.ird.observe.entities.data.ll.common.Trip.class, Set.of(ObservePersistenceFixtures.getLlCommonTripId())},
    
    69
    +                             new Object[]{CLASSIFIER_DATA_PS + "-all", fr.ird.observe.entities.data.ps.common.Trip.class, Set.of()},
    
    70
    +                             new Object[]{CLASSIFIER_DATA_LL + "-all", fr.ird.observe.entities.data.ll.common.Trip.class, Set.of()}
    
    71
    +        );
    
    72
    +    }
    
    73
    +
    
    74
    +    @Before
    
    75
    +    public void setUp() {
    
    76
    +        expectedResults = ObservePersistenceFixtures.loadFixturesMapCount("persistence/referential_ids_count/" + classifier);
    
    77
    +    }
    
    78
    +
    
    79
    +    @Test
    
    80
    +    public void test() throws Exception {
    
    81
    +
    
    82
    +        ObserveTopiaApplicationContext applicationContext = localTestMethodResource.getTopiaApplicationContext();
    
    83
    +        ReferentialIds actual = applicationContext.getReferentialIds(entityType, tripId.toArray(new String[0]));
    
    84
    +
    
    85
    +        if (!ObservePersistenceFixtures.WITH_ASSERT) {
    
    86
    +            List<String> actualList = new LinkedList<>();
    
    87
    +            for (Map.Entry<Class<? extends ReferentialDto>, Set<String>> entry : actual.getIds().entrySet()) {
    
    88
    +                Class<? extends ReferentialDto> dtoType = entry.getKey();
    
    89
    +                actualList.add(String.format("%s=%d", dtoType.getName(), entry.getValue().size()));
    
    90
    +            }
    
    91
    +            actualList.sort(String::compareTo);
    
    92
    +            System.out.println(String.join("\n", actualList));
    
    93
    +            return;
    
    94
    +        }
    
    95
    +        for (Map.Entry<String, Long> entry : expectedResults.entrySet()) {
    
    96
    +            String table = entry.getKey();
    
    97
    +            Class<? extends BusinessDto> dtoType = Objects2.forName(table);
    
    98
    +            Set<String> actualIds = actual.getIds().getOrDefault(dtoType, Set.of());
    
    99
    +            int actualCount = actualIds.size();
    
    100
    +            long expectedCount = expectedResults.get(table);
    
    101
    +            Assert.assertEquals("bad size for table: " + table, expectedCount, actualCount);
    
    102
    +        }
    
    103
    +    }
    
    104
    +
    
    105
    +}
    
    106
    +

  • core/persistence/test/src/test/resources/fixtures/persistence/referential_ids_count/data-ll-all.properties
    1
    +###
    
    2
    +# #%L
    
    3
    +# ObServe Core :: Persistence :: Test
    
    4
    +# %%
    
    5
    +# Copyright (C) 2008 - 2022 IRD, Code Lutin, Ultreia.io
    
    6
    +# %%
    
    7
    +# This program is free software: you can redistribute it and/or modify
    
    8
    +# it under the terms of the GNU General Public License as
    
    9
    +# published by the Free Software Foundation, either version 3 of the
    
    10
    +# License, or (at your option) any later version.
    
    11
    +#
    
    12
    +# This program is distributed in the hope that it will be useful,
    
    13
    +# but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    14
    +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    15
    +# GNU General Public License for more details.
    
    16
    +#
    
    17
    +# You should have received a copy of the GNU General Public
    
    18
    +# License along with this program.  If not, see
    
    19
    +# <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    20
    +# #L%
    
    21
    +###
    
    22
    +fr.ird.observe.dto.referential.common.DataQualityDto=1
    
    23
    +fr.ird.observe.dto.referential.common.FpaZoneDto=2
    
    24
    +fr.ird.observe.dto.referential.common.GearCharacteristicDto=1
    
    25
    +fr.ird.observe.dto.referential.common.GearDto=1
    
    26
    +fr.ird.observe.dto.referential.common.HarbourDto=3
    
    27
    +fr.ird.observe.dto.referential.common.LengthMeasureMethodDto=1
    
    28
    +fr.ird.observe.dto.referential.common.OceanDto=1
    
    29
    +fr.ird.observe.dto.referential.common.PersonDto=6
    
    30
    +fr.ird.observe.dto.referential.common.SexDto=3
    
    31
    +fr.ird.observe.dto.referential.common.SizeMeasureTypeDto=4
    
    32
    +fr.ird.observe.dto.referential.common.SpeciesDto=31
    
    33
    +fr.ird.observe.dto.referential.common.VesselDto=3
    
    34
    +fr.ird.observe.dto.referential.common.WeightMeasureMethodDto=2
    
    35
    +fr.ird.observe.dto.referential.common.WeightMeasureTypeDto=3
    
    36
    +fr.ird.observe.dto.referential.ll.common.BaitSettingStatusDto=3
    
    37
    +fr.ird.observe.dto.referential.ll.common.BaitTypeDto=4
    
    38
    +fr.ird.observe.dto.referential.ll.common.CatchFateDto=3
    
    39
    +fr.ird.observe.dto.referential.ll.common.HealthStatusDto=3
    
    40
    +fr.ird.observe.dto.referential.ll.common.HookSizeDto=3
    
    41
    +fr.ird.observe.dto.referential.ll.common.HookTypeDto=4
    
    42
    +fr.ird.observe.dto.referential.ll.common.LightsticksColorDto=1
    
    43
    +fr.ird.observe.dto.referential.ll.common.LightsticksTypeDto=1
    
    44
    +fr.ird.observe.dto.referential.ll.common.LineTypeDto=5
    
    45
    +fr.ird.observe.dto.referential.ll.common.MitigationTypeDto=3
    
    46
    +fr.ird.observe.dto.referential.ll.common.ObservationMethodDto=2
    
    47
    +fr.ird.observe.dto.referential.ll.common.OnBoardProcessingDto=1
    
    48
    +fr.ird.observe.dto.referential.ll.common.ProgramDto=3
    
    49
    +fr.ird.observe.dto.referential.ll.common.SettingShapeDto=4
    
    50
    +fr.ird.observe.dto.referential.ll.common.TripTypeDto=1
    
    51
    +fr.ird.observe.dto.referential.ll.common.VesselActivityDto=2
    
    52
    +fr.ird.observe.dto.referential.ll.landing.CompanyDto=2
    
    53
    +fr.ird.observe.dto.referential.ll.landing.DataSourceDto=1
    
    54
    +fr.ird.observe.dto.referential.ll.observation.EncounterTypeDto=2
    
    55
    +fr.ird.observe.dto.referential.ll.observation.HookPositionDto=4
    
    56
    +fr.ird.observe.dto.referential.ll.observation.ItemHorizontalPositionDto=1
    
    57
    +fr.ird.observe.dto.referential.ll.observation.ItemVerticalPositionDto=1
    
    58
    +fr.ird.observe.dto.referential.ll.observation.MaturityStatusDto=1
    
    59
    +fr.ird.observe.dto.referential.ll.observation.SensorBrandDto=2
    
    60
    +fr.ird.observe.dto.referential.ll.observation.SensorDataFormatDto=1
    
    61
    +fr.ird.observe.dto.referential.ll.observation.SensorTypeDto=1
    
    62
    +fr.ird.observe.dto.referential.ll.observation.StomachFullnessDto=1

  • core/persistence/test/src/test/resources/fixtures/persistence/referential_ids_count/data-ll.properties
    1
    +###
    
    2
    +# #%L
    
    3
    +# ObServe Core :: Persistence :: Test
    
    4
    +# %%
    
    5
    +# Copyright (C) 2008 - 2022 IRD, Code Lutin, Ultreia.io
    
    6
    +# %%
    
    7
    +# This program is free software: you can redistribute it and/or modify
    
    8
    +# it under the terms of the GNU General Public License as
    
    9
    +# published by the Free Software Foundation, either version 3 of the
    
    10
    +# License, or (at your option) any later version.
    
    11
    +#
    
    12
    +# This program is distributed in the hope that it will be useful,
    
    13
    +# but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    14
    +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    15
    +# GNU General Public License for more details.
    
    16
    +#
    
    17
    +# You should have received a copy of the GNU General Public
    
    18
    +# License along with this program.  If not, see
    
    19
    +# <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    20
    +# #L%
    
    21
    +###
    
    22
    +fr.ird.observe.dto.referential.common.DataQualityDto=1
    
    23
    +fr.ird.observe.dto.referential.common.FpaZoneDto=1
    
    24
    +fr.ird.observe.dto.referential.common.GearCharacteristicDto=1
    
    25
    +fr.ird.observe.dto.referential.common.GearDto=1
    
    26
    +fr.ird.observe.dto.referential.common.HarbourDto=2
    
    27
    +fr.ird.observe.dto.referential.common.LengthMeasureMethodDto=1
    
    28
    +fr.ird.observe.dto.referential.common.OceanDto=1
    
    29
    +fr.ird.observe.dto.referential.common.PersonDto=3
    
    30
    +fr.ird.observe.dto.referential.common.SexDto=2
    
    31
    +fr.ird.observe.dto.referential.common.SizeMeasureTypeDto=3
    
    32
    +fr.ird.observe.dto.referential.common.SpeciesDto=30
    
    33
    +fr.ird.observe.dto.referential.common.VesselDto=2
    
    34
    +fr.ird.observe.dto.referential.common.WeightMeasureMethodDto=2
    
    35
    +fr.ird.observe.dto.referential.common.WeightMeasureTypeDto=3
    
    36
    +fr.ird.observe.dto.referential.ll.common.BaitSettingStatusDto=3
    
    37
    +fr.ird.observe.dto.referential.ll.common.BaitTypeDto=4
    
    38
    +fr.ird.observe.dto.referential.ll.common.CatchFateDto=3
    
    39
    +fr.ird.observe.dto.referential.ll.common.HealthStatusDto=3
    
    40
    +fr.ird.observe.dto.referential.ll.common.HookSizeDto=3
    
    41
    +fr.ird.observe.dto.referential.ll.common.HookTypeDto=4
    
    42
    +fr.ird.observe.dto.referential.ll.common.LineTypeDto=5
    
    43
    +fr.ird.observe.dto.referential.ll.common.MitigationTypeDto=3
    
    44
    +fr.ird.observe.dto.referential.ll.common.ObservationMethodDto=1
    
    45
    +fr.ird.observe.dto.referential.ll.common.OnBoardProcessingDto=1
    
    46
    +fr.ird.observe.dto.referential.ll.common.ProgramDto=2
    
    47
    +fr.ird.observe.dto.referential.ll.common.SettingShapeDto=4
    
    48
    +fr.ird.observe.dto.referential.ll.common.TripTypeDto=1
    
    49
    +fr.ird.observe.dto.referential.ll.common.VesselActivityDto=2
    
    50
    +fr.ird.observe.dto.referential.ll.landing.CompanyDto=2
    
    51
    +fr.ird.observe.dto.referential.ll.landing.DataSourceDto=1
    
    52
    +fr.ird.observe.dto.referential.ll.observation.EncounterTypeDto=2
    
    53
    +fr.ird.observe.dto.referential.ll.observation.HookPositionDto=1
    
    54
    +fr.ird.observe.dto.referential.ll.observation.ItemHorizontalPositionDto=1
    
    55
    +fr.ird.observe.dto.referential.ll.observation.ItemVerticalPositionDto=1
    
    56
    +fr.ird.observe.dto.referential.ll.observation.MaturityStatusDto=1
    
    57
    +fr.ird.observe.dto.referential.ll.observation.SensorBrandDto=2
    
    58
    +fr.ird.observe.dto.referential.ll.observation.SensorDataFormatDto=1
    
    59
    +fr.ird.observe.dto.referential.ll.observation.SensorTypeDto=1
    
    60
    +fr.ird.observe.dto.referential.ll.observation.StomachFullnessDto=1

  • core/persistence/test/src/test/resources/fixtures/persistence/referential_ids_count/data-ps-all.properties
    1
    +###
    
    2
    +# #%L
    
    3
    +# ObServe Core :: Persistence :: Test
    
    4
    +# %%
    
    5
    +# Copyright (C) 2008 - 2022 IRD, Code Lutin, Ultreia.io
    
    6
    +# %%
    
    7
    +# This program is free software: you can redistribute it and/or modify
    
    8
    +# it under the terms of the GNU General Public License as
    
    9
    +# published by the Free Software Foundation, either version 3 of the
    
    10
    +# License, or (at your option) any later version.
    
    11
    +#
    
    12
    +# This program is distributed in the hope that it will be useful,
    
    13
    +# but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    14
    +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    15
    +# GNU General Public License for more details.
    
    16
    +#
    
    17
    +# You should have received a copy of the GNU General Public
    
    18
    +# License along with this program.  If not, see
    
    19
    +# <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    20
    +# #L%
    
    21
    +###
    
    22
    +fr.ird.observe.dto.referential.common.CountryDto=4
    
    23
    +fr.ird.observe.dto.referential.common.DataQualityDto=2
    
    24
    +fr.ird.observe.dto.referential.common.FpaZoneDto=4
    
    25
    +fr.ird.observe.dto.referential.common.GearCharacteristicDto=3
    
    26
    +fr.ird.observe.dto.referential.common.GearDto=15
    
    27
    +fr.ird.observe.dto.referential.common.HarbourDto=2
    
    28
    +fr.ird.observe.dto.referential.common.LengthMeasureMethodDto=3
    
    29
    +fr.ird.observe.dto.referential.common.OceanDto=2
    
    30
    +fr.ird.observe.dto.referential.common.PersonDto=7
    
    31
    +fr.ird.observe.dto.referential.common.SexDto=4
    
    32
    +fr.ird.observe.dto.referential.common.SizeMeasureTypeDto=7
    
    33
    +fr.ird.observe.dto.referential.common.SpeciesDto=52
    
    34
    +fr.ird.observe.dto.referential.common.SpeciesGroupReleaseModeDto=5
    
    35
    +fr.ird.observe.dto.referential.common.VesselDto=6
    
    36
    +fr.ird.observe.dto.referential.common.WeightMeasureMethodDto=4
    
    37
    +fr.ird.observe.dto.referential.common.WeightMeasureTypeDto=1
    
    38
    +fr.ird.observe.dto.referential.common.WindDto=9
    
    39
    +fr.ird.observe.dto.referential.ps.common.AcquisitionStatusDto=2
    
    40
    +fr.ird.observe.dto.referential.ps.common.ObjectMaterialDto=76
    
    41
    +fr.ird.observe.dto.referential.ps.common.ObjectOperationDto=5
    
    42
    +fr.ird.observe.dto.referential.ps.common.ObservedSystemDto=12
    
    43
    +fr.ird.observe.dto.referential.ps.common.ProgramDto=3
    
    44
    +fr.ird.observe.dto.referential.ps.common.ReasonForNoFishingDto=10
    
    45
    +fr.ird.observe.dto.referential.ps.common.ReasonForNullSetDto=6
    
    46
    +fr.ird.observe.dto.referential.ps.common.SampleTypeDto=2
    
    47
    +fr.ird.observe.dto.referential.ps.common.SchoolTypeDto=2
    
    48
    +fr.ird.observe.dto.referential.ps.common.SpeciesFateDto=11
    
    49
    +fr.ird.observe.dto.referential.ps.common.TransmittingBuoyOperationDto=3
    
    50
    +fr.ird.observe.dto.referential.ps.common.TransmittingBuoyOwnershipDto=4
    
    51
    +fr.ird.observe.dto.referential.ps.common.TransmittingBuoyTypeDto=10
    
    52
    +fr.ird.observe.dto.referential.ps.common.VesselActivityDto=19
    
    53
    +fr.ird.observe.dto.referential.ps.common.WeightCategoryDto=5
    
    54
    +fr.ird.observe.dto.referential.ps.landing.DestinationDto=2
    
    55
    +fr.ird.observe.dto.referential.ps.landing.FateDto=1
    
    56
    +fr.ird.observe.dto.referential.ps.localmarket.PackagingDto=2
    
    57
    +fr.ird.observe.dto.referential.ps.logbook.SampleQualityDto=1
    
    58
    +fr.ird.observe.dto.referential.ps.logbook.WellContentStatusDto=1
    
    59
    +fr.ird.observe.dto.referential.ps.logbook.WellSamplingConformityDto=1
    
    60
    +fr.ird.observe.dto.referential.ps.logbook.WellSamplingStatusDto=1
    
    61
    +fr.ird.observe.dto.referential.ps.observation.DetectionModeDto=6
    
    62
    +fr.ird.observe.dto.referential.ps.observation.InformationSourceDto=2
    
    63
    +fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseConformityDto=3
    
    64
    +fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseStatusDto=4
    
    65
    +fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleasingTimeDto=4
    
    66
    +fr.ird.observe.dto.referential.ps.observation.ReasonForDiscardDto=5
    
    67
    +fr.ird.observe.dto.referential.ps.observation.SpeciesStatusDto=4
    
    68
    +fr.ird.observe.dto.referential.ps.observation.SurroundingActivityDto=7

  • core/persistence/test/src/test/resources/fixtures/persistence/referential_ids_count/data-ps.properties
    1
    +###
    
    2
    +# #%L
    
    3
    +# ObServe Core :: Persistence :: Test
    
    4
    +# %%
    
    5
    +# Copyright (C) 2008 - 2022 IRD, Code Lutin, Ultreia.io
    
    6
    +# %%
    
    7
    +# This program is free software: you can redistribute it and/or modify
    
    8
    +# it under the terms of the GNU General Public License as
    
    9
    +# published by the Free Software Foundation, either version 3 of the
    
    10
    +# License, or (at your option) any later version.
    
    11
    +#
    
    12
    +# This program is distributed in the hope that it will be useful,
    
    13
    +# but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    14
    +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    15
    +# GNU General Public License for more details.
    
    16
    +#
    
    17
    +# You should have received a copy of the GNU General Public
    
    18
    +# License along with this program.  If not, see
    
    19
    +# <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    20
    +# #L%
    
    21
    +###
    
    22
    +fr.ird.observe.dto.referential.common.CountryDto=4
    
    23
    +fr.ird.observe.dto.referential.common.DataQualityDto=2
    
    24
    +fr.ird.observe.dto.referential.common.FpaZoneDto=2
    
    25
    +fr.ird.observe.dto.referential.common.GearCharacteristicDto=2
    
    26
    +fr.ird.observe.dto.referential.common.GearDto=1
    
    27
    +fr.ird.observe.dto.referential.common.HarbourDto=1
    
    28
    +fr.ird.observe.dto.referential.common.LengthMeasureMethodDto=3
    
    29
    +fr.ird.observe.dto.referential.common.OceanDto=1
    
    30
    +fr.ird.observe.dto.referential.common.PersonDto=3
    
    31
    +fr.ird.observe.dto.referential.common.SexDto=3
    
    32
    +fr.ird.observe.dto.referential.common.SizeMeasureTypeDto=5
    
    33
    +fr.ird.observe.dto.referential.common.SpeciesDto=20
    
    34
    +fr.ird.observe.dto.referential.common.SpeciesGroupReleaseModeDto=2
    
    35
    +fr.ird.observe.dto.referential.common.VesselDto=3
    
    36
    +fr.ird.observe.dto.referential.common.WeightMeasureMethodDto=4
    
    37
    +fr.ird.observe.dto.referential.common.WeightMeasureTypeDto=1
    
    38
    +fr.ird.observe.dto.referential.common.WindDto=6
    
    39
    +fr.ird.observe.dto.referential.ps.common.AcquisitionStatusDto=2
    
    40
    +fr.ird.observe.dto.referential.ps.common.ObjectMaterialDto=6
    
    41
    +fr.ird.observe.dto.referential.ps.common.ObjectOperationDto=3
    
    42
    +fr.ird.observe.dto.referential.ps.common.ObservedSystemDto=8
    
    43
    +fr.ird.observe.dto.referential.ps.common.ProgramDto=2
    
    44
    +fr.ird.observe.dto.referential.ps.common.ReasonForNoFishingDto=6
    
    45
    +fr.ird.observe.dto.referential.ps.common.ReasonForNullSetDto=2
    
    46
    +fr.ird.observe.dto.referential.ps.common.SampleTypeDto=2
    
    47
    +fr.ird.observe.dto.referential.ps.common.SchoolTypeDto=2
    
    48
    +fr.ird.observe.dto.referential.ps.common.SpeciesFateDto=6
    
    49
    +fr.ird.observe.dto.referential.ps.common.TransmittingBuoyOperationDto=3
    
    50
    +fr.ird.observe.dto.referential.ps.common.TransmittingBuoyOwnershipDto=3
    
    51
    +fr.ird.observe.dto.referential.ps.common.TransmittingBuoyTypeDto=5
    
    52
    +fr.ird.observe.dto.referential.ps.common.VesselActivityDto=12
    
    53
    +fr.ird.observe.dto.referential.ps.common.WeightCategoryDto=5
    
    54
    +fr.ird.observe.dto.referential.ps.landing.DestinationDto=2
    
    55
    +fr.ird.observe.dto.referential.ps.landing.FateDto=1
    
    56
    +fr.ird.observe.dto.referential.ps.localmarket.PackagingDto=2
    
    57
    +fr.ird.observe.dto.referential.ps.logbook.SampleQualityDto=1
    
    58
    +fr.ird.observe.dto.referential.ps.logbook.WellContentStatusDto=1
    
    59
    +fr.ird.observe.dto.referential.ps.logbook.WellSamplingConformityDto=1
    
    60
    +fr.ird.observe.dto.referential.ps.logbook.WellSamplingStatusDto=1
    
    61
    +fr.ird.observe.dto.referential.ps.observation.DetectionModeDto=6
    
    62
    +fr.ird.observe.dto.referential.ps.observation.InformationSourceDto=2
    
    63
    +fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseConformityDto=2
    
    64
    +fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleaseStatusDto=2
    
    65
    +fr.ird.observe.dto.referential.ps.observation.NonTargetCatchReleasingTimeDto=2
    
    66
    +fr.ird.observe.dto.referential.ps.observation.ReasonForDiscardDto=2
    
    67
    +fr.ird.observe.dto.referential.ps.observation.SpeciesStatusDto=2
    
    68
    +fr.ird.observe.dto.referential.ps.observation.SurroundingActivityDto=4

  • core/services/local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java
    ... ... @@ -86,6 +86,7 @@ import fr.ird.observe.spi.validation.ServiceValidationContext;
    86 86
     import io.ultreia.java4all.util.TimeLog;
    
    87 87
     import org.nuiton.validator.NuitonValidatorScope;
    
    88 88
     
    
    89
    +import java.nio.file.Path;
    
    89 90
     import java.util.Date;
    
    90 91
     import java.util.LinkedHashSet;
    
    91 92
     import java.util.List;
    
    ... ... @@ -124,6 +125,11 @@ public abstract class ObserveServiceLocal implements ObserveService, ServiceCont
    124 125
             return referentialLocale;
    
    125 126
         }
    
    126 127
     
    
    128
    +    @Override
    
    129
    +    public final Path getTemporaryDirectoryRoot() {
    
    130
    +        return serviceContext().serviceInitializer().getInitializerConfig().getTemporaryDirectoryRoot().toPath();
    
    131
    +    }
    
    132
    +
    
    127 133
         @Override
    
    128 134
         public final DecoratorService getDecoratorService() {
    
    129 135
             return serviceContext.getDecoratorService();
    

  • core/services/local/src/main/java/fr/ird/observe/services/local/service/data/RootOpenableServiceLocalSupport.java
    ... ... @@ -40,6 +40,8 @@ import fr.ird.observe.services.service.data.MoveLayoutRequest;
    40 40
     import fr.ird.observe.services.service.data.RootOpenableService;
    
    41 41
     import fr.ird.observe.spi.GroupBySpiContext;
    
    42 42
     import fr.ird.observe.spi.context.RootOpenableDtoEntityContext;
    
    43
    +import fr.ird.observe.spi.referential.MissingReferentialRequest;
    
    44
    +import fr.ird.observe.spi.referential.MissingReferentialResult;
    
    43 45
     
    
    44 46
     import java.util.Date;
    
    45 47
     import java.util.List;
    
    ... ... @@ -142,5 +144,11 @@ public class RootOpenableServiceLocalSupport extends ObserveServiceLocal impleme
    142 144
             RootOpenableDtoEntityContext<?, ?, ?, ?, ?> spi = fromRootOpenableDto(dtoType);
    
    143 145
             spi.moveLayout(this, request);
    
    144 146
         }
    
    147
    +
    
    148
    +    @Override
    
    149
    +    public <D extends RootOpenableDto> MissingReferentialResult computeMissingReferential(Class<D> dtoType, MissingReferentialRequest request) {
    
    150
    +        RootOpenableDtoEntityContext<?, ?, ?, ?, ?> spi = fromRootOpenableDto(dtoType);
    
    151
    +        return getTopiaApplicationContext().computeMissingReferential(this, spi.toEntityType(), request);
    
    152
    +    }
    
    145 153
     }
    
    146 154
     

  • core/services/local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocalSupport.java
    ... ... @@ -35,8 +35,6 @@ import fr.ird.observe.services.local.service.ObserveServiceLocal;
    35 35
     import fr.ird.observe.services.service.referential.ReferentialService;
    
    36 36
     import fr.ird.observe.spi.context.ReferentialDtoEntityContext;
    
    37 37
     import fr.ird.observe.spi.module.ObserveBusinessProject;
    
    38
    -import fr.ird.observe.spi.referential.MissingReferentialRequest;
    
    39
    -import fr.ird.observe.spi.referential.MissingReferentialResult;
    
    40 38
     import fr.ird.observe.spi.referential.ReferentialIds;
    
    41 39
     import fr.ird.observe.spi.referential.differential.DifferentialMetaModel;
    
    42 40
     import org.nuiton.topia.persistence.script.TopiaSqlScript;
    
    ... ... @@ -159,11 +157,6 @@ class ReferentialServiceLocalSupport extends ObserveServiceLocal implements Refe
    159 157
             return getTopiaPersistenceContext().getReferentialIds(ObserveBusinessProject.get());
    
    160 158
         }
    
    161 159
     
    
    162
    -    @Override
    
    163
    -    public MissingReferentialResult computeMissingReferential(MissingReferentialRequest request) {
    
    164
    -        return getTopiaApplicationContext().computeMissingReferential(this, request, serviceContext().serviceInitializer().getInitializerConfig().getTemporaryDirectoryRoot().toPath());
    
    165
    -    }
    
    166
    -
    
    167 160
         @Override
    
    168 161
         public void insertMissingReferential(TopiaSqlScript sqlContent) {
    
    169 162
             getTopiaPersistenceContext().executeSqlScript(sqlContent);
    

  • core/services/test/src/main/java/fr/ird/observe/services/service/data/RootOpenableServiceFixtures.java
    ... ... @@ -46,6 +46,8 @@ import fr.ird.observe.services.service.ObserveServiceFixtures;
    46 46
     import fr.ird.observe.services.service.ReferenceServiceFixtures;
    
    47 47
     import fr.ird.observe.spi.module.BusinessModule;
    
    48 48
     import fr.ird.observe.spi.module.ObserveBusinessProject;
    
    49
    +import fr.ird.observe.spi.referential.MissingReferentialRequest;
    
    50
    +import fr.ird.observe.spi.referential.MissingReferentialResult;
    
    49 51
     import io.ultreia.java4all.lang.Strings;
    
    50 52
     import org.apache.logging.log4j.LogManager;
    
    51 53
     import org.apache.logging.log4j.Logger;
    
    ... ... @@ -275,6 +277,18 @@ public class RootOpenableServiceFixtures extends GeneratedRootOpenableServiceFix
    275 277
             return new RootOpenableServiceFixtures.SaveResult<>(createForm, createSave, updateForm, updateSave);
    
    276 278
         }
    
    277 279
     
    
    280
    +
    
    281
    +    @Override
    
    282
    +    public void computeMissingReferential(ObserveServicesProvider servicesProvider, RootOpenableService service) {
    
    283
    +        String id = getProperty("computeMissingReferential.id");
    
    284
    +        MissingReferentialResult actual = service.computeMissingReferential(TripDto.class, MissingReferentialRequest.of(Map.of(), id));
    
    285
    +        Assert.assertNotNull(actual);
    
    286
    +        Assert.assertNotNull(actual.getSqlCode());
    
    287
    +        Assert.assertNotNull(actual.getMissingIds());
    
    288
    +        MissingReferentialResult actualNull = service.computeMissingReferential(TripDto.class, MissingReferentialRequest.of(actual.getMissingIds(), id));
    
    289
    +        Assert.assertNull(actualNull);
    
    290
    +    }
    
    291
    +
    
    278 292
         @Override
    
    279 293
         public void getGroupByValue(ObserveServicesProvider servicesProvider, RootOpenableService service) {
    
    280 294
             for (Class<? extends RootOpenableDto> dtoType : ObserveBusinessProject.get().getRootOpenableDataTypes()) {
    

  • core/services/test/src/main/java/fr/ird/observe/services/service/referential/ReferentialServiceFixtures.java
    ... ... @@ -30,13 +30,10 @@ import fr.ird.observe.dto.reference.ReferentialDtoReferenceSet;
    30 30
     import fr.ird.observe.dto.referential.ps.common.ProgramDto;
    
    31 31
     import fr.ird.observe.dto.result.SaveResultDto;
    
    32 32
     import fr.ird.observe.services.ObserveServicesProvider;
    
    33
    -import fr.ird.observe.spi.referential.MissingReferentialRequest;
    
    34
    -import fr.ird.observe.spi.referential.MissingReferentialResult;
    
    35 33
     import fr.ird.observe.spi.referential.ReferentialIds;
    
    36 34
     import org.junit.Assert;
    
    37 35
     
    
    38 36
     import java.util.Collections;
    
    39
    -import java.util.LinkedHashMap;
    
    40 37
     import java.util.Set;
    
    41 38
     
    
    42 39
     public class ReferentialServiceFixtures extends GeneratedReferentialServiceFixtures {
    
    ... ... @@ -51,15 +48,6 @@ public class ReferentialServiceFixtures extends GeneratedReferentialServiceFixtu
    51 48
             Assert.assertTrue(service.exists(ProgramDto.class, newId));
    
    52 49
         }
    
    53 50
     
    
    54
    -    @Override
    
    55
    -    public void computeMissingReferential(ObserveServicesProvider servicesProvider, ReferentialService service) {
    
    56
    -        MissingReferentialResult actual = service.computeMissingReferential(MissingReferentialRequest.of(
    
    57
    -                new LinkedHashMap<>(),
    
    58
    -                getProperty("computeMissingReferential.id")
    
    59
    -        ));
    
    60
    -        Assert.assertNotNull(actual);
    
    61
    -    }
    
    62
    -
    
    63 51
         @Override
    
    64 52
         public void delete(ObserveServicesProvider servicesProvider, ReferentialService service) {
    
    65 53
             String id = getProperty("delete.id");
    

  • core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/data/RootOpenableService.properties
    ... ... @@ -19,6 +19,7 @@
    19 19
     # <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    20 20
     # #L%
    
    21 21
     ###
    
    22
    +computeMissingReferential.id=${PS_COMMON_TRIP}
    
    22 23
     data.ll.common.Trip.dependencies.count=0
    
    23 24
     data.ll.common.Trip.getBrothers.count=0
    
    24 25
     data.ll.common.Trip.getBrothersFromParent.count=1
    

  • server/core/src/main/filtered-resources/META-INF/mapping-api-client.wm
    ... ... @@ -102,6 +102,7 @@ GET /data/OpenableService/loadForm data
    102 102
     POST   /data/OpenableService/move                                           data.OpenableServiceRestApi.move
    
    103 103
     GET    /data/OpenableService/preCreate                                      data.OpenableServiceRestApi.preCreate
    
    104 104
     POST   /data/OpenableService/save                                           data.OpenableServiceRestApi.save
    
    105
    +POST   /data/RootOpenableService/computeMissingReferential                  data.RootOpenableServiceRestApi.computeMissingReferential
    
    105 106
     DELETE /data/RootOpenableService/delete                                     data.RootOpenableServiceRestApi.delete
    
    106 107
     DELETE /data/RootOpenableService/deleteLayout                               data.RootOpenableServiceRestApi.deleteLayout
    
    107 108
     GET    /data/RootOpenableService/exists                                     data.RootOpenableServiceRestApi.exists
    
    ... ... @@ -148,7 +149,6 @@ GET /data/ps/common/TripService/loadLogbookForm data
    148 149
     GET    /data/ps/common/TripService/preCreateLogbookFloatingObject           data.ps.common.TripServiceRestApi.preCreateLogbookFloatingObject
    
    149 150
     GET    /data/ps/common/TripService/preCreateObservationFloatingObject       data.ps.common.TripServiceRestApi.preCreateObservationFloatingObject
    
    150 151
     POST   /referential/ReferentialService/changeId                             referential.ReferentialServiceRestApi.changeId
    
    151
    -POST   /referential/ReferentialService/computeMissingReferential            referential.ReferentialServiceRestApi.computeMissingReferential
    
    152 152
     DELETE /referential/ReferentialService/delete                               referential.ReferentialServiceRestApi.delete
    
    153 153
     GET    /referential/ReferentialService/differentialMetaModel                referential.ReferentialServiceRestApi.differentialMetaModel
    
    154 154
     GET    /referential/ReferentialService/exists                               referential.ReferentialServiceRestApi.exists