.. - .. * #%L .. * Tutti :: Persistence Adagio (impl) .. * $Id: mapping.rst 621 2013-03-14 16:04:51Z blavenier $ .. * $HeadURL: http://svn.forge.codelutin.com/svn/tutti/trunk/src/site/rst/mapping.rst $ .. * %% .. * Copyright (C) 2012 - 2013 Ifremer .. * %% .. * This program is free software: you can redistribute it and/or modify .. * it under the terms of the GNU General Public License as .. * published by the Free Software Foundation, either version 3 of the .. * License, or (at your option) any later version. .. * .. * This program is distributed in the hope that it will be useful, .. * but WITHOUT ANY WARRANTY; without even the implied warranty of .. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .. * GNU General Public License for more details. .. * .. * You should have received a copy of the GNU General Public .. * License along with this program. If not, see .. * . .. * #L% .. - ============================================= Tutti - Correspondance écrans/base de données ============================================= Présentation ~~~~~~~~~~~~ Ce document décrit comment sont stocker les informations visibles dans les écrans. Série de campagne ~~~~~~~~~~~~~~~~~ Nom Program.name (PROGRAM.NAME) Zone Program.locations (PROGRAM2LOCATION.LOCATION_FK) Commentaire Program.description (PROGRAM.DESCRIPTION) Campagne ~~~~~~~~ Série ScientificCruise.program (SCIENTIFIC_CRUISE.PROGRAM_FK) Série partielle ScientificCruise.fishingTrip.surveyMeasurement (SURVEY_MEASUREMENT.ALPHA_NUMERICAL_VALUE, avec PMFM_FK=) Name ScientificCruise.name (SCIENTIFIC_CRUISE.NAME) Nombre de poches En lecture : récupération de la plus grande valeur dans ScientificCruise.fishingTrip.gearPhysicalFeatures.gearPhysicalMeasurement.numericalvalue (GEAR_PHYSICAL_MEASURMENT.NUMERICAL_VALUE avec PMFM_FK=) En écriture : valeur dupliquée pour chaque engin (voir "Engin(s)" ci-dessous) dans ScientificCruise.fishingTrip.gearPhysicalFeatures.gearPhysicalMeasurement.numericalvalue (GEAR_PHYSICAL_MEASURMENT.NUMERICAL_VALUE avec PMFM_FK=) Port de départ ScientificCruise.departureLocation (FISHING_TRIP.DEPARTURE_LOCATION_FK avec le lien avec la campagne via SCIENTIFIC_CRUISE_FK) Port de retour ScientificCruise.returnLocation (FISHING_TRIP.RETURN_LOCATION_FK avec le lien avec la campagne via SCIENTIFIC_CRUISE_FK) Date de début ScientificCruise.departureDateTime (SCIENTIFIC_CRUISE.DEPARTURE_DATE_TIME) Date de fin ScientificCruise.returnDateTime (SCIENTIFIC_CRUISE.RETURN_DATE_TIME) Navire(s) Le navire est stocké dans ScientificCruise.vessel (SCIENTIFIC_CRUISE.VESSEL_FK). Les navires suivants sont stockés dans ScientificCruise.fishingTrip.comments Engin(s) ScientificCruise.fishingTrip.gearPhysicalFeatures.gear (GEAR_PHYSICAL_FEATURES.GEAR_FK avec RANK_ORDER=) Chef(s) de mission La première personne de la liste est stockée sous ScientificCruise.manager (SCIENTIFIC_CRUISE.MANAGER_PERSON_FK) En v1, les identifiant des personnes suivantes sont stockées dans ScientificCruise.fishingTrip.comments derrière la balise : "#MANAGERS=" En v2, ce stockage devra se faire dans ScientificCruise.fishingTrip.vesselPersonFeatures avec un VesselPersonRole.id= **WARNING** : modèle UML + synchronisation Allegro à mettre à jour pour pouvoir importer/exporter VesselPersonFeatures et les tables liées Responsable(s) de salle de tri En v1, tous les identifiants des personnes sélectionnées sont stockées dans ScientificCruise.fishingTrip.comments derrière la balise : "#SORT_MANAGERS=" En v2, ce stockage devra se faire dans ScientificCruise.fishingTrip.vesselPersonFeatures avec un VesselPersonRole.id= **WARNING** : modèle UML + synchronisation Allegro à mettre à jour pour pouvoir importer/exporter VesselPersonFeatures et les tables liées Commentaire ScientificCruise.comments (SCIENTIFIC_CRUISE.COMMENTS) Trait ~~~~~ Code Station Operation.vesselUseFeatures.vesselUseMeasurement (VESSEL_USE_MEASUREMENT.ALPHANUMERICAL_VALUE avec PMFM_FK=) Numéro de trait Operation.name (OPERATION.NAME) : ajouté à la fin du "name", derrière le code de l'engin, pour rester compatible avec le format des données historiques. Numéro de poche Liste des poches observées Operation.gearUseFeatures.gearUseMeasurement (GEAR_USE_MEASUREMENT.ALPHANUMERICAL_VALUE avec PMFM_FK=) Strate Operation.gearUseFeatures.fishingArea.regulationLocation (FISHING_AREA2REG_LOCATION.LOCATION_FK associé au FISHING_AREA de l'opération) En lecture : sélection en tant que locatlité à partir du locationLevel (LOCATION.LOCATION_LEVEL_FK=) Sous-strate Operation.gearUseFeatures.fishingArea.regulationLocation (FISHING_AREA2REG_LOCATION.LOCATION_FK associé au FISHING_AREA de l'opération) En lecture : sélection en tant que locatlité à partir du locationLevel (LOCATION.LOCATION_LEVEL_FK=) Localité operation.gearUseFeatures.fishingArea.regulationLocation (FISHING_AREA2REG_LOCATION.LOCATION_FK associé au FISHING_AREA de l'opération) En lecture : sélection en tant que locatlité à partir du locationLevel (LOCATION.LOCATION_LEVEL_FK=) Début de traine > Latitude, Longitude Operation.vesselPosition (VESSEL_POSITION.LATITUDE et VESSEL_POSITION.LONGITUDE), avec startDateTime = "Début de traine > Date et heure" Début de traine > Date et heure Operation.startDateTime et Operation.fishingStartDateTime (OPERATION.START_DATE_TIME et OPERATION.FISHING_START_DATE_TIME) Fin de traine > Latitude, Longitude Operation.vesselPosition (VESSEL_POSITION.LATITUDE et VESSEL_POSITION.LONGITUDE), avec startDateTime = "Fin de traine > Date et heure" Fin de traine > Date et heure Operation.endDateTime et Operation.fishingEndDateTime (OPERATION.END_DATE_TIME et OPERATION.FISHING_END_DATE_TIME) Trait rectiligne Operation.vesselUseFeatures.vesselUseMeasurement (VESSEL_USE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=) Distance chalutée Operation.vesselUseFeatures.vesselUseMeasurement (VESSEL_USE_MEASUREMENT.NUMERICAL_VALUE avec PMFM_FK=) Trait valide ou invalide Operation.vesselUseFeatures.vesselUseMeasurement (VESSEL_USE_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=) Saisisseur(s) En v1, les identifiant des personnes suivantes sont stockées dans ScientificCruise.fishingTrip.comments derrière la balise : #MANAGERS= En v2, ce stockage devra se faire dans ScientificCruise.fishingTrip.vesselPersonFeatures avec un VesselPersonRole.id= **WARNING** : modèle UML + synchronisation Allegro à mettre à jour pour pouvoir importer/exporter VesselPersonFeatures et les tables liées Navire Le navire est forcément celui de la campagne est stocké dans Operation.vessel (OPERATION.VESSEL_FK) Engin Operation.gearPhysicialFeatures (OPERATION.GEAR_PHYSCIAL_FEATURES_FK) : lien vers un engin déjà déclaré au niveau de la campagne. Le code de l'engin est également dupliqué au début de Operation.name (OPERATION.NAME), devant le numéro du trait, pour rester compatible avec le format des données historiques. Commentaire Operation.comments (OPERATION.COMMENTS) Trait > Mise en oeuvre de l'engin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Valeur Operation.gearUseFeatures.gearUseMeasurement (GEAR_USE_MEASUREMENT.xxx - en fonction du type de PSFM : NUMERICAL_VALUE, ALPHANUMERICAL_VALUE ou QUALITATIVE_VALUE_FK) Trait > Hydrologie et paramètres environnementaux ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Valeur Operation.gearUseFeatures.vesselUseMeasurement (GEAR_USE_MEASUREMENT.xxx - en fonction du type de PSFM : NUMERICAL_VALUE, ALPHANUMERICAL_VALUE ou QUALITATIVE_VALUE_FK) **WARNING** : En v2 (version à confirmer), informations dispatcher dans différent onglet, en fonction du PSFM trouvé dans le protocole Capture > Résumé ~~~~~~~~~~~~~~~~ Poids TOTAL Lot "Capture" (BATCH avec IS_CATCH_BATCH=1) Stocké uniquement si non calculé CatchBatch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Poids total VRAC Lot "Capture > Vrac" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Poids total HORS VRAC Lot "Capture > Hors Vrac" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Poids total NON TRIE Lot "Capture > Non trié" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Espèce > Poids TOTAL Sommme des poids des lots "Capture > xxx > Espèce" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Espèce > Poids total VRAC Lot "Capture > Vrac > Espèce" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Espèce > Poids total VRAC trié Calculé par tutti ? utile seulement si Thalassa ? Espèce > Poids total HORS VRAC TRIE Lot "Capture > Hors Vrac > Espèce" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Benthos > Poids TOTAL Sommme des poids des lots "Capture > xxx > Benthos" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Benthos > Poids total VRAC Lot "Capture > Vrac > Benthos" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Benthos > Poids total VRAC trié Calculé par tutti ? utile seulement si Thalassa ? Benthos > Poids total HORS VRAC TRIE Lot "Capture > Hors Vrac > Benthos" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Capture > Espèces ~~~~~~~~~~~~~~~~~ Espèce > Poids total VRAC Lot "Capture > Vrac > Espèce" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Poids inerte trié Lot "Capture > Vrac > Espèce > [TAXON_INERT]" Batch.referenceTaxon = [TAXON_INERT] (BATCH.REFERENCE_TAXON_FK=) Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) **WARNING** : le taxon référent "Inerte" n'existe pas encore, il faut le créé (action Ifremer/J.Martin ?) Poids vivant non détaillé trié Lot "Capture > Vrac > Espèce > Biota" Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Tableau Chaque ligne du tableau est stockée sous la forme d'un lot (Batch) positionné soit sous le lot "Capture > Vrac > Espèce" soit sous "Capture > Hors Vrac > Espèce" Tableau > Espèce stockage de l'espèce uniquement pour les lot parent Batch.referenceTaxon (BATCH.REFERENCE_TAXON_FK) Tableau > V/HV Vrac ou Hors Vrac : Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=) Poids : Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1 et PMFM_FK=) Tableau > Class. Tri Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=) Tableau > Sexe Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=) Tableau > Maturité Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=) Tableau > Age Batch.sortingMeasurement.qualitativeValue (SORTING_MEASUREMENT.QUALITATIVE_VALUE_FK avec PMFM_FK=) Tableau > Poids sous-échantillonné Si vide Batch.samplingRatio = 1 Sinon : Batch.samplingRatioText (BATCH.SAMPLING_RATIO_TEXT) concaténé à partir des chaines : "" + "/" + "" Batch.samplingRatio (BATCH.SAMPLING_RATIO) calculé par le division : / Pour la lecture : on parse samplingRatioText pour récupérer le poids sous-échantillonné. si absent on le calculé à partir de samplingRatio (moins précis car perte possible de précision) Tableau > Nombre Calculé à partir de la somme du nombre d'individus des lots fils (BATCH.INDIVIDUAL_COUNT avec PARENT_BATCH_FK=) (voir ci-dessous "Mensuration > Tableau") Tableau > Commentaire Batch.comments Tableau > Pièces Jointes Chaque pièce jointes est stockée dans MeasurementFile (MEASUREMENT_FILE avec PMFM_FK=null, OBJECT_TYPE_FK='BATCH' et OBJECT_ID=) MeasurementFile.path : chemin du fichier (copier dans un répertoire, puis stocké en relatif ?) MeasurementFile.name : nom MeasurementFile.comments : commentaire **WARNING** : modification de modèle à faire pour pouvoir avoir MEASUREMENT_FILE.PMFM_FK=null Mensuration > Type de mesure Dupliqué pour chaque lot de mensuration créé (un lot pour chaque taille saisie) Batch.sortingMeasurement.pmfm (SORTING_MEASUREMENT.PMFM_FK) Mensuration > Pas de la classe de taille PMFM.PRECISION (pour le PMFM choisi, si valeur NULL, alors on initialise à 1) Mensuration > Tableau Chaque ligne du tableau de mensuration est stocké sous la forme d'un lot relié au lot correspondant à la ligne parent du tableau des espèces. (BATCH avec PARENT_BATCH_FK=) Mensuration > Tableau > Classe de taille Batch.sortingMeasurement.numericalValue (SORTING_MEASUREMENT.NUMERICAL_VALUE avec PMFM_FK=) Mensuration > Tableau > Nombre Batch.individualCount (BATCH.INDIVIDUAL_COUNT) Mensuration > Tableau > Poids observé Batch.quantificationMeasurement.numericalValue (QUANTIFICATION_MEASUREMENT.NUMERICAL_VALUE avec IS_REFERENT=1)