From ee3af63c0475bb2cd96be7675c671a32edff2c18 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 18 Oct 2020 07:52:28 +0530 Subject: [PATCH] Switch to ChronoUnit. --- .../extractor/localization/TimeAgoParser.java | 24 +++++++------- .../extractor/timeago/PatternsHolder.java | 32 ++++++++----------- .../extractor/timeago/TimeAgoUnit.java | 11 ------- .../extractor/timeago/patterns/iw.java | 13 ++++---- 4 files changed, 33 insertions(+), 47 deletions(-) delete mode 100644 timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/TimeAgoUnit.java diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/localization/TimeAgoParser.java b/extractor/src/main/java/org/schabi/newpipe/extractor/localization/TimeAgoParser.java index fe20135f..83b4aed2 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/localization/TimeAgoParser.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/localization/TimeAgoParser.java @@ -2,9 +2,9 @@ package org.schabi.newpipe.extractor.localization; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.timeago.PatternsHolder; -import org.schabi.newpipe.extractor.timeago.TimeAgoUnit; import org.schabi.newpipe.extractor.utils.Parser; +import java.time.temporal.ChronoUnit; import java.util.Calendar; import java.util.Collection; import java.util.Map; @@ -42,14 +42,14 @@ public class TimeAgoParser { * @throws ParsingException if the time unit could not be recognized */ public DateWrapper parse(String textualDate) throws ParsingException { - for (Map.Entry> caseUnitEntry : patternsHolder.specialCases().entrySet()) { - final TimeAgoUnit timeAgoUnit = caseUnitEntry.getKey(); + for (Map.Entry> caseUnitEntry : patternsHolder.specialCases().entrySet()) { + final ChronoUnit chronoUnit = caseUnitEntry.getKey(); for (Map.Entry caseMapToAmountEntry : caseUnitEntry.getValue().entrySet()) { final String caseText = caseMapToAmountEntry.getKey(); final Integer caseAmount = caseMapToAmountEntry.getValue(); if (textualDateMatches(textualDate, caseText)) { - return getResultFor(caseAmount, timeAgoUnit); + return getResultFor(caseAmount, chronoUnit); } } } @@ -63,8 +63,8 @@ public class TimeAgoParser { timeAgoAmount = 1; } - final TimeAgoUnit timeAgoUnit = parseTimeAgoUnit(textualDate); - return getResultFor(timeAgoAmount, timeAgoUnit); + final ChronoUnit chronoUnit = parseChronoUnit(textualDate); + return getResultFor(timeAgoAmount, chronoUnit); } private int parseTimeAgoAmount(String textualDate) throws NumberFormatException { @@ -72,13 +72,13 @@ public class TimeAgoParser { return Integer.parseInt(timeValueStr); } - private TimeAgoUnit parseTimeAgoUnit(String textualDate) throws ParsingException { - for (Map.Entry> entry : patternsHolder.asMap().entrySet()) { - final TimeAgoUnit timeAgoUnit = entry.getKey(); + private ChronoUnit parseChronoUnit(String textualDate) throws ParsingException { + for (Map.Entry> entry : patternsHolder.asMap().entrySet()) { + final ChronoUnit chronoUnit = entry.getKey(); for (String agoPhrase : entry.getValue()) { if (textualDateMatches(textualDate, agoPhrase)) { - return timeAgoUnit; + return chronoUnit; } } } @@ -112,11 +112,11 @@ public class TimeAgoParser { } } - private DateWrapper getResultFor(int timeAgoAmount, TimeAgoUnit timeAgoUnit) { + private DateWrapper getResultFor(int timeAgoAmount, ChronoUnit chronoUnit) { final Calendar calendarTime = getNow(); boolean isApproximation = false; - switch (timeAgoUnit) { + switch (chronoUnit) { case SECONDS: calendarTime.add(Calendar.SECOND, -timeAgoAmount); break; diff --git a/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/PatternsHolder.java b/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/PatternsHolder.java index 91f93102..f7dc9963 100644 --- a/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/PatternsHolder.java +++ b/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/PatternsHolder.java @@ -1,5 +1,6 @@ package org.schabi.newpipe.extractor.timeago; +import java.time.temporal.ChronoUnit; import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; @@ -16,7 +17,7 @@ public abstract class PatternsHolder { private final Collection months; private final Collection years; - private final Map> specialCases = new LinkedHashMap<>(); + private final Map> specialCases = new LinkedHashMap<>(); protected PatternsHolder(String wordSeparator, Collection seconds, Collection minutes, Collection hours, Collection days, @@ -69,30 +70,25 @@ public abstract class PatternsHolder { return years; } - public Map> specialCases() { + public Map> specialCases() { return specialCases; } - protected void putSpecialCase(TimeAgoUnit unit, String caseText, int caseAmount) { - Map item = specialCases.get(unit); - - if (item == null) { - item = new LinkedHashMap<>(); - specialCases.put(unit, item); - } + protected void putSpecialCase(ChronoUnit unit, String caseText, int caseAmount) { + Map item = specialCases.computeIfAbsent(unit, k -> new LinkedHashMap<>()); item.put(caseText, caseAmount); } - public Map> asMap() { - final Map> returnMap = new LinkedHashMap<>(); - returnMap.put(TimeAgoUnit.SECONDS, seconds()); - returnMap.put(TimeAgoUnit.MINUTES, minutes()); - returnMap.put(TimeAgoUnit.HOURS, hours()); - returnMap.put(TimeAgoUnit.DAYS, days()); - returnMap.put(TimeAgoUnit.WEEKS, weeks()); - returnMap.put(TimeAgoUnit.MONTHS, months()); - returnMap.put(TimeAgoUnit.YEARS, years()); + public Map> asMap() { + final Map> returnMap = new LinkedHashMap<>(); + returnMap.put(ChronoUnit.SECONDS, seconds()); + returnMap.put(ChronoUnit.MINUTES, minutes()); + returnMap.put(ChronoUnit.HOURS, hours()); + returnMap.put(ChronoUnit.DAYS, days()); + returnMap.put(ChronoUnit.WEEKS, weeks()); + returnMap.put(ChronoUnit.MONTHS, months()); + returnMap.put(ChronoUnit.YEARS, years()); return returnMap; } diff --git a/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/TimeAgoUnit.java b/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/TimeAgoUnit.java deleted file mode 100644 index 16e05c24..00000000 --- a/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/TimeAgoUnit.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.schabi.newpipe.extractor.timeago; - -public enum TimeAgoUnit { - SECONDS, - MINUTES, - HOURS, - DAYS, - WEEKS, - MONTHS, - YEARS -} diff --git a/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/patterns/iw.java b/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/patterns/iw.java index a04bf74f..6f89e025 100644 --- a/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/patterns/iw.java +++ b/timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/patterns/iw.java @@ -5,7 +5,8 @@ package org.schabi.newpipe.extractor.timeago.patterns; import org.schabi.newpipe.extractor.timeago.PatternsHolder; -import org.schabi.newpipe.extractor.timeago.TimeAgoUnit; + +import java.time.temporal.ChronoUnit; public class iw extends PatternsHolder { private static final String WORD_SEPARATOR = " "; @@ -26,10 +27,10 @@ public class iw extends PatternsHolder { private iw() { super(WORD_SEPARATOR, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS); - putSpecialCase(TimeAgoUnit.HOURS, "שעתיים", 2); - putSpecialCase(TimeAgoUnit.DAYS, "יומיים", 2); - putSpecialCase(TimeAgoUnit.WEEKS, "שבועיים", 2); - putSpecialCase(TimeAgoUnit.MONTHS, "חודשיים", 2); - putSpecialCase(TimeAgoUnit.YEARS, "שנתיים", 2); + putSpecialCase(ChronoUnit.HOURS, "שעתיים", 2); + putSpecialCase(ChronoUnit.DAYS, "יומיים", 2); + putSpecialCase(ChronoUnit.WEEKS, "שבועיים", 2); + putSpecialCase(ChronoUnit.MONTHS, "חודשיים", 2); + putSpecialCase(ChronoUnit.YEARS, "שנתיים", 2); } } \ No newline at end of file