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

See Also:
  - `DynamicCodeService`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final Pattern`
  `RESOURCE_REGEXP_BLACKLIST`
  регекспы имён (ресурсов) которые будут игнорироваться при обходе файлов в дин.коде: ***.bak, ***.bak.666
  `static final String`
  `SOURCE_ENCODING`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DynamicCodeDao(Connection con)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static void`
  `backupAndDelete(String className)`
  Делает бэкап исходника и удаляет его.
  `void`
  `clearTables()`
  `void`
  `deleteClassFromDb(String className)`
  Удаляет записи о данном классе из таблиц script_classes и script_classes_ifaces
  `static void`
  `deleteSourcesBackup(String className)`
  Удаляет резервную копию исходников
  `List<String>`
  `getActualClassesByInterface(String interfaceName)`
  Возвращает список загруженных классов, которые реализуют заданный интерфейс.
  `List<Pair<String,byte[]>>`
  `getClassData()`
  Получить все скомпилированные классы из БД, в том числе и анонимные.
  `byte[]`
  `getClassData(String className)`
  Возвращает скомпилированный байт-код класса из БД.
  `static File`
  `getClassFile(String className)`
  Возвращает File, соответствующий файлу с исходным кодом указанного класа.
  `static String`
  `getClassSource(String className)`
  Возвращает исходный код скрипта, считанный из файла.
  `List<DynamicClass>`
  `getDynamicClasses()`
  Возвращает список всех классов и ресурсов.
  `static final String`
  `getScriptsDir()`
  `static void`
  `restoreSourcesFromBackup(String className)`
  Восстанавливает код класса из сохраненной копии и удаляет её.
  `void`
  `updateClassData(String className, byte[] data, long lastModified)`
  Сохраняет в БД скомпилированный класс synchronized, так как 2 соыбтия одновременно могут сохранить один и тот же класс
  `void`
  `updateClassInterfaces(Class<?> clazz)`
  Обновляет информацию об интерфейсах, которые имплементирует класс.
  `static void`
  `updateClassSource(String className, String 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 String SOURCE_ENCODING
    See Also:
      - Constant Field Values

  - ### RESOURCE_REGEXP_BLACKLIST

    public static final Pattern RESOURCE_REGEXP_BLACKLIST
    регекспы имён (ресурсов) которые будут игнорироваться при обходе файлов в дин.коде: ***.bak, ***.bak.666

- ## Constructor Details

  - ### DynamicCodeDao

    public DynamicCodeDao(Connection con)

- ## Method Details

  - ### getScriptsDir

    public static final String getScriptsDir()

  - ### getClassData

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

  - ### getClassSource

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

  - ### updateClassData

    public void updateClassData(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(String className, String data) throws ru.bitel.bgbilling.common.BGException
    Сохраняет исходный код класса на диск в соответствующий файл. Сохраняет резервную копию изменяемого исходного кода для возможного отката изменений.
    Parameters:
      `className` - имя класса
      `data` - исходный код
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### restoreSourcesFromBackup

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

  - ### deleteSourcesBackup

    public static void deleteSourcesBackup(String className)
    Удаляет резервную копию исходников
    Parameters:
      `className` - имя класса

  - ### getDynamicClasses

    public List<DynamicClass> getDynamicClasses() throws Exception
    Возвращает список всех классов и ресурсов.
    Returns:
      список классов
    Throws:
      `ru.bitel.bgbilling.common.BGException` - ошибки.
      `Exception`

  - ### getClassFile

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

  - ### updateClassInterfaces

    public void updateClassInterfaces(Class<?> clazz) throws ru.bitel.bgbilling.common.BGException
    Обновляет информацию об интерфейсах, которые имплементирует класс.
    Parameters:
      `clazz` - имя класса
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getActualClassesByInterface

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

  - ### backupAndDelete

    public static void backupAndDelete(String className) throws ru.bitel.bgbilling.common.BGException
    Делает бэкап исходника и удаляет его.
    Parameters:
      `className` - имя класса
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### deleteClassFromDb

    public void deleteClassFromDb(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 List<Pair<String,byte[]>> getClassData() throws ru.bitel.bgbilling.common.BGException
    Получить все скомпилированные классы из БД, в том числе и анонимные.
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`