Конфигурационный файл

advertisement
Описание скрипта для импорта симуляций
Описание скрипта для импорта моделей
Скрипт import.pl предназначен для импорта моделей из репозитория в OpenCollege.
Составные части
Скрипт состоит из следующих файлов:
importer.pl - главный файл, который разбирает командную строку, конфигурационный
файл, запускает остальные файлы скрипта и копирует необходимые файлы в нужные
директории.
xml_physicon_parser.pl – разбирает xml-файл info.xml из каждой директории и выбирает
из него данные согласно шаблону, заданному в конфигурационном файле.
import_to_db.pl – формирует и выполняет sql запросы по заданным в конфигурационном
файле шаблонам и полученным из info.xml данным.
importer.cfg - тут задаются глобальные переменные, относящиеся к базе данных и
копированию файлов.
importer.template – даны шаблоны разбора xml-файла и составления sql-запросов для
каждого типа вносимых моделей (java, screenshot, flacon, flash). К сожалению, шаблон
копирования файлов сейчас не применяется. Все директивы копирования зашиты в
importer.pl (функция copy_files).
Аргументы командной строки
importer.pl [--check|check_only|verbose] dir_name_list …
Указанные директории должны содержать директории с номерами моделей. Обычно такая
структура получается разархивированием полученного файла из репозитория
(Репозиторий -> Export Simulations -> …)
Ключ
Описание
--check
Проверяет, есть ли записи в каталоге, ссылающиеся на одни и те же
модели. Проверка ведется до внесения в базу данных новых моделей.
--check_only Аналогично ключу --check проходит проверка множественных ссылок на
-o
одну модель. Больше никаких действий не выполняется. Аргумент
dir_name_list можно опустить.
--verbose
Выводится информация о совершаемых действиях: создании директорий,
-v
копировании файлов, запросах к базе данных.
Конфигурационный файл
Файл importer.cfg содержит следующие настройки:
Переменная
Пример
Ее значение
значения
/home/open/ww Относительно ее задаются DIR_*
BASE
w/simrent/
переменные.
DIR_JAR
jars/
В этой директории хранятся файлы javaсимуляций.
DIR_FLACON
flacon/
В этой директории находятся файлы
симуляций на флаконе.
DIR_FLASH
flash/
В этой директории хранятся файлы
флешевых анимаций.
DIR_SCRSHOT
scrshots/
В этой директории хранятся файлы
1
Описание скрипта для импорта симуляций
Переменная
Пример
значения
DIR_ICON
res_icons/
JAR_PATH
../jars/
SCR_PATH
../scrshots/
ICON_PATH
../res_icons/
FLACON_BASE
../flacon/
FLASH_PATH
../flash/
DATABASE
trial
DBHOST
localhost
DBUSER
taty
DBAUTH
“”
Ее значение
скриншотов.
В этой директории хранятся файлы иконок.
этот путь входит в SQL-запросы javaсимуляций.
этот путь входит в SQL-запросы (путь к
скриншотам).
этот путь входит в SQL-запросы (путь к
иконкам).
этот путь1 входит в SQL-запросы
флешевых анимаций.
этот путь входит в SQL-запросы
имя базы данных, куда идут SQL-запросы.
где находится база данных
пользователь, под которым соединяемся с
БД
его пароль.
Структура шаблонов
Шаблоны лежат в importer.template.
Шаблоны позволяют указать для каждого типа моделей какие теги и аттрибуты надо
извлекать из файла info.xml, какими SQL-запросами помещать найденную информацию в
базу данных и какие файлы куда копировать.
Комментариями являются строки, начинающиеся с #.
Различные типы моделей (Java, Flacon, Flash etc.) отделяются друг от друга линией знаков
равенства, внутри которой указан тип. Название типа должно СТРОГО совпадать с тем
именем, который будет указан в файле info.xml в теге <simulation type=”…”>.
Например:
====================== Java ===================================
Все, что написано до первого разделителя типов игнорируется.
Внутри типа информация подразделяется на шаблон разбора xml-файла, шаблон SQLзапросов и шаблон копирования файлов. Разделители подсекций состоят из лидирующих
знаков равенства и названия подсекции (XML, SQL, FILE), например:
=== XML
==SQL
=== FILE
Структура шаблона для разбора XML файла
Шаблон начинается со стороки типа ==XML.
Так как в некоторых типах таги с одинаковыми именами лежат внутри разных тегов и
имеют различное значение (например, для Flash надо брать содержимое тега movie,
который лежит внутри тега code, а не от того, который лежит внутри тега params), то вам
В запросы входит переменная flacon_path, которая состоит из FLACON_BASE с указанной версией
флакона. Например, FLACON_BASE=’../flacon/’, модель написана на Flacon2 (т.е. FlaconVersion=2), тогда
flacon_path=’../flacon2/’
1
2
Описание скрипта для импорта симуляций
надо указать все теги, внутри которых лежит нужная информация. Пробельные символы
не имеют значения. Например,
<code>
<movie> text </movie>
<code>
Запоминается содержимое тега, если между тегами находится ключевое слово text или int.
В следующих версиях для ключевого слова int будет содержимое приводиться к числу, но
пока никакой разницы между text и int нет.
Если интересует значение аттрибута тега, то ключевое слово text указывается как
значение аттрибута, например,
<simulation type = “text”>
Все аттрибуты тега и все теги, не указанные в шаблоне, игнорируются.
Указанное содержимое тегов и значения аттрибутов запоминаются с именем аттрибута
(для значения аттрибута) или тега (для содержимого тега). Для подстановки этих значений
надо указать имя в квадратных скобках. Для приведенных примеров это [movie] и [type].
Структура шаблона SQL запросов
Шаблон начинается со стороки типа ==SQL.
Метаязык шаблона запросов к БД похож на SQL. Каждый запрос заключен в двойные
кавычки. Запрос может располагаться на нескольких строках. Запросы выполняются в том
порядке, в котором они указаны в шаблоне.
Глобальные переменные из конфигурационного файла указываются в угловых скобках,
например, <icon_path>. Переменные, полученные при разборе xml-файла или в результате
выполнения SQL-запроса пишутся в квадратных скобках, например, [movie] или
[resID_jar].
“UPDATE <CatalogAttrs> SET <value>=’[applet]’ WHERE
<catID>=’[catalogID]’ AND <name>=’code’ “
Чтобы запомнить результат выполнения запроса как значение переменной, напишите ее
имя в квадратных скобках и поставьте после нее знак ~ :
“[catalogID] ~ SELECT <ID> FROM <Catalog> WHERE
<resID>=’[resID_jar]’ “
Все запросы в разделе, расположенные после специального запроса “EXIT” не
выполняются.
Если запрос начинается с диеза, то он не выполняется.
Структура шаблона копирования файлов
Шаблон начинается со стороки типа ==FILE.
Сначала пишется переменная из конфигурационного файла, в которой указана
директория, куда будем копировать файлы. Далее после знака «<=» пишем путь к файлу.
Например:
DIR_ICON
<=
[icon]
FLACON_PATH
<=
[movie].swf
Файл берется из той же директории, что и info.xml.
Следует отметить, что для Флакона надо указывать не DIR_FLACON (хотя именно
эту переменную Вы определяете в конфигурационном файле, а FLACON_PATH,
который получается (хитрой) конкатенацией DIR_FLACON и версии Флакона.
Надеюсь, что в будущем эта структура директорий будет заменена более ясной, и
подобные финты будут не нужны.
3
Download