По поводу реализации.
организация (формат) библиотекиКаждой книге соответствует отдельная директория. Одна книга - одна директория. Под книгой понимается - данный том данного издания. Т.е. второе и третье издания одной и той же книги это "разные книги".
Если одна книга имеет несколько электронных представлений, то все эти представления лежат в этой директории книги.
Если какое-то электронное представление состоит из одного файла, то этот файл размещается прямо в директории книги. Если представление состоит из нескольких файлов, то эти файлы дополнительно заключаются в общую директорию.
Например:
adult_stem_cells_turksen\
adult_stem_cells_turksen\adult_stem_cells.pdf
adult_stem_cells_turksen\adult_stem_cells.djvu
adult_stem_cells_turksen\adult.doc
adult_stem_cells_turksen\adult_cells\
adult_stem_cells_turksen\adult_cells\chapter01.htm
adult_stem_cells_turksen\adult_cells\chapter02.htm
adult_stem_cells_turksen\adult_cells\chapter03.htm
adult_stem_cells_turksen\adult_cells\chapter04.htm
adult_stem_cells_turksen\adult_cells\index.htm
Книжные директории имеют человекопонятные названия на английском или транслите. Название -- состоит из англ. букв в нижнем регистре, цифр и знака подчеркивания, все остальные символы удаляются (если установлена спец. опция в настройках -- вместо транслита используются русские буквы). Название книжной директории не может начинаться со знака подчеркивания.
используется для именования файлов и директорий, формируется автоматически из:
названия книги - "biology"
фамилии первого редактора или автора без инициалов - "_ivanov"
номера издания - "_ed2" (опускается для первого издания)
номера тома - "_v3" (опускается для однотомных изданий)
кириллические названия преобразуются в транслит;
чтобы ограничить общую длину (78 знаков), длина каждого элемента ограничена:
название книги - "xxxxxx_xxxxxx_xxxxxx_xxxxxxxxx_xxxxxxxxx_xxxxxx" - 47 знаков
автор - "_Xxxxxxxxxxxxxxxx" - 17 знаков
номер издания - "_ed0000" - 7 знаков
номер тома - "_v00000" - 7 знаков
--- файлы описания книги ---
В каждой книжной директории лежит как минимум один служебный файл с названием "_readme_lib.html" в котором содержатся все данные о книге. Может быть ещё два служебных файла -- с оглавлением "toc.***" и с картинкой обложки "cover.***" (gif|jpg|png).
--- Shelves - полки для хранения книг ---
Директории с книжками могут лежать либо в корне какого-то диска (например CD, DVD), либо в какой-то отдельной директории. Назовём такую внешнюю директорию shelf (полка). Внутри shelf - прямо в корне должен содержаться служебный файл "_shelf_lib.txt", в котором в человекопонятном формате описаны свойства этой shelf. Внутри shelf -- директрии с книгами. Кроме того, внутри могут быть и директории, которые не является книгами:
*) либо вообще "левые" директории, в которых книг нет. Названия таких директорий должны начинаться с двух знаков подчеркивания.
*) либо "узловые" директории, которые содержат не одну книгу, а целый набор книг.
Например:
biology_books\ // полка с книгами по биологии
biology_books\_shelf_lib.txt // файл описания полки с книгами
biology_books\obschaja_biologija_petrov\ // книга
biology_books\chastnaja_biologija_sidorov\ // книга
biology_books\__tmp\ // директория, не имеющая прямого отношения к данной полке
biology_books\_entomology\ // узел книг по энтомологии
biology_books\_entomology\babochki_kavkaza_ivanov\ // книга
biology_books\_botany\ // узел книг по ботанике
biology_books\_entomology\praktikum_po_cvetovodstvu_ivanov\ // книга
biology_books\_entomology\praktikum_po_agronomii_ivanov\ // книга
Пояснение: поиск, упорядочивание, вывод части списков программа проводит по встроенной базе данных (где вся информация есть). Человекопонятные файлы внутри книжных директорий и внутри shelves используются при обмене/распространении.
сущности, с которыми имеет дело программа-- б.м. соответствует основным таблицам базы данных --
Книга: одно издание - одна сущность. Разные издания одной и той же книги - разные сущности. Свойства книги: издательства, авторы, том, серия, картинка обложки и т.п. Свойствами не являются: адреса, где книгу можно скачать, описания сканов, и т.п. - это всё в комментарии.
Файл/файлы, из которых состоит книга: записываются размеры и контрольные суммы. Эта информация используется при упорядочиваниии диких библиотек.
Shelf: используется только в клиентских программах. Соответствует носителям, которые используются юзверем для хранения библиотеки. Различаются "подключенные и неподключенные" shelves. При поытке открыть книгу из "неподключенного" shelf программа объясняет, где лежит книжка. Контроль за подключением / отключением вполне можно возложить на юзверя.
Ник хозяина библиотеки -- используется для простановки авторства описаний / комментариев.
Ключевые слова -- книге может соответствовать одно или несколько ключевых слов. Они используются для размещения книги в древовидном каталоге. Если у двух юзверей каталоги организованы одинаково, то размещение происходит без вопросов. Если каталоги разные - с вопросами. На сервере поддерживается стандартный каталог. Те юзвери, которым "много не надо" не изменяют каталог и тогда не имеют лишних вопросов.
примерный внешний видДва окна. первое -- для управления, второе -- для просмотра библиотеки, описаний книг и вызова книг.
Окно для просмотра выглядит примерно как это:
http://molbiol.ru/review/05_00.htmlВ верхней части - список книг, сформированный текущим запросом к базе данных. В нижней - описание той книги, которая юзверя заинтересовала, форма для ввода комментариев. Щелчок по кнопке "оглавление" открывает оглавление книги. Щелчок по названию или картинке обложки - открывает:
либо саму книгу (если файл один и имеет приемлемый формат),
либо всю папку - (если много файлов или неясный формат) чтобы юзверь решал сам, какой файл ему нужен,
либо - сообщение о том, что shelf не подключен;
либо - сообщение о том, что книги у юзверя нет, есть только описание.
в управляющем окне отдельные закладки:
(i) древовидный каталог;
(ii) организация поиска;
(iiii) управление shelves -- подключение, отключение, команда для формирования html-оглавления, которое располагается внутри shelf (optional - с файлом автозагрузки - для подготовки CD/DVD), подключение нераспознанной shelf (анализ файлов, разбрасывание их по папкам);
(iv) ввод новой книги -- окно типа
http://molbiol.ru/forums/index.php?act=Post&CODE=00&f=11 (оно же обеспечивает импорт описаний с web-служб);
(v) импорт / экспорт описаний.