Atelier : Types de fichiers, Attributs, Index et Requêtes
Cet atelier est consacré à l’utilisation des attributs, requêtes, de l’indexation et des types de fichiers personnalisés. Pour illustrer leur utilisation, nous allons construire une base de données pour cataloguer notre collection de DVD.
Préparations
Décidons d’abord du type de fichiers et des attributs dont nous allons nous servir. Au départ, je voulais utiliser pour chaque film un fichier lien vers sa description sur le site web IMdB, mais Haiku ne dispose pas encore de navigateur supportant ces liens, contrairement à BeOS qui avait NetPositive, donc j’ai choisi de conserver des fichiers d’image JPEG de la boîte du DVD.
Nous allons également ajouter quelques attributs. Nous devons décider ici de ceux qui serviront à faire des requêtes (et que nous devrons ajouter à l’index) et si besoin est, quel type d’attribut utiliser. Les nombres (entiers ou flottants) sont en effet comparés différemment du texte (</=/> au lieu de est/contient/commence par).
Voici donc les attributs que je voudrais utliser pour mes DVD :
- Titre du film
- Genre
- URL vers par exemple IMdB
- Réalisateur/Acteurs
- Intrigue
- Ma note de 1 à 10
- Emplacement dans l’étagère (A2, ou B3 par exemple) afin de pouvoir trouver le DVD dans la Vraie Vie :)
- Si quelqu’un a emprunté le disque, et qui…
Créer un type de fichier personnalisé
Démarrez le panneau de préférences Filetypes et cliquez sur le bouton (Ajouter) sous la liste hiérarchique de gauche. Une boîte de dialogue s’ouvre dans laquelle vous pouvez spécifier dans quel groupe MIME votre type de fichier va résider. Plaçons-le dans « applications » et réglons son nom (« Internal Name ») à DVDdb.
Ensuite, un panneau de réglages pour votre nouveau type DVDdb s’affiche :
Icône (Icon)
Double-cliquer sur la boîte d’icône pour ouvrir Icon-O-Matic et ainsi pouvoir dessiner un icône pour votre type de fichier. Vous pouvez aussi glisser-déposer un icône d’un autre type, afin de l’utiliser comme base pour votre version modifiée.
Identification d'un fichier (File Recognition)
Vous pouvez définir des suffixes comme .txt, .jpg, .mp3 pour que les fichiers ayant cette extensions soient reconnus. Ceci est utile pour les systèmes de fichiers ne reconnaissant pas les types MIME. Nous n’avons pas besoin de cela pour notre exemple.
Description
- Type Name (Nom de type) - Est notamment affiché dans le menu Attribute des fenêtres du Tracker et dans l’attribut "Kind" des fichiers.
- Description - Une description plus détaillée.
Application préférée (Preferred Application)
Ce menu déroulant affiche une liste des application qui peuvent gérer ce type de fichier particulier. Vous pouvez y choisir quel programme ouvrira ce fichier spécifique lorsqu’il est double-cliqué.
ouvre une boîte de dialogue où vous pouvez choisir avec quelle application ouvrir ce type de fichier. Ici, nous choisissons ShowImage pour afficher la couverture du DVD. | ||
ouvre une boîte de dialogue où vous pouvez choisir n’importe quel fichier qui s’ouvre avec l’application que vous avez choisie. |
Attributs supplémentaires (Extra Attributes)
Here we enter all the custom attributes we decided on in our preparations. Clicking the
button opens a panel to enter all the data for the new attribute. You can edit an existing attribute with a double-click.Attribute Name (Nom d’attribut) - Apparaît notamment dans l’en-tête des fenêtres du Tracker.
Internal Name (Nom interne) - Utilisé pour l’indexation et les requêtes sur l’attribut.
- Type - Defines the value the attribute can hold and therefore how it can be queried.
- for normal text
- for binary data: 0 (false) or >=1 (true)
- : -128 to 127
- : -32,768 to 32,767
- : -2,147,483,648 to 2,147,483,647
- : -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
for integer numbers with different ranges:
- for floating-point numbers, single precision
- for floating-point numbers, double precision
- for time and date format
- Visible - This checkbox determines if the attribute is visible in a Tracker window at all. Since the Tracker will be the interface to our DVD database, we check it and define its appearance with:
- - Can be used to show either one of two symbols, see below.
- - Shows an integer as 1/60, e.g. "90" becomes "1:30".
- - Shows a rating between 0 and 10 as star symbols.
- Leave on "Default" if the values are to be displayed according to the attribute's "Type" (e.g. string/integer/float etc.). The other options are:
- - Determines if the attribute shall be editable in Tracker.
- - Defines the two symbols used for a checkbox display. For example, "xo" will show a "x" for all values >0 and "o" for 0.
- - The default width of that attributes column in a Tracker window.
- - The attribute can be displayed left, center, or right aligned.
Maintenant, insérez toutes les infos pour les attributs :
Nom interne | Type d'attribut | indexé ? | Description |
---|---|---|---|
DVDdb:title | text | yes | Titre du film |
DVDdb:genre | text | yes | Genre |
DVDdb:url | text | no | URL |
DVDdb:cast | text | yes | Réalisateur/Acteurs |
DVDdb:plot | text | no | Intrigue |
DVDdb:rating | int-32 | yes | Note de 1 à 10 |
DVDdb:coord | text | no | Étagère |
DVDdb:lent | text | yes | Prêté à |
Indexation
Avant de commencer à entrer des données dans notre petite base de données, nous devrions ajouter certains attributs à l’Index. Seuls les attributs indexés peuvent être utilisés par les requêtes de Haiku.
Donc, qu’allons nous chercher dans le futur ? Nous n’allons probablement pas nous demander « Qu’il y a-t-il dans le coin B4 de mon étagère ? » ou « Est-ce que l’URL de ImDB contient le mot “pope-shenooda” ? ».
Cela laisse les attributs suivants :
Nom interne | Type d'attribut |
---|---|
DVDdb:title | text |
DVDdb:genre | text |
DVDdb:cast | text |
DVDdb:rating | int-32 |
Pour les indexer, ouvrons un terminal et ajouter chaque attribut :
mkindex -t string DVDdb:title mkindex -t string DVDdb:genre mkindex -t string DVDdb:cast mkindex -t int DVDdb:rating
L’option -t définit le type de l’attribut, qui est “string” (chaîne de caractères) pour tout sauf le classement, qui est un entier.
Remplir les données
Maintenant que tout est configuré nous pouvons commencer à entrer quelques données dans notre base.
Comme notre type de base est une image de couverture, nous allons récupérer celle de notre premier film sur un site web comme IMdB, et l’enregistrer dans un nouveau dossier où nous conserverons tous nos fichiers DVDdb.
Une fois ce dossier ouvert, nous voyons fenêtre Tracker typique avec un fichier JPEG à l’intérieur. En effectuant un clic droit, nous réglons son type de fichier à application/DVDdb avec l’extension Filetype. Pour plus d’informations, consultez la page Types de fichiers.
Maintenant, nous pouvons activer tous nos attributs DVDdb via le menu
de la fenêtre du Tracker et les réorganiser à notre goût :En cliquant sur un attribut vide (ou par la combinaison de touches CMD E) nous passons en mode édition et renseignons chaque attribut. Vous pouvez naviguer entre les attributs avec TAB et MAJ TAB.
Dans notre exemple, nous partons généralement d’une image JPEG téléchargée et changeons son type vers applications/DVDdb. Il existe une autre manière de créer un tel fichier. Copiez un fichier vide utilisant notre type de fichiers dans /boot/home/config/settings/Tracker/Tracker New Templates et renommez le vers DVDdb.
Par la suite, en effectuant un clic droit dans une fenêtre du Tracker, vous trouverez une nouvelle entrée dans le sous-menu
en plus de l’entrée par défaut “New Folder” (Nouveau dossier).Interrogation de la base de données
Plusieurs heures de travail ingrat plus tard, nous obtenons un base de donner que vous pouvez interroger pour obtenir par exemple tous les films avec Christina Ricci notés 7 ou plus… :)
Vous pouvez choisir l'affichage des attributs de la fenêtre de résultats de vos requêtes de recherche.
Ouvrezs le dossier contenant vos fichiers DVDdb et arrangez les attributs comme vous le souhaitez. Copier cette disposition avec .
Open /boot/home/config/settings/Tracker/DefaultQueryTemplates, create a new folder and rename it to group/filetype, replacing slashes with underscores; in our case "application_DVDdb".
Ouvrez le nouveau dossier et collez la disposition avec
. Et voilà: