OSDN Git Service

imported from subversion repository
[xerial/xerial-core.git] / src / main / java / org / xerial / util / FileType.java
1 /*--------------------------------------------------------------------------\r
2  *  Copyright 2009 Taro L. Saito\r
3  *\r
4  *  Licensed under the Apache License, Version 2.0 (the "License");\r
5  *  you may not use this file except in compliance with the License.\r
6  *  You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  *  Unless required by applicable law or agreed to in writing, software\r
11  *  distributed under the License is distributed on an "AS IS" BASIS,\r
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  *  See the License for the specific language governing permissions and\r
14  *  limitations under the License.\r
15  *--------------------------------------------------------------------------*/\r
16 //--------------------------------------\r
17 // XerialJ\r
18 //\r
19 // FileType.java\r
20 // Since: Feb 10, 2009 10:38:10 AM\r
21 //\r
22 // $URL: http://www.xerial.org/svn/project/XerialJ/trunk/xerial-core/src/main/java/org/xerial/util/FileType.java $\r
23 // $Author: leo $\r
24 //--------------------------------------\r
25 package org.xerial.util;\r
26 \r
27 import java.util.ArrayList;\r
28 import java.util.HashMap;\r
29 import java.util.List;\r
30 \r
31 /**\r
32  * File type notation\r
33  * \r
34  * @author leo\r
35  * \r
36  */\r
37 public enum FileType {\r
38 \r
39     UNKNOWN(""),\r
40 \r
41     // image formats\r
42     JPEG("jpeg,jpg"),\r
43     PNG("png"),\r
44     GIF("gif"),\r
45     BMP("bmp"),\r
46     TIFF("tiff"),\r
47 \r
48     // text formats\r
49     XML("xml"),\r
50     JSON("json"),\r
51     SILK("silk"),\r
52     TAB("tab"),\r
53     CSV("csv"),\r
54     FASTA("fasta,fs"),\r
55     TEX("tex"),\r
56     TEXT("txt"),\r
57 \r
58     // HTML formats\r
59     HTML("html,htm"),\r
60 \r
61     // binary format\r
62     PDF("pdf"),\r
63     PS("ps"),\r
64     WORD("doc,docx"),\r
65     EXCEL("xls,xlsx"),\r
66     POWER_POINT("ppt,pptx"),\r
67 \r
68     // compressed format\r
69     ZIP("zip"),\r
70     GZIP("gz,gzip"),\r
71     TAR("tar"),\r
72     TAR_GZ("tar.gz"),\r
73     BZIP2("bz2")\r
74 \r
75     ;\r
76 \r
77     private static HashMap<String, FileType> fileTypeTable = new HashMap<String, FileType>();\r
78     static\r
79     {\r
80         for (FileType eachType : FileType.values())\r
81         {\r
82             for (String eachExt : eachType.getFileExtList())\r
83                 fileTypeTable.put(eachExt, eachType);\r
84         }\r
85     }\r
86 \r
87     private ArrayList<String> fileExtList;\r
88 \r
89     private FileType()\r
90     {\r
91         fileExtList = new ArrayList<String>(0);\r
92     }\r
93 \r
94     private FileType(String fileExtCSV)\r
95     {\r
96         String[] fileExt = fileExtCSV.split(",\\s*");\r
97         assert (fileExt != null);\r
98         fileExtList = new ArrayList<String>(fileExt.length);\r
99         for (String each : fileExt)\r
100         {\r
101             fileExtList.add(each);\r
102         }\r
103     }\r
104 \r
105     public List<String> getFileExtList()\r
106     {\r
107         return fileExtList;\r
108     }\r
109 \r
110     /**\r
111      * Retrieve file type\r
112      * \r
113      * @param fileExt\r
114      * @return\r
115      */\r
116     public static FileType getFileTypeFromFileExt(String fileExt)\r
117     {\r
118         FileType f = fileTypeTable.get(fileExt.toLowerCase());\r
119         if (f == null)\r
120             return UNKNOWN;\r
121         else\r
122             return f;\r
123     }\r
124 \r
125     public static FileType getFileType(String filePath)\r
126     {\r
127         if (filePath.endsWith("tar.gz"))\r
128             return getFileTypeFromFileExt("tar.gz");\r
129 \r
130         int extPos = filePath.lastIndexOf(".");\r
131         if (extPos <= 0)\r
132             return UNKNOWN;\r
133         else\r
134             return getFileTypeFromFileExt(filePath.substring(extPos + 1));\r
135     }\r
136 \r
137 }\r