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

Commits:

19 changed files:

Changes:

  • client/core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java
    ... ... @@ -457,7 +457,7 @@ public class ObserveSwingDataSource extends AbstractJavaBean implements ObserveS
    457 457
             log.info(String.format("Do backup of %s into: %s", this, dst));
    
    458 458
             try {
    
    459 459
                 Files.deleteIfExists(dst);
    
    460
    -            CreateDatabaseRequest request = CreateDatabaseRequest.of(false, getClientConfig().getModelVersion()).addSchema().addStandaloneTables().addAllData();
    
    460
    +            CreateDatabaseRequest request = CreateDatabaseRequest.builder(false, getClientConfig().getModelVersion()).addSchema().addStandaloneTables().addAllData().build();
    
    461 461
                 TopiaSqlScript dataDump = getDataSourceService().produceCreateSqlScript(request);
    
    462 462
                 dataDump.copy(dst);
    
    463 463
             } catch (Exception e) {
    

  • client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/save/actions/Start.java
    ... ... @@ -86,7 +86,7 @@ public class Start extends SaveLocalUIActionSupport {
    86 86
                 File backupFile = stepModel.getBackupFile();
    
    87 87
     
    
    88 88
                 DataSourceService dumpService = source.getDataSourceService();
    
    89
    -            CreateDatabaseRequest request = CreateDatabaseRequest.of(false, source.getVersion()).addSchema().addStandaloneTables().addAllData();
    
    89
    +            CreateDatabaseRequest request = CreateDatabaseRequest.builder(false, source.getVersion()).addSchema().addStandaloneTables().addAllData().build();
    
    90 90
                 TopiaSqlScript dump = dumpService.produceCreateSqlScript(request);
    
    91 91
                 dump.copy(backupFile.toPath());
    
    92 92
             }
    

  • client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/wizard/DataSourceHelper.java
    ... ... @@ -135,7 +135,7 @@ public class DataSourceHelper {
    135 135
                     try (ObserveSwingDataSource source = model.getDataSourcesManager().newDataSource(configSrc)) {
    
    136 136
                         source.open();
    
    137 137
                         DataSourceService dumpService = source.getDataSourceService();
    
    138
    -                    CreateDatabaseRequest request = CreateDatabaseRequest.of(false, source.getVersion()).addSchema().addStandaloneTables();
    
    138
    +                    CreateDatabaseRequest request = CreateDatabaseRequest.builder(false, source.getVersion()).addSchema().addStandaloneTables().build();
    
    139 139
                         importDatabase = dumpService.produceCreateSqlScript(request);
    
    140 140
                     }
    
    141 141
                 }
    

  • core/persistence/java/src/main/java/fr/ird/observe/entities/ObserveTopiaApplicationContext.java
    ... ... @@ -40,14 +40,15 @@ import org.nuiton.topia.persistence.TopiaConfigurationExtension;
    40 40
     import org.nuiton.topia.persistence.TopiaEntity;
    
    41 41
     import org.nuiton.topia.persistence.TopiaIdFactory;
    
    42 42
     import org.nuiton.topia.persistence.TopiaPersistenceContextConstructorParameterSupport;
    
    43
    -import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
    
    44
    -import org.nuiton.topia.persistence.metadata.TopiaMetadataModelPaths;
    
    45 43
     import org.nuiton.topia.persistence.script.TopiaSqlScript;
    
    46 44
     import org.nuiton.topia.service.migration.TopiaMigrationService;
    
    47 45
     import org.nuiton.topia.service.sql.blob.TopiaEntitySqlBlobModel;
    
    46
    +import org.nuiton.topia.service.sql.metadata.TopiaMetadataModel;
    
    47
    +import org.nuiton.topia.service.sql.metadata.TopiaMetadataModelPaths;
    
    48 48
     import org.nuiton.topia.service.sql.model.TopiaEntitySqlModel;
    
    49 49
     import org.nuiton.topia.service.sql.plan.copy.TopiaEntitySqlCopyPlanModel;
    
    50 50
     import org.nuiton.topia.service.sql.plan.delete.TopiaEntitySqlDeletePlanModel;
    
    51
    +import org.nuiton.topia.service.sql.plan.replicate.TopiaEntitySqlReplicatePlanModel;
    
    51 52
     import org.nuiton.topia.service.sql.request.CreateDatabaseRequest;
    
    52 53
     import org.nuiton.topia.service.sql.usage.TopiaEntitySqlUsageModel;
    
    53 54
     
    
    ... ... @@ -120,6 +121,11 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
    120 121
             return ObserveTopiaEntitySqlModelResource.get().getCopyPlanModel();
    
    121 122
         }
    
    122 123
     
    
    124
    +    @Override
    
    125
    +    public TopiaEntitySqlReplicatePlanModel getReplicatePlanModel() {
    
    126
    +        return ObserveTopiaEntitySqlModelResource.get().getReplicatePlanModel();
    
    127
    +    }
    
    128
    +
    
    123 129
         @Override
    
    124 130
         public TopiaEntitySqlDeletePlanModel getDeletePlanModel() {
    
    125 131
             return ObserveTopiaEntitySqlModelResource.get().getDeletePlanModel();
    
    ... ... @@ -174,7 +180,7 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
    174 180
                         temporaryTopiaApplicationContext.getMigrationService().createSchemaIfNotExist();
    
    175 181
                         temporaryTopiaApplicationContext.getMigrationService().runSchemaMigration();
    
    176 182
                     }
    
    177
    -                CreateDatabaseRequest request = CreateDatabaseRequest.of(true, dataSourceConfiguration.getModelVersion()).addSchema().addStandaloneTables().addAllData();
    
    183
    +                CreateDatabaseRequest request = CreateDatabaseRequest.builder(true, dataSourceConfiguration.getModelVersion()).addSchema().addStandaloneTables().addAllData().build();
    
    178 184
                     TopiaSqlScript dump = getSqlService().consume(request);
    
    179 185
                     executeSqlStatements(dump);
    
    180 186
                     migrationService.createSchemaIfNotExist();
    
    ... ... @@ -204,8 +210,8 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
    204 210
                     log.info("Import referential.");
    
    205 211
                     ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportReferentialDataSourceConfiguration();
    
    206 212
                     Version dbVersion = Version.valueOf(getModelVersion());
    
    207
    -                CreateDatabaseRequest request = CreateDatabaseRequest.of(!dataSourceConfiguration.isLocal(), dbVersion)
    
    208
    -                        .addStandaloneTables();
    
    213
    +                CreateDatabaseRequest request = CreateDatabaseRequest.builder(!dataSourceConfiguration.isLocal(), dbVersion)
    
    214
    +                        .addStandaloneTables().build();
    
    209 215
                     TopiaSqlScript referentialDump;
    
    210 216
                     ObserveTopiaApplicationContext temporaryTopiaApplicationContext = null;
    
    211 217
                     try {
    
    ... ... @@ -225,10 +231,10 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
    225 231
                 if (importData) {
    
    226 232
                     ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportDataDataSourceConfiguration();
    
    227 233
                     Version dbVersion = Version.valueOf(getModelVersion());
    
    228
    -                CreateDatabaseRequest request = CreateDatabaseRequest.of(!dataSourceConfiguration.isLocal(), dbVersion);
    
    234
    +                CreateDatabaseRequest.Builder requestBuilder = CreateDatabaseRequest.builder(!dataSourceConfiguration.isLocal(), dbVersion);
    
    229 235
                     if (!referentialImported) {
    
    230 236
                         log.info("Get referential.");
    
    231
    -                    request.addStandaloneTables();
    
    237
    +                    requestBuilder.addStandaloneTables();
    
    232 238
                     }
    
    233 239
     
    
    234 240
                     // Récupération du dump qui contient les données
    
    ... ... @@ -241,10 +247,11 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
    241 247
                     }
    
    242 248
                     log.info(String.format("Get data: %s", importDataIds));
    
    243 249
                     for (Map.Entry<String, Collection<String>> entry : idsByType.asMap().entrySet()) {
    
    244
    -                    request.dataIdsToAdd(entry.getKey(), Set.copyOf(entry.getValue()));
    
    250
    +                    requestBuilder.dataIdsToAdd(entry.getKey(), Set.copyOf(entry.getValue()));
    
    245 251
                     }
    
    246 252
                     TopiaSqlScript dataDump;
    
    247 253
                     ObserveTopiaApplicationContext temporaryTopiaApplicationContext = null;
    
    254
    +                CreateDatabaseRequest request = requestBuilder.build();
    
    248 255
                     try {
    
    249 256
                         temporaryTopiaApplicationContext = ObserveTopiaApplicationContextFactory.createTopiaApplicationContext(importDataSourceConfiguration, false);
    
    250 257
     //                    ObserveDataSourceConnection importDataSourceConnection = serviceContext().newService(importDataSourceConfiguration, AnonymousService.class).open(importDataSourceConfiguration);
    

  • core/persistence/java/src/main/resources/META-INF/persistence/Observe/TopiaEntitySqlCopyPlanModel.json The diff for this file was not included because it is too large.
  • core/persistence/java/src/main/resources/META-INF/persistence/Observe/TopiaEntitySqlDeletePlanModel.json
    1 1
     {
    
    2
    -  "typeDeletePlans": {
    
    2
    +  "plans": {
    
    3 3
         "fr.ird.observe.entities.data.ll.common.GearUseFeatures": [
    
    4 4
           "DELETE FROM ll_common.gearUseFeaturesMeasurement WHERE gearUseFeaturesMeasurement.gearUseFeatures %s;",
    
    5 5
           "DELETE FROM ll_common.gearUseFeatures WHERE gearUseFeatures.topiaId %s;"
    

  • core/persistence/java/src/main/resources/META-INF/persistence/Observe/TopiaEntitySqlReplicatePlanModel.json
    1
    +{
    
    2
    +  "plans": {
    
    3
    +    "fr.ird.observe.entities.data.ll.common.GearUseFeatures": [
    
    4
    +      {
    
    5
    +        "gav": "ll_common.gearUseFeatures",
    
    6
    +        "selectedSql": "SELECT %s FROM ll_common.gearUseFeatures WHERE gearUseFeatures.topiaId %s",
    
    7
    +        "insertSql": "INSERT INTO ll_common.gearUseFeatures(%s) VALUES (%%s);",
    
    8
    +        "parentColumnName": "trip",
    
    9
    +        "columnNames": "topiaid,comment,gear,homeid,lastupdatedate,number,topiacreatedate,topiaversion,trip,usedintrip",
    
    10
    +        "entryPoint": true
    
    11
    +      },
    
    12
    +      {
    
    13
    +        "gav": "ll_common.gearUseFeaturesMeasurement",
    
    14
    +        "selectedSql": "SELECT %s FROM ll_common.gearUseFeaturesMeasurement gearUseFeaturesMeasurement WHERE gearUseFeaturesMeasurement.gearUseFeatures %s",
    
    15
    +        "insertSql": "INSERT INTO ll_common.gearUseFeaturesMeasurement(%s) VALUES (%%s);",
    
    16
    +        "parentColumnName": "gearUseFeatures",
    
    17
    +        "columnNames": "topiaid,gearcharacteristic,gearusefeatures,homeid,lastupdatedate,measurementvalue,topiacreatedate,topiaversion"
    
    18
    +      }
    
    19
    +    ],
    
    20
    +    "fr.ird.observe.entities.data.ll.common.GearUseFeaturesMeasurement": [
    
    21
    +      {
    
    22
    +        "gav": "ll_common.gearUseFeaturesMeasurement",
    
    23
    +        "selectedSql": "SELECT %s FROM ll_common.gearUseFeaturesMeasurement WHERE gearUseFeaturesMeasurement.topiaId %s",
    
    24
    +        "insertSql": "INSERT INTO ll_common.gearUseFeaturesMeasurement(%s) VALUES (%%s);",
    
    25
    +        "parentColumnName": "gearUseFeatures",
    
    26
    +        "columnNames": "topiaid,gearcharacteristic,gearusefeatures,homeid,lastupdatedate,measurementvalue,topiacreatedate,topiaversion",
    
    27
    +        "entryPoint": true
    
    28
    +      }
    
    29
    +    ],
    
    30
    +    "fr.ird.observe.entities.data.ll.landing.Landing": [
    
    31
    +      {
    
    32
    +        "gav": "ll_landing.landing",
    
    33
    +        "selectedSql": "SELECT %s FROM ll_landing.landing WHERE landing.topiaId %s",
    
    34
    +        "insertSql": "INSERT INTO ll_landing.landing(%s) VALUES (%%s);",
    
    35
    +        "parentColumnName": "trip",
    
    36
    +        "columnNames": "topiaid,brokeragecompany,comment,datasource,enddate,harbour,homeid,lastupdatedate,person,processingcompany,shippingcompany,startdate,topiacreatedate,topiaversion,trip,vessel",
    
    37
    +        "entryPoint": true
    
    38
    +      },
    
    39
    +      {
    
    40
    +        "gav": "ll_landing.landingPart",
    
    41
    +        "selectedSql": "SELECT %s FROM ll_landing.landingPart landingPart WHERE landingPart.landing %s",
    
    42
    +        "insertSql": "INSERT INTO ll_landing.landingPart(%s) VALUES (%%s);",
    
    43
    +        "parentColumnName": "landing",
    
    44
    +        "columnNames": "topiaid,categorymax,categorymin,conservation,count,dataquality,homeid,landing,lastupdatedate,onboardprocessing,species,topiacreatedate,topiaversion,weight,weightmeasuremethod"
    
    45
    +      }
    
    46
    +    ],
    
    47
    +    "fr.ird.observe.entities.data.ll.landing.LandingPart": [
    
    48
    +      {
    
    49
    +        "gav": "ll_landing.landingPart",
    
    50
    +        "selectedSql": "SELECT %s FROM ll_landing.landingPart WHERE landingPart.topiaId %s",
    
    51
    +        "insertSql": "INSERT INTO ll_landing.landingPart(%s) VALUES (%%s);",
    
    52
    +        "parentColumnName": "landing",
    
    53
    +        "columnNames": "topiaid,categorymax,categorymin,conservation,count,dataquality,homeid,landing,lastupdatedate,onboardprocessing,species,topiacreatedate,topiaversion,weight,weightmeasuremethod",
    
    54
    +        "entryPoint": true
    
    55
    +      }
    
    56
    +    ],
    
    57
    +    "fr.ird.observe.entities.data.ll.logbook.Activity": [
    
    58
    +      {
    
    59
    +        "gav": "ll_logbook.set",
    
    60
    +        "selectedSql": "SELECT %s FROM ll_logbook.set set INNER JOIN ll_logbook.activity activity ON activity.set = set.topiaId WHERE activity.topiaId %s",
    
    61
    +        "insertSql": "INSERT INTO ll_logbook.set(%s) VALUES (%%s);",
    
    62
    +        "columnNames": "topiaid,basketlinelength,basketspersectioncount,branchlinesperbasketcount,comment,haulingbreaks,haulingdirectionsameassetting,haulingendlatitude,haulingendlongitude,haulingendtimestamp,haulingstartlatitude,haulingstartlongitude,haulingstarttimestamp,homeid,lastupdatedate,lengthbetweenbranchlines,lightstickscolor,lightsticksperbasketcount,lightstickstype,lightsticksused,linetype,maxdepthtargeted,monitored,number,settingendlatitude,settingendlongitude,settingendtimestamp,settingshape,settingstartlatitude,settingstartlongitude,settingstarttimestamp,settingvesselspeed,shooterspeed,shooterused,snapweight,swivelweight,timebetweenhooks,topiacreatedate,topiaversion,totalbasketscount,totalhookscount,totallightstickscount,totallinelength,totalsectionscount,weightedsnap,weightedswivel"
    
    63
    +      },
    
    64
    +      {
    
    65
    +        "gav": "ll_logbook.sample",
    
    66
    +        "selectedSql": "SELECT %s FROM ll_logbook.sample sample INNER JOIN ll_logbook.activity activity ON activity.sample = sample.topiaId WHERE activity.topiaId %s",
    
    67
    +        "insertSql": "INSERT INTO ll_logbook.sample(%s) VALUES (%%s);",
    
    68
    +        "columnNames": "topiaid,comment,homeid,lastupdatedate,latitude,longitude,timestamp,topiacreatedate,topiaversion,trip"
    
    69
    +      },
    
    70
    +      {
    
    71
    +        "gav": "ll_logbook.activity",
    
    72
    +        "selectedSql": "SELECT %s FROM ll_logbook.activity WHERE activity.topiaId %s",
    
    73
    +        "insertSql": "INSERT INTO ll_logbook.activity(%s) VALUES (%%s);",
    
    74
    +        "parentColumnName": "trip",
    
    75
    +        "columnNames": "topiaid,comment,currentdirection,currentspeed,dataquality,endtimestamp,fpazone,homeid,lastupdatedate,latitude,longitude,relatedobservedactivity,sample,seasurfacetemperature,set,starttimestamp,topiacreatedate,topiaversion,trip,vesselactivity,wind,winddirection",
    
    76
    +        "columnsToReplace": "set,sample",
    
    77
    +        "columnsToDetach": "relatedObservedActivity~ll_observation.activity",
    
    78
    +        "entryPoint": true
    
    79
    +      },
    
    80
    +      {
    
    81
    +        "gav": "ll_logbook.baitsComposition",
    
    82
    +        "selectedSql": "SELECT %s FROM ll_logbook.baitsComposition baitsComposition INNER JOIN ll_logbook.activity activity ON activity.set = baitsComposition.set WHERE activity.topiaId %s",
    
    83
    +        "insertSql": "INSERT INTO ll_logbook.baitsComposition(%s) VALUES (%%s);",
    
    84
    +        "parentColumnName": "set",
    
    85
    +        "columnNames": "topiaid,baitsettingstatus,baittype,homeid,individualsize,individualweight,lastupdatedate,proportion,set,topiacreatedate,topiaversion"
    
    86
    +      },
    
    87
    +      {
    
    88
    +        "gav": "ll_logbook.branchlinesComposition",
    
    89
    +        "selectedSql": "SELECT %s FROM ll_logbook.branchlinesComposition branchlinesComposition INNER JOIN ll_logbook.activity activity ON activity.set = branchlinesComposition.set WHERE activity.topiaId %s",
    
    90
    +        "insertSql": "INSERT INTO ll_logbook.branchlinesComposition(%s) VALUES (%%s);",
    
    91
    +        "parentColumnName": "set",
    
    92
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,proportion,set,topiacreatedate,topiaversion,toptype,tracelinelength,tracelinetype"
    
    93
    +      },
    
    94
    +      {
    
    95
    +        "gav": "ll_logbook.catch",
    
    96
    +        "selectedSql": "SELECT %s FROM ll_logbook.catch catch INNER JOIN ll_logbook.activity activity ON activity.set = catch.set WHERE activity.topiaId %s",
    
    97
    +        "insertSql": "INSERT INTO ll_logbook.catch(%s) VALUES (%%s);",
    
    98
    +        "parentColumnName": "set",
    
    99
    +        "columnNames": "topiaid,acquisitionmode,beatdiameter,catchfate,catchhealthstatus,comment,count,countdepredated,depredated,depredatedproportion,discardhealthstatus,homeid,hookwhendiscarded,lastupdatedate,number,onboardprocessing,photoreferences,set,set_idx,species,tagnumber,topiacreatedate,topiaversion,totalweight,weightmeasuremethod"
    
    100
    +      },
    
    101
    +      {
    
    102
    +        "gav": "ll_logbook.floatlinesComposition",
    
    103
    +        "selectedSql": "SELECT %s FROM ll_logbook.floatlinesComposition floatlinesComposition INNER JOIN ll_logbook.activity activity ON activity.set = floatlinesComposition.set WHERE activity.topiaId %s",
    
    104
    +        "insertSql": "INSERT INTO ll_logbook.floatlinesComposition(%s) VALUES (%%s);",
    
    105
    +        "parentColumnName": "set",
    
    106
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,linetype,proportion,set,topiacreatedate,topiaversion"
    
    107
    +      },
    
    108
    +      {
    
    109
    +        "gav": "ll_logbook.hooksComposition",
    
    110
    +        "selectedSql": "SELECT %s FROM ll_logbook.hooksComposition hooksComposition INNER JOIN ll_logbook.activity activity ON activity.set = hooksComposition.set WHERE activity.topiaId %s",
    
    111
    +        "insertSql": "INSERT INTO ll_logbook.hooksComposition(%s) VALUES (%%s);",
    
    112
    +        "parentColumnName": "set",
    
    113
    +        "columnNames": "topiaid,homeid,hookoffset,hooksize,hooktype,lastupdatedate,proportion,set,topiacreatedate,topiaversion"
    
    114
    +      },
    
    115
    +      {
    
    116
    +        "gav": "ll_logbook.samplePart",
    
    117
    +        "selectedSql": "SELECT %s FROM ll_logbook.samplePart samplePart INNER JOIN ll_logbook.activity activity ON activity.sample = samplePart.sample WHERE activity.topiaId %s",
    
    118
    +        "insertSql": "INSERT INTO ll_logbook.samplePart(%s) VALUES (%%s);",
    
    119
    +        "parentColumnName": "sample",
    
    120
    +        "columnNames": "topiaid,acquisitionmode,count,homeid,lastupdatedate,length,lengthmeasuremethod,sample,sample_idx,sex,sizemeasuretype,species,tagnumber,topiacreatedate,topiaversion,weight,weightmeasuremethod,weightmeasuretype"
    
    121
    +      },
    
    122
    +      {
    
    123
    +        "gav": "ll_logbook.set_mitigationtype",
    
    124
    +        "selectedSql": "SELECT %s FROM ll_logbook.set_mitigationtype INNER JOIN ll_logbook.set set ON set_mitigationtype.set = set.topiaId INNER JOIN ll_logbook.activity activity ON activity.set = set.topiaId WHERE activity.topiaId %s",
    
    125
    +        "insertSql": "INSERT INTO ll_logbook.set_mitigationtype(%s) VALUES (%%s);",
    
    126
    +        "parentColumnName": "set",
    
    127
    +        "columnNames": "mitigationtype,set",
    
    128
    +        "columnsToReplace": "set"
    
    129
    +      },
    
    130
    +      {
    
    131
    +        "gav": "ll_logbook.catch_predator",
    
    132
    +        "selectedSql": "SELECT %s FROM ll_logbook.catch_predator INNER JOIN ll_logbook.catch catch ON catch_predator.catch = catch.topiaId INNER JOIN ll_logbook.activity activity ON activity.set = catch.set WHERE activity.topiaId %s",
    
    133
    +        "insertSql": "INSERT INTO ll_logbook.catch_predator(%s) VALUES (%%s);",
    
    134
    +        "parentColumnName": "catch",
    
    135
    +        "columnNames": "catch,species",
    
    136
    +        "columnsToReplace": "catch"
    
    137
    +      }
    
    138
    +    ],
    
    139
    +    "fr.ird.observe.entities.data.ll.logbook.BaitsComposition": [
    
    140
    +      {
    
    141
    +        "gav": "ll_logbook.baitsComposition",
    
    142
    +        "selectedSql": "SELECT %s FROM ll_logbook.baitsComposition WHERE baitsComposition.topiaId %s",
    
    143
    +        "insertSql": "INSERT INTO ll_logbook.baitsComposition(%s) VALUES (%%s);",
    
    144
    +        "parentColumnName": "set",
    
    145
    +        "columnNames": "topiaid,baitsettingstatus,baittype,homeid,individualsize,individualweight,lastupdatedate,proportion,set,topiacreatedate,topiaversion",
    
    146
    +        "entryPoint": true
    
    147
    +      }
    
    148
    +    ],
    
    149
    +    "fr.ird.observe.entities.data.ll.logbook.BranchlinesComposition": [
    
    150
    +      {
    
    151
    +        "gav": "ll_logbook.branchlinesComposition",
    
    152
    +        "selectedSql": "SELECT %s FROM ll_logbook.branchlinesComposition WHERE branchlinesComposition.topiaId %s",
    
    153
    +        "insertSql": "INSERT INTO ll_logbook.branchlinesComposition(%s) VALUES (%%s);",
    
    154
    +        "parentColumnName": "set",
    
    155
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,proportion,set,topiacreatedate,topiaversion,toptype,tracelinelength,tracelinetype",
    
    156
    +        "entryPoint": true
    
    157
    +      }
    
    158
    +    ],
    
    159
    +    "fr.ird.observe.entities.data.ll.logbook.Catch": [
    
    160
    +      {
    
    161
    +        "gav": "ll_logbook.catch",
    
    162
    +        "selectedSql": "SELECT %s FROM ll_logbook.catch WHERE catch.topiaId %s",
    
    163
    +        "insertSql": "INSERT INTO ll_logbook.catch(%s) VALUES (%%s);",
    
    164
    +        "parentColumnName": "set",
    
    165
    +        "columnNames": "topiaid,acquisitionmode,beatdiameter,catchfate,catchhealthstatus,comment,count,countdepredated,depredated,depredatedproportion,discardhealthstatus,homeid,hookwhendiscarded,lastupdatedate,number,onboardprocessing,photoreferences,set,set_idx,species,tagnumber,topiacreatedate,topiaversion,totalweight,weightmeasuremethod",
    
    166
    +        "entryPoint": true
    
    167
    +      },
    
    168
    +      {
    
    169
    +        "gav": "ll_logbook.catch_predator",
    
    170
    +        "selectedSql": "SELECT %s FROM ll_logbook.catch_predator WHERE catch_predator.catch %s",
    
    171
    +        "insertSql": "INSERT INTO ll_logbook.catch_predator(%s) VALUES (%%s);",
    
    172
    +        "parentColumnName": "catch",
    
    173
    +        "columnNames": "catch,species",
    
    174
    +        "columnsToReplace": "catch"
    
    175
    +      }
    
    176
    +    ],
    
    177
    +    "fr.ird.observe.entities.data.ll.logbook.FloatlinesComposition": [
    
    178
    +      {
    
    179
    +        "gav": "ll_logbook.floatlinesComposition",
    
    180
    +        "selectedSql": "SELECT %s FROM ll_logbook.floatlinesComposition WHERE floatlinesComposition.topiaId %s",
    
    181
    +        "insertSql": "INSERT INTO ll_logbook.floatlinesComposition(%s) VALUES (%%s);",
    
    182
    +        "parentColumnName": "set",
    
    183
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,linetype,proportion,set,topiacreatedate,topiaversion",
    
    184
    +        "entryPoint": true
    
    185
    +      }
    
    186
    +    ],
    
    187
    +    "fr.ird.observe.entities.data.ll.logbook.HooksComposition": [
    
    188
    +      {
    
    189
    +        "gav": "ll_logbook.hooksComposition",
    
    190
    +        "selectedSql": "SELECT %s FROM ll_logbook.hooksComposition WHERE hooksComposition.topiaId %s",
    
    191
    +        "insertSql": "INSERT INTO ll_logbook.hooksComposition(%s) VALUES (%%s);",
    
    192
    +        "parentColumnName": "set",
    
    193
    +        "columnNames": "topiaid,homeid,hookoffset,hooksize,hooktype,lastupdatedate,proportion,set,topiacreatedate,topiaversion",
    
    194
    +        "entryPoint": true
    
    195
    +      }
    
    196
    +    ],
    
    197
    +    "fr.ird.observe.entities.data.ll.logbook.Sample": [
    
    198
    +      {
    
    199
    +        "gav": "ll_logbook.sample",
    
    200
    +        "selectedSql": "SELECT %s FROM ll_logbook.sample WHERE sample.topiaId %s",
    
    201
    +        "insertSql": "INSERT INTO ll_logbook.sample(%s) VALUES (%%s);",
    
    202
    +        "updateReverseAssociationSql": "UPDATE ll_logbook.activity activity SET activity.sample = '%s' WHERE activity.topiaId = '%s'",
    
    203
    +        "columnNames": "topiaid,comment,homeid,lastupdatedate,latitude,longitude,timestamp,topiacreatedate,topiaversion,trip",
    
    204
    +        "entryPoint": true
    
    205
    +      },
    
    206
    +      {
    
    207
    +        "gav": "ll_logbook.samplePart",
    
    208
    +        "selectedSql": "SELECT %s FROM ll_logbook.samplePart samplePart WHERE samplePart.sample %s",
    
    209
    +        "insertSql": "INSERT INTO ll_logbook.samplePart(%s) VALUES (%%s);",
    
    210
    +        "parentColumnName": "sample",
    
    211
    +        "columnNames": "topiaid,acquisitionmode,count,homeid,lastupdatedate,length,lengthmeasuremethod,sample,sample_idx,sex,sizemeasuretype,species,tagnumber,topiacreatedate,topiaversion,weight,weightmeasuremethod,weightmeasuretype"
    
    212
    +      }
    
    213
    +    ],
    
    214
    +    "fr.ird.observe.entities.data.ll.logbook.SamplePart": [
    
    215
    +      {
    
    216
    +        "gav": "ll_logbook.samplePart",
    
    217
    +        "selectedSql": "SELECT %s FROM ll_logbook.samplePart WHERE samplePart.topiaId %s",
    
    218
    +        "insertSql": "INSERT INTO ll_logbook.samplePart(%s) VALUES (%%s);",
    
    219
    +        "parentColumnName": "sample",
    
    220
    +        "columnNames": "topiaid,acquisitionmode,count,homeid,lastupdatedate,length,lengthmeasuremethod,sample,sample_idx,sex,sizemeasuretype,species,tagnumber,topiacreatedate,topiaversion,weight,weightmeasuremethod,weightmeasuretype",
    
    221
    +        "entryPoint": true
    
    222
    +      }
    
    223
    +    ],
    
    224
    +    "fr.ird.observe.entities.data.ll.logbook.Set": [
    
    225
    +      {
    
    226
    +        "gav": "ll_logbook.set",
    
    227
    +        "selectedSql": "SELECT %s FROM ll_logbook.set WHERE set.topiaId %s",
    
    228
    +        "insertSql": "INSERT INTO ll_logbook.set(%s) VALUES (%%s);",
    
    229
    +        "updateReverseAssociationSql": "UPDATE ll_logbook.activity activity SET activity.set = '%s' WHERE activity.topiaId = '%s'",
    
    230
    +        "columnNames": "topiaid,basketlinelength,basketspersectioncount,branchlinesperbasketcount,comment,haulingbreaks,haulingdirectionsameassetting,haulingendlatitude,haulingendlongitude,haulingendtimestamp,haulingstartlatitude,haulingstartlongitude,haulingstarttimestamp,homeid,lastupdatedate,lengthbetweenbranchlines,lightstickscolor,lightsticksperbasketcount,lightstickstype,lightsticksused,linetype,maxdepthtargeted,monitored,number,settingendlatitude,settingendlongitude,settingendtimestamp,settingshape,settingstartlatitude,settingstartlongitude,settingstarttimestamp,settingvesselspeed,shooterspeed,shooterused,snapweight,swivelweight,timebetweenhooks,topiacreatedate,topiaversion,totalbasketscount,totalhookscount,totallightstickscount,totallinelength,totalsectionscount,weightedsnap,weightedswivel",
    
    231
    +        "entryPoint": true
    
    232
    +      },
    
    233
    +      {
    
    234
    +        "gav": "ll_logbook.baitsComposition",
    
    235
    +        "selectedSql": "SELECT %s FROM ll_logbook.baitsComposition baitsComposition WHERE baitsComposition.set %s",
    
    236
    +        "insertSql": "INSERT INTO ll_logbook.baitsComposition(%s) VALUES (%%s);",
    
    237
    +        "parentColumnName": "set",
    
    238
    +        "columnNames": "topiaid,baitsettingstatus,baittype,homeid,individualsize,individualweight,lastupdatedate,proportion,set,topiacreatedate,topiaversion"
    
    239
    +      },
    
    240
    +      {
    
    241
    +        "gav": "ll_logbook.branchlinesComposition",
    
    242
    +        "selectedSql": "SELECT %s FROM ll_logbook.branchlinesComposition branchlinesComposition WHERE branchlinesComposition.set %s",
    
    243
    +        "insertSql": "INSERT INTO ll_logbook.branchlinesComposition(%s) VALUES (%%s);",
    
    244
    +        "parentColumnName": "set",
    
    245
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,proportion,set,topiacreatedate,topiaversion,toptype,tracelinelength,tracelinetype"
    
    246
    +      },
    
    247
    +      {
    
    248
    +        "gav": "ll_logbook.catch",
    
    249
    +        "selectedSql": "SELECT %s FROM ll_logbook.catch catch WHERE catch.set %s",
    
    250
    +        "insertSql": "INSERT INTO ll_logbook.catch(%s) VALUES (%%s);",
    
    251
    +        "parentColumnName": "set",
    
    252
    +        "columnNames": "topiaid,acquisitionmode,beatdiameter,catchfate,catchhealthstatus,comment,count,countdepredated,depredated,depredatedproportion,discardhealthstatus,homeid,hookwhendiscarded,lastupdatedate,number,onboardprocessing,photoreferences,set,set_idx,species,tagnumber,topiacreatedate,topiaversion,totalweight,weightmeasuremethod"
    
    253
    +      },
    
    254
    +      {
    
    255
    +        "gav": "ll_logbook.floatlinesComposition",
    
    256
    +        "selectedSql": "SELECT %s FROM ll_logbook.floatlinesComposition floatlinesComposition WHERE floatlinesComposition.set %s",
    
    257
    +        "insertSql": "INSERT INTO ll_logbook.floatlinesComposition(%s) VALUES (%%s);",
    
    258
    +        "parentColumnName": "set",
    
    259
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,linetype,proportion,set,topiacreatedate,topiaversion"
    
    260
    +      },
    
    261
    +      {
    
    262
    +        "gav": "ll_logbook.hooksComposition",
    
    263
    +        "selectedSql": "SELECT %s FROM ll_logbook.hooksComposition hooksComposition WHERE hooksComposition.set %s",
    
    264
    +        "insertSql": "INSERT INTO ll_logbook.hooksComposition(%s) VALUES (%%s);",
    
    265
    +        "parentColumnName": "set",
    
    266
    +        "columnNames": "topiaid,homeid,hookoffset,hooksize,hooktype,lastupdatedate,proportion,set,topiacreatedate,topiaversion"
    
    267
    +      },
    
    268
    +      {
    
    269
    +        "gav": "ll_logbook.set_mitigationtype",
    
    270
    +        "selectedSql": "SELECT %s FROM ll_logbook.set_mitigationtype WHERE set_mitigationtype.set %s",
    
    271
    +        "insertSql": "INSERT INTO ll_logbook.set_mitigationtype(%s) VALUES (%%s);",
    
    272
    +        "parentColumnName": "set",
    
    273
    +        "columnNames": "mitigationtype,set",
    
    274
    +        "columnsToReplace": "set"
    
    275
    +      },
    
    276
    +      {
    
    277
    +        "gav": "ll_logbook.catch_predator",
    
    278
    +        "selectedSql": "SELECT %s FROM ll_logbook.catch_predator INNER JOIN ll_logbook.catch catch ON catch_predator.catch = catch.topiaId WHERE catch.set %s",
    
    279
    +        "insertSql": "INSERT INTO ll_logbook.catch_predator(%s) VALUES (%%s);",
    
    280
    +        "parentColumnName": "catch",
    
    281
    +        "columnNames": "catch,species",
    
    282
    +        "columnsToReplace": "catch"
    
    283
    +      }
    
    284
    +    ],
    
    285
    +    "fr.ird.observe.entities.data.ll.observation.Activity": [
    
    286
    +      {
    
    287
    +        "gav": "ll_observation.set",
    
    288
    +        "selectedSql": "SELECT %s FROM ll_observation.set set INNER JOIN ll_observation.activity activity ON activity.set = set.topiaId WHERE activity.topiaId %s",
    
    289
    +        "insertSql": "INSERT INTO ll_observation.set(%s) VALUES (%%s);",
    
    290
    +        "columnNames": "topiaid,basketspersectioncount,branchlinesperbasketcount,comment,haulingbreaks,haulingdirectionsameassetting,haulingendlatitude,haulingendlongitude,haulingendtimestamp,haulingstartlatitude,haulingstartlongitude,haulingstarttimestamp,homeid,lastupdatedate,lightstickscolor,lightsticksperbasketcount,lightstickstype,linetype,maxdepthtargeted,monitored,number,settingendlatitude,settingendlongitude,settingendtimestamp,settingshape,settingstartlatitude,settingstartlongitude,settingstarttimestamp,settingvesselspeed,shooterspeed,shooterused,snapweight,swivelweight,timebetweenhooks,topiacreatedate,topiaversion,totalbasketscount,totalhookscount,totalsectionscount,weightedsnap,weightedswivel"
    
    291
    +      },
    
    292
    +      {
    
    293
    +        "gav": "ll_observation.activity",
    
    294
    +        "selectedSql": "SELECT %s FROM ll_observation.activity WHERE activity.topiaId %s",
    
    295
    +        "insertSql": "INSERT INTO ll_observation.activity(%s) VALUES (%%s);",
    
    296
    +        "parentColumnName": "trip",
    
    297
    +        "columnNames": "topiaid,comment,dataquality,fpazone,homeid,lastupdatedate,latitude,longitude,seasurfacetemperature,set,timestamp,topiacreatedate,topiaversion,trip,vesselactivity",
    
    298
    +        "columnsToReplace": "set",
    
    299
    +        "entryPoint": true
    
    300
    +      },
    
    301
    +      {
    
    302
    +        "gav": "ll_observation.encounter",
    
    303
    +        "selectedSql": "SELECT %s FROM ll_observation.encounter encounter WHERE encounter.activity %s",
    
    304
    +        "insertSql": "INSERT INTO ll_observation.encounter(%s) VALUES (%%s);",
    
    305
    +        "parentColumnName": "activity",
    
    306
    +        "columnNames": "topiaid,activity,count,distance,encountertype,homeid,lastupdatedate,species,topiacreatedate,topiaversion"
    
    307
    +      },
    
    308
    +      {
    
    309
    +        "gav": "ll_observation.sensorUsed",
    
    310
    +        "selectedSql": "SELECT %s FROM ll_observation.sensorUsed sensorUsed WHERE sensorUsed.activity %s",
    
    311
    +        "insertSql": "INSERT INTO ll_observation.sensorUsed(%s) VALUES (%%s);",
    
    312
    +        "parentColumnName": "activity",
    
    313
    +        "columnNames": "topiaid,activity,data,datafilename,datalocation,homeid,lastupdatedate,sensorbrand,sensordataformat,sensorserialno,sensortype,topiacreatedate,topiaversion",
    
    314
    +        "useBlob": true
    
    315
    +      },
    
    316
    +      {
    
    317
    +        "gav": "ll_observation.baitsComposition",
    
    318
    +        "selectedSql": "SELECT %s FROM ll_observation.baitsComposition baitsComposition INNER JOIN ll_observation.activity activity ON activity.set = baitsComposition.set WHERE activity.topiaId %s",
    
    319
    +        "insertSql": "INSERT INTO ll_observation.baitsComposition(%s) VALUES (%%s);",
    
    320
    +        "parentColumnName": "set",
    
    321
    +        "columnNames": "topiaid,baitsettingstatus,baittype,homeid,individualsize,individualweight,lastupdatedate,proportion,set,topiacreatedate,topiaversion"
    
    322
    +      },
    
    323
    +      {
    
    324
    +        "gav": "ll_observation.branchlinesComposition",
    
    325
    +        "selectedSql": "SELECT %s FROM ll_observation.branchlinesComposition branchlinesComposition INNER JOIN ll_observation.activity activity ON activity.set = branchlinesComposition.set WHERE activity.topiaId %s",
    
    326
    +        "insertSql": "INSERT INTO ll_observation.branchlinesComposition(%s) VALUES (%%s);",
    
    327
    +        "parentColumnName": "set",
    
    328
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,proportion,set,topiacreatedate,topiaversion,toptype,tracelinelength,tracelinetype"
    
    329
    +      },
    
    330
    +      {
    
    331
    +        "gav": "ll_observation.floatlinesComposition",
    
    332
    +        "selectedSql": "SELECT %s FROM ll_observation.floatlinesComposition floatlinesComposition INNER JOIN ll_observation.activity activity ON activity.set = floatlinesComposition.set WHERE activity.topiaId %s",
    
    333
    +        "insertSql": "INSERT INTO ll_observation.floatlinesComposition(%s) VALUES (%%s);",
    
    334
    +        "parentColumnName": "set",
    
    335
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,linetype,proportion,set,topiacreatedate,topiaversion"
    
    336
    +      },
    
    337
    +      {
    
    338
    +        "gav": "ll_observation.hooksComposition",
    
    339
    +        "selectedSql": "SELECT %s FROM ll_observation.hooksComposition hooksComposition INNER JOIN ll_observation.activity activity ON activity.set = hooksComposition.set WHERE activity.topiaId %s",
    
    340
    +        "insertSql": "INSERT INTO ll_observation.hooksComposition(%s) VALUES (%%s);",
    
    341
    +        "parentColumnName": "set",
    
    342
    +        "columnNames": "topiaid,homeid,hookoffset,hooksize,hooktype,lastupdatedate,proportion,set,topiacreatedate,topiaversion"
    
    343
    +      },
    
    344
    +      {
    
    345
    +        "gav": "ll_observation.section",
    
    346
    +        "selectedSql": "SELECT %s FROM ll_observation.section section INNER JOIN ll_observation.activity activity ON activity.set = section.set WHERE activity.topiaId %s",
    
    347
    +        "insertSql": "INSERT INTO ll_observation.section(%s) VALUES (%%s);",
    
    348
    +        "parentColumnName": "set",
    
    349
    +        "columnNames": "topiaid,haulingidentifier,homeid,lastupdatedate,set,settingidentifier,topiacreatedate,topiaversion"
    
    350
    +      },
    
    351
    +      {
    
    352
    +        "gav": "ll_observation.basket",
    
    353
    +        "selectedSql": "SELECT %s FROM ll_observation.basket basket INNER JOIN ll_observation.section section ON section.topiaId = basket.section  INNER JOIN ll_observation.activity activity ON activity.set = section.set WHERE activity.topiaId %s",
    
    354
    +        "insertSql": "INSERT INTO ll_observation.basket(%s) VALUES (%%s);",
    
    355
    +        "parentColumnName": "section",
    
    356
    +        "columnNames": "topiaid,floatline1length,floatline2length,haulingidentifier,homeid,lastupdatedate,section,settingidentifier,topiacreatedate,topiaversion"
    
    357
    +      },
    
    358
    +      {
    
    359
    +        "gav": "ll_observation.branchline",
    
    360
    +        "selectedSql": "SELECT %s FROM ll_observation.branchline branchline INNER JOIN ll_observation.basket basket ON basket.topiaId = branchline.basket  INNER JOIN ll_observation.section section ON section.topiaId = basket.section  INNER JOIN ll_observation.activity activity ON activity.set = section.set WHERE activity.topiaId %s",
    
    361
    +        "insertSql": "INSERT INTO ll_observation.branchline(%s) VALUES (%%s);",
    
    362
    +        "parentColumnName": "basket",
    
    363
    +        "columnNames": "topiaid,baithaulingstatus,baitsettingstatus,baittype,basket,branchlinelength,comment,depthrecorder,haulingidentifier,homeid,hooklost,hookoffset,hooksize,hooktype,lastupdatedate,settingidentifier,snapweight,swivelweight,timer,timertimeonboard,timesincecontact,topiacreatedate,topiaversion,toptype,tracecutoff,tracelinelength,tracelinetype,weightedsnap,weightedswivel"
    
    364
    +      },
    
    365
    +      {
    
    366
    +        "gav": "ll_observation.tdr",
    
    367
    +        "selectedSql": "SELECT %s FROM ll_observation.tdr tdr INNER JOIN ll_observation.activity activity ON activity.set = tdr.set WHERE activity.topiaId %s",
    
    368
    +        "insertSql": "INSERT INTO ll_observation.tdr(%s) VALUES (%%s);",
    
    369
    +        "parentColumnName": "set",
    
    370
    +        "columnNames": "topiaid,basket,branchline,data,datafilename,datalocation,deploymentend,deploymentstart,fishingend,fishingenddepth,fishingstart,fishingstartdepth,floatline1length,floatline2length,homeid,itemhorizontalposition,itemverticalposition,lastupdatedate,maxfishingdepth,meandeploymentdepth,meanfishingdepth,mediandeploymentdepth,medianfishingdepth,minfishingdepth,section,sensorbrand,serialno,set,topiacreatedate,topiaversion",
    
    371
    +        "columnsToReplace": "section,basket,branchline",
    
    372
    +        "useBlob": true
    
    373
    +      },
    
    374
    +      {
    
    375
    +        "gav": "ll_observation.catch",
    
    376
    +        "selectedSql": "SELECT %s FROM ll_observation.catch catch INNER JOIN ll_observation.activity activity ON activity.set = catch.set WHERE activity.topiaId %s",
    
    377
    +        "insertSql": "INSERT INTO ll_observation.catch(%s) VALUES (%%s);",
    
    378
    +        "parentColumnName": "set",
    
    379
    +        "columnNames": "topiaid,acquisitionmode,basket,beatdiameter,branchline,catchfate,catchhealthstatus,comment,count,depredated,discardhealthstatus,gonadeweight,homeid,hookposition,hookwhendiscarded,lastupdatedate,maturitystatus,number,photoreferences,section,set,set_idx,sex,species,stomachfullness,tagnumber,topiacreatedate,topiaversion,totalweight,weightmeasuremethod",
    
    380
    +        "columnsToReplace": "section,basket,branchline"
    
    381
    +      },
    
    382
    +      {
    
    383
    +        "gav": "ll_observation.sizeMeasure",
    
    384
    +        "selectedSql": "SELECT %s FROM ll_observation.sizeMeasure sizeMeasure INNER JOIN ll_observation.catch catch ON catch.topiaId = sizeMeasure.catch  INNER JOIN ll_observation.activity activity ON activity.set = catch.set WHERE activity.topiaId %s",
    
    385
    +        "insertSql": "INSERT INTO ll_observation.sizeMeasure(%s) VALUES (%%s);",
    
    386
    +        "parentColumnName": "catch",
    
    387
    +        "columnNames": "topiaid,catch,homeid,lastupdatedate,size,sizemeasuretype,topiacreatedate,topiaversion"
    
    388
    +      },
    
    389
    +      {
    
    390
    +        "gav": "ll_observation.weightMeasure",
    
    391
    +        "selectedSql": "SELECT %s FROM ll_observation.weightMeasure weightMeasure INNER JOIN ll_observation.catch catch ON catch.topiaId = weightMeasure.catch  INNER JOIN ll_observation.activity activity ON activity.set = catch.set WHERE activity.topiaId %s",
    
    392
    +        "insertSql": "INSERT INTO ll_observation.weightMeasure(%s) VALUES (%%s);",
    
    393
    +        "parentColumnName": "catch",
    
    394
    +        "columnNames": "topiaid,catch,homeid,lastupdatedate,topiacreatedate,topiaversion,weight,weightmeasuretype"
    
    395
    +      },
    
    396
    +      {
    
    397
    +        "gav": "ll_observation.set_mitigationtype",
    
    398
    +        "selectedSql": "SELECT %s FROM ll_observation.set_mitigationtype INNER JOIN ll_observation.set set ON set_mitigationtype.set = set.topiaId INNER JOIN ll_observation.activity activity ON activity.set = set.topiaId WHERE activity.topiaId %s",
    
    399
    +        "insertSql": "INSERT INTO ll_observation.set_mitigationtype(%s) VALUES (%%s);",
    
    400
    +        "parentColumnName": "set",
    
    401
    +        "columnNames": "mitigationtype,set",
    
    402
    +        "columnsToReplace": "set"
    
    403
    +      },
    
    404
    +      {
    
    405
    +        "gav": "ll_observation.tdr_species",
    
    406
    +        "selectedSql": "SELECT %s FROM ll_observation.tdr_species INNER JOIN ll_observation.tdr tdr ON tdr_species.tdr = tdr.topiaId INNER JOIN ll_observation.activity activity ON activity.set = tdr.set WHERE activity.topiaId %s",
    
    407
    +        "insertSql": "INSERT INTO ll_observation.tdr_species(%s) VALUES (%%s);",
    
    408
    +        "parentColumnName": "tdr",
    
    409
    +        "columnNames": "species,tdr",
    
    410
    +        "columnsToReplace": "tdr"
    
    411
    +      },
    
    412
    +      {
    
    413
    +        "gav": "ll_observation.catch_predator",
    
    414
    +        "selectedSql": "SELECT %s FROM ll_observation.catch_predator INNER JOIN ll_observation.catch catch ON catch_predator.catch = catch.topiaId INNER JOIN ll_observation.activity activity ON activity.set = catch.set WHERE activity.topiaId %s",
    
    415
    +        "insertSql": "INSERT INTO ll_observation.catch_predator(%s) VALUES (%%s);",
    
    416
    +        "parentColumnName": "catch",
    
    417
    +        "columnNames": "catch,species",
    
    418
    +        "columnsToReplace": "catch"
    
    419
    +      }
    
    420
    +    ],
    
    421
    +    "fr.ird.observe.entities.data.ll.observation.BaitsComposition": [
    
    422
    +      {
    
    423
    +        "gav": "ll_observation.baitsComposition",
    
    424
    +        "selectedSql": "SELECT %s FROM ll_observation.baitsComposition WHERE baitsComposition.topiaId %s",
    
    425
    +        "insertSql": "INSERT INTO ll_observation.baitsComposition(%s) VALUES (%%s);",
    
    426
    +        "parentColumnName": "set",
    
    427
    +        "columnNames": "topiaid,baitsettingstatus,baittype,homeid,individualsize,individualweight,lastupdatedate,proportion,set,topiacreatedate,topiaversion",
    
    428
    +        "entryPoint": true
    
    429
    +      }
    
    430
    +    ],
    
    431
    +    "fr.ird.observe.entities.data.ll.observation.Basket": [
    
    432
    +      {
    
    433
    +        "gav": "ll_observation.basket",
    
    434
    +        "selectedSql": "SELECT %s FROM ll_observation.basket WHERE basket.topiaId %s",
    
    435
    +        "insertSql": "INSERT INTO ll_observation.basket(%s) VALUES (%%s);",
    
    436
    +        "parentColumnName": "section",
    
    437
    +        "columnNames": "topiaid,floatline1length,floatline2length,haulingidentifier,homeid,lastupdatedate,section,settingidentifier,topiacreatedate,topiaversion",
    
    438
    +        "entryPoint": true
    
    439
    +      },
    
    440
    +      {
    
    441
    +        "gav": "ll_observation.branchline",
    
    442
    +        "selectedSql": "SELECT %s FROM ll_observation.branchline branchline WHERE branchline.basket %s",
    
    443
    +        "insertSql": "INSERT INTO ll_observation.branchline(%s) VALUES (%%s);",
    
    444
    +        "parentColumnName": "basket",
    
    445
    +        "columnNames": "topiaid,baithaulingstatus,baitsettingstatus,baittype,basket,branchlinelength,comment,depthrecorder,haulingidentifier,homeid,hooklost,hookoffset,hooksize,hooktype,lastupdatedate,settingidentifier,snapweight,swivelweight,timer,timertimeonboard,timesincecontact,topiacreatedate,topiaversion,toptype,tracecutoff,tracelinelength,tracelinetype,weightedsnap,weightedswivel"
    
    446
    +      }
    
    447
    +    ],
    
    448
    +    "fr.ird.observe.entities.data.ll.observation.Branchline": [
    
    449
    +      {
    
    450
    +        "gav": "ll_observation.branchline",
    
    451
    +        "selectedSql": "SELECT %s FROM ll_observation.branchline WHERE branchline.topiaId %s",
    
    452
    +        "insertSql": "INSERT INTO ll_observation.branchline(%s) VALUES (%%s);",
    
    453
    +        "parentColumnName": "basket",
    
    454
    +        "columnNames": "topiaid,baithaulingstatus,baitsettingstatus,baittype,basket,branchlinelength,comment,depthrecorder,haulingidentifier,homeid,hooklost,hookoffset,hooksize,hooktype,lastupdatedate,settingidentifier,snapweight,swivelweight,timer,timertimeonboard,timesincecontact,topiacreatedate,topiaversion,toptype,tracecutoff,tracelinelength,tracelinetype,weightedsnap,weightedswivel",
    
    455
    +        "entryPoint": true
    
    456
    +      }
    
    457
    +    ],
    
    458
    +    "fr.ird.observe.entities.data.ll.observation.BranchlinesComposition": [
    
    459
    +      {
    
    460
    +        "gav": "ll_observation.branchlinesComposition",
    
    461
    +        "selectedSql": "SELECT %s FROM ll_observation.branchlinesComposition WHERE branchlinesComposition.topiaId %s",
    
    462
    +        "insertSql": "INSERT INTO ll_observation.branchlinesComposition(%s) VALUES (%%s);",
    
    463
    +        "parentColumnName": "set",
    
    464
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,proportion,set,topiacreatedate,topiaversion,toptype,tracelinelength,tracelinetype",
    
    465
    +        "entryPoint": true
    
    466
    +      }
    
    467
    +    ],
    
    468
    +    "fr.ird.observe.entities.data.ll.observation.Catch": [
    
    469
    +      {
    
    470
    +        "gav": "ll_observation.catch",
    
    471
    +        "selectedSql": "SELECT %s FROM ll_observation.catch WHERE catch.topiaId %s",
    
    472
    +        "insertSql": "INSERT INTO ll_observation.catch(%s) VALUES (%%s);",
    
    473
    +        "parentColumnName": "set",
    
    474
    +        "columnNames": "topiaid,acquisitionmode,basket,beatdiameter,branchline,catchfate,catchhealthstatus,comment,count,depredated,discardhealthstatus,gonadeweight,homeid,hookposition,hookwhendiscarded,lastupdatedate,maturitystatus,number,photoreferences,section,set,set_idx,sex,species,stomachfullness,tagnumber,topiacreatedate,topiaversion,totalweight,weightmeasuremethod",
    
    475
    +        "columnsToDetach": "section~ll_observation.section,basket~ll_observation.basket,branchline~ll_observation.branchline",
    
    476
    +        "entryPoint": true
    
    477
    +      },
    
    478
    +      {
    
    479
    +        "gav": "ll_observation.sizeMeasure",
    
    480
    +        "selectedSql": "SELECT %s FROM ll_observation.sizeMeasure sizeMeasure WHERE sizeMeasure.catch %s",
    
    481
    +        "insertSql": "INSERT INTO ll_observation.sizeMeasure(%s) VALUES (%%s);",
    
    482
    +        "parentColumnName": "catch",
    
    483
    +        "columnNames": "topiaid,catch,homeid,lastupdatedate,size,sizemeasuretype,topiacreatedate,topiaversion"
    
    484
    +      },
    
    485
    +      {
    
    486
    +        "gav": "ll_observation.weightMeasure",
    
    487
    +        "selectedSql": "SELECT %s FROM ll_observation.weightMeasure weightMeasure WHERE weightMeasure.catch %s",
    
    488
    +        "insertSql": "INSERT INTO ll_observation.weightMeasure(%s) VALUES (%%s);",
    
    489
    +        "parentColumnName": "catch",
    
    490
    +        "columnNames": "topiaid,catch,homeid,lastupdatedate,topiacreatedate,topiaversion,weight,weightmeasuretype"
    
    491
    +      },
    
    492
    +      {
    
    493
    +        "gav": "ll_observation.catch_predator",
    
    494
    +        "selectedSql": "SELECT %s FROM ll_observation.catch_predator WHERE catch_predator.catch %s",
    
    495
    +        "insertSql": "INSERT INTO ll_observation.catch_predator(%s) VALUES (%%s);",
    
    496
    +        "parentColumnName": "catch",
    
    497
    +        "columnNames": "catch,species",
    
    498
    +        "columnsToReplace": "catch"
    
    499
    +      }
    
    500
    +    ],
    
    501
    +    "fr.ird.observe.entities.data.ll.observation.Encounter": [
    
    502
    +      {
    
    503
    +        "gav": "ll_observation.encounter",
    
    504
    +        "selectedSql": "SELECT %s FROM ll_observation.encounter WHERE encounter.topiaId %s",
    
    505
    +        "insertSql": "INSERT INTO ll_observation.encounter(%s) VALUES (%%s);",
    
    506
    +        "parentColumnName": "activity",
    
    507
    +        "columnNames": "topiaid,activity,count,distance,encountertype,homeid,lastupdatedate,species,topiacreatedate,topiaversion",
    
    508
    +        "entryPoint": true
    
    509
    +      }
    
    510
    +    ],
    
    511
    +    "fr.ird.observe.entities.data.ll.observation.FloatlinesComposition": [
    
    512
    +      {
    
    513
    +        "gav": "ll_observation.floatlinesComposition",
    
    514
    +        "selectedSql": "SELECT %s FROM ll_observation.floatlinesComposition WHERE floatlinesComposition.topiaId %s",
    
    515
    +        "insertSql": "INSERT INTO ll_observation.floatlinesComposition(%s) VALUES (%%s);",
    
    516
    +        "parentColumnName": "set",
    
    517
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,linetype,proportion,set,topiacreatedate,topiaversion",
    
    518
    +        "entryPoint": true
    
    519
    +      }
    
    520
    +    ],
    
    521
    +    "fr.ird.observe.entities.data.ll.observation.HooksComposition": [
    
    522
    +      {
    
    523
    +        "gav": "ll_observation.hooksComposition",
    
    524
    +        "selectedSql": "SELECT %s FROM ll_observation.hooksComposition WHERE hooksComposition.topiaId %s",
    
    525
    +        "insertSql": "INSERT INTO ll_observation.hooksComposition(%s) VALUES (%%s);",
    
    526
    +        "parentColumnName": "set",
    
    527
    +        "columnNames": "topiaid,homeid,hookoffset,hooksize,hooktype,lastupdatedate,proportion,set,topiacreatedate,topiaversion",
    
    528
    +        "entryPoint": true
    
    529
    +      }
    
    530
    +    ],
    
    531
    +    "fr.ird.observe.entities.data.ll.observation.Section": [
    
    532
    +      {
    
    533
    +        "gav": "ll_observation.section",
    
    534
    +        "selectedSql": "SELECT %s FROM ll_observation.section WHERE section.topiaId %s",
    
    535
    +        "insertSql": "INSERT INTO ll_observation.section(%s) VALUES (%%s);",
    
    536
    +        "parentColumnName": "set",
    
    537
    +        "columnNames": "topiaid,haulingidentifier,homeid,lastupdatedate,set,settingidentifier,topiacreatedate,topiaversion",
    
    538
    +        "entryPoint": true
    
    539
    +      },
    
    540
    +      {
    
    541
    +        "gav": "ll_observation.basket",
    
    542
    +        "selectedSql": "SELECT %s FROM ll_observation.basket basket WHERE basket.section %s",
    
    543
    +        "insertSql": "INSERT INTO ll_observation.basket(%s) VALUES (%%s);",
    
    544
    +        "parentColumnName": "section",
    
    545
    +        "columnNames": "topiaid,floatline1length,floatline2length,haulingidentifier,homeid,lastupdatedate,section,settingidentifier,topiacreatedate,topiaversion"
    
    546
    +      },
    
    547
    +      {
    
    548
    +        "gav": "ll_observation.branchline",
    
    549
    +        "selectedSql": "SELECT %s FROM ll_observation.branchline branchline INNER JOIN ll_observation.basket basket ON basket.topiaId = branchline.basket WHERE basket.section %s",
    
    550
    +        "insertSql": "INSERT INTO ll_observation.branchline(%s) VALUES (%%s);",
    
    551
    +        "parentColumnName": "basket",
    
    552
    +        "columnNames": "topiaid,baithaulingstatus,baitsettingstatus,baittype,basket,branchlinelength,comment,depthrecorder,haulingidentifier,homeid,hooklost,hookoffset,hooksize,hooktype,lastupdatedate,settingidentifier,snapweight,swivelweight,timer,timertimeonboard,timesincecontact,topiacreatedate,topiaversion,toptype,tracecutoff,tracelinelength,tracelinetype,weightedsnap,weightedswivel"
    
    553
    +      }
    
    554
    +    ],
    
    555
    +    "fr.ird.observe.entities.data.ll.observation.SensorUsed": [
    
    556
    +      {
    
    557
    +        "gav": "ll_observation.sensorUsed",
    
    558
    +        "selectedSql": "SELECT %s FROM ll_observation.sensorUsed WHERE sensorUsed.topiaId %s",
    
    559
    +        "insertSql": "INSERT INTO ll_observation.sensorUsed(%s) VALUES (%%s);",
    
    560
    +        "parentColumnName": "activity",
    
    561
    +        "columnNames": "topiaid,activity,data,datafilename,datalocation,homeid,lastupdatedate,sensorbrand,sensordataformat,sensorserialno,sensortype,topiacreatedate,topiaversion",
    
    562
    +        "useBlob": true,
    
    563
    +        "entryPoint": true
    
    564
    +      }
    
    565
    +    ],
    
    566
    +    "fr.ird.observe.entities.data.ll.observation.Set": [
    
    567
    +      {
    
    568
    +        "gav": "ll_observation.set",
    
    569
    +        "selectedSql": "SELECT %s FROM ll_observation.set WHERE set.topiaId %s",
    
    570
    +        "insertSql": "INSERT INTO ll_observation.set(%s) VALUES (%%s);",
    
    571
    +        "updateReverseAssociationSql": "UPDATE ll_observation.activity activity SET activity.set = '%s' WHERE activity.topiaId = '%s'",
    
    572
    +        "columnNames": "topiaid,basketspersectioncount,branchlinesperbasketcount,comment,haulingbreaks,haulingdirectionsameassetting,haulingendlatitude,haulingendlongitude,haulingendtimestamp,haulingstartlatitude,haulingstartlongitude,haulingstarttimestamp,homeid,lastupdatedate,lightstickscolor,lightsticksperbasketcount,lightstickstype,linetype,maxdepthtargeted,monitored,number,settingendlatitude,settingendlongitude,settingendtimestamp,settingshape,settingstartlatitude,settingstartlongitude,settingstarttimestamp,settingvesselspeed,shooterspeed,shooterused,snapweight,swivelweight,timebetweenhooks,topiacreatedate,topiaversion,totalbasketscount,totalhookscount,totalsectionscount,weightedsnap,weightedswivel",
    
    573
    +        "entryPoint": true
    
    574
    +      },
    
    575
    +      {
    
    576
    +        "gav": "ll_observation.baitsComposition",
    
    577
    +        "selectedSql": "SELECT %s FROM ll_observation.baitsComposition baitsComposition WHERE baitsComposition.set %s",
    
    578
    +        "insertSql": "INSERT INTO ll_observation.baitsComposition(%s) VALUES (%%s);",
    
    579
    +        "parentColumnName": "set",
    
    580
    +        "columnNames": "topiaid,baitsettingstatus,baittype,homeid,individualsize,individualweight,lastupdatedate,proportion,set,topiacreatedate,topiaversion"
    
    581
    +      },
    
    582
    +      {
    
    583
    +        "gav": "ll_observation.branchlinesComposition",
    
    584
    +        "selectedSql": "SELECT %s FROM ll_observation.branchlinesComposition branchlinesComposition WHERE branchlinesComposition.set %s",
    
    585
    +        "insertSql": "INSERT INTO ll_observation.branchlinesComposition(%s) VALUES (%%s);",
    
    586
    +        "parentColumnName": "set",
    
    587
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,proportion,set,topiacreatedate,topiaversion,toptype,tracelinelength,tracelinetype"
    
    588
    +      },
    
    589
    +      {
    
    590
    +        "gav": "ll_observation.floatlinesComposition",
    
    591
    +        "selectedSql": "SELECT %s FROM ll_observation.floatlinesComposition floatlinesComposition WHERE floatlinesComposition.set %s",
    
    592
    +        "insertSql": "INSERT INTO ll_observation.floatlinesComposition(%s) VALUES (%%s);",
    
    593
    +        "parentColumnName": "set",
    
    594
    +        "columnNames": "topiaid,homeid,lastupdatedate,length,linetype,proportion,set,topiacreatedate,topiaversion"
    
    595
    +      },
    
    596
    +      {
    
    597
    +        "gav": "ll_observation.hooksComposition",
    
    598
    +        "selectedSql": "SELECT %s FROM ll_observation.hooksComposition hooksComposition WHERE hooksComposition.set %s",
    
    599
    +        "insertSql": "INSERT INTO ll_observation.hooksComposition(%s) VALUES (%%s);",
    
    600
    +        "parentColumnName": "set",
    
    601
    +        "columnNames": "topiaid,homeid,hookoffset,hooksize,hooktype,lastupdatedate,proportion,set,topiacreatedate,topiaversion"
    
    602
    +      },
    
    603
    +      {
    
    604
    +        "gav": "ll_observation.section",
    
    605
    +        "selectedSql": "SELECT %s FROM ll_observation.section section WHERE section.set %s",
    
    606
    +        "insertSql": "INSERT INTO ll_observation.section(%s) VALUES (%%s);",
    
    607
    +        "parentColumnName": "set",
    
    608
    +        "columnNames": "topiaid,haulingidentifier,homeid,lastupdatedate,set,settingidentifier,topiacreatedate,topiaversion"
    
    609
    +      },
    
    610
    +      {
    
    611
    +        "gav": "ll_observation.basket",
    
    612
    +        "selectedSql": "SELECT %s FROM ll_observation.basket basket INNER JOIN ll_observation.section section ON section.topiaId = basket.section WHERE section.set %s",
    
    613
    +        "insertSql": "INSERT INTO ll_observation.basket(%s) VALUES (%%s);",
    
    614
    +        "parentColumnName": "section",
    
    615
    +        "columnNames": "topiaid,floatline1length,floatline2length,haulingidentifier,homeid,lastupdatedate,section,settingidentifier,topiacreatedate,topiaversion"
    
    616
    +      },
    
    617
    +      {
    
    618
    +        "gav": "ll_observation.branchline",
    
    619
    +        "selectedSql": "SELECT %s FROM ll_observation.branchline branchline INNER JOIN ll_observation.basket basket ON basket.topiaId = branchline.basket  INNER JOIN ll_observation.section section ON section.topiaId = basket.section WHERE section.set %s",
    
    620
    +        "insertSql": "INSERT INTO ll_observation.branchline(%s) VALUES (%%s);",
    
    621
    +        "parentColumnName": "basket",
    
    622
    +        "columnNames": "topiaid,baithaulingstatus,baitsettingstatus,baittype,basket,branchlinelength,comment,depthrecorder,haulingidentifier,homeid,hooklost,hookoffset,hooksize,hooktype,lastupdatedate,settingidentifier,snapweight,swivelweight,timer,timertimeonboard,timesincecontact,topiacreatedate,topiaversion,toptype,tracecutoff,tracelinelength,tracelinetype,weightedsnap,weightedswivel"
    
    623
    +      },
    
    624
    +      {
    
    625
    +        "gav": "ll_observation.tdr",
    
    626
    +        "selectedSql": "SELECT %s FROM ll_observation.tdr tdr WHERE tdr.set %s",
    
    627
    +        "insertSql": "INSERT INTO ll_observation.tdr(%s) VALUES (%%s);",
    
    628
    +        "parentColumnName": "set",
    
    629
    +        "columnNames": "topiaid,basket,branchline,data,datafilename,datalocation,deploymentend,deploymentstart,fishingend,fishingenddepth,fishingstart,fishingstartdepth,floatline1length,floatline2length,homeid,itemhorizontalposition,itemverticalposition,lastupdatedate,maxfishingdepth,meandeploymentdepth,meanfishingdepth,mediandeploymentdepth,medianfishingdepth,minfishingdepth,section,sensorbrand,serialno,set,topiacreatedate,topiaversion",
    
    630
    +        "columnsToReplace": "section,basket,branchline",
    
    631
    +        "useBlob": true
    
    632
    +      },
    
    633
    +      {
    
    634
    +        "gav": "ll_observation.catch",
    
    635
    +        "selectedSql": "SELECT %s FROM ll_observation.catch catch WHERE catch.set %s",
    
    636
    +        "insertSql": "INSERT INTO ll_observation.catch(%s) VALUES (%%s);",
    
    637
    +        "parentColumnName": "set",
    
    638
    +        "columnNames": "topiaid,acquisitionmode,basket,beatdiameter,branchline,catchfate,catchhealthstatus,comment,count,depredated,discardhealthstatus,gonadeweight,homeid,hookposition,hookwhendiscarded,lastupdatedate,maturitystatus,number,photoreferences,section,set,set_idx,sex,species,stomachfullness,tagnumber,topiacreatedate,topiaversion,totalweight,weightmeasuremethod",
    
    639
    +        "columnsToReplace": "section,basket,branchline"
    
    640
    +      },
    
    641
    +      {
    
    642
    +        "gav": "ll_observation.sizeMeasure",
    
    643
    +        "selectedSql": "SELECT %s FROM ll_observation.sizeMeasure sizeMeasure INNER JOIN ll_observation.catch catch ON catch.topiaId = sizeMeasure.catch WHERE catch.set %s",
    
    644
    +        "insertSql": "INSERT INTO ll_observation.sizeMeasure(%s) VALUES (%%s);",
    
    645
    +        "parentColumnName": "catch",
    
    646
    +        "columnNames": "topiaid,catch,homeid,lastupdatedate,size,sizemeasuretype,topiacreatedate,topiaversion"
    
    647
    +      },
    
    648
    +      {
    
    649
    +        "gav": "ll_observation.weightMeasure",
    
    650
    +        "selectedSql": "SELECT %s FROM ll_observation.weightMeasure weightMeasure INNER JOIN ll_observation.catch catch ON catch.topiaId = weightMeasure.catch WHERE catch.set %s",
    
    651
    +        "insertSql": "INSERT INTO ll_observation.weightMeasure(%s) VALUES (%%s);",
    
    652
    +        "parentColumnName": "catch",
    
    653
    +        "columnNames": "topiaid,catch,homeid,lastupdatedate,topiacreatedate,topiaversion,weight,weightmeasuretype"
    
    654
    +      },
    
    655
    +      {
    
    656
    +        "gav": "ll_observation.set_mitigationtype",
    
    657
    +        "selectedSql": "SELECT %s FROM ll_observation.set_mitigationtype WHERE set_mitigationtype.set %s",
    
    658
    +        "insertSql": "INSERT INTO ll_observation.set_mitigationtype(%s) VALUES (%%s);",
    
    659
    +        "parentColumnName": "set",
    
    660
    +        "columnNames": "mitigationtype,set",
    
    661
    +        "columnsToReplace": "set"
    
    662
    +      },
    
    663
    +      {
    
    664
    +        "gav": "ll_observation.tdr_species",
    
    665
    +        "selectedSql": "SELECT %s FROM ll_observation.tdr_species INNER JOIN ll_observation.tdr tdr ON tdr_species.tdr = tdr.topiaId WHERE tdr.set %s",
    
    666
    +        "insertSql": "INSERT INTO ll_observation.tdr_species(%s) VALUES (%%s);",
    
    667
    +        "parentColumnName": "tdr",
    
    668
    +        "columnNames": "species,tdr",
    
    669
    +        "columnsToReplace": "tdr"
    
    670
    +      },
    
    671
    +      {
    
    672
    +        "gav": "ll_observation.catch_predator",
    
    673
    +        "selectedSql": "SELECT %s FROM ll_observation.catch_predator INNER JOIN ll_observation.catch catch ON catch_predator.catch = catch.topiaId WHERE catch.set %s",
    
    674
    +        "insertSql": "INSERT INTO ll_observation.catch_predator(%s) VALUES (%%s);",
    
    675
    +        "parentColumnName": "catch",
    
    676
    +        "columnNames": "catch,species",
    
    677
    +        "columnsToReplace": "catch"
    
    678
    +      }
    
    679
    +    ],
    
    680
    +    "fr.ird.observe.entities.data.ll.observation.SizeMeasure": [
    
    681
    +      {
    
    682
    +        "gav": "ll_observation.sizeMeasure",
    
    683
    +        "selectedSql": "SELECT %s FROM ll_observation.sizeMeasure WHERE sizeMeasure.topiaId %s",
    
    684
    +        "insertSql": "INSERT INTO ll_observation.sizeMeasure(%s) VALUES (%%s);",
    
    685
    +        "parentColumnName": "catch",
    
    686
    +        "columnNames": "topiaid,catch,homeid,lastupdatedate,size,sizemeasuretype,topiacreatedate,topiaversion",
    
    687
    +        "entryPoint": true
    
    688
    +      }
    
    689
    +    ],
    
    690
    +    "fr.ird.observe.entities.data.ll.observation.Tdr": [
    
    691
    +      {
    
    692
    +        "gav": "ll_observation.tdr",
    
    693
    +        "selectedSql": "SELECT %s FROM ll_observation.tdr WHERE tdr.topiaId %s",
    
    694
    +        "insertSql": "INSERT INTO ll_observation.tdr(%s) VALUES (%%s);",
    
    695
    +        "parentColumnName": "set",
    
    696
    +        "columnNames": "topiaid,basket,branchline,data,datafilename,datalocation,deploymentend,deploymentstart,fishingend,fishingenddepth,fishingstart,fishingstartdepth,floatline1length,floatline2length,homeid,itemhorizontalposition,itemverticalposition,lastupdatedate,maxfishingdepth,meandeploymentdepth,meanfishingdepth,mediandeploymentdepth,medianfishingdepth,minfishingdepth,section,sensorbrand,serialno,set,topiacreatedate,topiaversion",
    
    697
    +        "columnsToDetach": "section~ll_observation.section,basket~ll_observation.basket,branchline~ll_observation.branchline",
    
    698
    +        "useBlob": true,
    
    699
    +        "entryPoint": true
    
    700
    +      },
    
    701
    +      {
    
    702
    +        "gav": "ll_observation.tdr_species",
    
    703
    +        "selectedSql": "SELECT %s FROM ll_observation.tdr_species WHERE tdr_species.tdr %s",
    
    704
    +        "insertSql": "INSERT INTO ll_observation.tdr_species(%s) VALUES (%%s);",
    
    705
    +        "parentColumnName": "tdr",
    
    706
    +        "columnNames": "species,tdr",
    
    707
    +        "columnsToReplace": "tdr"
    
    708
    +      }
    
    709
    +    ],
    
    710
    +    "fr.ird.observe.entities.data.ll.observation.WeightMeasure": [
    
    711
    +      {
    
    712
    +        "gav": "ll_observation.weightMeasure",
    
    713
    +        "selectedSql": "SELECT %s FROM ll_observation.weightMeasure WHERE weightMeasure.topiaId %s",
    
    714
    +        "insertSql": "INSERT INTO ll_observation.weightMeasure(%s) VALUES (%%s);",
    
    715
    +        "parentColumnName": "catch",
    
    716
    +        "columnNames": "topiaid,catch,homeid,lastupdatedate,topiacreatedate,topiaversion,weight,weightmeasuretype",
    
    717
    +        "entryPoint": true
    
    718
    +      }
    
    719
    +    ],
    
    720
    +    "fr.ird.observe.entities.data.ps.common.GearUseFeatures": [
    
    721
    +      {
    
    722
    +        "gav": "ps_common.gearUseFeatures",
    
    723
    +        "selectedSql": "SELECT %s FROM ps_common.gearUseFeatures WHERE gearUseFeatures.topiaId %s",
    
    724
    +        "insertSql": "INSERT INTO ps_common.gearUseFeatures(%s) VALUES (%%s);",
    
    725
    +        "parentColumnName": "trip",
    
    726
    +        "columnNames": "topiaid,comment,gear,homeid,lastupdatedate,number,topiacreatedate,topiaversion,trip,usedintrip",
    
    727
    +        "entryPoint": true
    
    728
    +      },
    
    729
    +      {
    
    730
    +        "gav": "ps_common.gearUseFeaturesMeasurement",
    
    731
    +        "selectedSql": "SELECT %s FROM ps_common.gearUseFeaturesMeasurement gearUseFeaturesMeasurement WHERE gearUseFeaturesMeasurement.gearUseFeatures %s",
    
    732
    +        "insertSql": "INSERT INTO ps_common.gearUseFeaturesMeasurement(%s) VALUES (%%s);",
    
    733
    +        "parentColumnName": "gearUseFeatures",
    
    734
    +        "columnNames": "topiaid,gearcharacteristic,gearusefeatures,homeid,lastupdatedate,measurementvalue,topiacreatedate,topiaversion"
    
    735
    +      }
    
    736
    +    ],
    
    737
    +    "fr.ird.observe.entities.data.ps.common.GearUseFeaturesMeasurement": [
    
    738
    +      {
    
    739
    +        "gav": "ps_common.gearUseFeaturesMeasurement",
    
    740
    +        "selectedSql": "SELECT %s FROM ps_common.gearUseFeaturesMeasurement WHERE gearUseFeaturesMeasurement.topiaId %s",
    
    741
    +        "insertSql": "INSERT INTO ps_common.gearUseFeaturesMeasurement(%s) VALUES (%%s);",
    
    742
    +        "parentColumnName": "gearUseFeatures",
    
    743
    +        "columnNames": "topiaid,gearcharacteristic,gearusefeatures,homeid,lastupdatedate,measurementvalue,topiacreatedate,topiaversion",
    
    744
    +        "entryPoint": true
    
    745
    +      }
    
    746
    +    ],
    
    747
    +    "fr.ird.observe.entities.data.ps.landing.Landing": [
    
    748
    +      {
    
    749
    +        "gav": "ps_landing.landing",
    
    750
    +        "selectedSql": "SELECT %s FROM ps_landing.landing WHERE landing.topiaId %s",
    
    751
    +        "insertSql": "INSERT INTO ps_landing.landing(%s) VALUES (%%s);",
    
    752
    +        "parentColumnName": "trip",
    
    753
    +        "columnNames": "topiaid,date,destination,fate,fatevessel,homeid,lastupdatedate,species,topiacreatedate,topiaversion,trip,trip_idx,weight,weightcategory",
    
    754
    +        "entryPoint": true
    
    755
    +      }
    
    756
    +    ],
    
    757
    +    "fr.ird.observe.entities.data.ps.localmarket.Batch": [
    
    758
    +      {
    
    759
    +        "gav": "ps_localmarket.batch",
    
    760
    +        "selectedSql": "SELECT %s FROM ps_localmarket.batch WHERE batch.topiaId %s",
    
    761
    +        "insertSql": "INSERT INTO ps_localmarket.batch(%s) VALUES (%%s);",
    
    762
    +        "parentColumnName": "trip",
    
    763
    +        "columnNames": "topiaid,comment,count,date,homeid,lastupdatedate,origin,packaging,species,survey,topiacreatedate,topiaversion,trip,weight,weightcomputedsource",
    
    764
    +        "columnsToDetach": "survey~ps_localmarket.survey",
    
    765
    +        "entryPoint": true
    
    766
    +      }
    
    767
    +    ],
    
    768
    +    "fr.ird.observe.entities.data.ps.localmarket.Sample": [
    
    769
    +      {
    
    770
    +        "gav": "ps_localmarket.sample",
    
    771
    +        "selectedSql": "SELECT %s FROM ps_localmarket.sample WHERE sample.topiaId %s",
    
    772
    +        "insertSql": "INSERT INTO ps_localmarket.sample(%s) VALUES (%%s);",
    
    773
    +        "parentColumnName": "trip",
    
    774
    +        "columnNames": "topiaid,comment,date,homeid,lastupdatedate,number,sampletype,topiacreatedate,topiaversion,trip",
    
    775
    +        "entryPoint": true
    
    776
    +      },
    
    777
    +      {
    
    778
    +        "gav": "ps_localmarket.sampleSpecies",
    
    779
    +        "selectedSql": "SELECT %s FROM ps_localmarket.sampleSpecies sampleSpecies WHERE sampleSpecies.sample %s",
    
    780
    +        "insertSql": "INSERT INTO ps_localmarket.sampleSpecies(%s) VALUES (%%s);",
    
    781
    +        "parentColumnName": "sample",
    
    782
    +        "columnNames": "topiaid,comment,homeid,lastupdatedate,measuredcount,sample,sizemeasuretype,species,topiacreatedate,topiaversion"
    
    783
    +      },
    
    784
    +      {
    
    785
    +        "gav": "ps_localmarket.sampleSpeciesMeasure",
    
    786
    +        "selectedSql": "SELECT %s FROM ps_localmarket.sampleSpeciesMeasure sampleSpeciesMeasure INNER JOIN ps_localmarket.sampleSpecies sampleSpecies ON sampleSpecies.topiaId = sampleSpeciesMeasure.sampleSpecies WHERE sampleSpecies.sample %s",
    
    787
    +        "insertSql": "INSERT INTO ps_localmarket.sampleSpeciesMeasure(%s) VALUES (%%s);",
    
    788
    +        "parentColumnName": "sampleSpecies",
    
    789
    +        "columnNames": "topiaid,count,homeid,lastupdatedate,samplespecies,sizeclass,topiacreatedate,topiaversion"
    
    790
    +      },
    
    791
    +      {
    
    792
    +        "gav": "ps_localmarket.sample_well",
    
    793
    +        "selectedSql": "SELECT %s FROM ps_localmarket.sample_well WHERE sample_well.sample %s",
    
    794
    +        "insertSql": "INSERT INTO ps_localmarket.sample_well(%s) VALUES (%%s);",
    
    795
    +        "parentColumnName": "sample",
    
    796
    +        "columnNames": "sample,well",
    
    797
    +        "columnsToReplace": "sample"
    
    798
    +      }
    
    799
    +    ],
    
    800
    +    "fr.ird.observe.entities.data.ps.localmarket.SampleSpecies": [
    
    801
    +      {
    
    802
    +        "gav": "ps_localmarket.sampleSpecies",
    
    803
    +        "selectedSql": "SELECT %s FROM ps_localmarket.sampleSpecies WHERE sampleSpecies.topiaId %s",
    
    804
    +        "insertSql": "INSERT INTO ps_localmarket.sampleSpecies(%s) VALUES (%%s);",
    
    805
    +        "parentColumnName": "sample",
    
    806
    +        "columnNames": "topiaid,comment,homeid,lastupdatedate,measuredcount,sample,sizemeasuretype,species,topiacreatedate,topiaversion",
    
    807
    +        "entryPoint": true
    
    808
    +      },
    
    809
    +      {
    
    810
    +        "gav": "ps_localmarket.sampleSpeciesMeasure",
    
    811
    +        "selectedSql": "SELECT %s FROM ps_localmarket.sampleSpeciesMeasure sampleSpeciesMeasure WHERE sampleSpeciesMeasure.sampleSpecies %s",
    
    812
    +        "insertSql": "INSERT INTO ps_localmarket.sampleSpeciesMeasure(%s) VALUES (%%s);",
    
    813
    +        "parentColumnName": "sampleSpecies",
    
    814
    +        "columnNames": "topiaid,count,homeid,lastupdatedate,samplespecies,sizeclass,topiacreatedate,topiaversion"
    
    815
    +      }
    
    816
    +    ],
    
    817
    +    "fr.ird.observe.entities.data.ps.localmarket.SampleSpeciesMeasure": [
    
    818
    +      {
    
    819
    +        "gav": "ps_localmarket.sampleSpeciesMeasure",
    
    820
    +        "selectedSql": "SELECT %s FROM ps_localmarket.sampleSpeciesMeasure WHERE sampleSpeciesMeasure.topiaId %s",
    
    821
    +        "insertSql": "INSERT INTO ps_localmarket.sampleSpeciesMeasure(%s) VALUES (%%s);",
    
    822
    +        "parentColumnName": "sampleSpecies",
    
    823
    +        "columnNames": "topiaid,count,homeid,lastupdatedate,samplespecies,sizeclass,topiacreatedate,topiaversion",
    
    824
    +        "entryPoint": true
    
    825
    +      }
    
    826
    +    ],
    
    827
    +    "fr.ird.observe.entities.data.ps.localmarket.Survey": [
    
    828
    +      {
    
    829
    +        "gav": "ps_localmarket.survey",
    
    830
    +        "selectedSql": "SELECT %s FROM ps_localmarket.survey WHERE survey.topiaId %s",
    
    831
    +        "insertSql": "INSERT INTO ps_localmarket.survey(%s) VALUES (%%s);",
    
    832
    +        "parentColumnName": "trip",
    
    833
    +        "columnNames": "topiaid,comment,date,homeid,lastupdatedate,number,topiacreatedate,topiaversion,trip",
    
    834
    +        "entryPoint": true
    
    835
    +      },
    
    836
    +      {
    
    837
    +        "gav": "ps_localmarket.surveyPart",
    
    838
    +        "selectedSql": "SELECT %s FROM ps_localmarket.surveyPart surveyPart WHERE surveyPart.survey %s",
    
    839
    +        "insertSql": "INSERT INTO ps_localmarket.surveyPart(%s) VALUES (%%s);",
    
    840
    +        "parentColumnName": "survey",
    
    841
    +        "columnNames": "topiaid,homeid,lastupdatedate,proportion,species,survey,topiacreatedate,topiaversion"
    
    842
    +      }
    
    843
    +    ],
    
    844
    +    "fr.ird.observe.entities.data.ps.localmarket.SurveyPart": [
    
    845
    +      {
    
    846
    +        "gav": "ps_localmarket.surveyPart",
    
    847
    +        "selectedSql": "SELECT %s FROM ps_localmarket.surveyPart WHERE surveyPart.topiaId %s",
    
    848
    +        "insertSql": "INSERT INTO ps_localmarket.surveyPart(%s) VALUES (%%s);",
    
    849
    +        "parentColumnName": "survey",
    
    850
    +        "columnNames": "topiaid,homeid,lastupdatedate,proportion,species,survey,topiacreatedate,topiaversion",
    
    851
    +        "entryPoint": true
    
    852
    +      }
    
    853
    +    ],
    
    854
    +    "fr.ird.observe.entities.data.ps.logbook.Activity": [
    
    855
    +      {
    
    856
    +        "gav": "ps_logbook.activity",
    
    857
    +        "selectedSql": "SELECT %s FROM ps_logbook.activity WHERE activity.topiaId %s",
    
    858
    +        "insertSql": "INSERT INTO ps_logbook.activity(%s) VALUES (%%s);",
    
    859
    +        "parentColumnName": "route",
    
    860
    +        "columnNames": "topiaid,comment,currentdirection,currentspeed,dataquality,fpazone,homeid,informationsource,lastupdatedate,latitude,latitudeoriginal,longitude,longitudeoriginal,number,originaldatamodified,positioncorrected,reasonfornofishing,reasonfornullset,relatedobservedactivity,route,schooltype,seasurfacetemperature,setcount,setsuccessstatus,time,topiacreatedate,topiaversion,totalweight,vesselactivity,vmsdivergent,wind,winddirection",
    
    861
    +        "columnsToDetach": "relatedObservedActivity~ps_observation.activity",
    
    862
    +        "entryPoint": true
    
    863
    +      },
    
    864
    +      {
    
    865
    +        "gav": "ps_logbook.catch",
    
    866
    +        "selectedSql": "SELECT %s FROM ps_logbook.catch catch WHERE catch.activity %s",
    
    867
    +        "insertSql": "INSERT INTO ps_logbook.catch(%s) VALUES (%%s);",
    
    868
    +        "parentColumnName": "activity",
    
    869
    +        "columnNames": "topiaid,activity,activity_idx,comment,count,homeid,lastupdatedate,species,speciesfate,topiacreatedate,topiaversion,weight,weightcategory,weightmeasuremethod,well"
    
    870
    +      },
    
    871
    +      {
    
    872
    +        "gav": "ps_logbook.floatingObject",
    
    873
    +        "selectedSql": "SELECT %s FROM ps_logbook.floatingObject floatingObject WHERE floatingObject.activity %s",
    
    874
    +        "insertSql": "INSERT INTO ps_logbook.floatingObject(%s) VALUES (%%s);",
    
    875
    +        "parentColumnName": "activity",
    
    876
    +        "columnNames": "topiaid,activity,comment,computedwhenarrivingbiodegradable,computedwhenarrivingnonentangling,computedwhenarrivingsimplifiedobjecttype,computedwhenleavingbiodegradable,computedwhenleavingnonentangling,computedwhenleavingsimplifiedobjecttype,homeid,lastupdatedate,objectoperation,supportvesselname,topiacreatedate,topiaversion"
    
    877
    +      },
    
    878
    +      {
    
    879
    +        "gav": "ps_logbook.floatingObjectPart",
    
    880
    +        "selectedSql": "SELECT %s FROM ps_logbook.floatingObjectPart floatingObjectPart INNER JOIN ps_logbook.floatingObject floatingObject ON floatingObject.topiaId = floatingObjectPart.floatingObject WHERE floatingObject.activity %s",
    
    881
    +        "insertSql": "INSERT INTO ps_logbook.floatingObjectPart(%s) VALUES (%%s);",
    
    882
    +        "parentColumnName": "floatingObject",
    
    883
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,objectmaterial,topiacreatedate,topiaversion,whenarriving,whenleaving"
    
    884
    +      },
    
    885
    +      {
    
    886
    +        "gav": "ps_logbook.transmittingBuoy",
    
    887
    +        "selectedSql": "SELECT %s FROM ps_logbook.transmittingBuoy transmittingBuoy INNER JOIN ps_logbook.floatingObject floatingObject ON floatingObject.topiaId = transmittingBuoy.floatingObject WHERE floatingObject.activity %s",
    
    888
    +        "insertSql": "INSERT INTO ps_logbook.transmittingBuoy(%s) VALUES (%%s);",
    
    889
    +        "parentColumnName": "floatingObject",
    
    890
    +        "columnNames": "topiaid,code,comment,country,floatingobject,homeid,lastupdatedate,latitude,longitude,topiacreatedate,topiaversion,transmittingbuoyoperation,transmittingbuoyownership,transmittingbuoytype,vessel"
    
    891
    +      },
    
    892
    +      {
    
    893
    +        "gav": "ps_logbook.activity_observedsystem",
    
    894
    +        "selectedSql": "SELECT %s FROM ps_logbook.activity_observedsystem WHERE activity_observedsystem.activity %s",
    
    895
    +        "insertSql": "INSERT INTO ps_logbook.activity_observedsystem(%s) VALUES (%%s);",
    
    896
    +        "parentColumnName": "activity",
    
    897
    +        "columnNames": "activity,observedsystem",
    
    898
    +        "columnsToReplace": "activity"
    
    899
    +      }
    
    900
    +    ],
    
    901
    +    "fr.ird.observe.entities.data.ps.logbook.Catch": [
    
    902
    +      {
    
    903
    +        "gav": "ps_logbook.catch",
    
    904
    +        "selectedSql": "SELECT %s FROM ps_logbook.catch WHERE catch.topiaId %s",
    
    905
    +        "insertSql": "INSERT INTO ps_logbook.catch(%s) VALUES (%%s);",
    
    906
    +        "parentColumnName": "activity",
    
    907
    +        "columnNames": "topiaid,activity,activity_idx,comment,count,homeid,lastupdatedate,species,speciesfate,topiacreatedate,topiaversion,weight,weightcategory,weightmeasuremethod,well",
    
    908
    +        "entryPoint": true
    
    909
    +      }
    
    910
    +    ],
    
    911
    +    "fr.ird.observe.entities.data.ps.logbook.FloatingObject": [
    
    912
    +      {
    
    913
    +        "gav": "ps_logbook.floatingObject",
    
    914
    +        "selectedSql": "SELECT %s FROM ps_logbook.floatingObject WHERE floatingObject.topiaId %s",
    
    915
    +        "insertSql": "INSERT INTO ps_logbook.floatingObject(%s) VALUES (%%s);",
    
    916
    +        "parentColumnName": "activity",
    
    917
    +        "columnNames": "topiaid,activity,comment,computedwhenarrivingbiodegradable,computedwhenarrivingnonentangling,computedwhenarrivingsimplifiedobjecttype,computedwhenleavingbiodegradable,computedwhenleavingnonentangling,computedwhenleavingsimplifiedobjecttype,homeid,lastupdatedate,objectoperation,supportvesselname,topiacreatedate,topiaversion",
    
    918
    +        "entryPoint": true
    
    919
    +      },
    
    920
    +      {
    
    921
    +        "gav": "ps_logbook.floatingObjectPart",
    
    922
    +        "selectedSql": "SELECT %s FROM ps_logbook.floatingObjectPart floatingObjectPart WHERE floatingObjectPart.floatingObject %s",
    
    923
    +        "insertSql": "INSERT INTO ps_logbook.floatingObjectPart(%s) VALUES (%%s);",
    
    924
    +        "parentColumnName": "floatingObject",
    
    925
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,objectmaterial,topiacreatedate,topiaversion,whenarriving,whenleaving"
    
    926
    +      },
    
    927
    +      {
    
    928
    +        "gav": "ps_logbook.transmittingBuoy",
    
    929
    +        "selectedSql": "SELECT %s FROM ps_logbook.transmittingBuoy transmittingBuoy WHERE transmittingBuoy.floatingObject %s",
    
    930
    +        "insertSql": "INSERT INTO ps_logbook.transmittingBuoy(%s) VALUES (%%s);",
    
    931
    +        "parentColumnName": "floatingObject",
    
    932
    +        "columnNames": "topiaid,code,comment,country,floatingobject,homeid,lastupdatedate,latitude,longitude,topiacreatedate,topiaversion,transmittingbuoyoperation,transmittingbuoyownership,transmittingbuoytype,vessel"
    
    933
    +      }
    
    934
    +    ],
    
    935
    +    "fr.ird.observe.entities.data.ps.logbook.FloatingObjectPart": [
    
    936
    +      {
    
    937
    +        "gav": "ps_logbook.floatingObjectPart",
    
    938
    +        "selectedSql": "SELECT %s FROM ps_logbook.floatingObjectPart WHERE floatingObjectPart.topiaId %s",
    
    939
    +        "insertSql": "INSERT INTO ps_logbook.floatingObjectPart(%s) VALUES (%%s);",
    
    940
    +        "parentColumnName": "floatingObject",
    
    941
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,objectmaterial,topiacreatedate,topiaversion,whenarriving,whenleaving",
    
    942
    +        "entryPoint": true
    
    943
    +      }
    
    944
    +    ],
    
    945
    +    "fr.ird.observe.entities.data.ps.logbook.Route": [
    
    946
    +      {
    
    947
    +        "gav": "ps_logbook.route",
    
    948
    +        "selectedSql": "SELECT %s FROM ps_logbook.route WHERE route.topiaId %s",
    
    949
    +        "insertSql": "INSERT INTO ps_logbook.route(%s) VALUES (%%s);",
    
    950
    +        "parentColumnName": "trip",
    
    951
    +        "columnNames": "topiaid,comment,date,fishingtime,homeid,lastupdatedate,timeatsea,topiacreatedate,topiaversion,trip",
    
    952
    +        "entryPoint": true
    
    953
    +      },
    
    954
    +      {
    
    955
    +        "gav": "ps_logbook.activity",
    
    956
    +        "selectedSql": "SELECT %s FROM ps_logbook.activity activity WHERE activity.route %s",
    
    957
    +        "insertSql": "INSERT INTO ps_logbook.activity(%s) VALUES (%%s);",
    
    958
    +        "parentColumnName": "route",
    
    959
    +        "columnNames": "topiaid,comment,currentdirection,currentspeed,dataquality,fpazone,homeid,informationsource,lastupdatedate,latitude,latitudeoriginal,longitude,longitudeoriginal,number,originaldatamodified,positioncorrected,reasonfornofishing,reasonfornullset,relatedobservedactivity,route,schooltype,seasurfacetemperature,setcount,setsuccessstatus,time,topiacreatedate,topiaversion,totalweight,vesselactivity,vmsdivergent,wind,winddirection",
    
    960
    +        "columnsToDetach": "relatedObservedActivity~ps_observation.activity"
    
    961
    +      },
    
    962
    +      {
    
    963
    +        "gav": "ps_logbook.catch",
    
    964
    +        "selectedSql": "SELECT %s FROM ps_logbook.catch catch INNER JOIN ps_logbook.activity activity ON activity.topiaId = catch.activity WHERE activity.route %s",
    
    965
    +        "insertSql": "INSERT INTO ps_logbook.catch(%s) VALUES (%%s);",
    
    966
    +        "parentColumnName": "activity",
    
    967
    +        "columnNames": "topiaid,activity,activity_idx,comment,count,homeid,lastupdatedate,species,speciesfate,topiacreatedate,topiaversion,weight,weightcategory,weightmeasuremethod,well"
    
    968
    +      },
    
    969
    +      {
    
    970
    +        "gav": "ps_logbook.floatingObject",
    
    971
    +        "selectedSql": "SELECT %s FROM ps_logbook.floatingObject floatingObject INNER JOIN ps_logbook.activity activity ON activity.topiaId = floatingObject.activity WHERE activity.route %s",
    
    972
    +        "insertSql": "INSERT INTO ps_logbook.floatingObject(%s) VALUES (%%s);",
    
    973
    +        "parentColumnName": "activity",
    
    974
    +        "columnNames": "topiaid,activity,comment,computedwhenarrivingbiodegradable,computedwhenarrivingnonentangling,computedwhenarrivingsimplifiedobjecttype,computedwhenleavingbiodegradable,computedwhenleavingnonentangling,computedwhenleavingsimplifiedobjecttype,homeid,lastupdatedate,objectoperation,supportvesselname,topiacreatedate,topiaversion"
    
    975
    +      },
    
    976
    +      {
    
    977
    +        "gav": "ps_logbook.floatingObjectPart",
    
    978
    +        "selectedSql": "SELECT %s FROM ps_logbook.floatingObjectPart floatingObjectPart INNER JOIN ps_logbook.floatingObject floatingObject ON floatingObject.topiaId = floatingObjectPart.floatingObject  INNER JOIN ps_logbook.activity activity ON activity.topiaId = floatingObject.activity WHERE activity.route %s",
    
    979
    +        "insertSql": "INSERT INTO ps_logbook.floatingObjectPart(%s) VALUES (%%s);",
    
    980
    +        "parentColumnName": "floatingObject",
    
    981
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,objectmaterial,topiacreatedate,topiaversion,whenarriving,whenleaving"
    
    982
    +      },
    
    983
    +      {
    
    984
    +        "gav": "ps_logbook.transmittingBuoy",
    
    985
    +        "selectedSql": "SELECT %s FROM ps_logbook.transmittingBuoy transmittingBuoy INNER JOIN ps_logbook.floatingObject floatingObject ON floatingObject.topiaId = transmittingBuoy.floatingObject  INNER JOIN ps_logbook.activity activity ON activity.topiaId = floatingObject.activity WHERE activity.route %s",
    
    986
    +        "insertSql": "INSERT INTO ps_logbook.transmittingBuoy(%s) VALUES (%%s);",
    
    987
    +        "parentColumnName": "floatingObject",
    
    988
    +        "columnNames": "topiaid,code,comment,country,floatingobject,homeid,lastupdatedate,latitude,longitude,topiacreatedate,topiaversion,transmittingbuoyoperation,transmittingbuoyownership,transmittingbuoytype,vessel"
    
    989
    +      },
    
    990
    +      {
    
    991
    +        "gav": "ps_logbook.activity_observedsystem",
    
    992
    +        "selectedSql": "SELECT %s FROM ps_logbook.activity_observedsystem INNER JOIN ps_logbook.activity activity ON activity_observedsystem.activity = activity.topiaId WHERE activity.route %s",
    
    993
    +        "insertSql": "INSERT INTO ps_logbook.activity_observedsystem(%s) VALUES (%%s);",
    
    994
    +        "parentColumnName": "activity",
    
    995
    +        "columnNames": "activity,observedsystem",
    
    996
    +        "columnsToReplace": "activity"
    
    997
    +      }
    
    998
    +    ],
    
    999
    +    "fr.ird.observe.entities.data.ps.logbook.Sample": [
    
    1000
    +      {
    
    1001
    +        "gav": "ps_logbook.sample",
    
    1002
    +        "selectedSql": "SELECT %s FROM ps_logbook.sample WHERE sample.topiaId %s",
    
    1003
    +        "insertSql": "INSERT INTO ps_logbook.sample(%s) VALUES (%%s);",
    
    1004
    +        "parentColumnName": "trip",
    
    1005
    +        "columnNames": "topiaid,bigsweight,comment,homeid,lastupdatedate,number,samplequality,sampletype,smallsweight,supersample,topiacreatedate,topiaversion,totalweight,trip,well",
    
    1006
    +        "entryPoint": true
    
    1007
    +      },
    
    1008
    +      {
    
    1009
    +        "gav": "ps_logbook.sampleActivity",
    
    1010
    +        "selectedSql": "SELECT %s FROM ps_logbook.sampleActivity sampleActivity WHERE sampleActivity.sample %s",
    
    1011
    +        "insertSql": "INSERT INTO ps_logbook.sampleActivity(%s) VALUES (%%s);",
    
    1012
    +        "parentColumnName": "sample",
    
    1013
    +        "columnNames": "topiaid,activity,homeid,lastupdatedate,sample,topiacreatedate,topiaversion,weightedweight",
    
    1014
    +        "columnsToDetach": "activity~ps_logbook.activity"
    
    1015
    +      },
    
    1016
    +      {
    
    1017
    +        "gav": "ps_logbook.sampleSpecies",
    
    1018
    +        "selectedSql": "SELECT %s FROM ps_logbook.sampleSpecies sampleSpecies WHERE sampleSpecies.sample %s",
    
    1019
    +        "insertSql": "INSERT INTO ps_logbook.sampleSpecies(%s) VALUES (%%s);",
    
    1020
    +        "parentColumnName": "sample",
    
    1021
    +        "columnNames": "topiaid,comment,endtime,homeid,lastupdatedate,measuredcount,sample,sample_idx,sizemeasuretype,species,starttime,subsamplenumber,topiacreatedate,topiaversion,totalcount"
    
    1022
    +      },
    
    1023
    +      {
    
    1024
    +        "gav": "ps_logbook.sampleSpeciesMeasure",
    
    1025
    +        "selectedSql": "SELECT %s FROM ps_logbook.sampleSpeciesMeasure sampleSpeciesMeasure INNER JOIN ps_logbook.sampleSpecies sampleSpecies ON sampleSpecies.topiaId = sampleSpeciesMeasure.sampleSpecies WHERE sampleSpecies.sample %s",
    
    1026
    +        "insertSql": "INSERT INTO ps_logbook.sampleSpeciesMeasure(%s) VALUES (%%s);",
    
    1027
    +        "parentColumnName": "sampleSpecies",
    
    1028
    +        "columnNames": "topiaid,count,homeid,lastupdatedate,samplespecies,sizeclass,topiacreatedate,topiaversion"
    
    1029
    +      },
    
    1030
    +      {
    
    1031
    +        "gav": "ps_logbook.sample_person",
    
    1032
    +        "selectedSql": "SELECT %s FROM ps_logbook.sample_person WHERE sample_person.sample %s",
    
    1033
    +        "insertSql": "INSERT INTO ps_logbook.sample_person(%s) VALUES (%%s);",
    
    1034
    +        "parentColumnName": "sample",
    
    1035
    +        "columnNames": "person,sample",
    
    1036
    +        "columnsToReplace": "sample"
    
    1037
    +      }
    
    1038
    +    ],
    
    1039
    +    "fr.ird.observe.entities.data.ps.logbook.SampleActivity": [
    
    1040
    +      {
    
    1041
    +        "gav": "ps_logbook.sampleActivity",
    
    1042
    +        "selectedSql": "SELECT %s FROM ps_logbook.sampleActivity WHERE sampleActivity.topiaId %s",
    
    1043
    +        "insertSql": "INSERT INTO ps_logbook.sampleActivity(%s) VALUES (%%s);",
    
    1044
    +        "parentColumnName": "sample",
    
    1045
    +        "columnNames": "topiaid,activity,homeid,lastupdatedate,sample,topiacreatedate,topiaversion,weightedweight",
    
    1046
    +        "columnsToDetach": "activity~ps_logbook.activity",
    
    1047
    +        "entryPoint": true
    
    1048
    +      }
    
    1049
    +    ],
    
    1050
    +    "fr.ird.observe.entities.data.ps.logbook.SampleSpecies": [
    
    1051
    +      {
    
    1052
    +        "gav": "ps_logbook.sampleSpecies",
    
    1053
    +        "selectedSql": "SELECT %s FROM ps_logbook.sampleSpecies WHERE sampleSpecies.topiaId %s",
    
    1054
    +        "insertSql": "INSERT INTO ps_logbook.sampleSpecies(%s) VALUES (%%s);",
    
    1055
    +        "parentColumnName": "sample",
    
    1056
    +        "columnNames": "topiaid,comment,endtime,homeid,lastupdatedate,measuredcount,sample,sample_idx,sizemeasuretype,species,starttime,subsamplenumber,topiacreatedate,topiaversion,totalcount",
    
    1057
    +        "entryPoint": true
    
    1058
    +      },
    
    1059
    +      {
    
    1060
    +        "gav": "ps_logbook.sampleSpeciesMeasure",
    
    1061
    +        "selectedSql": "SELECT %s FROM ps_logbook.sampleSpeciesMeasure sampleSpeciesMeasure WHERE sampleSpeciesMeasure.sampleSpecies %s",
    
    1062
    +        "insertSql": "INSERT INTO ps_logbook.sampleSpeciesMeasure(%s) VALUES (%%s);",
    
    1063
    +        "parentColumnName": "sampleSpecies",
    
    1064
    +        "columnNames": "topiaid,count,homeid,lastupdatedate,samplespecies,sizeclass,topiacreatedate,topiaversion"
    
    1065
    +      }
    
    1066
    +    ],
    
    1067
    +    "fr.ird.observe.entities.data.ps.logbook.SampleSpeciesMeasure": [
    
    1068
    +      {
    
    1069
    +        "gav": "ps_logbook.sampleSpeciesMeasure",
    
    1070
    +        "selectedSql": "SELECT %s FROM ps_logbook.sampleSpeciesMeasure WHERE sampleSpeciesMeasure.topiaId %s",
    
    1071
    +        "insertSql": "INSERT INTO ps_logbook.sampleSpeciesMeasure(%s) VALUES (%%s);",
    
    1072
    +        "parentColumnName": "sampleSpecies",
    
    1073
    +        "columnNames": "topiaid,count,homeid,lastupdatedate,samplespecies,sizeclass,topiacreatedate,topiaversion",
    
    1074
    +        "entryPoint": true
    
    1075
    +      }
    
    1076
    +    ],
    
    1077
    +    "fr.ird.observe.entities.data.ps.logbook.TransmittingBuoy": [
    
    1078
    +      {
    
    1079
    +        "gav": "ps_logbook.transmittingBuoy",
    
    1080
    +        "selectedSql": "SELECT %s FROM ps_logbook.transmittingBuoy WHERE transmittingBuoy.topiaId %s",
    
    1081
    +        "insertSql": "INSERT INTO ps_logbook.transmittingBuoy(%s) VALUES (%%s);",
    
    1082
    +        "parentColumnName": "floatingObject",
    
    1083
    +        "columnNames": "topiaid,code,comment,country,floatingobject,homeid,lastupdatedate,latitude,longitude,topiacreatedate,topiaversion,transmittingbuoyoperation,transmittingbuoyownership,transmittingbuoytype,vessel",
    
    1084
    +        "entryPoint": true
    
    1085
    +      }
    
    1086
    +    ],
    
    1087
    +    "fr.ird.observe.entities.data.ps.logbook.WellPlan": [
    
    1088
    +      {
    
    1089
    +        "gav": "ps_logbook.wellPlan",
    
    1090
    +        "selectedSql": "SELECT %s FROM ps_logbook.wellPlan WHERE wellPlan.topiaId %s",
    
    1091
    +        "insertSql": "INSERT INTO ps_logbook.wellPlan(%s) VALUES (%%s);",
    
    1092
    +        "parentColumnName": "trip",
    
    1093
    +        "columnNames": "topiaid,activity,homeid,lastupdatedate,species,topiacreatedate,topiaversion,trip,trip_idx,weight,weightcategory,well,wellsamplingconformity,wellsamplingstatus",
    
    1094
    +        "columnsToDetach": "activity~ps_logbook.activity",
    
    1095
    +        "entryPoint": true
    
    1096
    +      }
    
    1097
    +    ],
    
    1098
    +    "fr.ird.observe.entities.data.ps.observation.Activity": [
    
    1099
    +      {
    
    1100
    +        "gav": "ps_observation.set",
    
    1101
    +        "selectedSql": "SELECT %s FROM ps_observation.set set INNER JOIN ps_observation.activity activity ON activity.set = set.topiaId WHERE activity.topiaId %s",
    
    1102
    +        "insertSql": "INSERT INTO ps_observation.set(%s) VALUES (%%s);",
    
    1103
    +        "columnNames": "topiaid,comment,currentdirection,currentmeasuredepth,currentspeed,endtimestamp,haulingendtimestamp,haulingstarttimestamp,homeid,lastupdatedate,maxgeardepth,reasonfornullset,schoolmeandepth,schoolthickness,schooltopdepth,schooltype,starttime,supportvesselname,topiacreatedate,topiaversion"
    
    1104
    +      },
    
    1105
    +      {
    
    1106
    +        "gav": "ps_observation.activity",
    
    1107
    +        "selectedSql": "SELECT %s FROM ps_observation.activity WHERE activity.topiaId %s",
    
    1108
    +        "insertSql": "INSERT INTO ps_observation.activity(%s) VALUES (%%s);",
    
    1109
    +        "parentColumnName": "route",
    
    1110
    +        "columnNames": "topiaid,comment,currentfpazone,dataquality,detectionmode,ersid,homeid,lastupdatedate,latitude,longitude,nextfpazone,observedsystemdistance,previousfpazone,reasonfornofishing,route,seasurfacetemperature,set,surroundingactivity,time,topiacreatedate,topiaversion,vesselactivity,vesselspeed,wind",
    
    1111
    +        "columnsToReplace": "set",
    
    1112
    +        "entryPoint": true
    
    1113
    +      },
    
    1114
    +      {
    
    1115
    +        "gav": "ps_observation.catch",
    
    1116
    +        "selectedSql": "SELECT %s FROM ps_observation.catch catch INNER JOIN ps_observation.activity activity ON activity.set = catch.set  INNER JOIN ps_observation.route route ON route.topiaId = activity.route WHERE activity.topiaId %s",
    
    1117
    +        "insertSql": "INSERT INTO ps_observation.catch(%s) VALUES (%%s);",
    
    1118
    +        "parentColumnName": "set",
    
    1119
    +        "columnNames": "topiaid,catchweight,catchweightcomputedsource,comment,homeid,informationsource,lastupdatedate,lengthmeasuremethod,meanlength,meanlengthcomputedsource,meanweight,meanweightcomputedsource,reasonfordiscard,set,set_idx,species,speciesfate,topiacreatedate,topiaversion,totalcount,totalcountcomputedsource,weightmeasuremethod,well"
    
    1120
    +      },
    
    1121
    +      {
    
    1122
    +        "gav": "ps_observation.floatingObject",
    
    1123
    +        "selectedSql": "SELECT %s FROM ps_observation.floatingObject floatingObject WHERE floatingObject.activity %s",
    
    1124
    +        "insertSql": "INSERT INTO ps_observation.floatingObject(%s) VALUES (%%s);",
    
    1125
    +        "parentColumnName": "activity",
    
    1126
    +        "columnNames": "topiaid,activity,comment,computedwhenarrivingbiodegradable,computedwhenarrivingnonentangling,computedwhenarrivingsimplifiedobjecttype,computedwhenleavingbiodegradable,computedwhenleavingnonentangling,computedwhenleavingsimplifiedobjecttype,homeid,lastupdatedate,objectoperation,supportvesselname,topiacreatedate,topiaversion"
    
    1127
    +      },
    
    1128
    +      {
    
    1129
    +        "gav": "ps_observation.floatingObjectPart",
    
    1130
    +        "selectedSql": "SELECT %s FROM ps_observation.floatingObjectPart floatingObjectPart INNER JOIN ps_observation.floatingObject floatingObject ON floatingObject.topiaId = floatingObjectPart.floatingObject WHERE floatingObject.activity %s",
    
    1131
    +        "insertSql": "INSERT INTO ps_observation.floatingObjectPart(%s) VALUES (%%s);",
    
    1132
    +        "parentColumnName": "floatingObject",
    
    1133
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,objectmaterial,topiacreatedate,topiaversion,whenarriving,whenleaving"
    
    1134
    +      },
    
    1135
    +      {
    
    1136
    +        "gav": "ps_observation.nonTargetCatchRelease",
    
    1137
    +        "selectedSql": "SELECT %s FROM ps_observation.nonTargetCatchRelease nonTargetCatchRelease INNER JOIN ps_observation.activity activity ON activity.set = nonTargetCatchRelease.set  INNER JOIN ps_observation.route route ON route.topiaId = activity.route WHERE activity.topiaId %s",
    
    1138
    +        "insertSql": "INSERT INTO ps_observation.nonTargetCatchRelease(%s) VALUES (%%s);",
    
    1139
    +        "parentColumnName": "set",
    
    1140
    +        "columnNames": "topiaid,acquisitionmode,comment,conformity,count,homeid,lastupdatedate,length,lengthmeasuremethod,releasingtime,set,set_idx,sex,species,speciesgroupreleasemode,status,topiacreatedate,topiaversion"
    
    1141
    +      },
    
    1142
    +      {
    
    1143
    +        "gav": "ps_observation.objectObservedSpecies",
    
    1144
    +        "selectedSql": "SELECT %s FROM ps_observation.objectObservedSpecies objectObservedSpecies INNER JOIN ps_observation.floatingObject floatingObject ON floatingObject.topiaId = objectObservedSpecies.floatingObject WHERE floatingObject.activity %s",
    
    1145
    +        "insertSql": "INSERT INTO ps_observation.objectObservedSpecies(%s) VALUES (%%s);",
    
    1146
    +        "parentColumnName": "floatingObject",
    
    1147
    +        "columnNames": "topiaid,count,floatingobject,homeid,lastupdatedate,species,speciesstatus,topiacreatedate,topiaversion"
    
    1148
    +      },
    
    1149
    +      {
    
    1150
    +        "gav": "ps_observation.objectSchoolEstimate",
    
    1151
    +        "selectedSql": "SELECT %s FROM ps_observation.objectSchoolEstimate objectSchoolEstimate INNER JOIN ps_observation.floatingObject floatingObject ON floatingObject.topiaId = objectSchoolEstimate.floatingObject WHERE floatingObject.activity %s",
    
    1152
    +        "insertSql": "INSERT INTO ps_observation.objectSchoolEstimate(%s) VALUES (%%s);",
    
    1153
    +        "parentColumnName": "floatingObject",
    
    1154
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,species,topiacreatedate,topiaversion,totalweight,weightmeasuremethod"
    
    1155
    +      },
    
    1156
    +      {
    
    1157
    +        "gav": "ps_observation.schoolEstimate",
    
    1158
    +        "selectedSql": "SELECT %s FROM ps_observation.schoolEstimate schoolEstimate INNER JOIN ps_observation.activity activity ON activity.set = schoolEstimate.set  INNER JOIN ps_observation.route route ON route.topiaId = activity.route WHERE activity.topiaId %s",
    
    1159
    +        "insertSql": "INSERT INTO ps_observation.schoolEstimate(%s) VALUES (%%s);",
    
    1160
    +        "parentColumnName": "set",
    
    1161
    +        "columnNames": "topiaid,homeid,lastupdatedate,meanweight,set,species,topiacreatedate,topiaversion,totalweight,weightmeasuremethod"
    
    1162
    +      },
    
    1163
    +      {
    
    1164
    +        "gav": "ps_observation.transmittingBuoy",
    
    1165
    +        "selectedSql": "SELECT %s FROM ps_observation.transmittingBuoy transmittingBuoy INNER JOIN ps_observation.floatingObject floatingObject ON floatingObject.topiaId = transmittingBuoy.floatingObject WHERE floatingObject.activity %s",
    
    1166
    +        "insertSql": "INSERT INTO ps_observation.transmittingBuoy(%s) VALUES (%%s);",
    
    1167
    +        "parentColumnName": "floatingObject",
    
    1168
    +        "columnNames": "topiaid,code,comment,country,floatingobject,homeid,lastupdatedate,latitude,longitude,topiacreatedate,topiaversion,transmittingbuoyoperation,transmittingbuoyownership,transmittingbuoytype,vessel"
    
    1169
    +      },
    
    1170
    +      {
    
    1171
    +        "gav": "ps_observation.sample",
    
    1172
    +        "selectedSql": "SELECT %s FROM ps_observation.sample sample INNER JOIN ps_observation.activity activity ON activity.set = sample.set  INNER JOIN ps_observation.route route ON route.topiaId = activity.route WHERE activity.topiaId %s",
    
    1173
    +        "insertSql": "INSERT INTO ps_observation.sample(%s) VALUES (%%s);",
    
    1174
    +        "parentColumnName": "set",
    
    1175
    +        "columnNames": "topiaid,comment,homeid,lastupdatedate,set,topiacreatedate,topiaversion"
    
    1176
    +      },
    
    1177
    +      {
    
    1178
    +        "gav": "ps_observation.sampleMeasure",
    
    1179
    +        "selectedSql": "SELECT %s FROM ps_observation.sampleMeasure sampleMeasure INNER JOIN ps_observation.sample sample ON sample.topiaId = sampleMeasure.sample  INNER JOIN ps_observation.activity activity ON activity.set = sample.set  INNER JOIN ps_observation.route route ON route.topiaId = activity.route WHERE activity.topiaId %s",
    
    1180
    +        "insertSql": "INSERT INTO ps_observation.sampleMeasure(%s) VALUES (%%s);",
    
    1181
    +        "parentColumnName": "sample",
    
    1182
    +        "columnNames": "topiaid,acquisitionmode,count,homeid,islengthcomputed,isweightcomputed,lastupdatedate,length,lengthmeasuremethod,picturesreferences,sample,sample_idx,sex,sizemeasuretype,species,speciesfate,tagnumber,topiacreatedate,topiaversion,weight,weightmeasuremethod,weightmeasuretype"
    
    1183
    +      },
    
    1184
    +      {
    
    1185
    +        "gav": "ps_observation.activity_observedsystem",
    
    1186
    +        "selectedSql": "SELECT %s FROM ps_observation.activity_observedsystem WHERE activity_observedsystem.activity %s",
    
    1187
    +        "insertSql": "INSERT INTO ps_observation.activity_observedsystem(%s) VALUES (%%s);",
    
    1188
    +        "parentColumnName": "activity",
    
    1189
    +        "columnNames": "activity,observedsystem",
    
    1190
    +        "columnsToReplace": "activity"
    
    1191
    +      }
    
    1192
    +    ],
    
    1193
    +    "fr.ird.observe.entities.data.ps.observation.Catch": [
    
    1194
    +      {
    
    1195
    +        "gav": "ps_observation.catch",
    
    1196
    +        "selectedSql": "SELECT %s FROM ps_observation.catch WHERE catch.topiaId %s",
    
    1197
    +        "insertSql": "INSERT INTO ps_observation.catch(%s) VALUES (%%s);",
    
    1198
    +        "parentColumnName": "set",
    
    1199
    +        "columnNames": "topiaid,catchweight,catchweightcomputedsource,comment,homeid,informationsource,lastupdatedate,lengthmeasuremethod,meanlength,meanlengthcomputedsource,meanweight,meanweightcomputedsource,reasonfordiscard,set,set_idx,species,speciesfate,topiacreatedate,topiaversion,totalcount,totalcountcomputedsource,weightmeasuremethod,well",
    
    1200
    +        "entryPoint": true
    
    1201
    +      }
    
    1202
    +    ],
    
    1203
    +    "fr.ird.observe.entities.data.ps.observation.FloatingObject": [
    
    1204
    +      {
    
    1205
    +        "gav": "ps_observation.floatingObject",
    
    1206
    +        "selectedSql": "SELECT %s FROM ps_observation.floatingObject WHERE floatingObject.topiaId %s",
    
    1207
    +        "insertSql": "INSERT INTO ps_observation.floatingObject(%s) VALUES (%%s);",
    
    1208
    +        "parentColumnName": "activity",
    
    1209
    +        "columnNames": "topiaid,activity,comment,computedwhenarrivingbiodegradable,computedwhenarrivingnonentangling,computedwhenarrivingsimplifiedobjecttype,computedwhenleavingbiodegradable,computedwhenleavingnonentangling,computedwhenleavingsimplifiedobjecttype,homeid,lastupdatedate,objectoperation,supportvesselname,topiacreatedate,topiaversion",
    
    1210
    +        "entryPoint": true
    
    1211
    +      },
    
    1212
    +      {
    
    1213
    +        "gav": "ps_observation.floatingObjectPart",
    
    1214
    +        "selectedSql": "SELECT %s FROM ps_observation.floatingObjectPart floatingObjectPart WHERE floatingObjectPart.floatingObject %s",
    
    1215
    +        "insertSql": "INSERT INTO ps_observation.floatingObjectPart(%s) VALUES (%%s);",
    
    1216
    +        "parentColumnName": "floatingObject",
    
    1217
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,objectmaterial,topiacreatedate,topiaversion,whenarriving,whenleaving"
    
    1218
    +      },
    
    1219
    +      {
    
    1220
    +        "gav": "ps_observation.objectObservedSpecies",
    
    1221
    +        "selectedSql": "SELECT %s FROM ps_observation.objectObservedSpecies objectObservedSpecies WHERE objectObservedSpecies.floatingObject %s",
    
    1222
    +        "insertSql": "INSERT INTO ps_observation.objectObservedSpecies(%s) VALUES (%%s);",
    
    1223
    +        "parentColumnName": "floatingObject",
    
    1224
    +        "columnNames": "topiaid,count,floatingobject,homeid,lastupdatedate,species,speciesstatus,topiacreatedate,topiaversion"
    
    1225
    +      },
    
    1226
    +      {
    
    1227
    +        "gav": "ps_observation.objectSchoolEstimate",
    
    1228
    +        "selectedSql": "SELECT %s FROM ps_observation.objectSchoolEstimate objectSchoolEstimate WHERE objectSchoolEstimate.floatingObject %s",
    
    1229
    +        "insertSql": "INSERT INTO ps_observation.objectSchoolEstimate(%s) VALUES (%%s);",
    
    1230
    +        "parentColumnName": "floatingObject",
    
    1231
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,species,topiacreatedate,topiaversion,totalweight,weightmeasuremethod"
    
    1232
    +      },
    
    1233
    +      {
    
    1234
    +        "gav": "ps_observation.transmittingBuoy",
    
    1235
    +        "selectedSql": "SELECT %s FROM ps_observation.transmittingBuoy transmittingBuoy WHERE transmittingBuoy.floatingObject %s",
    
    1236
    +        "insertSql": "INSERT INTO ps_observation.transmittingBuoy(%s) VALUES (%%s);",
    
    1237
    +        "parentColumnName": "floatingObject",
    
    1238
    +        "columnNames": "topiaid,code,comment,country,floatingobject,homeid,lastupdatedate,latitude,longitude,topiacreatedate,topiaversion,transmittingbuoyoperation,transmittingbuoyownership,transmittingbuoytype,vessel"
    
    1239
    +      }
    
    1240
    +    ],
    
    1241
    +    "fr.ird.observe.entities.data.ps.observation.FloatingObjectPart": [
    
    1242
    +      {
    
    1243
    +        "gav": "ps_observation.floatingObjectPart",
    
    1244
    +        "selectedSql": "SELECT %s FROM ps_observation.floatingObjectPart WHERE floatingObjectPart.topiaId %s",
    
    1245
    +        "insertSql": "INSERT INTO ps_observation.floatingObjectPart(%s) VALUES (%%s);",
    
    1246
    +        "parentColumnName": "floatingObject",
    
    1247
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,objectmaterial,topiacreatedate,topiaversion,whenarriving,whenleaving",
    
    1248
    +        "entryPoint": true
    
    1249
    +      }
    
    1250
    +    ],
    
    1251
    +    "fr.ird.observe.entities.data.ps.observation.NonTargetCatchRelease": [
    
    1252
    +      {
    
    1253
    +        "gav": "ps_observation.nonTargetCatchRelease",
    
    1254
    +        "selectedSql": "SELECT %s FROM ps_observation.nonTargetCatchRelease WHERE nonTargetCatchRelease.topiaId %s",
    
    1255
    +        "insertSql": "INSERT INTO ps_observation.nonTargetCatchRelease(%s) VALUES (%%s);",
    
    1256
    +        "parentColumnName": "set",
    
    1257
    +        "columnNames": "topiaid,acquisitionmode,comment,conformity,count,homeid,lastupdatedate,length,lengthmeasuremethod,releasingtime,set,set_idx,sex,species,speciesgroupreleasemode,status,topiacreatedate,topiaversion",
    
    1258
    +        "entryPoint": true
    
    1259
    +      }
    
    1260
    +    ],
    
    1261
    +    "fr.ird.observe.entities.data.ps.observation.ObjectObservedSpecies": [
    
    1262
    +      {
    
    1263
    +        "gav": "ps_observation.objectObservedSpecies",
    
    1264
    +        "selectedSql": "SELECT %s FROM ps_observation.objectObservedSpecies WHERE objectObservedSpecies.topiaId %s",
    
    1265
    +        "insertSql": "INSERT INTO ps_observation.objectObservedSpecies(%s) VALUES (%%s);",
    
    1266
    +        "parentColumnName": "floatingObject",
    
    1267
    +        "columnNames": "topiaid,count,floatingobject,homeid,lastupdatedate,species,speciesstatus,topiacreatedate,topiaversion",
    
    1268
    +        "entryPoint": true
    
    1269
    +      }
    
    1270
    +    ],
    
    1271
    +    "fr.ird.observe.entities.data.ps.observation.ObjectSchoolEstimate": [
    
    1272
    +      {
    
    1273
    +        "gav": "ps_observation.objectSchoolEstimate",
    
    1274
    +        "selectedSql": "SELECT %s FROM ps_observation.objectSchoolEstimate WHERE objectSchoolEstimate.topiaId %s",
    
    1275
    +        "insertSql": "INSERT INTO ps_observation.objectSchoolEstimate(%s) VALUES (%%s);",
    
    1276
    +        "parentColumnName": "floatingObject",
    
    1277
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,species,topiacreatedate,topiaversion,totalweight,weightmeasuremethod",
    
    1278
    +        "entryPoint": true
    
    1279
    +      }
    
    1280
    +    ],
    
    1281
    +    "fr.ird.observe.entities.data.ps.observation.Route": [
    
    1282
    +      {
    
    1283
    +        "gav": "ps_observation.route",
    
    1284
    +        "selectedSql": "SELECT %s FROM ps_observation.route WHERE route.topiaId %s",
    
    1285
    +        "insertSql": "INSERT INTO ps_observation.route(%s) VALUES (%%s);",
    
    1286
    +        "parentColumnName": "trip",
    
    1287
    +        "columnNames": "topiaid,comment,date,endlogvalue,homeid,lastupdatedate,startlogvalue,topiacreatedate,topiaversion,trip",
    
    1288
    +        "entryPoint": true
    
    1289
    +      },
    
    1290
    +      {
    
    1291
    +        "gav": "ps_observation.set",
    
    1292
    +        "selectedSql": "SELECT %s FROM ps_observation.set set INNER JOIN ps_observation.activity activity ON activity.set = set.topiaId WHERE activity.route %s",
    
    1293
    +        "insertSql": "INSERT INTO ps_observation.set(%s) VALUES (%%s);",
    
    1294
    +        "columnNames": "topiaid,comment,currentdirection,currentmeasuredepth,currentspeed,endtimestamp,haulingendtimestamp,haulingstarttimestamp,homeid,lastupdatedate,maxgeardepth,reasonfornullset,schoolmeandepth,schoolthickness,schooltopdepth,schooltype,starttime,supportvesselname,topiacreatedate,topiaversion"
    
    1295
    +      },
    
    1296
    +      {
    
    1297
    +        "gav": "ps_observation.activity",
    
    1298
    +        "selectedSql": "SELECT %s FROM ps_observation.activity activity WHERE activity.route %s",
    
    1299
    +        "insertSql": "INSERT INTO ps_observation.activity(%s) VALUES (%%s);",
    
    1300
    +        "parentColumnName": "route",
    
    1301
    +        "columnNames": "topiaid,comment,currentfpazone,dataquality,detectionmode,ersid,homeid,lastupdatedate,latitude,longitude,nextfpazone,observedsystemdistance,previousfpazone,reasonfornofishing,route,seasurfacetemperature,set,surroundingactivity,time,topiacreatedate,topiaversion,vesselactivity,vesselspeed,wind",
    
    1302
    +        "columnsToReplace": "set"
    
    1303
    +      },
    
    1304
    +      {
    
    1305
    +        "gav": "ps_observation.catch",
    
    1306
    +        "selectedSql": "SELECT %s FROM ps_observation.catch catch INNER JOIN ps_observation.activity activity ON activity.set = catch.set WHERE activity.route %s",
    
    1307
    +        "insertSql": "INSERT INTO ps_observation.catch(%s) VALUES (%%s);",
    
    1308
    +        "parentColumnName": "set",
    
    1309
    +        "columnNames": "topiaid,catchweight,catchweightcomputedsource,comment,homeid,informationsource,lastupdatedate,lengthmeasuremethod,meanlength,meanlengthcomputedsource,meanweight,meanweightcomputedsource,reasonfordiscard,set,set_idx,species,speciesfate,topiacreatedate,topiaversion,totalcount,totalcountcomputedsource,weightmeasuremethod,well"
    
    1310
    +      },
    
    1311
    +      {
    
    1312
    +        "gav": "ps_observation.floatingObject",
    
    1313
    +        "selectedSql": "SELECT %s FROM ps_observation.floatingObject floatingObject INNER JOIN ps_observation.activity activity ON activity.topiaId = floatingObject.activity WHERE activity.route %s",
    
    1314
    +        "insertSql": "INSERT INTO ps_observation.floatingObject(%s) VALUES (%%s);",
    
    1315
    +        "parentColumnName": "activity",
    
    1316
    +        "columnNames": "topiaid,activity,comment,computedwhenarrivingbiodegradable,computedwhenarrivingnonentangling,computedwhenarrivingsimplifiedobjecttype,computedwhenleavingbiodegradable,computedwhenleavingnonentangling,computedwhenleavingsimplifiedobjecttype,homeid,lastupdatedate,objectoperation,supportvesselname,topiacreatedate,topiaversion"
    
    1317
    +      },
    
    1318
    +      {
    
    1319
    +        "gav": "ps_observation.floatingObjectPart",
    
    1320
    +        "selectedSql": "SELECT %s FROM ps_observation.floatingObjectPart floatingObjectPart INNER JOIN ps_observation.floatingObject floatingObject ON floatingObject.topiaId = floatingObjectPart.floatingObject  INNER JOIN ps_observation.activity activity ON activity.topiaId = floatingObject.activity WHERE activity.route %s",
    
    1321
    +        "insertSql": "INSERT INTO ps_observation.floatingObjectPart(%s) VALUES (%%s);",
    
    1322
    +        "parentColumnName": "floatingObject",
    
    1323
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,objectmaterial,topiacreatedate,topiaversion,whenarriving,whenleaving"
    
    1324
    +      },
    
    1325
    +      {
    
    1326
    +        "gav": "ps_observation.nonTargetCatchRelease",
    
    1327
    +        "selectedSql": "SELECT %s FROM ps_observation.nonTargetCatchRelease nonTargetCatchRelease INNER JOIN ps_observation.activity activity ON activity.set = nonTargetCatchRelease.set WHERE activity.route %s",
    
    1328
    +        "insertSql": "INSERT INTO ps_observation.nonTargetCatchRelease(%s) VALUES (%%s);",
    
    1329
    +        "parentColumnName": "set",
    
    1330
    +        "columnNames": "topiaid,acquisitionmode,comment,conformity,count,homeid,lastupdatedate,length,lengthmeasuremethod,releasingtime,set,set_idx,sex,species,speciesgroupreleasemode,status,topiacreatedate,topiaversion"
    
    1331
    +      },
    
    1332
    +      {
    
    1333
    +        "gav": "ps_observation.objectObservedSpecies",
    
    1334
    +        "selectedSql": "SELECT %s FROM ps_observation.objectObservedSpecies objectObservedSpecies INNER JOIN ps_observation.floatingObject floatingObject ON floatingObject.topiaId = objectObservedSpecies.floatingObject  INNER JOIN ps_observation.activity activity ON activity.topiaId = floatingObject.activity WHERE activity.route %s",
    
    1335
    +        "insertSql": "INSERT INTO ps_observation.objectObservedSpecies(%s) VALUES (%%s);",
    
    1336
    +        "parentColumnName": "floatingObject",
    
    1337
    +        "columnNames": "topiaid,count,floatingobject,homeid,lastupdatedate,species,speciesstatus,topiacreatedate,topiaversion"
    
    1338
    +      },
    
    1339
    +      {
    
    1340
    +        "gav": "ps_observation.objectSchoolEstimate",
    
    1341
    +        "selectedSql": "SELECT %s FROM ps_observation.objectSchoolEstimate objectSchoolEstimate INNER JOIN ps_observation.floatingObject floatingObject ON floatingObject.topiaId = objectSchoolEstimate.floatingObject  INNER JOIN ps_observation.activity activity ON activity.topiaId = floatingObject.activity WHERE activity.route %s",
    
    1342
    +        "insertSql": "INSERT INTO ps_observation.objectSchoolEstimate(%s) VALUES (%%s);",
    
    1343
    +        "parentColumnName": "floatingObject",
    
    1344
    +        "columnNames": "topiaid,floatingobject,homeid,lastupdatedate,species,topiacreatedate,topiaversion,totalweight,weightmeasuremethod"
    
    1345
    +      },
    
    1346
    +      {
    
    1347
    +        "gav": "ps_observation.schoolEstimate",
    
    1348
    +        "selectedSql": "SELECT %s FROM ps_observation.schoolEstimate schoolEstimate INNER JOIN ps_observation.activity activity ON activity.set = schoolEstimate.set WHERE activity.route %s",
    
    1349
    +        "insertSql": "INSERT INTO ps_observation.schoolEstimate(%s) VALUES (%%s);",
    
    1350
    +        "parentColumnName": "set",
    
    1351
    +        "columnNames": "topiaid,homeid,lastupdatedate,meanweight,set,species,topiacreatedate,topiaversion,totalweight,weightmeasuremethod"
    
    1352
    +      },
    
    1353
    +      {
    
    1354
    +        "gav": "ps_observation.transmittingBuoy",
    
    1355
    +        "selectedSql": "SELECT %s FROM ps_observation.transmittingBuoy transmittingBuoy INNER JOIN ps_observation.floatingObject floatingObject ON floatingObject.topiaId = transmittingBuoy.floatingObject  INNER JOIN ps_observation.activity activity ON activity.topiaId = floatingObject.activity WHERE activity.route %s",
    
    1356
    +        "insertSql": "INSERT INTO ps_observation.transmittingBuoy(%s) VALUES (%%s);",
    
    1357
    +        "parentColumnName": "floatingObject",
    
    1358
    +        "columnNames": "topiaid,code,comment,country,floatingobject,homeid,lastupdatedate,latitude,longitude,topiacreatedate,topiaversion,transmittingbuoyoperation,transmittingbuoyownership,transmittingbuoytype,vessel"
    
    1359
    +      },
    
    1360
    +      {
    
    1361
    +        "gav": "ps_observation.sample",
    
    1362
    +        "selectedSql": "SELECT %s FROM ps_observation.sample sample INNER JOIN ps_observation.activity activity ON activity.set = sample.set WHERE activity.route %s",
    
    1363
    +        "insertSql": "INSERT INTO ps_observation.sample(%s) VALUES (%%s);",
    
    1364
    +        "parentColumnName": "set",
    
    1365
    +        "columnNames": "topiaid,comment,homeid,lastupdatedate,set,topiacreatedate,topiaversion"
    
    1366
    +      },
    
    1367
    +      {
    
    1368
    +        "gav": "ps_observation.sampleMeasure",
    
    1369
    +        "selectedSql": "SELECT %s FROM ps_observation.sampleMeasure sampleMeasure INNER JOIN ps_observation.sample sample ON sample.topiaId = sampleMeasure.sample  INNER JOIN ps_observation.activity activity ON activity.set = sample.set WHERE activity.route %s",
    
    1370
    +        "insertSql": "INSERT INTO ps_observation.sampleMeasure(%s) VALUES (%%s);",
    
    1371
    +        "parentColumnName": "sample",
    
    1372
    +        "columnNames": "topiaid,acquisitionmode,count,homeid,islengthcomputed,isweightcomputed,lastupdatedate,length,lengthmeasuremethod,picturesreferences,sample,sample_idx,sex,sizemeasuretype,species,speciesfate,tagnumber,topiacreatedate,topiaversion,weight,weightmeasuremethod,weightmeasuretype"
    
    1373
    +      },
    
    1374
    +      {
    
    1375
    +        "gav": "ps_observation.activity_observedsystem",
    
    1376
    +        "selectedSql": "SELECT %s FROM ps_observation.activity_observedsystem INNER JOIN ps_observation.activity activity ON activity_observedsystem.activity = activity.topiaId WHERE activity.route %s",
    
    1377
    +        "insertSql": "INSERT INTO ps_observation.activity_observedsystem(%s) VALUES (%%s);",
    
    1378
    +        "parentColumnName": "activity",
    
    1379
    +        "columnNames": "activity,observedsystem",
    
    1380
    +        "columnsToReplace": "activity"
    
    1381
    +      }
    
    1382
    +    ],
    
    1383
    +    "fr.ird.observe.entities.data.ps.observation.Sample": [
    
    1384
    +      {
    
    1385
    +        "gav": "ps_observation.sample",
    
    1386
    +        "selectedSql": "SELECT %s FROM ps_observation.sample WHERE sample.topiaId %s",
    
    1387
    +        "insertSql": "INSERT INTO ps_observation.sample(%s) VALUES (%%s);",
    
    1388
    +        "parentColumnName": "set",
    
    1389
    +        "columnNames": "topiaid,comment,homeid,lastupdatedate,set,topiacreatedate,topiaversion",
    
    1390
    +        "entryPoint": true
    
    1391
    +      },
    
    1392
    +      {
    
    1393
    +        "gav": "ps_observation.sampleMeasure",
    
    1394
    +        "selectedSql": "SELECT %s FROM ps_observation.sampleMeasure sampleMeasure WHERE sampleMeasure.sample %s",
    
    1395
    +        "insertSql": "INSERT INTO ps_observation.sampleMeasure(%s) VALUES (%%s);",
    
    1396
    +        "parentColumnName": "sample",
    
    1397
    +        "columnNames": "topiaid,acquisitionmode,count,homeid,islengthcomputed,isweightcomputed,lastupdatedate,length,lengthmeasuremethod,picturesreferences,sample,sample_idx,sex,sizemeasuretype,species,speciesfate,tagnumber,topiacreatedate,topiaversion,weight,weightmeasuremethod,weightmeasuretype"
    
    1398
    +      }
    
    1399
    +    ],
    
    1400
    +    "fr.ird.observe.entities.data.ps.observation.SampleMeasure": [
    
    1401
    +      {
    
    1402
    +        "gav": "ps_observation.sampleMeasure",
    
    1403
    +        "selectedSql": "SELECT %s FROM ps_observation.sampleMeasure WHERE sampleMeasure.topiaId %s",
    
    1404
    +        "insertSql": "INSERT INTO ps_observation.sampleMeasure(%s) VALUES (%%s);",
    
    1405
    +        "parentColumnName": "sample",
    
    1406
    +        "columnNames": "topiaid,acquisitionmode,count,homeid,islengthcomputed,isweightcomputed,lastupdatedate,length,lengthmeasuremethod,picturesreferences,sample,sample_idx,sex,sizemeasuretype,species,speciesfate,tagnumber,topiacreatedate,topiaversion,weight,weightmeasuremethod,weightmeasuretype",
    
    1407
    +        "entryPoint": true
    
    1408
    +      }
    
    1409
    +    ],
    
    1410
    +    "fr.ird.observe.entities.data.ps.observation.SchoolEstimate": [
    
    1411
    +      {
    
    1412
    +        "gav": "ps_observation.schoolEstimate",
    
    1413
    +        "selectedSql": "SELECT %s FROM ps_observation.schoolEstimate WHERE schoolEstimate.topiaId %s",
    
    1414
    +        "insertSql": "INSERT INTO ps_observation.schoolEstimate(%s) VALUES (%%s);",
    
    1415
    +        "parentColumnName": "set",
    
    1416
    +        "columnNames": "topiaid,homeid,lastupdatedate,meanweight,set,species,topiacreatedate,topiaversion,totalweight,weightmeasuremethod",
    
    1417
    +        "entryPoint": true
    
    1418
    +      }
    
    1419
    +    ],
    
    1420
    +    "fr.ird.observe.entities.data.ps.observation.Set": [
    
    1421
    +      {
    
    1422
    +        "gav": "ps_observation.set",
    
    1423
    +        "selectedSql": "SELECT %s FROM ps_observation.set WHERE set.topiaId %s",
    
    1424
    +        "insertSql": "INSERT INTO ps_observation.set(%s) VALUES (%%s);",
    
    1425
    +        "updateReverseAssociationSql": "UPDATE ps_observation.activity activity SET activity.set = '%s' WHERE activity.topiaId = '%s'",
    
    1426
    +        "columnNames": "topiaid,comment,currentdirection,currentmeasuredepth,currentspeed,endtimestamp,haulingendtimestamp,haulingstarttimestamp,homeid,lastupdatedate,maxgeardepth,reasonfornullset,schoolmeandepth,schoolthickness,schooltopdepth,schooltype,starttime,supportvesselname,topiacreatedate,topiaversion",
    
    1427
    +        "entryPoint": true
    
    1428
    +      },
    
    1429
    +      {
    
    1430
    +        "gav": "ps_observation.catch",
    
    1431
    +        "selectedSql": "SELECT %s FROM ps_observation.catch catch WHERE catch.set %s",
    
    1432
    +        "insertSql": "INSERT INTO ps_observation.catch(%s) VALUES (%%s);",
    
    1433
    +        "parentColumnName": "set",
    
    1434
    +        "columnNames": "topiaid,catchweight,catchweightcomputedsource,comment,homeid,informationsource,lastupdatedate,lengthmeasuremethod,meanlength,meanlengthcomputedsource,meanweight,meanweightcomputedsource,reasonfordiscard,set,set_idx,species,speciesfate,topiacreatedate,topiaversion,totalcount,totalcountcomputedsource,weightmeasuremethod,well"
    
    1435
    +      },
    
    1436
    +      {
    
    1437
    +        "gav": "ps_observation.nonTargetCatchRelease",
    
    1438
    +        "selectedSql": "SELECT %s FROM ps_observation.nonTargetCatchRelease nonTargetCatchRelease WHERE nonTargetCatchRelease.set %s",
    
    1439
    +        "insertSql": "INSERT INTO ps_observation.nonTargetCatchRelease(%s) VALUES (%%s);",
    
    1440
    +        "parentColumnName": "set",
    
    1441
    +        "columnNames": "topiaid,acquisitionmode,comment,conformity,count,homeid,lastupdatedate,length,lengthmeasuremethod,releasingtime,set,set_idx,sex,species,speciesgroupreleasemode,status,topiacreatedate,topiaversion"
    
    1442
    +      },
    
    1443
    +      {
    
    1444
    +        "gav": "ps_observation.schoolEstimate",
    
    1445
    +        "selectedSql": "SELECT %s FROM ps_observation.schoolEstimate schoolEstimate WHERE schoolEstimate.set %s",
    
    1446
    +        "insertSql": "INSERT INTO ps_observation.schoolEstimate(%s) VALUES (%%s);",
    
    1447
    +        "parentColumnName": "set",
    
    1448
    +        "columnNames": "topiaid,homeid,lastupdatedate,meanweight,set,species,topiacreatedate,topiaversion,totalweight,weightmeasuremethod"
    
    1449
    +      },
    
    1450
    +      {
    
    1451
    +        "gav": "ps_observation.sample",
    
    1452
    +        "selectedSql": "SELECT %s FROM ps_observation.sample sample WHERE sample.set %s",
    
    1453
    +        "insertSql": "INSERT INTO ps_observation.sample(%s) VALUES (%%s);",
    
    1454
    +        "parentColumnName": "set",
    
    1455
    +        "columnNames": "topiaid,comment,homeid,lastupdatedate,set,topiacreatedate,topiaversion"
    
    1456
    +      },
    
    1457
    +      {
    
    1458
    +        "gav": "ps_observation.sampleMeasure",
    
    1459
    +        "selectedSql": "SELECT %s FROM ps_observation.sampleMeasure sampleMeasure INNER JOIN ps_observation.sample sample ON sample.topiaId = sampleMeasure.sample WHERE sample.set %s",
    
    1460
    +        "insertSql": "INSERT INTO ps_observation.sampleMeasure(%s) VALUES (%%s);",
    
    1461
    +        "parentColumnName": "sample",
    
    1462
    +        "columnNames": "topiaid,acquisitionmode,count,homeid,islengthcomputed,isweightcomputed,lastupdatedate,length,lengthmeasuremethod,picturesreferences,sample,sample_idx,sex,sizemeasuretype,species,speciesfate,tagnumber,topiacreatedate,topiaversion,weight,weightmeasuremethod,weightmeasuretype"
    
    1463
    +      }
    
    1464
    +    ],
    
    1465
    +    "fr.ird.observe.entities.data.ps.observation.TransmittingBuoy": [
    
    1466
    +      {
    
    1467
    +        "gav": "ps_observation.transmittingBuoy",
    
    1468
    +        "selectedSql": "SELECT %s FROM ps_observation.transmittingBuoy WHERE transmittingBuoy.topiaId %s",
    
    1469
    +        "insertSql": "INSERT INTO ps_observation.transmittingBuoy(%s) VALUES (%%s);",
    
    1470
    +        "parentColumnName": "floatingObject",
    
    1471
    +        "columnNames": "topiaid,code,comment,country,floatingobject,homeid,lastupdatedate,latitude,longitude,topiacreatedate,topiaversion,transmittingbuoyoperation,transmittingbuoyownership,transmittingbuoytype,vessel",
    
    1472
    +        "entryPoint": true
    
    1473
    +      }
    
    1474
    +    ]
    
    1475
    +  }
    
    1476
    +}
    \ No newline at end of file

  • core/persistence/java/src/test/java/fr/ird/observe/spi/script/UpdateLastUpdateDateFieldScriptTest.java
    ... ... @@ -23,12 +23,10 @@ package fr.ird.observe.spi.script;
    23 23
      */
    
    24 24
     
    
    25 25
     import fr.ird.observe.entities.ObserveTopiaEntitySqlModelResource;
    
    26
    -import fr.ird.observe.spi.script.ToolkitEntitySqlScriptModel;
    
    27
    -import fr.ird.observe.spi.script.UpdateLastUpdateDateFieldScript;
    
    28 26
     import org.junit.Assert;
    
    29 27
     import org.junit.Before;
    
    30 28
     import org.junit.Test;
    
    31
    -import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
    
    29
    +import org.nuiton.topia.service.sql.metadata.TopiaMetadataModel;
    
    32 30
     
    
    33 31
     import java.util.Date;
    
    34 32
     import java.util.List;
    

  • core/persistence/java/src/test/java/fr/ird/observe/spi/script/UpdateLastUpdateDateTableScriptTest.java
    ... ... @@ -23,12 +23,10 @@ package fr.ird.observe.spi.script;
    23 23
      */
    
    24 24
     
    
    25 25
     import fr.ird.observe.entities.ObserveTopiaEntitySqlModelResource;
    
    26
    -import fr.ird.observe.spi.script.ToolkitEntitySqlScriptModel;
    
    27
    -import fr.ird.observe.spi.script.UpdateLastUpdateDateTableScript;
    
    28 26
     import org.junit.Assert;
    
    29 27
     import org.junit.Before;
    
    30 28
     import org.junit.Test;
    
    31
    -import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
    
    29
    +import org.nuiton.topia.service.sql.metadata.TopiaMetadataModel;
    
    32 30
     
    
    33 31
     import java.util.Date;
    
    34 32
     import java.util.List;
    

  • core/persistence/test/src/main/java/fr/ird/observe/persistence/test/PersistenceTestSupportRead.java
    ... ... @@ -33,8 +33,8 @@ import fr.ird.observe.test.spi.DatabaseVersionConfiguration;
    33 33
     import org.apache.logging.log4j.LogManager;
    
    34 34
     import org.apache.logging.log4j.Logger;
    
    35 35
     import org.junit.ClassRule;
    
    36
    -import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity;
    
    37
    -import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
    
    36
    +import org.nuiton.topia.service.sql.metadata.TopiaMetadataEntity;
    
    37
    +import org.nuiton.topia.service.sql.metadata.TopiaMetadataModel;
    
    38 38
     import org.nuiton.topia.service.sql.model.TopiaEntitySqlModel;
    
    39 39
     
    
    40 40
     import java.util.List;
    

  • core/persistence/test/src/main/java/fr/ird/observe/persistence/test/PersistenceTestSupportWrite.java
    ... ... @@ -39,7 +39,7 @@ import org.junit.After;
    39 39
     import org.junit.Assert;
    
    40 40
     import org.junit.ClassRule;
    
    41 41
     import org.junit.Rule;
    
    42
    -import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity;
    
    42
    +import org.nuiton.topia.service.sql.metadata.TopiaMetadataEntity;
    
    43 43
     import org.nuiton.topia.service.sql.model.TopiaEntitySqlDescriptors;
    
    44 44
     import org.nuiton.topia.service.sql.model.TopiaEntitySqlModel;
    
    45 45
     import org.nuiton.topia.service.sql.plan.copy.TopiaEntitySqlCopyPlan;
    

  • core/persistence/test/src/test/java/fr/ird/observe/persistence/test/DefinitionContentTest.java
    ... ... @@ -29,7 +29,7 @@ import fr.ird.observe.spi.context.DtoEntityContext;
    29 29
     import org.junit.Assert;
    
    30 30
     import org.junit.Before;
    
    31 31
     import org.junit.Test;
    
    32
    -import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
    
    32
    +import org.nuiton.topia.service.sql.metadata.TopiaMetadataModel;
    
    33 33
     
    
    34 34
     /**
    
    35 35
      * Created on 22/11/2021.
    

  • core/persistence/test/src/test/java/fr/ird/observe/persistence/test/PersistenceModelWriteTest.java
    ... ... @@ -111,7 +111,7 @@ public class PersistenceModelWriteTest extends PersistenceTestSupportWrite {
    111 111
                 TopiaEntitySqlCopyPlan copyPlan = copyPlan(classifier, applicationContext);
    
    112 112
                 createRequest(classifier);
    
    113 113
                 if (!classifier.equals(CLASSIFIER_REFERENTIAL)) {
    
    114
    -                request.addReplicateTableRequest(applicationContext.getSqlService().getCopyPlanModel().getStandalonePlan(), null);
    
    114
    +                request.addCopyTableRequest(applicationContext.getSqlService().getCopyPlanModel().getStandalonePlan(), null);
    
    115 115
                     selectArgument = TopiaEntitySqlSelectArgument.of(tripId);
    
    116 116
                 }
    
    117 117
                 importScriptAndAssertCount(applicationContext, copyPlan, selectArgument, expectedCount);
    
    ... ... @@ -136,7 +136,7 @@ public class PersistenceModelWriteTest extends PersistenceTestSupportWrite {
    136 136
         }
    
    137 137
     
    
    138 138
         void importScriptAndAssertCount(ObserveTopiaApplicationContext applicationContext, TopiaEntitySqlCopyPlan copyPlan, TopiaEntitySqlSelectArgument selectArgument, Map<String, Long> expectedResults) throws Exception {
    
    139
    -        request.addReplicateTableRequest(copyPlan, selectArgument);
    
    139
    +        request.addCopyTableRequest(copyPlan, selectArgument);
    
    140 140
             TopiaSqlScript script = applicationContext.getSqlService().consume(request);
    
    141 141
             log.info(String.format("Generated script: %s", scriptFile));
    
    142 142
             File targetDatabaseDirectory = new File(localTestMethodResource.getTestDirectory(), "import-" + scriptFile.getName());
    

  • core/persistence/test/src/test/java/fr/ird/observe/persistence/test/SqlServiceTest.java
    ... ... @@ -41,9 +41,7 @@ import org.junit.runners.Parameterized;
    41 41
     import org.nuiton.topia.persistence.script.TopiaSqlScript;
    
    42 42
     import org.nuiton.topia.service.sql.request.DeleteRequest;
    
    43 43
     
    
    44
    -import java.io.ByteArrayOutputStream;
    
    45 44
     import java.io.IOException;
    
    46
    -import java.nio.charset.StandardCharsets;
    
    47 45
     import java.util.Comparator;
    
    48 46
     import java.util.stream.Collectors;
    
    49 47
     
    
    ... ... @@ -82,11 +80,7 @@ public class SqlServiceTest extends PersistenceTestSupportWrite {
    82 80
             DeleteRequest request = DeleteRequest.of(false, entityType.getName(), id);
    
    83 81
             TopiaSqlScript script = applicationContext.getSqlService().consume(request);
    
    84 82
             if (!ObservePersistenceFixtures.WITH_ASSERT) {
    
    85
    -            String content;
    
    86
    -            try (ByteArrayOutputStream target = new ByteArrayOutputStream()) {
    
    87
    -                script.copy(target);
    
    88
    -                content = target.toString(StandardCharsets.UTF_8);
    
    89
    -            }
    
    83
    +            String content = script.content();
    
    90 84
                 System.out.println(content);
    
    91 85
             }
    
    92 86
             applicationContext.executeSqlStatements(script);
    

  • core/persistence/test/src/test/java/fr/ird/observe/persistence/test/ValidationContentTest.java
    ... ... @@ -29,7 +29,7 @@ import fr.ird.observe.spi.context.DtoEntityContext;
    29 29
     import org.junit.Assert;
    
    30 30
     import org.junit.Before;
    
    31 31
     import org.junit.Test;
    
    32
    -import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
    
    32
    +import org.nuiton.topia.service.sql.metadata.TopiaMetadataModel;
    
    33 33
     
    
    34 34
     /**
    
    35 35
      * Created on 22/11/2021.
    

  • core/services/local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocalSupport.java
    ... ... @@ -38,6 +38,7 @@ import org.nuiton.topia.persistence.script.TopiaSqlScript;
    38 38
     import org.nuiton.topia.service.sql.request.CopyEntryPointRequest;
    
    39 39
     import org.nuiton.topia.service.sql.request.CreateDatabaseRequest;
    
    40 40
     import org.nuiton.topia.service.sql.request.DeleteRequest;
    
    41
    +import org.nuiton.topia.service.sql.request.ReplicateRequest;
    
    41 42
     
    
    42 43
     import java.io.File;
    
    43 44
     import java.util.Date;
    
    ... ... @@ -108,6 +109,11 @@ public class DataSourceServiceLocalSupport extends ObserveServiceLocal implement
    108 109
             return getTopiaApplicationContext().getSqlService().consume(request);
    
    109 110
         }
    
    110 111
     
    
    112
    +    @Override
    
    113
    +    public TopiaSqlScript produceMoveSqlScript(ReplicateRequest request) {
    
    114
    +        return getTopiaApplicationContext().getSqlService().consume(request);
    
    115
    +    }
    
    116
    +
    
    111 117
         @Override
    
    112 118
         public TopiaSqlScript produceCreateSqlScript(CreateDatabaseRequest request) {
    
    113 119
             if (request.isAddStandaloneTables()) {
    

  • core/services/local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java
    ... ... @@ -370,6 +370,7 @@ public abstract class ObserveServiceLocal implements ObserveService, ServiceCont
    370 370
         }
    
    371 371
     
    
    372 372
         protected final void log(long t0, String prefix, String methodName) {
    
    373
    +        //TODO Maybe for production, we should remove this ? Need to see memory impact
    
    373 374
             TIME_LOG.log(t0, String.format("%s %s.%s", prefix, getClass().getName(), methodName));
    
    374 375
         }
    
    375 376
     
    

  • core/services/local/src/main/java/fr/ird/observe/services/local/service/referential/SynchronizeServiceLocalSupport.java
    ... ... @@ -33,7 +33,6 @@ import fr.ird.observe.spi.context.ReferentialDtoEntityContext;
    33 33
     import fr.ird.observe.spi.module.ObserveBusinessProject;
    
    34 34
     import fr.ird.observe.spi.referential.synchro.OneSideSqlRequest;
    
    35 35
     import fr.ird.observe.spi.referential.synchro.OneSideSqlResult;
    
    36
    -import io.ultreia.java4all.util.TimeLog;
    
    37 36
     import org.nuiton.topia.persistence.script.TopiaSqlScript;
    
    38 37
     
    
    39 38
     import java.util.LinkedHashSet;
    
    ... ... @@ -70,20 +69,15 @@ public class SynchronizeServiceLocalSupport extends ObserveServiceLocal implemen
    70 69
     
    
    71 70
         @Override
    
    72 71
         public OneSideSqlResult produceSqlResult(OneSideSqlRequest request) {
    
    73
    -        long startTime = TimeLog.getTime();
    
    74
    -        OneSideSqlResult result = getTopiaApplicationContext()
    
    72
    +        return getTopiaApplicationContext()
    
    75 73
                     .newOneSideSqlResultBuilder(this, now())
    
    76 74
                     .build(request);
    
    77
    -        TIME_LOG.log(startTime, "produceSqlResult");
    
    78
    -        return result;
    
    79 75
         }
    
    80 76
     
    
    81 77
         @Override
    
    82 78
         public void applySql(TopiaSqlScript script, String lastUpdateDateKey) {
    
    83
    -        long startTime = TimeLog.getTime();
    
    84 79
             getTopiaPersistenceContext().executeSqlScript(script);
    
    85 80
             updateLastUpdateDates(lastUpdateDateKey);
    
    86
    -        TIME_LOG.log(startTime, "applySql");
    
    87 81
         }
    
    88 82
     
    
    89 83
         protected void updateLastUpdateDates(String lastUpdateDateKey) {
    

  • core/services/test/src/main/java/fr/ird/observe/services/service/DataSourceServiceFixtures.java
    ... ... @@ -26,17 +26,22 @@ package fr.ird.observe.services.service;
    26 26
     import fr.ird.observe.dto.referential.ps.common.ProgramDto;
    
    27 27
     import fr.ird.observe.services.ObserveServicesProvider;
    
    28 28
     import io.ultreia.java4all.util.Version;
    
    29
    +import org.apache.logging.log4j.LogManager;
    
    30
    +import org.apache.logging.log4j.Logger;
    
    29 31
     import org.junit.Assert;
    
    30 32
     import org.nuiton.topia.persistence.script.TopiaSqlScript;
    
    31 33
     import org.nuiton.topia.service.sql.request.CopyEntryPointRequest;
    
    32 34
     import org.nuiton.topia.service.sql.request.CreateDatabaseRequest;
    
    33 35
     import org.nuiton.topia.service.sql.request.DeleteRequest;
    
    36
    +import org.nuiton.topia.service.sql.request.ReplicateRequest;
    
    34 37
     
    
    35 38
     import java.util.Collections;
    
    36 39
     import java.util.Set;
    
    37 40
     
    
    38 41
     public class DataSourceServiceFixtures extends GeneratedDataSourceServiceFixtures {
    
    39 42
     
    
    43
    +    private static final Logger log = LogManager.getLogger(DataSourceServiceFixtures.class);
    
    44
    +
    
    40 45
         @Override
    
    41 46
         public void isIdValid(ObserveServicesProvider servicesProvider, DataSourceService service) {
    
    42 47
             boolean actual = service.isIdValid(ProgramDto.class, getProperty("isIdValid.id"));
    
    ... ... @@ -77,12 +82,11 @@ public class DataSourceServiceFixtures extends GeneratedDataSourceServiceFixture
    77 82
             Assert.assertTrue(actual.isEmpty());
    
    78 83
         }
    
    79 84
     
    
    80
    -
    
    81 85
         @Override
    
    82 86
         public void produceCreateSqlScript(ObserveServicesProvider servicesProvider, DataSourceService service) {
    
    83 87
             Version dbVersion = Version.VZERO;
    
    84
    -        CreateDatabaseRequest h2Request = CreateDatabaseRequest.of(false, dbVersion);
    
    85
    -        CreateDatabaseRequest pgRequest = CreateDatabaseRequest.of(true, dbVersion);
    
    88
    +        CreateDatabaseRequest.Builder h2Request = CreateDatabaseRequest.builder(false, dbVersion);
    
    89
    +        CreateDatabaseRequest.Builder pgRequest = CreateDatabaseRequest.builder(true, dbVersion);
    
    86 90
     
    
    87 91
             produceCreateSqlScript(service, h2Request);
    
    88 92
             produceCreateSqlScript(service, pgRequest);
    
    ... ... @@ -95,6 +99,13 @@ public class DataSourceServiceFixtures extends GeneratedDataSourceServiceFixture
    95 99
             produceAddSqlScript(service, true, dbVersion);
    
    96 100
         }
    
    97 101
     
    
    102
    +    @Override
    
    103
    +    public void produceMoveSqlScript(ObserveServicesProvider servicesProvider, DataSourceService service) {
    
    104
    +        Version dbVersion = Version.VZERO;
    
    105
    +        produceMoveSqlScript(service, false, dbVersion);
    
    106
    +        produceMoveSqlScript(service, true, dbVersion);
    
    107
    +    }
    
    108
    +
    
    98 109
         @Override
    
    99 110
         public void produceDeleteSqlScript(ObserveServicesProvider servicesProvider, DataSourceService service) {
    
    100 111
             String id = getProperty("produceDeleteSqlScript.id");
    
    ... ... @@ -102,7 +113,7 @@ public class DataSourceServiceFixtures extends GeneratedDataSourceServiceFixture
    102 113
             Assert.assertNotNull(actual);
    
    103 114
         }
    
    104 115
     
    
    105
    -    protected void produceCreateSqlScript(DataSourceService service, CreateDatabaseRequest request) {
    
    116
    +    protected void produceCreateSqlScript(DataSourceService service, CreateDatabaseRequest.Builder request) {
    
    106 117
             testRequest(service, request);
    
    107 118
             testRequest(service, request = request.addSchema());
    
    108 119
             testRequest(service, request = request.addStandaloneTables());
    
    ... ... @@ -118,14 +129,35 @@ public class DataSourceServiceFixtures extends GeneratedDataSourceServiceFixture
    118 129
             testRequest(service, CopyEntryPointRequest.of(pg, dbVersion, "fr.ird.observe.entities.data.ll.common.Trip", Collections.singleton(getLlCommonTripId())));
    
    119 130
         }
    
    120 131
     
    
    132
    +    protected void produceMoveSqlScript(DataSourceService service, boolean pg, Version dbVersion) {
    
    133
    +        String psObsRouteId = getVariable(getVariableName(fr.ird.observe.dto.data.ps.observation.RouteDto.class));
    
    134
    +        String psObsActivityId = getVariable(getVariableName(fr.ird.observe.dto.data.ps.observation.ActivityDto.class));
    
    135
    +        String psLogbookRouteId = getVariable(getVariableName(fr.ird.observe.dto.data.ps.logbook.RouteDto.class));
    
    136
    +        String psLogbookActivityId = getVariable(getVariableName(fr.ird.observe.dto.data.ps.logbook.ActivityDto.class));
    
    137
    +        String llObsActivityId = getVariable(getVariableName(fr.ird.observe.dto.data.ll.observation.ActivityDto.class));
    
    138
    +        String llLogbookActivityId = getVariable(getVariableName(fr.ird.observe.dto.data.ll.logbook.ActivityDto.class));
    
    139
    +        testRequest(service, ReplicateRequest.of(pg, dbVersion, getPsCommonTripId(), "fr.ird.observe.entities.data.ps.observation.Route", Set.of(psObsRouteId)));
    
    140
    +        testRequest(service, ReplicateRequest.of(pg, dbVersion, psObsRouteId, "fr.ird.observe.entities.data.ps.observation.Activity", Set.of(psObsActivityId)));
    
    141
    +        testRequest(service, ReplicateRequest.of(pg, dbVersion, getPsCommonTripId(), "fr.ird.observe.entities.data.ps.logbook.Route", Set.of(psLogbookRouteId)));
    
    142
    +        testRequest(service, ReplicateRequest.of(pg, dbVersion, psLogbookRouteId, "fr.ird.observe.entities.data.ps.logbook.Activity", Set.of(psLogbookActivityId)));
    
    143
    +        testRequest(service, ReplicateRequest.of(pg, dbVersion, getLlCommonTripId(), "fr.ird.observe.entities.data.ll.observation.Activity", Set.of(llObsActivityId)));
    
    144
    +        testRequest(service, ReplicateRequest.of(pg, dbVersion, getLlCommonTripId(), "fr.ird.observe.entities.data.ll.logbook.Activity", Set.of(llLogbookActivityId)));
    
    145
    +    }
    
    146
    +
    
    121 147
         protected void testRequest(DataSourceService service, CopyEntryPointRequest request) {
    
    122 148
             TopiaSqlScript actual = service.produceAddSqlScript(request);
    
    123 149
             Assert.assertNotNull(actual);
    
    124 150
         }
    
    125 151
     
    
    126
    -    protected void testRequest(DataSourceService service, CreateDatabaseRequest request) {
    
    127
    -        TopiaSqlScript actual = service.produceCreateSqlScript(request);
    
    152
    +    protected void testRequest(DataSourceService service, CreateDatabaseRequest.Builder request) {
    
    153
    +        TopiaSqlScript actual = service.produceCreateSqlScript(request.build());
    
    154
    +        Assert.assertNotNull(actual);
    
    155
    +    }
    
    156
    +
    
    157
    +    protected void testRequest(DataSourceService service, ReplicateRequest request) {
    
    158
    +        TopiaSqlScript actual = service.produceMoveSqlScript(request);
    
    128 159
             Assert.assertNotNull(actual);
    
    160
    +        log.warn(String.format("Move script for: %s\n:%s", request, actual.content()));
    
    129 161
         }
    
    130 162
     
    
    131 163
     }