From 1ecbbb41000cf07fcbcfc5e26277761c5b19c1ce Mon Sep 17 00:00:00 2001 From: amakwana Date: Mon, 28 Dec 2020 10:56:40 -0500 Subject: [PATCH 01/10] iso support --- .../datastores/aggregation/timegrains/Day.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java index 827e07cb60..39926ae84b 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java @@ -20,6 +20,9 @@ public class Day extends Date { public static final String FORMAT = "yyyy-MM-dd"; private static final SimpleDateFormat FORMATTER = new SimpleDateFormat(FORMAT); + + public static final String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; + private static final SimpleDateFormat ISO_FORMATTER = new SimpleDateFormat(ISO_FORMAT); public Day(java.util.Date date) { super(date.getTime()); @@ -34,10 +37,14 @@ public Day deserialize(Object val) { try { if (val instanceof String) { - date = new Day(new Timestamp(FORMATTER.parse((String) val).getTime())); - } else { - date = new Day(FORMATTER.parse(FORMATTER.format(val))); + try { + date = new Day(new Timestamp(FORMATTER.parse((String) val).getTime())); + } + catch(ParseException pe) { + date = new Day(new Timestamp(ISO_FORMATTER.parse((String) val).getTime())); + } } + date = new Day(FORMATTER.parse(FORMATTER.format(val))); } catch (ParseException e) { throw new IllegalArgumentException("String must be formatted as " + FORMAT); } From 89da64996cf76c5ef90e1f06a35c287ef38e61fe Mon Sep 17 00:00:00 2001 From: amakwana Date: Mon, 28 Dec 2020 11:05:30 -0500 Subject: [PATCH 02/10] format --- .../datastores/aggregation/timegrains/Day.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java index 39926ae84b..3857f790e4 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java @@ -20,7 +20,7 @@ public class Day extends Date { public static final String FORMAT = "yyyy-MM-dd"; private static final SimpleDateFormat FORMATTER = new SimpleDateFormat(FORMAT); - + public static final String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; private static final SimpleDateFormat ISO_FORMATTER = new SimpleDateFormat(ISO_FORMAT); @@ -37,12 +37,11 @@ public Day deserialize(Object val) { try { if (val instanceof String) { - try { - date = new Day(new Timestamp(FORMATTER.parse((String) val).getTime())); - } - catch(ParseException pe) { - date = new Day(new Timestamp(ISO_FORMATTER.parse((String) val).getTime())); - } + try { + date = new Day(new Timestamp(FORMATTER.parse((String) val).getTime())); + } catch (ParseException pe) { + date = new Day(new Timestamp(ISO_FORMATTER.parse((String) val).getTime())); + } } date = new Day(FORMATTER.parse(FORMATTER.format(val))); } catch (ParseException e) { From 7ee3969d17265d3e10549b013fe3593010f8808f Mon Sep 17 00:00:00 2001 From: amakwana Date: Mon, 4 Jan 2021 10:15:02 -0500 Subject: [PATCH 03/10] timeformat interface --- .../aggregation/timegrains/Day.java | 22 ++--- .../timegrains/TimeGrainFormatter.java | 82 +++++++++++++++++++ 2 files changed, 88 insertions(+), 16 deletions(-) create mode 100644 elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java index 3857f790e4..52521d1c26 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java @@ -9,20 +9,14 @@ import com.yahoo.elide.core.utils.coerce.converters.Serde; import java.sql.Date; -import java.sql.Timestamp; import java.text.ParseException; -import java.text.SimpleDateFormat; /** * Time Grain class for Day. */ -public class Day extends Date { +public class Day extends Date implements TimeGrainFormatter { public static final String FORMAT = "yyyy-MM-dd"; - private static final SimpleDateFormat FORMATTER = new SimpleDateFormat(FORMAT); - - public static final String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; - private static final SimpleDateFormat ISO_FORMATTER = new SimpleDateFormat(ISO_FORMAT); public Day(java.util.Date date) { super(date.getTime()); @@ -37,23 +31,19 @@ public Day deserialize(Object val) { try { if (val instanceof String) { - try { - date = new Day(new Timestamp(FORMATTER.parse((String) val).getTime())); - } catch (ParseException pe) { - date = new Day(new Timestamp(ISO_FORMATTER.parse((String) val).getTime())); - } + date = new Day(TimeGrainFormatter.formatDateString((String) val, "Day")); } - date = new Day(FORMATTER.parse(FORMATTER.format(val))); + date = new Day(TimeGrainFormatter.DAY_FORMATTER.parse(TimeGrainFormatter.DAY_FORMATTER.format(val))); } catch (ParseException e) { - throw new IllegalArgumentException("String must be formatted as " + FORMAT); + throw new IllegalArgumentException("String must be formatted as " + TimeGrainFormatter.DAY_FORMAT + + " or " + TimeGrainFormatter.ISO_FORMAT); } - return date; } @Override public String serialize(Day val) { - return FORMATTER.format(val); + return TimeGrainFormatter.DAY_FORMATTER.format(val); } } } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java new file mode 100644 index 0000000000..deb3826e87 --- /dev/null +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java @@ -0,0 +1,82 @@ +/* + * Copyright 2020, Yahoo Inc. + * Licensed under the Apache License, Version 2.0 + * See LICENSE file in project root for terms. + */ +package com.yahoo.elide.datastores.aggregation.timegrains; + +import java.sql.Timestamp; +import java.text.ParseException; +import java.text.SimpleDateFormat; + +/** Interface for timegrain formatting */ +public interface TimeGrainFormatter { + + public String DAY_FORMAT = "yyyy-MM-dd"; + SimpleDateFormat DAY_FORMATTER = new SimpleDateFormat(DAY_FORMAT); + + String HOUR_FORMAT = "yyyy-MM-dd'T'HH"; + SimpleDateFormat HOUR_FORMATTER = new SimpleDateFormat(HOUR_FORMAT); + + String ISOWEEK_FORMAT = "yyyy-MM-dd"; + SimpleDateFormat ISOWEEK_FORMATTER = new SimpleDateFormat(ISOWEEK_FORMAT); + + String MINUTE_FORMAT = "yyyy-MM-dd'T'HH:mm"; + SimpleDateFormat MINUTE_FORMATTER = new SimpleDateFormat(MINUTE_FORMAT); + + String SECOND_FORMAT = "yyyy-MM-dd'T'HH:mm:ss"; + SimpleDateFormat SECOND_FORMATTER = new SimpleDateFormat(SECOND_FORMAT); + + String QUARTER_FORMAT = "yyyy-MM"; + SimpleDateFormat QUARTER_FORMATTER = new SimpleDateFormat(QUARTER_FORMAT); + + String WEEK_FORMAT = "yyyy-MM-dd"; + SimpleDateFormat WEEK_FORMATTER = new SimpleDateFormat(WEEK_FORMAT); + + String YEAR_FORMAT = "yyyy"; + SimpleDateFormat YEAR_FORMATTER = new SimpleDateFormat(YEAR_FORMAT); + + String MONTH_FORMAT = "yyyy-MM"; + SimpleDateFormat MONTH_FORMATTER = new SimpleDateFormat(MONTH_FORMAT); + + String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; + SimpleDateFormat ISO_FORMATTER = new SimpleDateFormat(ISO_FORMAT); + + static Timestamp formatDateString(String val, String type) throws ParseException { + try { + switch (type) { + case "Day": + return new Timestamp(DAY_FORMATTER.parse((String) val).getTime()); + + case "Hour": + return new Timestamp(HOUR_FORMATTER.parse((String) val).getTime()); + + case "ISOWeek": + return new Timestamp(ISOWEEK_FORMATTER.parse((String) val).getTime()); + + case "Minute": + return new Timestamp(MINUTE_FORMATTER.parse((String) val).getTime()); + + case "Month": + return new Timestamp(MONTH_FORMATTER.parse((String) val).getTime()); + + case "Quarter": + return new Timestamp(QUARTER_FORMATTER.parse((String) val).getTime()); + + case "Second": + return new Timestamp(SECOND_FORMATTER.parse((String) val).getTime()); + + case "Week": + return new Timestamp(WEEK_FORMATTER.parse((String) val).getTime()); + + case "Year": + return new Timestamp(YEAR_FORMATTER.parse((String) val).getTime()); + + default: + return new Timestamp(ISO_FORMATTER.parse((String) val).getTime()); + } + } catch (ParseException pe) { + return new Timestamp(ISO_FORMATTER.parse((String) val).getTime()); + } + } +} From dfa4dd81166587dc9e1dc0b3a74b7d0a61cade24 Mon Sep 17 00:00:00 2001 From: amakwana Date: Mon, 4 Jan 2021 15:13:24 -0500 Subject: [PATCH 04/10] update ISO formatting --- .../aggregation/timegrains/Day.java | 10 +-- .../timegrains/TimeGrainFormatter.java | 63 +------------------ 2 files changed, 9 insertions(+), 64 deletions(-) diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java index 52521d1c26..fcfd563a52 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java @@ -10,6 +10,7 @@ import java.sql.Date; import java.text.ParseException; +import java.text.SimpleDateFormat; /** * Time Grain class for Day. @@ -17,6 +18,7 @@ public class Day extends Date implements TimeGrainFormatter { public static final String FORMAT = "yyyy-MM-dd"; + private static final SimpleDateFormat FORMATTER = new SimpleDateFormat(FORMAT); public Day(java.util.Date date) { super(date.getTime()); @@ -31,11 +33,11 @@ public Day deserialize(Object val) { try { if (val instanceof String) { - date = new Day(TimeGrainFormatter.formatDateString((String) val, "Day")); + date = new Day(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); } - date = new Day(TimeGrainFormatter.DAY_FORMATTER.parse(TimeGrainFormatter.DAY_FORMATTER.format(val))); + date = new Day(FORMATTER.parse(FORMATTER.format(val))); } catch (ParseException e) { - throw new IllegalArgumentException("String must be formatted as " + TimeGrainFormatter.DAY_FORMAT + throw new IllegalArgumentException("String must be formatted as " + FORMAT + " or " + TimeGrainFormatter.ISO_FORMAT); } return date; @@ -43,7 +45,7 @@ public Day deserialize(Object val) { @Override public String serialize(Day val) { - return TimeGrainFormatter.DAY_FORMATTER.format(val); + return FORMATTER.format(val); } } } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java index deb3826e87..9fe0a2a144 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java @@ -9,72 +9,15 @@ import java.text.ParseException; import java.text.SimpleDateFormat; -/** Interface for timegrain formatting */ +/** Interface for ISO timegrain Support. */ public interface TimeGrainFormatter { - public String DAY_FORMAT = "yyyy-MM-dd"; - SimpleDateFormat DAY_FORMATTER = new SimpleDateFormat(DAY_FORMAT); - - String HOUR_FORMAT = "yyyy-MM-dd'T'HH"; - SimpleDateFormat HOUR_FORMATTER = new SimpleDateFormat(HOUR_FORMAT); - - String ISOWEEK_FORMAT = "yyyy-MM-dd"; - SimpleDateFormat ISOWEEK_FORMATTER = new SimpleDateFormat(ISOWEEK_FORMAT); - - String MINUTE_FORMAT = "yyyy-MM-dd'T'HH:mm"; - SimpleDateFormat MINUTE_FORMATTER = new SimpleDateFormat(MINUTE_FORMAT); - - String SECOND_FORMAT = "yyyy-MM-dd'T'HH:mm:ss"; - SimpleDateFormat SECOND_FORMATTER = new SimpleDateFormat(SECOND_FORMAT); - - String QUARTER_FORMAT = "yyyy-MM"; - SimpleDateFormat QUARTER_FORMATTER = new SimpleDateFormat(QUARTER_FORMAT); - - String WEEK_FORMAT = "yyyy-MM-dd"; - SimpleDateFormat WEEK_FORMATTER = new SimpleDateFormat(WEEK_FORMAT); - - String YEAR_FORMAT = "yyyy"; - SimpleDateFormat YEAR_FORMATTER = new SimpleDateFormat(YEAR_FORMAT); - - String MONTH_FORMAT = "yyyy-MM"; - SimpleDateFormat MONTH_FORMATTER = new SimpleDateFormat(MONTH_FORMAT); - String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; SimpleDateFormat ISO_FORMATTER = new SimpleDateFormat(ISO_FORMAT); - static Timestamp formatDateString(String val, String type) throws ParseException { + static Timestamp formatDateString(SimpleDateFormat formatter, String val) throws ParseException { try { - switch (type) { - case "Day": - return new Timestamp(DAY_FORMATTER.parse((String) val).getTime()); - - case "Hour": - return new Timestamp(HOUR_FORMATTER.parse((String) val).getTime()); - - case "ISOWeek": - return new Timestamp(ISOWEEK_FORMATTER.parse((String) val).getTime()); - - case "Minute": - return new Timestamp(MINUTE_FORMATTER.parse((String) val).getTime()); - - case "Month": - return new Timestamp(MONTH_FORMATTER.parse((String) val).getTime()); - - case "Quarter": - return new Timestamp(QUARTER_FORMATTER.parse((String) val).getTime()); - - case "Second": - return new Timestamp(SECOND_FORMATTER.parse((String) val).getTime()); - - case "Week": - return new Timestamp(WEEK_FORMATTER.parse((String) val).getTime()); - - case "Year": - return new Timestamp(YEAR_FORMATTER.parse((String) val).getTime()); - - default: - return new Timestamp(ISO_FORMATTER.parse((String) val).getTime()); - } + return new Timestamp(formatter.parse((String) val).getTime()); } catch (ParseException pe) { return new Timestamp(ISO_FORMATTER.parse((String) val).getTime()); } From 5529c7bb11558a1745144d8deb9431ba365ab975 Mon Sep 17 00:00:00 2001 From: amakwana Date: Tue, 12 Jan 2021 11:33:20 -0500 Subject: [PATCH 05/10] support ISO --- .../elide/datastores/aggregation/timegrains/Day.java | 10 ++++++---- .../elide/datastores/aggregation/timegrains/Hour.java | 8 +++++--- .../datastores/aggregation/timegrains/ISOWeek.java | 9 +++++---- .../datastores/aggregation/timegrains/Minute.java | 8 +++++--- .../elide/datastores/aggregation/timegrains/Month.java | 9 +++++---- .../datastores/aggregation/timegrains/Quarter.java | 9 +++++---- .../datastores/aggregation/timegrains/Second.java | 8 +++++--- .../elide/datastores/aggregation/timegrains/Week.java | 9 +++++---- .../elide/datastores/aggregation/timegrains/Year.java | 7 ++++--- 9 files changed, 45 insertions(+), 32 deletions(-) diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java index fcfd563a52..1225003565 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java @@ -15,7 +15,7 @@ /** * Time Grain class for Day. */ -public class Day extends Date implements TimeGrainFormatter { +public class Day extends Date { public static final String FORMAT = "yyyy-MM-dd"; private static final SimpleDateFormat FORMATTER = new SimpleDateFormat(FORMAT); @@ -25,7 +25,7 @@ public Day(java.util.Date date) { } @ElideTypeConverter(type = Day.class, name = "Day") - static public class DaySerde implements Serde { + static public class DaySerde implements Serde, TimeGrainFormatter { @Override public Day deserialize(Object val) { @@ -33,9 +33,11 @@ public Day deserialize(Object val) { try { if (val instanceof String) { - date = new Day(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); + date = new Day(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, + (String) val)))); + } else { + date = new Day(FORMATTER.parse(FORMATTER.format(val))); } - date = new Day(FORMATTER.parse(FORMATTER.format(val))); } catch (ParseException e) { throw new IllegalArgumentException("String must be formatted as " + FORMAT + " or " + TimeGrainFormatter.ISO_FORMAT); diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Hour.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Hour.java index e94801d7da..64584a7620 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Hour.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Hour.java @@ -25,7 +25,7 @@ public Hour(java.util.Date date) { } @ElideTypeConverter(type = Hour.class, name = "Hour") - static public class HourSerde implements Serde { + static public class HourSerde implements Serde, TimeGrainFormatter { @Override public Hour deserialize(Object val) { @@ -33,12 +33,14 @@ public Hour deserialize(Object val) { try { if (val instanceof String) { - date = new Hour(new Timestamp(FORMATTER.parse((String) val).getTime())); + date = new Hour(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, + (String) val)))); } else { date = new Hour(FORMATTER.parse(FORMATTER.format(val))); } } catch (ParseException e) { - throw new IllegalArgumentException("String must be formatted as " + FORMAT); + throw new IllegalArgumentException("String must be formatted as " + FORMAT + + " or " + TimeGrainFormatter.ISO_FORMAT); } return date; diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/ISOWeek.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/ISOWeek.java index 90cab888fa..5a6309381f 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/ISOWeek.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/ISOWeek.java @@ -9,7 +9,6 @@ import com.yahoo.elide.core.utils.coerce.converters.Serde; import java.sql.Date; -import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -26,7 +25,7 @@ public ISOWeek(java.util.Date date) { } @ElideTypeConverter(type = ISOWeek.class, name = "ISOWeek") - static public class ISOWeekSerde implements Serde { + static public class ISOWeekSerde implements Serde, TimeGrainFormatter { private static final SimpleDateFormat WEEKDATE_FORMATTER = new SimpleDateFormat("u"); @Override @@ -36,12 +35,14 @@ public ISOWeek deserialize(Object val) { try { if (val instanceof String) { - date = new ISOWeek(new Timestamp(FORMATTER.parse((String) val).getTime())); + date = new ISOWeek(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, + (String) val)))); } else { date = new ISOWeek(FORMATTER.parse(FORMATTER.format(val))); } } catch (ParseException e) { - throw new IllegalArgumentException("String must be formatted as " + FORMAT); + throw new IllegalArgumentException("String must be formatted as " + FORMAT + + " or " + TimeGrainFormatter.ISO_FORMAT); } if (!WEEKDATE_FORMATTER.format(date).equals("1")) { diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Minute.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Minute.java index a2cb1dc5d5..99b2e0aced 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Minute.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Minute.java @@ -25,7 +25,7 @@ public Minute(java.util.Date date) { } @ElideTypeConverter(type = Minute.class, name = "Minute") - static public class MinuteSerde implements Serde { + static public class MinuteSerde implements Serde, TimeGrainFormatter { @Override public Minute deserialize(Object val) { @@ -33,12 +33,14 @@ public Minute deserialize(Object val) { try { if (val instanceof String) { - date = new Minute(new Timestamp(FORMATTER.parse((String) val).getTime())); + date = new Minute(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, + (String) val)))); } else { date = new Minute(FORMATTER.parse(FORMATTER.format(val))); } } catch (ParseException e) { - throw new IllegalArgumentException("String must be formatted as " + FORMAT); + throw new IllegalArgumentException("String must be formatted as " + FORMAT + + " or " + TimeGrainFormatter.ISO_FORMAT); } return date; diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Month.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Month.java index 7cfd4ce190..59555e88a4 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Month.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Month.java @@ -9,7 +9,6 @@ import com.yahoo.elide.core.utils.coerce.converters.Serde; import java.sql.Date; -import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -26,7 +25,7 @@ public Month(java.util.Date date) { } @ElideTypeConverter(type = Month.class, name = "Month") - static public class MonthSerde implements Serde { + static public class MonthSerde implements Serde, TimeGrainFormatter { @Override public Month deserialize(Object val) { @@ -34,12 +33,14 @@ public Month deserialize(Object val) { try { if (val instanceof String) { - date = new Month(new Timestamp(FORMATTER.parse((String) val).getTime())); + date = new Month(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, + (String) val)))); } else { date = new Month(FORMATTER.parse(FORMATTER.format(val))); } } catch (ParseException e) { - throw new IllegalArgumentException("String must be formatted as " + FORMAT); + throw new IllegalArgumentException("String must be formatted as " + FORMAT + + " or " + TimeGrainFormatter.ISO_FORMAT); } return date; diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Quarter.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Quarter.java index 8e460b2a06..f508e5e2dc 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Quarter.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Quarter.java @@ -9,7 +9,6 @@ import com.yahoo.elide.core.utils.coerce.converters.Serde; import java.sql.Date; -import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; @@ -29,7 +28,7 @@ public Quarter(java.util.Date date) { } @ElideTypeConverter(type = Quarter.class, name = "Quarter") - static public class QuarterSerde implements Serde { + static public class QuarterSerde implements Serde, TimeGrainFormatter { private static final SimpleDateFormat MONTH_FORMATTER = new SimpleDateFormat("M"); private static final Set QUARTER_MONTHS = new HashSet<>(Arrays.asList("1", "4", "7", "10")); @@ -40,12 +39,14 @@ public Quarter deserialize(Object val) { try { if (val instanceof String) { - date = new Quarter(new Timestamp(FORMATTER.parse((String) val).getTime())); + date = new Quarter(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, + (String) val)))); } else { date = new Quarter(FORMATTER.parse(FORMATTER.format(val))); } } catch (ParseException e) { - throw new IllegalArgumentException("String must be formatted as " + FORMAT); + throw new IllegalArgumentException("String must be formatted as " + FORMAT + + " or " + TimeGrainFormatter.ISO_FORMAT); } if (!QUARTER_MONTHS.contains(MONTH_FORMATTER.format(date))) { diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Second.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Second.java index 58495bf891..e06f65b99b 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Second.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Second.java @@ -31,7 +31,7 @@ public String toString() { } @ElideTypeConverter(type = Second.class, name = "Second") - static public class SecondSerde implements Serde { + static public class SecondSerde implements Serde, TimeGrainFormatter { @Override public Second deserialize(Object val) { @@ -39,12 +39,14 @@ public Second deserialize(Object val) { try { if (val instanceof String) { - date = new Second(new Timestamp(FORMATTER.parse((String) val).getTime())); + date = new Second(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, + (String) val)))); } else { date = new Second(FORMATTER.parse(FORMATTER.format(val))); } } catch (ParseException e) { - throw new IllegalArgumentException("String must be formatted as " + FORMAT); + throw new IllegalArgumentException("String must be formatted as " + FORMAT + + " or " + TimeGrainFormatter.ISO_FORMAT); } return date; diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Week.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Week.java index ba5e3cc587..91f837b90c 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Week.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Week.java @@ -9,7 +9,6 @@ import com.yahoo.elide.core.utils.coerce.converters.Serde; import java.sql.Date; -import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -26,7 +25,7 @@ public Week(java.util.Date date) { } @ElideTypeConverter(type = Week.class, name = "Week") - static public class WeekSerde implements Serde { + static public class WeekSerde implements Serde, TimeGrainFormatter { private static final SimpleDateFormat WEEKDATE_FORMATTER = new SimpleDateFormat("u"); @Override @@ -36,12 +35,14 @@ public Week deserialize(Object val) { try { if (val instanceof String) { - date = new Week(new Timestamp(FORMATTER.parse((String) val).getTime())); + date = new Week(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, + (String) val)))); } else { date = new Week(FORMATTER.parse(FORMATTER.format(val))); } } catch (ParseException e) { - throw new IllegalArgumentException("String must be formatted as " + FORMAT); + throw new IllegalArgumentException("String must be formatted as " + FORMAT + + " or " + TimeGrainFormatter.ISO_FORMAT); } if (!WEEKDATE_FORMATTER.format(date).equals("7")) { diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Year.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Year.java index 350f06e008..b23c3166a9 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Year.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Year.java @@ -9,7 +9,6 @@ import com.yahoo.elide.core.utils.coerce.converters.Serde; import java.sql.Date; -import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -34,12 +33,14 @@ public Year deserialize(Object val) { try { if (val instanceof String) { - date = new Year(new Timestamp(FORMATTER.parse((String) val).getTime())); + date = new Year(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, + (String) val)))); } else { date = new Year(FORMATTER.parse(FORMATTER.format(val))); } } catch (ParseException e) { - throw new IllegalArgumentException("String must be formatted as " + FORMAT); + throw new IllegalArgumentException("String must be formatted as " + FORMAT + + " or " + TimeGrainFormatter.ISO_FORMAT); } return date; From 3412eb16a9ddb5409f57aafcc19a50df15b947f3 Mon Sep 17 00:00:00 2001 From: amakwana Date: Wed, 13 Jan 2021 12:17:24 -0500 Subject: [PATCH 06/10] testcases --- .../aggregation/timegrains/TimeGrainFormatter.java | 2 +- .../aggregation/timegrains/serde/DaySerdeTest.java | 12 ++++++++++++ .../aggregation/timegrains/serde/HourSerdeTest.java | 11 +++++++++++ .../timegrains/serde/ISOWeekSerdeTest.java | 11 +++++++++++ .../timegrains/serde/MinuteSerdeTest.java | 11 +++++++++++ .../aggregation/timegrains/serde/MonthSerdeTest.java | 12 ++++++++++++ .../timegrains/serde/QuarterSerdeTest.java | 11 +++++++++++ .../timegrains/serde/SecondSerdeTest.java | 11 +++++++++++ .../aggregation/timegrains/serde/WeekSerdeTest.java | 11 +++++++++++ .../aggregation/timegrains/serde/YearSerdeTest.java | 11 +++++++++++ 10 files changed, 102 insertions(+), 1 deletion(-) diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java index 9fe0a2a144..c703865fe2 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java @@ -12,7 +12,7 @@ /** Interface for ISO timegrain Support. */ public interface TimeGrainFormatter { - String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; + String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ"; SimpleDateFormat ISO_FORMATTER = new SimpleDateFormat(ISO_FORMAT); static Timestamp formatDateString(SimpleDateFormat formatter, String val) throws ParseException { diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/DaySerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/DaySerdeTest.java index d2562f1358..ae6d0cb3ad 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/DaySerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/DaySerdeTest.java @@ -7,6 +7,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; + import com.yahoo.elide.core.utils.coerce.converters.Serde; import com.yahoo.elide.datastores.aggregation.timegrains.Day; import org.junit.jupiter.api.Test; @@ -17,6 +18,7 @@ public class DaySerdeTest { private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + private SimpleDateFormat isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); @Test public void testDateSerialize() throws ParseException { @@ -59,4 +61,14 @@ public void testDeserializeDateInvalidFormat() throws ParseException { serde.deserialize(dateInString); }); } + + @Test + public void testISODateString() throws ParseException { + String dateInString = "2021-01-12T00:00:00-0500"; + Day expectedDate = new Day(isoFormatter.parse(dateInString)); + String actual = "2021-01-12"; + Serde serde = new Day.DaySerde(); + Object actualDate = serde.deserialize(actual); + assertEquals(expectedDate, actualDate); + } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/HourSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/HourSerdeTest.java index 2cfc2d7926..c2dd64bb93 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/HourSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/HourSerdeTest.java @@ -18,6 +18,7 @@ public class HourSerdeTest { private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH"); + private SimpleDateFormat isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); @Test public void testDateSerialize() throws ParseException { @@ -60,4 +61,14 @@ public void testDeserializeDateInvalidFormat() throws ParseException { serde.deserialize(dateInString); }); } + + @Test + public void testISODateString() throws ParseException { + String dateInString = "2021-01-12T08:00:00-0500"; + Hour expectedDate = new Hour(isoFormatter.parse(dateInString)); + Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Serde serde = new Hour.HourSerde(); + Object actualDate = serde.deserialize(timestamp); + assertEquals(expectedDate, actualDate); + } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/ISOWeekSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/ISOWeekSerdeTest.java index fa5f7cb4f0..2966bb69cd 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/ISOWeekSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/ISOWeekSerdeTest.java @@ -18,6 +18,7 @@ public class ISOWeekSerdeTest { private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + private SimpleDateFormat isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); @Test public void testDateSerialize() throws ParseException { @@ -71,4 +72,14 @@ public void testDeserializeDateInvalidFormat() throws ParseException { serde.deserialize(dateInString); }); } + + @Test + public void testISODateString() throws ParseException { + String dateInString = "2021-01-11T00:00:00-0500"; + ISOWeek expectedDate = new ISOWeek(isoFormatter.parse(dateInString)); + Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Serde serde = new ISOWeek.ISOWeekSerde(); + Object actualDate = serde.deserialize(timestamp); + assertEquals(expectedDate, actualDate); + } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java index 383fcc4c6b..cffa79802b 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java @@ -18,6 +18,7 @@ public class MinuteSerdeTest { private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm"); + private SimpleDateFormat isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); @Test public void testDateSerialize() throws ParseException { @@ -60,4 +61,14 @@ public void testDeserializeDateInvalidFormat() throws ParseException { serde.deserialize(dateInString); }); } + + @Test + public void testISODateString() throws ParseException { + String dateInString = "2021-01-12T08:10:00-0500"; + Minute expectedDate = new Minute(isoFormatter.parse(dateInString)); + Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Serde serde = new Minute.MinuteSerde(); + Object actualDate = serde.deserialize(timestamp); + assertEquals(expectedDate, actualDate); + } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MonthSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MonthSerdeTest.java index 31ca919fdc..f9a87e77ed 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MonthSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MonthSerdeTest.java @@ -9,6 +9,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import com.yahoo.elide.core.utils.coerce.converters.Serde; import com.yahoo.elide.datastores.aggregation.timegrains.Month; + import org.junit.jupiter.api.Test; import java.sql.Timestamp; @@ -17,6 +18,7 @@ public class MonthSerdeTest { private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); + private SimpleDateFormat isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); @Test public void testDateSerialize() throws ParseException { @@ -59,4 +61,14 @@ public void testDeserializeDateInvalidFormat() throws ParseException { serde.deserialize(dateInString); }); } + + @Test + public void testISODateString() throws ParseException { + String dateInString = "2021-01-01T00:00:00-0500"; + Month expectedDate = new Month(isoFormatter.parse(dateInString)); + Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Serde serde = new Month.MonthSerde(); + Object actualDate = serde.deserialize(timestamp); + assertEquals(expectedDate, actualDate); + } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/QuarterSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/QuarterSerdeTest.java index 6ff80f773c..1bf00d68d6 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/QuarterSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/QuarterSerdeTest.java @@ -17,6 +17,7 @@ public class QuarterSerdeTest { private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); + private SimpleDateFormat isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); @Test public void testDateSerialize() throws ParseException { @@ -70,4 +71,14 @@ public void testDeserializeDateInvalidFormat() throws ParseException { serde.deserialize(dateInString); }); } + + @Test + public void testISODateString() throws ParseException { + String dateInString = "2021-01-01T00:00:00-0500"; + Quarter expectedDate = new Quarter(isoFormatter.parse(dateInString)); + Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Serde serde = new Quarter.QuarterSerde(); + Object actualDate = serde.deserialize(timestamp); + assertEquals(expectedDate, actualDate); + } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/SecondSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/SecondSerdeTest.java index ffaf29a2b1..452b22a6df 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/SecondSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/SecondSerdeTest.java @@ -18,6 +18,7 @@ public class SecondSerdeTest { private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + private SimpleDateFormat isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); @Test public void testDateSerialize() throws ParseException { @@ -60,4 +61,14 @@ public void testDeserializeDateInvalidFormat() throws ParseException { serde.deserialize(dateInString); }); } + + @Test + public void testISODateString() throws ParseException { + String dateInString = "2021-01-12T00:00:00-0500"; + Second expectedDate = new Second(isoFormatter.parse(dateInString)); + Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Serde serde = new Second.SecondSerde(); + Object actualDate = serde.deserialize(timestamp); + assertEquals(expectedDate, actualDate); + } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/WeekSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/WeekSerdeTest.java index 5cb770cfc1..5859671c13 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/WeekSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/WeekSerdeTest.java @@ -18,6 +18,7 @@ public class WeekSerdeTest { private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + private SimpleDateFormat isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); @Test public void testDateSerialize() throws ParseException { @@ -71,4 +72,14 @@ public void testDeserializeDateInvalidFormat() throws ParseException { serde.deserialize(dateInString); }); } + + @Test + public void testISODateString() throws ParseException { + String dateInString = "2021-01-10T00:00:00-0500"; + Week expectedDate = new Week(isoFormatter.parse(dateInString)); + Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Serde serde = new Week.WeekSerde(); + Object actualDate = serde.deserialize(timestamp); + assertEquals(expectedDate, actualDate); + } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/YearSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/YearSerdeTest.java index 11d3728ef6..b5727e9de4 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/YearSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/YearSerdeTest.java @@ -17,6 +17,7 @@ public class YearSerdeTest { private SimpleDateFormat formatter = new SimpleDateFormat("yyyy"); + private SimpleDateFormat isoFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); @Test public void testDateSerialize() throws ParseException { @@ -59,4 +60,14 @@ public void testDeserializeDateInvalidFormat() throws ParseException { serde.deserialize(dateInString); }); } + + @Test + public void testISODateString() throws ParseException { + String dateInString = "2021-01-01T00:00:00-0500"; + Year expectedDate = new Year(isoFormatter.parse(dateInString)); + Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Serde serde = new Year.YearSerde(); + Object actualDate = serde.deserialize(timestamp); + assertEquals(expectedDate, actualDate); + } } From d2c7d90399692e27f9551d1627e49e26b1bfdfbe Mon Sep 17 00:00:00 2001 From: amakwana Date: Wed, 13 Jan 2021 23:38:17 -0500 Subject: [PATCH 07/10] update testcase --- .../aggregation/timegrains/serde/DaySerdeTest.java | 6 +++--- .../aggregation/timegrains/serde/HourSerdeTest.java | 6 +++--- .../aggregation/timegrains/serde/ISOWeekSerdeTest.java | 8 ++++---- .../aggregation/timegrains/serde/MinuteSerdeTest.java | 4 ++-- .../aggregation/timegrains/serde/MonthSerdeTest.java | 8 ++++---- .../aggregation/timegrains/serde/QuarterSerdeTest.java | 6 +++--- .../aggregation/timegrains/serde/SecondSerdeTest.java | 8 ++++---- .../aggregation/timegrains/serde/WeekSerdeTest.java | 6 +++--- .../aggregation/timegrains/serde/YearSerdeTest.java | 6 +++--- 9 files changed, 29 insertions(+), 29 deletions(-) diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/DaySerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/DaySerdeTest.java index ae6d0cb3ad..2f5566a92d 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/DaySerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/DaySerdeTest.java @@ -64,9 +64,9 @@ public void testDeserializeDateInvalidFormat() throws ParseException { @Test public void testISODateString() throws ParseException { - String dateInString = "2021-01-12T00:00:00-0500"; - Day expectedDate = new Day(isoFormatter.parse(dateInString)); - String actual = "2021-01-12"; + String dateInString = "2020-01-01T00:00:00-0500"; + Day expectedDate = new Day(formatter.parse(dateInString)); + String actual = "2020-01-01"; Serde serde = new Day.DaySerde(); Object actualDate = serde.deserialize(actual); assertEquals(expectedDate, actualDate); diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/HourSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/HourSerdeTest.java index c2dd64bb93..fbf23e244a 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/HourSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/HourSerdeTest.java @@ -65,10 +65,10 @@ public void testDeserializeDateInvalidFormat() throws ParseException { @Test public void testISODateString() throws ParseException { String dateInString = "2021-01-12T08:00:00-0500"; - Hour expectedDate = new Hour(isoFormatter.parse(dateInString)); - Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + String expectedDate = new Hour(isoFormatter.parse(dateInString)).toString(); + Timestamp timestamp = new Timestamp(isoFormatter.parse(dateInString).getTime()); Serde serde = new Hour.HourSerde(); - Object actualDate = serde.deserialize(timestamp); + String actualDate = serde.deserialize(timestamp).toString(); assertEquals(expectedDate, actualDate); } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/ISOWeekSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/ISOWeekSerdeTest.java index 2966bb69cd..dd4a9377e7 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/ISOWeekSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/ISOWeekSerdeTest.java @@ -75,11 +75,11 @@ public void testDeserializeDateInvalidFormat() throws ParseException { @Test public void testISODateString() throws ParseException { - String dateInString = "2021-01-11T00:00:00-0500"; - ISOWeek expectedDate = new ISOWeek(isoFormatter.parse(dateInString)); - Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + String dateInString = "2020-01-06T00:00:00-0500"; + Date expectedDate = new Date(formatter.parse(dateInString).getTime()); + String actual = "2020-01-06"; Serde serde = new ISOWeek.ISOWeekSerde(); - Object actualDate = serde.deserialize(timestamp); + Object actualDate = serde.deserialize(actual); assertEquals(expectedDate, actualDate); } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java index cffa79802b..1bc0817d6b 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java @@ -65,10 +65,10 @@ public void testDeserializeDateInvalidFormat() throws ParseException { @Test public void testISODateString() throws ParseException { String dateInString = "2021-01-12T08:10:00-0500"; - Minute expectedDate = new Minute(isoFormatter.parse(dateInString)); + String expectedDate = new Minute(isoFormatter.parse(dateInString)).toString(); Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); Serde serde = new Minute.MinuteSerde(); - Object actualDate = serde.deserialize(timestamp); + String actualDate = serde.deserialize(timestamp).toString(); assertEquals(expectedDate, actualDate); } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MonthSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MonthSerdeTest.java index f9a87e77ed..560a479f03 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MonthSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MonthSerdeTest.java @@ -64,11 +64,11 @@ public void testDeserializeDateInvalidFormat() throws ParseException { @Test public void testISODateString() throws ParseException { - String dateInString = "2021-01-01T00:00:00-0500"; - Month expectedDate = new Month(isoFormatter.parse(dateInString)); - Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + String dateInString = "2020-01-01T00:00:00-0500"; + Month expectedDate = new Month(formatter.parse(dateInString)); + String actual = "2020-01"; Serde serde = new Month.MonthSerde(); - Object actualDate = serde.deserialize(timestamp); + Object actualDate = serde.deserialize(actual); assertEquals(expectedDate, actualDate); } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/QuarterSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/QuarterSerdeTest.java index 1bf00d68d6..f37ad30f99 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/QuarterSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/QuarterSerdeTest.java @@ -75,10 +75,10 @@ public void testDeserializeDateInvalidFormat() throws ParseException { @Test public void testISODateString() throws ParseException { String dateInString = "2021-01-01T00:00:00-0500"; - Quarter expectedDate = new Quarter(isoFormatter.parse(dateInString)); - Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Quarter expectedDate = new Quarter(formatter.parse(dateInString)); + String actual = "2021-01"; Serde serde = new Quarter.QuarterSerde(); - Object actualDate = serde.deserialize(timestamp); + Object actualDate = serde.deserialize(actual); assertEquals(expectedDate, actualDate); } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/SecondSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/SecondSerdeTest.java index 452b22a6df..b34f13fd0f 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/SecondSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/SecondSerdeTest.java @@ -64,11 +64,11 @@ public void testDeserializeDateInvalidFormat() throws ParseException { @Test public void testISODateString() throws ParseException { - String dateInString = "2021-01-12T00:00:00-0500"; - Second expectedDate = new Second(isoFormatter.parse(dateInString)); - Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + String dateInString = "2020-01-01T01:18:19-0000"; + Date expectedDate = new Date(formatter.parse(dateInString).getTime()); + String actual = "2020-01-01T01:18:19"; Serde serde = new Second.SecondSerde(); - Object actualDate = serde.deserialize(timestamp); + Object actualDate = serde.deserialize(actual); assertEquals(expectedDate, actualDate); } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/WeekSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/WeekSerdeTest.java index 5859671c13..9457773ff4 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/WeekSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/WeekSerdeTest.java @@ -76,10 +76,10 @@ public void testDeserializeDateInvalidFormat() throws ParseException { @Test public void testISODateString() throws ParseException { String dateInString = "2021-01-10T00:00:00-0500"; - Week expectedDate = new Week(isoFormatter.parse(dateInString)); - Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Date expectedDate = new Date(formatter.parse(dateInString).getTime()); + String actual = "2021-01-10"; Serde serde = new Week.WeekSerde(); - Object actualDate = serde.deserialize(timestamp); + Object actualDate = serde.deserialize(actual); assertEquals(expectedDate, actualDate); } } diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/YearSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/YearSerdeTest.java index b5727e9de4..e461df87b6 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/YearSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/YearSerdeTest.java @@ -64,10 +64,10 @@ public void testDeserializeDateInvalidFormat() throws ParseException { @Test public void testISODateString() throws ParseException { String dateInString = "2021-01-01T00:00:00-0500"; - Year expectedDate = new Year(isoFormatter.parse(dateInString)); - Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + Year expectedDate = new Year(formatter.parse(dateInString)); + String actual = "2021"; Serde serde = new Year.YearSerde(); - Object actualDate = serde.deserialize(timestamp); + Object actualDate = serde.deserialize(actual); assertEquals(expectedDate, actualDate); } } From 348fea256ee527f0c5e6c32837181ae21f54a330 Mon Sep 17 00:00:00 2001 From: amakwana Date: Wed, 13 Jan 2021 23:56:53 -0500 Subject: [PATCH 08/10] minute test --- .../aggregation/timegrains/serde/MinuteSerdeTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java index 1bc0817d6b..2f9550d56e 100644 --- a/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java +++ b/elide-datastore/elide-datastore-aggregation/src/test/java/com/yahoo/elide/datastores/aggregation/timegrains/serde/MinuteSerdeTest.java @@ -64,11 +64,11 @@ public void testDeserializeDateInvalidFormat() throws ParseException { @Test public void testISODateString() throws ParseException { - String dateInString = "2021-01-12T08:10:00-0500"; - String expectedDate = new Minute(isoFormatter.parse(dateInString)).toString(); - Timestamp timestamp = new Timestamp(formatter.parse(dateInString).getTime()); + String dateInString = "2020-01-01T01:18:00-0500"; + Date expectedDate = new Date(formatter.parse(dateInString).getTime()); + String actual = "2020-01-01T01:18"; Serde serde = new Minute.MinuteSerde(); - String actualDate = serde.deserialize(timestamp).toString(); + Object actualDate = serde.deserialize(actual); assertEquals(expectedDate, actualDate); } } From abeae82b901a3dd7e790fa36add0318c3c2c0ecf Mon Sep 17 00:00:00 2001 From: amakwana Date: Thu, 14 Jan 2021 00:17:10 -0500 Subject: [PATCH 09/10] formt --- .../datastores/aggregation/timegrains/TimeGrainFormatter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java index c703865fe2..9fe0a2a144 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java @@ -12,7 +12,7 @@ /** Interface for ISO timegrain Support. */ public interface TimeGrainFormatter { - String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ"; + String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; SimpleDateFormat ISO_FORMATTER = new SimpleDateFormat(ISO_FORMAT); static Timestamp formatDateString(SimpleDateFormat formatter, String val) throws ParseException { From ae3658f87fd1f8c50327648108827cbf6b925dfb Mon Sep 17 00:00:00 2001 From: amakwana Date: Fri, 15 Jan 2021 12:08:30 -0500 Subject: [PATCH 10/10] review comment --- .../yahoo/elide/datastores/aggregation/timegrains/Day.java | 3 +-- .../yahoo/elide/datastores/aggregation/timegrains/Hour.java | 3 +-- .../elide/datastores/aggregation/timegrains/ISOWeek.java | 3 +-- .../yahoo/elide/datastores/aggregation/timegrains/Minute.java | 3 +-- .../yahoo/elide/datastores/aggregation/timegrains/Month.java | 3 +-- .../elide/datastores/aggregation/timegrains/Quarter.java | 3 +-- .../yahoo/elide/datastores/aggregation/timegrains/Second.java | 3 +-- .../datastores/aggregation/timegrains/TimeGrainFormatter.java | 4 ++-- .../yahoo/elide/datastores/aggregation/timegrains/Week.java | 3 +-- .../yahoo/elide/datastores/aggregation/timegrains/Year.java | 3 +-- 10 files changed, 11 insertions(+), 20 deletions(-) diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java index 1225003565..eceb34dcce 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Day.java @@ -33,8 +33,7 @@ public Day deserialize(Object val) { try { if (val instanceof String) { - date = new Day(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, - (String) val)))); + date = new Day(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); } else { date = new Day(FORMATTER.parse(FORMATTER.format(val))); } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Hour.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Hour.java index 64584a7620..dca40fd0a2 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Hour.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Hour.java @@ -33,8 +33,7 @@ public Hour deserialize(Object val) { try { if (val instanceof String) { - date = new Hour(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, - (String) val)))); + date = new Hour(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); } else { date = new Hour(FORMATTER.parse(FORMATTER.format(val))); } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/ISOWeek.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/ISOWeek.java index 5a6309381f..a6e8aa6ca7 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/ISOWeek.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/ISOWeek.java @@ -35,8 +35,7 @@ public ISOWeek deserialize(Object val) { try { if (val instanceof String) { - date = new ISOWeek(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, - (String) val)))); + date = new ISOWeek(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); } else { date = new ISOWeek(FORMATTER.parse(FORMATTER.format(val))); } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Minute.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Minute.java index 99b2e0aced..a7813e3f8b 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Minute.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Minute.java @@ -33,8 +33,7 @@ public Minute deserialize(Object val) { try { if (val instanceof String) { - date = new Minute(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, - (String) val)))); + date = new Minute(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); } else { date = new Minute(FORMATTER.parse(FORMATTER.format(val))); } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Month.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Month.java index 59555e88a4..ffde2e19f7 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Month.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Month.java @@ -33,8 +33,7 @@ public Month deserialize(Object val) { try { if (val instanceof String) { - date = new Month(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, - (String) val)))); + date = new Month(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); } else { date = new Month(FORMATTER.parse(FORMATTER.format(val))); } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Quarter.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Quarter.java index f508e5e2dc..0cce95fee3 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Quarter.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Quarter.java @@ -39,8 +39,7 @@ public Quarter deserialize(Object val) { try { if (val instanceof String) { - date = new Quarter(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, - (String) val)))); + date = new Quarter(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); } else { date = new Quarter(FORMATTER.parse(FORMATTER.format(val))); } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Second.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Second.java index e06f65b99b..0e8f23476b 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Second.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Second.java @@ -39,8 +39,7 @@ public Second deserialize(Object val) { try { if (val instanceof String) { - date = new Second(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, - (String) val)))); + date = new Second(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); } else { date = new Second(FORMATTER.parse(FORMATTER.format(val))); } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java index 9fe0a2a144..f90ae39ebd 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/TimeGrainFormatter.java @@ -17,9 +17,9 @@ public interface TimeGrainFormatter { static Timestamp formatDateString(SimpleDateFormat formatter, String val) throws ParseException { try { - return new Timestamp(formatter.parse((String) val).getTime()); + return new Timestamp(formatter.parse(val).getTime()); } catch (ParseException pe) { - return new Timestamp(ISO_FORMATTER.parse((String) val).getTime()); + return new Timestamp(ISO_FORMATTER.parse(val).getTime()); } } } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Week.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Week.java index 91f837b90c..f023fb2e2f 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Week.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Week.java @@ -35,8 +35,7 @@ public Week deserialize(Object val) { try { if (val instanceof String) { - date = new Week(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, - (String) val)))); + date = new Week(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); } else { date = new Week(FORMATTER.parse(FORMATTER.format(val))); } diff --git a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Year.java b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Year.java index b23c3166a9..9cc7197c9e 100644 --- a/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Year.java +++ b/elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/timegrains/Year.java @@ -33,8 +33,7 @@ public Year deserialize(Object val) { try { if (val instanceof String) { - date = new Year(FORMATTER.parse(FORMATTER.format(TimeGrainFormatter.formatDateString(FORMATTER, - (String) val)))); + date = new Year(TimeGrainFormatter.formatDateString(FORMATTER, (String) val)); } else { date = new Year(FORMATTER.parse(FORMATTER.format(val))); }