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(Upload uploadImplementation, boolean forFullUpload)
    • getUploadContracts

      public static List<SormContract> getUploadContracts(Upload uploadImplementation, boolean forFullUpload, List<Integer> includeCids)
      Флаг для полной выгрузки или инкрементальной сделан, т.к. для некоторых типов выгрузок (логины абонентов для ВасЭкспертс) требуется полный список договоров всегда, несмотря на то, что сама выгрузка инкрементальная
      Parameters:
      uploadImplementation - реализация выгрузки
      forFullUpload - флаг, полный список договоров или только изменения
      Returns:
      Список договоров для выгрузки. В случае с инкрементальной выгрузкой добавляются договора, берутся договора с id > последнего выгруженного, берутся договора по которым были зафиксированы изменения. Если выгрузка полная, чистится список изменённых договоров.
    • getSormContractByIds

      public static Map<Integer,SormContract> getSormContractByIds(Upload uploadImplementation, List<Integer> ids)
      Получение списка договоров, которые должны быть выгружены в СОРМ, по их ID
    • getUploadContracts

      public static List<SormContract> getUploadContracts(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(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 Exception
      Throws:
      Exception
    • getPairsAbonentVoiceAccountsByContractIds

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

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

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

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

      public static List<Integer> getSelectedVoiceModulesToUpload(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
    • 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 для выбранных модулей в конфиге
    • 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, ru.bitel.bgbilling.kernel.contract.api.server.dao.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
    • getConnectionStandard

      public static String getConnectionStandard(Preferences config)
    • getParameterOfCity

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

      public static String getParameterOfCity(Upload uploadImpl, int houseId, String parameterKey) throws Exception
      Throws:
      Exception
    • 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:
      адрес оператора одной строкой
    • getOperatorStartDate

      public static String getOperatorStartDate(Preferences config, String format) throws ParseException
      Parameters:
      config -
      Returns:
      Дата начала работы оператора установленная в конфиге модуля
      Throws:
      ParseException
    • getInternalUsers

      public static List<InternalUser> getInternalUsers(ru.bitel.bgbilling.kernel.contract.object.server.dao.ContractObjectDao contractObjectDao, ru.bitel.bgbilling.modules.sorm.server.utils.SormUploadHelper uploadHelper, Preferences config) throws Exception
      Throws:
      Exception
    • getAddressFromDeviceAttributes

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

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

      public static String formatDateToUTC(Date date, String pattern)