package org.activityinfo.core.shared.util;
/*
* #%L
* ActivityInfo Server
* %%
* Copyright (C) 2009 - 2013 UNICEF
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import com.google.common.collect.Maps;
import java.util.Map;
/**
* @author yuriyz on 8/8/14.
*/
public class MimeTypeUtil {
private static Map<String, String> fileExtensionToMimeTypeRegistry = Maps.newHashMap();
static {
// Image
fileExtensionToMimeTypeRegistry.put("gif", "image/gif");
fileExtensionToMimeTypeRegistry.put("jpg", "image/jpeg");
fileExtensionToMimeTypeRegistry.put("jpeg", "image/jpeg");
fileExtensionToMimeTypeRegistry.put("jpe", "image/jpeg");
fileExtensionToMimeTypeRegistry.put("jfif", "image/pipeg");
fileExtensionToMimeTypeRegistry.put("pjpeg", "image/pjpeg");
fileExtensionToMimeTypeRegistry.put("png", "image/png");
fileExtensionToMimeTypeRegistry.put("svg", "image/svg+xml");
fileExtensionToMimeTypeRegistry.put("tiff", "image/tiff");
fileExtensionToMimeTypeRegistry.put("bmp", "image/bmp");
// Text
fileExtensionToMimeTypeRegistry.put(".txt", "text/plain");
// 323 text/h323
// * application/octet-stream
// acx application/internet-property-stream
// ai application/postscript
// aif audio/x- aiff
// aifc audio/x-aiff
// aiff audio/x-aiff
// asf video/x-ms-asf
// asr video/x-ms-asf
// asx video/x-ms-asf
// au audio/basic
// avi video/x-msvideo
// axs application/olescript
// bas text/plain
// bcpio application/x-bcpio
// bin application/octet-stream
// c text/plain
// cat application/vnd.ms-pkiseccat
// cdf application/x-cdf
// cdf application/x-netcdf
// cer application/x-x509-ca-cert
// class application/octet-stream
// clp application/x-msclip
// cmx image/x-cmx
// cod image/cis-cod
// cpio application/x-cpio
// crd application/x-mscardfile
// crl application/pkix-crl
// crt application/x-x509-ca-cert
// csh application/x-csh
// css text/css
// dcr application/x-director
// der application/x-x509-ca-cert
// dir application/x-director
// dll application/x-msdownload
// dms application/octet-stream
// doc application/msword
// dot application/msword
// dvi application/x-dvi
// dxr application/x-director
// eps application/postscript
// etx text/x-setext
// evy application/envoy
// exe application/octet-stream
// fif application/fractals
// flr x-world/x-vrml
// gif image/gif
// gtar application/x-gtar
// gz application/x-gzip
// h text/plain
// hdf application/x-hdf
// hlp application/winhlp
// hqx application/mac-binhex40
// hta application/hta
// htc text/x-component
// htm text/html
// html text/html
// htt text/webviewhtml
// ico image/x-icon
// ief image/ief
// iii application/x-iphone
// ins application/x-internet-signup
// isp application/x-internet-signup
// js application/x-javascript
// latex application/x-latex
// lha application/octet-stream
// lsf video/x-la-asf
// lsx video/x-la-asf
// lzh application/octet-stream
// m13 application/x-msmediaview
// m14 application/x-msmediaview
// m3u audio/x-mpegurl
// man application/x-troff-man
// mdb application/x-msaccess
// me application/x-troff-me
// mht message/rfc822
// mhtml message/rfc822
// mid audio/mid
// mny application/x-msmoney
// mov video/quicktime
// movie video/x-sgi-movie
// mp2 video/mpeg
// mp3 audio/mpeg
// mpa video/mpeg
// mpe video/mpeg
// mpeg video/mpeg
// mpg video/mpeg
// mpp application/vnd.ms-project
// mpv2 video/mpeg
// ms application/x-troff-ms
// msg application/vnd.ms-outlook
// mvb application/x-msmediaview
// nc application/x-netcdf
// nws message/rfc822
// oda application/oda
// p10 application/pkcs10
// p12 application/x-pkcs12
// p7b application/x-pkcs7-certificates
// p7c application/x-pkcs7-mime
// p7m application/x-pkcs7-mime
// p7r application/x-pkcs7-certreqresp
// p7s application/x-pkcs7-signature
// pbm image/x-portable-bitmap
// pdf application/pdf
// pfx application/x-pkcs12
// pgm image/x-portable-graymap
// pko application/ynd.ms-pkipko
// pma application/x-perfmon
// pmc application/x-perfmon
// pml application/x-perfmon
// pmr application/x-perfmon
// pmw application/x-perfmon
// pnm image/x-portable-anymap
// pot application/vnd.ms-powerpoint
// ppm image/x-portable-pixmap
// pps application/vnd.ms-powerpoint
// ppt application/vnd.ms-powerpoint
// prf application/pics-rules
// ps application/postscript
// pub application/x-mspublisher
// qt video/quicktime
// ra audio/x-pn-realaudio
// ram audio/x-pn-realaudio
// ras image/x-cmu-raster
// rgb image/x-rgb
// rmi audio/mid
// roff application/x-troff
// rtf application/rtf
// rtx text/richtext
// scd application/x-msschedule
// sct text/scriptlet
// setpay application/set-payment-initiation
// setreg application/set-registration-initiation
// sh application/x-sh
// shar application/x-shar
// sit application/x-stuffit
// snd audio/basic
// spc application/x-pkcs7-certificates
// spl application/futuresplash
// src application/x-wais-source
// sst application/vnd.ms-pkicertstore
// stl application/vnd.ms-pkistl
// stm text/html
// sv4cpio application/x-sv4cpio
// sv4crc application/x-sv4crc
// svg image/svg+xml
// swf application/x-shockwave-flash
// t application/x-troff
// tar application/x-tar
// tcl application/x-tcl
// tex application/x-tex
// texi application/x-texinfo
// texinfo application/x-texinfo
// tgz application/x-compressed
// tif image/tiff
// tiff image/tiff
// tr application/x-troff
// trm application/x-msterminal
// tsv text/tab-separated-values
// uls text/iuls
// ustar application/x-ustar
// vcf text/x-vcard
// vrml x-world/x-vrml
// wav audio/x-wav
// wcm application/vnd.ms-works
// wdb application/vnd.ms-works
// wks application/vnd.ms-works
// wmf application/x-msmetafile
// wps application/vnd.ms-works
// wri application/x-mswrite
// wrl x-world/x-vrml
// wrz x-world/x-vrml
// xaf x-world/x-vrml
// xbm image/x-xbitmap
// xla application/vnd.ms-excel
// xlc application/vnd.ms-excel
// xlm application/vnd.ms-excel
// xls application/vnd.ms-excel
// xlt application/vnd.ms-excel
// xlw application/vnd.ms-excel
// xof x-world/x-vrml
// xpm image/x-xpixmap
// xwd image/x-xwindowdump
// z application/x-compress
// zip application/zip
}
public static String mimeTypeFromFileExtension(String fileExtension) {
if (!fileExtensionToMimeTypeRegistry.containsKey(fileExtension)) {
throw new UnsupportedOperationException("Unknown file extension: " + fileExtension);
}
return fileExtensionToMimeTypeRegistry.get(fileExtension);
}
}