ru.bitel.bgbilling.kernel.dynamic.server.bean

## Class DynamicCodeDao

- java.lang.Object
- - ru.bitel.bgbilling.kernel.dynamic.server.bean.DynamicCodeDao

-     public class DynamicCodeDao
      extends java.lang.Object

  DAO для низкоуровневой работы с динамически загружаемым кодом. Не рекомендуется для использования напрямую.
  Author:
    pechenie
  See Also:
    `DynamicCodeService}`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.util.regex.Pattern` | `RESOURCE_EXT_REGEXP_BLACKLIST` расширения (ресурсов) которые будут совсем игнорироваться, расширения это всё после первой точки: rep.xml, bak, bak.666, java.bak, java.bak.666
    `static java.lang.String` | `SOURCE_ENCODING`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DynamicCodeDao(java.sql.Connection con)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `backupAndDelete(java.lang.String className)` Делает бэкап исходника и удаляет его.
    `void` | `clearTables()`
    `void` | `deleteClassFromDb(java.lang.String className)` Удаляет записи о данном классе из таблиц script_classes и script_classes_ifaces
    `static void` | `deleteSourcesBackup(java.lang.String className)` Удаляет резервную копию исходников
    `java.util.List<java.lang.String>` | `getActualClassesByInterface(java.lang.String interfaceName)` Возвращает список загруженных классов, которые реализуют заданный интерфейс.
    `byte[]` | `getClassData(java.lang.String className)` Возвращает скомпилированный байт-код класса из БД.
    `static java.io.File` | `getClassFile(java.lang.String className)` Возвращает File, соответствующий файлу с исходным кодом указанного класа.
    `static java.lang.String` | `getClassSource(java.lang.String className)` Возвращает исходный код скрипта, считанный из файла.
    `java.util.List<DynamicClass>` | `getDynamicClasses()` Возвращает список всех классов и ресурсов.
    `static java.lang.String` | `getScriptsDir()`
    `static void` | `restoreSourcesFromBackup(java.lang.String className)` Восстанавливает код класса из сохраненной копии и удаляет её.
    `void` | `updateClassData(java.lang.String className, byte[] data, long lastModified)` Сохраняет в БД скомпилированный класс synchronized, так как 2 соыбтия одновременно могут сохранить один и тот же класс
    `void` | `updateClassInterfaces(java.lang.Class<?> clazz)` Обновляет информацию об интерфейсах, которые имплементирует класс.
    `static void` | `updateClassSource(java.lang.String className, javax.activation.DataHandler data)` Сохраняет исходный код класса на диск в соответствующий файл.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### SOURCE_ENCODING

          public static final java.lang.String SOURCE_ENCODING

      See Also:
        Constant Field Values

    - #### RESOURCE_EXT_REGEXP_BLACKLIST

          public static final java.util.regex.Pattern RESOURCE_EXT_REGEXP_BLACKLIST

      расширения (ресурсов) которые будут совсем игнорироваться, расширения это всё после первой точки: rep.xml, bak, bak.666, java.bak, java.bak.666

  - ### Constructor Detail

    - #### DynamicCodeDao

          public DynamicCodeDao(java.sql.Connection con)

  - ### Method Detail

    - #### getScriptsDir

          public static final java.lang.String getScriptsDir()

    - #### getClassData

          public byte[] getClassData(java.lang.String className)
                              throws ru.bitel.bgbilling.common.BGException

      Возвращает скомпилированный байт-код класса из БД.
      Parameters:
        `className` - имя класса
      Returns:
        байт-код
      Throws:
        `ru.bitel.bgbilling.common.BGException` - ошибки (в т.ч. ошибки БД)

    - #### getClassSource

          public static java.lang.String getClassSource(java.lang.String className)
                                                 throws ru.bitel.bgbilling.common.BGException

      Возвращает исходный код скрипта, считанный из файла.
      Parameters:
        `className` - имя класса
      Returns:
        исходный код
      Throws:
        `ru.bitel.bgbilling.common.BGException` - ошибки

    - #### updateClassData

          public void updateClassData(java.lang.String className,
                                      byte[] data,
                                      long lastModified)
                               throws ru.bitel.bgbilling.common.BGException

      Сохраняет в БД скомпилированный класс synchronized, так как 2 соыбтия одновременно могут сохранить один и тот же класс
      Parameters:
        `className` - имя класса
        `data` - скомпилированный класс
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateClassSource

          public static void updateClassSource(java.lang.String className,
                                               javax.activation.DataHandler data)
                                        throws ru.bitel.bgbilling.common.BGException

      Сохраняет исходный код класса на диск в соответствующий файл. Сохраняет резервную копию изменяемого исходного кода для возможного отката изменений.
      Parameters:
        `className` - имя класса
        `code` - исходный код
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### restoreSourcesFromBackup

          public static void restoreSourcesFromBackup(java.lang.String className)
                                               throws ru.bitel.bgbilling.common.BGException

      Восстанавливает код класса из сохраненной копии и удаляет её.
      Parameters:
        `className` - имя класса
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### deleteSourcesBackup

          public static void deleteSourcesBackup(java.lang.String className)

      Удаляет резервную копию исходников
      Parameters:
        `className` - имя класса

    - #### getDynamicClasses

          public java.util.List<DynamicClass> getDynamicClasses()
                                                         throws ru.bitel.bgbilling.common.BGException

      Возвращает список всех классов и ресурсов.
      Returns:
        список классов
      Throws:
        `ru.bitel.bgbilling.common.BGException` - ошибки.

    - #### getClassFile

          public static java.io.File getClassFile(java.lang.String className)

      Возвращает File, соответствующий файлу с исходным кодом указанного класа. Для ресурсов расширение указывается через двоеточие ("classname:xml" или "classname:rep:xml"), если эта часть не задана - то это java-класс.
      Parameters:
        `className` - имя класса (или ресурса с расширением)
      Returns:
        file файл

    - #### updateClassInterfaces

          public void updateClassInterfaces(java.lang.Class<?> clazz)
                                     throws ru.bitel.bgbilling.common.BGException

      Обновляет информацию об интерфейсах, которые имплементирует класс.
      Parameters:
        `currentClassName` - имя класса
        `interfaces` - интерфейсы
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getActualClassesByInterface

          public java.util.List<java.lang.String> getActualClassesByInterface(java.lang.String interfaceName)
                                                                       throws ru.bitel.bgbilling.common.BGException

      Возвращает список загруженных классов, которые реализуют заданный интерфейс.
      Parameters:
        `interfaceName` - имя интерфейса
      Returns:
        список классов
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### backupAndDelete

          public static void backupAndDelete(java.lang.String className)
                                      throws ru.bitel.bgbilling.common.BGException

      Делает бэкап исходника и удаляет его.
      Parameters:
        `className` - имя класса
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### deleteClassFromDb

          public void deleteClassFromDb(java.lang.String className)
                                 throws ru.bitel.bgbilling.common.BGException

      Удаляет записи о данном классе из таблиц script_classes и script_classes_ifaces
      Parameters:
        `className` - имя класса
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### clearTables

          public void clearTables()
                           throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`