Если кому интересно, то начало тут: прошлое обсуждение (закрыл этот вопрос, потому как код не обновился, смысла там что-то писать нет)
Переписал полностью весь код с 5, 6, 7 шага. (QLQuery inteface), выделил утилитные методы в отдельные классы. Методы для работы с запросом в QueryUtils.class методы для работы с логами в LogsUtils.class. Методы сделал статическими. Изменил логику работы метода LogParser.execute(String query) и получил +3 пункта "ОК".
А непонятки остались.
То есть, если рассуждать логически то:
1. Если проходят последние два пункта, а в особенности последний пункт, значит запрос разбирается верно, и алгоритм выборки данных по основной части запроса работает, условие из запроса парсится верно, метод возвращает верный набор данных
2. Если проходит хоть одно из всех прочих условий, значит верно парсятся и даты запрашиваемого промежутка. Алгоритм работы то на все возможные наборы полей запроса тоже один.
То есть либо он по разному тестирует разные наборы <Запрашиваемое поле> for <Условие> = <Значение> and date between <промежуток времени>, либо он требует от одного алгоритма выбора и фильтрации данных разные результаты.
Вопрос знатокам: А че надо то ему вообще?
Проверял ручками что смог - все вроде верно работает.
Понять не могу, как проверяет валидатор и что проверяет. Где он ошибку находит? Что должен вернуть метод, если для какого-то запроса не окажется данных. Например, логическая ошибка запроса вроде: "get status for date = "01.01.2015 0:00:00" and date between "01.01.2019 0:00:00" and "01.01.2020 0:00:00"" - null, пустой список? Фильтровать по датам интервала включительно или же нет?
package com.javarush.task.task39.task3913;
public enum Event {
LOGIN,
DOWNLOAD_PLUGIN,
WRITE_MESSAGE,
SOLVE_TASK,
DONE_TASK
}