J’ai commencé l’application SakilApp par la vue permettant l’accès au catalogue de films. Cet article illustre comment les tables de la base de données se retrouvent dans l’application.
MySQL fournit un fichier sakila.mwb qui permet grâce à MySQL Workbench, de visualiser la base de données. Pour le moment les tables de movie database sont couvertes (il manque les tables `inventory`
et `film_text`
, et il n’est pas possible de modifier la table `language`
)
Cette partie de la base représente trois entités : les films, les catégories et les acteurs. Les films sont les plus importants et les plus nombreux. Ils une relation N:M avec les catégories (via la table `film_category`
) et avec les acteurs (via la table `film_actor`
). D’ou l’idée de proposer un accès aux films de différentes manière : soit directement à l’aide d’une recherche, soit en commençant par sélectionner une catégorie ou un acteur.
Dans la fenêtre principale (proposée en standard par Eclipse Scout) on trouve :
- Sur la gauche se trouve une arborescence de dossiers permettant plusieurs type d’accès (directe, par catégorie, par acteur).
- Le contenu des dossiers au centre (films, catégories ou acteurs). Lorsque le contenu est important une recherche doit être effectuée.
- En bas, un formulaire pour effectuer ces recherches.
Techniquement, cette fenêtre principale utilise les concepts de d’Eclipse Scout. Cette vue est définie dans un Outline (CatalogOutline
). L’arborescence de dossiers est constituée de pages (on trouve une TablePage par entités : FilmsTablePage
, CategoriesTablePage
, ActorsTablePage
). Les données sont chargées via un OutlineService (CatalogOutlineService
)
Pour chaque dossier des fonctions d’ajout, d’édition et de suppression du contenu sont proposées à travers des menus. L’édition et l’ajout des différentes entités est réalisée à travers différents formulaires qui sont ouvert dans des fenêtres modales. La base de données impose que certaines valeurs ne reste pas nulle (propriété NOT NULL
). Dans Eclipse Scout, les champs correspondant apparaissent en gras et le formulaire ne peut être être fermé tant que les champs sont vides.
Techniquement les menus (Classe filles de AbstractMenu) sont défini dans les différentes tables concernées. Pour chaque entités un Form est défini (FilmForm
, CategoryForm
, ActorForm
).
La base de donnée (surtout sa structure) définie précisément les caractéristiques de certains champs. On trouve certains type particuliers (texte, nombre, date). On trouve aussi des choix limités: définit par les sets (par exemple `film`.`special_features`
) ou par les enums (par exemple `film`.`rating`
). Et aussi des références vers d’autres table (comme la langue du film qui référence la table `language`
). Eclipse Scout propose différents type de champs pour permettre une saisie simple et efficace (DateField, SmartField…). Les options pour les champs `rating`
et `special_features`
sont défini dans des CodeType (RatingCodeType
, SpecialFeatureCodeType
). Pour le choix de la langue, la table language est disponible à travers un LookupCall et un LookupService (LanguageLookupCall
and LanguageLookupService
).
La suite au prochain épisode…
Disclaimer :
Je travaille pour BSI Business System Integration AG, la société créatrice du framework Eclipse Scout. Les propos tenus ici n’engagent que moi. Cet article a été écrit en dehors de mon temps de travail et n’a pas été relu par mon employeur.