qtinternetradio/irdb/inc/irdbwrapper.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 17 Sep 2010 08:27:59 +0300
changeset 16 5723da102db1
child 17 38bbf2dcd608
permissions -rw-r--r--
Revision: 201035 Kit: 201037

/*
* Copyright (c) 2009 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.
*
* Description: Manipulate Interface of Internet Radio Database 
*
*/

#ifndef _IRDB_WRAPPER_H_
#define _IRDB_WRAPPER_H_

#include <QList>
#include "irdbexport.h"
#include "irdbviewstruct.h"

class QVariant;
class QSqlQuery;
class IRDB;


class IRDB_DLL_EXPORT IRDBWrapper
{
public:

    IRDBWrapper();

    virtual ~IRDBWrapper();
    
public:
    /*
    * If all parameters are default, all cid rows in IRDB will return;
    * condAND: condition for search IRDB, it is AND relationship in every pair;
    * condOR: condition for search IRDB, it is OR  relationship in every pair;
    */                       
    QList<uint>* getChannelId(const columnMap* const condAND = NULL,  
                              const columnMap* const condOR  = NULL);

friend class IRDB;

protected:
    /*
    * If all parameters are default, all rows in IRDB will return;
    * condAND: condition for search IRDB, it is AND relationship in every pair;
    * condOR: condition for search IRDB, it is OR  relationship in every pair;
    */                       
    QList<QVariant*>* getIRDB(const columnMap* const condAND = NULL,  
                              const columnMap* const condOR  = NULL);

protected:
    /*
    * create sql condition(where) string according to the input condAND and condAND;
    * condAND:      [direction:in] it is AND relationship in every pair;
    * condOR:       [direction:in] it is OR  relationship in every pair;
    * pArrayColName:[direction:in] array pointer to colName<table>[];
    *               for example:colNameView[],colNameChannelHistory[];
    * condSqlStr:   [direction:out] return the sqlString;  
    */
    void combineCondStr(const columnMap* const condAND,  
                        const columnMap* const condOR,   
                        const QString* pArryColName,
                        QString& condSqlStr);       

    /*
    * create sql insert/update string according to RowData;
    * RowData:      [direction:in] row value of table;
    * pArrayColName:[direction:in] array pointer to colName<table>[];
    *               for example:colNameView[],colNameChannelHistory[];
    * insSqlStr:   [direction:out] return the sqlString; 
    * updSqlStr:   [direction:out] return the sqlString;  
    */                              
    void combinePutStr(const columnMap* const RowData,
                       const QString* pArryColName,
                       QString& insSqlStr, 
                       QString& updSqlStr,
                       const logoMap* const logoData = NULL,
                       QList<QByteArray>* logoArrayList = NULL);
    
    /*
    * create sql select string according to the input condAND and condOR;
    * condAND:      [direction:in] it is AND relationship in every pair;
    * condOR:       [direction:in] it is OR  relationship in every pair;
    * pArrayColName:[direction:in] array pointer to colName<table>[];
    *               for example:colNameView[],colNameChannelHistory[];
    * sltSqlStr:    [direction:out] return the sqlString;  
    */   
    void combineGetStr(const columnMap* const condAND,
                       const columnMap* const condOR,
                       const QString* pArryColName,
                       QString& sltSqlStr);    

    /*
    * create sql delete string according to the input condAND and condOR;
    * condAND:      [direction:in] it is AND relationship in every pair;
    * condOR:       [direction:in] it is OR  relationship in every pair;
    * pArrayColName:[direction:in] array pointer to colName<table>[];
    *               for example:colNameView[],colNameChannelHistory[];
    * dltSqlStr:    [direction:out] return the sqlString;  
    */  
    void combineDeleteStr(const columnMap* const condAND,
                          const columnMap* const condOR,
                          const QString* pArryColName,
                          QString& dltSqlStr);     

private:

    /*
    * It is called by IRDB instance;
    * IRDB instance delivers rows set(channelId) to IRDBWrapper via this function;
    * the rows set is storaged in m_IRCIDSet; 
    */
    bool loadDataOfChannelIdCB(QSqlQuery& aIRDataSet, QList<uint>* pCIDDataSet);

    /*
    * It is called by IRDB instance;
    * IRDB instance delivers rows set to IRDBWrapper via this function;
    * the rows set is storaged in m_IRDataSet;
    */
    bool loadDataOfIRDBCB(QSqlQuery& aIRDataSet, QList<QVariant*>* pViewDataSet);
    
    /*
    * it is for the single table;  
    */
    virtual bool getIRTableCB(QSqlQuery& aIRDataSet, QList<QVariant*>* pTableDataSet); 

protected:
    //pointer for IRDB;
    IRDB*              m_pIRDB;    
};


#endif