Часть проходит, часть нет, при этом нет как таковой разницы в коде тех пунктов где проходит и не проходит...
Всё работает. Проверял и прошлые форматы и новые.
Прочитал все комментарии, исправил прикол с after и before.
Был не ясный момент в комментариях, что вернуть, если множество пустое, null или пустое множество? Пробовал и так и так, не помогло.
Теперь добавим поддержку дополнительного параметра запроса в наш QL.
Дополнительный параметр будет отвечать за диапазон дат, которые нас интересуют.
Пример запроса:
get ip for user = "Eduard Petrovich Morozko" and date between "11.12.2013 0:00:00" and "03.01.2014 23:59:59".
Ожидаемый результат:
Set<String> с записями: 127.0.0.1 и 146.34.15.5.
Общий формат запроса:
get field1 for field2 = "value1" and date between "after" and "before"
Дополнительным параметром может быть только интервал дат, который нас интересует.
Поддержка старых форматов запросов должна сохраниться.
Требования:
- Вызов метода execute с параметром "get ip for user = "[any_user]" and date between "[after]" and "[before]"" должен возвращать множество уникальных IP адресов, с которых работал пользователь с именем [any_user] в период между датами [after] и [before].
- Вызов метода execute с параметром "get ip for date = "[any_date]" and date between "[after]" and "[before]"" должен возвращать множество уникальных IP адресов, события с которых произведены в указанное время [any_date] в период между датами [after] и [before].
- Вызов метода execute с параметром "get ip for event = "[any_event]" and date between "[after]" and "[before]"" должен возвращать множество уникальных IP адресов, у которых событие равно [any_event] в период между датами [after] и [before].
- Вызов метода execute с параметром "get ip for status = "[any_status]" and date between "[after]" and "[before]"" должен возвращать множество уникальных IP адресов, события с которых закончились со статусом [any_status] в период между датами [after] и [before].
- Вызов метода execute с параметром "get user for ip = "[any_ip]" and date between "[after]" and "[before]"" должен возвращать множество уникальных пользователей, которые работали с IP адреса [any_ip] в период между датами [after] и [before].
- Вызов метода execute с параметром "get user for date = "[any_date]" and date between "[after]" and "[before]"" должен возвращать множество уникальных пользователей, которые произвели любое действие в указанное время [any_date] в период между датами [after] и [before].
- Вызов метода execute с параметром "get user for event = "[any_event]" and date between "[after]" and "[before]"" должен возвращать множество уникальных пользователей, у которых событие равно [any_event] в период между датами [after] и [before].
- Вызов метода execute с параметром "get user for status = "[any_status]" and date between "[after]" and "[before]"" должен возвращать множество уникальных пользователей, у которых статус равен [any_status] в период между датами [after] и [before].
- Вызов метода execute с параметром "get date for ip = "[any_ip]" and date between "[after]" and "[before]"" должен возвращать множество уникальных дат, за которые с IP адреса [any_ip] произведено любое действие в период между датами [after] и [before].
- Вызов метода execute с параметром "get date for user = "[any_user]" and date between "[after]" and "[before]"" должен возвращать множество уникальных дат, за которые пользователь [any_user] произвел любое действие в период между датами [after] и [before].
- Вызов метода execute с параметром "get date for event = "[any_event]" and date between "[after]" and "[before]"" должен возвращать множество уникальных дат, за которые произошло событие равно [any_event] в период между датами [after] и [before].
- Вызов метода execute с параметром "get date for status = "[any_status]" and date between "[after]" and "[before]"" должен возвращать множество уникальных дат, за которые произошло любое событие со статусом [any_status] в период между датами [after] и [before].
- Вызов метода execute с параметром "get event for ip = "[any_ip]" and date between "[after]" and "[before]"" должен возвращать множество уникальных событий, которые произошли с IP адреса [any_ip] в период между датами [after] и [before].
- Вызов метода execute с параметром "get event for user = "[any_user]" and date between "[after]" and "[before]"" должен возвращать множество уникальных событий, которые произвел пользователь [any_user] в период между датами [after] и [before].
- Вызов метода execute с параметром "get event for date = "[any_date]" and date between "[after]" and "[before]"" должен возвращать множество уникальных событий, которые произошли во время [any_date] в период между датами [after] и [before].
- Вызов метода execute с параметром "get event for status = "[any_status]" and date between "[after]" and "[before]"" должен возвращать множество уникальных событий, которые завершены со статусом [any_status] в период между датами [after] и [before].
- Вызов метода execute с параметром "get status for ip = "[any_ip]" and date between "[after]" and "[before]"" должен возвращать множество уникальных статусов, которые произошли с IP адреса [any_ip] в период между датами [after] и [before].
- Вызов метода execute с параметром "get status for user = "[any_user]" and date between "[after]" and "[before]"" должен возвращать множество уникальных статусов, которые произвел пользователь [any_user] в период между датами [after] и [before].
- Вызов метода execute с параметром "get status for date = "[any_date]" and date between "[after]" and "[before]"" должен возвращать множество уникальных статусов, которые произошли во время [any_date] в период между датами [after] и [before].
- Вызов метода execute с параметром "get status for event = "[any_event]" and date between "[after]" and "[before]"" должен возвращать множество уникальных статусов, у которых событие равно [any_event] в период между датами [after] и [before].
- Поддержка формата запросов из задания 5 должна сохраниться.
- Поддержка формата запросов из задания 6 должна сохраниться.
package com.javarush.task.task39.task3913;
public enum Event {
LOGIN,
DOWNLOAD_PLUGIN,
WRITE_MESSAGE,
SOLVE_TASK,
DONE_TASK
}
Участок кода для ip, имени и даты по сути ничего не делает и просто пропускает всё. Добавил проверку (executeFor== ExecuteFor.F_STATUS || executeFor == ExecuteFor.F_EVENT), чтобы лишний раз не ходить по switch.
Валидатор так же не алё.