• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

lokalize

  • sources
  • kde-4.14
  • kdesdk
  • lokalize
  • src
  • tm
jobs.h
Go to the documentation of this file.
1 /* ****************************************************************************
2  This file is part of Lokalize
3 
4  Copyright (C) 2007-2009 by Nick Shaforostoff <shafff@ukr.net>
5 
6  This program is free software; you can redistribute it and/or
7  modify it under the terms of the GNU General Public License as
8  published by the Free Software Foundation; either version 2 of
9  the License or (at your option) version 3 or any later version
10  accepted by the membership of KDE e.V. (or its successor approved
11  by the membership of KDE e.V.), which shall act as a proxy
12  defined in Section 14 of version 3 of the license.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program. If not, see <http://www.gnu.org/licenses/>.
21 
22 **************************************************************************** */
23 
24 #ifndef JOBS_H
25 #define JOBS_H
26 
27 #include "pos.h"
28 #include "tmentry.h"
29 
30 #include <threadweaver/Job.h>
31 #include <kurl.h>
32 #include <QString>
33 #include <QSqlDatabase>
34 class QSqlQuery;
35 
39 namespace TM {
40 
41 #define TM_DATABASE_EXTENSION ".db"
42 #define REMOTETM_DATABASE_EXTENSION ".remotedb"
43 enum DbType {Local, Remote}; //is needed only on opening
44 
45 #define TM_AREA 8111
46 
47 
48 
49 #define CLOSEDB 10001
50 #define OPENDB 10000
51 #define TMTABSELECT 100
52 #define UPDATE 80
53 #define REMOVE 70
54 #define INSERT 60
55 #define SELECT 50
56 #define BATCHSELECTFINISHED 49
57 #define IMPORT 30
58 #define EXPORT 25
59 #define SCAN 10
60 #define SCANFINISHED 9
61 
62 
63 struct TMConfig
64 {
65  QString markup;
66  QString accel;
67  QString sourceLangCode;
68  QString targetLangCode;
69 };
70 
71 void cancelAllJobs(); //HACK because threadweaver's dequeue is not workin'
72 
73 //called on startup
74 class OpenDBJob: public ThreadWeaver::Job
75 {
76  Q_OBJECT
77 public:
78  struct ConnectionParams
79  {
80  QString driver, host, db, user, passwd;
81  bool isFilled(){return !host.isEmpty() && !db.isEmpty() && !user.isEmpty();}
82  };
83 
84  explicit OpenDBJob(const QString& dbName, DbType type=TM::Local, bool reconnect=false, const ConnectionParams& connParams=ConnectionParams(), QObject* parent=0);
85  ~OpenDBJob();
86 
87  int priority()const{return OPENDB;}
88 
89  struct DBStat{int pairsCount,uniqueSourcesCount,uniqueTranslationsCount;};
90 
91 protected:
92  void run ();
93 
94 public:
95  QString m_dbName;
96  DbType m_type;
97  //statistics
98  DBStat m_stat;
99 
100  //for the new DB creation
101  TMConfig m_tmConfig;
102  bool m_setParams;
103 
104  bool m_connectionSuccessful;
105  bool m_reconnect;
106  ConnectionParams m_connParams;
107 };
108 
109 //called on startup
110 class CloseDBJob: public ThreadWeaver::Job
111 {
112  Q_OBJECT
113 public:
114  explicit CloseDBJob(const QString& dbName, QObject* parent=0);
115  ~CloseDBJob();
116 
117  int priority()const{return CLOSEDB;}
118  QString dbName(){return m_dbName;}
119 
120 protected:
121  void run ();
122 
123  QString m_dbName;
124  //statistics?
125 };
126 
127 
128 
129 
130 class SelectJob: public ThreadWeaver::Job
131 {
132  Q_OBJECT
133 public:
134  SelectJob(const CatalogString& source,
135  const QString& ctxt,
136  const QString& file,
137  const DocPosition&,//for back tracking
138  const QString& dbName,
139  QObject* parent=0);
140  ~SelectJob();
141 
142  int priority()const{return SELECT;}
143 
144 protected:
145  void run ();
146  void aboutToBeDequeued(ThreadWeaver::WeaverInterface*);
147 
148 private:
149  //returns true if seen translation with >85%
150  bool doSelect(QSqlDatabase&,
151  QStringList& words,
152  bool isShort);
153 
154 public:
155  CatalogString m_source;
156 private:
157  QString m_ctxt;
158  QString m_file;
159  bool m_dequeued;
160 
161 public:
162  DocPosition m_pos;
163  QList<TMEntry> m_entries;
164 
165  QString m_dbName;
166 };
167 
168 enum {Enqueue=1};
169 SelectJob* initSelectJob(Catalog*, DocPosition pos, QString db=QString(), int opt=Enqueue);
170 
171 
172 
173 class RemoveJob: public ThreadWeaver::Job
174 {
175  Q_OBJECT
176 public:
177  explicit RemoveJob(const TMEntry& entry, QObject* parent=0);
178  ~RemoveJob();
179  int priority()const{return REMOVE;}
180 
181 protected:
182  void run();
183 
184  TMEntry m_entry;
185 };
186 
187 
193 //TODO a mechanism to get rid of dead dups (use strigi?).
194 //also, display usage of different translations and suggest user
195 //to use only one of them (listview, checkboxes)
196 class UpdateJob: public ThreadWeaver::Job
197 {
198  Q_OBJECT
199 public:
200  explicit UpdateJob(const QString& filePath,
201  const QString& ctxt,
202  const CatalogString& en,
203  const CatalogString& newTarget,
204  int form,
205  bool approved,
206  //const DocPosition&,//for back tracking
207  const QString& dbName,
208  QObject* parent=0);
209 
210  ~UpdateJob(){}
211 
212  int priority()const{return UPDATE;}
213 
214 protected:
215  void run ();
216 // public:
217 
218 private:
219  QString m_filePath;
220  QString m_ctxt;
221  CatalogString m_english;
222  CatalogString m_newTarget;
223  int m_form;
224  bool m_approved;
225  QString m_dbName;
226 };
227 
228 //scan one file
229 class ScanJob: public ThreadWeaver::Job
230 {
231  Q_OBJECT
232 public:
233  explicit ScanJob(const KUrl& url,
234  const QString& dbName,
235  QObject* parent=0);
236  ~ScanJob();
237 
238  int priority()const{return SCAN;}
239 
240 protected:
241  void run ();
242 public:
243  KUrl m_url;
244 
245  //statistics
246  ushort m_time;
247  ushort m_added;
248  ushort m_newVersions;//e1.english==e2.english, e1.target!=e2.target
249 
250  int m_size;
251 
252  QString m_dbName;
253 };
254 
255 
256 //helper
257 class BatchSelectFinishedJob: public ThreadWeaver::Job
258 {
259  Q_OBJECT
260 public:
261  explicit BatchSelectFinishedJob(QWidget* view,QObject* parent=0)
262  : ThreadWeaver::Job(parent)
263  , m_view(view)
264  {}
265  ~BatchSelectFinishedJob(){};
266 
267  int priority()const{return BATCHSELECTFINISHED;}
268 
269 protected:
270  void run (){};
271 public:
272  QWidget* m_view;
273 };
274 #if 0
275 we use index stored in db now...
276 
277 
278 
279 //create index --called on startup
280 class IndexWordsJob: public ThreadWeaver::Job
281 {
282  Q_OBJECT
283 public:
284  IndexWordsJob(QObject* parent=0);
285  ~IndexWordsJob();
286 
287  int priority()const{return 100;}
288 
289 protected:
290  void run ();
291 public:
292  TMWordHash m_tmWordHash;
293 
294  //statistics?
295 };
296 #endif
297 
298 
299 
300 
301 
302 
303 class ImportTmxJob: public ThreadWeaver::Job
304 {
305  Q_OBJECT
306 public:
307  explicit ImportTmxJob(const QString& url,
308  const QString& dbName,
309  QObject* parent=0);
310  ~ImportTmxJob();
311 
312  int priority()const{return IMPORT;}
313 
314 protected:
315  void run ();
316 public:
317  QString m_filename;
318 
319  //statistics
320  ushort m_time;
321  ushort m_added;
322  ushort m_newVersions;//e1.english==e2.english, e1.target!=e2.target
323 
324  QString m_dbName;
325 };
326 
327 // #if 0
328 
329 class ExportTmxJob: public ThreadWeaver::Job
330 {
331  Q_OBJECT
332 public:
333  explicit ExportTmxJob(const QString& url,
334  const QString& dbName,
335  QObject* parent=0);
336  ~ExportTmxJob();
337 
338  int priority()const{return IMPORT;}
339 
340 protected:
341  void run ();
342 public:
343  QString m_filename;
344 
345  //statistics
346  ushort m_time;
347  ushort m_added;
348  ushort m_newVersions;//e1.english==e2.english, e1.target!=e2.target
349 
350  QString m_dbName;
351 };
352 
353 // #endif
354 }
355 
356 class ExecQueryJob: public ThreadWeaver::Job
357 {
358  Q_OBJECT
359 public:
360  explicit ExecQueryJob(const QString& queryString, const QString& dbName, QObject* parent=0);
361  ~ExecQueryJob();
362 
363  int priority()const{return TMTABSELECT;}
364 
365 
366  QSqlQuery* query;
367 protected:
368  void run ();
369 
370  QString m_dbName;
371  QString m_query;
372  //statistics?
373 };
374 
375 
376 #endif
377 
TM::DbType
DbType
Definition: jobs.h:43
TM::ImportTmxJob::m_dbName
QString m_dbName
Definition: jobs.h:324
TM::TMConfig::accel
QString accel
Definition: jobs.h:66
TM::BatchSelectFinishedJob::~BatchSelectFinishedJob
~BatchSelectFinishedJob()
Definition: jobs.h:265
QWidget
TM::SelectJob::SelectJob
SelectJob(const CatalogString &source, const QString &ctxt, const QString &file, const DocPosition &, const QString &dbName, QObject *parent=0)
Definition: jobs.cpp:1099
ExecQueryJob::m_dbName
QString m_dbName
Definition: jobs.h:370
TM::ExportTmxJob
Definition: jobs.h:329
ExecQueryJob::query
QSqlQuery * query
Definition: jobs.h:366
TM::ScanJob::run
void run()
Definition: jobs.cpp:1507
TM::CloseDBJob::CloseDBJob
CloseDBJob(const QString &dbName, QObject *parent=0)
Definition: jobs.cpp:1047
ExecQueryJob::ExecQueryJob
ExecQueryJob(const QString &queryString, const QString &dbName, QObject *parent=0)
Definition: jobs.cpp:2058
TM::ImportTmxJob::m_filename
QString m_filename
Definition: jobs.h:317
TM::OpenDBJob::~OpenDBJob
~OpenDBJob()
Definition: jobs.cpp:951
TM::BatchSelectFinishedJob::m_view
QWidget * m_view
Definition: jobs.h:270
TM::OpenDBJob::ConnectionParams::user
QString user
Definition: jobs.h:80
TM::ScanJob::m_size
int m_size
Definition: jobs.h:250
ExecQueryJob
Definition: jobs.h:356
TM::cancelAllJobs
void cancelAllJobs()
Definition: jobs.cpp:58
TM::OpenDBJob::m_stat
DBStat m_stat
Definition: jobs.h:98
TM::Local
Definition: jobs.h:43
TM::UpdateJob::~UpdateJob
~UpdateJob()
Definition: jobs.h:210
TM::OpenDBJob::m_dbName
QString m_dbName
Definition: jobs.h:95
TM::ImportTmxJob::m_newVersions
ushort m_newVersions
Definition: jobs.h:322
TM::CloseDBJob::priority
int priority() const
Definition: jobs.h:117
TM::SelectJob::aboutToBeDequeued
void aboutToBeDequeued(ThreadWeaver::WeaverInterface *)
Definition: jobs.cpp:1121
TM::ScanJob::m_dbName
QString m_dbName
Definition: jobs.h:252
pos.h
TM::CloseDBJob::dbName
QString dbName()
Definition: jobs.h:118
TM::RemoveJob::RemoveJob
RemoveJob(const TMEntry &entry, QObject *parent=0)
Definition: jobs.cpp:1586
TM::RemoveJob::run
void run()
Definition: jobs.cpp:1599
TM::OpenDBJob::DBStat::uniqueTranslationsCount
int uniqueTranslationsCount
Definition: jobs.h:89
TM::OpenDBJob::m_connectionSuccessful
bool m_connectionSuccessful
Definition: jobs.h:104
ExecQueryJob::priority
int priority() const
Definition: jobs.h:363
TM::OpenDBJob::m_tmConfig
TMConfig m_tmConfig
Definition: jobs.h:101
TM::ExportTmxJob::m_newVersions
ushort m_newVersions
Definition: jobs.h:348
TM::SelectJob::m_entries
QList< TMEntry > m_entries
Definition: jobs.h:163
TM::SelectJob
Definition: jobs.h:130
TM::OpenDBJob::OpenDBJob
OpenDBJob(const QString &dbName, DbType type=TM::Local, bool reconnect=false, const ConnectionParams &connParams=ConnectionParams(), QObject *parent=0)
Definition: jobs.cpp:939
TM::SelectJob::priority
int priority() const
Definition: jobs.h:142
TM::RemoveJob::priority
int priority() const
Definition: jobs.h:179
TM::Remote
Definition: jobs.h:43
UPDATE
#define UPDATE
Definition: jobs.h:52
QSqlDatabase
ExecQueryJob::~ExecQueryJob
~ExecQueryJob()
Definition: jobs.cpp:2067
TM::ExportTmxJob::run
void run()
Definition: jobs.cpp:1931
TM::ExportTmxJob::ExportTmxJob
ExportTmxJob(const QString &url, const QString &dbName, QObject *parent=0)
Definition: jobs.cpp:1917
OPENDB
#define OPENDB
Definition: jobs.h:50
TM::ScanJob
Definition: jobs.h:229
TM::OpenDBJob::ConnectionParams::passwd
QString passwd
Definition: jobs.h:80
DocPosition
This struct represents a position in a catalog.
Definition: pos.h:38
TM::OpenDBJob::ConnectionParams::db
QString db
Definition: jobs.h:80
TM::ExportTmxJob::m_time
ushort m_time
Definition: jobs.h:346
TM::TMEntry
Definition: tmentry.h:35
SCAN
#define SCAN
Definition: jobs.h:59
TM::OpenDBJob::DBStat::uniqueSourcesCount
int uniqueSourcesCount
Definition: jobs.h:89
TM::ImportTmxJob::ImportTmxJob
ImportTmxJob(const QString &url, const QString &dbName, QObject *parent=0)
Definition: jobs.cpp:1877
BATCHSELECTFINISHED
#define BATCHSELECTFINISHED
Definition: jobs.h:56
SELECT
#define SELECT
Definition: jobs.h:55
TM::CloseDBJob::~CloseDBJob
~CloseDBJob()
Definition: jobs.cpp:1054
QObject
TM::ScanJob::m_time
ushort m_time
Definition: jobs.h:246
TM::OpenDBJob::run
void run()
Definition: jobs.cpp:956
TM::ExportTmxJob::~ExportTmxJob
~ExportTmxJob()
Definition: jobs.cpp:1926
TM::BatchSelectFinishedJob::BatchSelectFinishedJob
BatchSelectFinishedJob(QWidget *view, QObject *parent=0)
Definition: jobs.h:261
QString::isEmpty
bool isEmpty() const
QSqlQuery
TM::ExportTmxJob::m_filename
QString m_filename
Definition: jobs.h:343
TM::SelectJob::m_source
CatalogString m_source
Definition: jobs.h:155
TM::BatchSelectFinishedJob::run
void run()
Definition: jobs.h:270
QtConcurrent::run
QFuture< T > run(Function function,...)
TM::OpenDBJob
Definition: jobs.h:74
QString
QList
TM::initSelectJob
SelectJob * initSelectJob(Catalog *, DocPosition pos, QString db=QString(), int opt=Enqueue)
Definition: jobs.cpp:1084
QStringList
TM::OpenDBJob::ConnectionParams::driver
QString driver
Definition: jobs.h:80
TM::OpenDBJob::m_setParams
bool m_setParams
Definition: jobs.h:102
TM::OpenDBJob::m_connParams
ConnectionParams m_connParams
Definition: jobs.h:106
tmentry.h
TM::TMConfig::targetLangCode
QString targetLangCode
Definition: jobs.h:68
TM::ScanJob::ScanJob
ScanJob(const KUrl &url, const QString &dbName, QObject *parent=0)
Definition: jobs.cpp:1490
TM::UpdateJob::UpdateJob
UpdateJob(const QString &filePath, const QString &ctxt, const CatalogString &en, const CatalogString &newTarget, int form, bool approved, const QString &dbName, QObject *parent=0)
Definition: jobs.cpp:1612
ExecQueryJob::run
void run()
Definition: jobs.cpp:2073
TM::RemoveJob
Definition: jobs.h:173
TM::ImportTmxJob::priority
int priority() const
Definition: jobs.h:312
TM::TMConfig::sourceLangCode
QString sourceLangCode
Definition: jobs.h:67
TM::ScanJob::m_newVersions
ushort m_newVersions
Definition: jobs.h:248
TM::SelectJob::~SelectJob
~SelectJob()
Definition: jobs.cpp:1116
TM::TMConfig
Definition: jobs.h:63
TM::OpenDBJob::ConnectionParams
Definition: jobs.h:78
TM::RemoveJob::m_entry
TMEntry m_entry
Definition: jobs.h:184
TM::ImportTmxJob::m_time
ushort m_time
Definition: jobs.h:320
TM::Enqueue
Definition: jobs.h:168
IMPORT
#define IMPORT
Definition: jobs.h:57
CatalogString
data structure used to pass info about inline elements a XLIFF tag is represented by a TAGRANGE_IMAGE...
Definition: catalogstring.h:128
CLOSEDB
#define CLOSEDB
Definition: jobs.h:49
TM::RemoveJob::~RemoveJob
~RemoveJob()
Definition: jobs.cpp:1593
TM::OpenDBJob::m_type
DbType m_type
Definition: jobs.h:96
TM::TMConfig::markup
QString markup
Definition: jobs.h:65
TM::UpdateJob::run
void run()
Definition: jobs.cpp:1633
TMTABSELECT
#define TMTABSELECT
Definition: jobs.h:51
TM::ExportTmxJob::m_added
ushort m_added
Definition: jobs.h:347
TM::CloseDBJob
Definition: jobs.h:110
TM::ImportTmxJob::run
void run()
Definition: jobs.cpp:1891
TM::SelectJob::m_dbName
QString m_dbName
Definition: jobs.h:165
TM::ExportTmxJob::priority
int priority() const
Definition: jobs.h:338
TM::ScanJob::m_url
KUrl m_url
Definition: jobs.h:243
TM::OpenDBJob::priority
int priority() const
Definition: jobs.h:87
TM::OpenDBJob::ConnectionParams::host
QString host
Definition: jobs.h:80
TM::ImportTmxJob::m_added
ushort m_added
Definition: jobs.h:321
Catalog
This class represents a catalog It uses CatalogStorage interface to work with catalogs in different f...
Definition: catalog.h:74
TM::OpenDBJob::DBStat::pairsCount
int pairsCount
Definition: jobs.h:89
ExecQueryJob::m_query
QString m_query
Definition: jobs.h:371
TM::UpdateJob::priority
int priority() const
Definition: jobs.h:212
TM::OpenDBJob::ConnectionParams::isFilled
bool isFilled()
Definition: jobs.h:81
TM::BatchSelectFinishedJob::priority
int priority() const
Definition: jobs.h:267
TM::ScanJob::m_added
ushort m_added
Definition: jobs.h:247
TM::SelectJob::run
void run()
Definition: jobs.cpp:1438
TM::ScanJob::~ScanJob
~ScanJob()
Definition: jobs.cpp:1502
REMOVE
#define REMOVE
Definition: jobs.h:53
TM::OpenDBJob::m_reconnect
bool m_reconnect
Definition: jobs.h:105
TM::OpenDBJob::DBStat
Definition: jobs.h:89
TM::ImportTmxJob
Definition: jobs.h:303
TM::CloseDBJob::run
void run()
Definition: jobs.cpp:1059
TM::BatchSelectFinishedJob
Definition: jobs.h:257
TM::ScanJob::priority
int priority() const
Definition: jobs.h:238
TM::UpdateJob
used to eliminate a lot of duplicate entries
Definition: jobs.h:196
TM::SelectJob::m_pos
DocPosition m_pos
Definition: jobs.h:162
TM::CloseDBJob::m_dbName
QString m_dbName
Definition: jobs.h:123
TM::ExportTmxJob::m_dbName
QString m_dbName
Definition: jobs.h:350
TM::ImportTmxJob::~ImportTmxJob
~ImportTmxJob()
Definition: jobs.cpp:1886
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:40:07 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

lokalize

Skip menu "lokalize"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal