...
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
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 и помещается в результирующий JSONArrayJSONObject под ключом ContractSearchable.TITLES * Ключ для названия должен совпадать с ключом в списке возвращаемом методом search() * * Т.е. если search возвращает {contractTitle:title}, то getTitlesmetadata должен вернуть содержать JSONArray под ключом ContractSearchable.TITLES, * в котором список JSONObject {contractTitle:Название договора} * @return */ public JSONArrayJSONObject getTitlesmetadata(); /** * Возвращает текстовое описание данного поиска. * Например, "Поиск по IP-адресу" * @return */ public String getTitle(); } |
...
Результирующий список содержит объекты типа JSONObject в котором могут находится любые данные, но для того, чтобы договор мог быть открыт, каждый JSON должен содержать id договора под ключом cid (константа ContractSearchable.CONTRACT_ID).
Метод getTitlesmetadata()
Данный метод возвращает JSONObject с параметрами, которые могут помочь в корректности отображения результатов поиска.
Для каждой записи есть возможность указать цвет, которым будет отображена запись в результирующем списке или таблице.
Так же есть возможность указать читабельное название каждого поля. Для этого необходимо реализовать метод getTitlesmetadata(), пример его реализации показан вышениже.
Исходя из порядка полей в getTitles() titles будет формироваться очередность выстраивания столбцов или списка.
При выстраивании таблицы есть возможность задать ширину для определённого столбца, для этого в getTitles() titles для нужного столбца необходимо указать ширину под ключом "WIDTH"(ContractSearchable.WIDTH).
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
@Override public JSONArrayJSONObject getTitlesmetadata() { JSONObject metadata = new JSONObject(); JSONArray titles = new JSONArray(); titles.put( getTitleContractId( "ID договора" ) ); titles.put( getTitleContractTitle( "Название договора" ) ); titles.put( getTitle( NUMBERSERVICE_LOGIN, "НомерЛогин", 100120 ) ); titles.put( getTitle( DEVICESERVICE_IDSTATUS, "IDСтатус устройствасервиса", 50 ) ); titles metadata.put( getTitle( ACCOUNT_STATETITLES, "Состояние устройства", 50 ) )metadata ); return titlesmetadata; } |