Package ru.bitel.bgbilling.kernel.contract.api.server.bean

# Class ContractStatusDao

java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.bgbilling.common.dao.AbstarctDaoConstant
ru.bitel.bgbilling.common.dao.AbstractDao<ContractStatus>
ru.bitel.bgbilling.common.dao.AbstractIdDao<ContractStatus>
ru.bitel.bgbilling.kernel.contract.api.server.bean.ContractStatusDao

Direct Known Subclasses:
  `ContractStatusManager.ContractStatusManager4Script`

public class ContractStatusDao extends ru.bitel.bgbilling.common.dao.AbstractIdDao<ContractStatus>

- ## Field Summary

  ### Fields inherited from class ru.bitel.bgbilling.common.dao.AbstractDao

  `orderByPattern`

  ### Fields inherited from class ru.bitel.bgbilling.common.dao.AbstarctDaoConstant

  `con, ERROR, fields, moduleId, SQL_ALL, SQL_AND, SQL_CALC_FOUND_ROWS, SQL_DELETE, SQL_DISTINCT, SQL_EQ, SQL_EQCS, SQL_FROM, SQL_GROUP, SQL_IN, SQL_INSERT, SQL_JOIN, SQL_LEFT_JOIN, SQL_LIMIT, SQL_NOT_IN, SQL_ON, SQL_ON_DUPLICATE_KEY_UPDATE, SQL_ORDER, SQL_SELECT, SQL_SET, SQL_UPDATE, SQL_VALUES, SQL_WHERE, tableName`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ContractStatusDao(Connection con)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `changeStatus(ContractStatus newStatus, Integer userId)`
  Вызов changeStatus( newStatus, userId, true )
  `void`
  `changeStatus(ContractStatus newStatus, Integer userId, boolean processEvent)`
  Смена статуса договора.
  `boolean`
  `deleteContractObjectStatus(int contractId, int objectId)`
  `protected void`
  `deleteStatus(ContractStatus status, int userId)`
  Приватный метод , извне доступен только changeStatus Удаление записи о статусе договора.
  `protected void`
  `doByPeriod(ContractStatus status, Integer userId)`
  `Map<Integer,List<ContractStatus>>`
  `getContractStatusListMap(Date date)`
  `protected ContractStatus`
  `getFromRS(ResultSet rs)`
  `List<Period>`
  `getPeriodList(int contractId, int objectId, Set<Integer> statuses, Date startMonth, Date endMonth)`
  `ContractStatus`
  `getStatus(int contractId, int objectId, LocalDate date)`
  Возвращает статус договора или объекта договора на какую-то дату, если записи нет, статус по-умолчанию - "активен" (отсюда вернётся null).
  `ContractStatus`
  `getStatus(int contractId, LocalDate date)`
  `List<ContractStatus>`
  `getStatusList(int contractId)`
  `List<ContractStatus>`
  `getStatusList(int contractId, int objectId)`
  Полный список статусов договора
  `List<ContractStatus>`
  `getStatusList(int contractId, int objectId, Date date)`
  Список статусов договора с датой окончания пустой либо большей или равной параметру date
  `List<ContractStatus>`
  `getStatusList(int contractId, Date date)`
  `List<ContractStatus>`
  `getStatusList(int contractId, Set<Integer> statuses, Date startMonth, Date endMonth)`
  `List<ContractStatus>`
  `getStatusListAfterDate(int contractId, Calendar date)`
  Список статусов договора с датой начала позже указанной даты
  `static boolean`
  `isStatusPeriodValid(ContractStatus status)`
  Не выродился ли статус.
  `List<ContractStatus>`
  `list(int contractId, int objectId, LocalDate date)`
  Список статусов договора с датой окончания пустой либо большей или равной параметру date или все статусы.
  `List<ContractStatus>`
  `list(int contractId, LocalDate date)`
  `protected void`
  `saveLog(ContractStatusLog log)`
  `void`
  `searchContractStatus(SearchResult<ContractStatus> searchResult, int contractId, int objectId)`
  `void`
  `setContractObjectStatus(ContractStatus status)`
  Установка действующего статуса объекта договора.
  `void`
  `setContractStatus(ContractStatus status)`
  Установка действующего статуса договора.
  `protected void`
  `updateImpl(ContractStatus status)`
  `protected void`
  `updateStatus(ContractStatus status, Integer userId)`
  Приватный метод, извне доступен только changeStatus Вставка в базу записи о статусе договора либо изменение существующей записи.

  ### Methods inherited from class ru.bitel.bgbilling.common.dao.AbstractIdDao

  `delete, executeUpdate, get, getAndDelete, getAndUpdate, opt, prepareStatement, sqlCommand, sqlCommandAndTable, sqlQuery, sqlWhereId`

  ### Methods inherited from class ru.bitel.bgbilling.common.dao.AbstractDao

  `delete, deleteImpl, eq, get, getById, getImpl, getListFromRS, getPeriod, getQueryById, getSQLOrder, list, list, listImpl, listImpl, listImplPS, listImplPS, ormFromResultSet, ormUpdateImpl, ormUpdateImpl, ormUpdateImpl, ormUpdateImpl, psSetPeriod, queryPeriod, setStatementParam, update`

  ### Methods inherited from class ru.bitel.bgbilling.common.dao.AbstarctDaoConstant

  `getSQLOrder, getTableName, psSetDate, psSetInt, psSetString`

  ### Methods inherited from class ru.bitel.bgbilling.kernel.base.server.logger.BGLogger

  `error, error, error, getLogger, logError, logError, warn`

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

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

- ## Constructor Details

  - ### ContractStatusDao

    public ContractStatusDao(Connection con)

- ## Method Details

  - ### getFromRS

    protected ContractStatus getFromRS(ResultSet rs) throws SQLException
    Specified by:
      `getFromRS` in class `ru.bitel.bgbilling.common.dao.AbstractDao<ContractStatus>`
    Throws:
      `SQLException`

  - ### updateImpl

    protected void updateImpl(ContractStatus status) throws SQLException
    Specified by:
      `updateImpl` in class `ru.bitel.bgbilling.common.dao.AbstractDao<ContractStatus>`
    Throws:
      `SQLException`

  - ### getStatus

    public ContractStatus getStatus(int contractId, LocalDate date) throws SQLException
    Throws:
      `SQLException`

  - ### getStatus

    public ContractStatus getStatus(int contractId, int objectId, LocalDate date) throws SQLException
    Возвращает статус договора или объекта договора на какую-то дату, если записи нет, статус по-умолчанию - "активен" (отсюда вернётся null).
    Parameters:
      `contractId` - код договора
      `date` - дата
    Returns:
      статус или null, если записи нет
    Throws:
      `SQLException`

  - ### getStatusList

    public List<ContractStatus> getStatusList(int contractId, Date date) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getStatusList

    public List<ContractStatus> getStatusList(int contractId, int objectId, Date date) throws ru.bitel.bgbilling.common.BGException
    Список статусов договора с датой окончания пустой либо большей или равной параметру date
    Parameters:
      `contractId` - код договора
      `date` - дата
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getContractStatusListMap

    public Map<Integer,List<ContractStatus>> getContractStatusListMap(Date date) throws SQLException
    Throws:
      `SQLException`

  - ### getStatusList

    public List<ContractStatus> getStatusList(int contractId) throws SQLException
    Throws:
      `SQLException`

  - ### getStatusList

    public List<ContractStatus> getStatusList(int contractId, int objectId) throws SQLException
    Полный список статусов договора
    Parameters:
      `contractId` - код договора
    Returns:
    Throws:
      `SQLException`

  - ### searchContractStatus

    public void searchContractStatus(SearchResult<ContractStatus> searchResult, int contractId, int objectId) throws SQLException
    Throws:
      `SQLException`

  - ### list

    public List<ContractStatus> list(int contractId, LocalDate date) throws SQLException
    Throws:
      `SQLException`

  - ### list

    public List<ContractStatus> list(int contractId, int objectId, LocalDate date) throws SQLException
    Список статусов договора с датой окончания пустой либо большей или равной параметру date или все статусы.
    Parameters:
      `contractId` - код договора
      `date` - дата
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`
      `SQLException`

  - ### getStatusListAfterDate

    public List<ContractStatus> getStatusListAfterDate(int contractId, Calendar date) throws SQLException
    Список статусов договора с датой начала позже указанной даты
    Parameters:
      `contractId` - код договора
      `date` - дата
    Returns:
    Throws:
      `SQLException`

  - ### setContractStatus

    public void setContractStatus(ContractStatus status) throws SQLException
    Установка действующего статуса договора.
    Parameters:
      `status` - статус
    Throws:
      `SQLException`

  - ### setContractObjectStatus

    public void setContractObjectStatus(ContractStatus status) throws SQLException
    Установка действующего статуса объекта договора.
    Parameters:
      `status` - статус
    Throws:
      `SQLException`

  - ### isStatusPeriodValid

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

  - ### changeStatus

    public void changeStatus(ContractStatus newStatus, Integer userId) throws Exception
    Вызов changeStatus( newStatus, userId, true )
    Parameters:
      `newStatus` -
      `userId` -
    Throws:
      `Exception`

  - ### changeStatus

    public void changeStatus(ContractStatus newStatus, Integer userId, boolean processEvent) throws Exception
    Смена статуса договора. При этом происходит корректное перекрытие существующих на моменты времени статусов, с тем, чтобы на каждый день была активна только одна запись о статусе.
    Parameters:
      `newStatus` - новый статус с периодом.
      `userId` - ид юзера. если будет null, то это эквивалентно 0. Если веб, то надо передать User.USER_CONTRACT.
      `processEvent` - проводить ли события. НЕ относится к событию задания логики перетирания, оно всегда вызовется.
    Throws:
      `Exception`

  - ### getStatusList

    public List<ContractStatus> getStatusList(int contractId, Set<Integer> statuses, Date startMonth, Date endMonth) throws SQLException
    Throws:
      `SQLException`

  - ### getPeriodList

    public List<Period> getPeriodList(int contractId, int objectId, Set<Integer> statuses, Date startMonth, Date endMonth) throws SQLException
    Throws:
      `SQLException`

  - ### doByPeriod

    protected void doByPeriod(ContractStatus status, Integer userId) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### saveLog

    protected void saveLog(ContractStatusLog log) throws Exception
    Throws:
      `Exception`

  - ### updateStatus

    protected void updateStatus(ContractStatus status, Integer userId) throws ru.bitel.bgbilling.common.BGException
    Приватный метод, извне доступен только changeStatus Вставка в базу записи о статусе договора либо изменение существующей записи. Просто вставка без проверок.
    Parameters:
      `status` -
    Throws:
      `ru.bitel.bgbilling.common.BGException`
    See Also:
      - `changeStatus(ContractStatus, Integer)`

  - ### deleteContractObjectStatus

    public boolean deleteContractObjectStatus(int contractId, int objectId) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### deleteStatus

    protected void deleteStatus(ContractStatus status, int userId) throws ru.bitel.bgbilling.common.BGException
    Приватный метод , извне доступен только changeStatus Удаление записи о статусе договора.
    Parameters:
      `id` - код записи.
    Throws:
      `ru.bitel.bgbilling.common.BGException`