changeset 31:3e77076621a8

Remove obsolete docs and sample.
author Mikhail Kryshen <mikhail@kryshen.net>
date Sun, 30 Aug 2009 02:51:15 +0400
parents 54539dff18ca
children bdd1c8d6b560
files build.xml misc/biotopes/biotope-top.sql misc/biotopes/biotope.sql misc/biotopes/biotope.template misc/biotopes/brief.dtd misc/biotopes/class.sql misc/biotopes/classes.template misc/biotopes/doc/article.txt misc/biotopes/doc/readme.html misc/biotopes/doc/readme.txt misc/biotopes/main.template misc/biotopes/photo.sql misc/biotopes/photo.template misc/biotopes/plant.sql misc/biotopes/plants.template misc/biotopes/tema.properties misc/manual-ru-old/index.html misc/util/header misc/util/header.gpl misc/util/update_headers.pl
diffstat 20 files changed, 0 insertions(+), 1131 deletions(-) [+]
line wrap: on
line diff
--- a/build.xml	Fri May 15 03:07:16 2009 +0400
+++ b/build.xml	Sun Aug 30 02:51:15 2009 +0400
@@ -118,7 +118,6 @@
 		<exclude name=".hg/**"/>
 		<exclude name=".hg*"/>
                 <exclude name="${build}/**"/>
-                <exclude name="misc/**"/>
                 <exclude name="test/**"/>
                 <exclude name="nbproject/**"/>
                 <exclude name="${dist}/${ant.project.name}-*.tar.gz"/>
--- a/misc/biotopes/biotope-top.sql	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-SELECT t1.*,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 1) = Left(t1.rangcode, 1) AND
-Right(t2.rangcode, 8) = '00000000') AS class0,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 3) = Left(t1.rangcode, 3) AND
-Right(t2.rangcode, 6) = '000000') AS class1,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 5) = Left(t1.rangcode, 5) AND
-Right(t2.rangcode, 4) = '0000') AS class2,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 7) = Left(t1.rangcode, 7) AND
-Right(t2.rangcode, 2) = '00') AS class3
-
-FROM biotopelist AS t1
-WHERE Right(t1.rangcode, 2) <> '00' AND rusname
--- a/misc/biotopes/biotope.sql	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-SELECT t1.*,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 1) = Left(t1.rangcode, 1)
-AND Right(t2.rangcode, 8)  = '00000000'
-AND Right(t1.rangcode, 8) <> '00000000') AS class0,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 3) = Left(t1.rangcode, 3)
-AND Right(t2.rangcode, 6)  = '000000'
-AND Right(t1.rangcode, 6) <> '000000') AS class1,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 5) = Left(t1.rangcode, 5)
-AND Right(t2.rangcode, 4)  = '0000'
-AND Right(t1.rangcode, 4) <> '0000') AS class2,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 7) = Left(t1.rangcode, 7)
-AND Right(t2.rangcode, 2)  = '00'
-AND Right(t1.rangcode, 2) <> '00') AS class3
-
-FROM biotopelist AS t1
-WHERE rusname
--- a/misc/biotopes/biotope.template	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-5"?>
-<!DOCTYPE чъьАпщьу_рьтп SYSTEM "brief.dtd">
-<!-- rangcode: <%xml_escape db\rangcode%> -->
-<чъьАпщьу_рьтп show="0">
-  <ЮьАЦщзь display="0">
-    <%optional:<зпЮБп_ЮпАъЮчАБЮпщущьО щчэуЮ="1" file="<%xml_escape image:maps/<%db\rangcode%>.gif maps/<%db\code%>.png png%>"/>%>
-<%query:photo_sql [%\<%include\photo.template%>%] <%get\code%>%>
-  </ЮьАЦщзь>
-  <щпврпщьу><%xml_escape db\rusname%></щпврпщьу>
-  <зшпАА><%xml_escape db\class0%></зшпАА>
-  <ъчтзшпАА1><%xml_escape db\class1%></ъчтзшпАА1>
-  <ъчтзшпАА2><%xml_escape db\class2%></ъчтзшпАА2>
-  <ъчтзшпАА3><%xml_escape db\class3%></ъчтзшпАА3>
-  <зЮпБзпО_ЕпЮпзБуЮьАБьзп rows="3"><%xml_cdata db\descript%></зЮпБзпО_ЕпЮпзБуЮьАБьзп>
-  <ъЮьэуЮ_чъьАпщьО rows="3"><%xml_cdata db\geobotdescr%></ъЮьэуЮ_чъьАпщьО>
-  <прБчЮК_чъьАпщьО><%xml_escape db\contributors%></прБчЮК_чъьАпщьО>
-</чъьАпщьу_рьтп>
--- a/misc/biotopes/brief.dtd	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-<?xml encoding="ISO-8859-5"?>
-<!ELEMENT чъьАпщьу_рьтп (ЮьАЦщзь?, щпврпщьу, зшпАА, ъчтзшпАА1, ъчтзшпАА2, ъчтзшпАА3, зЮпБзпО_ЕпЮпзБуЮьАБьзп, ъЮьэуЮ_чъьАпщьО, прБчЮК_чъьАпщьО)>
-<!ELEMENT ЮьАЦщзь (ДчБчсЮпДьО|зпЮБп_ЮпАъЮчАБЮпщущьО)*>
-<!ELEMENT ДчБчсЮпДьО EMPTY>
-<!ELEMENT зпЮБп_ЮпАъЮчАБЮпщущьО EMPTY>
-<!ELEMENT щпврпщьу (#PCDATA)>
-<!ELEMENT зшпАА (#PCDATA)>
-<!ELEMENT ъчтзшпАА1 (#PCDATA)>
-<!ELEMENT ъчтзшпАА2 (#PCDATA)>
-<!ELEMENT ъчтзшпАА3 (#PCDATA)>
-<!ELEMENT зЮпБзпО_ЕпЮпзБуЮьАБьзп (#PCDATA)>
-<!ELEMENT ъЮьэуЮ_чъьАпщьО (#PCDATA)>
-<!ELEMENT прБчЮК_чъьАпщьО (#PCDATA)>
-<!ATTLIST чъьАпщьу_рьтп show (0|1) "1"> 
-<!ATTLIST ЮьАЦщзь
-	display CDATA #FIXED "0">
-<!ATTLIST ДчБчсЮпДьО
-	num ID #REQUIRED
-	file CDATA #REQUIRED
-	big CDATA #REQUIRED
-	text CDATA #IMPLIED
-	прБчЮ CDATA #IMPLIED>
-<!ATTLIST зпЮБп_ЮпАъЮчАБЮпщущьО
-	num ID #REQUIRED
-	file CDATA #REQUIRED>
-<!ATTLIST зЮпБзпО_ЕпЮпзБуЮьАБьзп rows CDATA #FIXED "3">
-<!ATTLIST ъЮьэуЮ_чъьАпщьО rows CDATA #FIXED "3">
--- a/misc/biotopes/class.sql	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-SELECT t1.*
-FROM biotopelist AS t1
-WHERE rusname AND Right(t1.rangcode, 8)  = '00000000'
-  AND EXISTS
-    (SELECT NULL FROM biotopelist AS t2
-     WHERE Left(t2.rangcode, 1) = Left(t1.rangcode, 1)
-     AND Right(t2.rangcode, 8) <> '00000000')
--- a/misc/biotopes/classes.template	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-5"?>
-<зшпААьДьзпФьО><%query:class_sql [%\
-  <!-- rangcode: <%xml_escape get\rangcode%> -->
-  <зшпАА id="<%get\NUMBER%>"><%xml_escape db\rusname%></зшпАА>%]%>
-</зшпААьДьзпФьО>
--- a/misc/biotopes/doc/article.txt	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +0,0 @@
-* Преобразование базы данных в XML-формат электронной библиотеки.
-
-Для решения задачи преобразования базы данных "Местообитания Восточной
-Фенноскандии" из формата Microsoft Access в XML-формат электронной
-библиотеки КарНЦ РАН была разработана программная система DbReader.
-
-Программа DbReader является универсальным средством для представления
-информации из баз данных в текстовых форматах. Программа обрабатывает
-заданные шаблоны текстовых файлов и заменяет найденные в них
-инструкции на результаты их выполнения. Различные инструкции позволяют
-формировать SQL-запросы, выполнять их и обрабатывать полученные
-данные.
-
-
-* Формат инструкций:
-
-    <%<список_функций>{:|\}<данные>%>
-  где 
-
-<список_функций> - список имен функций, разделенных пробелами.
-    Может быть пустым.
-<данные> - данные, передаваемые функции.
-
-
-* Формат данных:
-
-    [<список_аргументов>][<текст>]
-  где
-
-<список_аргументов> - список аргументов функции, разделенных пробелами.
-    Может быть пустым.
-<текст> - текст, передаваемый функции без разбиения на аргументы.
-    Может быть пустым. Количество аргументов, после которого следует
-    текст, зависит от функции.
-
-Разделитель между списком функций и данными определяет, как должны
-обрабатываться данные функции:
-: - рекурсивная обработка,
-\ - передать без обработки.
-
-Если в списке функций задано две и более функции, они выполняются,
-начиная с последней, так что каждая функция получает в качестве данных
-результат выполнения следующей функции.
-
-Каждая функция имеет код возврата - целое число. Код возврата
-инструкции - код возврата первой в списке функции. Код возврата,
-получаемый при обработке текста - сумма кодов возврата обработанных
-инструкций.
-
-Вместо скобок '<', '>' можно использовать скобки '[', ']'.
-
-
-* Реализованные функции:
-
-Функция:      set
-Аргументы:    <имя>
-Текст:        <значение>
-Действие:     устанавливает значение переменной <имя>
-Результат:    <имя>
-Код возврата: 1
-
-Функция:      get
-Аргументы:    <имя>
-Результат:    значение переменной <имя>. 
-Код возврата: 1, если значение переменной было установлено, 0 - иначе.
-
-Функция:      prepare
-Аргументы:    <имя>
-Текст:        <запрос>
-Действие:     Подготавливает SQL-запрос <запрос> для выполнения,
-              записывает подготовленный запрос в переменную <имя>.
-Результат:    <имя>
-Код возврата: 1
-
-Функция:      query
-Аргументы:    <имя_запроса> <шаблон> <парам1> ... <парамN>
-Действие:     Выполняет запрос с параметрами, подготовленный с помощью
-              функции prepare. Значения параметров подставляются в
-              запрос вместо символа '?'. Значения полей ответа будут
-              записаны, как переменные шаблона <шаблон>. При обработки
-              шаблона <шаблон> также определяется переменная NUMBER,
-              содержащая номер текущей строки ответа. Переменные,
-              определенные в вызывающем шаблоне, доступны из шаблона
-              <шаблон> по имени SUPER.<имя_переменной>.
-
-Результат:    результат обработки шаблона <шаблон> для каждой строки
-              ответа.
-Код возврата: количество полученных строк ответа.
-
-Функция:      optional
-Текст:        <данные>
-Результат:    <данные>, если при обработке данных был получен
-              код возврата отличный от 0, иначе - пустая строка.
-Код возврата: 1, если результат - пустая строка, 0 - иначе.
-
-Функция:      image
-Аргументы:    <исх_файл> <кон_файл> <формат> [<макс_ширина> [<макс_высота>]]
-Действие:     Загружает изображение из файла <исх_файл> (путь определяется
-              относительно конфигурационного параметра "resource_base") и
-              преобразует его в указанный формат, сохраняя результат в
-              <кон_файл>. Если заданы максимальная высота и ширина, большие
-              изображения будут уменьшены. 
-Результат:    <кон_файл> при успешном выполнении, пустая строка - иначе.
-Код возврата: 1 при успешном выполнении, 0 - иначе.
-
-Функция:      copy
-Аргументы:    <исх_файл> <кон_файл>
-Действие:     Копирует файл <исх_файл> в файл <кон_файл>
-	      (путь <исх_файл> определяется относительно
-              конфигурационного параметра "resource_base").
-Результат:    <кон_файл> при успешном выполнении, пустая строка - иначе.
-Код возврата: 1 при успешном выполнении, 0 - иначе.
-
-Функция:      write
-Аргументы:    <имя_файла>
-Текст:        <данные>
-Действие:     Записывает <данные> в файл <исх_файл>.
-Результат:    <кон_файл> при успешном выполнении, пустая строка - иначе.
-Код возврата: 1 при успешном выполнении, 0 - иначе.
-
-Функция:      read
-Текст:        <имя_файла>
-Действие:     Читает файл <имя_файла>.
-Результат:    прочитанные данные при успешном выполнении, пустая
-              строка - иначе.
-Код возврата: 1 при успешном выполнении, 0 - иначе.
-
-Функция:      include
-Текст:        <имя_файла>
-Действие:     включает шаблон из файла <имя_файла>.
-Результат:    результат обработки шаблона.
-Код возврата: код возврата, полученный при обработке шаблона.
-
-Функция:      !
-Текст:        <данные>
-Действие:     нет.
-Результат:    нет.
-Код возврата: код возврата, полученный при обработке текста данных.
-
-Функция:      replace
-Аргументы:    <стр1> <стр2>
-Текст:        <данные>
-Результат:    данные, с замененными вхождениями подстроки <стр1>
-	      на <стр2>.
-Код возврата: код возврата, полученный при обработке текста данных.
-
-Функция:      xml_escape
-Текст:        <данные>
-Результат:    текст <данные>, в котором  символы
-              '&', '<', '>', '`', '\' заменены на соответствующие
-	      сущности XML.
-Код возврата: код возврата, полученный при обработке текста данных.
-
-Функция:      xml_cdata
-Текст:        <данные>
-Результат:    данные в виде блока XML CDATA.
-Код возврата: код возврата, полученный при обработке текста данных.
-
-Система DbReader расширяема: возможно добавление в систему новых
-функций, реализованных в виде классов на языке Java.
-
-
-* Применение системы DbReader для преобразования базы данных
-  "Местообитания Восточной Фенноскандии" из формата Microsoft Access в
-  XML-формат электронной библиотеки КарНЦ РАН
-
-Для преобразования используются две таблицы базы данных "Местообитания
-Восточной Фенноскандии" (перечислены только используемые поля):
-
-biotopelist (code, rangcode, rusname, engname, descript, geobotdescr,
-             contributors, descrdate)
-
-  code - счетчик, ключевое поле;
-  rangcode - поле в формате ABBCCDDEE, где А, BB, CC, DD, ЕЕ - коды
-             класса, подклассов и растения;
-  rusname, engname, descript, geobotdescr - текстовые поля;
-  descrdate - дата.
-
-photos (biotope, photo, authphoto)
-
-  biotope - число, указывает на code в biotopelist;
-  photo - имя файла фотографии;
-  authphoto - текст.
-
-Требуется сгенерировать xml-файл для каждой записи в biotopelist, файл
-со списком классов, файл со списком растений, полноразмерные и
-уменьшенные версии каждой фотографии.
-
-Для генерации xml-файлов с описаниями биотопов использовался следующий
-шаблон DbReader (файл biotope.template):
-
-----------------------------------------------------------------------
-<?xml version="1.0" encoding="ISO-8859-5"?>
-<!DOCTYPE описание_вида SYSTEM "brief.dtd">
-<!-- rangcode: <%xml_escape get\rangcode%> -->
-<описание_вида show="0">
-  <рисунки display="0">
-    <%optional:<карта_распространения номер="1"
-    file="<%xml_escape image:maps/<%get\rangcode%>.gif maps/<%get\code%>.png png%>"/>%>
-<%query:photo_sql [%\<%include\photo.template%>%] <%get\code%>%>
-  </рисунки>
-  <название><%xml_escape get\rusname%></название>
-  <класс><%xml_escape get\class0%></класс>
-  <подкласс1><%xml_escape get\class1%></подкласс1>
-  <подкласс2><%xml_escape get\class2%></подкласс2>
-  <подкласс3><%xml_escape get\class3%></подкласс3>
-  <краткая_характеристика rows="3"><%xml_cdata get\descript%></краткая_характеристика>
-  <пример_описания rows="3"><%xml_cdata get\geobotdescr%></пример_описания>
-  <авторы_описания><%xml_escape get\contributors%></авторы_описания>
-</описание_вида>
-----------------------------------------------------------------------
-
-Соответствующий SQL-запрос, при выполнении которого устанавливаются
-значения переменных шаблона rangcode, rusname, class0, class1, class2,
-class3, descript, geobotdescr и contributors (файл biotope.sql):
-
-----------------------------------------------------------------------
-SELECT t1.*,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 1) = Left(t1.rangcode, 1)
-AND Right(t2.rangcode, 8)  = '00000000'
-AND Right(t1.rangcode, 8) <> '00000000') AS class0,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 3) = Left(t1.rangcode, 3)
-AND Right(t2.rangcode, 6)  = '000000'
-AND Right(t1.rangcode, 6) <> '000000') AS class1,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 5) = Left(t1.rangcode, 5)
-AND Right(t2.rangcode, 4)  = '0000'
-AND Right(t1.rangcode, 4) <> '0000') AS class2,
-
-(SELECT t2.rusname FROM biotopelist AS t2
-WHERE Left(t2.rangcode, 7) = Left(t1.rangcode, 7)
-AND Right(t2.rangcode, 2)  = '00'
-AND Right(t1.rangcode, 2) <> '00') AS class3
-
-FROM biotopelist AS t1
-WHERE rusname
-----------------------------------------------------------------------
-
-Шаблон biotope.template содержит инструкцию <%include\photo.template%>,
-включающую шаблон описания фотографии (файл photo.template):
-
-----------------------------------------------------------------------
-    <фотография num="<%xml_escape get\NUMBER%>"
-       <%optional:автор="<%xml_escape get\authphoto%>" %>text="" 
-       file="<%xml_escape image:biotopephotos/<%get\photo%> images/<%get\SUPER.code%>_<%get\NUMBER%>.jpg jpg 300 300%>" 
-        big="<%xml_escape copy:biotopephotos/<%get\photo%> images/big/<%get\SUPER.code%>_<%get\NUMBER%>.jpg%>"/>
-----------------------------------------------------------------------
-
-Соответствующий SQL-запрос для получения описания фотографий
-(photo.sql):
-
-----------------------------------------------------------------------
-SELECT * from photos WHERE biotope = ?
-----------------------------------------------------------------------
-
-Шаблон, генерирующий список классов (файл classes.template):
-
-----------------------------------------------------------------------
-<?xml version="1.0" encoding="ISO-8859-5"?>
-<классификация><%query:class_sql [%\
-  <!-- rangcode: <%xml_escape get\rangcode%> -->
-  <класс id="<%get\NUMBER%>"><%xml_escape get\rusname%></класс>%]%>
-</классификация>
-----------------------------------------------------------------------
-
-Соответствующий SQL-запрос (class.sql):
-
-----------------------------------------------------------------------
-SELECT t1.*
-FROM biotopelist AS t1
-WHERE rusname AND Right(t1.rangcode, 8)  = '00000000'
-  AND EXISTS
-    (SELECT NULL FROM biotopelist AS t2
-     WHERE Left(t2.rangcode, 1) = Left(t1.rangcode, 1)
-     AND Right(t2.rangcode, 8) <> '00000000')
-----------------------------------------------------------------------
-
-Шаблон, генерирующий список растений (файл plants.template):
-
-----------------------------------------------------------------------
-<?xml version="1.0" encoding="ISO-8859-5"?>
-<растения><%query:plant_sql [%\
-  <!-- rangcode: <%xml_escape get\rangcode%> -->
-  <растение><%xml_escape get\rusname%></растение>%]%>
-</растения>
-----------------------------------------------------------------------
-
-Соответствующий SQL-запрос (plant.sql):
-
-----------------------------------------------------------------------
-SELECT t1.*
-FROM biotopelist AS t1
-WHERE rusname AND Right(t1.rangcode, 2) <> '00'
-----------------------------------------------------------------------
-
-Система DbReader начинает работу с обработки шаблона index.template,
-который содержит вызовы перечисленных выше SQL-запросов и включения
-шаблонов:
-
-----------------------------------------------------------------------
-<%!:
-  <%prepare:biotope_sql <%read\biotope.sql%>%>
-  <%prepare:photo_sql <%read\photo.sql%>%>
-  <%prepare:class_sql <%read\class.sql%>%>
-  <%prepare:plant_sql <%read\plant.sql%>%>
-
-  <%query:biotope_sql [%\<%write:<%get\code%>.xml <%include\biotope.template%>%> %]%>
-
-  <%write:classes.xml <%include\classes.template%>%>
-  <%write:plants.xml <%include\plants.template%>%>
-%>
-----------------------------------------------------------------------
-
-Пример сгенерированного XML-файла:
-
-----------------------------------------------------------------------
-<?xml version="1.0" encoding="ISO-8859-5"?>
-<!DOCTYPE описание_вида SYSTEM "brief.dtd">
-<!-- rangcode: E04020302 -->
-<описание_вида show="0">
-  <рисунки display="0">    
-    <фотография num="1" автор="Крышень А.М." text="" 
-                file="images/3_1.jpg" 
-                big="images/big/3_1.jpg"/>
-    <фотография num="2" автор="Крышень А.М." text="" 
-                file="images/3_2.jpg" 
-                big="images/big/3_2.jpg"/>
-  </рисунки>
-  <название>Betula sp. - Avenella flexuosa - Polytrichum commune</название>
-  <класс>E. Суходольные местообитания</класс>
-  <подкласс1>Автоморфные влажные</подкласс1>
-  <подкласс2></подкласс2>
-  <подкласс3></подкласс3>
-  <краткая_характеристика rows="3"><![CDATA[Развиваются  на луговиковых вырубках лесов черничного типа.  Через 5 - 7 лет  после рубки порослевая береза выходит из  яруса травянистых растений, ее влияние сказывается, в первую очередь, на влажности почвы.]]></краткая_характеристика>
-  <пример_описания rows="3"></пример_описания>
-  <авторы_описания></авторы_описания>
-</описание_вида>
-----------------------------------------------------------------------
-
-
-* Структура программы DbReader
-
-Программа DbReader написана на языке программирования Java и состоит
-из следующих основных классов:
-
-ru.karrc.dbreader.DbReader: cодержит точку входа программы. Загружает
-конфигурацию, устанавливает соединение с источником данных с помощью
-библиотеки JDBC, запускает обработку основного шаблона.
-
-ru.karrc.dbreader.TemplateParser: осуществляет разбор шаблона,
-обработку инструкций и вызов функций.
-
-ru.karrc.dbreader.Function: абстрактный класс. Реализации всех функций
-DbReader наследуют этот класс.
-
-ru.karrc.dbreader.FunctionDataParser: обработчик данных
-функции. Посволяет получить список аргументов и текст, передаваемый
-функции. При необходимости вызывает рекурсивную обработку данных с
-помощью TemplateParser.
-
-ru.karrc.dbreader.Functions: содержит реализации функций в виде
-анонимных классов, наследующих Function.
-
-ru.karrc.dbreader.TemplateParser: исключение, выбрасываемое в случае
-возникновения ошибки при обработке шаблона.
-
-Кроме того, реализовано несколько впомогательных классов, которые
-используются в реализациях функций системы.
-
-
-* Метрики реализованной программной системы.
-
-Количество файлов исходного кода: 8,
-Количество Java-классов (включая анонимные): 27,
-Общее количество строк исходного текста: 1311,
-Количество строк кода (исключая пустые строки и комментарии): 812,
-Количество строк комментариев: 180.
-
-
-* Заключение
-
-Автором была разработана программная система DbReader, которая
-является расширяемым и универсальным средством для представления
-информации из баз данных в текстовых форматах. С помощью системы
-DbReader база данных "Местообитания Восточной Фенноскандии" была
-переведена в XML-формат электронной библиотеки КарНЦ РАН.
--- a/misc/biotopes/doc/readme.html	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-          "DTD/xhtml1-transitional.dtd">
-
-<html>
-
-<head>
-  <title>DbReader</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=koi8-r" />
-</head>
-
-<body>
-<h1>DbReader</h1>
-
-<h2>Установка программы</h2>
-<ol>
-<li>Распаковать архив.</li>
-
-<li>Установить источник данных:<br />
-в Windows 2000: Панель управления/Администрирование/Источники данных (ODBC), добавить biotopes-data.mdb.</li>
-
-<li>Настроить программу:<br />
-В файле dbreader.properties указать имя, присвоенное источнику данных:<br />
-    <code>resource: jdbc:odbc:<em>имя</em></code><br />
-и путь к каталогу, относительно которого программа будет искать изображения (содержащий biotopephotos и maps):<br />
-    <code>resource_base: C:\\biotopes</code><br />
-(символ '\' необходимо дублировать)</li>
-
-<li>Запуск программы:<br />
-<code>dbreader.bat</code> или<br />
-<code>java -jar dbreader.jar</code>.<br />
-Для запуска необходима Java Runtime Environment (JRE) 5.0, можно скачать с <a href="http://java.sun.com/j2se/1.5.0/download.jsp">http://java.sun.com/j2se/1.5.0/download.jsp</a>. Возможно, будет работать и со старыми версиями JRE - не проверял.
-
-Все значения файла конфигурации можно переопределять при запуске программы:<br />
-команда <code>java -Dru.karrc.dbreader.<em>ключ</em>=<em>значение</em> -jar dbreader.jar</code><br />
-(например: <code>java -Dru.karrc.dbreader.log=dbreader.log -jar dbreader.jar</code>)</li>
-</ol>
-
-<h2>Работа программы</h2>
-
-<p>Программа выполняет запрос biotope.sql (или другой, указанный в dbreader.properties), после чего обрабатывает файл biotope.template, заменяя найденные в нем инструкции на результаты их выполнения.</p>
-<p>Формат инструкций: <code>&lt;%<em>список_функций</em>[:|\]<em>данные</em>%&gt;</code>, <em>список функций</em> - имена функций разделенные пробелом, список может быть пустым. Если указано несколько функций, они выполняются начиная с последней.</p>
-
-<h3>Разделители между списком функций и данными</h3>
-
-<ul>
-  <li><code>:</code> - данные будут обрабатываться рекурсивно.</li>
-  <li><code>\</code> - данные будут переданы функции без обработки. Можно использовать для экранирования комбинаций символов <code>&lt;%</code> и <code>%&gt;</code> (<code>&lt;%\&lt;%%&gt;</code> и <code>&lt;%\%%&gt;&gt;</code>).</li>
-</ul>
-
-<h3>Функции</h3>
-
-<ul>
-  <li><code>&lt;%get:<em>имя</em>%&gt;</code><br />
-  Заменяется на значение встроенной переменной или колонки запроса.</li>
-
-  <li><code>&lt;%optional:<em>текст</em>%&gt;</code><br />
-  Заменяется на <em>текст</em>, если в нем найдены инструкции, заменившиеся на непустые строки, иначе заменяется на пустую строку.</li>
-
-  <li><code>&lt;%escape:<em>текст</em>%&gt;</code><br />
-  Заменяет в тексте "опасные" символы (таблица замен задается в файле конфигурации).</li>
-
-  <li><code>&lt;%invoke:<em>имя</em>; <em>парам1</em> <em>парам2</em> ... <em>парамN</em>%&gt;</code><br />
-  Выполняет запрос с параметрами <em>имя</em>.sql и заменяется на результаты обработки шаблона <em>имя</em>.template. Значения параметров подставляются в запрос вместо символа '?'.</li>
-
-  <li><code>&lt;%image:<em>исх_файл</em> <em>кон_файл</em> <em>формат</em> [<em>макс_ширина</em>] [<em>макс_высота</em>]%&gt;</code><br />
-  Загружает изображение из файла <em>исх_файл</em> (путь определяется относительно конфигурационного параметра "resource_base") и преобразует его в указанный формат, сохраняя результат в <em>кон_файл</em>. Если заданы максимальная высота и ширина, большие изображения будут уменьшены.
-При успешном выполнении, инструкция <code>&lt;%image:...%&gt;</code> будет заменена на значение <em>кон_файл</em>, иначе - на пустую строку.</li>
-
-  <li><code>&lt;%copy:<em>исх_файл</em> <em>кон_файл</em>%&gt;</code><br />
-  Копирует файл <em>исх_файл</em> (путь определяется относительно конфигурационного параметра "resource_base") в <em>кон_файл</em>. При успешном выполнении, инструкция <code>&lt;%copy:...%&gt;</code> будет заменена на значение <em>кон_файл</em>, иначе - на пустую строку.</li>
-</ul>
-
-<h3>Встроенные переменные</h3>
-
-<p><code>NUMBER</code> - порядковый номер строки результата выполнения запроса.
-Чтобы обратиться к переменной запроса, из которого обрабатываемый шаблон был вызван с помощью функции invoke, перед именем переменной нужно добавить <code>SUPER.</code> (например: <code>SUPER.NUMBER</code>).</p>
-
-<h3>Пример</h3>
-
-<p>Следующая инструкция получит значение из столбца name и заменит в нем специальные символы:</p>
-<p><code>&lt;%escape get:name%&gt;</code></p>
-
-<p align="right"><i><a href="mailto:kryshen@cs.karelia.ru">Михаил Крышень</a></i></p>
-
-</body>
-</html>
--- a/misc/biotopes/doc/readme.txt	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-text/plain; charset=UTF-8
-
-пёя│я┌п╟п╫п╬п╡п╨п╟ п©я─п╬пЁя─п╟п╪п╪я▀
--------------------
-
-1. п═п╟я│п©п╟п╨п╬п╡п╟я┌я▄ п╟я─я┘п╦п╡.
-
-2. пёя│я┌п╟п╫п╬п╡п╦я┌я▄ п╦я│я┌п╬я┤п╫п╦п╨ п╢п╟п╫п╫я▀я┘:
-п╡ Windows 2000: п÷п╟п╫п╣п╩я▄ я┐п©я─п╟п╡п╩п╣п╫п╦я▐/п░п╢п╪п╦п╫п╦я│я┌я─п╦я─п╬п╡п╟п╫п╦п╣/п≤я│я┌п╬я┤п╫п╦п╨п╦ п╢п╟п╫п╫я▀я┘ (ODBC), п╢п╬п╠п╟п╡п╦я┌я▄ biotopes.mdb.
-
-3. п²п╟я│я┌я─п╬п╦я┌я▄ п©я─п╬пЁя─п╟п╪п╪я┐:
-п▓ я└п╟п╧п╩п╣ dbreader.properties я┐п╨п╟п╥п╟я┌я▄ п╦п╪я▐, п©я─п╦я│п╡п╬п╣п╫п╫п╬п╣ п╦я│я┌п╬я┤п╫п╦п╨я┐ п╢п╟п╫п╫я▀я┘:
-    "resource: jdbc:odbc:<п╦п╪я▐>"
-п╦ п©я┐я┌я▄ п╨ п╨п╟я┌п╟п╩п╬пЁя┐, п╬я┌п╫п╬я│п╦я┌п╣п╩я▄п╫п╬ п╨п╬я┌п╬я─п╬пЁп╬ п©я─п╬пЁя─п╟п╪п╪п╟ п╠я┐п╢п╣я┌ п╦я│п╨п╟я┌я▄ п╦п╥п╬п╠я─п╟п╤п╣п╫п╦я▐ (я│п╬п╢п╣я─п╤п╟я┴п╦п╧ biotopephotos п╦ maps):
-    "resource_base: C:\\biotopes"
-(я│п╦п╪п╡п╬п╩ '\' п╫п╣п╬п╠я┘п╬п╢п╦п╪п╬ п╢я┐п╠п╩п╦я─п╬п╡п╟я┌я▄)
-
-4. п≈п╟п©я┐я│п╨ п©я─п╬пЁя─п╟п╪п╪я▀: dbreader.bat п╦п╩п╦ "java -jar dbreader.jar"
-п■п╩я▐ п╥п╟п©я┐я│п╨п╟ п╫п╣п╬п╠я┘п╬п╢п╦п╪п╟ Java Runtime Environment (JRE) 5.0, п╪п╬п╤п╫п╬ я│п╨п╟я┤п╟я┌я▄ я│ http://java.sun.com/j2se/1.5.0/download.jsp. п▓п╬п╥п╪п╬п╤п╫п╬, п╠я┐п╢п╣я┌ я─п╟п╠п╬я┌п╟я┌я▄ п╦ я│п╬ я│я┌п╟я─я▀п╪п╦ п╡п╣я─я│п╦я▐п╪п╦ JRE - п╫п╣ п©я─п╬п╡п╣я─я▐п╩.
-
-п▓я│п╣ п╥п╫п╟я┤п╣п╫п╦я▐ я└п╟п╧п╩п╟ п╨п╬п╫я└п╦пЁя┐я─п╟я├п╦п╦ п╪п╬п╤п╫п╬ п©п╣я─п╣п╬п©я─п╣п╢п╣п╩я▐я┌я▄ п©я─п╦ п╥п╟п©я┐я│п╨п╣ п©я─п╬пЁя─п╟п╪п╪я▀:
-    п╨п╬п╪п╟п╫п╢п╟ "java -Dru.karrc.dbreader.<п╨п╩я▌я┤>=<п╥п╫п╟я┤п╣п╫п╦п╣> -jar dbreader.jar"
-(п╫п╟п©я─п╦п╪п╣я─: "java -Dru.karrc.dbreader.log=dbreader.log -jar dbreader.jar")
-
-
-п═п╟п╠п╬я┌п╟ п©я─п╬пЁя─п╟п╪п╪я▀
-----------------
-
-п÷я─п╬пЁя─п╟п╪п╪п╟ п╡я▀п©п╬п╩п╫я▐п╣я┌ п╥п╟п©я─п╬я│ biotope.sql (п╦п╩п╦ п╢я─я┐пЁп╬п╧, я┐п╨п╟п╥п╟п╫п╫я▀п╧ п╡ dbreader.properties), п©п╬я│п╩п╣ я┤п╣пЁп╬ п╬п╠я─п╟п╠п╟я┌я▀п╡п╟п╣я┌ я└п╟п╧п╩ biotope.template, п╥п╟п╪п╣п╫я▐я▐ п╫п╟п╧п╢п╣п╫п╫я▀п╣ п╡ п╫п╣п╪ п╦п╫я│я┌я─я┐п╨я├п╦п╦ п╫п╟ я─п╣п╥я┐п╩я▄я┌п╟я┌я▀ п╦я┘ п╡я▀п©п╬п╩п╫п╣п╫п╦я▐.
-
-п╓п╬я─п╪п╟я┌ п╦п╫я│я┌я─я┐п╨я├п╦п╧: "<%я│п©п╦я│п╬п╨_я└я┐п╫п╨я├п╦п╧[:|\]п╢п╟п╫п╫я▀п╣%>", я│п©п╦я│п╬п╨ я└я┐п╫п╨я├п╦п╧ - п╦п╪п╣п╫п╟ я└я┐п╫п╨я├п╦п╧ я─п╟п╥п╢п╣п╩п╣п╫п╫я▀п╣ п©я─п╬п╠п╣п╩п╬п╪, я│п©п╦я│п╬п╨ п╪п╬п╤п╣я┌ п╠я▀я┌я▄ п©я┐я│я┌я▀п╪. п∙я│п╩п╦ я┐п╨п╟п╥п╟п╫п╬ п╫п╣я│п╨п╬п╩я▄п╨п╬ я└я┐п╫п╨я├п╦п╧, п╬п╫п╦ п╡я▀п©п╬п╩п╫я▐я▌я┌я│я▐ п╫п╟я┤п╦п╫п╟я▐ я│ п©п╬я│п╩п╣п╢п╫п╣п╧.
-
-п═п╟п╥п╢п╣п╩п╦я┌п╣п╩п╦ п╪п╣п╤п╢я┐ я│п©п╦я│п╨п╬п╪ я└я┐п╫п╨я├п╦п╧ п╦ п╢п╟п╫п╫я▀п╪п╦:
-':' - п╢п╟п╫п╫я▀п╣ п╠я┐п╢я┐я┌ п╬п╠я─п╟п╠п╟я┌я▀п╡п╟я┌я▄я│я▐ я─п╣п╨я┐я─я│п╦п╡п╫п╬.
-'\' - п╢п╟п╫п╫я▀п╣ п╠я┐п╢я┐я┌ п©п╣я─п╣п╢п╟п╫я▀ я└я┐п╫п╨я├п╦п╦ п╠п╣п╥ п╬п╠я─п╟п╠п╬я┌п╨п╦. п°п╬п╤п╫п╬ п╦я│п©п╬п╩я▄п╥п╬п╡п╟я┌я▄ п╢п╩я▐ я█п╨я─п╟п╫п╦я─п╬п╡п╟п╫п╦я▐ п╨п╬п╪п╠п╦п╫п╟я├п╦п╧ я│п╦п╪п╡п╬п╩п╬п╡ "<%" п╦ "%>" ("<%\<%%>" п╦ "<%\%%>>").
-
-п╓я┐п╫п╨я├п╦п╦:
-<%get:<п╦п╪я▐>%> - п╥п╟п╪п╣п╫я▐п╣я┌я│я▐ п╫п╟ п╥п╫п╟я┤п╣п╫п╦п╣ п╡я│я┌я─п╬п╣п╫п╫п╬п╧ п©п╣я─п╣п╪п╣п╫п╫п╬п╧ п╦п╩п╦ п╨п╬п╩п╬п╫п╨п╦ п╥п╟п©я─п╬я│п╟.
-
-<%optional:<я┌п╣п╨я│я┌>%>
-п≈п╟п╪п╣п╫я▐п╣я┌я│я▐ п╫п╟ <я┌п╣п╨я│я┌>, п╣я│п╩п╦ п╡ п╫п╣п╪ п╫п╟п╧п╢п╣п╫я▀ п╦п╫я│я┌я─я┐п╨я├п╦п╦, п╥п╟п╪п╣п╫п╦п╡я┬п╦п╣я│я▐ п╫п╟ п╫п╣п©я┐я│я┌я▀п╣ я│я┌я─п╬п╨п╦, п╦п╫п╟я┤п╣ п╥п╟п╪п╣п╫я▐п╣я┌я│я▐ п╫п╟ п©я┐я│я┌я┐я▌ я│я┌я─п╬п╨я┐.
-
-<%escape:<я┌п╣п╨я│я┌>%>
-п≈п╟п╪п╣п╫я▐п╣я┌ п╡ я┌п╣п╨я│я┌п╣ "п╬п©п╟я│п╫я▀п╣" я│п╦п╪п╡п╬п╩я▀ (я┌п╟п╠п╩п╦я├п╟ п╥п╟п╪п╣п╫ п╥п╟п╢п╟п╣я┌я│я▐ п╡ я└п╟п╧п╩п╣ п╨п╬п╫я└п╦пЁя┐я─п╟я├п╦п╦).
-
-<%invoke:<п╦п╪я▐> <п©п╟я─п╟п╪1> <п©п╟я─п╟п╪2> ... <п©п╟я─п╟п╪N>%>
-п▓я▀п©п╬п╩п╫я▐п╣я┌ п╥п╟п©я─п╬я│ я│ п©п╟я─п╟п╪п╣я┌я─п╟п╪п╦ <п╦п╪я▐>.sql п╦ п╥п╟п╪п╣п╫я▐п╣я┌я│я▐ п╫п╟ я─п╣п╥я┐п╩я▄я┌п╟я┌я▀ п╬п╠я─п╟п╠п╬я┌п╨п╦ я┬п╟п╠п╩п╬п╫п╟ <п╦п╪я▐>.template. п≈п╫п╟я┤п╣п╫п╦я▐ п©п╟я─п╟п╪п╣я┌я─п╬п╡ п©п╬п╢я│я┌п╟п╡п╩я▐я▌я┌я│я▐ п╡ п╥п╟п©я─п╬я│ п╡п╪п╣я│я┌п╬ я│п╦п╪п╡п╬п╩п╟ '?'.
-
-<%image:<п╦я│я┘_я└п╟п╧п╩> <п╨п╬п╫_я└п╟п╧п╩> <я└п╬я─п╪п╟я┌> [<п╪п╟п╨я│_я┬п╦я─п╦п╫п╟>] [<п╪п╟п╨я│_п╡я▀я│п╬я┌п╟>]%>
-п≈п╟пЁя─я┐п╤п╟п╣я┌ п╦п╥п╬п╠я─п╟п╤п╣п╫п╦п╣ п╦п╥ я└п╟п╧п╩п╟ <п╦я│я┘_я└п╟п╧п╩> (п©я┐я┌я▄ п╬п©я─п╣п╢п╣п╩я▐п╣я┌я│я▐ п╬я┌п╫п╬я│п╦я┌п╣п╩я▄п╫п╬ п╨п╬п╫я└п╦пЁя┐я─п╟я├п╦п╬п╫п╫п╬пЁп╬ п©п╟я─п╟п╪п╣я┌я─п╟ "resource_base") п╦ п©я─п╣п╬п╠я─п╟п╥я┐п╣я┌ п╣пЁп╬ п╡ я┐п╨п╟п╥п╟п╫п╫я▀п╧ я└п╬я─п╪п╟я┌, я│п╬я┘я─п╟п╫я▐я▐ я─п╣п╥я┐п╩я▄я┌п╟я┌ п╡ <п╨п╬п╫_я└п╟п╧п╩>. п∙я│п╩п╦ п╥п╟п╢п╟п╫я▀ п╪п╟п╨я│п╦п╪п╟п╩я▄п╫п╟я▐ п╡я▀я│п╬я┌п╟ п╦ я┬п╦я─п╦п╫п╟, п╠п╬п╩я▄я┬п╦п╣ п╦п╥п╬п╠я─п╟п╤п╣п╫п╦я▐ п╠я┐п╢я┐я┌ я┐п╪п╣п╫я▄я┬п╣п╫я▀.
-п÷я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦, п╦п╫я│я┌я─я┐п╨я├п╦я▐ "<%!image ...%>" п╠я┐п╢п╣я┌ п╥п╟п╪п╣п╫п╣п╫п╟ п╫п╟ п╥п╫п╟я┤п╣п╫п╦п╣ <п╨п╬п╫_я└п╟п╧п╩>, п╦п╫п╟я┤п╣ - п╫п╟ п©я┐я│я┌я┐я▌ я│я┌я─п╬п╨я┐.
-
-<%copy:<п╦я│я┘_я└п╟п╧п╩> <п╨п╬п╫_я└п╟п╧п╩>%>
-п п╬п©п╦я─я┐п╣я┌ я└п╟п╧п╩ <п╦я│я┘_я└п╟п╧п╩> (п©я┐я┌я▄ п╬п©я─п╣п╢п╣п╩я▐п╣я┌я│я▐ п╬я┌п╫п╬я│п╦я┌п╣п╩я▄п╫п╬ п╨п╬п╫я└п╦пЁя┐я─п╟я├п╦п╬п╫п╫п╬пЁп╬ п©п╟я─п╟п╪п╣я┌я─п╟ "resource_base").
-п÷я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦, п╦п╫я│я┌я─я┐п╨я├п╦я▐ "<%!copy ...%>" п╠я┐п╢п╣я┌ п╥п╟п╪п╣п╫п╣п╫п╟ п╫п╟ п╥п╫п╟я┤п╣п╫п╦п╣ <п╨п╬п╫_я└п╟п╧п╩>, п╦п╫п╟я┤п╣ - п╫п╟ п©я┐я│я┌я┐я▌ я│я┌я─п╬п╨я┐.
-
-п▓я│я┌я─п╬п╣п╫п╫я▀п╣ п©п╣я─п╣п╪п╣п╫п╫я▀п╣:
-NUMBER - п©п╬я─я▐п╢п╨п╬п╡я▀п╧ п╫п╬п╪п╣я─ я│я┌я─п╬п╨п╦ я─п╣п╥я┐п╩я▄я┌п╟я┌п╟ п╡я▀п©п╬п╩п╫п╣п╫п╦я▐ п╥п╟п©я─п╬я│п╟.
-п╖я┌п╬п╠я▀ п╬п╠я─п╟я┌п╦я┌я▄я│я▐ п╨ п©п╣я─п╣п╪п╣п╫п╫п╬п╧ п╥п╟п©я─п╬я│п╟, п╦п╥ п╨п╬я┌п╬я─п╬пЁп╬ п╬п╠я─п╟п╠п╟я┌я▀п╡п╟п╣п╪я▀п╧ я┬п╟п╠п╩п╬п╫ п╠я▀п╩ п╡я▀п╥п╡п╟п╫ я│ п©п╬п╪п╬я┴я▄я▌ я└я┐п╫п╨я├п╦п╦ invoke, п©п╣я─п╣п╢ п╦п╪п╣п╫п╣п╪ п©п╣я─п╣п╪п╣п╫п╫п╬п╧ п╫я┐п╤п╫п╬ п╢п╬п╠п╟п╡п╦я┌я▄ "SUPER." (п╫п╟п©я─п╦п╪п╣я─: "SUPER.NUMBER").
-
-п÷я─п╦п╪п╣я─:
-п║п╩п╣п╢я┐я▌я┴п╟я▐ п╦п╫я│я┌я─я┐п╨я├п╦я▐ п©п╬п╩я┐я┤п╦я┌ п╥п╫п╟я┤п╣п╫п╦п╣ п╦п╥ я│я┌п╬п╩п╠я├п╟ name п╦ п╥п╟п╪п╣п╫п╦я┌ п╡ п╫п╣п╪ я│п©п╣я├п╦п╟п╩я▄п╫я▀п╣ я│п╦п╪п╡п╬п╩я▀:
-<%escape get:name%>
--- a/misc/biotopes/main.template	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<%!:
-  <%prepare:biotope_sql <%read\biotope.sql%>%>
-  <%prepare:photo_sql <%read\photo.sql%>%>
-  <%prepare:class_sql <%read\class.sql%>%>
-  <%prepare:plant_sql <%read\plant.sql%>%>
-
-  <%query:biotope_sql [%\<%write:<%db\code%>.xml <%include\biotope.template%>%> %]%>
-
-  <%write:classes.xml <%include\classes.template%>%>
-  <%write:plants.xml <%include\plants.template%>%>
-%>
--- a/misc/biotopes/photo.sql	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-SELECT * from photos WHERE biotope = ?
--- a/misc/biotopes/photo.template	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-    <ДчБчсЮпДьО num="<%number\%>" <%optional:прБчЮ="<%xml_escape db\authphoto%>" %>text="" 
-                file="<%xml_escape image:biotopephotos/<%db\photo%> images/<%super.db\code%>_<%number\%>.jpg jpg 300 300%>" 
-                big="<%xml_escape copy:biotopephotos/<%db\photo%> images/big/<%super.db\code%>_<%number\%>.jpg%>"/>
--- a/misc/biotopes/plant.sql	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-SELECT t1.*
-FROM biotopelist AS t1
-WHERE rusname AND Right(t1.rangcode, 2) <> '00'
--- a/misc/biotopes/plants.template	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-5"?>
-<ЮпАБущьО><%query:plant_sql [%\
-  <!-- rangcode: <%xml_escape db\rangcode%> -->
-  <ЮпАБущьу><%xml_escape db\rusname%></ЮпАБущьу>%]%>
-</ЮпАБущьО>
--- a/misc/biotopes/tema.properties	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-# Data source configuration
-resource          : jdbc:odbc:biotopes-data
-driver            : sun.jdbc.odbc.JdbcOdbcDriver
-
-# Base directory for images and files
-resource_base     : C:\\biotopes\\db
-
-# Template to start processing with
-main_template     : main.template
-
-# File encodings
-input_encoding    : ISO-8859-5
-output_encoding   : ISO-8859-5
-
-# Cache templates
-cache_read        : true
-
-# Output main_template parsing result to stderr
-#output            : stderr
-
-# File to output error messages (redirect stderr)
-#log               : tema.log
--- a/misc/manual-ru-old/index.html	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,370 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-          "DTD/xhtml1-transitional.dtd">
-
-<html>
-
-<head>
-  <title>п°п╟п╨я─п╬п©я─п╬я├п╣я│я│п╬я─ TEMA</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-</head>
-
-<body>
-<h1>п°п╟п╨я─п╬п©я─п╬я├п╣я│я│п╬я─ TEMA</h1>
-
-<p>п°п╟п╨я─п╬п©я─п╬я├п╣я│я│п╬я─ TEMA п╬п╠я─п╟п╠п╟я┌я▀п╡п╟п╣я┌ п╥п╟п╢п╟п╫п╫я▀п╣ я┬п╟п╠п╩п╬п╫я▀ я┌п╣п╨я│я┌п╬п╡я▀я┘ я└п╟п╧п╩п╬п╡ п╦
-п╥п╟п╪п╣п╫я▐п╣я┌ п╫п╟п╧п╢п╣п╫п╫я▀п╣ п╡ п╫п╦я┘ п╦п╫я│я┌я─я┐п╨я├п╦п╦ п╫п╟ я─п╣п╥я┐п╩я▄я┌п╟я┌я▀ п╦я┘ п╡я▀п©п╬п╩п╫п╣п╫п╦я▐.
-</p><p>
-п·я│п╬п╠п╣п╫п╫п╬я│я┌п╦:
-</p>
-<ul>
-  <li>п═п╟я│я┬п╦я─я▐п╣п╪п╬я│я┌я▄: п╡п╬п╥п╪п╬п╤п╫п╬ п╢п╦п╫п╟п╪п╦я┤п╣я│п╨п╦ п©п╬п╢п╨п╩я▌я┤п╟я┌я▄ п╫п╬п╡я▀п╣ я└я┐п╫п╨п╦п╦,
-  я─п╣п╟п╩п╦п╥п╬п╡п╟п╫п╫я▀п╣ п╡ п╡п╦п╢п╣ п╨п╩п╟я│я│п╬п╡ п╫п╟ Java.</li>
-  <li>п═п╟п╠п╬я┌п╟ я│ п╠п╟п╥п╟п╪п╦ п╢п╟п╫п╫я▀я┘: п╦я│п©п╬п╩я▄п╥п╬п╡п╟п╫п╦п╣ SQL-п╥п╟п©я─п╬я│п╬п╡ п╢п╩я▐ п©п╬п╩я┐я┤п╣п╫п╦я▐
-  п╢п╟п╫п╫я▀я┘.</li>
-  <li>п÷п╬я┌п╬я┤п╫п╟я▐ п╬п╠я─п╟п╠п╬я┌п╨п╟ п╢п╟п╫п╫я▀я┘: п╦п╫я│я┌я─я┐п╨я├п╦п╦ п╬п╠я─п╟п╠п╟я┌я▀п╡п╟я▌я┌я│я▐ п©п╬ п╪п╣я─п╣
-  я┤я┌п╣п╫п╦я▐ я┌п╣п╨я│я┌п╟ п╠п╣п╥ п╫п╣п╬п╠я┘п╬п╢п╦п╪п╬я│я┌п╦ п╥п╟пЁя─я┐п╥п╨п╦ я└п╟п╧п╩п╟ п╡ п╬п©п╣я─п╟я┌п╦п╡п╫я┐я▌ п©п╟п╪я▐я┌я▄
-  п╦ п╡я▀п©п╬п╩п╫п╣п╫п╦я▐ п©п╬п╩п╫п╬пЁп╬ я│п╦п╫я┌п╟п╨я│п╦я┤п╣я│п╨п╬пЁп╬ я─п╟п╥п╠п╬я─п╟.</li>
-</ul>
-
-<p><b>п╓п╬я─п╪п╟я┌ п╦п╫я│я┌я─я┐п╨я├п╦п╧</b></p>
-
-<blockquote>
-  <code>&lt;%<i>я│п©п╦я│п╬п╨_я└я┐п╫п╨я├п╦п╧</i>{:|\|`}<i>п╢п╟п╫п╫я▀п╣</i>%&gt;</code>  
-</blockquote>
-<p>
-пЁп╢п╣<br />
-
-<code><i>я│п©п╦я│п╬п╨_я└я┐п╫п╨я├п╦п╧</i></code> - я│п©п╦я│п╬п╨ п╦п╪п╣п╫ я└я┐п╫п╨я├п╦п╧, я─п╟п╥п╢п╣п╩п╣п╫п╫я▀я┘
-    п©я─п╬п╠п╣п╩п╟п╪п╦. п°п╬п╤п╣я┌ п╠я▀я┌я▄ п©я┐я│я┌я▀п╪.<br />
-<code><i>п╢п╟п╫п╫я▀п╣</i></code> - п╢п╟п╫п╫я▀п╣, п©п╣я─п╣п╢п╟п╡п╟п╣п╪я▀п╣ я└я┐п╫п╨я├п╦п╦.
-</p>
-
-<p><b>п╓п╬я─п╪п╟я┌ п╢п╟п╫п╫я▀я┘</b></p>
-
-<blockquote>
-  <code>
-    [<i>я│п©п╦я│п╬п╨_п╟я─пЁя┐п╪п╣п╫я┌п╬п╡</i>][<i>я┌п╣п╨я│я┌</i>]
-  </code>
-</blockquote>
-<p>
-пЁп╢п╣<br />
-
-<code><i>я│п©п╦я│п╬п╨_п╟я─пЁя┐п╪п╣п╫я┌п╬п╡</i></code> - я│п©п╦я│п╬п╨ п╟я─пЁя┐п╪п╣п╫я┌п╬п╡ я└я┐п╫п╨я├п╦п╦, я─п╟п╥п╢п╣п╩п╣п╫п╫я▀я┘ п©я─п╬п╠п╣п╩п╟п╪п╦.
-    п°п╬п╤п╣я┌ п╠я▀я┌я▄ п©я┐я│я┌я▀п╪.<br />
-<code><i>я┌п╣п╨я│я┌</i></code> - я┌п╣п╨я│я┌, п©п╣я─п╣п╢п╟п╡п╟п╣п╪я▀п╧ я└я┐п╫п╨я├п╦п╦ п╠п╣п╥ я─п╟п╥п╠п╦п╣п╫п╦я▐ п╫п╟ п╟я─пЁя┐п╪п╣п╫я┌я▀.
-    п°п╬п╤п╣я┌ п╠я▀я┌я▄ п©я┐я│я┌я▀п╪. п п╬п╩п╦я┤п╣я│я┌п╡п╬ п╟я─пЁя┐п╪п╣п╫я┌п╬п╡, п©п╬я│п╩п╣ п╨п╬я┌п╬я─п╬пЁп╬ я│п╩п╣п╢я┐п╣я┌
-    я┌п╣п╨я│я┌, п╥п╟п╡п╦я│п╦я┌ п╬я┌ я└я┐п╫п╨я├п╦п╦.
-</p><p>
-п═п╟п╥п╢п╣п╩п╦я┌п╣п╩я▄ п╪п╣п╤п╢я┐ я│п©п╦я│п╨п╬п╪ я└я┐п╫п╨я├п╦п╧ п╦ п╢п╟п╫п╫я▀п╪п╦ п╬п©я─п╣п╢п╣п╩я▐п╣я┌, п╨п╟п╨ п╢п╬п╩п╤п╫я▀
-п╬п╠я─п╟п╠п╟я┌я▀п╡п╟я┌я▄я│я▐ п╢п╟п╫п╫я▀п╣ я└я┐п╫п╨я├п╦п╦:
-</p><p>
-<code>:</code> - я─п╣п╨я┐я─я│п╦п╡п╫п╟я▐ п╬п╠я─п╟п╠п╬я┌п╨п╟,<br />
-<code>\</code> п╦п╩п╦ <code>`</code> - п©п╣я─п╣п╢п╟я┌я▄ п╠п╣п╥ п╬п╠я─п╟п╠п╬я┌п╨п╦.
-</p><p>
-п∙я│п╩п╦ п╡ я│п©п╦я│п╨п╣ я└я┐п╫п╨я├п╦п╧ п╥п╟п╢п╟п╫п╬ п╢п╡п╣ п╦ п╠п╬п╩п╣п╣ я└я┐п╫п╨я├п╦п╦, п╬п╫п╦ п╡я▀п©п╬п╩п╫я▐я▌я┌я│я▐,
-п╫п╟я┤п╦п╫п╟я▐ я│ п©п╬я│п╩п╣п╢п╫п╣п╧, я┌п╟п╨ я┤я┌п╬ п╨п╟п╤п╢п╟я▐ я└я┐п╫п╨я├п╦я▐ п©п╬п╩я┐я┤п╟п╣я┌ п╡ п╨п╟я┤п╣я│я┌п╡п╣ п╢п╟п╫п╫я▀я┘
-я─п╣п╥я┐п╩я▄я┌п╟я┌ п╡я▀п©п╬п╩п╫п╣п╫п╦я▐ я│п╩п╣п╢я┐я▌я┴п╣п╧ я└я┐п╫п╨я├п╦п╦.
-</p><p>
-п п╟п╤п╢п╟я▐ я└я┐п╫п╨я├п╦я▐ п╦п╪п╣п╣я┌ п╨п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟ - я├п╣п╩п╬п╣ я┤п╦я│п╩п╬. п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟
-п╦п╫я│я┌я─я┐п╨я├п╦п╦ - п╨п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟ п©п╣я─п╡п╬п╧ п╡ я│п©п╦я│п╨п╣ я└я┐п╫п╨я├п╦п╦. п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟,
-п©п╬п╩я┐я┤п╟п╣п╪я▀п╧ п©я─п╦ п╬п╠я─п╟п╠п╬я┌п╨п╣ я┌п╣п╨я│я┌п╟ - я│я┐п╪п╪п╟ п╨п╬п╢п╬п╡ п╡п╬п╥п╡я─п╟я┌п╟ п╬п╠я─п╟п╠п╬я┌п╟п╫п╫я▀я┘
-п╦п╫я│я┌я─я┐п╨я├п╦п╧ (п╨п╟п╨ п©я─п╟п╡п╦п╩п╬, я│п╪я▀я│п╩ я█я┌п╬пЁп╬ п╥п╫п╟я┤п╣п╫п╦я▐ - п╨п╬п╩п╦я┤п╣я│я┌п╡п╬ п╦п╫я│я┌я─я┐п╨я├п╦п╧,
-п╥п╟п╪п╣п╫п╣п╫п╫я▀я┘ п╫п╟ п╫п╣п©я┐я│я┌п╬п╧ я┌п╣п╨я│я┌).
-</p><p>
-п я─п╬п╪п╣ я│п╨п╬п╠п╬п╨ '&lt;', '&gt;', п╪п╬п╤п╫п╬ п╦я│п©п╬п╩я▄п╥п╬п╡п╟я┌я▄ я│п╨п╬п╠п╨п╦ '[', ']'.
-</p>
-
-
-<h2>п╓я┐п╫п╨я├п╦п╦</h2>
-
-<p><code><b>set</b></code></p>
-
-<table>
-<tr><td>п░я─пЁя┐п╪п╣п╫я┌я▀:</td>
-<td><i>п╦п╪я▐</i></td></tr>
-
-<tr><td>п╒п╣п╨я│я┌:</td>
-<td><i>п╥п╫п╟я┤п╣п╫п╦п╣</i></td></tr>
-
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td>
-<td>пёя│я┌п╟п╫п╟п╡п╩п╦п╡п╟п╣я┌ п╥п╫п╟я┤п╣п╫п╦п╣ п©п╣я─п╣п╪п╣п╫п╫п╬п╧ <i>п╦п╪я▐</i>.</td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td>
-<td><i>п╦п╪я▐</i></td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td>
-<td>1</td></tr>
-</table>
-
-<p><code><b>define</b></code></p>
-
-<table>
-<tr><td>п░я─пЁя┐п╪п╣п╫я┌я▀:</td>
-<td><i>п╦п╪я▐</i></td></tr>
-
-<tr><td>п╒п╣п╨я│я┌:</td>
-<td><i>я┬п╟п╠п╩п╬п╫</i></td></tr>
-
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td><td>п·п©я─п╣п╢п╣п╩я▐п╣я┌ п╫п╬п╡я┐я▌ я└я┐п╫п╨я├п╦я▌ <i>п╦п╪я▐</i>, п©я─п╦
-п╡я▀п╥п╬п╡п╣ п╨п╬я┌п╬я─п╬п╧ п╬п╠я─п╟п╠п╟я┌я▀п╡п╟п╣я┌я│я▐ <i>я┬п╟п╠п╩п╬п╫</i>. п÷я─п╦ п╬п╠я─п╟п╠п╬я┌п╨п╣ п╢п╬я│я┌я┐п©п╫я▀
-я└я┐п╫п╨я├п╦п╦ <code>nextarg</code> п╢п╩я▐ п©п╬п╩я┐я┤п╣п╫п╦я▐ п╬я┤п╣я─п╣п╢п╫п╬пЁп╬ п╟я─пЁя┐п╪п╣п╫я┌п╟
-п╡я▀п╥я▀п╡п╟п╣п╪п╬п╧ я└я┐п╫п╨я├п╦п╦ п╦ <code>data</code> п╢п╩я▐ п©п╬п╩я┐я┤п╣п╫п╦я▐ я┌п╣п╨я│я┌п╟.</td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td>
-<td><i>п╦п╪я▐</i></td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td>
-<td>1</td></tr>
-</table>
-
-<p><code><b>load</b></code></p>
-
-<table>
-<tr><td>п░я─пЁя┐п╪п╣п╫я┌я▀:</td>
-<td><i>п╦п╪я▐</i> <i>п╦п╪я▐_п╨п╩п╟я│я│п╟</i></td></tr>
-
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td>
-
-<td>п·п©я─п╣п╢п╣п╩я▐п╣я┌ п╫п╬п╡я┐я▌ я└я┐п╫п╨я├п╦я▌ <i>п╦п╪я▐</i>. п═п╣п╟п╩п╦п╥п╟я├п╦я▐ я└я┐п╫п╨я├п╦п╦ п╬п©я─п╣п╢п╣п╩п╣п╫п╟
-Java-п╨п╩п╟я│я│п╬п╪ <i>п╦п╪я▐_п╨п╩п╟я│я│п╟</i>, п╫п╟я│п╩п╣п╢я┐я▌я┴п╦п╪ п╨п╩п╟я│я│
-<code>kryshen.tema.Function</code>.</td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td>
-<td><i>п╦п╪я▐</i></td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td>
-<td>1</td></tr>
-</table>
-
-<p><code><b>prepare</b></code></p>
-
-<table>
-<tr><td>п░я─пЁя┐п╪п╣п╫я┌я▀:</td>
-<td><i>п╦п╪я▐</i></td></tr>
-
-<tr><td>п╒п╣п╨я│я┌:</td>
-<td><i>п╥п╟п©я─п╬я│</i></td></tr>
-
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td>
-<td>п÷п╬п╢пЁп╬я┌п╟п╡п╩п╦п╡п╟п╣я┌ SQL-п╥п╟п©я─п╬я│ <i>п╥п╟п©я─п╬я│</i> п╢п╩я▐ п╡я▀п©п╬п╩п╫п╣п╫п╦я▐, п╥п╟п©п╦я│я▀п╡п╟п╣я┌
-п©п╬п╢пЁп╬я┌п╬п╡п╩п╣п╫п╫я▀п╧ п╥п╟п©я─п╬я│ п╡ п©п╣я─п╣п╪п╣п╫п╫я┐я▌ <i>п╦п╪я▐</i>.</td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td>
-<td><i>п╦п╪я▐</i></td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td>
-<td>1</td></tr>
-</table>
-
-<p><code><b>query</b></code></p>
-
-<table>
-<tr><td>п░я─пЁя┐п╪п╣п╫я┌я▀:</td>
-<td><i>п╦п╪я▐_п╥п╟п©я─п╬я│п╟</i> <i>я┬п╟п╠п╩п╬п╫</i> <i>п©п╟я─п╟п╪1</i> ... <i>п©п╟я─п╟п╪N</i></td></tr>
-
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td>
-<td>п▓я▀п©п╬п╩п╫я▐п╣я┌ п╥п╟п©я─п╬я│ я│ п©п╟я─п╟п╪п╣я┌я─п╟п╪п╦, п©п╬п╢пЁп╬я┌п╬п╡п╩п╣п╫п╫я▀п╧ я│ п©п╬п╪п╬я┴я▄я▌ я└я┐п╫п╨я├п╦п╦
-prepare. п≈п╫п╟я┤п╣п╫п╦я▐ п©п╟я─п╟п╪п╣я┌я─п╬п╡ п©п╬п╢я│я┌п╟п╡п╩я▐я▌я┌я│я▐ п╡ п╥п╟п©я─п╬я│ п╡п╪п╣я│я┌п╬ я│п╦п╪п╡п╬п╩п╟
-'?'. п≈п╫п╟я┤п╣п╫п╦я▐ п©п╬п╩п╣п╧ п╬я┌п╡п╣я┌п╟ п╢п╬я│я┌я┐п©п╫я▀ я│ п©п╬п╪п╬я┴я▄я▌ я└я┐п╫п╨я├п╦п╦ <code>db</code>,
-п╨п╟п╨ п©п╣я─п╣п╪п╣п╫п╫я▀п╣ я┬п╟п╠п╩п╬п╫п╟ <i>я┬п╟п╠п╩п╬п╫</i>. п÷я─п╦ п╬п╠я─п╟п╠п╬я┌п╨п╦ я┬п╟п╠п╩п╬п╫п╟ я┌п╟п╨п╤п╣
-п╬п©я─п╣п╢п╣п╩я▐п╣я┌я│я▐ п©п╣я─п╣п╪п╣п╫п╫п╟я▐ <code>number</code>, я│п╬п╢п╣я─п╤п╟я┴п╟я▐ п╫п╬п╪п╣я─ я┌п╣п╨я┐я┴п╣п╧
-я│я┌я─п╬п╨п╦ п╬я┌п╡п╣я┌п╟.</td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td>
-<td>я─п╣п╥я┐п╩я▄я┌п╟я┌ п╬п╠я─п╟п╠п╬я┌п╨п╦ я┬п╟п╠п╩п╬п╫п╟ <i>я┬п╟п╠п╩п╬п╫</i> п╢п╩я▐ п╨п╟п╤п╢п╬п╧ я│я┌я─п╬п╨п╦
-п╬я┌п╡п╣я┌п╟.</td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td>
-<td>п п╬п╩п╦я┤п╣я│я┌п╡п╬ п©п╬п╩я┐я┤п╣п╫п╫я▀я┘ я│я┌я─п╬п╨ п╬я┌п╡п╣я┌п╟.</td></tr>
-</table>
-
-<p><code><b>optional</b></code></p>
-
-<table>
-<tr><td>п╒п╣п╨я│я┌:</td>
-<td><i>п╢п╟п╫п╫я▀п╣</i></td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td><td><i>п╢п╟п╫п╫я▀п╣</i>, п╣я│п╩п╦ п©я─п╦ п╬п╠я─п╟п╠п╬я┌п╨п╣ п╢п╟п╫п╫я▀я┘
-п╠я▀п╩ п©п╬п╩я┐я┤п╣п╫ п╨п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟ п╬я┌п╩п╦я┤п╫я▀п╧ п╬я┌ 0, п╦п╫п╟я┤п╣ - п©я┐я│я┌п╟я▐
-я│я┌я─п╬п╨п╟.</td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td>
-<td>1, п╣я│п╩п╦ я─п╣п╥я┐п╩я▄я┌п╟я┌ - п©я┐я│я┌п╟я▐ я│я┌я─п╬п╨п╟, 0 - п╦п╫п╟я┤п╣.</td></tr>
-</table>
-
-<p><code><b>image</b></code></p>
-
-<table>
-<tr><td>п░я─пЁя┐п╪п╣п╫я┌я▀:</td>
-<td><i>п╦я│я┘_я└п╟п╧п╩</i> <i>п╨п╬п╫_я└п╟п╧п╩</i> <i>я└п╬я─п╪п╟я┌</i> [<i>п╪п╟п╨я│_я┬п╦я─п╦п╫п╟</i>
-[<i>п╪п╟п╨я│_п╡я▀я│п╬я┌п╟</i>]]</td></tr>
-
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td>
-<td>п≈п╟пЁя─я┐п╤п╟п╣я┌ п╦п╥п╬п╠я─п╟п╤п╣п╫п╦п╣ п╦п╥ я└п╟п╧п╩п╟ <i>п╦я│я┘_я└п╟п╧п╩</i> (п©я┐я┌я▄ п╬п©я─п╣п╢п╣п╩я▐п╣я┌я│я▐
-п╬я┌п╫п╬я│п╦я┌п╣п╩я▄п╫п╬ п╨п╬п╫я└п╦пЁя┐я─п╟я├п╦п╬п╫п╫п╬пЁп╬ п©п╟я─п╟п╪п╣я┌я─п╟ "resource_base") п╦
-п©я─п╣п╬п╠я─п╟п╥я┐п╣я┌ п╣пЁп╬ п╡ я┐п╨п╟п╥п╟п╫п╫я▀п╧ я└п╬я─п╪п╟я┌, я│п╬я┘я─п╟п╫я▐я▐ я─п╣п╥я┐п╩я▄я┌п╟я┌ п╡
-<i>п╨п╬п╫_я└п╟п╧п╩</i>. п∙я│п╩п╦ п╥п╟п╢п╟п╫я▀ п╪п╟п╨я│п╦п╪п╟п╩я▄п╫п╟я▐ п╡я▀я│п╬я┌п╟ п╦ я┬п╦я─п╦п╫п╟, п╠п╬п╩я▄я┬п╦п╣
-п╦п╥п╬п╠я─п╟п╤п╣п╫п╦я▐ п╠я┐п╢я┐я┌ я┐п╪п╣п╫я▄я┬п╣п╫я▀.</td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td>
-<td><i>п╨п╬п╫_я└п╟п╧п╩</i> п©я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦, п©я┐я│я┌п╟я▐ я│я┌я─п╬п╨п╟ - п╦п╫п╟я┤п╣.</td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td>
-<td>1 п©я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦, 0 - п╦п╫п╟я┤п╣.</td></tr>
-</table>
-
-
-<p><code><b>copy</b></code></p>
-
-<table>
-<tr><td>п░я─пЁя┐п╪п╣п╫я┌я▀:</td><td><i>п╦я│я┘_я└п╟п╧п╩</i> <i>п╨п╬п╫_я└п╟п╧п╩</i></td></tr>
-
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td><td>п п╬п©п╦я─я┐п╣я┌ я└п╟п╧п╩ <i>п╦я│я┘_я└п╟п╧п╩</i> п╡ я└п╟п╧п╩
-<i>п╨п╬п╫_я└п╟п╧п╩</i> (п©я┐я┌я▄ <i>п╦я│я┘_я└п╟п╧п╩</i> п╬п©я─п╣п╢п╣п╩я▐п╣я┌я│я▐ п╬я┌п╫п╬я│п╦я┌п╣п╩я▄п╫п╬
-п╨п╬п╫я└п╦пЁя┐я─п╟я├п╦п╬п╫п╫п╬пЁп╬ п©п╟я─п╟п╪п╣я┌я─п╟ "resource_base").</td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td><td><i>п╨п╬п╫_я└п╟п╧п╩</i> п©я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦,
-п©я┐я│я┌п╟я▐ я│я┌я─п╬п╨п╟ - п╦п╫п╟я┤п╣.</td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td><td>1 п©я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦, 0 -
-п╦п╫п╟я┤п╣.</td></tr>
-</table>
-
-<p><code><b>write</b></code></p>
-
-<table>
-<tr><td>п░я─пЁя┐п╪п╣п╫я┌я▀:</td><td><i>п╦п╪я▐_я└п╟п╧п╩п╟</i></td></tr>
-
-<tr><td>п╒п╣п╨я│я┌:</td><td><i>п╢п╟п╫п╫я▀п╣</i></td></tr>
-
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td><td>п≈п╟п©п╦я│я▀п╡п╟п╣я┌ <i>п╢п╟п╫п╫я▀п╣</i> п╡ я└п╟п╧п╩
-<i>п╦я│я┘_я└п╟п╧п╩</i>.</td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td><td><i>п╨п╬п╫_я└п╟п╧п╩</i> п©я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦,
-п©я┐я│я┌п╟я▐ я│я┌я─п╬п╨п╟ - п╦п╫п╟я┤п╣.</td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td><td>1 п©я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦, 0 -
-п╦п╫п╟я┤п╣.</td></tr>
-</table>
-
-<p><code><b>read</b></code></p>
-
-<table>
-<tr><td>п╒п╣п╨я│я┌:</td><td><i>п╦п╪я▐_я└п╟п╧п╩п╟</i></td></tr>
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td><td>п╖п╦я┌п╟п╣я┌ я└п╟п╧п╩ <i>п╦п╪я▐_я└п╟п╧п╩п╟</i>.</td></tr>
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td><td>п©я─п╬я┤п╦я┌п╟п╫п╫я▀п╣ п╢п╟п╫п╫я▀п╣ п©я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦,
-  п©я┐я│я┌п╟я▐ я│я┌я─п╬п╨п╟ - п╦п╫п╟я┤п╣.</td></tr>
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td><td>1 п©я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦, 0 -
-п╦п╫п╟я┤п╣.</td></tr>
-</table>
-
-<p><code><b>include</b></code></p>
-
-<table>
-<tr><td>п╒п╣п╨я│я┌:</td><td><i>п╦п╪я▐_я└п╟п╧п╩п╟</i></td></tr>
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td><td>п╡п╨п╩я▌я┤п╟п╣я┌ я┬п╟п╠п╩п╬п╫ п╦п╥ я└п╟п╧п╩п╟
-<i>п╦п╪я▐_я└п╟п╧п╩п╟</i>.</td></tr>
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td><td>я─п╣п╥я┐п╩я▄я┌п╟я┌ п╬п╠я─п╟п╠п╬я┌п╨п╦ я┬п╟п╠п╩п╬п╫п╟.</td></tr>
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td><td>п╨п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟, п©п╬п╩я┐я┤п╣п╫п╫я▀п╧ п©я─п╦ п╬п╠я─п╟п╠п╬я┌п╨п╣
-я┬п╟п╠п╩п╬п╫п╟.</td></tr>
-</table>
-
-<p><code><b>!</b></code></p>
-
-<table>
-<tr><td>п╒п╣п╨я│я┌:</td><td><i>п╢п╟п╫п╫я▀п╣</i></td></tr>
-
-<tr><td>п■п╣п╧я│я┌п╡п╦п╣:</td><td>п╫п╣я┌.</td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td><td>п╫п╣я┌.</td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td><td>п╨п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟, п©п╬п╩я┐я┤п╣п╫п╫я▀п╧ п©я─п╦ п╬п╠я─п╟п╠п╬я┌п╨п╣
-я┌п╣п╨я│я┌п╟ п╢п╟п╫п╫я▀я┘.</td></tr>
-</table>
-
-<p><code><b>replace</b></code></p>
-
-<table>
-<tr><td>п░я─пЁя┐п╪п╣п╫я┌я▀:</td><td><i>я│я┌я─1</i> <i>я│я┌я─2</i></td></tr>
-
-<tr><td>п╒п╣п╨я│я┌:</td><td><i>п╢п╟п╫п╫я▀п╣</i></td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td><td>п╢п╟п╫п╫я▀п╣, я│ п╥п╟п╪п╣п╫п╣п╫п╫я▀п╪п╦ п╡я┘п╬п╤п╢п╣п╫п╦я▐п╪п╦ п©п╬п╢я│я┌я─п╬п╨п╦
-<i>я│я┌я─1</i> п╫п╟ <i>я│я┌я─2</i>.</td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td><td> п╨п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟, п©п╬п╩я┐я┤п╣п╫п╫я▀п╧ п©я─п╦ п╬п╠я─п╟п╠п╬я┌п╨п╣
-я┌п╣п╨я│я┌п╟ п╢п╟п╫п╫я▀я┘.</td></tr>
-</table>
-
-<p><code><b>xml_escape</b></code></p>
-
-<table>
-<tr><td>п╒п╣п╨я│я┌:</td><td><i>п╢п╟п╫п╫я▀п╣</i></td></tr>
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td><td>я┌п╣п╨я│я┌ <i>п╢п╟п╫п╫я▀п╣</i>, п╡ п╨п╬я┌п╬я─п╬п╪ я│п╦п╪п╡п╬п╩я▀
-'&amp;', '&lt;', '&gt;', '`', '\' п╥п╟п╪п╣п╫п╣п╫я▀ п╫п╟ я│п╬п╬я┌п╡п╣я┌я│я┌п╡я┐я▌я┴п╦п╣ я│я┐я┴п╫п╬я│я┌п╦
-XML.</td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td><td> п╨п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟, п©п╬п╩я┐я┤п╣п╫п╫я▀п╧ п©я─п╦ п╬п╠я─п╟п╠п╬я┌п╨п╣
-я┌п╣п╨я│я┌п╟ п╢п╟п╫п╫я▀я┘.</td></tr>
-</table>
-
-<p><code><b>xml_cdata</b></code></p>
-
-<table>
-<tr><td>п╒п╣п╨я│я┌:</td><td><i>п╢п╟п╫п╫я▀п╣</i></td></tr>
-
-<tr><td>п═п╣п╥я┐п╩я▄я┌п╟я┌:</td><td>п╢п╟п╫п╫я▀п╣ п╡ п╡п╦п╢п╣ п╠п╩п╬п╨п╟ XML CDATA.</td></tr>
-
-<tr><td>п п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟:</td><td> п╨п╬п╢ п╡п╬п╥п╡я─п╟я┌п╟, п©п╬п╩я┐я┤п╣п╫п╫я▀п╧ п©я─п╦ п╬п╠я─п╟п╠п╬я┌п╨п╣
-я┌п╣п╨я│я┌п╟ п╢п╟п╫п╫я▀я┘.  </td></tr>
-</table>
-
-<p>
-п°п╟п╨я─п╬п©я─п╬я├п╣я│я│п╬я─ TEMA я─п╟я│я┬п╦я─я▐п╣п╪: п╡п╬п╥п╪п╬п╤п╫п╬ п╢п╬п╠п╟п╡п╩п╣п╫п╦п╣ п╡ я│п╦я│я┌п╣п╪я┐ п╫п╬п╡я▀я┘
-я└я┐п╫п╨я├п╦п╧, я─п╣п╟п╩п╦п╥п╬п╡п╟п╫п╫я▀я┘ п╡ п╡п╦п╢п╣ п╨п╩п╟я│я│п╬п╡ п╫п╟ я▐п╥я▀п╨п╣ Java.
-</p>
-
-<h2>п≈п╟п©я┐я│п╨</h2>
-
-<p>java -jar tema.jar [<i>п╬п©я├п╦п╦</i>]
-</p><p>
-п·п©я├п╦п╦:
-</p>
-<table>
-<tr><td>-d[emo]</td><td>п■п╣п╪п╬п╫я│я┌я─п╟я├п╦п╬п╫п╫я▀п╧ я─п╣п╤п╦п╪</td></tr>
-<tr><td>-v[ersion]</td><td>п▓я▀п╡п╬п╢ п╡п╣я─я│п╦п╦</td></tr>
-<tr><td>-h[help] -u[sage]</td><td>п▓я▀п╡п╬п╢ я│п©я─п╟п╡п╨п╦</td></tr>
-</table>
-
-<p>
-п÷я─п╦ п╥п╟п©я┐я│п╨п╣ я┤п╦я┌п╟п╣я┌я│я▐ я└п╟п╧п╩ "tema.properties" п╦п╥ я┌п╣п╨я┐я┴п╣пЁп╬ п╨п╟я┌п╟п╩п╬пЁп╟.<br />
-п÷я─п╦п╪п╣я─ я└п╟п╧п╩п╟ "tema.properties":
-</p>
-
-<pre>
-# п²п╟я│я┌я─п╬п╧п╨п╟ п╦я│я┌п╬я┤п╫п╦п╨п╟ п╢п╟п╫п╫я▀я┘
-# resource          : jdbc:odbc:database
-# driver            : sun.jdbc.odbc.JdbcOdbcDriver
-
-# п▒п╟п╥п╬п╡я▀п╧ п╨п╟я┌п╟п╩п╬пЁ я─п╣я│я┐я─я│п╬п╡
-# resource_base     : .
-
-# п╗п╟п╠п╩п╬п╫, я│ п╨п╬я┌п╬я─п╬пЁп╬ п╫п╟я┤п╦п╫п╟п╣я┌я│я▐ п╬п╠я─п╟п╠п╬я┌п╨п╟
-main_template     : main.template
-
-# п п╬п╢п╦я─п╬п╡п╨п╦ я└п╟п╧п╩п╬п╡
-# input_encoding    : UTF-8
-# output_encoding   : UTF-8
-
-# п я█я┬п╦я─п╬п╡п╟п╫п╦п╣ я┬п╟п╠п╩п╬п╫п╬п╡
-# cache_read        : true
-
-# п▓я▀п╡п╬п╢ я─п╣п╥я┐п╩я▄я┌п╟я┌п╟ я─п╟п╥п╠п╬я─п╟ я┬п╟п╠п╩п╬п╫п╟ main.template п╡ stderr
-# output            : stderr
-
-# п▓я▀п╡п╬п╢ я│п╬п╬п╠я┴п╣п╫п╦п╧ п╬п╠ п╬я┬п╦п╠п╨п╟я┘ п╡ я└п╟п╧п╩
-# log               : dbreader.log
-</pre>
-
-</body>
-</html>
--- a/misc/util/header	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-/*
- *  Copyright 2006-2009 Mikhail Kryshen
- *
- *  This file is part of Tema.
- *
- *  Tema is free software: you can redistribute it and/or modify it
- *  under the terms of the GNU Lesser General Public License as
- *  published by the Free Software Foundation, either version 3 of the
- *  License, or (at your option) any later version.
- *
- *  Tema is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser General Public License for more details.
- *
- *  You should have received a copy of the 
- *  GNU Lesser General Public License along with Tema.  
- *  If not, see <http://www.gnu.org/licenses/>.
- */
--- a/misc/util/header.gpl	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-/*
- *  Copyright (C) 2006, 2007, 2008 Mikhail Kryshen
- *
- *  This file is part of Tema.
- *
- *  Tema is free software: you can redistribute it and/or modify it
- *  under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  Tema is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with Tema.  If not, see <http://www.gnu.org/licenses/>.
- *
- *  $Id: header.gpl,v 1.1 2008/02/16 16:56:34 mikhail Exp $
- */
--- a/misc/util/update_headers.pl	Fri May 15 03:07:16 2009 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#!/usr/bin/perl
-
-use File::Find;
-
-undef $/;
-
-my $src = "../../src";
-my $header_file = "header";
-
-open (FILE, "$header_file");
-my $header = <FILE>;
-close(FILE);
-
-find (\&update_header, $src);
-
-sub update_header
-{
-   my $code;
-   
-   if ( $File::Find::name !~ /^.*\.java$/ )
-   {
-     return;
-   }
-
-   print $File::Find::name."\n";   
-   open(FILE, "$_") or die "error opening file";
-  
-   $code = <FILE>;
-   $code =~ s|(^[[:space:]]*/\*.*?\*/[[:space:]]*?\n\|^)|$header|s;
-   
-   close(FILE);
-
-   open(FILE, ">$_") or die "error opening file";
-   print FILE $code;
-   close(FILE);
-}