--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuistorage/src/CCAStorage.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 2003-2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Class for persistent storaging
+*
+*/
+
+
+
+#ifndef CCASTORAGE_H
+#define CCASTORAGE_H
+
+// INCLUDES
+
+#include <e32base.h>
+#include <e32std.h>
+
+#include <s32file.h>
+#include <d32dbms.h>
+
+#include "CCAGroupStorage.h"
+
+// FORWARD DECLARATIONS
+
+class MCAExtendedStoredContact;
+class MCAExtendedStoredGroup;
+
+// CLASS DECLARATION
+/**
+ * This class handles the persistent storaging, i.e. interfacing with the
+ * database. It offers an internal interface to the database for the
+ * CCAStorageManager.
+ *
+ * @lib CAStorage
+ * @since 2.1
+ */
+class CCAStorage : public CBase
+ {
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CCAStorage();
+
+ /**
+ * Two-phased constructor.
+ */
+ static CCAStorage* NewL();
+
+ /*
+ * Loads group
+ * @since 2.1
+ * @param aGroup Group is read to this object
+ */
+ void LoadL( MCAExtendedStoredGroup* aGroup );
+
+ /*
+ * Saves group
+ * @since 2.1
+ * @param aGroup Group that is saved
+ */
+ void SaveL( MCAExtendedStoredGroup* aGroup );
+
+ /*
+ * Deletes group
+ * @since 2.1
+ * @param aGroup Group that is deleted
+ */
+ void DeleteL( MCAExtendedStoredGroup* aGroup );
+
+ /*
+ * Loads first group from database
+ * @since 2.1
+ * @param aGroup Group is read to this object
+ * @return KErrNone, if ok. KErrNotFound, if group is not found.
+ */
+ TInt LoadFirstL( MCAExtendedStoredGroup* aGroup );
+
+ /*
+ * Loads next group from database
+ * @since 2.1
+ * @param aGroup Group is read to this object
+ * @return KErrNone, if ok. KErrNotFound, if group is not found.
+ */
+ TInt LoadNextL( MCAExtendedStoredGroup* aGroup );
+
+ /*
+ * Does free diskspace check before writing to database
+ * @since 2.1
+ * @param aGroup group that is written to database
+ * Function leaves with KErrDiskFull, if freespace goes below critical level
+ */
+ void CheckFreespaceLevelL( MCAExtendedStoredGroup* aGroup );
+
+ protected:
+
+ /**
+ * C++ default constructor.
+ */
+ CCAStorage();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ private:
+
+ /**
+ * Check if database exists
+ * @since 2.1
+ * @return ETrue, if database exists.
+ */
+ TBool DbExists();
+
+ /**
+ * Creates new CPermanentFileStore stream and creates database on it.
+ * @since 2.1
+ */
+ void CreateDbL();
+
+ /**
+ * Open existing database.
+ * @since 2.1
+ */
+ void OpenDbL();
+
+ /**
+ * Close database.
+ * @since 2.1
+ */
+ void CloseDb();
+
+ /*
+ * Create tables to database
+ * @since 2.1
+ */
+ void CreateTablesL();
+
+ /**
+ * Add a column to colset
+ * @since 2.1
+ * @param aName Name of column
+ * @param aType Type of column
+ * @param aColset Colset, where column is added.
+ * @param aMaxLength Maximum column length
+ * 0 = use columns default value
+ */
+ void AddColumnL( const TDesC& aName, TDbColType aType,
+ CDbColSet* aColset, TInt aMaxLength = 0 );
+
+ /*
+ * Leaves if free diskspace is low.
+ * @since 2.1
+ * @param aSize amount of free diskspace needed.
+ */
+ void DoFreespaceLevelCheckL( TInt aSize );
+
+ private:
+
+ // storage for groups, owned
+ CCAGroupStorage* iGroupStorage;
+
+
+ CPermanentFileStore* iFileStore;
+
+ RFs iFs;
+
+ TStreamId iStreamId;
+ RDbStoreDatabase iDb;
+ };
+
+#endif // CCASTORAGE_H
+
+// End of File