[LIB-9] Separate chesshog-graphics module
[chesshog.git] / chesshog-graphics / src / main / java / org / hedgecode / chess / img / ImageFilter.java
 
 package org.hedgecode.chess.img;
 
-import java.io.File;
-import java.io.FilenameFilter;
+import java.io.IOException;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
 
 /**
  *
  *
  * @author Dmitry Samoshin aka gotty
  */
-public class ImageFilter implements FilenameFilter {
+public class ImageFilter implements DirectoryStream.Filter<Path> {
 
     private static final String[] IMAGES_EXTS = ImageFormat.getAllExts();
 
@@ -39,13 +41,17 @@ public class ImageFilter implements FilenameFilter {
     }
 
     @Override
-    public boolean accept(File dir, String name) {
-        return isImageName(name) && isImageExt(name);
+    public boolean accept(Path file) throws IOException {
+        if (Files.isDirectory(file)) {
+            return false;
+        }
+        String filename = file.getFileName().toString();
+        return acceptExt(filename) && acceptName(filename);
     }
 
-    private boolean isImageName(String name) {
+    private boolean acceptName(String filename) {
         if (names != null) {
-            name = name.substring(0, name.lastIndexOf('.'));
+            String name = FilenameUtils.getBaseName(filename);
             for (String imageName : names) {
                 if (imageName.equalsIgnoreCase(name))
                     return true;
@@ -55,8 +61,8 @@ public class ImageFilter implements FilenameFilter {
         return true;
     }
 
-    private boolean isImageExt(String ext) {
-        ext = ext.substring(ext.lastIndexOf('.') + 1);
+    private boolean acceptExt(String filename) {
+        String ext = FilenameUtils.getExtension(filename);
         for (String imageExt : IMAGES_EXTS) {
             if (imageExt.equalsIgnoreCase(ext))
                 return true;