harvester/contentinfodb/src/contentinfodb.cpp
changeset 23 d4d56f5e7c55
equal deleted inserted replaced
20:556534771396 23:d4d56f5e7c55
       
     1 /*
       
     2  * Copyright (c) 2009 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:  Implementation of contentinfodb 
       
    15  *
       
    16  */
       
    17 #include "contentinfodb.h"
       
    18 #include <qdir.h>
       
    19 #include <qvariant.h>
       
    20 #include <qsqlquery.h>
       
    21 #include <qstringlist.h>
       
    22 
       
    23 
       
    24 ContentInfoDb *ContentInfoDb::m_instance = 0;
       
    25 int ContentInfoDb::m_instanceCounter = 0;
       
    26 
       
    27 // ---------------------------------------------------------------------------
       
    28 // ContentInfoDb::ContentInfoDb()
       
    29 // ---------------------------------------------------------------------------
       
    30 //
       
    31 ContentInfoDb::ContentInfoDb()
       
    32     {
       
    33     m_db = QSqlDatabase::addDatabase(DATABASETYPE, CONNECTIONNAME);
       
    34     m_db.setDatabaseName(DBNAME);
       
    35     }
       
    36 // ---------------------------------------------------------------------------
       
    37 // ContentInfoDb::~ContentInfoDb()
       
    38 // ---------------------------------------------------------------------------
       
    39 //
       
    40 ContentInfoDb::~ContentInfoDb()
       
    41     {
       
    42     Close();
       
    43     }
       
    44 // ---------------------------------------------------------------------------
       
    45 // ContentInfoDb::writeData()
       
    46 // ---------------------------------------------------------------------------
       
    47 //
       
    48 bool ContentInfoDb::writeData(QString query)
       
    49     {
       
    50     if (Open())
       
    51         {
       
    52         QSqlQuery q(QSqlDatabase::database(CONNECTIONNAME));
       
    53         q.prepare(query);
       
    54         if (q.exec())
       
    55             {
       
    56             emit dbUpdated();
       
    57             return true;
       
    58             }
       
    59         return false;
       
    60         }
       
    61     return false;
       
    62     }
       
    63 // ---------------------------------------------------------------------------
       
    64 // ContentInfoDb::readData()
       
    65 // ---------------------------------------------------------------------------
       
    66 //
       
    67 QStringList ContentInfoDb::readData(QString query)
       
    68     {
       
    69     QStringList list;
       
    70     if (Open())
       
    71         {        
       
    72         QSqlQuery q(QSqlDatabase::database(CONNECTIONNAME));
       
    73         q.prepare(query);
       
    74         q.exec();
       
    75         while (q.next())
       
    76             {
       
    77             list.append(q.value(0).toString());  
       
    78             }
       
    79         }
       
    80     return list;
       
    81     }
       
    82 // ---------------------------------------------------------------------------
       
    83 // ContentInfoDb::readStringData()
       
    84 // ---------------------------------------------------------------------------
       
    85 //
       
    86 QString ContentInfoDb::readStringData(QString query)
       
    87     {
       
    88     if (Open())
       
    89         {
       
    90         QSqlQuery q(QSqlDatabase::database(CONNECTIONNAME));
       
    91         q.prepare(query);
       
    92         q.exec();
       
    93         q.next();
       
    94         return q.value(0).toString();
       
    95         }
       
    96     return QString();
       
    97     }
       
    98 // ---------------------------------------------------------------------------
       
    99 // ContentInfoDb::createTable()
       
   100 // ---------------------------------------------------------------------------
       
   101 //
       
   102 void ContentInfoDb::createTable(QString tablename, QString query)
       
   103     {
       
   104     if (!m_db.tables().contains(tablename))
       
   105         {
       
   106         QSqlQuery q(query, m_db);
       
   107         }
       
   108     }
       
   109 // ---------------------------------------------------------------------------
       
   110 // ContentInfoDb::open()
       
   111 // ---------------------------------------------------------------------------
       
   112 //    
       
   113 bool ContentInfoDb::Open()
       
   114     {
       
   115     if (!m_db.isValid())
       
   116         {
       
   117         Close();
       
   118         return false;
       
   119         }
       
   120     if (!m_db.isOpen())
       
   121         {
       
   122         if (!m_db.open())
       
   123             {
       
   124             Close();
       
   125             return false;
       
   126             }
       
   127         }
       
   128     if (!m_db.tables().contains(MAINTABLENAME))
       
   129         {
       
   130         QSqlQuery q(QUERYCREATEMAINTABLE, m_db);
       
   131         }
       
   132     return true;
       
   133     }
       
   134 // ---------------------------------------------------------------------------
       
   135 // ContentInfoDb::Close()
       
   136 // ---------------------------------------------------------------------------
       
   137 //
       
   138 void ContentInfoDb::Close()
       
   139     {
       
   140     m_db.close();
       
   141     }