View Javadoc

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