Изменение API и функциональности SetIn-фильтров

6 views
Skip to first unread message

Ivan Ponomarev

unread,
Sep 8, 2017, 6:34:15 PM9/8/17
to curs-group
Коллеги,

In-фильтры в Celesta, в их первоначальной реализации, продемонстрировали ограниченность применения на практике и не очень удачный API.

  1. Hеоптимальность API: мы сначала создавали lookup = FieldsLookup(a, b).add...add, а затем вызывали a.setIn(lookup). Для этого приходилось явно импортировать класс FieldsLookup, конструировать его на базе объекта a, а затем ещё и передавать в параметр метода a -- избыточность.

  2. В старой реализации мы могли навесить InFilter только с использованием одного фильтрующего курсора. На практике этого недостаточно, бывает нужно два и более фильтрующих курсора.  


Теперь, в trunk-версии Celesta, обе эти проблемы исправлены.


Обратная совместимость потеряна, код придётся переписать. Учитывая, что функциональность новая и использовалась мало где, мы не думаем, что это приведёт к большим трудностям.


Как изменён API? Теперь для создания in-filter необходимо писать так: 


a
.setIn(b).add("a1", "b1").add("a2", "b2")

Как видим, необходимость в импортировании лишнего класса отпала.

Если нужно добавить ещё один фильтрующий курсор, нужно воспользоваться методом and и продолжить цепочку:

.and(c).add("a1", "c1")

Полное описание приведено в wiki.

С уважением,

ИП
Reply all
Reply to author
Forward
0 new messages