Advertisement
Guest User

Untitled

a guest
Jan 27th, 2015
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. package com.github.fge.grappa.trace.parser;
  2.  
  3. import com.github.fge.grappa.parsers.EventBusParser;
  4. import com.github.fge.grappa.rules.Rule;
  5. import com.google.common.collect.Range;
  6.  
  7. import javax.annotation.Nonnull;
  8. import java.util.Objects;
  9.  
  10. public class TraceEventParser
  11. extends EventBusParser<Object>
  12. {
  13. protected final TraceEventBuilder builder = new TraceEventBuilder();
  14. protected final Range<Integer> range;
  15.  
  16. public TraceEventParser()
  17. {
  18. this(Range.atLeast(0));
  19. }
  20.  
  21. public TraceEventParser(final Integer maxEvents)
  22. {
  23. if (maxEvents < 0)
  24. throw new IllegalArgumentException("maxEvents must be positive");
  25. range = Range.atMost(maxEvents);
  26. }
  27.  
  28. public TraceEventParser(@Nonnull final Range<Integer> range)
  29. {
  30. this.range = Objects.requireNonNull(range);
  31. }
  32.  
  33. public Rule traceEvents()
  34. {
  35. return join(traceEvent()).using('\n').range(range);
  36. }
  37.  
  38. Rule traceEvent()
  39. {
  40. return sequence(
  41. eventType(), ';',
  42. index(), ';',
  43. level(), ';',
  44. matcher(), ';',
  45. matcherType(), ';',
  46. matcherClass(), ';',
  47. nanoSeconds(),
  48. post(builder)
  49. );
  50. }
  51.  
  52. Rule eventType()
  53. {
  54. return sequence(digit(), builder.setType(match()));
  55. }
  56.  
  57. Rule index()
  58. {
  59. return sequence(oneOrMore(digit()), builder.setIndex(match()));
  60. }
  61.  
  62. Rule level()
  63. {
  64. return sequence(oneOrMore(digit()), builder.setLevel(match()));
  65. }
  66.  
  67. Rule matcher()
  68. {
  69. return sequence(
  70. join(oneOrMore(noneOf("\\;"))).using("\\;").min(1),
  71. builder.setMatcher(match())
  72. );
  73. }
  74.  
  75. Rule matcherType()
  76. {
  77. return sequence(digit(), builder.setMatcherType(match()));
  78. }
  79.  
  80. Rule matcherClass()
  81. {
  82. return sequence(oneOrMore(noneOf(";")),
  83. builder.setMatcherClass(match()));
  84. }
  85.  
  86. Rule nanoSeconds()
  87. {
  88. return sequence(oneOrMore(digit()), builder.setNanoseconds(match()));
  89. }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement