package nl.us2.cloudpelican.stormprocessor; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by robin on 20/07/15. */ public class LogTypeSniffer { private Pattern iso86001tspattern; private Matcher iso86001tsmatcher; public LogTypeSniffer() { // 2001-07-04T12:08:56.235-07:00 // SimpleDateFormat yyyy-MM-dd'T'HH:mm:ss.SSSXXX iso86001tspattern = Pattern.compile("[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}([0-9]+)?(?:\\+|\\-)[0-9]{2}:[0-9]{2}"); iso86001tsmatcher = iso86001tspattern.matcher(""); } public LogSniffResult sniff(String msg) { // Result holder LogSniffResult res = new LogSniffResult(); // List of logtypes List<LogTypes> list = new ArrayList<LogTypes>(); // Init matcher iso86001tsmatcher.reset(msg); // Match? if (iso86001tsmatcher.find()) { list.add(LogTypes.RSYSLOG); if (iso86001tsmatcher.group(1) == null) { res.setDateStr(iso86001tsmatcher.group()); } else { // Remove last occurrence from millis String revDate = StringUtils.reverse(iso86001tsmatcher.group(0)); String revMillis = StringUtils.reverse(iso86001tsmatcher.group(1)); String date = StringUtils.reverse(revDate.replaceFirst(revMillis, "")); res.setDateStr(date); } } // Add list and return res.setTypes(list); return res; } }