Internals - Annotation de classe @link
-
Documentation développeur “internals”
Ces documentations aideront les développeurs au niveau framework à repérer à quels endroits sont programmés les différents mécanismes impliquant les classes de liens en utilisant l’Annotation de classe @link.
Cette documentation date du 15 mai 2014, et est incomplète. Depuis d’autres cas particuliers impliquant les classes de liens ont pu être rencontrés et donner lieu à l’implémentation de solutions à d’autres niveaux.
Reflection : Link_Class
Un objet de réflexion de classe dédié aux classes liées.
Cet objet est utilisé par les composants du Framework ou des applications pour accéder plus simplement aux données concernant la classe liée.SQL : Joins
addProperties()
Lors de l’ajout d’une propriété d’une classe liée, appelleaddLinkedClass()
addLinkedClass()
Crée la jointure avec la table correspondant à la classe liée, et ses parentes qui seraient également des classes liées.
TODO fonctionnement à détaillerMapper : Getter
getMap()
Les objets liés sont lus sont leur classe métier (ce qui semble bizarre car on n’aurait pas les propriétés de la classe de lien, à vérifier donc s’il ne s’agirait pas de code mort).Tools : Names
classToUri()
On ne récupère jamais l’URI d’une classe liée, mais on remonte à celle de sa classe métier.Dao : Mysql\Link
delete()
Lors de la suppression d’un objet de classe liée, on ne propage pas la suppression aux objets liés par des propriétés de la classe métier. Seules les propriétés de la classe liée répercutent la suppression des objets lorsqu’ils sont des Collection ou de liens implicites lorsqu’ils sont des Map.read()
La lecture d’un enregistrement de table correspondant à une classe liée passe par leSql_Select_Builder
, sans mode simplifié, la construction de jointures avec les tables correspondant aux classes métier étant nécessaire.write()
Lors de l’écriture d’un objet de classe liée, on écrit les objets des classes liées puis l’objet de classe métier.Dao : Mysql\Table_Builder_Class
buildInternal()
Dans le cas d’une classe liée, il faut construire unMysql_Table
pour chacune des tables correspondantes :- une table de liaison pour la classe liée elle même,
- une table pour chaque classe métier dont hérite la classe liée.
buildLinkTable()
Appelée parbuildInternal()
pour obtenir la liste des tables des classes métier dont hérite la classe liée.Widget / Edit : Html_Builder_Collection
getProperties()
La liste des propriétés récupérées automatiquement pour l’affichage de chaque élément d’une collection ne comporte pas les propriétés des classes métier dont hérite la classe liée. Seules les propriétés du lien, donc vers les deux classes métiers reliées par la classe liée plus les propriétés de données elle-mêmes, sont conservées.
Par exempleImports : Import_Array
createArrayReference()
Lors de l’import de données, on doit récupérer la référence de la bonne table, puisse qu’un objet lié est représenté par au moins deux tables (table de liens et tables correspondant aux objets métiers hérités).
TODO fonctionnement à détailler