package glug.parser.logmessages; import glug.model.SignificantInterval; import glug.model.ThreadModel; import glug.model.time.LogInstant; import glug.model.time.LogInterval; import org.joda.time.Duration; import java.util.Map; import java.util.Set; import java.util.regex.MatchResult; import java.util.regex.Pattern; public abstract class IntervalLogMessageParser extends LogMessageParser { public IntervalLogMessageParser(Set<String> loggerClassNames, Pattern pattern) { super(loggerClassNames, pattern); } @Override public SignificantInterval process(MatchResult matchResult, ThreadModel threadModel, LogInstant logInstant) { LogInterval interval = new LogInterval(durationFrom(matchResult),logInstant); Map<String, ?> intervalOcc = intervalOccupierFor(matchResult); intervalOcc = threadModel.getThreadedSystem().intern(intervalOcc); SignificantInterval significantInterval = new SignificantInterval(intervalOcc,interval); threadModel.add(significantInterval); return significantInterval; } abstract Map<String,?> intervalOccupierFor(MatchResult matchResult); abstract Duration durationFrom(MatchResult matchResult); }