1 19 package org.openharmonise.commons.net; 20 import java.util.ArrayList ; 21 import java.util.HashMap ; 22 import java.util.Iterator ; 23 import java.util.List ; 24 25 35 public class MimeTypeMapping { 36 37 40 private static HashMap m_aExtensionMap = new HashMap (); 41 42 45 private static HashMap m_aMimeTypeMap = new HashMap (); 46 47 50 public static Mapping GIF = new Mapping("Image(GIF)"); 51 52 55 public static Mapping JPEG = new Mapping("Image(JPEG)"); 56 57 60 public static Mapping TIFF = new Mapping("Image(TIFF)"); 61 62 65 public static Mapping PNG = new Mapping("Image(PNG)"); 66 67 70 public static Mapping SVG = new Mapping("Scalable Vector Graphics (SVG)"); 71 72 75 public static Mapping PDF = new Mapping("PDF"); 76 77 80 public static Mapping TEXT = new Mapping("Plain Text"); 81 82 85 public static Mapping XML = new Mapping("XML"); 86 87 90 public static Mapping XSLT = new Mapping("XSLT"); 91 92 95 public static Mapping HTML = new Mapping("HTML"); 96 97 100 public static Mapping FLASH = new Mapping("Flash Movie"); 101 102 105 public static Mapping WAV = new Mapping("Audio(WAV)"); 106 107 110 public static Mapping OGG = new Mapping("Audio(Ogg Vorbis)"); 111 112 115 public static Mapping MP3 = new Mapping("Audio(MP3)"); 116 117 120 public static Mapping AU = new Mapping("Audio(AU)"); 121 122 125 public static Mapping REAL_MEDIA = new Mapping("Real Media"); 126 127 130 public static Mapping ASF = new Mapping("Active Streaming Format"); 131 132 135 public static Mapping WORD = new Mapping("Word Document"); 136 137 140 public static Mapping WORD_PERFECT = new Mapping("Word Perfect Document"); 141 142 145 public static Mapping RTF = new Mapping("RTF Document"); 146 147 150 public static Mapping PPT = new Mapping("PowerPoint Presentation"); 151 152 155 public static Mapping XLS = new Mapping("Excel Spreadsheet"); 156 157 160 public static Mapping EMAIL = new Mapping("Email address"); 161 162 165 public static Mapping URL = new Mapping("URL"); 166 167 170 public static Mapping MOVIE_MPEG = new Mapping("Movie(MPEG)"); 171 172 175 public static Mapping MOVIE_AVI = new Mapping("Movie(AVI)"); 176 177 180 public static Mapping MOVIE_MOV = new Mapping("Movie(MOV)"); 181 182 185 public static Mapping CSV = new Mapping("Comma Separated Values (CSV)"); 186 187 static { 189 Mapping mapping = null; 190 191 GIF.addExtension("gif"); 192 GIF.addMimeType("image/gif"); 193 GIF.addMimeType("image/x-xbitmap"); 194 GIF.addMimeType("image/gi_"); 195 MimeTypeMapping.addMapping(GIF); 196 197 198 JPEG.addExtension("jpg"); 199 JPEG.addExtension("jpeg"); 200 JPEG.addMimeType("image/jpeg"); 201 JPEG.addMimeType("image/jpg"); 202 JPEG.addMimeType("image/jp_"); 203 JPEG.addMimeType("application/jpg"); 204 JPEG.addMimeType("application/x-jpg"); 205 JPEG.addMimeType("image/pjpeg"); 206 JPEG.addMimeType("image/pipeg"); 207 JPEG.addMimeType("image/vnd.swiftview-jpeg"); 208 JPEG.addMimeType("image/x-xbitmap"); 209 MimeTypeMapping.addMapping(JPEG); 210 211 TIFF.addExtension("tif"); 212 TIFF.addExtension("tiff"); 213 TIFF.addMimeType("image/tif"); 214 TIFF.addMimeType("image/x-tif"); 215 TIFF.addMimeType("image/tiff"); 216 TIFF.addMimeType("image/x-tiff"); 217 TIFF.addMimeType("application/tif"); 218 TIFF.addMimeType("application/x-tif"); 219 TIFF.addMimeType("application/tiff"); 220 TIFF.addMimeType("application/x-tiff"); 221 MimeTypeMapping.addMapping(TIFF); 222 223 PNG.addExtension("png"); 224 PNG.addMimeType("image/png"); 225 PNG.addMimeType("application/png"); 226 PNG.addMimeType("application/x-png"); 227 MimeTypeMapping.addMapping(PNG); 228 229 SVG.addExtension("svg"); 230 SVG.addMimeType("image/svg+xml"); 231 SVG.addMimeType("image/svg"); 232 SVG.addMimeType("image/svg-xml"); 233 SVG.addMimeType("text/xml-svg"); 234 SVG.addMimeType("image/vnd.adobe.svg+xml"); 235 SVG.addMimeType("image/svg-xml"); 236 MimeTypeMapping.addMapping(SVG); 237 238 PDF.addExtension("pdf"); 239 PDF.addMimeType("application/pdf"); 240 PDF.addMimeType("application/x-pdf"); 241 PDF.addMimeType("application/acrobat"); 242 PDF.addMimeType("applications/vnd.pdf"); 243 PDF.addMimeType("text/pdf"); 244 PDF.addMimeType("text/x-pdf"); 245 MimeTypeMapping.addMapping(PDF); 246 247 TEXT.addExtension("txt"); 248 TEXT.addMimeType("text/plain"); 249 MimeTypeMapping.addMapping(TEXT); 250 251 XML.addExtension("xml"); 252 XML.addMimeType("text/xml"); 253 XML.addMimeType("application/xml"); 254 XML.addMimeType("application/x-xml"); 255 MimeTypeMapping.addMapping(XML); 256 257 XSLT.addExtension("xsl"); 258 XSLT.addExtension("xslt"); 259 XSLT.addMimeType("text/xsl"); 260 MimeTypeMapping.addMapping(XSLT); 261 262 HTML.addExtension("html"); 263 HTML.addExtension("htm"); 264 HTML.addMimeType("text/html"); 265 MimeTypeMapping.addMapping(HTML); 266 267 FLASH.addExtension("swf"); 268 FLASH.addMimeType("application/x-shockwave-flash"); 269 FLASH.addMimeType("application/x-shockwave-flash2-preview"); 270 FLASH.addMimeType("application/futuresplash"); 271 FLASH.addMimeType("image/vnd.rn-realflash"); 272 MimeTypeMapping.addMapping(FLASH); 273 274 WAV.addExtension("wav"); 275 WAV.addMimeType("audio/wav"); 276 WAV.addMimeType("audio/x-wav"); 277 WAV.addMimeType("audio/wave"); 278 WAV.addMimeType("audio/x-pn-wav"); 279 MimeTypeMapping.addMapping(WAV); 280 281 AU.addExtension("au"); 282 AU.addMimeType("audio/basic"); 283 AU.addMimeType("audio/x-basic"); 284 AU.addMimeType("audio/au"); 285 AU.addMimeType("audio/x-au"); 286 AU.addMimeType("audio/x-pn-au"); 287 AU.addMimeType("audio/rmf"); 288 AU.addMimeType("audio/x-rmf"); 289 AU.addMimeType("audio/x-ulaw"); 290 AU.addMimeType("audio/vnd.qcelp"); 291 AU.addMimeType("audio/x-gsm"); 292 AU.addMimeType("audio/snd"); 293 MimeTypeMapping.addMapping(AU); 294 295 REAL_MEDIA.addExtension("rm"); 296 REAL_MEDIA.addMimeType("application/vnd.rn-realmedia"); 297 REAL_MEDIA.addMimeType("audio/vnd.rn-realaudio"); 298 REAL_MEDIA.addMimeType("audio/x-pn-realaudio"); 299 REAL_MEDIA.addMimeType("audio/x-realaudio"); 300 REAL_MEDIA.addMimeType("audio/x-pm-realaudio-plugin"); 301 MimeTypeMapping.addMapping(REAL_MEDIA); 302 303 ASF.addExtension("asf"); 304 ASF.addMimeType("audio/asf"); 305 ASF.addMimeType("application/asx"); 306 ASF.addMimeType("video/x-ms-asf-plugin"); 307 ASF.addMimeType("application/x-mplayer2"); 308 ASF.addMimeType("video/x-ms-asf"); 309 ASF.addMimeType("application/vnd.ms-asf"); 310 ASF.addMimeType("video/x-ms-asf-plugin"); 311 ASF.addMimeType("video/x-ms-wm"); 312 ASF.addMimeType("video/x-ms-wmx"); 313 MimeTypeMapping.addMapping(ASF); 314 315 OGG.addExtension("ogg"); 316 OGG.addMimeType("audio/x-ogg"); 317 OGG.addMimeType("application/x-ogg"); 318 MimeTypeMapping.addMapping(OGG); 319 320 MP3.addExtension("mp3"); 321 MP3.addMimeType("audio/mpeg"); 322 MP3.addMimeType("audio/x-mpeg"); 323 MP3.addMimeType("audio/mp3"); 324 MP3.addMimeType("audio/x-mp3"); 325 MP3.addMimeType("audio/mpeg3"); 326 MP3.addMimeType("audio/x-mpeg3"); 327 MP3.addMimeType("audio/mpg"); 328 MP3.addMimeType("audio/x-mpg"); 329 MP3.addMimeType("audio/x-mpegaudio"); 330 MimeTypeMapping.addMapping(MP3); 331 332 WORD.addExtension("doc"); 333 WORD.addMimeType("application/msword"); 334 WORD.addMimeType("application/doc"); 335 WORD.addMimeType("appl/text"); 336 WORD.addMimeType("application/vnd.msword"); 337 WORD.addMimeType("application/vnd.ms-word"); 338 WORD.addMimeType("application/winword"); 339 WORD.addMimeType("application/word"); 340 WORD.addMimeType("application/x-msw6"); 341 WORD.addMimeType("application/x-msword"); 342 WORD.addMimeType("zz-application/zz-winassoc-doc"); 343 MimeTypeMapping.addMapping(WORD); 344 345 WORD_PERFECT.addExtension("wp"); 346 WORD_PERFECT.addMimeType("application/wordperfect5.1"); 347 MimeTypeMapping.addMapping(WORD_PERFECT); 348 349 RTF.addExtension("rtf"); 350 RTF.addMimeType("application/rtf"); 351 RTF.addMimeType("application/x-rtf"); 352 RTF.addMimeType("text/rtf"); 353 RTF.addMimeType("text/richtext"); 354 RTF.addMimeType("application/x-soffice"); 355 MimeTypeMapping.addMapping(RTF); 356 357 PPT.addExtension("ppt"); 358 PPT.addMimeType("application/mspowerpoint"); 359 PPT.addMimeType("application/ms-powerpoint"); 360 PPT.addMimeType("application/mspowerpnt"); 361 PPT.addMimeType("application/vnd-mspowerpoint"); 362 PPT.addMimeType("application/vnd.ms-powerpoint"); 363 PPT.addMimeType("application/powerpoint"); 364 PPT.addMimeType("application/x-powerpoint"); 365 PPT.addMimeType("application/x-mspowerpoint"); 366 MimeTypeMapping.addMapping(PPT); 367 368 XLS.addExtension("xls"); 369 XLS.addMimeType("application/msexcel"); 370 XLS.addMimeType("application/x-msexcel"); 371 XLS.addMimeType("application/x-ms-excel"); 372 XLS.addMimeType("application/vnd.ms-excel"); 373 XLS.addMimeType("application/x-excel"); 374 XLS.addMimeType("application/x-dos_ms_excel"); 375 XLS.addMimeType("application/xls"); 376 XLS.addMimeType("application/x-xls"); 377 XLS.addMimeType("zz-application/zz-winassoc-xls"); 378 MimeTypeMapping.addMapping(XLS); 379 380 MOVIE_MPEG.addExtension("mpg"); 381 MOVIE_MPEG.addExtension("mpeg"); 382 MOVIE_MPEG.addMimeType("video/mpeg"); 383 MOVIE_MPEG.addMimeType("video/mpg"); 384 MOVIE_MPEG.addMimeType("video/x-mpg"); 385 MOVIE_MPEG.addMimeType("video/mpeg2"); 386 MOVIE_MPEG.addMimeType("video/x-mpeg"); 387 MOVIE_MPEG.addMimeType("video/x-mpeg2a"); 388 MimeTypeMapping.addMapping(MOVIE_MPEG); 389 390 MOVIE_AVI.addExtension("avi"); 391 MOVIE_AVI.addMimeType("video/avi"); 392 MOVIE_AVI.addMimeType("video/msvideo"); 393 MOVIE_AVI.addMimeType("video/x-msvideo"); 394 MOVIE_AVI.addMimeType("video/xmpg2"); 395 MimeTypeMapping.addMapping(MOVIE_AVI); 396 397 MOVIE_MOV.addExtension("mov"); 398 MOVIE_MOV.addMimeType("video/quicktime"); 399 MOVIE_MOV.addMimeType("video/x-quicktime"); 400 MimeTypeMapping.addMapping(MOVIE_MOV); 401 402 EMAIL.addExtension("adr"); 403 EMAIL.addMimeType("link/mailto"); 404 405 MimeTypeMapping.addMapping(EMAIL); 406 407 URL.addExtension("url"); 408 URL.addMimeType("link/http"); 409 410 MimeTypeMapping.addMapping(URL); 411 412 CSV.addExtension("csv"); 413 CSV.addMimeType("text/csv"); 414 MimeTypeMapping.addMapping(CSV); 415 } 416 417 420 private MimeTypeMapping() { 421 super(); 422 } 423 424 429 private static void addMapping(Mapping mapping) { 430 List aExtensions = mapping.getExtensions(); 431 Iterator itor = aExtensions.iterator(); 432 while(itor.hasNext()) { 433 m_aExtensionMap.put((String )itor.next(), mapping); 434 } 435 List aMimeTypes = mapping.getMimeTypes(); 436 itor = aMimeTypes.iterator(); 437 while(itor.hasNext()) { 438 m_aMimeTypeMap.put((String )itor.next(), mapping); 439 } 440 } 441 442 448 public static List getMimeTypes(String sExtension) { 449 List result = null; 450 451 Mapping mapping = (Mapping)MimeTypeMapping.m_aExtensionMap.get(sExtension.toLowerCase()); 452 453 if(mapping != null) { 454 result = mapping.getMimeTypes(); 455 } 456 457 return result; 458 } 459 460 466 public static List getExtensions(String sMimeType) { 467 if(sMimeType!=null && m_aMimeTypeMap!=null && MimeTypeMapping.m_aMimeTypeMap.get(sMimeType)!=null) { 468 return ((Mapping)MimeTypeMapping.m_aMimeTypeMap.get(sMimeType)).getExtensions(); 469 } else { 470 return null; 471 } 472 } 473 474 480 public static String getExtensionFromMimeType(String mime) { 481 String ext = null; 482 483 List extList = MimeTypeMapping.getExtensions(mime); 484 485 486 if (extList != null && extList.size() > 0) { 487 ext = (String ) extList.get(0); 488 } 489 490 return ext; 491 } 492 493 499 public static String getMimeTypeFromExtension(String ext) { 500 String type = ext; 501 502 List mimeList = MimeTypeMapping.getMimeTypes(ext); 503 504 if (mimeList != null && mimeList.size() > 0) { 505 type = (String ) mimeList.get(0); 506 } 507 508 return type; 509 } 510 511 517 public static String getDescriptionForExtension(String sExtension) { 518 return ((Mapping)MimeTypeMapping.m_aExtensionMap.get(sExtension)).getDescription(); 519 } 520 521 527 public static String getDescriptionForMimeType(String sMimeType) { 528 return ((Mapping)MimeTypeMapping.m_aMimeTypeMap.get(sMimeType)).getDescription(); 529 } 530 531 541 public static class Mapping { 542 545 private String m_sDescription = ""; 546 549 private ArrayList m_aMimeTypes = new ArrayList (); 550 553 private ArrayList m_aFileExtensions = new ArrayList (); 554 555 560 private Mapping(String sDescription) { 561 this.m_sDescription = sDescription; 562 } 563 564 569 public String getDescription() { 570 return this.m_sDescription; 571 } 572 573 579 public void addMimeType(String sMimeType) { 580 this.m_aMimeTypes.add(sMimeType); 581 } 582 583 588 public List getMimeTypes() { 589 return this.m_aMimeTypes; 590 } 591 592 597 public String getMimeType() { 598 return (String ) m_aMimeTypes.get(0); 599 } 600 601 607 public void addExtension(String sExtension) { 608 this.m_aFileExtensions.add(sExtension); 609 } 610 611 616 public List getExtensions() { 617 return this.m_aFileExtensions; 618 } 619 620 625 public String getExtension() { 626 return (String ) m_aFileExtensions.get(0); 627 } 628 } 629 630 635 public static void main(String [] args) { 636 System.out.println(MimeTypeMapping.getMimeTypes("GIF")); 637 System.out.println(MimeTypeMapping.getExtensions("image/gif")); 638 System.out.println(MimeTypeMapping.getDescriptionForExtension("gif")); 639 System.out.println(MimeTypeMapping.getDescriptionForMimeType("image/gif")); 640 System.out.println("----------------------------------------------------"); 641 Iterator itor = MimeTypeMapping.m_aExtensionMap.values().iterator(); 642 while(itor.hasNext()) { 643 Mapping map = (Mapping)itor.next(); 644 System.out.println(map.getDescription() + " exts=" + map.getExtensions() + " mimetypes=" + map.getMimeTypes()); 645 System.out.println("----------------------------------------------------"); 646 } 647 System.exit(0); 648 } 649 650 } 651 | Popular Tags |