Blame view

src/main/java/com/ishchuk/antlr/log/LogListener.java 1.46 KB
ea3b85f2   eishchuk   Initial commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  package com.ishchuk.antlr.log;
  
  import com.ishchuk.antlr4.LogBaseListener;
  import com.ishchuk.antlr4.LogParser;
  import com.ishchuk.antlr.log.model.LogLevel;
  import com.ishchuk.antlr.log.model.LogEntry;
  
  import java.time.LocalDateTime;
  import java.time.format.DateTimeFormatter;
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.List;
  import java.util.Locale;
  
  public class LogListener extends LogBaseListener {
  
      private static final DateTimeFormatter DEFAULT_DATETIME_FORMATTER
              = DateTimeFormatter.ofPattern("yyyy-MMM-dd HH:mm:ss", Locale.ENGLISH);
  
      private List<LogEntry> entries = new ArrayList<>();
      private LogEntry currentLogEntry;
  
      @Override
      public void enterEntry(LogParser.EntryContext ctx) {
          this.currentLogEntry = new LogEntry();
      }
  
      @Override
      public void exitEntry(LogParser.EntryContext ctx) {
          entries.add(currentLogEntry);
      }
  
      @Override
      public void enterTimestamp(LogParser.TimestampContext ctx) {
          currentLogEntry.setTimestamp(LocalDateTime.parse(ctx.getText(), DEFAULT_DATETIME_FORMATTER));
      }
  
      @Override
      public void enterMessage(LogParser.MessageContext ctx) {
          currentLogEntry.setMessage(ctx.getText());
      }
  
      @Override
      public void enterLevel(LogParser.LevelContext ctx) {
          currentLogEntry.setLevel(LogLevel.valueOf(ctx.getText()));
      }
  
      public List<LogEntry> getEntries() {
          return Collections.unmodifiableList(entries);
      }
  }