1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.rat.analysis;
20
21 import org.apache.rat.api.Document;
22 import org.apache.rat.api.MetaData;
23 import org.apache.rat.document.IDocumentAnalyser;
24 import org.apache.rat.document.RatDocumentAnalysisException;
25 import org.apache.rat.document.impl.guesser.ArchiveGuesser;
26 import org.apache.rat.document.impl.guesser.BinaryGuesser;
27 import org.apache.rat.document.impl.guesser.NoteGuesser;
28
29
30
31
32
33 public class DefaultAnalyserFactory {
34
35 public static final IDocumentAnalyser createDefaultAnalyser(final IHeaderMatcher matcher) {
36
37 return new DefaultAnalyser(matcher);
38 }
39
40 private final static class DefaultAnalyser implements IDocumentAnalyser {
41
42 private final IHeaderMatcher matcher;
43
44 public DefaultAnalyser(final IHeaderMatcher matcher) {
45 super();
46 this.matcher = matcher;
47 }
48
49 public void analyse(Document subject) throws RatDocumentAnalysisException {
50 final MetaData.Datum documentCategory;
51 if (NoteGuesser.isNote(subject)) {
52 documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_NOTICE;
53 } else if (ArchiveGuesser.isArchive(subject)) {
54 documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_ARCHIVE;
55 } else if (BinaryGuesser.isBinary(subject)) {
56 documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_BINARY;
57 } else {
58 documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_STANDARD;
59 final DocumentHeaderAnalyser headerAnalyser = new DocumentHeaderAnalyser(matcher);
60 headerAnalyser.analyse(subject);
61 }
62 subject.getMetaData().set(documentCategory);
63 }
64 }
65 }