diff --git a/libcorpus2_whole/io/documentreader.cpp b/libcorpus2_whole/io/documentreader.cpp index e335a8df980197c7d838ee366baad87a9970d3f5..73db0d354fbe16778100b03ab2d3d6db41288b81 100644 --- a/libcorpus2_whole/io/documentreader.cpp +++ b/libcorpus2_whole/io/documentreader.cpp @@ -25,6 +25,21 @@ or FITNESS FOR A PARTICULAR PURPOSE. namespace Corpus2 { namespace whole{ +DocumentReader::DocumentReader(const Tagset& tagset, const std::string& corpus_type, const std::string& corpus_file_path, const std::string& corpus_reader) + : corpus_type_(corpus_type), tagset_(tagset), corpus_path_(corpus_file_path) +{ + if (corpus_type_ == "document") { + corpus_file.open(corpus_file_path.c_str()); +#ifdef WITH_POLIQARP + } else if (corpus_type_ == "poliqarp") { + reader = boost::shared_ptr<PoliqarpDocumentReader>( + new PoliqarpDocumentReader(tagset_, corpus_path_, corpus_reader)); +#endif + } else { + throw Corpus2Error(corpus_type_ + " is an unknown reader type!"); + } +} + DocumentReader::DocumentReader(const Tagset& tagset, const std::string& corpus_type, const std::string& corpus_file_path) : corpus_type_(corpus_type), tagset_(tagset), corpus_path_(corpus_file_path) { @@ -33,7 +48,7 @@ DocumentReader::DocumentReader(const Tagset& tagset, const std::string& corpus_t #ifdef WITH_POLIQARP } else if (corpus_type_ == "poliqarp") { reader = boost::shared_ptr<PoliqarpDocumentReader>( - new PoliqarpDocumentReader(tagset_, corpus_path_)); + new PoliqarpDocumentReader(tagset_, corpus_path_, "poliqarp")); #endif } else { throw Corpus2Error(corpus_type_ + " is an unknown reader type!"); diff --git a/libcorpus2_whole/io/documentreader.h b/libcorpus2_whole/io/documentreader.h index 9bfe43917a78adef0d0ddccda651452ef94ad538..760fd67c98330dcf5a7c0f8f0793cfff84e33e5a 100644 --- a/libcorpus2_whole/io/documentreader.h +++ b/libcorpus2_whole/io/documentreader.h @@ -11,8 +11,8 @@ namespace whole { class DocumentReader { public: + DocumentReader(const Tagset& tagset, const std::string& corpus_type, const std::string& corpus_file_path, const std::string& corpus_reader); DocumentReader(const Tagset& tagset, const std::string& corpus_type, const std::string& corpus_file_path); - boost::shared_ptr<Document> read(); private: diff --git a/libcorpus2_whole/io/poliqarpdocumentreader.cpp b/libcorpus2_whole/io/poliqarpdocumentreader.cpp index b52ddacc106a913c72491a7da4263049e3325e50..a2d0644e68fd03a13b38945cf90b44bcc442d5f1 100644 --- a/libcorpus2_whole/io/poliqarpdocumentreader.cpp +++ b/libcorpus2_whole/io/poliqarpdocumentreader.cpp @@ -4,10 +4,17 @@ namespace Corpus2 { namespace whole { +PoliqarpDocumentReader::PoliqarpDocumentReader(const Tagset& tagset, const std::string& corpus_path, const std::string& corpus_reader) + : DocumentReaderI("poliqarp") +{ + this->pqr_ = Corpus2::TokenReader::create_path_reader(corpus_reader, tagset, corpus_path); +} + PoliqarpDocumentReader::PoliqarpDocumentReader(const Tagset& tagset, const std::string& corpus_path) : DocumentReaderI("poliqarp") { - this->pqr_ = boost::shared_ptr<PoliqarpReader>(new PoliqarpReader(tagset, corpus_path)); + + this->pqr_ = Corpus2::TokenReader::create_path_reader("poliqarp", tagset, corpus_path); } boost::shared_ptr<Document> PoliqarpDocumentReader::read() @@ -26,5 +33,6 @@ boost::shared_ptr<Document> PoliqarpDocumentReader::read() return document; } + } // whole ns } // Corpus2 ns diff --git a/libcorpus2_whole/io/poliqarpdocumentreader.h b/libcorpus2_whole/io/poliqarpdocumentreader.h index 58d33183feedf9763aeda12be1ef218550f50899..70cb046a2bea3efa89512edc3651755fd5495fc5 100644 --- a/libcorpus2_whole/io/poliqarpdocumentreader.h +++ b/libcorpus2_whole/io/poliqarpdocumentreader.h @@ -18,8 +18,8 @@ namespace whole { class PoliqarpDocumentReader : public DocumentReaderI { public: + PoliqarpDocumentReader(const Tagset& tagset, const std::string& corpus_path, const std::string& corpus_reader); PoliqarpDocumentReader(const Tagset& tagset, const std::string& corpus_path); - /** * Semantic of this methd is similar to get_next_document from Poliqarp Client * @return nth readed document @@ -35,7 +35,7 @@ public: private: /// Poliqarp reader used for reading Poliqarp corp - boost::shared_ptr<PoliqarpReader> pqr_; + Corpus2::TokenReader::TokenReaderPtr pqr_; }; } // whole ns diff --git a/swig/documentreader.i b/swig/documentreader.i index bafc3ea7d4c7f27eaf65bb4a92d1743898b8d911..a36031549f465b57a16b057f214ab394993cd929 100644 --- a/swig/documentreader.i +++ b/swig/documentreader.i @@ -19,7 +19,8 @@ namespace Corpus2 { namespace whole { class DocumentReader { public: - DocumentReader(const Tagset& tagset, const std::string& corpus_type,const std::string& corpus_file); + DocumentReader(const Tagset& tagset, const std::string& corpus_type,const std::string& corpus_file_path, const std::string& corpus_reader); + DocumentReader(const Tagset& tagset, const std::string& corpus_type,const std::string& corpus_file_path); boost::shared_ptr<Document> read(); }; } // whole ns