Repository: ambari Updated Branches: refs/heads/trunk 31b9d7774 -> 9f788c386
AMBARI-21447 Log Feeder should support logs without date (time only) (mgergely) Change-Id: I853447134873b10fdd3fd604fd84630a9caf9d03 Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9f788c38 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9f788c38 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9f788c38 Branch: refs/heads/trunk Commit: 9f788c386667bfeb82fff7c35287a5fdb175c349 Parents: 31b9d77 Author: Miklos Gergely <mgerg...@hortonworks.com> Authored: Wed Jul 12 16:55:48 2017 +0200 Committer: Miklos Gergely <mgerg...@hortonworks.com> Committed: Wed Jul 12 16:55:48 2017 +0200 ---------------------------------------------------------------------- .../ambari/logfeeder/mapper/MapperDate.java | 42 +++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/9f788c38/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/mapper/MapperDate.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/mapper/MapperDate.java b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/mapper/MapperDate.java index 305688b..e099161 100644 --- a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/mapper/MapperDate.java +++ b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/mapper/MapperDate.java @@ -19,6 +19,7 @@ package org.apache.ambari.logfeeder.mapper; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; @@ -79,20 +80,7 @@ public class MapperDate extends Mapper { jsonObj.put(LogFeederConstants.IN_MEMORY_TIMESTAMP, ((Date) value).getTime()); } else if (targetDateFormatter != null) { if (srcDateFormatter != null) { - Date srcDate = srcDateFormatter.parse(value.toString()); - //set year in src_date when src_date does not have year component - if (!srcDateFormatter.toPattern().contains("yy")) { - Calendar currentCalendar = Calendar.getInstance(); - Calendar logDateCalendar = Calendar.getInstance(); - logDateCalendar.setTimeInMillis(srcDate.getTime()); - if (logDateCalendar.get(Calendar.MONTH) > currentCalendar.get(Calendar.MONTH)) { - // set previous year as a log year when log month is grater than current month - srcDate = DateUtils.setYears(srcDate, currentCalendar.get(Calendar.YEAR) - 1); - } else { - // set current year as a log year - srcDate = DateUtils.setYears(srcDate, currentCalendar.get(Calendar.YEAR)); - } - } + Date srcDate = getSourceDate(value); value = targetDateFormatter.format(srcDate); jsonObj.put(LogFeederConstants.IN_MEMORY_TIMESTAMP, srcDate.getTime()); } else { @@ -111,4 +99,30 @@ public class MapperDate extends Mapper { } return value; } + + private Date getSourceDate(Object value) throws ParseException { + Date srcDate = srcDateFormatter.parse(value.toString()); + + Calendar currentCalendar = Calendar.getInstance(); + + if (!srcDateFormatter.toPattern().contains("dd")) { + //set year/month/date in src_date when src_date does not have date component + srcDate = DateUtils.setYears(srcDate, currentCalendar.get(Calendar.YEAR)); + srcDate = DateUtils.setMonths(srcDate, currentCalendar.get(Calendar.MONTH)); + srcDate = DateUtils.setDays(srcDate, currentCalendar.get(Calendar.DAY_OF_MONTH)); + // if with the current date the time stamp is after the current one, it must be previous day + if (srcDate.getTime() > currentCalendar.getTimeInMillis()) { + srcDate = DateUtils.addDays(srcDate, -1); + } + } else if (!srcDateFormatter.toPattern().contains("yy")) { + //set year in src_date when src_date does not have year component + srcDate = DateUtils.setYears(srcDate, currentCalendar.get(Calendar.YEAR)); + // if with the current year the time stamp is after the current one, it must be previous year + if (srcDate.getTime() > currentCalendar.getTimeInMillis()) { + srcDate = DateUtils.addYears(srcDate, -1); + } + } + + return srcDate; + } }