Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Condition Storage / 22 сообщений из 22, страница 1 из 1
02.08.2016, 19:24
    #39284877
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
Нужно придумать несколько классов которые реализовали хранение фильтров, сортировок и кастомных условий. Хочу сделать с использованием Interface и Generic. Что бы была возможность добавлять новые типы данных. Наверное таких классов много написано. Хотелось бы посмотреть варианты реализации.

Работаю с MyBatis. У него динамически составляется SQL запрос через XML темплейт. Нужно применять фильтры из колекции.
...
Рейтинг: 0 / 0
02.08.2016, 20:15
    #39284893
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
...
Рейтинг: 0 / 0
02.08.2016, 20:17
    #39284894
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikI,
язык для БЛ - это бесперскетивное занятие.
...
Рейтинг: 0 / 0
02.08.2016, 20:28
    #39284897
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikIУ него динамически составляется SQL запрос
запрос состаляется из чего?
Из ИИ?
...
Рейтинг: 0 / 0
02.08.2016, 21:39
    #39284928
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
Petro123,

Что за ерунда? Я про java классы говорю. Хочу посмотреть реализацию интерфейса Filter и коллекцию этих реализиций для 2-3 фильтров.
...
Рейтинг: 0 / 0
03.08.2016, 00:13
    #39284992
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikIХочу посмотреть реализацию интерфейса Filter и коллекцию этих реализиций для 2-3 фильтров.
я тебе и привёл ОДНУ из реализаций фильтров.
А код мы написать всегда успеем.
Есть ещё одна - Интерфейс фильтр не имеет смысла без просмотра этой коллекции. Например в таблице.
Т.е. реализация должна быть в самом объекте таблица.
А иначе зачем сортировка без самой таблицы? Для меня загадка.
IMHO
...
Рейтинг: 0 / 0
03.08.2016, 06:04
    #39285038
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikIPetro123,

Что за ерунда? Я про java классы говорю. Хочу посмотреть реализацию интерфейса Filter и коллекцию этих реализиций для 2-3 фильтров.

ИМХО филтровать можно сразу выборку из БД.
Т.е. указывать фильтры уже в самом запросе.
...
Рейтинг: 0 / 0
03.08.2016, 09:11
    #39285093
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
mad_nazgul,

Перед фильтрацией надо знать по каким условиям фильтровать. Эти условия из request достаются, к ним ставятся соответствующие имена полей. Получается коллекция.
Только после этого запускается sql который описан в XML. Там отрабатывает шаблонизатор, он понимает коллекции и достает от туда параметры. Уже есть реализация этой коллекции, но мне кажется не удачной. Там никак не учитываются типы полей для конвертации.
...
Рейтинг: 0 / 0
03.08.2016, 09:23
    #39285101
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikI,
А показать юзверю предлагаемый фильтр не надо?
Схема такая:
- пагинация. Показали 30 записей ил 10000.
- при клике на столбце Месяц делаем запрос и показываем для выбора фильтр:
Февраль
Октябрь
- юзверь кликнул Октябрь
- добавили в where имяПоля='Октябрь' рефрешь таблица.
...
Рейтинг: 0 / 0
03.08.2016, 09:44
    #39285121
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
Petro123,

Пользователь сам задает фильтр в DataTable и по AJAX грузит данные в формате JSON. В контролере параметры полученные из request надо представить в нормальном виде. Номера полей преобразовать в названия. Все это сделано и работает. Пагинация разумеется есть, используется LIMIT из MySql(предусмотреть переход на другой сервер).
Не надо пытаться решить общею задачу по архитектуре аппликации. Разговор идет о коллекции фильтров. Это промежуточное звено. После получения значений фильтров от пользователя и передачей их в sql. Не знаю как обычно называется такая коллекция. MapBasedSearchParameters, SortingPagingSearchParameters, GeneratedCriteria ? В инете ничего толкового не нашёл.
...
Рейтинг: 0 / 0
03.08.2016, 09:56
    #39285130
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
Приведу ресурсы который мне показалось имеют отношение к данный теме.
Использование generic wildcards
Новое в java 8
Поиск по критериям
То есть что то вроде
Код: java
1.
2.
3.
4.
5.
public interface Filter<String, F, V> {

    void add(String key, .....);
    V get(.....)
}


Сейчас работаю с классом
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class SqlFilter {
    public String fieldName;
    public String value;
    public String operation;

    public SqlFilter(SqlFilter filter) {
        fieldName = filter.fieldName;
        value = filter.value;
        operation = filter.operation;
    }

    public SqlFilter() {
    }
}
...
Рейтинг: 0 / 0
03.08.2016, 10:49
    #39285158
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikIСейчас работаю с классом
я тебе скажу, что чем проще, тем лучше.
http://stackoverflow.com/questions/6056770/mybatis-how-to-create-w-dynamic-where-clause
У нас мы крутили вертели ч этими фильтрами и формочкой для юзверей.
Почти такая как по ссылке выше приводил.
А юзвери нас послали с формой ввода этих фильтров.
Присобачили прямо в коде услови не по фильтрам-именам полей, а статическими галками и описанием Label текстом типа: Самые лучши показатели: (Галка)
...
Рейтинг: 0 / 0
03.08.2016, 10:53
    #39285161
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikIЭто промежуточное звено. После получения значений фильтров от пользователя и передачей их в sql
JSON с клиента бери (фильтры) и на сервер автоматом в коллекцию. Тебе же с ней работать.
IMHO
...
Рейтинг: 0 / 0
03.08.2016, 11:08
    #39285173
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
Petro123,

DataTable тупой компонент, он выдает сортировку по НОМЕРУ поля. Кроме того никакой формы ввода фильтров нет! Есть просто фильтры и хочу иметь возможность выбрать операцию для поля
сейчас так:
Код: java
1.
2.
    private String[] Fields = {"caller", "et.name", "receiver", "date"};
    private String[] Operation = {"LIKE", "LIKE", "LIKE", "="};


Для этого нужно спроектировать API. Дайте ссылки на такие решения! Их должно быть много!
...
Рейтинг: 0 / 0
03.08.2016, 11:21
    #39285186
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikIДля этого нужно спроектировать API. Дайте ссылки на такие решения! Их должно быть много!
ВИ №1
========

В виде дива встраиваете фильтр прямо в таблицу или рядом или popup окном.
Для более простого там условие только добавления AND без OR.
Коллекцию для этого привёл выше по ссылке (как вариант).
...
Это ТЗ для модификации
авторDataTable тупой компонент
если нет денег на нормальную таблицу.
...
Рейтинг: 0 / 0
03.08.2016, 11:59
    #39285217
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikIКроме того никакой формы ввода фильтров нет!
мммммм ... а это что?
http://www.ok-soft-gmbh.com/jqGrid/ToolbarSearchValidation.htm
...
Рейтинг: 0 / 0
03.08.2016, 12:22
    #39285240
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
А вот так выглядит моя форма . Но показ форм ни капли не приближает маня к пониманию правильный системы фильтров.
...
Рейтинг: 0 / 0
03.08.2016, 12:31
    #39285255
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikIНо показ форм ни капли не приближает маня к пониманию правильный системы фильтров.
здрасте приехали.
Сначала ГУИ\концепция\преценденты. А потом какая то тьфу коллекция.
Коллекция ведь это просто трубопровод от ГУИ что смог накликать юзверь к SQL-XML iBatis.
Ты бы ещё над XML задумался. Что там думать то?
Или решил лямбды из java8 пописать?
...
Рейтинг: 0 / 0
03.08.2016, 12:32
    #39285260
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikIА вот так выглядит моя форма .
эта круче))
...
Рейтинг: 0 / 0
03.08.2016, 12:34
    #39285265
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
ErikIА вот так выглядит моя форма . Но показ форм ни капли не приближает маня к пониманию правильный системы фильтров.

Просто Map<String,Object>
Где "ключ" - это поле (колонка столбца), а "значение" это значение фильтра.
Для "ясности" считать, что для фильтров работает пересечение (логическое "И")

P.S. KISS!
...
Рейтинг: 0 / 0
03.08.2016, 12:41
    #39285277
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
mad_nazgul,
+1
Или выше пример есть:
Код: java
1.
2.
3.
ArrayList<Clause> params1 = new ArrayList<Clause>();
            params1.add(new Clause("email","like","test"));
            params1.add(new Clause("user","<>",5));


Просто, если начинать накручивать фильтры сверх меры, по башке бить начинают пользователи.
...
Рейтинг: 0 / 0
03.08.2016, 12:45
    #39285282
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Condition Storage
имена столбцов, кстати приходят от клиента при клике на колонке.
Там же модель с именами колонок уже есть.
И API DataGrid тоже есть.
Т.е. нужно из JSON фильтры конвертировать в маппинг iBatis.
Можно с этой стороны подойти. А не со стороны серверного программиста.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Condition Storage / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]