/*
* JEF - Copyright 2009-2010 Jiyi (mr.jiyi@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jef.common;
import java.util.HashMap;
import java.util.Map;
import jef.tools.StringUtils;
public final class MimeTypes {
private static final Map<String,String> MIME_TYPES=new HashMap<String,String>();
static{
//Office
MIME_TYPES.put("xls","application/msexcel");
MIME_TYPES.put("xlsx","application/msexcel");
MIME_TYPES.put("xla","application/msexcel");
MIME_TYPES.put("hlp","application/mshelp");
MIME_TYPES.put("chm","application/mshelp");
MIME_TYPES.put("ppt","application/mspowerpoint");
MIME_TYPES.put("pptx","application/mspowerpoint");
MIME_TYPES.put("pps","application/mspowerpoint");
MIME_TYPES.put("ppz","application/mspowerpoint");
MIME_TYPES.put("pot","application/mspowerpoint");
MIME_TYPES.put("doc","application/msword");
MIME_TYPES.put("docx","application/msword");
MIME_TYPES.put("dot","application/msword");
MIME_TYPES.put("mdb","application/access");
//Text
MIME_TYPES.put("css","text/css");
MIME_TYPES.put("htm","text/html");
MIME_TYPES.put("html","text/html");
MIME_TYPES.put("shtml","text/html");
MIME_TYPES.put("js","text/javascript");
MIME_TYPES.put("txt","text/plain");
MIME_TYPES.put("c","text/plain");
MIME_TYPES.put("cpp","text/plain");
MIME_TYPES.put("java","text/plain");
MIME_TYPES.put("log","text/plain");
MIME_TYPES.put("conf","text/plain");
MIME_TYPES.put("ini","text/plain");
MIME_TYPES.put("inf","text/plain");
MIME_TYPES.put("sql","text/plain");
MIME_TYPES.put("pl","text/plain");
MIME_TYPES.put("xml","text/xml");
MIME_TYPES.put("dtd","text/xml");
//Compress package
MIME_TYPES.put("rar","application/x-rar-compressed");
MIME_TYPES.put("cab","application/x-shockwave-flash");
MIME_TYPES.put("jar","application/java-archive");
MIME_TYPES.put("zip","application/zip");
MIME_TYPES.put("gz","application/x-gzip");
MIME_TYPES.put("tgz","application/x-tgz3");
MIME_TYPES.put("tar","application/x-tar");
MIME_TYPES.put("dvi","application/x-dvi");
//Applications
MIME_TYPES.put("rtf","application/rtf");
MIME_TYPES.put("pdf","application/pdf");
MIME_TYPES.put("exe","application/octet-stream");
MIME_TYPES.put("pac","application/x-ns-proxy-autoconfig");
MIME_TYPES.put("bz2","application/x-bzip");
MIME_TYPES.put("torrent","application/x-bittorrent");
//WebPages
MIME_TYPES.put("php","application/x-httpd-php");
MIME_TYPES.put("phtml","application/x-httpd-php");
MIME_TYPES.put("swf","application/x-shockwave-flash");
MIME_TYPES.put("asp","application/x-asap");
MIME_TYPES.put("aspx","application/x-asap");
//Image
MIME_TYPES.put("gif","image/gif");
MIME_TYPES.put("jpeg","image/jpeg");
MIME_TYPES.put("jpg","image/jpeg");
MIME_TYPES.put("jpe","image/jpeg");
MIME_TYPES.put("png","image/png");
MIME_TYPES.put("xwd","image/x-windowdump");
//audio
MIME_TYPES.put("au","audio/basic");
MIME_TYPES.put("snd","audio/basic");
MIME_TYPES.put("mp3","audio/mpeg");
MIME_TYPES.put("wav","audio/x-wav");
MIME_TYPES.put("m3u","audio/x-mpegurl");
MIME_TYPES.put("wma","audio/x-ms-wma");
MIME_TYPES.put("wxa","audio/x-ms-wax");
MIME_TYPES.put("ogg","application/ogg");
//video
MIME_TYPES.put("avi","video/x-msvideo");
MIME_TYPES.put("mpeg","video/mpeg");
MIME_TYPES.put("mpe","video/mpeg");
MIME_TYPES.put("mpg","video/mpeg");
MIME_TYPES.put("rmvb","video/vnd.rn-realvideo");
MIME_TYPES.put("rm","video/vnd.rn-realvideo");
MIME_TYPES.put("qt","video/quicktime");
MIME_TYPES.put("mov","video/quicktime");
MIME_TYPES.put("asf","video/x-ms-asf");
MIME_TYPES.put("asx","video/x-ms-asf");
MIME_TYPES.put("wmv","video/x-ms-wmv");
//Others
MIME_TYPES.put("*","application/octet-stream");
}
public static String getByFileName(String fileName){
return get(StringUtils.substringAfterLast(fileName,".").toLowerCase());
}
public static String get(String fileExtName){
String mimeType=MIME_TYPES.get(fileExtName.toLowerCase());
if(mimeType==null)mimeType=MIME_TYPES.get("*");
return mimeType;
}
public static boolean contains(String extName){
return MIME_TYPES.containsKey(extName);
}
public static Map<String,String> getAllTypes(){
return MIME_TYPES;
}
public static boolean isValid(String mimeType){
return MIME_TYPES.values().contains(StringUtils.lowerCase(mimeType));
}
}