bitel.billing.server.contract.bean

## Class ContractStatusManager

- java.lang.Object
- - bitel.billing.server.contract.bean.ContractStatusManager

- All Implemented Interfaces:
    ru.bitel.common.worker.Recyclable
  Direct Known Subclasses:
    ContractStatusManager.ContractStatusManager4Script

      public class ContractStatusManager
      extends java.lang.Object
      implements ru.bitel.common.worker.Recyclable

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ContractStatusManager.ContractStatusManager4Script` Заменяем кусочек класа ContractStatusManager с приватными методами такими же, но открытыми.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.sql.Connection` | `con`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ContractStatusManager(java.sql.Connection con)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `changeStatus(ContractStatus newStatus, java.lang.Integer userId)` Вызов changeStatus( newStatus, userId, true, false )
    `void` | `changeStatus(ContractStatus newStatus, java.lang.Integer userId, boolean processEvent)` Смена статуса договора.
    `java.util.List<ContractStatusLog>` | `getLogList(int cid)` Возвращает список логов статуса договора
    `java.util.List<Period>` | `getPeriodList(int contractId, java.util.Set<java.lang.Integer> statuses, java.util.Date startMonth, java.util.Date endMonth)`
    `ContractStatus` | `getStatus(int cid, java.util.Date date)` Возвращает статус договора на какую-то дату, если записи нет, статус по-умолчанию - "активен" (отсюда вернётся null).
    `java.util.List<ContractStatus>` | `getStatusList(int cid)` Полный список статусов договора
    `java.util.List<ContractStatus>` | `getStatusList(int cid, java.util.Date date)` Список статусов договора с датой окончания пустой либо большей или равной параметру date1
    `java.util.List<ContractStatus>` | `getStatusList(int cid, java.util.Set<java.lang.Integer> statuses, java.util.Date startMonth, java.util.Date endMonth)`
    `java.util.List<ContractStatus>` | `getStatusListAfterDate(int cid, java.util.Calendar date)` Список статусов договора с датой начала позже указанной даты
    `static boolean` | `isStatusPeriodValid(ContractStatus status)` Не выродился ли статус.
    `void` | `recycle()`
    `void` | `setContractStatus(ContractStatus status)` Установка действующего статуса договора.

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

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

- - ### Field Detail

    - #### con

          protected final java.sql.Connection con

  - ### Constructor Detail

    - #### ContractStatusManager

          public ContractStatusManager(java.sql.Connection con)

  - ### Method Detail

    - #### getStatus

          public ContractStatus getStatus(int cid,
                                          java.util.Date date)
                                   throws java.sql.SQLException

      Возвращает статус договора на какую-то дату, если записи нет, статус по-умолчанию - "активен" (отсюда вернётся null).
      Parameters:
        `cid` - код договора
        `date` - дата
      Returns:
        статус или null, если записи нет
      Throws:
        `java.sql.SQLException`

    - #### getStatusList

          public java.util.List<ContractStatus> getStatusList(int cid,
                                                              java.util.Date date)
                                                       throws java.sql.SQLException

      Список статусов договора с датой окончания пустой либо большей или равной параметру date1
      Parameters:
        `cid` - код договора
        `date` - дата
      Returns:
      Throws:
        `java.sql.SQLException`

    - #### getStatusListAfterDate

          public java.util.List<ContractStatus> getStatusListAfterDate(int cid,
                                                                       java.util.Calendar date)
                                                                throws java.sql.SQLException

      Список статусов договора с датой начала позже указанной даты
      Parameters:
        `cid` - код договора
        `date` - дата
      Returns:
      Throws:
        `java.sql.SQLException`

    - #### getStatusList

          public java.util.List<ContractStatus> getStatusList(int cid)
                                                       throws java.sql.SQLException

      Полный список статусов договора
      Parameters:
        `cid` - код договора
      Returns:
      Throws:
        `java.sql.SQLException`

    - #### setContractStatus

          public void setContractStatus(ContractStatus status)
                                 throws java.sql.SQLException

      Установка действующего статуса договора.
      Parameters:
        `status` - статус
      Throws:
        `java.sql.SQLException`

    - #### changeStatus

          public void changeStatus(ContractStatus newStatus,
                                   java.lang.Integer userId)
                            throws ru.bitel.bgbilling.common.BGException

      Вызов changeStatus( newStatus, userId, true, false )
      Parameters:
        `newStatus` -
        `userId` -
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### changeStatus

          public void changeStatus(ContractStatus newStatus,
                                   java.lang.Integer userId,
                                   boolean processEvent)
                            throws ru.bitel.bgbilling.common.BGException

      Смена статуса договора. При этом происходит корректное перекрытие существующих на моменты времени статусов, с тем, чтобы на каждый день была активна только одна запись о статусе.
      Parameters:
        `newStatus` - новый статус с периодом.
        `userId` - ид юзера. если будет null, то это эквивалентно 0. Если веб, то надо передать User.USER_CONTRACT.
        `processEvent` - проводить ли события. НЕ относится к событию задания логики перетирания, оно всегда вызовется.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### isStatusPeriodValid

          public static boolean isStatusPeriodValid(ContractStatus status)

      Не выродился ли статус. Проверяет, что промежуток открытый или же есть оба конца, и левый меньше либо равен правому. Используется в многих местах, потому вынесено отдельно. Также проверяет, что начало промежутка не null, то есть промежуток ( +бесконечность, +бесконечность ), в такое тоже могло выродиться, если особенно действует алгоритм задания статусов.
      Parameters:
        `status` - тестируемый статус.
      Returns:
        true если период временной валидный.

    - #### getLogList

          public java.util.List<ContractStatusLog> getLogList(int cid)
                                                       throws java.sql.SQLException

      Возвращает список логов статуса договора
      Parameters:
        `cid` - код договора
      Returns:
      Throws:
        `java.sql.SQLException`

    - #### getStatusList

          public java.util.List<ContractStatus> getStatusList(int cid,
                                                              java.util.Set<java.lang.Integer> statuses,
                                                              java.util.Date startMonth,
                                                              java.util.Date endMonth)
                                                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getPeriodList

          public java.util.List<Period> getPeriodList(int contractId,
                                                      java.util.Set<java.lang.Integer> statuses,
                                                      java.util.Date startMonth,
                                                      java.util.Date endMonth)
                                               throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### recycle

          public void recycle()

      Specified by:
        `recycle` in interface `ru.bitel.common.worker.Recyclable`