1 package com.bradmcevoy.common;
2
3 import eu.medsea.mimeutil.MimeException;
4 import eu.medsea.mimeutil.MimeType;
5 import eu.medsea.mimeutil.MimeUtil;
6 import java.io.File;
7 import java.util.Collection;
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
10
11
12
13
14
15 public class ContentTypeUtils {
16
17 private static Logger log = LoggerFactory.getLogger(ContentTypeUtils.class);
18
19 static {
20 MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.ExtensionMimeDetector");
21 MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");
22 }
23
24 public static String findContentTypes( String name ) {
25 Collection mimeTypes = MimeUtil.getMimeTypes( name );
26 return mimeTypes.toString();
27
28 }
29
30 public static String findContentTypes( File file ) {
31 Collection mimeTypes = null;
32 try {
33 mimeTypes = MimeUtil.getMimeTypes( file.getName() );
34 } catch( MimeException e ) {
35 log.warn( "exception retrieving content type for file: " + file.getAbsolutePath(),e);
36 return "application/binary";
37 }
38 String s = mimeTypes.toString();
39
40 log.trace( "findContentTypes: {}", file.getName(), mimeTypes);
41 return s;
42 }
43
44 public static String findAcceptableContentType(String mime, String preferredList) {
45 MimeType mt = MimeUtil.getPreferedMimeType(preferredList, mime);
46 return mt.toString();
47
48 }
49
50 private static String buildContentTypeText( Collection mimeTypes ) {
51 StringBuilder sb = null;
52 for( Object o : mimeTypes ) {
53 MimeType mt = (MimeType) o;
54 if( sb == null ) {
55 sb = new StringBuilder();
56 } else {
57 sb.append( "," );
58 }
59 sb.append( mt.toString() );
60 }
61 if( sb == null ) {
62 return "";
63 } else {
64 return sb.toString();
65 }
66 }
67 }