package com.informagen;
import java.io.FilenameFilter;
import java.io.File;
import java.util.Vector;
import java.util.Enumeration;
import com.apple.mrj.MRJOSType;
import com.apple.mrj.MRJFileUtils;
public class FilterByMacOSType implements FilenameFilter {
private static final MRJOSType WILDCARD = new MRJOSType("****");
private static final int CREATOR = 0;
private static final int TYPE = 1;
final Vector theSignatures = new Vector();
public static boolean isMacintosh() {
return System.getProperty("os.name").equalsIgnoreCase("Mac OS");
}
public boolean accept(File dir, String name) {
MRJOSType creator = null;
MRJOSType type = null;
File fullPath = new File(dir, name);
try {
creator = MRJFileUtils.getFileCreator(fullPath);
type = MRJFileUtils.getFileType(fullPath);
} catch (java.io.IOException ioe) {
return false;
}
// Test each file signature
Enumeration e = theSignatures.elements();
MRJOSType[] aSignature = null;
while (e.hasMoreElements()) {
aSignature = (MRJOSType[])e.nextElement();
// Test file type only
if (aSignature[CREATOR].equals(WILDCARD) && type.equals(aSignature[TYPE]))
return true;
// Test creator only
if (creator.equals(aSignature[CREATOR]) && aSignature[TYPE].equals(WILDCARD))
return true;
// Test both creator and file type
if (creator.equals(aSignature[CREATOR]) && type.equals(aSignature[TYPE]))
return true;
}
return false;
}
public void addSignature(String inCreator, String inType) {
MRJOSType[] aSignature = new MRJOSType[2];
aSignature[CREATOR] = new MRJOSType(inCreator);
aSignature[TYPE] = new MRJOSType(inType);
theSignatures.addElement(aSignature);
}
}