package com.revolsys.io.file;
import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import javax.swing.filechooser.FileFilter;
import com.revolsys.collection.list.Lists;
public final class FileNameExtensionFilter extends FileFilter {
private final String description;
private final List<String> extensions;
private final String[] lowerCaseExtensions;
public FileNameExtensionFilter(final String description, final String... extensions) {
this.description = description;
this.extensions = Collections.unmodifiableList(Lists.newArray(extensions));
this.lowerCaseExtensions = new String[extensions.length];
for (int i = 0; i < extensions.length; i++) {
this.lowerCaseExtensions[i] = "." + extensions[i].toLowerCase(Locale.ENGLISH);
}
}
@Override
public boolean accept(final File file) {
if (file == null) {
return false;
} else if (file.isDirectory()) {
return true;
} else {
final String fileName = file.getName().toLowerCase();
for (final String extension : this.lowerCaseExtensions) {
if (fileName.endsWith(extension)) {
return true;
}
}
return false;
}
}
@Override
public String getDescription() {
return this.description;
}
public List<String> getExtensions() {
return this.extensions;
}
@Override
public String toString() {
return super.toString() + "[description=" + getDescription() + " extensions="
+ java.util.Arrays.asList(getExtensions()) + "]";
}
}