...
После выбора одного или нескольких реализаций поиска, они станут активны на экране "Поиск договора". После начала ввода данных в поле "Номер договора(комментарий)", после каждого введённого символа строка с поисковым запросом вызывает метод проверки (check) у каждой реализации поиска. Данный метод существует для проверки на предмет соответствия вводимых данных с логикой реализации поиска (например, в поле ИНН могут быть только цифры, метод check проверяет это условие и если указанные данные проходят данное условие, то реализация поиска появляется в выпадающем списке под полем для ввода номера договора)
Алгоритм реализации поиска договоров представляет из себя реализацию интерфейса ru.bitel.bgbilling.kernel.contract.search.common.ContractSearchable
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
public interface ContractSearchable { //для возможности установки цвета шрифта String COLOR_RED = "red"; String COLOR_BLUE = "blue"; String COLOR_GREEN = "green"; //наиболее часто используемые ключи String CONTRACT_ID = "cid"; String CONTRACT_TITLE = "contractTitle"; String CONTRACT_BALANCE = "balance"; String COMMENT = "comment"; String COLOR = "color"; String WIDTH = "width"; /** * Реализация проверки указанных данных под условия данного поиска. * * @param searchData указанные данные для поиска * @return true - если подходит под условие */ public boolean check( String searchData ); /** * Реализация выгрузки * @param searchData - поисковой запрос * @param moduleId - id модуля для которого выбран поиск. 0, если ядро * @param filters - набор фильтров выбранных в клиенте для поиска * @param pageHolder - данные для построничного просмотра результатов * * @return возвращает список JSON-объектов по которому будет строиться итоговая таблица результата */ public List<JSONObject> search( String searchData, int moduleId, ContractSearchableFilters filters, Holder<Page> pageHolder ) throws BGException; /** * Возможность указать читабельные названия для полей в результате поиска. * Каждое поле указывается отдельным JSONObject и помещается в результирующий JSONArray * Ключ для названия должен совпадать с ключом в списке возвращаемом методом search() * * Т.е. если search возвращает {contractTitle:title}, то getTitles должен вернуть {contractTitle:Название договора} * @return */ public JSONArray getTitles(); /** * Возвращает текстовое описание данного поиска. * Например, "Поиск по IP-адресу" * @return */ public String getTitle(); } |
Метод check()
Данный метод существует для проверки на предмет соответствия вводимых данных с логикой реализации поиска (например, в поле ИНН могут быть только цифры, метод check проверяет это условие и если указанные данные проходят данное условие, то реализация поиска появляется в выпадающем списке под полем для ввода номера договора)
Метод search()
Результирующий список содержит объекты типа JSONObject в котором могут находится любые данные, но для того, чтобы договор мог быть открыт, каждый JSON должен содержать id договора под ключом cid (константа ContractSearchable.CONTRACT_ID).
Метод getTitles()
Для каждой записи есть возможность указать цвет, которым будет отображена запись в результирующем списке или таблице.
...