presage 0.9.1
databaseConnector.h
Go to the documentation of this file.
1
2/******************************************************
3 * Presage, an extensible predictive text entry system
4 * ---------------------------------------------------
5 *
6 * Copyright (C) 2008 Matteo Vescovi <matteo.vescovi@yahoo.co.uk>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 *
22 **********(*)*/
23
24
25#ifndef DATABASECONNECTOR_H
26#define DATABASECONNECTOR_H
27
28#ifdef HAVE_CONFIG_H
29#include "config.h"
30#endif
31
32#include "../../core/logger.h"
33
34#include <map>
35#include <vector>
36#include <string>
37
38typedef std::vector<std::string> Ngram;
39typedef std::vector<Ngram> NgramTable;
40
45public:
46 DatabaseConnector(const std::string database_name,
47 const size_t cardinality,
48 const bool read_write);
49 DatabaseConnector(const std::string database_name,
50 const size_t cardinality,
51 const bool read_write,
52 const std::string& log_level);
53 virtual ~DatabaseConnector();
54
57 void createNgramTable(const size_t cardinality) const;
61
64 int getUnigramCountsSum() const;
65
68 int getNgramCount(const Ngram ngram) const;
69
72 NgramTable getNgramLikeTable(const Ngram ngram, int limit = -1) const;
73
76 NgramTable getNgramLikeTableFiltered(const Ngram ngram, const char** filter, int limit = -1) const;
77
83 int incrementNgramCount(const Ngram ngram) const;
84
87 void insertNgram(const Ngram ngram, const int count) const;
88
91 void updateNgram(const Ngram ngram, const int count) const;
92
95 void removeNgram(const Ngram ngram) const;
96
100 virtual void beginTransaction() const;
101
105 virtual void endTransaction() const;
106
110 virtual void rollbackTransaction() const;
111
112protected:
113 // Following functions to be overridden by derived classes.
114 virtual void openDatabase() = 0;
115 virtual void closeDatabase() = 0;
116 virtual NgramTable executeSql(const std::string query) const = 0;
117
118 std::string get_database_filename () const;
119 std::string set_database_filename (const std::string& filename);
120
121 void set_cardinality (const size_t cardinality);
122 size_t get_cardinality () const;
123
124 void set_read_write_mode (const bool read_write);
125 bool get_read_write_mode () const;
126
128
129private:
133 std::string buildSelectLikeClause(const int cardinality) const;
134
137 std::string buildWhereClause(const Ngram ngram) const;
138
142 std::string buildWhereLikeClause(const Ngram ngram) const;
143
146 std::string buildWhereLikeClauseFiltered(const Ngram ngram,const char** filter) const;
147
150 std::string buildValuesClause(const Ngram ngram, const int count) const;
151
154 std::string sanitizeString(const std::string) const;
155
158 int extractFirstInteger(const NgramTable&) const;
159
160
161 std::string expand_variables (std::string filename) const;
162 void substitute_variable_in_string (const std::string& variable_name, std::string& filepath) const;
163
164 std::string database_filename;
167
168};
169
170#endif // DATABASECONNECTOR_H
void set_read_write_mode(const bool read_write)
virtual void endTransaction() const
void createNgramTable(const size_t cardinality) const
virtual void closeDatabase()=0
virtual NgramTable executeSql(const std::string query) const =0
std::string buildWhereLikeClauseFiltered(const Ngram ngram, const char **filter) const
virtual void beginTransaction() const
void substitute_variable_in_string(const std::string &variable_name, std::string &filepath) const
void removeNgram(const Ngram ngram) const
virtual void rollbackTransaction() const
void createUnigramTable() const
NgramTable getNgramLikeTable(const Ngram ngram, int limit=-1) const
NgramTable getNgramLikeTableFiltered(const Ngram ngram, const char **filter, int limit=-1) const
std::string buildValuesClause(const Ngram ngram, const int count) const
int incrementNgramCount(const Ngram ngram) const
void createBigramTable() const
size_t get_cardinality() const
void insertNgram(const Ngram ngram, const int count) const
virtual void openDatabase()=0
std::string buildWhereLikeClause(const Ngram ngram) const
int extractFirstInteger(const NgramTable &) const
std::string database_filename
std::string buildSelectLikeClause(const int cardinality) const
std::string buildWhereClause(const Ngram ngram) const
std::string set_database_filename(const std::string &filename)
int getUnigramCountsSum() const
int getNgramCount(const Ngram ngram) const
void updateNgram(const Ngram ngram, const int count) const
std::string sanitizeString(const std::string) const
std::string expand_variables(std::string filename) const
std::string get_database_filename() const
void createTrigramTable() const
bool get_read_write_mode() const
void set_cardinality(const size_t cardinality)
DatabaseConnector(const std::string database_name, const size_t cardinality, const bool read_write)
Logger< char > logger
Definition: logger.h:57
Definition: ngram.h:33
std::vector< std::string > Ngram
std::vector< Ngram > NgramTable