Решение работает, все варианты вызова, которые валидатор не принял были перепроверены.
Знаю, что это будет непросто разобраться в моем коде, но старался писать максимально чисто.
Вся логика в этой задаче крутится вокруг методов
Set<Object> execute(String query) и
String getQLMatch(String query, String groupName)
в классе LogParser.
для удобства метод с регуляркой вынесу сюда:
private String getQLMatch(String query, String groupName) {
String match = null;
Matcher m = Pattern.compile(
"get (?<field1>\\w+) for (?<field2>\\w+) = \"(?<value1>.*?)\"")
.matcher(query);
if (m.find()) {
match = m.group(groupName);
}
return match;
}
Опускаются руки, прошу помочь угодить валидатору или указать на ошибку, если она присутствует))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("d:/logs/"));
//IPQUeryTest
// System.out.println(logParser.getNumberOfUniqueIPs(null, null));
// System.out.println(logParser.getIPsForUser("Dima Dmitrievich Morozko", null, null));
// System.out.println(logParser.getIPsForStatus(Status.ERROR, null, new Date()));
// System.out.println(logParser.getIPsForEvent(Event.DONE_TASK, null, null));
//UserQueryTest
// System.out.println(logParser.getAllUsers());
// System.out.println(logParser.getNumberOfUsers(null, null));
// System.out.println(logParser.getNumberOfUserEvents("Dima Dmitrievich Morozko", null, null));
// System.out.println(logParser.getUsersForIP("146.34.15.5", null, null));
// System.out.println(logParser.getLoggedUsers(null, null));
// System.out.println(logParser.getSolvedTaskUsers(null, null, 1));
//DataQueryTest
// System.out.println(logParser.getDatesForUserAndEvent("Vasya Pupkin", Event.SOLVE_TASK, null, null));
// System.out.println(logParser.getDatesWhenSomethingFailed(null, null));
// System.out.println(logParser.getDateWhenUserLoggedFirstTime("Peduard Petrovich Morozko", null, null));
// System.out.println(logParser.getDateWhenUserSolvedTask("Peduard Petrovich Morozko", 24, null, null));
// System.out.println(logParser.getDateWhenUserDoneTask("Peduard Petrovich Morozko", 24, null, null));
// System.out.println(logParser.getDatesWhenUserWroteMessage("Peduard Petrovich Morozko",null, null));
//QLQueryTest
for (Object o : logParser.execute("get user for event = \"DONE_TASK\"")) {
System.out.println(o.toString());
}
}
}