1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs.impl;
18
19 import org.apache.commons.vfs.FileContent;
20 import org.apache.commons.vfs.FileObject;
21 import org.apache.commons.vfs.FileSystemException;
22
23 import java.util.HashMap;
24 import java.util.Map;
25
26 /***
27 * A helper class that determines the provider to use for a file.
28 *
29 * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
30 * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
31 */
32 class FileTypeMap
33 {
34 private final Map mimeTypeMap = new HashMap();
35 private final Map extensionMap = new HashMap();
36
37 /***
38 * Adds a MIME type mapping.
39 */
40 public void addMimeType(final String mimeType, final String scheme)
41 {
42 mimeTypeMap.put(mimeType, scheme);
43 }
44
45 /***
46 * Adds a filename extension mapping.
47 */
48 public void addExtension(final String extension, final String scheme)
49 {
50 extensionMap.put(extension, scheme);
51 }
52
53 /***
54 * Finds the provider to use to create a filesystem from a given file.
55 */
56 public String getScheme(final FileObject file) throws FileSystemException
57 {
58
59 final FileContent content = file.getContent();
60
61 final String mimeType = content.getContentInfo().getContentType();
62 if (mimeType != null)
63 {
64 return (String) mimeTypeMap.get(mimeType);
65 }
66
67
68 final String extension = file.getName().getExtension();
69 return (String) extensionMap.get(extension);
70 }
71 }