diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java index 4a84e70..1d7d79b 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java @@ -18,7 +18,7 @@ import java.util.regex.Pattern; public class FileFilter { private final Set excluded; private final Pattern includePattern; - private final Date filterDate; + private final Instant filterDate; private final LastExecutionHandler lastExecutionHandler; private final String EXTENSION_GROUP = "extension"; @@ -52,10 +52,6 @@ public class FileFilter { return includePattern.matcher(pathName.getName()).matches(); } - private boolean isNewer(File pathName, Date date) { - return isNewer(pathName, date.toInstant()); - } - private boolean isNewer(File pathName, Instant date) { if (date == null) return true; try { diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/InputConfig.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/InputConfig.java index 0a9db0e..5e9c629 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/InputConfig.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/InputConfig.java @@ -12,6 +12,7 @@ import org.apache.commons.lang3.SystemUtils; import picocli.CommandLine; import java.io.File; +import java.time.Instant; import java.util.*; import java.util.regex.Pattern; import picocli.CommandLine.Option; @@ -56,7 +57,7 @@ public class InputConfig implements CommandLine.IVersionProvider { @Option(names = {"-n", "--only-new-files"}, description = "ignores all files unchanged and previously processed") private boolean onlyNewFiles; @Option(names = {"-d", "--filter-date"}, defaultValue = Option.NULL_VALUE, description = "only consider files created newer than entered date (format: \"dd.MM.yyyy-HH:mm:ss\")") - private Date filterDate; + private Instant filterDate; @Option(names = {"-i", "--include-pattern"}, defaultValue = ".*", description = "include files matching pattern") private Pattern includePattern; @Option(names = {"-e", "--exclude"}, arity = "1..*", diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtils.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtils.java deleted file mode 100644 index 61eaa20..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtils.java +++ /dev/null @@ -1,29 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; - -public class DateUtils { - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy-HH:mm:ss"); - - public static Date convert(long millis) { - return new Date(millis); - } - - /** - * Convert String to date. - * @return parsed date, defaultDate if exception occurs - */ - public static Date convert(String date, Date defaultDate) { - try { - return dateFormat.parse(date); - } catch (ParseException e) { - return defaultDate; - } - } - - public static String convert(Date date) { - return dateFormat.format(date); - } -} diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilterTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilterTest.java index acafa6d..0ce5d1f 100644 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilterTest.java +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilterTest.java @@ -1,8 +1,6 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger.impl; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.InputConfig; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ResultStatistic; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.util.DateUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; @@ -14,11 +12,13 @@ import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; import java.io.File; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.attribute.BasicFileAttributes; -import java.util.Date; +import java.nio.file.attribute.FileTime; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.HashSet; -import java.util.List; import java.util.Set; import java.util.regex.Pattern; import java.util.stream.Stream; @@ -71,12 +71,14 @@ class FileFilterTest { when(file.toPath()).thenReturn(Path.of(TEST_FILE)); long currentTime = System.currentTimeMillis(); - FileFilter fileFilter = new FileFilter(excludedDirs, Pattern.compile(pattern), new Date(currentTime + filterDateOffset), null); + when(attributes.creationTime()).thenReturn(FileTime.fromMillis(currentTime)); + when(attributes.lastModifiedTime()).thenReturn(FileTime.fromMillis(currentTime)); + FileFilter fileFilter = new FileFilter(excludedDirs, Pattern.compile(pattern), Instant.ofEpochMilli(currentTime).plus(filterDateOffset, ChronoUnit.SECONDS), null); - try (MockedStatic mockedFiles = Mockito.mockStatic(DateUtils.class)) { + try (MockedStatic mockedFiles = Mockito.mockStatic(Files.class)) { mockedFiles - .when(() -> DateUtils.convert(anyLong())) - .thenReturn(new Date(currentTime)); + .when(() -> Files.readAttributes(any(), eq(BasicFileAttributes.class))) + .thenReturn(attributes); assertEquals(acceptanceExpected, fileFilter.accept(file, new HashSet<>(extensions)), "File is accepted"); assertEquals(excluded, ResultStatistic.getInstance().getExcluded() > 0, "Is counted in excluded statistic"); diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtilsTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtilsTest.java deleted file mode 100644 index 917a8ea..0000000 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtilsTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - -import java.util.Date; - -import static org.junit.jupiter.api.Assertions.*; - -@Disabled -class DateUtilsTest { - - @Test - void convert() { - Date expectedDate = new Date(0); - String expectedString = "01.01.1970-01:00:00"; - - assertEquals(expectedDate, DateUtils.convert(0)); - assertEquals(expectedDate, DateUtils.convert(expectedString, expectedDate)); - assertEquals(expectedDate, DateUtils.convert("1234;15", expectedDate)); - assertEquals(expectedString, DateUtils.convert(expectedDate)); - } -} \ No newline at end of file