Зміст
Підготовка
Створення та вибір типу файлів
Іконка
Розпізнавання файлів
Опис
Бажані програми
Супер атрибути
Індексування
Наповнення даними
Запит до бази даних

Семінар: Типи файлів (Filetypes), атрибути (Attributes), індекси (Index) та запити (Queries)

Цей семінар показує як використовувати Атрибути (Attributes), Запити (Queries), Індекс (Index) та встановлені Типи файлів (Filetypes). Для прикладу створимо базу даних для зберігання нашої DVD бібліотеки.

index Підготовка

Спочатку визначимо які типи файлів та атрибути Ви потребуватимите при обслуговування. Спочатку я планував використовувати файл закладок з посиланням на IMDB сторінку фільму, але Haiku не мала "закладабельного" браузера, такого як у BeOS NetPositive свого часу. Я прийшов до такого, нехай файлом для обкладинки фільму буде файл зображення JPEG.
З появою WebPositive, Haiku знову має браузер який працює з закладками, так що ви могли б також використовувати файл закладок замість зображення в якості основного типу файлу для наших файлів бази даних.
У будь-якому випадку, до цих файлів ми додамо кілька атрибутів. Тут ми повинні вирішити, якщо бажаємо, запросити його пізніше (після того як додали його в індекс), то який тип атрибута повинен бути. Числа (INT, Float) можна оцінити інакше, ніж текст (</=/> проти є/містить/почати з).

Ось атрибути, які я хотів би мати для своїх DVD-дисків:

index Створення вибраного типу файлу

Запустіть налаштування Типи файлів (Filetypes) натискуванням кнопки Додати... (Add...) нижче ієрархічного списку зліва. У маленькому діалоговому вікні що відкриється виберіть до якої групи MIME належатиме вибраний вами тип файлу. Покладіть його в "програму (application)" та встановіть "Внутрішнє ім'я" як DVDdb.

filetypes-new-file-type.png

Выдкриється панель вашого нового типу файлів DVDdb (DVD Database):

filetypes-dvddb.png

index Іконка (Icon)

Двічі клікніть по цьому віконцю для активації графічного редактора Icon-O-Matic у спробі створити картинку для вашого типу файлів. Ви можете перетягнути у вікно редактора якусь готову іконку призначену для іншого типу щоб зробити модифіковану версію з неї під власні потреби.

index Розпізнавання файлу (File recognition)

Ви можете додати суфікси, як .txt, .jpg, .mp3, щоб розпізнати файли по їх розширенню. Це корисно при роботі з файлами у системах що не використовують MIME типи. Для нашого випадку це не підходить.

index Опис (Description)

index Бажана програма (Preferred application)

Контекстне меню де показані всі програми здатні обробляти цей конкретний тип файлів. Тут можна вибрати програму що відкриватиме визначений файл двокліком.

Вибрати (Select...) відкриває діалогове вікно файлу де можна вибрати програму для відкриття цього типу файлів. Тут ми встановили Переглядач зображень (ShowImage) для показу обкладинки DVD.
Такий як... (Same as...) Відкриється діалогове вікно файлу, де ви вибираєте кожен файл, який вже має кращий набір бажаних програм, що ви шукаєте.

index Додаткові атрибути (Extra attributes)

Тут ми вводимо всі вибрані атрибути, які визначили при підготовці. Натисканні кнопки Додати..(Add...) відкриває панель для введення всіх даних для нового атрибута. Ви можете змінити присутній атрибут простим двокліком мишки.

filetype-extra-attribute.png

Тепер введіть усі дані для ваших атрибутів:

Внутрішнє ім'я (Internal Name)Тип атрибуту (Attribute type)індексований(indexed?)Опис (Description)
DVDdb:title текст так Назва фільму
DVDdb:genre текст так Жанр
DVDdb:url текст ні URL адреса
DVDdb:cast текст так Режисер/Актори
DVDdb:plot текст ні Сюжет
DVDdb:rating int-32 так Оцінка від 1 до 10
DVDdb:coord текст ні Поличка (де знаходиться)
DVDdb:lent текст так позичені

index Індексування (Indexing)

До початку введення даних до вашої невеличкої бази даних DVD, ви повинні додати атрибути для Індексу (Index). Тільки індексовані атрибути можна використовувати для прискорення Запитів (Queries)Haiku.
Отже, що ми шукатимемо в майбутньому? Ми, ймовірно, не будемо питати "Що у нас лежить в комірці B4 на моїй полиці?" або "Чи маємо ми URL IMdB або чи сюжет фільму містить слово 'pope-shenooda'?".

Залишіть ці атрибути:

Внутрішнє ім'я (Internal Name)Тип атрибуту (Attribute type)
DVDdb:titleтекст
DVDdb:genreтекст
DVDdb:castтекст
DVDdb:ratingint-32

Для їх індексування відкрийте Термінал (Terminal) і просто один за другим введіть:

mkindex -t string DVDdb:title
mkindex -t string DVDdb:genre
mkindex -t string DVDdb:cast
mkindex -t int DVDdb:rating

Опція -t визначає тип атрибуту, який для всіх є "стрічкою" крім оцінки яка має значення ціле число.

index Наповнення даними

Тепер коли все налаштовано ми можемо почати вносити дані до нашої бази.
Позаяк базовий наш файл зображення обкладинки ми мусимо перейти на онлайн ресурс, наприклад, IMdB. Подивіться на перший фільм та збережіть його обкладинку або постер до нової теки де ми бажаємо зберігати нашу DVDdb.

Відкривши цю теку ми бачимо звичайне вікно Tracker з одним файлом JPEG в ньому. Клацнемо правою кнопкою мишки та поміняємо його тип файлу на application/DVDdb за допомогою додатку Типи файлів (Filetype). Більше інформації про це у документі Типи файлів (Filetypes).

Тепер ми активуємо всі наші DVDdb атрибути з меню вікна Tracker'а Атрибути (Attributes) та переставимо стовпці за своїм смаком:

filetypes-dvddb-empty.png

Клікнувши по поки що порожньому атрибуту (або натиснувши ALT E) ми увійдемо у режим редагування та зможемо заповнити кожен атрибут. Натискання TAB та SHIFT TAB дозволяє мандрувати поміж атрибутами.

У нашому прикладі ми почали з закачки JPG обкладинки та зміни її типу файлу до applications/DVDdb. Існує ще один елегантний спосіб створення файлу для такої роботи. Просто скопіюйте порожній файл вашого типу файлів до /boot/home/config/settings/Tracker/Tracker New Templates та переіменуйте його у DVDdb.

Клікнувши правою кнопкою мишки у вікні Tracker'а, ви знайдете запис Новий... (New...) типово це "Нова тека (New folder)".

index Опитування бази даних

Кілька годин марудної роботи і ви матимете прекрасну маленьку базу даних по запиту у якій можна знайти усі фільми Брюса Вілліса з оцінкою 7+... ;-)

Ви можете призначити розумний макет атрибутів для результатів запиту конкретного типу файлу.
Відкрийте папку, що містить файли DVDdb і організуйте атрибути так, як ви б хотіли, щоб результати запиту були представлені. Зкопіюйте цей макет з Атрибути | Копіювати макет (Attributes | Copy layout).

Відкрийте /boot/home/config/settings/Tracker/DefaultQueryTemplates, створіть нову теку та переіменуйте її у group/filetype, замінивши косу риску нижнім дефісом, у нашому випадку "applications_DVDdb".

Відкрийте нову теку і вставте туди макет з Атрибути | Вставити макет (Attributes | Paste layout). Вуаля:

query-dvddb.png