Вроде решение из предыдущей задачи не менялось, а пункт не проходит???
Теперь добавим поддержку дополнительного параметра запроса в наш 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;
import java.nio.file.Paths;
import java.util.Date;
public class Solution {
public static void main(String[] args) {
LogParser logParser = new LogParser(Paths.get("c:/logs/"));
System.out.println(logParser.getNumberOfUniqueIPs(null, new Date()));
}
}