java.lang.Object
ru.bitel.bgbilling.modules.sorm.server.utils.SormUtils

public final class SormUtils extends Object
Утильный класс, содержащий общеупотребимые методы для выгрузок СОРМ3.
  • Field Details

  • Constructor Details

    • SormUtils

      public SormUtils()
  • Method Details

    • getUploadContracts

      public static List<SormContract> getUploadContracts(ru.bitel.bgbilling.modules.sorm.server.upload.Upload uploadImplementation, boolean forFullUpload)
      Флаг для полной выгрузки или инкрементальной сделан, т.к. для некоторых типов выгрузок (логины абонентов для ВасЭкспертс) требуется полный список договоров всегда, несмотря на то, что сама выгрузка инкрементальная
      Parameters:
      uploadImplementation - реализация выгрузки
      forFullUpload - флаг, полный список договоров или только изменения
      Returns:
    • getUploadContracts

      public static List<SormContract> getUploadContracts(ru.bitel.bgbilling.modules.sorm.server.upload.Upload uploadImplementation)
      Получение списка id договоров, которые будут участвовать в выгрузке. Берет: 1-все договора после последнего выгруженного, если есть запись в таблице 2-все изменённые договора Критерии: договоры на которых: добавлен модуль СОРМ которые действуют или действовали последние 3 года есть один из модулей, которые были выбраны для выгрузки
    • clearChangedContractsTable

      public static void clearChangedContractsTable(Connection con, int moduleId)
    • getLastUploadContractId

      public static int getLastUploadContractId(Connection con, int sormModuleId, int sormProjectId)
      Возвращает id последнего выгруженного договора для конкретного проекта выгрузки СОРМ
    • updateContractLogTable

      public static void updateContractLogTable(ru.bitel.bgbilling.modules.sorm.server.upload.Upload uploadImplementation) throws SQLException
      Обновляет информацию о последнем выгруженном договоре
      Parameters:
      uploadImplementation - - реализация выгрузки
      Throws:
      SQLException
    • clearContractLogTable

      public static void clearContractLogTable(Connection con, int sormProjectId, int sormModuleId) throws ru.bitel.bgbilling.common.BGException
      Чистит запись о последнем выгруженном договоре для проекта СОРМ
      Parameters:
      sormProjectId - - id проекта СОРМ
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getPairsAbonentInetServicesByContractIds

      public static Map<Integer,List<InetServ>> getPairsAbonentInetServicesByContractIds(Preferences config, List<Integer> contracts, ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getPairsAbonentVoiceAccountsByContractIds

      public static Map<Integer,List<VoiceAccount>> getPairsAbonentVoiceAccountsByContractIds(Preferences config, List<Integer> contractIds, ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getPairsAbonentInetServices

      public static Map<Integer,List<InetServ>> getPairsAbonentInetServices(Preferences config, List<SormContract> contracts, ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext) throws ru.bitel.bgbilling.common.BGException
      Получение списка сервисов всех установленных модулей Inet с уникальными ip-адресами всех договоров, которые возвращает метод getContractIds
      Returns:
      map, где key - cid договороа, value - список сервисов для данного договора
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getInetServices

      public static List<InetServ> getInetServices(Preferences preferences, ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext, List<SormContract> contractIds) throws ru.bitel.bgbilling.common.BGException
      Returns:
      список сервисов всех установленных экземпляров модулей инета, которые были отмечены для выгрузки
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getSelectedInetModulesToUpload

      public static List<Integer> getSelectedInetModulesToUpload(Preferences config)
      Returns:
      список id модулей inet, которые были выбраны для выгрузки
    • getListIntegerFromConfigByKey

      public static List<Integer> getListIntegerFromConfigByKey(Preferences config, String key)
      Возвращает список(Integer) сохранённых в конфиге по переданному ключу
    • getIdsServices

      public static List<Integer> getIdsServices(Preferences config) throws ru.bitel.bgbilling.common.BGException
      Returns:
      список id выбранных для выгрузки услуг оператора
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getSelectedServicesForUpload

      public static List<ServiceSorm> getSelectedServicesForUpload(Preferences config)
      Возвращает список услуг, которые были выбраны пользователем для выгрузки
    • sendErrorToEmail

      public static void sendErrorToEmail(Setup setup, Exception ex, String subject)
    • sendErrorToEmail

      public static void sendErrorToEmail(Setup setup, Exception ex, String subject, String email)
      В случае возникновения любой ошибки формируется письмо, которое отправляется на почту администратору. Email задается при настройке выгрузки в модуле СОРМ, если не заполнен, то будет взять в конфигурации сервера в параметре alarm.mail
      Parameters:
      setup - конфигурация биллинга
      ex - экземпляр исключения. Из него берется сообщение об ошибке, а также печатается стектрейс
      subject - тема письма. Например, ошибка при выгрузке такого то файла, при формировании такого то списка и т.д.
    • trimField

      public static String trimField(String value, int length)
      Обрезает строку до указанной длины.
      Parameters:
      value - строка, длину которой, возможно, нужно сократить
      length - длина, до которой обрезаем строку
    • getUploadFile

      public static Path getUploadFile(String fileUploadPath, String filePrefix, String datePattern)
      Создает новый файл на диске по заданному пути
      Parameters:
      fileUploadPath - путь в локальной директории для создания файла
      filePrefix - префикс создаваемого файла
      datePattern - формат даты, которая должна присутствовать в названии файла
      Returns:
      объект типа файл в каталоге FILE_UPLOAD_PATH/
    • getAdminEmail

      public static String getAdminEmail(Preferences config)
      Возвращает указанный email для отправки информации по ошибкам
    • getCSVFile

      public static SormCSVWriter getCSVFile(Path file) throws IOException
      Throws:
      IOException
    • getCSVFile

      public static SormCSVWriter getCSVFile(Path file, String encoding) throws IOException
      Throws:
      IOException
    • getCSVFile

      public static SormCSVWriter getCSVFile(Path file, char quoteCharacter) throws IOException
      Throws:
      IOException
    • getCSVFile

      public static SormCSVWriter getCSVFile(Path path, Charset encoding, char quoteCharacter) throws IOException
      Throws:
      IOException
    • getCSVFile

      public static SormCSVWriter getCSVFile(Path path, Charset charset, char quoteCharacter, char separator) throws IOException
      Parameters:
      path - - созданный для записи файл
      quoteCharacter - - Для поставщика Специальные Технологии использовать CSVWriter.NO_QUOTE_CHARACTER, для остальных CSVWriter.DEFAULT_QUOTE_CHARACTER
      Returns:
      Throws:
      IOException
    • getIdsModulesFromConfig

      public static List<Integer> getIdsModulesFromConfig(Preferences config, String subKey)
      Возвращает из конфига список id модулей по подключу. (Например, для выгрузки коммутаторов было выбрано несколько модулей inet, то вернётся список с выбранными модулями)
    • getPairsMidsListIds

      public static Map<Integer,List<Integer>> getPairsMidsListIds(Preferences preferences, String subKey)
      Достаёт Map по подключу из переданного конфига, где ключ-mid, value-ids для этого модуля
    • getInetDevices

      public static List<Device> getInetDevices(Preferences config, ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext)
      Возвращает список устройств модуля Inet для выбранных в конфиге экземпляров Inet
    • getDialUpNasList

      public static List<DialUpNAS> getDialUpNasList(ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext, Preferences config, boolean isSwitches) throws ru.bitel.bgbilling.common.BGException
      список nas'ов модуля dialUp для выгрузки как коммутаторов
      Parameters:
      isSwitches - если true, то вернётся список nas'ов выбранных в качестве коммутаторов, если false, то список в качестве шлюзов
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getDialUpLogins

      public static List<DialUpLogin> getDialUpLogins(ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext, Preferences config, List<SormContract> contracts) throws ru.bitel.bgbilling.common.BGException
      Привязка договоров к логинам модуля DialUp.
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getIPResources

      public static Map<IpCategory,List<IpResource>> getIPResources(Preferences config, ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext)
      Возвращает список ip-ресурсов для выбранных в конфиге модулей inet, за исключением тех, которые были выбраны, как не выгружаемые
    • getVoiceDevices

      public static List<Device> getVoiceDevices(Preferences config, ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext)
      Возвращает список устройств модуля Voice для выбранных модулей в конфиге
    • getPhoneSources

      public static List<Source> getPhoneSources(Preferences config, ru.bitel.bgbilling.kernel.container.managed.ServerContext context)
    • getSelectedGateways

      public static List<Device> getSelectedGateways(Preferences config, ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext)
      Возвращает список устройств, которые выбраны, как шлюзы оператора
    • getBunches

      public static List<Bunch> getBunches(Preferences config)
      Возвращает список пучков оператора сохранённых в конфиге
    • getUploadVoiceNumberingResources

      public static List<NumberRange> getUploadVoiceNumberingResources(Preferences config, ru.bitel.bgbilling.kernel.container.managed.ServerContext serverContext)
      Возвращает список номеров, которые должны быть выгружены для выбранных экземпляров модулей Voice
    • getUploadPhoneNumberingResources

      public static List<NumberRange> getUploadPhoneNumberingResources(Preferences config, Connection connection)
      Возвращает список номеров, которые должны быть выгружены для выбранных модулей phone
    • getTelephoneModulesIds

      public static Map<String,List<Integer>> getTelephoneModulesIds(Preferences config)
      Возвращает список выбранныз для выгрузки телефонных модулей
      Returns:
      Map, где key - модуль phone или voice, value - список id соответствующего модуля установленного в биллинге
    • getVoiceModuleSubscriptionList

      public static Map<Integer,List<PhoneResourceSubscription>> getVoiceModuleSubscriptionList(List<Integer> voiceModules, ru.bitel.bgbilling.kernel.container.managed.ServerContext context, Preferences config)
      Parameters:
      voiceModules - - список id установленных модулей Voice
      Returns:
      Map, где key - id модуля Voice, value - список подписок на ресурсы данного модуля за последние 3 года
    • checkThreeYearsAgo

      public static boolean checkThreeYearsAgo(Date dateTo)
      Т.к. большинство поставщиков СОРМ просит данные за последние 3 года, создан метод для проверки даты
      Returns:
      true - если переданная дата была не раньше 3-х лет назад с текущего момента
    • getAddressList

      public static List<Pair<Integer,List<Pair<String,Integer>>>> getAddressList(Preferences config, List<SormContract> contracts)
      Для каждого договора формирует пары номер договора - пара, где first-идентификатор типа адреса, second-pid параметра договора для данного типа адреса
    • getAddressType

      public static String getAddressType(String configAddressKey)
      Используется для MfiSoft и SpecTeh Соотносит тип адреса из конфига с типом адреса, который должен быть указан в формировании файла для выгрузки адресов абонента
      Parameters:
      configAddressKey - - тип адреса из конфига
      Returns:
      тип адреса (целое число в виде строки) из списка поставщиков MfiSoft или SpecTeh
    • ip2Hex

      public static String ip2Hex(String ip)
      Преобразование строки с ip-адресом из десятичного в шестнадцатеричное представление
      Parameters:
      ip - вида 192.168.1.12
      Returns:
      вида C0A88565
    • getDocumentsTypes

      public static List<IdTitle> getDocumentsTypes(Preferences config, ContractParameterManager cpm) throws ru.bitel.bgbilling.common.BGException
      Возвращает список документов из выбранного пользователем спискового параметра договора
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getDocumentTypeIdOfContract

      public static int getDocumentTypeIdOfContract(Preferences config, ContractDao contractDao, int contractId, List<IdTitle> documentTypes) throws ru.bitel.bgbilling.common.BGException
      Возвращает id типа документа для договора
      Parameters:
      config - - конфиг выгрузки
      contractDao -
      contractId - - id договора
      documentTypes - - список типов документов
      Returns:
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getConnectionStandart

      public static String getConnectionStandart(Preferences config)
    • getParameterOfCity

      public static String getParameterOfCity(ru.bitel.bgbilling.modules.sorm.server.upload.Upload uploadImpl, AddressStruct addressStruct, String parameterKey) throws ru.bitel.bgbilling.common.BGException
      Возвращает значение дополнительного параметра для города
      Parameters:
      parameterKey - - ключ параметра, значение которого будет возвращено
      addressStruct - - адрес из которого будет взят город, у которого будет взят параметр, если в конфигурации не установлен пользователем ключ
      Returns:
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getParameterOfCity

      public static String getParameterOfCity(ru.bitel.bgbilling.modules.sorm.server.upload.Upload uploadImpl, int houseId, String parameterKey) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • checkValidAddress

      public static boolean checkValidAddress(AddressStruct address)
      Проверка адреса на заполненность обязательных для СОРМа полей
      Returns:
      true - если все необходимые поля заполнены
    • getIPGatewayItem

      public static String[] getIPGatewayItem(Device inetDevice, String regionId)
      Только для МФИСофт и Спец.Технологий! Для формирования файла IP_GATEWAY, т.к. для данных поставщиков структура файла одинакова
      Parameters:
      inetDevice - устройство модуля inet
      Returns:
      возвращает запись для файла IP_GATEWAY исходя из inetDevice
    • getFullOperatorAddress

      public static String getFullOperatorAddress(Preferences config)
      Формирует адрес оператора одной строкой из конфигурации выгрузки
      Returns:
      адресс оператора одной строкой
    • getInternalUsers

      public static List<InternalUser> getInternalUsers(Connection connection, ObjectManager objectManager, ContractObjectDao contractObjectDao, ru.bitel.bgbilling.modules.sorm.server.utils.SormUploadHelper uploadHelper, Preferences config) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getAddressFromDeviceAttributes

      public static EntityAttrAddress getAddressFromDeviceAttributes(Device<?,?> device)
    • getAlias

      public static String getAlias(Connection connection, int voiceIpMid, int loginId)
      Returns:
      alias по id логина для модуля VoiceIP
    • contractHasModule

      public static boolean contractHasModule(Connection connection, int moduleId, int contractId)
    • formatDateToUTC

      public static String formatDateToUTC(Date date, String pattern)
    • formatDateToUTC

      public static String formatDateToUTC(Calendar date, String pattern)