Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class CustomLogGenerator implements ILogGenerator{
- private BlockingQueue<Event> transformedEvents;
- private ObjectMapper mapper;
- public CustomLogGenerator(BlockingQueue<Event> transformedEvents){
- transformedEvents = transformedEvents;
- mapper = new ObjectMapper();
- }
- public void generate() {
- // Сортируем событие по возрастанию времению
- List<Event> sortedEvents = transformedEvents.stream.sorted(TimestampComporator()).collect(Collectors.toList())
- while (true) {
- // Находим начальное событие по созданию задачи, извлекаем название задачи и ветки
- Event taskCreateEvent = sortedEvents.stream.findFirst(e ->
- e.getType.equals("IssueCreated"));
- String taskName= taskCreateEvent.findPath("name").textValue();
- String branchName = taskCreateEvent.findPath("branch").textValue();
- // Находим конечное событие по закрытию данной задачи
- Event taskCloseEvent = sortedEvents.stream.findFirst(e ->
- e.getType.equals("IssueResolved") &&
- e.getOther.findPath("taskName").textValue().equals(taskName));
- if (taskCreateEvent == null || taskCloseEvent == null) {
- break;
- }
- // Создаём экземпляр процесса и помещаем в него все промежуточные события, сделанные в рамках этой задачи
- List<Event> case = new LinkedList<>();
- case.add(taskCreateEvent);
- sortedEvents.stream.findAll(e->
- e.getTimestamp() > taskCreateEvent.getTimestamp() &&
- e.getTimestamp() < taskCloseEvent.getTimestamp() &&
- (e.getOther.findPath("task").textValue().equals(taskName) ||
- e.getOther.findPath("branch").textValue().equals(branchName )));
- case.add(taskCloseEvent);
- eventService.saveAll(case);
- }
- }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement