OSDN Git Service

Add new source files
[armadillo/armadillo1.git] / src / jp / sfjp / armadillo / archive / ArchiveType.java
1 package jp.sfjp.armadillo.archive;
2
3 public enum ArchiveType {
4
5     TAR, TARZ, TARGZ, TARBZ2, TARXZ, ZIP, LZH, CAB, Unknown;
6
7     public static ArchiveType of(String fileName) {
8         final String ext = getExtension(fileName);
9         if (ext.equalsIgnoreCase("tar"))
10             return TAR;
11         if (ext.equalsIgnoreCase("zip") || ext.equalsIgnoreCase("jar"))
12             return ZIP;
13         if (ext.equalsIgnoreCase("lzh"))
14             return LZH;
15         if (ext.equalsIgnoreCase("cab"))
16             return CAB;
17         if (endsWithIgnoreCase(fileName, ".tar.z", ".tz", ".taz"))
18             return TARZ;
19         if (endsWithIgnoreCase(fileName, ".tar.gz", ".tgz"))
20             return TARGZ;
21         if (endsWithIgnoreCase(fileName, ".tar.bz2", ".tbz"))
22             return TARBZ2;
23         if (endsWithIgnoreCase(fileName, ".tar.xz", ".txz"))
24             return TARXZ;
25         return Unknown;
26     }
27
28     static boolean endsWithIgnoreCase(String s, String... suffixes) {
29         for (final String suffix : suffixes) {
30             final int sl = s.length();
31             final int suffixl = suffix.length();
32             if (sl >= suffixl && s.substring(sl - suffixl).equalsIgnoreCase(suffix))
33                 return true;
34         }
35         return false;
36     }
37
38     static String getExtension(String fileName) {
39         final int index = fileName.lastIndexOf('.');
40         if (index < 0)
41             return "";
42         return fileName.substring(index + 1).toLowerCase();
43     }
44
45 }