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); } }