Не проходит по всем пунктам кроме последнего,
вывод верный но вале не нравится
может кто знает почему?
17.10.2021
немного причесал метод...
public Set<Object> execute(String query) {
String[] str = query.split(" ");
if (query.length() <= 10) {
// - getEvents() 375 line
return Objects.requireNonNull(getEvents()).map(entityEvent -> {
try {
return entityEvent.getClass().getDeclaredField(str[1]).get(entityEvent);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
return null;
}
}).filter(Objects::nonNull)
.collect(Collectors.toSet());
} else {
String request = query.split("=")[1].trim();
request = request.substring(1, request.length() - 1);
Object requestEvent = null;
try {
if (str[3].equals("date")) requestEvent = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").parse(request);
else if (str[3].equals("event")) requestEvent = Event.valueOf(request);
else if (str[3].equals("status")) requestEvent = Status.valueOf(request);
else requestEvent = request;
} catch (ParseException e) {
e.printStackTrace();
requestEvent = request;
}
Object finalRequest = requestEvent;
return Objects.requireNonNull(getEvents())
.filter(eventEntity -> {
try {
return eventEntity.getClass().getDeclaredField(str[3]).get(eventEntity).equals(finalRequest);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
return false;
}
}).map(eventEntity -> {
try {
return eventEntity.getClass().getDeclaredField(str[1]).get(eventEntity);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
return null;
}
}).filter(Objects::nonNull)
.collect(Collectors.toSet());
}
}
вывод тот же вот только теперь все пункты не проходит)))package com.javarush.task.task39.task3913;
import java.nio.file.Paths;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
public class Solution {
public static void main(String[] args) {
LogParser logParser = new LogParser(Paths.get("C:\\Users\\waumo\\Documents\\project\\JavaRushTasks\\4.JavaCollections\\src\\com\\javarush\\task\\task39\\task3913\\logs"));
// logParser.getAllUsers().forEach(System.out::println);
//
// System.out.println(logParser.getAllSolvedTasksAndTheirNumber(null,null));
// System.out.println(logParser.getAllDoneTasksAndTheirNumber(null,null));
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get ip").forEach(System.out::println);
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get user").forEach(System.out::println);
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get date").forEach(System.out::println);
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get event").forEach(System.out::println);
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get status").forEach(System.out::println);
//
// String query = "get event for date = \"03.01.2014 03:45:23\"";
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get user for event = \"SOLVE_TASK\"").forEach(System.out::println);
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get user for event = \"LOGIN\"").forEach(System.out::println);
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get user for date = \"11.12.2013 10:11:12\"").forEach(System.out::println);
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get ip for date = \"11.12.2013 10:11:12\"").forEach(System.out::println);
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get ip for event = \"LOGIN\"").forEach(System.out::println);
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get status for ip = \"127.0.0.1\"").forEach(System.out::println);
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get status for ip = \"128.0.0.1\"").forEach(System.out::println);
System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
logParser.execute("get event for date = \"30.01.2014 12:56:22″").forEach(System.out::println);;
// System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
// logParser.execute("get date for user = \"Amigo\"").forEach(System.out::println);
System.out.println("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
logParser.execute("get status for ip = \"146.34.15.5\"").forEach(System.out::println);
}
}
EntityEvent
в отдельный метод, вывод тот же))) но уже безReflection API
короче валя не хочет рефлексию по ходу))