— Привет, боец!
— Поздравляю тебя с повышением уровня квалификации. Нам нужны отчаянные парни.
— Уверен, у тебя есть еще много нерешенных задач. Самое время решить парочку из них!
36
Задача
Java Collections,
7 уровень,
15 лекция
Недоступна
Парсер логов (1)
Сегодня мы напишем парсер логов.
Лог файл имеет следующий формат:
ip username date event status
Где:
ip - ip адрес с которого пользователь произвел событие.
user - имя пользователя (одно или несколько слов разделенные пробелами).
date - дата события в формате day.month.year hour:minute:second.
event
36
Задача
Java Collections,
7 уровень,
15 лекция
Недоступна
Парсер логов (2)
Реализуй интерфейс UserQuery у класса LogParser:
2.1. Метод getAllUsers() должен возвращать всех пользователей.
2.2. Метод getNumberOfUsers() должен возвращать количество уникальных пользователей.
2.3. Метод getNumberOfUserEvents() должен возвращать количество событий от определенного пользователя.
36
Задача
Java Collections,
7 уровень,
15 лекция
Недоступна
Парсер логов (3)
Реализуй интерфейс DateQuery у класса LogParser:
3.1. Метод getDatesForUserAndEvent() должен возвращать даты, когда определенный
пользователь произвел определенное событие.
3.2. Метод getDatesWhenSomethingFailed() должен возвращать даты, когда
любое событие не выполнилось (статус FAILED).
3.3. Метод
36
Задача
Java Collections,
7 уровень,
15 лекция
Недоступна
Парсер логов (4)
Реализуй интерфейс EventQuery у класса LogParser:
4.1. Метод getNumberOfAllEvents() должен возвращать количество событий за указанный период.
4.2. Метод getAllEvents() должен возвращать все события за указанный период.
4.3. Метод getEventsForIP() должен возвращать события, которые происходили с указ
36
Задача
Java Collections,
7 уровень,
15 лекция
Недоступна
Парсер логов (5)
Как ты заметил существует огромное количество комбинаций параметров для выбора
определенных записей из лог файла. Покрыть их все соответствующими методами
дело не благодарное. Поэтому мы реализуем свой язык запросов (QL).
Пример запроса:
get ip for user = "Vasya"
Такой запрос должен будет вернуть вс
36
Задача
Java Collections,
7 уровень,
15 лекция
Недоступна
Парсер логов (6)
Давай добавим поддержку параметра запроса в наш QL.
Примеры запросов с параметром:
1) get ip for user = "Vasya"
2) get user for event = "DONE_TASK"
3) get event for date = "03.01.2014 03:45:23"
Общий формат запроса с параметром:
get field1 for field2 = "value1"
Где: field1 - одно из полей: ip, user,
36
Задача
Java Collections,
7 уровень,
15 лекция
Недоступна
Парсер логов (7)
Теперь добавим поддержку дополнительного параметра запроса в наш 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<
9
Задача
Java Collections,
7 уровень,
15 лекция
Недоступна
Парсер логов (8)
Ты реализовал парсер логов из разных файлов.
Помимо парсера, ты реализовал свой собственный язык запросов. Он нужен для того, что бы минимизировать
количество методов. Строчка в нашем лог-файле содержала всего 5 параметров плюс один вариативный параметр.
При количестве параметров запроса два - это
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ