package org.atomnuke.container.packaging.archive; import java.util.regex.Pattern; /** * * Not so sure about this one... * * @author zinic */ public enum ResourceType { EAR("ear", ".*\\.ear"), ZIP("zip", ".*\\.zip"), JAVASCRIPT("js", ".*\\.js"), PYTHON("py", ".*\\.py"), JAR("jar", ".*\\.jar"), CLASS("class", ".*\\.class"), RESOURCE("", ".*"), DIRECTORY("", ".*"); private static final ResourceType[] SEARCH_EXCLUDE = new ResourceType[]{RESOURCE}; public static boolean isExcludeType(ResourceType type) { for (ResourceType exclude : SEARCH_EXCLUDE) { if (exclude == type) { return true; } } return false; } public static ResourceType findResourceTypeForExtension(String extension) { for (ResourceType type : values()) { if (!isExcludeType(type) && type.extension().equalsIgnoreCase(extension)) { return type; } } return RESOURCE; } public static ResourceType findResourceTypeForName(String name) { for (ResourceType type : values()) { if (!isExcludeType(type) && type.matchesExtensionFor(name)) { return type; } } return RESOURCE; } private final Pattern extensionPattern; private final String extension; private ResourceType(String extension, String extensionPattern) { this.extension = extension; this.extensionPattern = Pattern.compile(extensionPattern); } public String extension() { return extension; } public boolean matchesExtensionFor(String name) { return extensionPattern.matcher(name).matches(); } }