[ 
https://issues.apache.org/jira/browse/GOBBLIN-1708?focusedWorklogId=810156&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-810156
 ]

ASF GitHub Bot logged work on GOBBLIN-1708:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 19/Sep/22 18:58
            Start Date: 19/Sep/22 18:58
    Worklog Time Spent: 10m 
      Work Description: arjun4084346 commented on code in PR #3563:
URL: https://github.com/apache/gobblin/pull/3563#discussion_r974575775


##########
gobblin-data-management/src/main/java/org/apache/gobblin/data/management/copy/TimeAwareRecursiveCopyableDataset.java:
##########
@@ -134,9 +134,41 @@ protected List<FileStatus> getFilesAtPath(FileSystem fs, 
Path path, PathFilter f
     return recursivelyGetFilesAtDatePath(fs, path, "", fileFilter, 1, 
startDate, endDate, formatter);
   }
 
+  /**
+   * Checks if the datePath provided is in the range of the start and end 
dates.
+   * Rounds startDate and endDate to the same granularity as datePath prior to 
comparing.
+   * Returns true if the datePath provided is in the range of start and end 
dates, inclusive.
+   * @param startDate
+   * @param endDate
+   * @param datePath
+   * @return true/false
+   */
+  public Boolean checkPathDateTimeValidity(LocalDateTime startDate, 
LocalDateTime endDate, String datePath) {
+    boolean onlyNumbers = datePath.matches("^[0-9/]+$");
+    if (onlyNumbers) {
+      String allGranularity = "yyyy/MM/dd/HH/mm/ss/SSS";
+      String roundGranularity = allGranularity.substring(0, datePath.length());
+      DateTimeFormatter formatGranularity = 
DateTimeFormat.forPattern(roundGranularity);
+
+      LocalDateTime traversedDatePathRound = 
formatGranularity.parseLocalDateTime(datePath);
+      LocalDateTime startDateRound = 
formatGranularity.parseLocalDateTime(startDate.toString(roundGranularity));
+      LocalDateTime endDateRound = 
formatGranularity.parseLocalDateTime(endDate.toString(roundGranularity));
+
+      boolean afterOrOnStartDate = 
traversedDatePathRound.isAfter(startDateRound) || 
traversedDatePathRound.isEqual(startDateRound);
+      boolean beforeOrOnEndDate = 
traversedDatePathRound.isBefore(endDateRound) || 
traversedDatePathRound.isEqual(endDateRound);
+      return afterOrOnStartDate && beforeOrOnEndDate;
+    }
+    return false;

Review Comment:
   Should it return true?





Issue Time Tracking
-------------------

    Worklog Id:     (was: 810156)
    Time Spent: 2h  (was: 1h 50m)

> Improve TimeAwareRecursiveCopyableDataset to lookback only into datefolders 
> that match range
> --------------------------------------------------------------------------------------------
>
>                 Key: GOBBLIN-1708
>                 URL: https://issues.apache.org/jira/browse/GOBBLIN-1708
>             Project: Apache Gobblin
>          Issue Type: Improvement
>            Reporter: Andy Jiang
>            Priority: Major
>          Time Spent: 2h
>  Remaining Estimate: 0h
>




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to