/* * Copyright (c) 2014 EMC Corporation * All Rights Reserved */ package com.emc.storageos.systemservices.impl.logsvc.parse; import java.util.Calendar; import java.util.Date; import com.emc.storageos.systemservices.impl.logsvc.LogMessage; import com.emc.storageos.systemservices.impl.logsvc.util.LogUtil; import com.emc.vipr.model.sys.logging.LogRequest; public abstract class LogParser { protected static Calendar logDate = Calendar.getInstance(); public abstract LogMessage parseLine(String line, LogRequest info); // test if log entry match level filter // return < 0 -- satisfied (level value smaller than request) // return 0 -- satisfied (level value equals to request) // return > 0 -- not satisfied (level value bigger than request) protected int matchLevelFilter(int levelValue, LogRequest request) { int levelRequest = request.getLogLevel(); return levelValue - levelRequest; } /** * Test time is in request's range */ protected int inTimeRange(Date logDate, LogRequest request) { return LogUtil.timeInRange(logDate, request.getStartTime(), request.getEndTime()); } // test if log entry is in request's time range // return -1 -- earlier than start time // return 0 -- in time range // return -1 --later than end time protected int inTimeRange(int year, int month, int days, int hours, int mins, int secs, int msecs, LogRequest request) { logDate.set(year, (month - 1), days, hours, mins, secs); logDate.set(Calendar.MILLISECOND, msecs); return LogUtil.timeInRange(logDate.getTime(), request.getStartTime(), request.getEndTime()); } // Returns the number of milliseconds protected long getTime(int year, int month, int days, int hours, int mins, int secs, int msecs) { logDate.set(year, (month - 1), days, hours, mins, secs); logDate.set(Calendar.MILLISECOND, msecs); Date date = logDate.getTime(); return date.getTime(); } protected static int toNumber(String str) { try { return Integer.parseInt(str); } catch (NumberFormatException nfe) { return -1; } } }