Package 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 для низкоуровневой работы с динамически загружаемым кодом. Не рекомендуется для использования напрямую.

- ## Field Summary

  Fields
  Modifier and Type | Field | 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 | Description
  --- | ---
  `DynamicCodeDao​(java.sql.Connection con)` |

- ## Method Summary

  Modifier and Type | Method | 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)` | Возвращает список загруженных классов, которые реализуют заданный интерфейс.
  `java.util.List<Pair<java.lang.String,​byte[]>>` | `getClassData()` | Получить все скомпилированные классы из БД, в том числе и анонимные.
  `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 Details

  - ### 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 Details

  - ### DynamicCodeDao

    public DynamicCodeDao​(java.sql.Connection con)

- ## Method Details

  - ### 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` - имя класса
      `data` - исходный код
    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:
      `clazz` - имя класса
    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`

  - ### getClassData

    public java.util.List<Pair<java.lang.String,​byte[]>> getClassData() throws ru.bitel.bgbilling.common.BGException
    Получить все скомпилированные классы из БД, в том числе и анонимные.
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`