Index |
Vorbereitungen Erstellung des Dateityps Icon Dateierkennung Beschreibung Bevorzugte Anwendung Zusätzliche Attribute Indexing Daten eingeben Suchanfragen |
Workshop: Dateitypen, Attribute, Index und Queries
In diesem Workshop wird gezeigt, wie sinnvoll Attribute, Queries, der Index und eigene Dateitypen sein können. Als Beispiel werden wir eine DVD-Datenbank erstellen.
Vorbereitungen
Zuerst sollten wir uns Gedanken machen, welche Dateitypen und Attribute benötigt werden. Ursprünglich war geplant, Bookmark-Dateien mit einem Link zum Eintrag des Films in der IMDb zu verwenden. Da Haiku damals aber noch keinen Browser hatte, der mit solchen Bookmark-Dateien hätte umgehen können (im Gegensatz zu NetPositive unter BeOS), verwenden wir ein JPEG-Bild für das DVD-Cover.
Mit WebPositive hat Haiku nun allerdings wieder einen Browser, der Bookmark-Dateien benutzt. Jetzt ließe sich also auch ein Lesezeichen anstatt eines Bilds als Basis-Dateityp für unsere Datenbankdateien verwenden.
Auf alle Fälle hängen wir an diese Dateien eine Reihe von Attribute. Hier müssen wir uns entscheiden, welche Art von Attribute wir verwenden - Zahlen oder Text - und welche davon in einer Suchabfrage gefunden werden sollen.
Sinnvoll sind zum Beispiel diese Attribute:
- Film-Titel
- Genre
- URL zur IMDb
- Regisseur / Schauspieler
- Handlung
- Wertung (von 1 bis 10)
- Koordinaten im DVD-Regal, sodass die DVD auch tatsächlich gefunden werden kann.
- Wenn nötig, wer die DVD ausgeliehen hat.
Erstellung eines eigenen Dateityps
In Dateitypen klicken wir auf unterhalb der hierarchischen Liste der Dateitypen. In dem Sich öffnenden Dialogfenster legen wir fest, zu welcher MIME-Gruppe der neue Dateityp gehört oder ob es sich um eine gänzlich neue Gruppe handelt. Unser Dateityp soll die interne Bezeichnung ("Interner Name") DVDdb bekommen und unter "applications" abgelegt werden.
Jetzt öffnet sich ein neues Fenster für den neu angelegten Dateityp DVDdb:
Icon
Ein Doppelklick auf das Icon öffnet Icon-O-Matic um darin ein neues Icon zu erstellen. Natürlich kann auch ein bereits bestehendes Icon in das Feld gezogen werden.
Dateierkennung
Unter "Dateierkennung" können Dateiendungen eingegeben werden, die typisch für diesen Dateityp sind. Da wir in unserem Beispiel dies nicht benötigen, wird es außer Acht gelassen.
Beschreibung
- Typname - Erscheint unter anderem im Attribut-Menü eines Tracker-Fensters.
- Beschreibung - eine etwas ausführlichere Beschreibung
Bevorzugte Anwendung
Dieses Auswahlmenü zeigt alle Anwendungen, die diesen Dateityp verwenden können. Hier kann ausgewählt werden, welches Programm gestartet wird, wenn eine Datei diesen Typs doppelt angeklickt wird.
öffnet ein Dialogfenster zur Auswahl der Anwendung; in unserem Beispiel wählen wir ShowImage um das DVD-Cover anzuzeigen. | ||
öffnet ein Dialogfenster, in dem man eine Datei auswählen kann, die bereits die bevorzugte Anwendung verwendet, die auch hier verwendet werden soll. |
Zusätzliche Attribute
Unter "Extra Attribute" geben wir alle zusätzlichen Attribute ein, die wir oben festgelegt haben. Ein Klick auf
öffnet ein Fenster, in dem alle Daten für das neue Attribut eingetragen werden. Vorhandene Attribute lassen sich per Doppelklick bearbeiten.Attributname - Erscheint als Spaltenkopf im Tracker-Fenster
Interner Name - Wird für die Indizierung und Suche verwendet.
- Typ - Beschreibt die Art des Attributs und entsprechend wie es gesucht werden kann.
- - normaler Text
- - für binäre Werte: 0 (falsch) oder >=1 (wahr)
- : -128 bis 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
- für ganzzahlige Werte diesen Umfangs:
- - Gleitkommazahlen einfacher Genauigkeit
- - Gleitkommazahlen doppelter Genauigkeit
- - Zeit- und Datumswerte
- Sichtbar - Nur wenn diese Option markiert ist, kann das Attribut im Tracker gesehen / angezeigt werden; da unsere DVD-Datenbank angezeigt werden soll, setzten wir das Kreuz mit diesen Einstellungen:
- - Wird benutzt um ein von zwei Symbolen anzuzeigen, siehe weiter unten.
- - Zeigt eine Zahl als 1/60, z.B. "90" wird zu "1:30".
- Zeigt eine Bewertung zwischen 0 und 10 als Sternsymbole.
- auf "Standard" belassen wenn die Werte nach ihrem "Typ" (z.B. Zeichenkette, Integer, Gleitkomma etc.) angezeigt werden sollen. Die restlichen Optionen sind:
- - hiermit kann das Attribut direkt im Tracker ergänzt werden.
- - Definiert die beiden Symbole, die für die Checkbox benutzt werden. So zeigt "xo" ein "x" für alle Werte >0 und "o" für 0.
- - die Breite der Spalte des Attributs im Tracker-Fenster.
- - die Ausrichtung des Attribut-Wertes in der Spalte im Tracker: linksbündig, zentriert oder rechtsbündig.
Jetzt müssen diese Werte für die Attribute eingegeben werden:
Interner Name | Attributtyp | indiziert? | Beschreibung |
---|---|---|---|
DVDdb:title | Zeichenkette | Ja | Film-Titel |
DVDdb:genre | Zeichenkette | Ja | Genre |
DVDdb:url | Zeichenkette | Nein | URL |
DVDdb:cast | Zeichenkette | Ja | Regisseur / Schauspieler |
DVDdb:plot | Zeichenkette | Nein | Handlung |
DVDdb:rating | Integer 32-bit | Ja | Wertung von 1 bis 10 |
DVDdb:coord | Zeichenkette | Nein | DVD-Regal |
DVDdb:lent | Zeichenkette | Ja | Ausgeliehen an |
Indizierung
Bevor wir unsere DVD-Datenbank mit Daten befüllen, müssen wir noch einige Attribute in den Index aufnehmen. Nur so stehen sie für die Suche in Haiku, den Queries zur Verfügung.
Um mit Scott Hacker, dem Autor der BeOS-Bible zu sprechen: "Es können so viele Attribute wie nur gewünscht in den Index aufgenommen werden, Doch man sollte es nicht übertreiben." Eine sinnvolle Auswahl sollte also getroffen werden.
Wir nehmen diese Attribute in den Index auf:
Interner Name | Attributtyp |
---|---|
DVDdb:title | Zeichenkette |
DVDdb:genre | Zeichenkette |
DVDdb:cast | Zeichenkette |
DVDdb:rating | Integer 32-bit |
Um dies zu erreichen, müssen wir im Terminal die folgenden Befehle der Reihe nach eingeben:
mkindex -t string DVDdb:title mkindex -t string DVDdb:genre mkindex -t string DVDdb:cast mkindex -t int DVDdb:rating
Mit der Option -t wird die Art des Attributs festgelegt. Bis auf die Wertung (Zahl) sind alle "Text".
Daten eingeben
Nachdem nun alles vorbereitet ist, können wir damit beginnen, die Datenbank zu befüllen.
Da jeder Eintrag eine Bilddatei mit dem DVD-Cover sein soll, speichern wir zu jedem Film, den wir in die Datenbank (einem Ordner) aufnehmen eine dazugehörige JPEG-Datei.
Wenn wir den Ordner öffnen, sehen wird ein ganz normales Tracker-Fenster mit einer Bild-Datei darin. Mit einem Rechtsklick auf diese Datei und der Auswahl Add-ons | FileType setzen wir nun den Dateityp dieses Bildes auf application/DVDdb. Näheres zu den Dateitypen hier: Dateitypen
Jetzt aktivieren wir alle DVDdb-Attribute aus dem Menü
und sortieren sie nach unseren Vorlieben:Mit einem Klick auf ein leeres Attribut (oder ALT E) können wir die entsprechenden Werte eingeben. Mittels TAB und SHIFT TAB können wir von Attribut zu Attribut springen.
Um einen neuen Eintrag anzulegen kopieren wir entweder ein neues Bild in das Verzeichnis, oder wir verwenden den Menüpunkt "Datei | Neu..." indem wir eine leere Datei mit dem Dateityp "applications/DVDdb" und dem Dateinamen "DVDdb" im Ordner /boot/home/config/settings/Tracker/Tracker New Templates anlegen.
Jetzt befindet sich bei eine Rechtsklick im Tracker-Fenster unter
ein neuer Eintrag neben dem standardmäßigen "Neuer Ordner".Suchanfragen
Nach mehreren Stunden stupidem Befüllen der Attribute haben wir nun eine kleine Datenbank, in der wir nach Herzenslust suchen können. Zum Beispiel nach allen Filmen mit Christina Ricci, die wir mit "7" oder besser bewertet haben.
Für die Suchergebnisse kann man ebenfalls eine sinnvolles Layout der Attribute festlegen.
Nachdem die Spalten im DVDdb-Ordner so eingestellt wurden, wie sie für das Suchergebnis sinnvoll sind, kopiert man diese mittels .
Darauf hin ist in /boot/home/config/settings/Tracker/DefaultQueryTemplates ein neuer Ordner anzulegen, der nach group/filetype benannt wird, wobei der Schrägstrich durch einen Unterstrich zu ersetzten ist; in unserem Fall also "application_DVDdb".
Öffne den neuen Ordner und kopiere das Attibute-Layout mit
. Voilà: