Network Protocol Java

/**
 * Vosao CMS. Simple CMS for Google App Engine.
 * 
 * Copyright (C) 2009-2010 Vosao development team.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * email: vosao.dev@gmail.com
 */
//package org.vosao.utils;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MimeType {
  private static String[] mimeTypes = {
     "323","text/h323",
     "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",
     "bmp","image/bmp",
     "c","text/plain",
     "cat","application/vnd.ms-pkiseccat",
     "cdf","application/x-cdf",
     "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",
     "jfif","image/pipeg",
     "jpe","image/jpeg",
     "jpeg","image/jpeg",
     "jpg","image/jpeg",
     "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",
     "mvb","application/x-msmediaview",
     "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",
     "png","image/png",
     "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",
     "svg","image/svg+xml",
     "sv4cpio","application/x-sv4cpio",
     "sv4crc","application/x-sv4crc",
     "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",
     "txt","text/plain",
     "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",
     "xml","text/xml",
     "xof","x-world/x-vrml",
     "xpm","image/x-xpixmap",
     "xwd","image/x-xwindowdump",
     "z",  "application/x-compress",
     "zip","application/zip"    
  };
  
  private static Map mimeMap;
  
  static {
    mimeMap = new HashMap();
    Iterator i = Arrays.asList(mimeTypes).iterator(); 
    while (i.hasNext()) {
      String key = i.next();
      String code = i.next();
      mimeMap.put(key, code);
    }
  }
  private static String DEFAULT = "application/octet-stream";
  
  public static String getContentTypeByExt(final String ext) {
    String key = ext.toLowerCase();
    if (mimeMap.containsKey(key)) {
      return mimeMap.get(key);
    }
    return DEFAULT;
  }
  
}