1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package net.sf.jdiskcatalog.analysis;
24
25 import java.io.IOException;
26 import java.io.InputStream;
27 import java.util.HashMap;
28 import java.util.Map;
29
30 import net.sf.jdiskcatalog.api.NodeInfo;
31 import net.sf.jdiskcatalog.api.StreamAnalyser;
32
33 import org.apache.nutch.util.mime.MimeType;
34 import org.apache.nutch.util.mime.MimeTypes;
35
36
37
38
39
40
41
42
43 public class MimeTypeAnalyser implements StreamAnalyser
44 {
45 public static final String KEY_MIMETYPE = "mimetype";
46
47 private MimeTypes mimeTypes;
48 private int minLength;
49
50 public MimeTypeAnalyser()
51 {
52 mimeTypes = MimeTypes.get("mime-types.xml");
53 minLength = mimeTypes.getMinLength();
54 }
55
56 public Map<String, Object> analyse(InputStream stream, NodeInfo nodeInfo) throws IOException
57 {
58 Map<String, Object> properties = new HashMap<String, Object>();
59
60 MimeType mimeType = mimeTypes.getMimeType(nodeInfo.getName());
61 if (mimeType == null)
62 {
63
64 byte[] data = new byte[minLength];
65 int read = stream.read(data, 0, minLength);
66 mimeTypes.getMimeType(data);
67 System.out.println("Read " + read + "bytes out of " + minLength + ". Found: " + mimeType);
68 }
69
70 if (mimeType != null)
71 properties.put(KEY_MIMETYPE, mimeType.getName());
72 return properties;
73 }
74 }