classDiagram direction LR tr_sites_sit *-- tr_parcelles_par:site tr_type_de_sites_tds *-- tr_sites_sit:type_de_sites class tr_type_de_sites_tds:::pkClass { +String tds_nom PK } class tr_sites_sit:::fkClass { +String sit_nom_type_de_site PK +String sit_nom_du_site PK +tr_type_de_sites_tds type_de_sites FK } class tr_parcelles_par:::fkClass { +String par_nom_de_la_parcelle PK +String par_nom_du_site PK +tr_sites_sit site FK } style tr_type_de_sites_tds fill:#d7e4fa,stroke:#333,stroke-width:2px style tr_sites_sit fill:#f8d7fa,stroke:#333,stroke-width:2px style tr_parcelles_par fill:#f4fad7,stroke:#333,stroke-width:2px
Example d’utilisation d’une composante basique
Simple déclaration des colonnes du fichier
Description
Pour l’exemple nous prenons une hiérarchie de référentiels
nom |
---|
bassin_versant |
nom_type_de_site | nom.du.site |
---|---|
bassin_versant | site1 |
bassin_versant | site2 |
nom.du.site | nom.de.la.parcelle |
---|---|
bassin_versant__site1 | 1 |
bassin_versant__site2 | 1 |
Dans la colonne nom du site de tr_parcelles_par, on utilise la claf composite du site au lieu de son nom. C’est parceque l’on a ajouté un checker réference sur cette colonne et que tr_sites_sit à déclaré une clef composite sur le type de site et le nom.
Configuration
On déclare les colonnes du fichier dans des composantes de la section c.
Nous avons fais le choix de déclarer les Identificateurs avec une convention de nommage. De ce fait, les noms de colonnes ne correspondent pas. On doit donc rajouter une section OA_importHeader pour faire correspondre la composante avec la colonne du fichier.
OA_version: 2.0.1
OA_application:
OA_name: basic_case
OA_i18n: # optional
OA_title:
fr: Exemple de configuration basique
en: Basic configuration example
OA_description:
fr: Exemple de configuration basique
en: Basic configuration example
OA_version: 1.0.1
OA_defaultLanguage: fr # optional par défaut fr
OA_comment: Cas d'usage des composantes basiques
OA_data:
tr_type_de_sites_tds:
OA_dataHeaderLine: 1
OA_dataFirstLine: 2
OA_naturalKey:
- tds_nom
OA_basicComponents:
tds_nom:
OA_importHeader: nom
tr_sites_sit:
OA_dataHeaderLine: 1
OA_dataFirstLine: 2
OA_naturalKey:
- sit_nom_type_de_site
- sit_nom_du_site
OA_basicComponents:
sit_nom_type_de_site:
OA_importHeader: nom_type_de_site
OA_checker:
OA_name: OA_reference
OA_params:
OA_reference:
OA_isParent: true
OA_name: tr_type_de_sites_tds
sit_nom_du_site:
OA_importHeader: nom du site
tr_parcelles_par:
OA_dataHeaderLine: 1
OA_dataFirstLine: 2
OA_naturalKey:
- par_nom_du_site
- par_nom_de_la_parcelle
OA_basicComponents:
par_nom_de_la_parcelle:
OA_importHeader: nom de la parcelle
par_nom_du_site:
OA_importHeader: nom du site
OA_checker:
OA_name: OA_reference
OA_params:
OA_reference:
OA_isParent: true
OA_name: tr_sites_sit
Rendu
Stockage en base
Stockage des valeurs
select refvalues
from basic_case.referencevalue
where referencetype = 'tr_parcelles_par' and
= 'bassin_versant__site1__1'::ltree naturalkey
{
"par_nom_du_site": "bassin_versant__site1",
"__display_default": "bassin_versant__site1__1",
"par_nom_de_la_parcelle": "1"
}
Stockage des clefs étrangères
select refslinkedto
from basic_case.referencevalue
where referencetype = 'tr_parcelles_par' and
= 'bassin_versant__site1__1'::ltree naturalkey
{
"tr_sites_sit": {
"par_nom_du_site": {
"uuids": [
"7e8e0b0b-75a3-4bb2-907f-07dc1da368e8"
],
"hierarchicalkey": "tr_type_de_sites_tdsKbassin_versant.tr_sites_sitKbassin_versant__site1"
}
}
}
Pour aller plus loin
On peut voir que ce qui s’affiche pour les clef étrangères, c’est le code de la clef naturelle bassin_versant__site1.
On peut surcharger ce code en définissant dans tr_sites_sit une section OA_i18nDisplayPattern
tr_sites_sit:
...
OA_i18nDisplayPattern:
OA_title:
fr: "{sit_nom_du_site}"
en: "{sit_nom_du_site}"