summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/pimconverter/converter.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/noncore/tools/pimconverter/converter.cpp b/noncore/tools/pimconverter/converter.cpp
index e8bd475..d92f382 100644
--- a/noncore/tools/pimconverter/converter.cpp
+++ b/noncore/tools/pimconverter/converter.cpp
@@ -204,128 +204,142 @@ void Converter::start_conversion(){
204 case DATEBOOK: 204 case DATEBOOK:
205 delete static_cast<ODateBookAccess*> (sourceDB); 205 delete static_cast<ODateBookAccess*> (sourceDB);
206 delete static_cast<ODateBookAccess*> (destDB); 206 delete static_cast<ODateBookAccess*> (destDB);
207 break; 207 break;
208 default: 208 default:
209 owarn << "Unknown database selected (" << m_selectedDatabase << ")" << oendl; 209 owarn << "Unknown database selected (" << m_selectedDatabase << ")" << oendl;
210 return; 210 return;
211 } 211 }
212 212
213 213
214 owarn << "Conversion is finished and needed " << t.elapsed() << " ms !" << oendl; 214 owarn << "Conversion is finished and needed " << t.elapsed() << " ms !" << oendl;
215} 215}
216 216
217void Converter::closeEvent( QCloseEvent *e ) 217void Converter::closeEvent( QCloseEvent *e )
218{ 218{
219 219
220 /* Due to the fact that we don't have multitasking here, this 220 /* Due to the fact that we don't have multitasking here, this
221 * critical handling don't make sense, but the future.. 221 * critical handling don't make sense, but the future..
222 */ 222 */
223 if ( m_criticalState ){ 223 if ( m_criticalState ){
224 e->ignore(); 224 e->ignore();
225 return; 225 return;
226 } 226 }
227 e->accept(); 227 e->accept();
228} 228}
229 229
230bool Converter::sqliteMoveAndConvert( const QString& name, const QString& src, const QString &dest ) 230bool Converter::sqliteMoveAndConvert( const QString& name, const QString& src, const QString &dest )
231{ 231{
232 232
233 QMessageBox::information( this, tr( "Pim-Converter" ), 233 QMessageBox::information( this, tr( "Pim-Converter" ),
234 tr( "<qt>Starting to convert the database for %1</qt>" ).arg( name ) ); 234 tr( "<qt>Starting to convert the database for %1</qt>" ).arg( name ) );
235 235
236 236
237 bool error = false; 237 bool error = false;
238 QString cmd; 238 QString cmd;
239 if (!QFile::exists( src ) ) { 239 if (!QFile::exists( src ) ) {
240 cmd = tr( "No SQLite2 database could be found!" ); 240 cmd = tr( "No SQLite2 database could be found!" );
241 error = true; 241 error = true;
242 } 242 }
243 243
244 if( QFile::exists( dest ) ) { 244 if( QFile::exists( dest ) ) {
245 cmd = tr( "The database is already converted!" ); 245 cmd = tr( "The database is already converted!" );
246 error = true; 246 error = true;
247 } 247 }
248 248
249 249
250 if ( error ){ 250 if ( error ){
251 QMessageBox::critical( this, tr("Pim-Converter"), 251 QMessageBox::critical( this, tr("Pim-Converter"),
252 tr("<qt>Conversion not possible: \n" 252 tr("<qt>Conversion not possible: <br>"
253 "Problem: %1</qt>").arg(cmd) ); 253 "Problem: %1</qt>").arg(cmd) );
254 return error; 254 return error;
255 } 255 }
256 256
257 257
258 /* 258 /*
259 * Move it over 259 * Move it over
260 */ 260 */
261 cmd = "mv " + Global::shellQuote(src) + " " + Global::shellQuote(dest); 261 cmd = "mv " + Global::shellQuote(src) + " " + Global::shellQuote(dest);
262 if( ::system( cmd ) != 0 ){ 262 if( ::system( cmd ) != 0 ){
263 error = true; 263 error = true;
264 } 264 }
265 265
266 266
267 /* 267 /*
268 * Convert it 268 * Convert it
269 */ 269 */
270 if ( !error ){ 270 if ( !error ){
271 cmd = "sqlite " + Global::shellQuote(dest) + " .dump | sqlite3 " + Global::shellQuote(src); 271 cmd = "sqlite " + Global::shellQuote(dest) + " .dump | sqlite3 " + Global::shellQuote(src);
272 if ( ::system( cmd ) != 0 ){ 272 if ( ::system( cmd ) != 0 ){
273 error = true; 273 error = true;
274 } 274 }
275 } 275 }
276 276
277
278 /*
279 * Check whether conversion really worked. If not, move old database back to recover it
280 */
281 if ( !QFile::exists( src ) ){
282 cmd = "mv " + Global::shellQuote(dest) + " " + Global::shellQuote(src);
283 if ( ::system( cmd ) != 0 ){
284 }
285 error = true;
286 cmd = "Database-Format is not V2!?";
287 }
288
277 if ( error ){ 289 if ( error ){
278 QMessageBox::critical( this, tr("Pim-Converter"), 290 QMessageBox::critical( this, tr("Pim-Converter"),
279 tr("<qt>An internal error occurred: " 291 tr("<qt>An internal error occurred: <br>"
280 "Converting the database was impossible! " 292 "Converting the database was impossible! <br>"
281 "Command: '%1' </qt>").arg(cmd) ); 293 "Command/Reason: '%1' </qt>").arg(cmd) );
282 294
283 } 295 }
296
297
284} 298}
285 299
286 300
287 301
288void Converter::start_upgrade() 302void Converter::start_upgrade()
289{ 303{
290 odebug << "Start upgrading" << oendl; 304 odebug << "Start upgrading" << oendl;
291 switch( QMessageBox::warning( this, tr("Pim-Converter"), 305 switch( QMessageBox::warning( this, tr("Pim-Converter"),
292 tr("<qt>Are you really sure that you " 306 tr("<qt>Are you really sure that you "
293 "want to convert your database from " 307 "want to convert your database from "
294 "sqlite V2 to sqlite V3?</qt>"), 308 "sqlite V2 to sqlite V3?</qt>"),
295 QMessageBox::Ok | QMessageBox::Default, 309 QMessageBox::Ok | QMessageBox::Default,
296 QMessageBox::Abort | QMessageBox::Escape )) { 310 QMessageBox::Abort | QMessageBox::Escape )) {
297 311
298 case QMessageBox::Abort: // Abort clicked or Escape pressed 312 case QMessageBox::Abort: // Abort clicked or Escape pressed
299 // abort 313 // abort
300 return; 314 return;
301 break; 315 break;
302 } 316 }
303 odebug << "Checking whether sqlite is installed" << oendl; 317 odebug << "Checking whether sqlite is installed" << oendl;
304 if ( system( "which sqlite" ) != 0 ){ 318 if ( system( "which sqlite" ) != 0 ){
305 QMessageBox::critical( this, tr("Pim-Converter"), 319 QMessageBox::critical( this, tr("Pim-Converter"),
306 tr("<qt>An internal error occurred: " 320 tr("<qt>An internal error occurred: "
307 "sqlite was not accessible! " 321 "sqlite was not accessible! "
308 "Please correct the PATH or install " 322 "Please correct the PATH or install "
309 "this packages!</qt>") ); 323 "this packages!</qt>") );
310 return; 324 return;
311 } 325 }
312 if ( system( "which sqlite3" ) != 0 ){ 326 if ( system( "which sqlite3" ) != 0 ){
313 QMessageBox::critical( this, tr("Pim-Converter"), 327 QMessageBox::critical( this, tr("Pim-Converter"),
314 tr("<qt>An internal error occurred: " 328 tr("<qt>An internal error occurred: "
315 "sqlite3 was not accessible! " 329 "sqlite3 was not accessible! "
316 "Please correct the PATH or install " 330 "Please correct the PATH or install "
317 "this packages!</qt>") ); 331 "this packages!</qt>") );
318 return; 332 return;
319 } 333 }
320 334
321 QString src, dest; 335 QString src, dest;
322 bool error = false; 336 bool error = false;
323 337
324 src = Global::applicationFileName("addressbook", "addressbook.db" ); 338 src = Global::applicationFileName("addressbook", "addressbook.db" );
325 dest = Global::applicationFileName("addressbook", "addressbook.db_v2" ); 339 dest = Global::applicationFileName("addressbook", "addressbook.db_v2" );
326 error = sqliteMoveAndConvert( "Addressbook", src, dest ); 340 error = sqliteMoveAndConvert( "Addressbook", src, dest );
327 341
328 src = Global::applicationFileName("datebook", "datebook.db" ); 342 src = Global::applicationFileName("datebook", "datebook.db" );
329 dest = Global::applicationFileName("datebook", "datebook.db_v2" ); 343 dest = Global::applicationFileName("datebook", "datebook.db_v2" );
330 error = sqliteMoveAndConvert( "Datebook", src, dest ); 344 error = sqliteMoveAndConvert( "Datebook", src, dest );
331 345