Class DynamicCodeDao

java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.bgbilling.common.dao.AbstractDaoConstant
ru.bitel.bgbilling.kernel.dynamic.server.dao.DynamicCodeDao

public class DynamicCodeDao extends ru.bitel.bgbilling.common.dao.AbstractDaoConstant
DAO для низкоуровневой работы с динамически загружаемым кодом. Не рекомендуется для использования напрямую.
See Also:
  • Field Summary

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

    Fields inherited from class ru.bitel.bgbilling.common.dao.AbstractDaoConstant

    con, ERROR, fields, moduleId, SQL_ALL, SQL_AND, SQL_DELETE, SQL_DISTINCT, SQL_EQ, SQL_EQCS, SQL_FROM, SQL_GROUP, SQL_IN, SQL_INSERT, SQL_JOIN, SQL_LEFT_JOIN, SQL_LIMIT, SQL_NOT_IN, SQL_ON, SQL_ORDER, SQL_SELECT, SQL_SET, SQL_UPDATE, SQL_VALUES, SQL_WHERE, tableName
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    Делает бэкап исходника и удаляет его.
    void
     
    void
    Удаляет записи о данном классе из таблиц script_classes и script_classes_ifaces
    static void
    Удаляет резервную копию исходников
    Возвращает список загруженных классов, которые реализуют заданный интерфейс.
    List<Pair<String,byte[]>>
    Получить все скомпилированные классы из БД, в том числе и анонимные.
    byte[]
    getClassData(String className)
    Возвращает скомпилированный байт-код класса из БД.
    static File
    getClassFile(String className)
    Возвращает File, соответствующий файлу с исходным кодом указанного класа.
    static String
    Возвращает исходный код скрипта, считанный из файла.
    Возвращает список всех классов и ресурсов.
    static final String
     
    static void
    Восстанавливает код класса из сохраненной копии и удаляет её.
    void
    updateClassData(String className, byte[] data, long lastModified)
    Сохраняет в БД скомпилированный класс synchronized, так как 2 соыбтия одновременно могут сохранить один и тот же класс
    void
    Обновляет информацию об интерфейсах, которые имплементирует класс.
    static void
    updateClassSource(String className, String data)
    Сохраняет исходный код класса на диск в соответствующий файл.

    Methods inherited from class ru.bitel.bgbilling.common.dao.AbstractDaoConstant

    getPeriod, getPlaceholders, getSQLOrder, getSQLOrderFields, getTableName, psSetDate, psSetDateOrNull, psSetInt, psSetIntOrNull, psSetPeriod, psSetString, psSetStringOrNull, psSetTimestampOrNull, queryAndIn, setStatementParam, sqlDelete, sqlDeleteBatch, sqlInsert, sqlInsertBatch, sqlInsertGetId, sqlInsertGetLongId, sqlInsertOnDuplicateKeyUpdate, sqlInsertSelect, sqlInsertUpdateById, sqlSelectCountAsInt, sqlUpdate, sqlUpdateBatch

    Methods inherited from class ru.bitel.bgbilling.kernel.base.server.logger.BGLogger

    error, error, error, getLogger, logError, logError, warn

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • TABLE_SCRIPT_CLASSES

      public static final String TABLE_SCRIPT_CLASSES
      See Also:
    • TABLE_SCRIPT_CLASSES_IFACES

      public static final String TABLE_SCRIPT_CLASSES_IFACES
      See Also:
    • SOURCE_ENCODING

      public static final String SOURCE_ENCODING
      See Also:
    • 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:
      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 SQLException
      Сохраняет в БД скомпилированный класс synchronized, так как 2 соыбтия одновременно могут сохранить один и тот же класс
      Parameters:
      className - имя класса
      data - скомпилированный класс
      lastModified -
      Throws:
      SQLException
    • 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:
      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 SQLException
      Обновляет информацию об интерфейсах, которые имплементирует класс.
      Parameters:
      clazz - имя класса
      Throws:
      SQLException
    • 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 SQLException
      Удаляет записи о данном классе из таблиц script_classes и script_classes_ifaces
      Parameters:
      className - имя класса
      Throws:
      SQLException
    • clearTables

      public void clearTables() throws SQLException
      Throws:
      SQLException
    • getClassData

      public List<Pair<String,byte[]>> getClassData() throws SQLException
      Получить все скомпилированные классы из БД, в том числе и анонимные.
      Returns:
      Throws:
      SQLException