Package ru.bitel.bgbilling.server.util

# Class ServerUtils

java.lang.Object
ru.bitel.bgbilling.server.util.ServerUtils

public class ServerUtils extends Object
Серверный утилс. Работа с соединениями с БД. Также содержит методы импортируемые в xslt-шаблонах.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ServerUtils()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static List<String>`
  `addItemsFromRS(Connection con, XMLStreamWriter whereAdd, String table, String keyColumn, String keyValue, String retColumn, boolean dateFilter, String date1, String date2)`
  `static List<String>`
  `addItemsFromRS(Connection con, XMLStreamWriter whereAdd, String table, String keyColumn, String keyValue, String retColumn, boolean dateFilter, String date1, String date2, String joins)`
  `static List<String>`
  `addItemsFromRS(Connection con, Element whereAdd, String table, String keyColumn, String keyValue, String retColumn, boolean dateFilter, String date1, String date2)`
  `static List<String>`
  `addItemsFromRS(Connection con, Element whereAdd, String table, String keyColumn, String keyValue, String retColumn, boolean dateFilter, String date1, String date2, String joins)`
  `static void`
  `addNoCache(jakarta.servlet.http.HttpServletResponse response)`
  `static void`
  `changeLastModificationTime(Connection con, String param)`
  `static void`
  `checkAndCreatePeriodicTableName(Connection con, String tableName, String createQuery)`
  Функция берет имя таблицы(xxxx) из xxxx_mid_yyyyMM и создает ее
  `static void`
  `checkPeriod(Date date1, Date date2)`
  проверка как в старых экшенах, чтобы date2>=date1 или одна их них null, внимание: допускается date1=null
  `static void`
  `checkTable(Connection con, String tableName, String createQuery)`
  проверка наличия таблицы и создание ее если нет для месячных таблиц желательно использовать @ru.bitel.bgbilling.server.util.DefaultServerSetup.checkModuleMonthTableName
  `static final void`
  `closeConnection(Connection con)`
  Безопасное закрытие одного соединения с БД.
  `static final void`
  `closeConnection(Connection... con)`
  Безопасное закрытие одного или нескольких соединений с БД.
  `static final void`
  `closeConnection(Connection con, Connection conSlave)`
  Безопасное закрытие одного или двух соединений с БД.
  `static boolean`
  `columnExist(Connection con, String table, String column)`
  `static final void`
  `commitConnection(Connection con)`
  Каммит одного соединения с БД.
  `static void`
  `createDirectoriesOnFTP(org.apache.commons.net.ftp.FTPClient ftpConnect, String pathOnFTP)`
  Разбивает переданный путь по / , затем по каждой директории проверяет существует ли она, если нет, то создаёт
  `static String`
  `dateToString(String source, String inPattern, String outPattern)`
  `static void`
  `deleteDir(File dirPath)`
  `static List<String>`
  `deleteRowsFromTable(Connection con, String table, String keyColumn, String keyValue, String retColumn)`
  `static void`
  `dropExistColumn(Connection con, String table, String column)`
  `static final void`
  `dropExistTable(Connection con, String tableName)`
  `static String`
  `formatNumber(Number value, String formatPattern)`
  Используется XSLT скриптами в качестве расширения.
  `static int`
  `foundRows(Connection con)`
  `static Map<String,byte[]>`
  `getEntriesFromZip(ZipInputStream zis, String mask)`
  `static Map<String,byte[]>`
  `getFileEntriesFromZipByPrefix(ZipInputStream zis, String prefix)`
  `static Calendar`
  `getLastModificationTime(Connection con, String param)`
  `static String`
  `getModuleMonthDayTableName(String name, Date time, int moduleId)`
  Вернет name_mid_yyyyMMdd</>
  `static String`
  `getModuleMonthTableName(String name, LocalDate time, int moduleId)`
  `static String`
  `getModuleMonthTableName(String name, Date time, int moduleId)`
  Функция выдает название помесячной таблицы на основании префикса, календаря с месяцем и кода модуля
  name_mid_yyyyMM</>
  `static String`
  `getModuleTableName(String name, int mid)`
  Функция выдает название таблицы на основании префикса и кода модуля name_mid</>
  `static String`
  `getMonthTableName(String name, Date time)`
  Вернет name_yyyyMM</>
  `static String`
  `getQuestions(int count)`
  Получаем строку вида ?
  `static List<List<Integer>>`
  `getRanges(int gid, String range)`
  Парсит конфиги вида 1-10;12;20-4096 добавляем их парамми. для одного числа делает дублирование
  `static String`
  `getServerHome()`
  общий код в серверах - получает полный путь до корня сервера (там где находится каталог data итд)
  `static String`
  `getSetupValue(Connection con, String name)`
  `static String`
  `getSetupValue(Connection con, String name, String defaultValue)`
  Возвращает данные из таблицы setup
  `static BufferedReader`
  `getSocketIn(Socket socket)`
  `static PrintWriter`
  `getSocketOut(Socket socket)`
  `static int`
  `lastInsertId(Connection con)`
  `static int`
  `lastInsertId(PreparedStatement ps)`
  `static long`
  `lastInsertLongId(PreparedStatement ps)`
  `static void`
  `prepareElementToSerialize(Node el)`
  `static void`
  `recycle(Object... oo)`
  `static void`
  `removeSetupValue(Connection con, String name)`
  `static String`
  `replace(String value, String from, String to)`
  Используется XSLT скриптами в качестве расширения.
  `static void`
  `resultSetToXML(ResultSet rs, XMLStreamWriter whereAdd, String table)`
  `static void`
  `resultSetToXML(ResultSet rs, Element whereAdd, String table)`
  сериализует таблицу в XML елемент
  `static final void`
  `setAutoCommit(Connection con, boolean auto)`
  `static void`
  `setSetupValue(Connection con, String name, String value)`
  `static boolean`
  `tableExists(Connection con, String table)`
  Проверка на существование таблицы в БД с периодической (раз в час) чисткой тех к которым за последний час не было обращений
  `static String`
  `upd5(String doc1, String doc2, String date1, String date2)`
  Используется XSLT скриптами в качестве расширения.
  `static final String`
  `uptimeStatus(Date startTime)`
  Сстатус uptime чего либо.
  `static String`
  `urldecode(String value)`
  Декодирование mime данных в урлах, НЕ декодирование урлов целиком, обратная к urlencode.
  `static String`
  `urlencode(String value)`
  Кодирование mime данных в урлах (в x-www-form-urlencoded), НЕ кодирование урлов целиком.
  `static String`
  `valueOrDefault(String value, String defaultValue)`
  Используется XSLT скриптами в качестве расширения.

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

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

- ## Constructor Details

  - ### ServerUtils

    public ServerUtils()

- ## Method Details

  - ### tableExists

    public static boolean tableExists(Connection con, String table)
    Проверка на существование таблицы в БД с периодической (раз в час) чисткой тех к которым за последний час не было обращений
    Parameters:
      `con` - объект доступа к БД
      `tableName` - имя проверяемой таблицы
    Returns:
      true - таблица существует, false - таблица не существует или нет доступа к БД
    Throws:
      `SQLException` - если возникают проблемы с доступом к БД

  - ### columnExist

    public static boolean columnExist(Connection con, String table, String column)

  - ### dropExistColumn

    public static void dropExistColumn(Connection con, String table, String column) throws SQLException
    Throws:
      `SQLException`

  - ### addItemsFromRS

    public static List<String> addItemsFromRS(Connection con, Element whereAdd, String table, String keyColumn, String keyValue, String retColumn, boolean dateFilter, String date1, String date2) throws SQLException, XMLStreamException
    Throws:
      `SQLException`
      `XMLStreamException`

  - ### addItemsFromRS

    public static List<String> addItemsFromRS(Connection con, Element whereAdd, String table, String keyColumn, String keyValue, String retColumn, boolean dateFilter, String date1, String date2, String joins) throws SQLException, XMLStreamException
    Throws:
      `SQLException`
      `XMLStreamException`

  - ### addItemsFromRS

    public static List<String> addItemsFromRS(Connection con, XMLStreamWriter whereAdd, String table, String keyColumn, String keyValue, String retColumn, boolean dateFilter, String date1, String date2) throws SQLException, XMLStreamException
    Throws:
      `SQLException`
      `XMLStreamException`

  - ### addItemsFromRS

    public static List<String> addItemsFromRS(Connection con, XMLStreamWriter whereAdd, String table, String keyColumn, String keyValue, String retColumn, boolean dateFilter, String date1, String date2, String joins) throws SQLException, XMLStreamException
    Throws:
      `SQLException`
      `XMLStreamException`

  - ### deleteRowsFromTable

    public static List<String> deleteRowsFromTable(Connection con, String table, String keyColumn, String keyValue, String retColumn) throws SQLException
    Throws:
      `SQLException`

  - ### getModuleMonthTableName

    public static String getModuleMonthTableName(String name, LocalDate time, int moduleId)

  - ### getModuleMonthTableName

    public static String getModuleMonthTableName(String name, Date time, int moduleId)
    Функция выдает название помесячной таблицы на основании префикса, календаря с месяцем и кода модуля
    name_mid_yyyyMM</>

  - ### getModuleMonthDayTableName

    public static String getModuleMonthDayTableName(String name, Date time, int moduleId)
    Вернет name_mid_yyyyMMdd</>

  - ### getModuleTableName

    public static String getModuleTableName(String name, int mid)
    Функция выдает название таблицы на основании префикса и кода модуля name_mid</>

  - ### getMonthTableName

    public static String getMonthTableName(String name, Date time)
    Вернет name_yyyyMM</>

  - ### prepareElementToSerialize

    public static void prepareElementToSerialize(Node el)

  - ### checkTable

    public static void checkTable(Connection con, String tableName, String createQuery) throws SQLException
    проверка наличия таблицы и создание ее если нет для месячных таблиц желательно использовать @ru.bitel.bgbilling.server.util.DefaultServerSetup.checkModuleMonthTableName
    Throws:
      `SQLException`

  - ### uptimeStatus

    public static final String uptimeStatus(Date startTime)
    Сстатус uptime чего либо. Используется в отдельнозапущенных серверах для инфы в статусе.
    Parameters:
      `startTime` - время запуска этого "что-либо"
    Returns:
      некая uptime-информация в виде строки

  - ### getSetupValue

    public static String getSetupValue(Connection con, String name)

  - ### getSetupValue

    public static String getSetupValue(Connection con, String name, String defaultValue)
    Возвращает данные из таблицы setup
    Parameters:
      `con` -
      `name` - имя параметра
      `defaultValue` - значение по умолчанию
    Returns:
      значение из таблицы если есть запись с заданным именем, иначе defaultValue

  - ### setSetupValue

    public static void setSetupValue(Connection con, String name, String value)

  - ### removeSetupValue

    public static void removeSetupValue(Connection con, String name)

  - ### getLastModificationTime

    public static Calendar getLastModificationTime(Connection con, String param)

  - ### lastInsertId

    public static int lastInsertId(Connection con) throws SQLException
    Throws:
      `SQLException`

  - ### lastInsertId

    public static int lastInsertId(PreparedStatement ps) throws SQLException
    Throws:
      `SQLException`

  - ### lastInsertLongId

    public static long lastInsertLongId(PreparedStatement ps) throws SQLException
    Throws:
      `SQLException`

  - ### foundRows

    public static int foundRows(Connection con) throws SQLException
    Throws:
      `SQLException`

  - ### changeLastModificationTime

    public static void changeLastModificationTime(Connection con, String param)

  - ### closeConnection

    public static final void closeConnection(Connection... con)
    Безопасное закрытие одного или нескольких соединений с БД.
    Parameters:
      `con` -

  - ### closeConnection

    public static final void closeConnection(Connection con)
    Безопасное закрытие одного соединения с БД. Более быстр по сравнению с `closeConnection(Connection...)`, т.к. на каждый вызов не создаётся массив.
    Parameters:
      `con` - - соединение, не может быть null

  - ### closeConnection

    public static final void closeConnection(Connection con, Connection conSlave)
    Безопасное закрытие одного или двух соединений с БД. Более быстр по сравнению с `closeConnection(Connection...)`, т.к. на каждый вызов не создаётся массив.
    Parameters:
      `con` - - первое соединение, не может быть null
      `conSlave` - - второе соединенеи может быть null

  - ### commitConnection

    public static final void commitConnection(Connection con)
    Каммит одного соединения с БД.
    Parameters:
      `con` - - соединение.

  - ### getRanges

    public static List<List<Integer>> getRanges(int gid, String range)
    Парсит конфиги вида 1-10;12;20-4096 добавляем их парамми. для одного числа делает дублирование
    Parameters:
      `gid` -
      `range` -
    Returns:

  - ### getEntriesFromZip

    public static Map<String,byte[]> getEntriesFromZip(ZipInputStream zis, String mask)

  - ### resultSetToXML

    public static void resultSetToXML(ResultSet rs, Element whereAdd, String table) throws SQLException
    сериализует таблицу в XML елемент
    Throws:
      `SQLException`

  - ### getFileEntriesFromZipByPrefix

    public static Map<String,byte[]> getFileEntriesFromZipByPrefix(ZipInputStream zis, String prefix)

  - ### getSocketOut

    public static PrintWriter getSocketOut(Socket socket) throws Exception
    Throws:
      `Exception`

  - ### getSocketIn

    public static BufferedReader getSocketIn(Socket socket) throws Exception
    Throws:
      `Exception`

  - ### dropExistTable

    public static final void dropExistTable(Connection con, String tableName) throws SQLException
    Throws:
      `SQLException`

  - ### setAutoCommit

    public static final void setAutoCommit(Connection con, boolean auto)

  - ### resultSetToXML

    public static void resultSetToXML(ResultSet rs, XMLStreamWriter whereAdd, String table) throws SQLException, XMLStreamException
    Throws:
      `SQLException`
      `XMLStreamException`

  - ### replace

    public static String replace(String value, String from, String to)
    Используется XSLT скриптами в качестве расширения.
    Parameters:
      `value` -
      `from` -
      `to` -
    Returns:

  - ### urlencode

    public static String urlencode(String value)
    Кодирование mime данных в урлах (в x-www-form-urlencoded), НЕ кодирование урлов целиком. personalAcc=adfuf|name=mmmmm personalAcc%3Dadfuf%2Fname%3Dmmmmm Используется XSLT скриптами в качестве расширения.

  - ### urldecode

    public static String urldecode(String value)
    Декодирование mime данных в урлах, НЕ декодирование урлов целиком, обратная к urlencode. Используется XSLT скриптами в качестве расширения.

  - ### valueOrDefault

    public static String valueOrDefault(String value, String defaultValue)
    Используется XSLT скриптами в качестве расширения.
    Parameters:
      `value` -
      `defaultValue` -
    Returns:

  - ### formatNumber

    public static String formatNumber(Number value, String formatPattern)
    Используется XSLT скриптами в качестве расширения.
    Parameters:
      `value` -
      `formatPattern` -
    Returns:

  - ### upd5

    public static String upd5(String doc1, String doc2, String date1, String date2)
    Используется XSLT скриптами в качестве расширения.
    Parameters:
      `doc1` -
      `doc2` -
      `date1` -
      `date2` -
    Returns:

  - ### dateToString

    public static String dateToString(String source, String inPattern, String outPattern)

  - ### recycle

    public static void recycle(Object... oo)

  - ### addNoCache

    public static void addNoCache(jakarta.servlet.http.HttpServletResponse response)

  - ### deleteDir

    public static void deleteDir(File dirPath)

  - ### getQuestions

    public static String getQuestions(int count)
    Получаем строку вида ?,?,?
    Parameters:
      `count` -
    Returns:

  - ### createDirectoriesOnFTP

    public static void createDirectoriesOnFTP(org.apache.commons.net.ftp.FTPClient ftpConnect, String pathOnFTP) throws IOException
    Разбивает переданный путь по / , затем по каждой директории проверяет существует ли она, если нет, то создаёт
    Parameters:
      `ftpConnect` - коннект с FTP сервером
      `pathOnFTP` - абсолютный путь до нужной директории
    Throws:
      `IOException`

  - ### checkPeriod

    public static void checkPeriod(Date date1, Date date2) throws ru.bitel.bgbilling.common.BGException
    проверка как в старых экшенах, чтобы date2>=date1 или одна их них null, внимание: допускается date1=null
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getServerHome

    public static String getServerHome()
    общий код в серверах - получает полный путь до корня сервера (там где находится каталог data итд)

  - ### checkAndCreatePeriodicTableName

    public static void checkAndCreatePeriodicTableName(Connection con, String tableName, String createQuery)
    Функция берет имя таблицы(xxxx) из xxxx_mid_yyyyMM и создает ее
    Parameters:
      `con` -
      `tableName` -
      `createQuery` -