View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2007 eviware.com 
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of version 2.1 of the GNU Lesser General Public License as published by 
6    *  the Free Software Foundation.
7    *
8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
10   *  See the GNU Lesser General Public License for more details at gnu.org.
11   */
12  
13  package com.eviware.soapui.impl.wsdl.panels.attachments;
14  
15  import java.util.HashMap;
16  
17  public class ContentTypeHandler
18  {
19  	private static final HashMap<String, String> suffixToContentType;
20  	public static final String DEFAULT_CONTENTTYPE = "application/octet-stream";
21  
22  	public static String getContentTypeFromFilename(String fileName)
23  	{
24  		String suffix = getSuffixFromFilename(fileName);
25  
26  		if (suffixToContentType.containsKey(suffix))
27  			return suffixToContentType.get(suffix);
28  
29  		return DEFAULT_CONTENTTYPE;
30  	}
31  
32  	public static String getSuffixFromFilename(String fileName)
33  	{
34  		if (fileName == null || fileName.length() == 0)
35  			return "";
36  
37  		int pos = fileName.lastIndexOf(".") + 1;
38  		int len = fileName.length();
39  
40  		String suffix = "";
41  		if (pos < len)
42  			suffix = fileName.substring(pos, len);
43  
44  		return suffix;
45  
46  	}
47  
48  	static
49  	{
50  		suffixToContentType = new HashMap<String, String>();
51  		suffixToContentType.put("html", "text/html");
52  		suffixToContentType.put("htm", "text/html");
53  		suffixToContentType.put("txt", "text/plain");
54  		suffixToContentType.put("c", "text/plain");
55  		suffixToContentType.put("c++", "text/plain");
56  		suffixToContentType.put("pl", "text/plain");
57  		suffixToContentType.put("c", "text/plain");
58  		suffixToContentType.put("h", "text/plain");
59  		// suffixToContentType.put("", "text/richtext");
60  		// suffixToContentType.put("", "text/x-setext");
61  		// suffixToContentType.put("", "text/enriched");
62  		// suffixToContentType.put("", "text/tab-separated-values");
63  		// suffixToContentType.put("", "text/sgml");
64  		suffixToContentType.put("talk", "text/x-speech");
65  		suffixToContentType.put("css", "text/css");
66  		// suffixToContentType.put("", "application/dsssl");
67  		suffixToContentType.put("gif", "image/gif");
68  		suffixToContentType.put("xbm", "image/x-xbitmap");
69  		suffixToContentType.put("xpm", "image/x-xpixmap");
70  		suffixToContentType.put("png", "image/x-png");
71  		suffixToContentType.put("ief", "image/ief");
72  		suffixToContentType.put("jpeg", "image/jpeg");
73  		suffixToContentType.put("jpg", "image/jpeg");
74  		suffixToContentType.put("jpe", "image/jpeg");
75  		suffixToContentType.put("tiff tif", "image/tiff");
76  		suffixToContentType.put("tif", "image/tiff");
77  		suffixToContentType.put("rgb", "image/rgb");
78  		// suffixToContentType.put("", "image/x-rgb");
79  		suffixToContentType.put("g3f ", "image/g3fax");
80  		suffixToContentType.put("xwd ", "image/x-xwindowdump");
81  		suffixToContentType.put("pict", "image/x-pict");
82  		suffixToContentType.put("ppm", "image/x-portable-pixmap");
83  		suffixToContentType.put("pgm", "image/x-portable-graymap");
84  		suffixToContentType.put("pbm", "image/x-portable-bitmap");
85  		suffixToContentType.put("pnm", "image/x-portable-anymap");
86  		suffixToContentType.put("bmp", "image/x-ms-bmp");
87  		suffixToContentType.put("ras", "image/x-cmu-raster");
88  		suffixToContentType.put("pcd", "image/x-photo-cd");
89  		suffixToContentType.put("cgm", "image/cgm");
90  		// suffixToContentType.put("", "image/naplps");
91  		suffixToContentType.put("mil", "image/x-cals");
92  		suffixToContentType.put("cal", "image/x-cals");
93  		suffixToContentType.put("fif", "image/fif");
94  		suffixToContentType.put("dsf", "image/x-mgx-dsf");
95  		suffixToContentType.put("cmx", "image/x-cmx");
96  		suffixToContentType.put("wi", "image/wavelet");
97  		suffixToContentType.put("dwg", "image/vnd.dwg");
98  		// suffixToContentType.put("", "image/x-dwg");
99  		suffixToContentType.put("dxf", "image/vnd.dxf");
100 		// suffixToContentType.put("", "image/x-dxf");
101 		suffixToContentType.put("svf", "image/vnd.svf");
102 		// suffixToContentType.put("", "also vector/x-svf");
103 		suffixToContentType.put("au snd", "audio/basic");
104 		suffixToContentType.put("snd", "audio/basic");
105 		suffixToContentType.put("aif", "audio/x-aiff");
106 		suffixToContentType.put("aiff", "audio/x-aiff");
107 		suffixToContentType.put("aifc", "audio/x-aiff");
108 		suffixToContentType.put("wav", "audio/x-wav");
109 		suffixToContentType.put("mpa", "audio/x-mpeg");
110 		suffixToContentType.put("abs", "audio/x-mpeg");
111 		suffixToContentType.put("mpega", "audio/x-mpeg");
112 		suffixToContentType.put("mp2a", "audio/x-mpeg-2");
113 		suffixToContentType.put("mpa2", "audio/x-mpeg-2");
114 		suffixToContentType.put("es", "audio/echospeech");
115 		suffixToContentType.put("vox", "audio/voxware");
116 		suffixToContentType.put("lcc", "application/fastman");
117 		suffixToContentType.put("ra", "application/x-pn-realaudio");
118 		suffixToContentType.put("ram", "application/x-pn-realaudio");
119 		// suffixToContentType.put("", "application/vnd.music-niff");
120 		suffixToContentType.put("mmid", "x-music/x-midi");
121 		suffixToContentType.put("skp", "application/vnd.koan");
122 		// suffixToContentType.put("", "application/x-koan");
123 		suffixToContentType.put("talk", "text/x-speech");
124 		suffixToContentType.put("mpeg", "video/mpeg");
125 		suffixToContentType.put("mpg", "video/mpeg");
126 		suffixToContentType.put("mpe", "video/mpeg");
127 		suffixToContentType.put("mpv2", "video/mpeg-2");
128 		suffixToContentType.put("mp2v", "video/mpeg-2");
129 		suffixToContentType.put("qt", "video/quicktime");
130 		suffixToContentType.put("mov", "video/quicktime");
131 		suffixToContentType.put("avi", "video/x-msvideo");
132 		suffixToContentType.put("movie", "video/x-sgi-movie");
133 		suffixToContentType.put("vdo", "video/vdo");
134 		suffixToContentType.put("viv", "video/vnd.vivo");
135 		// suffixToContentType.put("", "video/vivo");
136 		suffixToContentType.put("pac", "application/x-ns-proxy-autoconfig");
137 		// suffixToContentType.put("", "application/x-www-form-urlencoded");
138 		// suffixToContentType.put("", "application/x-www-local-exec");
139 		// suffixToContentType.put("", "multipart/x-mixed-replace");
140 		// suffixToContentType.put("", "multipart/form-data");
141 		suffixToContentType.put("ice", "x-conference/x-cooltalk");
142 		// suffixToContentType.put("", "application/x-chat");
143 		suffixToContentType.put("ai", "application/postscript");
144 		suffixToContentType.put("eps", "application/postscript");
145 		suffixToContentType.put("ps", "application/postscript");
146 		suffixToContentType.put("rtf", "application/rtf");
147 		suffixToContentType.put("pdf", "application/pdf");
148 		// suffixToContentType.put("", "application/x-pdf");
149 		suffixToContentType.put("mif", "application/vnd.mif");
150 		// suffixToContentType.put("", "application/x-mif");
151 		suffixToContentType.put("t", "application/x-troff");
152 		suffixToContentType.put("tr", "application/x-troff");
153 		suffixToContentType.put("roff", "application/x-troff");
154 		suffixToContentType.put("man", "application/x-troff-man");
155 		suffixToContentType.put("me", "application/x-troff-me");
156 		suffixToContentType.put("ms", "application/x-troff-ms");
157 		suffixToContentType.put("latex", "application/x-latex");
158 		suffixToContentType.put("tex", "application/x-tex");
159 		suffixToContentType.put("texinfo", "application/x-texinfo");
160 		suffixToContentType.put("texi ", "application/x-texinfo");
161 		suffixToContentType.put("dvi", "application/x-dvi");
162 		// suffixToContentType.put("", "application/macwriteii");
163 		suffixToContentType.put("doc", "application/msword");
164 		// suffixToContentType.put("", "application/wordperfect5.1");
165 		// suffixToContentType.put("", "application/sgml");
166 		suffixToContentType.put("oda", "application/oda");
167 		suffixToContentType.put("evy", "application/envoy");
168 		// suffixToContentType.put("", "application/wita");
169 		// suffixToContentType.put("", "application/dec-dx");
170 		// suffixToContentType.put("", "application/dca-rft");
171 		// suffixToContentType.put("", "application/commonground");
172 		suffixToContentType.put("fm", "application/vnd.framemaker");
173 		suffixToContentType.put("frm", "application/vnd.framemaker");
174 		suffixToContentType.put("frame", "application/vnd.framemaker");
175 		// suffixToContentType.put("", "application/x-framemaker");
176 		// suffixToContentType.put("", "application/remote-printing");
177 		suffixToContentType.put("gtar", "application/x-gtar");
178 		suffixToContentType.put("tar", "application/x-tar");
179 		suffixToContentType.put("ustar", "application/x-ustar");
180 		suffixToContentType.put("bcpio", "application/x-bcpio");
181 		suffixToContentType.put("cpio", "application/x-cpio");
182 		suffixToContentType.put("shar", "application/x-shar");
183 		suffixToContentType.put("zip", "application/zip");
184 		suffixToContentType.put("hqx", "application/mac-binhex40");
185 		suffixToContentType.put("sit", "application/x-stuffit");
186 		suffixToContentType.put("sea", "application/x-stuffit");
187 		suffixToContentType.put("fif", "application/fractals");
188 		suffixToContentType.put("bin", "application/octet-stream");
189 		suffixToContentType.put("uu", "application/octet-stream");
190 		suffixToContentType.put("exe", "application/octet-stream");
191 		suffixToContentType.put("src", "application/x-wais-source");
192 		suffixToContentType.put("wsrc", "application/x-wais-source");
193 		suffixToContentType.put("hdf", "application/hdf");
194 		suffixToContentType.put("js", "text/javascript");
195 		suffixToContentType.put("ls", "text/javascript");
196 		suffixToContentType.put("mocha", "text/javascript");
197 		// suffixToContentType.put("", "application/x-javascript");
198 		// suffixToContentType.put("", "text/vbscript");
199 		suffixToContentType.put("sh", "application/x-sh");
200 		suffixToContentType.put("csh", "application/x-csh");
201 		suffixToContentType.put("pl", "application/x-perl");
202 		suffixToContentType.put("tcl ", "application/x-tcl");
203 		// suffixToContentType.put("", "application/atomicmail");
204 		// suffixToContentType.put("", "application/slate");
205 		// suffixToContentType.put("", "application/octet-stream");
206 		// suffixToContentType.put("", "application/riscos");
207 		// suffixToContentType.put("", "application/andrew-inset");
208 		suffixToContentType.put("spl", "application/futuresplash");
209 		suffixToContentType.put("mbd", "application/mbedlet");
210 		// suffixToContentType.put("", "application/x-director");
211 		// suffixToContentType.put("", "application/x-sprite");
212 		suffixToContentType.put("rad", "application/x-rad-powermedia");
213 		suffixToContentType.put("ppz", "application/mspowerpoint");
214 		suffixToContentType.put("css", "application/x-pointplus");
215 		suffixToContentType.put("asp", "application/x-asap");
216 		suffixToContentType.put("asn", "application/astound");
217 		suffixToContentType.put("axs", "application/x-olescript");
218 		suffixToContentType.put("ods", "application/x-oleobject");
219 		suffixToContentType.put("opp", "x-form/x-openscape");
220 		suffixToContentType.put("wba", "application/x-webbasic");
221 		suffixToContentType.put("frm", "application/x-alpha-form");
222 		suffixToContentType.put("wfx", "x-script/x-wfxclient");
223 		// suffixToContentType.put("", "application/octet-stream");
224 		// suffixToContentType.put("", "application/cals-1840");
225 		suffixToContentType.put("pcn", "application/x-pcn");
226 		// suffixToContentType.put("", "application/vnd.ms-excel");
227 		// suffixToContentType.put("", "application/x-msexcel");
228 		// suffixToContentType.put("", "application/ms-excel");
229 		suffixToContentType.put("ppt", "application/vnd.ms-powerpoint");
230 		// suffixToContentType.put("", "application/ms-powerpoint");
231 		// suffixToContentType.put("", "application/vnd.ms-project");
232 		// suffixToContentType.put("", "application/vnd.ms-works");
233 		// suffixToContentType.put("", "application/vnd.ms-tnef");
234 		// suffixToContentType.put("", "application/vnd.artgalry");
235 		suffixToContentType.put("svd", "application/vnd.svd");
236 		// suffixToContentType.put("", "application/vnd.truedoc");
237 		suffixToContentType.put("ins", "application/x-net-install");
238 		suffixToContentType.put("ccv", "application/ccv");
239 		suffixToContentType.put("vts", "workbook/formulaone");
240 		// suffixToContentType.put("", "application/cybercash");
241 		// suffixToContentType.put("", "application/applefile");
242 		// suffixToContentType.put("", "application/activemessage");
243 		// suffixToContentType.put("", "application/x400-bp");
244 		// suffixToContentType.put("", "application/news-message-id");
245 		// suffixToContentType.put("", "application/news-transmission");
246 		// suffixToContentType.put("", "multipart/mixed");
247 		// suffixToContentType.put("", "multipart/alternative");
248 		// suffixToContentType.put("", "multipart/related");
249 		// suffixToContentType.put("", "multipart/digest");
250 		// suffixToContentType.put("", "multipart/report");
251 		// suffixToContentType.put("", "multipart/parallel");
252 		// suffixToContentType.put("", "multipart/appledouble");
253 		// suffixToContentType.put("", "multipart/header-set");
254 		// suffixToContentType.put("", "multipart/voice-message");
255 		// suffixToContentType.put("", "multipart/form-data");
256 		// suffixToContentType.put("", "multipart/x-mixed-replace");
257 		// suffixToContentType.put("", "message/rfc822");
258 		// suffixToContentType.put("", "message/partial");
259 		// suffixToContentType.put("", "message/external-body");
260 		// suffixToContentType.put("", "message/news");
261 		// suffixToContentType.put("", "message/http");
262 		suffixToContentType.put("wrl", "x-world/x-vrml");
263 		suffixToContentType.put("vrml", "x-world/x-vrml");
264 		suffixToContentType.put("vrw", "x-world/x-vream");
265 		suffixToContentType.put("p3d", "application/x-p3d");
266 		suffixToContentType.put("svr", "x-world/x-svr");
267 		suffixToContentType.put("wvr", "x-world/x-wvr");
268 		suffixToContentType.put("3dmf", "x-world/x-3dmf");
269 		// suffixToContentType.put("", "chemical/*");
270 		suffixToContentType.put("ma", "application/mathematica");
271 		suffixToContentType.put("msh", "x-model/x-mesh");
272 		suffixToContentType.put("v5d", "application/vis5d");
273 		suffixToContentType.put("igs", "application/iges");
274 		suffixToContentType.put("dwf ", "drawing/x-dwf");
275 		suffixToContentType.put("showcase", "application/x-showcase");
276 		suffixToContentType.put("slides", "application/x-showcase");
277 		suffixToContentType.put("sc", "application/x-showcase");
278 		suffixToContentType.put("show", "application/x-showcase");
279 		suffixToContentType.put("ins", "application/x-insight");
280 		suffixToContentType.put("insight", "application/x-insight");
281 		suffixToContentType.put("ano", "application/x-annotator");
282 		suffixToContentType.put("dir", "application/x-dirview");
283 		suffixToContentType.put("lic", "application/x-enterlicense");
284 		suffixToContentType.put("faxmgr", "application/x-fax-manager");
285 		suffixToContentType.put("faxmgrjob", "application/x-fax-manager-job");
286 		suffixToContentType.put("icnbk", "application/x-iconbook");
287 		suffixToContentType.put("wb", "application/x-inpview");
288 		suffixToContentType.put("inst ", "application/x-install");
289 		suffixToContentType.put("mail", "application/x-mailfolder");
290 		suffixToContentType.put("pp ppages", "application/x-ppages");
291 		suffixToContentType.put("sgi-lpr", "application/x-sgi-lpr");
292 		suffixToContentType.put("tardist", "application/x-tardist");
293 		suffixToContentType.put("ztardist", "application/x-ztardist");
294 		suffixToContentType.put("wkz", "application/x-wingz");
295 		suffixToContentType.put("iv", "graphics/x-inventor");
296 	}
297 
298 }