ru.bitel.bgbilling.server.util

## Class ServerUtils

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

-     public class ServerUtils
      extends java.lang.Object

  Серверный утилс. Работа с соединениями с БД.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ServerUtils()`

  - ### Method Summary

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

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

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

- - ### Constructor Detail

    - #### ServerUtils

          public ServerUtils()

  - ### Method Detail

    - #### tableExists

          public static boolean tableExists(java.sql.Connection con,
                                            java.lang.String tableName)

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

    - #### columnExist

          public static boolean columnExist(java.sql.Connection con,
                                            java.lang.String table,
                                            java.lang.String column)

    - #### dropExistColumn

          public static void dropExistColumn(java.sql.Connection con,
                                             java.lang.String table,
                                             java.lang.String column)
                                      throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### addItemsFromRS

          public static java.util.List<java.lang.String> addItemsFromRS(java.sql.Connection con,
                                                                        org.w3c.dom.Element whereAdd,
                                                                        java.lang.String table,
                                                                        java.lang.String keyColumn,
                                                                        java.lang.String keyValue,
                                                                        java.lang.String retColumn,
                                                                        boolean dateFilter,
                                                                        java.lang.String date1,
                                                                        java.lang.String date2)
                                                                 throws java.sql.SQLException,
                                                                        javax.xml.stream.XMLStreamException

      Throws:
        `java.sql.SQLException`
        `javax.xml.stream.XMLStreamException`

    - #### addItemsFromRS

          public static java.util.List<java.lang.String> addItemsFromRS(java.sql.Connection con,
                                                                        org.w3c.dom.Element whereAdd,
                                                                        java.lang.String table,
                                                                        java.lang.String keyColumn,
                                                                        java.lang.String keyValue,
                                                                        java.lang.String retColumn,
                                                                        boolean dateFilter,
                                                                        java.lang.String date1,
                                                                        java.lang.String date2,
                                                                        java.lang.String joins)
                                                                 throws java.sql.SQLException,
                                                                        javax.xml.stream.XMLStreamException

      Throws:
        `java.sql.SQLException`
        `javax.xml.stream.XMLStreamException`

    - #### addItemsFromRS

          public static java.util.List<java.lang.String> addItemsFromRS(java.sql.Connection con,
                                                                        javax.xml.stream.XMLStreamWriter whereAdd,
                                                                        java.lang.String table,
                                                                        java.lang.String keyColumn,
                                                                        java.lang.String keyValue,
                                                                        java.lang.String retColumn,
                                                                        boolean dateFilter,
                                                                        java.lang.String date1,
                                                                        java.lang.String date2)
                                                                 throws java.sql.SQLException,
                                                                        javax.xml.stream.XMLStreamException

      Throws:
        `java.sql.SQLException`
        `javax.xml.stream.XMLStreamException`

    - #### addItemsFromRS

          public static java.util.List<java.lang.String> addItemsFromRS(java.sql.Connection con,
                                                                        javax.xml.stream.XMLStreamWriter whereAdd,
                                                                        java.lang.String table,
                                                                        java.lang.String keyColumn,
                                                                        java.lang.String keyValue,
                                                                        java.lang.String retColumn,
                                                                        boolean dateFilter,
                                                                        java.lang.String date1,
                                                                        java.lang.String date2,
                                                                        java.lang.String joins)
                                                                 throws java.sql.SQLException,
                                                                        javax.xml.stream.XMLStreamException

      Throws:
        `java.sql.SQLException`
        `javax.xml.stream.XMLStreamException`

    - #### deleteRowsFromTable

          public static java.util.List<java.lang.String> deleteRowsFromTable(java.sql.Connection con,
                                                                             java.lang.String table,
                                                                             java.lang.String keyColumn,
                                                                             java.lang.String keyValue,
                                                                             java.lang.String retColumn)
                                                                      throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getModuleMonthTableName

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

    - #### getModuleMonthTableName

          public static java.lang.String getModuleMonthTableName(java.lang.String name,
                                                                 java.util.Date time,
                                                                 int moduleId)

      Функция выдает название помесячной таблицы на основании префикса, календаря с месяцем и кода модуля
      name_mid_yyyyMM

    - #### getModuleMonthDayTableName

          public static java.lang.String getModuleMonthDayTableName(java.lang.String name,
                                                                    java.util.Date time,
                                                                    int mid)

      Вернет name_mid_yyyyMMdd

    - #### getModuleTableName

          public static java.lang.String getModuleTableName(java.lang.String name,
                                                            int mid)

      Функция выдает название таблицы на основании префикса и кода модуля name_mid

    - #### getMonthTableName

          public static java.lang.String getMonthTableName(java.lang.String name,
                                                           java.util.Date time)

      Вернет name_yyyyMM

    - #### prepareElementToSerialize

          public static void prepareElementToSerialize(org.w3c.dom.Node el)

    - #### checkTable

          public static void checkTable(java.sql.Connection con,
                                        java.lang.String tableName,
                                        java.lang.String createQuery)
                                 throws java.sql.SQLException

      проверка наличия таблицы и создание ее если нет для месячных таблиц желательно использовать @ru.bitel.bgbilling.server.util.DefaultServerSetup.checkModuleMonthTableName
      Throws:
        `java.sql.SQLException`

    - #### uptimeStatus

          public static final java.lang.String uptimeStatus(java.util.Date startTime)

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

    - #### getSetupValue

          public static java.lang.String getSetupValue(java.sql.Connection con,
                                                       java.lang.String name)

    - #### getSetupValue

          public static java.lang.String getSetupValue(java.sql.Connection con,
                                                       java.lang.String name,
                                                       java.lang.String defaultValue)

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

    - #### setSetupValue

          public static void setSetupValue(java.sql.Connection con,
                                           java.lang.String name,
                                           java.lang.String value)

    - #### removeSetupValue

          public static void removeSetupValue(java.sql.Connection con,
                                              java.lang.String name)

    - #### getLastModificationTime

          public static java.util.Calendar getLastModificationTime(java.sql.Connection con,
                                                                   java.lang.String param)

    - #### lastInsertId

          public static int lastInsertId(java.sql.Connection con)
                                  throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### lastInsertId

          public static int lastInsertId(java.sql.PreparedStatement ps)
                                  throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### lastInsertLongId

          public static long lastInsertLongId(java.sql.PreparedStatement ps)
                                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### foundRows

          public static int foundRows(java.sql.Connection con)
                               throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### changeLastModificationTime

          public static void changeLastModificationTime(java.sql.Connection con,
                                                        java.lang.String param)

    - #### closeConnection

          public static final void closeConnection(java.sql.Connection... con)

      Безопасное закрытие одного или нескольких соединений с БД.
      Parameters:
        `con` -

    - #### closeConnection

          public static final void closeConnection(java.sql.Connection con)

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

    - #### closeConnection

          public static final void closeConnection(java.sql.Connection con,
                                                   java.sql.Connection conSlave)

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

    - #### commitConnection

          public static final void commitConnection(java.sql.Connection con)

      Каммит одного соединения с БД.
      Parameters:
        `con` - - соединение.

    - #### getRanges

          public static java.util.List<java.util.List<java.lang.Integer>> getRanges(int gid,
                                                                                    java.lang.String range)

      Парсит конфиги вида 1-10;12;20-4096 добавляем их парамми. для одного числа делает дублирование
      Parameters:
        `gid` -
        `range` -
      Returns:

    - #### getEntriesFromZip

          public static java.util.Map<java.lang.String,byte[]> getEntriesFromZip(java.util.zip.ZipInputStream zis,
                                                                                 java.lang.String mask)

    - #### resultSetToXML

          public static void resultSetToXML(java.sql.ResultSet rs,
                                            org.w3c.dom.Element whereAdd,
                                            java.lang.String table)
                                     throws java.sql.SQLException

      сериализует таблицу в XML елемент
      Throws:
        `java.sql.SQLException`

    - #### getFileEntriesFromZipByPrefix

          public static java.util.Map<java.lang.String,byte[]> getFileEntriesFromZipByPrefix(java.util.zip.ZipInputStream zis,
                                                                                             java.lang.String prefix)

    - #### getSocketOut

          public static java.io.PrintWriter getSocketOut(java.net.Socket socket)
                                                  throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### getSocketIn

          public static java.io.BufferedReader getSocketIn(java.net.Socket socket)
                                                    throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### dropExistTable

          public static final void dropExistTable(java.sql.Connection con,
                                                  java.lang.String tableName)
                                           throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setAutoCommit

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

    - #### resultSetToXML

          public static void resultSetToXML(java.sql.ResultSet rs,
                                            javax.xml.stream.XMLStreamWriter whereAdd,
                                            java.lang.String table)
                                     throws java.sql.SQLException,
                                            javax.xml.stream.XMLStreamException

      Throws:
        `java.sql.SQLException`
        `javax.xml.stream.XMLStreamException`

    - #### replace

          public static java.lang.String replace(java.lang.String value,
                                                 java.lang.String from,
                                                 java.lang.String to)

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

    - #### valueOrDefault

          public static java.lang.String valueOrDefault(java.lang.String value,
                                                        java.lang.String defaultValue)

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

    - #### formatNumber

          public static java.lang.String formatNumber(java.lang.Number value,
                                                      java.lang.String formatPattern)

      Используется XSLT скриптами в качестве расширения.
      Parameters:
        `value` -
        `formatPattern` -
      Returns:

    - #### upd5

          public static java.lang.String upd5(java.lang.String doc1,
                                              java.lang.String doc2,
                                              java.lang.String date1,
                                              java.lang.String date2)

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

    - #### dateToString

          public static java.lang.String dateToString(java.lang.String source,
                                                      java.lang.String inPattern,
                                                      java.lang.String outPattern)

    - #### recycle

          public static void recycle(java.lang.Object... oo)

    - #### addNoCache

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

    - #### deleteDir

          public static void deleteDir(java.io.File dirPath)

    - #### getQuestions

          public static java.lang.String getQuestions(int count)

      Получаем строку вида ?,?,?
      Parameters:
        `count` -
      Returns:

    - #### getPrivateKey

          public static java.security.PrivateKey getPrivateKey(Setup setup,
                                                               java.lang.String alias)

      Получение приватного ключа из файла .keystore по алиасу
      Parameters:
        `setup` -
        `alias` -
      Returns:

    - #### createDirectoriesOnFTP

          public static void createDirectoriesOnFTP(org.apache.commons.net.ftp.FTPClient ftpConnect,
                                                    java.lang.String pathOnFTP)
                                             throws java.io.IOException

      Разбивает переданный путь по / , затем по каждой директории проверяет существует ли она, если нет, то создаёт
      Parameters:
        `ftpConnect` - коннект с FTP сервером
        `pathOnFTP` - абсолютный путь до нужной директории
      Throws:
        `java.io.IOException`

    - #### checkPeriod

          public static void checkPeriod(java.util.Date date1,
                                         java.util.Date date2)
                                  throws ru.bitel.bgbilling.common.BGException

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