Содержание |
Подготовка Создание пользовательского типа файла Иконка Распознавание файла Описание Предпочтительное приложение Дополнительные атрибуты Индексация Наполнение данными Запрос к базе данных |
Семинар на тему: типы файлов, атрибуты, индексация и запросы
Этот семинар покажет способы использования Атрибутов, Запросов, Индексации и пользовательских Типов файлов. В качестве примера мы создадим базу данных для отслеживания нашей библиотеки DVD-дисков.
Подготовка
Для начала решим, какой тип файла и атрибуты удовлетворили бы наши потребности. Первоначально я хотел использовать файл закладок со ссылкой на страницу фильма в базе IMdB, но на тот момент в Haiku не было браузера, работающего с закладочными файлами, как NetPositive в BeOS, и я решил сделать так: сам файл будет изображением обложки фильма в фомате JPEG.
Теперь в Haiku тоже есть браузер, использующий закладочные файлы - WebPositive, так что вы можете использовать файл закладок, а не изображение в качестве базового типа файлов для нашей базы данных.
В любом случае, мы добавим к файлу несколько атрибутов. Тут мы должны решить какими они будут (позже их необходимо проиндексировать): числовыми (целыми, дробными) или текстовыми.
Вот атрибуты, которые я хотел бы видеть для своих DVD-дисков:
- Название фильма
- Жанр
- Ссылка на него в IMdB
- Режисёр/В ролях
- Сюжет
- Мой рейтинг от 1 до 10
- Расположение у меня на полке, например: A2, B3, чтобы я смог найти DVD-диск и в реальной жизни :)
- Кто одолжил диск для просмотра
Создание пользовательского типа файла
Запустите Типы файлов (Filetypes) и кликните на кнопку в левом нижнем углу. Откроется небольшое окно, в котором определяется какая MIME группа соответствует новому тип файла. Вы также можете создать совершенно новую группу. Мы же поместим его в группу "приложения (applications)" и установим "Внутреннее имя (Internal Name)" как DVDdb.
Теперь откроется панель для вновь созданного типа файла DVDdb:
Иконка
Двойной клик по стандартной иконке откроет приложение Icon-O-Matic для создания иконки нового типа файла. Вы также можете перетащить иконку из файла другого типа, которая может использоваться для примера и модифицирования.
Распознавание файла
Вы можете добавить суффиксы такие как .txt, .jpg, .mp3, чтобы распознать файлы по их расширениям. Это полезно при работе с файлами не имеющими MIME типа, но для нашего примера это не актуально.
Описание
- Название типа (Type Name) - Отображается, например, в меню атрибутов окон Tracker и в атрибуте "Kind" любого файла.
- Описание (Description) - Немного более подробное описание.
Предпочтительное приложение
В этом выпадающем меню отображается список всех приложений, которые могут открывать данный тип файла. Здесь вы можете выбрать, какой программой должен открываться этот конкретный файл при двойном клике по нему.
открывает диалоговое файловое окно, где вы выбираете приложение для открытия этого типа файла. Здесь мы устанавливаем ShowImage для показа обложки DVD-диска. | ||
открывает диалоговое файловое окно, где вы выбираете любой файл, который уже имеет предпочтительный набор приложений, подходящий и под наш новый тип файла. |
Дополнительные атрибуты
Здесь вводятся все атрибуты, которые мы выбрали при подготовке. Клик по кнопке
откроет панель, где вводятся данные для нового атрибута. Существующий атрибут можно редактировать, дважды кликнув по нему.Название атрибута (Attribute Name) - Отображается, например, как заголовок колонки в окнах Tracker.
Внутреннее Название (Internal Name) - используется для индексации и запроса атрибута.
- 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.
Теперь вставим всю информацию для наших атрибутов:
Внутреннее Название | Тип атрибута | Индексируемый? | Описание |
---|---|---|---|
DVDdb:title | текстовый | да | Название фильма |
DVDdb:genre | текстовый | да | Жанр |
DVDdb:url | текстовый | нет | Ссылка |
DVDdb:cast | текстовый | да | Режисёр/В ролях |
DVDdb:plot | текстовый | нет | Сюжет |
DVDdb:rating | целочисленный | да | Рейтинг от 1 до 10 |
DVDdb:coord | текстовый | нет | Расположение |
DVDdb:lent | текстовый | да | Кому одолжен |
Индексация
Прежде чем начать ввод данных в нашу базу данных DVD-дисков, мы должны добавить определенные атрибуты к Индексации. Только проиндексированные атрибуты могут использоваться быстрыми Запросами в Haiku.
Итак, как мы будем осуществлять поиск в дальнейшем? Мы, вероятно, не будем запрашивать: "Что находится на моей полке B4"? или "Хочу ссылку на IMdB или содержание фильма, в котором встречается выражение 'Патриарх Шенуда'"?.
Поэтому оставляем следующие атрибуты:
Внутреннее Название | Тип атрибута |
---|---|
DVDdb:title | текстовый |
DVDdb:genre | текстовый |
DVDdb:cast | текстовый |
DVDdb:rating | целочисленный |
Для их индексации мы открываем Terminal и просто добавляем один атрибут за другим:
mkindex -t string DVDdb:title mkindex -t string DVDdb:genre mkindex -t string DVDdb:cast mkindex -t int DVDdb:rating
Ключ -t определяет тип атрибута как строчный (string) для всех, кроме рейтинга, который является целым числом.
Наполнение данными
Теперь, когда всё настроено, мы можем начать вводить данные в нашу базу. Так как наш основной файл представляет собой изображение обложки, то мы заходим на какой-нибудь онлайн-ресурс типа IMdB и ищем нужный фильм, для которого сохраняем изображение обложки или постер в новой папке, где мы будем хранить наши DVDdb файлы.
Открыв эту папку, мы увидим обычное окно Tracker с одним JPEG файлом в нём. Кликнув по нему правой кнопкой мыши, изменяем его тип файла на application/DVDdb при помощи Дополнения Тип файла (Filetype Add-on). Более подробно об этом описано в документе Типы файлов.
Далее мы активируем все наши DVDdb атрибуты из меню
окна Tracker и упорядочим колонки на наш вкус:Кликнув по любому пустому атрибуту (или нажав клавиши ALT+E), мы активируем режим редактирования и заполняем каждый из них. Нажимая TAB или SHIFT+TAB, вы можете перемещаться между атрибутами.
В нашем примере мы начинаем с загрузки обложки в JPEG формате, и изменяем его тип на applications/DVDdb. Но существует и другой, более удобный способ подготовки файла для дальнейшей обработки. Просто скопируйте пустой файл с уже прописанным типом в /boot/home/config/settings/Tracker/Tracker New Templates и переименуйте его в DVDdb.
Кликнув правой кнопкой мыши в окне Tracker, вы обнаружите новый пункт в подменю
, помимо заданной по умолчанию Новой папки (New folder).Запрос к базе данных
Спустя несколько часов нелёгкой работы, мы получаем довольно неплохую базу данных, и вы теперь можете сделать запрос для нахождения всех фильмов c Кристиной Риччи (Christina Ricci), имеющих рейтинг 7 и выше. :)
Вы можете назначить удобный макет атрибутов для результатов поиска определенного типа файлов.
Откройте папку, содержащую DVDdb файлы, и упорядочите атрибуты, так как вы хотели бы видеть представленные результаты запроса. Скопируйте эту схему размещения колонок через меню .
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".
Далее откройте новую папку и вставьте схему размещения через меню
. Теперь всё готово, пользуемся: