notepad/notepad1/SyncMLAdapter/src/nsmlnotepadDatabase.cpp
changeset 0 f979ecb2b13e
equal deleted inserted replaced
-1:000000000000 0:f979ecb2b13e
       
     1 /*
       
     2 * Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  notepad database
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <sysutil.h>
       
    20 
       
    21 
       
    22 #include <txtetext.h>
       
    23 #include "nsmlnotepadDatabase.h"
       
    24 #include <nsmlnotepaddatastoreformat.rsg>
       
    25 
       
    26 #include "nsmlnotepadlogging.h"
       
    27 
       
    28 
       
    29 // -----------------------------------------------------------------------------
       
    30 // CNSmlNotepadDatabase::NewL
       
    31 // -----------------------------------------------------------------------------
       
    32 //
       
    33 CNSmlNotepadDatabase* CNSmlNotepadDatabase::NewL()
       
    34 	{
       
    35 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::NewL(): begin");
       
    36 	
       
    37 	CNSmlNotepadDatabase *instance = new(ELeave) CNSmlNotepadDatabase();
       
    38 	CleanupStack::PushL(instance);
       
    39 	instance->ConstructL();
       
    40 	CleanupStack::Pop(instance);
       
    41 	
       
    42 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::NewL(): end");
       
    43 	return instance;
       
    44 	}
       
    45 // -----------------------------------------------------------------------------
       
    46 // CNSmlNotepadDatabase::~CNSmlNotepadDatabase()
       
    47 // -----------------------------------------------------------------------------
       
    48 //
       
    49 CNSmlNotepadDatabase::~CNSmlNotepadDatabase()
       
    50 	{
       
    51 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::~CNSmlNotepadDatabase(): begin");
       
    52 	
       
    53     if(iOpened)
       
    54         {
       
    55     	iDatabase.Close();
       
    56         }
       
    57 	
       
    58 	if(iDataFile)
       
    59 	{
       
    60 		delete iDataFile;
       
    61 		iDataFile = NULL;	
       
    62 	}
       
    63 	iTable.Close();	
       
    64 	iDbs.Close();
       
    65 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::~CNSmlNotepadDatabase(): end");
       
    66 	}
       
    67 // -----------------------------------------------------------------------------
       
    68 // CNSmlNotepadDatabase::CNSmlNotepadDatabase()
       
    69 // -----------------------------------------------------------------------------
       
    70 //
       
    71 CNSmlNotepadDatabase::CNSmlNotepadDatabase()
       
    72 	{
       
    73 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CNSmlNotepadDatabase(): begin");
       
    74 	
       
    75 	iOpened = EFalse;
       
    76 	
       
    77 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CNSmlNotepadDatabase(): end");
       
    78 	}	
       
    79 	
       
    80 // -----------------------------------------------------------------------------
       
    81 // CNSmlNotepadDatabase::ConstructL
       
    82 // -----------------------------------------------------------------------------
       
    83 //
       
    84 void CNSmlNotepadDatabase::ConstructL()
       
    85 	{
       
    86 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::ConstructL: begin");
       
    87 	
       
    88     User::LeaveIfError(iDbs.Connect());
       
    89     
       
    90     iDataFile = HBufC::NewL(KMaxFileLength);
       
    91     iDataFile->Des().Copy(KNpdDataFile);
       
    92 	
       
    93     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::ConstructL: end");
       
    94 	}
       
    95 
       
    96 // -----------------------------------------------------------------------------
       
    97 // CNSmlNotepadDatabase::OpenL
       
    98 // -----------------------------------------------------------------------------
       
    99 //
       
   100 void CNSmlNotepadDatabase::OpenL()
       
   101 {
       
   102 	_NOTEPAD_DBG_FILE("CCNSmlNotepadDatabase::OpenL(): begin");
       
   103 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::OpenL(): end");
       
   104 	OpenL(*iDataFile);
       
   105 }
       
   106 // -----------------------------------------------------------------------------
       
   107 // TInt CNSmlNotepadDatabase::OpenL(const TDesC& aStoreName)
       
   108 // -----------------------------------------------------------------------------
       
   109 //
       
   110 void CNSmlNotepadDatabase::OpenL(const TDesC& aStoreName)
       
   111     {
       
   112     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::OpenL(): begin");
       
   113     
       
   114 	TBuf<32> format;
       
   115     format.Copy(KSecure);
       
   116     format.Append(KSecureUid.Name());
       
   117     
       
   118 	TInt err(iDatabase.Open(iDbs,aStoreName,format));
       
   119 	RFs fsession; 
       
   120     switch ( err )
       
   121         {
       
   122         case KErrNone: // database open succeed
       
   123 			iOpened = ETrue;
       
   124             break;
       
   125         case KErrArgument: // when the datafile is empty
       
   126         case KErrNotSupported: // UID mismatch, corrupted
       
   127         case KErrEof: // read error, corrupted
       
   128         case KErrCorrupt:
       
   129 		    iDatabase.Close(); // indespensable for RFs::Delete()
       
   130 		    User::LeaveIfError(fsession.Connect());
       
   131 			fsession.Delete(*iDataFile);
       
   132 			fsession.Close();
       
   133         case KErrNotFound:
       
   134 			TRAP(err,CreateDBL());
       
   135 			_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::OpenL(): after createDBL and before database open");
       
   136 			if( err == KErrNone) 
       
   137 				{
       
   138 				iOpened = ETrue;
       
   139 				}
       
   140 			break;
       
   141          default:
       
   142             break;
       
   143         }
       
   144 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::OpenL(): end");
       
   145 	User::Leave(err);
       
   146     }
       
   147 
       
   148 
       
   149 
       
   150 // -----------------------------------------------------------------------------
       
   151 // CNSmlNotepadDatabase::AddNoteL
       
   152 // -----------------------------------------------------------------------------
       
   153 //
       
   154 void CNSmlNotepadDatabase::AddNoteL(CNpdItem& aNote, TInt &aKey)
       
   155     {
       
   156     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::AddNoteL(): begin");
       
   157     
       
   158 	if(!iOpened)
       
   159 		{
       
   160 		User::Leave(KErrNotReady);
       
   161 		}
       
   162 
       
   163     if(!aNote.Content())
       
   164         {
       
   165         User::Leave(KErrArgument);
       
   166         }
       
   167 
       
   168 	TInt err(KErrNone);
       
   169     RDbView dbView;
       
   170     CleanupClosePushL(dbView);
       
   171 
       
   172     err =  dbView.Prepare(
       
   173             iDatabase, TDbQuery(KNpdSqlInsert) );
       
   174 
       
   175 	if(err == KErrNone) 
       
   176 		{
       
   177         TRAP(err,
       
   178 	    		dbView.InsertL();
       
   179 		    	dbView.SetColL(ENotepadUpdateTime, aNote.LastModified());
       
   180 			    dbView.SetColL(ENotepadMemo, aNote.Content()->Des());
       
   181 			    dbView.PutL();
       
   182                 );
       
   183 	    if (err == KErrNone)
       
   184 		    {
       
   185             aKey = dbView.ColInt32(ENotepadKey);
       
   186 	        } 
       
   187         else 
       
   188             {
       
   189 			dbView.Close();
       
   190 			Rollback();
       
   191             }
       
   192 		}
       
   193 
       
   194     CleanupStack::PopAndDestroy(); // dbView
       
   195     iDatabase.Compact();
       
   196 	
       
   197 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::AddNoteL(): end");
       
   198     User::Leave(err);
       
   199     }
       
   200 
       
   201 // -----------------------------------------------------------------------------
       
   202 // CNSmlNotepadDatabase::DeleteNoteL
       
   203 // -----------------------------------------------------------------------------
       
   204 //
       
   205 void CNSmlNotepadDatabase::DeleteNoteL(const TInt aKey)
       
   206     {
       
   207     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::DeleteNoteL(): begin");
       
   208     
       
   209 	if(!iOpened)
       
   210 		{
       
   211 			User::Leave(KErrNotReady);
       
   212 		}
       
   213 
       
   214     TInt err(KErrNone);
       
   215     TBuf<KNpdSqlDeleteHeadSize> sql;
       
   216     sql.Append(KNpdSqlDeleteHead);
       
   217     sql.AppendNum(aKey);
       
   218 
       
   219     TInt rowCount( iDatabase.Execute(sql) );
       
   220 
       
   221     if(rowCount > 0)
       
   222 		{
       
   223 			err = KErrNone;
       
   224 		}
       
   225 	else
       
   226 		{
       
   227 			_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::DeleteNoteL(): item not found");
       
   228 			err = KErrNotFound;
       
   229 		}
       
   230 
       
   231 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::DeleteNoteL(): end");
       
   232 	User::Leave(err);
       
   233     }
       
   234 
       
   235 
       
   236 // -----------------------------------------------------------------------------
       
   237 // CNSmlNotepadDatabase::Close
       
   238 // -----------------------------------------------------------------------------
       
   239 //
       
   240 void CNSmlNotepadDatabase::Close()
       
   241 	{
       
   242 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Close(): begin");
       
   243 	
       
   244 	if(iOpened)
       
   245 		{
       
   246 		iDatabase.Compact();
       
   247 	    iDatabase.Close();
       
   248 	    iOpened = EFalse;
       
   249         }
       
   250         
       
   251 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Close(): end");        
       
   252 	}
       
   253 	
       
   254 // -----------------------------------------------------------------------------
       
   255 // CNSmlNotepadDatabase::GetNoteL
       
   256 // -----------------------------------------------------------------------------
       
   257 //
       
   258 void CNSmlNotepadDatabase::GetNoteL(const TInt aKey, CNpdItem& aItem)
       
   259     {
       
   260     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::GetNoteL(): begin");
       
   261     
       
   262 	TInt err(KErrNone);
       
   263 
       
   264 	if(!iOpened)
       
   265 		{
       
   266 		_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::GetNoteL(): not opened");
       
   267 		User::Leave(KErrNotReady);
       
   268 		}
       
   269 
       
   270     TBuf<KNpdSqlStringMaxLength> sql;
       
   271     sql.Format(KNpdSqlFormatSeek, aKey);
       
   272 
       
   273     RDbView dbView;
       
   274     CleanupClosePushL(dbView);
       
   275   
       
   276 	User::LeaveIfError(dbView.Prepare(
       
   277         iDatabase, TDbQuery(sql), RDbView::EReadOnly ) );
       
   278 
       
   279     User::LeaveIfError(dbView.EvaluateAll());
       
   280  
       
   281 	TInt isAtRow(dbView.FirstL());
       
   282     if ( isAtRow )
       
   283         {
       
   284         _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::GetNoteL(): if entered");
       
   285         HBufC* content = NULL;
       
   286         dbView.GetL();
       
   287 
       
   288 		TInt key = dbView.ColInt32(ENotepadKey);
       
   289 		TTime modified = dbView.ColTime(ENotepadUpdateTime);
       
   290 
       
   291         RDbColReadStream blob;
       
   292         blob.OpenLC(dbView, ENotepadMemo);
       
   293         TInt colLength( dbView.ColLength(ENotepadMemo) );
       
   294         content = HBufC::NewLC(colLength);
       
   295         TPtr ptr = content->Des();
       
   296 
       
   297         blob.ReadL(ptr, colLength);
       
   298 		
       
   299 		aItem.Set(key,modified, content);
       
   300         CleanupStack::Pop(content); // content
       
   301         CleanupStack::PopAndDestroy(); // blob
       
   302         }
       
   303 	else 
       
   304 		{
       
   305 		err = KErrNotFound;
       
   306 		}
       
   307 
       
   308     CleanupStack::PopAndDestroy(); // dbView/
       
   309     
       
   310     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::GetNoteL(): end");
       
   311     User::Leave(err);
       
   312     }
       
   313 
       
   314 // -----------------------------------------------------------------------------
       
   315 // CNSmlNotepadDatabase::UpdateNoteL
       
   316 // -----------------------------------------------------------------------------
       
   317 //
       
   318 void CNSmlNotepadDatabase::UpdateNoteL(const TInt aKey, CNpdItem& aItem)
       
   319 	{
       
   320 	TInt err(KErrNone);
       
   321 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::UpdateNoteL(): begin");
       
   322 
       
   323 	if(!iOpened)
       
   324 		{
       
   325 		_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::UpdateNoteL(): not ready");
       
   326 		User::Leave(KErrNotReady);
       
   327 		}
       
   328 
       
   329     TBuf<KNpdSqlStringMaxLength> sql;
       
   330     sql.Format(KNpdSqlFormatSeek, aKey);
       
   331 
       
   332     RDbView dbView;
       
   333     CleanupClosePushL(dbView);
       
   334   
       
   335 	User::LeaveIfError(dbView.Prepare(
       
   336         iDatabase, TDbQuery(sql), RDbView::EUpdatable ) );
       
   337 
       
   338     User::LeaveIfError(dbView.EvaluateAll());
       
   339  
       
   340 	TInt isAtRow(dbView.FirstL());
       
   341     if ( isAtRow )
       
   342 		{
       
   343 		
       
   344 		TRAP(err,
       
   345 			dbView.UpdateL();
       
   346 			dbView.SetColL(ENotepadUpdateTime, aItem.LastModified());
       
   347 			dbView.SetColL(ENotepadMemo, aItem.Content()->Des());
       
   348 			dbView.PutL();
       
   349 		);
       
   350 	    if (err != KErrNone)
       
   351 		    {
       
   352 			dbView.Close();
       
   353 			Rollback();
       
   354 	        } 
       
   355 		}
       
   356 	else 
       
   357 		{
       
   358 		err = KErrNotFound;
       
   359 		}
       
   360 
       
   361     CleanupStack::PopAndDestroy(); // dbView
       
   362     iDatabase.Compact();
       
   363 
       
   364 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::UpdateNoteL(): end");
       
   365 	User::Leave(err);
       
   366 	}
       
   367 // -----------------------------------------------------------------------------
       
   368 // CNSmlNotepadDatabase::Reset
       
   369 // -----------------------------------------------------------------------------
       
   370 //
       
   371 TInt CNSmlNotepadDatabase::Reset()
       
   372 	{
       
   373 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Reset(): begin");
       
   374 	
       
   375     TInt err(KErrNone);
       
   376 
       
   377 	if(!iOpened)
       
   378 		{
       
   379 		return KErrNotReady;
       
   380 		}
       
   381 
       
   382     TBuf<KNpdSqlDeleteHeadSize> sql;
       
   383     sql.Append(KNpdSqlDeleteAll);
       
   384  
       
   385 	TInt rowCount( iDatabase.Execute(sql) );
       
   386 
       
   387     if(rowCount < 0)
       
   388         {
       
   389         err = rowCount;
       
   390         }
       
   391     
       
   392    	if (err == KErrNone && iDatabase.InTransaction())
       
   393     	{
       
   394 	    err = iDatabase.Commit();
       
   395 	    }
       
   396    
       
   397     if (err == KErrNone && rowCount > 0) 
       
   398         {
       
   399         err = iDatabase.Compact();
       
   400         }
       
   401 
       
   402     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Reset(): begin");
       
   403     return err;
       
   404 	}
       
   405 // -----------------------------------------------------------------------------
       
   406 // CNSmlNotepadDatabase::IsOpen
       
   407 // -----------------------------------------------------------------------------
       
   408 //
       
   409 TBool CNSmlNotepadDatabase::IsOpen()
       
   410 	{
       
   411 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::IsOpen(): begin");
       
   412 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::IsOpen(): end");
       
   413     return iOpened;
       
   414     }
       
   415 // -----------------------------------------------------------------------------
       
   416 // void CNSmlNotepadDatabase::GetDefaultDatastoreName(TDes& aStoreName)
       
   417 // -----------------------------------------------------------------------------
       
   418 //    
       
   419 void CNSmlNotepadDatabase::GetDefaultDatastoreName(TDes& aStoreName)
       
   420 {
       
   421 	_NOTEPAD_DBG_FILE("CCNSmlNotepadDatabase::GetDefaultDatastoreName(): begin");
       
   422 	
       
   423 	aStoreName.Copy(*iDataFile);
       
   424 	
       
   425 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::GetDefaultDatastoreName(): end");
       
   426 } 
       
   427 // -----------------------------------------------------------------------------
       
   428 // CDesCArray* CNSmlNotepadDatabase::ListDatabasesL()
       
   429 // -----------------------------------------------------------------------------
       
   430 //
       
   431 CDesCArray* CNSmlNotepadDatabase::ListDatabasesL()
       
   432 {
       
   433 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::ListDatabasesL(): begin");
       
   434 	
       
   435 	CDesCArrayFlat *arr = new (ELeave)CDesCArrayFlat(1);
       
   436 	CleanupStack::PushL(arr);
       
   437 	arr->AppendL(*iDataFile);
       
   438 	CleanupStack::Pop(arr);
       
   439 	
       
   440 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::ListDatabasesL(): end");
       
   441 	return arr;	
       
   442 } 
       
   443 // -----------------------------------------------------------------------------
       
   444 // TInt CNSmlNotepadDatabase::FirstL()
       
   445 // -----------------------------------------------------------------------------
       
   446 //
       
   447 TInt CNSmlNotepadDatabase::FirstL()
       
   448 {
       
   449 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::FirstL(): begin");
       
   450 	TInt ret = -1;
       
   451 	if(!iOpened) OpenL();
       
   452     iTable.Close();
       
   453 	TInt err = iTable.Open(iDatabase,KNpdTableName,RDbRowSet::EReadOnly);
       
   454 	if(err == KErrNone)
       
   455 	{
       
   456 		iTable.BeginningL();	
       
   457 		if(iTable.FirstL())
       
   458 		{
       
   459 			_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::FirstL(): if firstL");		
       
   460 			iTable.GetL();
       
   461 			_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::FirstL(): after GetL");		
       
   462 			ret = iTable.ColInt(1);	
       
   463 		}
       
   464 		_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::FirstL(): end");
       
   465 	}
       
   466   	return ret;
       
   467 }
       
   468 // -----------------------------------------------------------------------------
       
   469 // TInt CNSmlNotepadDatabase::NextL()
       
   470 // -----------------------------------------------------------------------------
       
   471 //
       
   472 TInt CNSmlNotepadDatabase::NextL()
       
   473 {
       
   474 	_NOTEPAD_DBG_FILE("NSmlNotepadDatabase::NextL(): begin");
       
   475 	
       
   476 	TInt ret = -1;
       
   477 	if(iTable.AtRow())
       
   478 	{
       
   479 		if(iTable.NextL())
       
   480 		{
       
   481 			iTable.GetL();
       
   482 			ret = iTable.ColInt(1);	
       
   483 		}
       
   484 	}
       
   485 	
       
   486 	_NOTEPAD_DBG_FILE("NSmlNotepadDatabase::NextL(): end");
       
   487 	return ret;
       
   488 }
       
   489 // -----------------------------------------------------------------------------
       
   490 // TInt CNSmlNotepadDatabase::LastL()
       
   491 // -----------------------------------------------------------------------------
       
   492 //
       
   493 TInt CNSmlNotepadDatabase::LastL()
       
   494 {
       
   495 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::LastL(): begin");
       
   496 	
       
   497 	TInt ret = -1;
       
   498 	if(iTable.LastL())
       
   499 	{
       
   500 		iTable.GetL();
       
   501 		ret = iTable.ColInt(1);	
       
   502 	}
       
   503 	
       
   504 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::LastL(): end");
       
   505 	return ret;	
       
   506 }
       
   507   	
       
   508 // -----------------------------------------------------------------------------
       
   509 // CNSmlNotepadDatabase::CreateColSetLC
       
   510 // -----------------------------------------------------------------------------
       
   511 //
       
   512 CDbColSet* CNSmlNotepadDatabase::CreateColSetLC()
       
   513     {
       
   514     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CreateColSetLC: begin");
       
   515     
       
   516     CDbColSet* columns = CDbColSet::NewLC(); 
       
   517     TDbCol col(KNpdKey, EDbColInt32);
       
   518     col.iAttributes = TDbCol::ENotNull | TDbCol::EAutoIncrement;
       
   519     columns->AddL(col);
       
   520 
       
   521     col.iName = KNpdUpdateTime;
       
   522     col.iType = EDbColDateTime;
       
   523     col.iAttributes = TDbCol::ENotNull;
       
   524     columns->AddL(col);
       
   525 
       
   526     col.iName = KNpdMemo;
       
   527     col.iType = EDbColLongText;
       
   528     col.iAttributes = TDbCol::ENotNull;
       
   529     columns->AddL(col);
       
   530 
       
   531 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CreateColSetLC: end");
       
   532     return columns; // columns stays on CleanupStack
       
   533     }
       
   534 
       
   535 // -----------------------------------------------------------------------------
       
   536 // CNSmlNotepadDatabase::CreateDBL
       
   537 // -----------------------------------------------------------------------------
       
   538 //
       
   539 void CNSmlNotepadDatabase::CreateDBL()
       
   540 	{
       
   541 	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CreateDBL(): begin");
       
   542 	
       
   543     iDatabase.Close();
       
   544 	TBuf<32> format;
       
   545     format.Copy(KSecure);
       
   546     format.Append(KSecureUid.Name());
       
   547 	User::LeaveIfError(iDatabase.Create(iDbs, *iDataFile,format));
       
   548 	CDbColSet* columns = CreateColSetLC();
       
   549 	User::LeaveIfError(iDatabase.CreateTable(KNpdTableName, *columns));
       
   550 	CleanupStack::PopAndDestroy(columns); // columns
       
   551     User::Leave(KErrNone);
       
   552     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CreateDBL(): end");
       
   553 	}
       
   554 
       
   555 // -----------------------------------------------------------------------------
       
   556 // CNSmlNotepadDatabase::Rollback
       
   557 // -----------------------------------------------------------------------------
       
   558 //
       
   559 void CNSmlNotepadDatabase::Rollback()
       
   560     {
       
   561     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Rollback(): begin");
       
   562     
       
   563     iDatabase.Rollback();
       
   564     if ( iDatabase.IsDamaged() )
       
   565         {
       
   566         iDatabase.Recover();
       
   567         }
       
   568         
       
   569     _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Rollback(): end");
       
   570     }
       
   571 
       
   572 
       
   573 
       
   574 
       
   575 
       
   576 
       
   577 // -----------------------------------------------------------------------------
       
   578 // CNpdItem implementations
       
   579 // -----------------------------------------------------------------------------
       
   580 //
       
   581 
       
   582 // -----------------------------------------------------------------------------
       
   583 // CNpdItem::~CNpdItem
       
   584 // -----------------------------------------------------------------------------
       
   585 //
       
   586 CNpdItem::~CNpdItem()
       
   587 	{
       
   588 	_NOTEPAD_DBG_FILE("CNpdItem::~CNpdItem: begin");
       
   589 	delete iContent;
       
   590 	_NOTEPAD_DBG_FILE("CNpdItem::~CNpdItem: end");
       
   591 	}
       
   592 // -----------------------------------------------------------------------------
       
   593 // CNpdItem::NewL
       
   594 // -----------------------------------------------------------------------------
       
   595 //
       
   596 CNpdItem* CNpdItem::NewLC()
       
   597 	{
       
   598 	_NOTEPAD_DBG_FILE("CNpdItem::NewLC: begin");
       
   599 	CNpdItem* tmp = new (ELeave) CNpdItem();
       
   600 	CleanupStack::PushL(tmp);
       
   601 	//tmp->ConstructL(0, TTime(), NULL);
       
   602 	_NOTEPAD_DBG_FILE("CNpdItem::NewLC: end");
       
   603 	return tmp;
       
   604 	}
       
   605 
       
   606 // -----------------------------------------------------------------------------
       
   607 // CNpdItem::NewL
       
   608 // -----------------------------------------------------------------------------
       
   609 //
       
   610 CNpdItem* CNpdItem::NewLC(TInt aKey, const TTime& aLastModified, HBufC *aContent)
       
   611 	{
       
   612 	_NOTEPAD_DBG_FILE("CNpdItem::NewLC(TInt aKey, const TTime& aLastModified, HBufC *aContent): begin");
       
   613 	CNpdItem* tmp = new (ELeave) CNpdItem(aKey,aLastModified,aContent);
       
   614 	CleanupStack::PushL(tmp);
       
   615 	//tmp->ConstructL(aKey, aLastModified, aContent);
       
   616 	_NOTEPAD_DBG_FILE("CNpdItem::NewLC(TInt aKey, const TTime& aLastModified, HBufC *aContent): end");
       
   617 	return tmp;
       
   618 	}
       
   619 
       
   620 // -----------------------------------------------------------------------------
       
   621 // CNpdItem::CNpdItem()
       
   622 // -----------------------------------------------------------------------------
       
   623 //
       
   624 CNpdItem::CNpdItem() : iKey(0), iLastModified(Time::MinTTime()), iContent(NULL)
       
   625 	{
       
   626 	_NOTEPAD_DBG_FILE("NpdItem::CNpdItem(): begin");
       
   627 	_NOTEPAD_DBG_FILE("NpdItem::CNpdItem(): end");
       
   628 	}
       
   629 
       
   630 // -----------------------------------------------------------------------------
       
   631 // CNpdItem::CNpdItem(TInt aKey,const TTime& aLastModified, HBufC *aContent)
       
   632 // -----------------------------------------------------------------------------
       
   633 //
       
   634 CNpdItem::CNpdItem(TInt aKey, 
       
   635 					const TTime& aLastModified, 
       
   636 					HBufC *aContent) : iKey(aKey), 
       
   637 										iLastModified(aLastModified), 
       
   638 										iContent(aContent)
       
   639 	{
       
   640 	_NOTEPAD_DBG_FILE("NpdItem::CNpdItem(): begin");
       
   641 	_NOTEPAD_DBG_FILE("NpdItem::CNpdItem(): end");
       
   642 	}
       
   643 	
       
   644 
       
   645 // -----------------------------------------------------------------------------
       
   646 // CNpdItem::Key
       
   647 // -----------------------------------------------------------------------------
       
   648 //
       
   649 TInt CNpdItem::Key() const
       
   650 	{
       
   651 	_NOTEPAD_DBG_FILE("CNpdItem::Key(): begin");
       
   652 	_NOTEPAD_DBG_FILE("CNpdItem::Key(): end");
       
   653 	return iKey;
       
   654 	}
       
   655 // -----------------------------------------------------------------------------
       
   656 // CNpdItem::LastModified
       
   657 // -----------------------------------------------------------------------------
       
   658 //
       
   659 TTime CNpdItem::LastModified() const
       
   660 	{
       
   661 	_NOTEPAD_DBG_FILE("CNpdItem::LastModified(): begin");
       
   662 	_NOTEPAD_DBG_FILE("CNpdItem::LastModified(): end");
       
   663 	return iLastModified;
       
   664 	}
       
   665 // -----------------------------------------------------------------------------
       
   666 // CNpdItem::Content
       
   667 // -----------------------------------------------------------------------------
       
   668 //
       
   669 HBufC* CNpdItem::Content()
       
   670 	{
       
   671 	_NOTEPAD_DBG_FILE("NpdItem::Content(): begin");
       
   672 	_NOTEPAD_DBG_FILE("NpdItem::Content(): end");
       
   673 	return iContent;
       
   674 	}
       
   675 // -----------------------------------------------------------------------------
       
   676 // CNpdItem::Set
       
   677 // -----------------------------------------------------------------------------
       
   678 //
       
   679 void CNpdItem::Set(TInt aKey, const TTime& aLastModified, HBufC *aContent)
       
   680 	{
       
   681 	_NOTEPAD_DBG_FILE("CNpdItem::Set(): begin");
       
   682 	iKey = aKey;
       
   683 	iLastModified = aLastModified;
       
   684     SetContent(aContent);
       
   685     _NOTEPAD_DBG_FILE("CNpdItem::Set(): end");
       
   686 	}
       
   687 
       
   688 // -----------------------------------------------------------------------------
       
   689 // CNpdItem::SetContent
       
   690 // -----------------------------------------------------------------------------
       
   691 //
       
   692 void CNpdItem::SetContent(HBufC *aContent)
       
   693 	{
       
   694 	_NOTEPAD_DBG_FILE("CNpdItem::SetContent(): begin");
       
   695     iContent = aContent;
       
   696     _NOTEPAD_DBG_FILE("CNpdItem::SetContent(): end");
       
   697 	}
       
   698 
       
   699 // -----------------------------------------------------------------------------
       
   700 // CNpdItem::SetModified
       
   701 // -----------------------------------------------------------------------------
       
   702 //
       
   703 void CNpdItem::SetModified(const TTime& aLastModified)
       
   704 	{
       
   705 	_NOTEPAD_DBG_FILE("CNpdItem::SetModified(): begin");
       
   706 	iLastModified = aLastModified;
       
   707 	_NOTEPAD_DBG_FILE("CNpdItem::SetModified(): end");
       
   708 	}
       
   709 
       
   710 // End of File