1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  */
9 
10 #ifndef INCLUDED_HELPCOMPILER_HELPINDEXER_HXX
11 #define INCLUDED_HELPCOMPILER_HELPINDEXER_HXX
12 
13 #include <helpcompiler/dllapi.h>
14 
15 #include <rtl/ustring.hxx>
16 #include <set>
17 
18 // I assume that TCHAR is defined as wchar_t throughout
19 
20 namespace lucene
21 {
22 namespace document
23 {
24 class Document;
25 }
26 namespace util
27 {
28 class Reader;
29 }
30 }
31 
32 class L10N_DLLPUBLIC HelpIndexer {
33     private:
34                 OUString d_lang;
35                 OUString d_module;
36                 OUString d_captionDir;
37                 OUString d_contentDir;
38                 OUString d_indexDir;
39                 OUString d_error;
40                 std::set<OUString> d_files;
41 
42     public:
43 
44     /**
45      * @param lang Help files language.
46      * @param module The module of the helpfiles.
47      * @param srcDir The help directory to index
48      * @param outDir The directory to write the "module".idxl directory to
49      */
50         HelpIndexer(OUString const &lang, OUString const &module,
51             OUString const &srcDir, OUString const &outDir);
52 
53     /**
54      * Run the indexer.
55      * @return true if index successfully generated.
56      */
57     bool indexDocuments();
58 
59     /**
60      * Get the error string (empty if no error occurred).
61      */
getErrorMessage() const62     OUString const & getErrorMessage() const { return d_error;}
63 
64     private:
65 
66     /**
67      * Scan the caption & contents directories for help files.
68      */
69     bool scanForFiles();
70 
71     /**
72      * Scan for files in the given directory.
73      */
74     bool scanForFiles(OUString const &path);
75 
76     /**
77      * Fill the Document with information on the given help file.
78      */
79     void helpDocument(OUString const & fileName, lucene::document::Document *doc) const;
80 
81     /**
82      * Create a reader for the given file, and create an "empty" reader in case the file doesn't exist.
83      */
84     static lucene::util::Reader *helpFileReader(OUString const & path);
85 };
86 
87 #endif
88 
89 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
90