/*
* org.relaxer.framework
* Copyright (C) 2000-2004 ASAMI, Tomoharu (asami@relaxer.org)
*/
package com.AsamiOffice.io;
import java.io.File;
import java.io.FilenameFilter;
import com.AsamiOffice.text.UString;
/**
* ExcludesFilenameFilter
*
* @since 2004/04/20
* @version 2004/04/20
* @author ASAMI, Tomoharu (asami@relaxer.org)
*/
public class ExcludesFilenameFilter implements FilenameFilter {
private String[] excludes_;
public ExcludesFilenameFilter(String excludes) {
excludes_ = UString.getTokens(excludes);
}
public boolean accept(File dir, String name) {
for (int i = 0;i < excludes_.length;i++) {
if (isMatch_(excludes_[i], name)) {
return (false);
}
}
return (true);
}
private boolean isMatch_(String exclude, String name) {
if (exclude.startsWith("*.")) {
return (getSuffix_(exclude).equals(getSuffix_(name)));
} else if (exclude.endsWith(".*")) {
return (getPrefix_(exclude).equals(getPrefix_(name)));
} else {
return (exclude.equals(name));
}
}
private String getPrefix_(String name) {
int index = name.lastIndexOf(".");
if (index == -1) {
return (null);
} else {
return (name.substring(0, index));
}
}
private String getSuffix_(String name) {
int index = name.lastIndexOf(".");
if (index == -1) {
return (null);
} else {
return (name.substring(index + 1));
}
}
}