// Path: src/main/java/com/github/davidmoten/logan/MessageSplitter.java
// public class MessageSplitter {
// 
//     public static final String MESSAGE_PATTERN_DEFAULT = "(\\b[a-zA-Z](?:\\w| )*)=([^;|,]*)(;|\\||,|$)";
//     private final Pattern pattern;
//     private final List<String> pairs;
// 
//     /**
//      * Constructor.
//      */
//     public MessageSplitter() {
//         this(Pattern.compile(MESSAGE_PATTERN_DEFAULT));
//     }
// 
//     /**
//      * Constructor.
//      * 
//      * @param pattern
//      *            pattern
//      */
//     public MessageSplitter(Pattern pattern) {
//         this.pattern = pattern;
//         this.pairs = new ArrayList<>();
//     }
// 
//     /**
//      * Extracts key value pairs using regex pattern defined in the constructor.
//      * 
//      * @param s
//      *            string to split
//      * @return map of key value pairs
//      */
//     public Map<String, String> splitAsMap(String s) {
//         Map<String, String> map = Maps.newHashMap();
//         split(s);
//         for (int i = 0; i < pairs.size(); i += 2) {
//             map.put(pairs.get(i), pairs.get(i + 1));
//         }
//         return map;
//     }
// 
//     // not concurrency safe
//     // do this instead of creating a map to save allocations
//     public List<String> split(String s) {
//         pairs.clear();
//         if (s != null && s.length() > 0) {
//             Matcher matcher = pattern.matcher(s);
//             while (matcher.find()) {
//                 String value = matcher.group(2).trim();
//                 pairs.add(matcher.group(1).trim());
//                 pairs.add(value);
//             }
//         }
//         return pairs;
//     }
// }
// 
// Path: src/main/java/com/github/davidmoten/logan/config/Parser.java
// public class Parser {
// 
//     @XmlElement(required = false)
//     public String sourcePattern;
//     @XmlElement(required = true)
//     public String pattern;
//     @XmlElement(required = true)
//     public String patternGroups;
//     @XmlElement(defaultValue = MessageSplitter.MESSAGE_PATTERN_DEFAULT)
//     public String messagePattern = MessageSplitter.MESSAGE_PATTERN_DEFAULT;
//     @XmlElement(required = true)
//     public List<String> timestampFormat;
//     @XmlElement(defaultValue = "UTC")
//     public String timezone = "UTC";
//     @XmlElement(required = false, defaultValue = "false")
//     public boolean multiline;
// 
//     public Parser(String pattern, String patternGroups, String messagePattern,
//             List<String> timestampFormat, String timezone, boolean multiline,
//             String sourcePattern) {
//         super();
//         this.pattern = pattern;
//         this.patternGroups = patternGroups;
//         this.messagePattern = messagePattern;
//         this.timestampFormat = timestampFormat;
//         this.timezone = timezone;
//         this.multiline = multiline;
//         this.sourcePattern = sourcePattern;
//     }
// 
//     /**
//      * Constructor.
//      */
//     public Parser() {
//         // required for jaxb
//     }
// 
//     @Override
//     public String toString() {
//         StringBuilder builder = new StringBuilder();
//         builder.append("Parser [pattern=");
//         builder.append(pattern);
//         builder.append(", patternGroups=");
//         builder.append(patternGroups);
//         builder.append(", messagePattern=");
//         builder.append(messagePattern);
//         builder.append(", timestampFormat=");
//         builder.append(timestampFormat);
//         builder.append(", timezone=");
//         builder.append(timezone);
//         builder.append(", multiline=");
//         builder.append(multiline);
//         builder.append("]");
//         return builder.toString();
//     }
// 
// }


import com.github.davidmoten.logan.MessageSplitter;
import com.github.davidmoten.logan.config.Parser;
import com.google.common.collect.Lists;
package com.github.davidmoten.logan.watcher;


public class TestingUtil {

	static Parser createDefaultParser() {
		String pattern = "^(\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d\\.\\d\\d\\d) +(\\S+) +(\\S+) +(\\S+)? ?- (.*)$";
		String patternGroups = "logTimestamp,logLevel,logLogger,threadName,logMsg";
		String timestampFormat = "yyyy-MM-dd HH:mm:ss.SSS";
		String timezone = "UTC";
		String sourcePattern = "^[a-zA-Z][^\\.]*";
		boolean multiline = false;
		return new Parser(pattern, patternGroups,
// Path: src/main/java/com/github/davidmoten/logan/MessageSplitter.java
// public class MessageSplitter {
// 
//     public static final String MESSAGE_PATTERN_DEFAULT = "(\\b[a-zA-Z](?:\\w| )*)=([^;|,]*)(;|\\||,|$)";
//     private final Pattern pattern;
//     private final List<String> pairs;
// 
//     /**
//      * Constructor.
//      */
//     public MessageSplitter() {
//         this(Pattern.compile(MESSAGE_PATTERN_DEFAULT));
//     }
// 
//     /**
//      * Constructor.
//      * 
//      * @param pattern
//      *            pattern
//      */
//     public MessageSplitter(Pattern pattern) {
//         this.pattern = pattern;
//         this.pairs = new ArrayList<>();
//     }
// 
//     /**
//      * Extracts key value pairs using regex pattern defined in the constructor.
//      * 
//      * @param s
//      *            string to split
//      * @return map of key value pairs
//      */
//     public Map<String, String> splitAsMap(String s) {
//         Map<String, String> map = Maps.newHashMap();
//         split(s);
//         for (int i = 0; i < pairs.size(); i += 2) {
//             map.put(pairs.get(i), pairs.get(i + 1));
//         }
//         return map;
//     }
// 
//     // not concurrency safe
//     // do this instead of creating a map to save allocations
//     public List<String> split(String s) {
//         pairs.clear();
//         if (s != null && s.length() > 0) {
//             Matcher matcher = pattern.matcher(s);
//             while (matcher.find()) {
//                 String value = matcher.group(2).trim();
//                 pairs.add(matcher.group(1).trim());
//                 pairs.add(value);
//             }
//         }
//         return pairs;
//     }
// }
// 
// Path: src/main/java/com/github/davidmoten/logan/config/Parser.java
// public class Parser {
// 
//     @XmlElement(required = false)
//     public String sourcePattern;
//     @XmlElement(required = true)
//     public String pattern;
//     @XmlElement(required = true)
//     public String patternGroups;
//     @XmlElement(defaultValue = MessageSplitter.MESSAGE_PATTERN_DEFAULT)
//     public String messagePattern = MessageSplitter.MESSAGE_PATTERN_DEFAULT;
//     @XmlElement(required = true)
//     public List<String> timestampFormat;
//     @XmlElement(defaultValue = "UTC")
//     public String timezone = "UTC";
//     @XmlElement(required = false, defaultValue = "false")
//     public boolean multiline;
// 
//     public Parser(String pattern, String patternGroups, String messagePattern,
//             List<String> timestampFormat, String timezone, boolean multiline,
//             String sourcePattern) {
//         super();
//         this.pattern = pattern;
//         this.patternGroups = patternGroups;
//         this.messagePattern = messagePattern;
//         this.timestampFormat = timestampFormat;
//         this.timezone = timezone;
//         this.multiline = multiline;
//         this.sourcePattern = sourcePattern;
//     }
// 
//     /**
//      * Constructor.
//      */
//     public Parser() {
//         // required for jaxb
//     }
// 
//     @Override
//     public String toString() {
//         StringBuilder builder = new StringBuilder();
//         builder.append("Parser [pattern=");
//         builder.append(pattern);
//         builder.append(", patternGroups=");
//         builder.append(patternGroups);
//         builder.append(", messagePattern=");
//         builder.append(messagePattern);
//         builder.append(", timestampFormat=");
//         builder.append(timestampFormat);
//         builder.append(", timezone=");
//         builder.append(timezone);
//         builder.append(", multiline=");
//         builder.append(multiline);
//         builder.append("]");
//         return builder.toString();
//     }
// 
// }


// Path: src/test/java/com/github/davidmoten/logan/watcher/TestingUtil.java
import com.github.davidmoten.logan.MessageSplitter;
import com.github.davidmoten.logan.config.Parser;
import com.google.common.collect.Lists;

package com.github.davidmoten.logan.watcher;


public class TestingUtil {

	static Parser createDefaultParser() {
		String pattern = "^(\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d\\.\\d\\d\\d) +(\\S+) +(\\S+) +(\\S+)? ?- (.*)$";
		String patternGroups = "logTimestamp,logLevel,logLogger,threadName,logMsg";
		String timestampFormat = "yyyy-MM-dd HH:mm:ss.SSS";
		String timezone = "UTC";
		String sourcePattern = "^[a-zA-Z][^\\.]*";
		boolean multiline = false;
		return new Parser(pattern, patternGroups,
				MessageSplitter.MESSAGE_PATTERN_DEFAULT,