Здравствуйте.
Суть задачи: есть таблица с данными и есть web-интерфейс. В интерфейсе настраиваются параметры запроса (выбор даты, выбор столбцов таблицы, фильтры, группировка, сортировка) и делается запрос.
На основе выбранных параметров формируется sql-запрос.
Вопрос:
Какой класс лучше всего сделать, чтобы можно было удобно записывать и считывать оттуда произвольные выборки?
Т.е. допустим, выбрал юзер поля User, Country, Time и метрики Installs, Clicks.
Для представления всего этого придумывается что-то вроде map'ы, в которой значением будет Map<Metrics, Double> (где metrics - метрика, а double - это значение метрики).
А вот ключем, по идее, может быть любой произвольный набор полей - Key<User, Country> или Key<Country> или Key<Country, User> и тд.
Т.е. для ключа важно:
1. Произвольное количество и порядок элементов.
2. Уникальность элементов (чтобы не было Key<User, User>).
3. Сохранение информации о классе элемента (чтобы потом знать, что elem.getId() - это id юзера, а не страны).
4. Чтобы Key был comparable.
5. Ну и чтобы он не был слишком уж тяжелым и медленным.
На ум приходит только:
Создать интерфейс/абстрактный класс Field, у которого будет некая метка CLASS_ID. Все сущности-поля будут реализовывать/наследовать от Field'а и у каждого будет константное значение этой метки (например, User - 1, Country - 2 и тд).
И тогда ключем будет просто какой-нибудь TreeSet<Field>.
Но такой подход кажется очень громоздким.
Или нет? Какие еще есть варианты?
Похожие темы
- Форум Строковое представление класса (2012)
- Форум PHP/MySQL unique record race condition (2010)
- Форум схематическое представление С++ классов (2001)
- Форум [Qt] представление данных из базы. (2009)
- Форум Сериализация java классов (2005)
- Форум [java]:MANIFEST.MF нет классов (2011)
- Форум Проектирование класса в java (2015)
- Новости Firefox 65 (2019)
- Форум java. Рунтайм объявление классов (2011)
- Форум [java] имя класса, имя метода (2009)