15 #include "../Tokenizer/stokenize.h"
33 static QSqlDatabase mDb;
37 set<WordType> getWordTypes(
string wordname,
size_t recurDepth = 0);
42 list<Word> getWords();
46 QSqlDatabase Converter::mDb = QSqlDatabase::addDatabase(
"QSQLITE");
54 Converter::Converter(
const string &sentence) :
58 mDb.setDatabaseName(DB_PATH);
60 qDebug() << mDb.lastError();
61 qFatal(
"Failed to connect to database." );
62 throw std::invalid_argument(
"Error: Invalid database");
63 }
else { qDebug() <<
"Debug: Database opened." << endl; }
75 void Converter::extractTokens()
78 while (mySTokenize.More()) {
79 mTokens.push_back(mySTokenize.nextToken());
91 set<WordType> Converter::getWordTypes(
string wordname,
size_t recurDepth)
96 string qrStr =
"SELECT DISTINCT wordtype FROM entries WHERE word = '" + wordname +
"'";
97 string rawTypesCollections;
101 mLiteQr.prepare(qrStr.c_str());
102 if( !mLiteQr.exec() ) {
103 qDebug() << mLiteQr.lastError();
104 throw std::invalid_argument(
"Invalid query.");
108 QSqlRecord rec = mLiteQr.record();
109 while( mLiteQr.next() ) {
110 rawTypesCollections += string(
" ");
111 rawTypesCollections += mLiteQr.value(0).toString().toStdString();
118 if (rawTypesCollections.empty() && wordname.length() > 1 && recurDepth < 3) {
121 return getWordTypes(wordname.substr(0, wordname.length() - 1), recurDepth + 1);
125 rawTypesCollections.erase(std::remove(rawTypesCollections.begin(),
126 rawTypesCollections.end(),
',')
127 , rawTypesCollections.end());
128 rawTypesCollections.erase(std::remove(rawTypesCollections.begin(),
129 rawTypesCollections.end(),
'&')
130 , rawTypesCollections.end());
132 stringstream ss(rawTypesCollections);
135 uniqueWT.insert(buf);
138 set<WordType> WordTypes;
139 for(
string WT : uniqueWT)
140 WordTypes.insert(WordTypeMap[WT]);
153 set <WordType> foundTypes;
156 for(
Token token : mTokens)
158 if(token.getType() == TokenType::ALPHA) {
159 string wordStr = token.getTokenString();
161 foundTypes = getWordTypes(wordStr);
162 WordList.push_back(
Word(token, foundTypes));
list< Word > getWords()
Function to finalize the list of words to be returned, along with its corresponding roles...
Definition: converter.h:148
Definition: stokenize.h:13
Class to process a sentence and generate the list of words and it's corresponding datas...
Definition: converter.h:27
A Class to store token and its corresponding tags and definitions.
Definition: word.h:25
static void capitalize(string &s)
Static function that is used to capitalize external string.
Definition: stokenize.cpp:62
~Converter()
no dynamic thing to destroy for now
Definition: converter.h:178