Advertisement
grook

Untitled

Jun 15th, 2021
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.84 KB | None | 0 0
  1. public class CustomLogGenerator implements ILogGenerator{
  2. private BlockingQueue<Event> transformedEvents;
  3. private ObjectMapper mapper;
  4. public CustomLogGenerator(BlockingQueue<Event> transformedEvents){
  5.     transformedEvents = transformedEvents;
  6.     mapper = new ObjectMapper();
  7. }
  8. public void generate() {
  9.     // Сортируем событие по возрастанию времению
  10.     List<Event> sortedEvents = transformedEvents.stream.sorted(TimestampComporator()).collect(Collectors.toList())
  11.     while (true) {
  12.  
  13.         // Находим начальное событие по созданию задачи, извлекаем название задачи и ветки
  14.         Event taskCreateEvent = sortedEvents.stream.findFirst(e ->
  15.             e.getType.equals("IssueCreated"));
  16.         String taskName= taskCreateEvent.findPath("name").textValue();
  17.         String branchName = taskCreateEvent.findPath("branch").textValue();
  18.  
  19.         // Находим конечное событие по закрытию данной задачи
  20.         Event taskCloseEvent = sortedEvents.stream.findFirst(e ->
  21.             e.getType.equals("IssueResolved") &&
  22.             e.getOther.findPath("taskName").textValue().equals(taskName));
  23.         if (taskCreateEvent == null || taskCloseEvent == null) {
  24.             break;
  25.         }
  26.        
  27.         // Создаём экземпляр процесса и помещаем в него все промежуточные события, сделанные в рамках этой задачи
  28.         List<Event> case = new LinkedList<>();
  29.         case.add(taskCreateEvent);
  30.         sortedEvents.stream.findAll(e->
  31.             e.getTimestamp() > taskCreateEvent.getTimestamp() &&
  32.             e.getTimestamp() < taskCloseEvent.getTimestamp() &&
  33.             (e.getOther.findPath("task").textValue().equals(taskName) ||
  34.              e.getOther.findPath("branch").textValue().equals(branchName )));
  35.         case.add(taskCloseEvent);
  36.         eventService.saveAll(case);
  37.     }
  38. }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement