- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
Map<Integer, ArrayList<?>> // filterId : filterParams
{
//
// Фильтр занятости квартир (не вписывается в API, поэтому здесь заведены отдельные методы)
//
// хранит: showReserved, DateFrom, DateTo
private ArrayList<?> reservedFilterParams
public void onDateFilterChanged(Date dateFrom, Date dateTo, boolean showReserved)
{
this.put(QuickFilters.FILTER_RESERVED_ID, reservedFilterParams)
reservedFilterParams = ArrayUtils.getOrCreateArrayListWithElements(
this, QuickFilters.FILTER_RESERVED_ID, new Boolean(showReserved), dateFrom, dateTo )
if (dateFrom == null && dateTo == null)
{
reservedFilterParams.set(0,new Boolean(true))
this.remove(QuickFilters.FILTER_RESERVED_ID)
}
}
public boolean doShowReserved()
{
return reservedFilterParams ? reservedFilterParams.get(0).booleanValue() : true
}
public Date getDateFrom()
{
return reservedFilterParams?.get(1)
}
public Date getDateTo()
{
return reservedFilterParams?.get(2)
}
}
Язык Groovy, стиль - моя переходная форма от Java. Это я сам написал. Вообще мне даже нравится. Есть фильтры для поиска. У каждого фильтра есть только ему ведомые параметры. Приведенный код - это мапка для хранения того, какие пользователь выбрал фильтры и что в них установил.
Есть API который я делаю, состоящий из типовых фильтров. Этот API автоматически юзает мапку через get/put. Но бывает, придумывается какой-то нетиповой фильтр, и его параметры приходится хардкодить в этой мапке. Короче, мне понравилась идея с мапкой, ведь даже если параметры захардкодены, то они всё равно пихаются в мапку. И читаемость для таких случаев навысоте.
sectus 21.10.2010 04:19 # 0
Bugdog 21.10.2010 08:44 # 0
sectus 21.10.2010 08:04 # 0
Bugdog 21.10.2010 08:54 # 0
Vermut 05.11.2010 18:13 # 0