wvuing/wvuistorage/src/CCAStorage.h
changeset 0 094583676ce7
--- /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