[LIB-9] Add functional for transcoding vector images
[chesshog.git] / chesshog-graphics / src / main / java / org / hedgecode / chess / img / ImageFilter.java
1 /*
2  * Copyright (c) 2018-2019. Developed by Hedgecode.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.hedgecode.chess.img;
18
19 import java.io.IOException;
20 import java.nio.file.DirectoryStream;
21 import java.nio.file.Files;
22 import java.nio.file.Path;
23
24 /**
25  * Filter for images by name and extention.
26  *
27  * @author Dmitry Samoshin aka gotty
28  * @see DirectoryStream.Filter
29  */
30 public class ImageFilter implements DirectoryStream.Filter<Path> {
31
32     private static final String[] IMAGES_EXTS = ImageFormat.getAllExts();
33
34     private String[] names;
35
36     public ImageFilter() {
37         this.names = null;
38     }
39
40     public ImageFilter(String[] names) {
41         this.names = names;
42     }
43
44     @Override
45     public boolean accept(Path file) throws IOException {
46         if (Files.isDirectory(file)) {
47             return false;
48         }
49         String filename = file.getFileName().toString();
50         return acceptExt(filename) && acceptName(filename);
51     }
52
53     private boolean acceptName(String filename) {
54         if (names != null) {
55             String name = FilenameUtils.getBaseName(filename);
56             for (String imageName : names) {
57                 if (imageName.equalsIgnoreCase(name))
58                     return true;
59             }
60             return false;
61         }
62         return true;
63     }
64
65     private boolean acceptExt(String filename) {
66         String ext = FilenameUtils.getExtension(filename);
67         for (String imageExt : IMAGES_EXTS) {
68             if (imageExt.equalsIgnoreCase(ext))
69                 return true;
70         }
71         return false;
72     }
73
74 }