bookmarksengine/browsercontentdll/src/browsercontentdll.cpp
changeset 0 fa475d6462b2
child 2 016bf4557e2f
equal deleted inserted replaced
-1:000000000000 0:fa475d6462b2
       
     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: 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include<QString>
       
    20 #include<browsercontentdll.h>
       
    21 #include<QSqlDatabase>
       
    22 #include<QSqlQuery>
       
    23 #include<QSqlError>
       
    24 #include<QDebug>
       
    25 const QString dbLocation="browserContent.db";
       
    26 
       
    27 class BrowserContentPrivate
       
    28     {
       
    29 BOOKMARKSCLIENT_PUBLIC(BrowserContent)
       
    30 public:
       
    31     ~BrowserContentPrivate();
       
    32     QString m_connectionName;
       
    33     };
       
    34 
       
    35 /**==============================================================
       
    36  * Description: Constructor of BrowserContentPrivate
       
    37  ================================================================*/
       
    38 BrowserContentPrivate::~BrowserContentPrivate()
       
    39     {
       
    40 
       
    41     }
       
    42 
       
    43 /**==============================================================
       
    44  * Description: Constructor of BrowserContent
       
    45  ================================================================*/
       
    46 BrowserContent::BrowserContent(QString aClientName)
       
    47     {
       
    48     BOOKMARKSCLIENT_INITIALIZE(BrowserContent);
       
    49     
       
    50     priv->m_connectionName=aClientName;
       
    51     createDatabase();
       
    52     }
       
    53 
       
    54 /**==============================================================
       
    55  * Description: creates the database
       
    56  ================================================================*/
       
    57 int BrowserContent::createDatabase()
       
    58     {
       
    59     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
       
    60     
       
    61     QSqlDatabase sqlDB = QSqlDatabase::addDatabase("QSQLITE", priv->m_connectionName);
       
    62     sqlDB.setHostName("Simulator");
       
    63     sqlDB.setDatabaseName(dbLocation);
       
    64 
       
    65 
       
    66     if (!sqlDB.open())
       
    67         return -1;
       
    68     QSqlError error;
       
    69 	int  err = ErrGeneral;
       
    70     
       
    71 	QFileInfo dbFile(dbLocation);
       
    72     if (dbFile.exists() && dbFile.size() == 0)
       
    73         {
       
    74         QSqlQuery query(sqlDB);
       
    75         query.exec(
       
    76            "CREATE TABLE BookMarkTable (title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),tags VARCHAR(40),rowindex INTEGER,CONSTRAINT pk_BookMarkTable PRIMARY KEY(title))");
       
    77            error=query.lastError();
       
    78 
       
    79          if (error.type() == QSqlError::NoError) {
       
    80           query.exec("CREATE TABLE HistoryTable (rowindex INTEGER  PRIMARY KEY, title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),atime VARCHAR(40))");
       
    81           error=query.lastError();
       
    82          }                        
       
    83     }
       
    84       
       
    85     if (error.type() == QSqlError::NoError) {
       
    86              return ErrNone;
       
    87      }
       
    88      else {
       
    89             return ErrGeneral;
       
    90      }
       
    91  
       
    92  }
       
    93  
       
    94 
       
    95 /**==============================================================
       
    96  * Description: Destrcutor of the BookmarksClientSide
       
    97  ================================================================*/
       
    98 BrowserContent::~BrowserContent()
       
    99     {
       
   100     }
       
   101 
       
   102 /**==============================================================
       
   103  * Description: adds the bookmark to the database
       
   104  ================================================================*/
       
   105 int BrowserContent::AddBookmark(
       
   106         BookmarkLeaf* BookmarkContent)
       
   107     {
       
   108     	
       
   109     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
       
   110     QSqlError error;
       
   111     QString title =BookmarkContent->getTitle();
       
   112     QString url = BookmarkContent->getUrl();
       
   113     QString adate =BookmarkContent->getDate().toString("dd.MM.yyyy");
       
   114     QString tags = BookmarkContent->getTag();
       
   115     int aIndex=BookmarkContent->getIndex();
       
   116     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
       
   117 
       
   118     if (db.isOpen())
       
   119         {
       
   120         QSqlQuery query(db);
       
   121         query.prepare("UPDATE BookMarkTable SET rowindex=rowindex+1 WHERE rowindex>=:aIndex");
       
   122         query.bindValue(":aIndex", aIndex);
       
   123         query.exec();
       
   124         error = query.lastError();
       
   125 		
       
   126         query.prepare("INSERT INTO BookMarkTable (title, url, adate, tags, rowindex) "
       
   127             "VALUES (:title, :url, :adate, :tags, :aIndex)");
       
   128 
       
   129         query.bindValue(":title", QVariant(title));
       
   130         query.bindValue(":url", QVariant(url));
       
   131         query.bindValue(":adate", QVariant(adate));
       
   132         query.bindValue(":tags", QVariant(tags));
       
   133 		query.bindValue(":rowindex", QVariant(aIndex));
       
   134         
       
   135         query.exec();
       
   136         error = query.lastError();
       
   137         }
       
   138 
       
   139     if (error.type() == QSqlError::NoError)
       
   140         {
       
   141         return ErrNone;
       
   142         }
       
   143     else
       
   144         {
       
   145         return ErrGeneral;
       
   146         }
       
   147     }
       
   148 
       
   149 
       
   150 /**==============================================================
       
   151  * Description: deletes the requested bookmark
       
   152  ================================================================*/
       
   153 int BrowserContent::DeleteBookmark(
       
   154         QString atitle)
       
   155     {
       
   156     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
       
   157     QSqlError error;
       
   158     QString title = atitle;
       
   159     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
       
   160     bool ok;
       
   161     if (db.isOpen())
       
   162         {
       
   163         QSqlQuery query(db);
       
   164         query.prepare("SELECT title,url,adate,tags,rowindex FROM BookMarkTable WHERE title=:title");
       
   165         query.bindValue(":title", title);
       
   166         query.exec();
       
   167         error = query.lastError();
       
   168         query.next();
       
   169         int aIndex=query.value(4).toInt(&ok);
       
   170 
       
   171         query.prepare("DELETE FROM BookMarkTable WHERE title=:title");
       
   172         query.bindValue(":title", title);
       
   173         query.exec();
       
   174         error = query.lastError();
       
   175         if (error.type() == QSqlError::NoError)
       
   176             {
       
   177             query.prepare("UPDATE BookMarkTable set rowindex=rowindex-1 WHERE rowindex>:aIndex");
       
   178             query.bindValue(":aIndex", aIndex);
       
   179             query.exec();
       
   180             error = query.lastError();
       
   181             }
       
   182         }
       
   183     if (error.type() == QSqlError::NoError)
       
   184         {
       
   185         return ErrNone;
       
   186         }
       
   187     else
       
   188         {
       
   189         return ErrGeneral;
       
   190         }
       
   191 
       
   192     }
       
   193 
       
   194 
       
   195 /**==============================================================
       
   196  * Description: fetches Allbookmarks From database
       
   197  ================================================================*/
       
   198 QList<BookmarkLeaf*> BrowserContent::FetchAllBookmarks()
       
   199     {
       
   200     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
       
   201     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
       
   202     QList<BookmarkLeaf*> nodeslist;
       
   203     
       
   204     bool dbopen = db.isOpen();
       
   205     bool ok;
       
   206 
       
   207     if (dbopen)
       
   208         {
       
   209 
       
   210         QSqlQuery query(db);
       
   211 
       
   212         query.prepare("SELECT title,url,adate,tags,rowindex FROM BookMarkTable ORDER BY rowindex");
       
   213         query.exec();
       
   214         QSqlError error = query.lastError();
       
   215 
       
   216         while (query.next())
       
   217             {
       
   218 
       
   219             QString title = query.value(0).toString();
       
   220             QString url = query.value(1).toString();
       
   221             QString date = query.value(2).toString();
       
   222             QString tag = query.value(3).toString();
       
   223             int aIndex=query.value(4).toInt(&ok);
       
   224             BookmarkLeaf* node = new BookmarkLeaf();
       
   225             QDate adate = QDate::fromString(date, "dd.MM.yyyy");
       
   226             node->setTitle(title);
       
   227             node->setUrl(url);
       
   228             node->setDate(adate);
       
   229             node->setTag(tag);
       
   230             node->setIndex(aIndex);
       
   231             nodeslist.append(node);         
       
   232             }
       
   233         }
       
   234        return nodeslist;
       
   235 
       
   236     }
       
   237 
       
   238 /**==============================================================
       
   239  * Description: Reoders the Bokmarks based on index
       
   240  ================================================================*/
       
   241 int BrowserContent::reorderBokmarks(QString title,int new_index)
       
   242     {
       
   243     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
       
   244     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
       
   245       QSqlQuery query(db);
       
   246       QSqlError error;
       
   247       bool ok;      
       
   248       query.prepare("SELECT title,url,adate,tags,rowindex FROM BookMarkTable WHERE title=:title");
       
   249       query.bindValue(":title", title);
       
   250       query.exec();
       
   251       error = query.lastError();
       
   252       query.next();
       
   253       int old_index=query.value(4).toInt(&ok);
       
   254       
       
   255       if(old_index>new_index)
       
   256           {
       
   257           //Moving the item UP
       
   258           query.prepare("UPDATE BookMarkTable set rowindex=rowindex+1 WHERE rowindex BETWEEN :new_index AND :old_index-1");
       
   259                     }
       
   260       else if(old_index<new_index)
       
   261           {
       
   262             //Moving items Down
       
   263              query.prepare("UPDATE BookMarkTable set rowindex=rowindex-1 WHERE rowindex BETWEEN :old_index+1 AND :new_index");
       
   264            }
       
   265       query.bindValue(":old_index", old_index);
       
   266       query.bindValue(":new_index", new_index);
       
   267       //Moving items Down
       
   268       query.exec();
       
   269       error= query.lastError();
       
   270 
       
   271       if (error.type() == QSqlError::NoError)
       
   272           {
       
   273            query.prepare("UPDATE BookMarkTable set rowindex=:new_index WHERE title=:title");
       
   274            query.bindValue(":title", title);
       
   275            query.bindValue(":new_index", new_index);
       
   276            query.exec();
       
   277            error = query.lastError();
       
   278           }
       
   279 
       
   280       if (error.type() == QSqlError::NoError)
       
   281           {
       
   282               return ErrNone;
       
   283           }
       
   284       else
       
   285           {
       
   286           return ErrGeneral;
       
   287           }
       
   288     }
       
   289 
       
   290 
       
   291 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
       
   292 
       
   293 /**==============================================================
       
   294  * Description: adds the bookmark to the database
       
   295  ================================================================*/
       
   296 int BrowserContent::AddHistory(
       
   297         HistoryLeaf* HistoryContent)
       
   298     {
       
   299     	
       
   300     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
       
   301     QSqlError error;
       
   302     QString title =HistoryContent->getTitle();
       
   303     QString url = HistoryContent->getUrl();
       
   304     QString adate =HistoryContent->getDate().toString("dd.MM.yyyy");
       
   305     QString atime = HistoryContent->getLastVisited().toString("h:mm ap");
       
   306 //    int aIndex=HistoryContent->getIndex();
       
   307     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
       
   308 
       
   309     if (db.isOpen())
       
   310         {
       
   311         QSqlQuery query(db);
       
   312        // query.prepare("UPDATE HistoryTable SET rowindex=rowindex+1 WHERE rowindex>=:aIndex");
       
   313         //query.bindValue(":aIndex", aIndex);
       
   314         //query.exec();
       
   315         //error = query.lastError();
       
   316 		
       
   317 		//"CREATE TABLE HistoryTable (rowindex INTEGER  PRIMARY KEY, title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),atime VARCHAR(40))");
       
   318 
       
   319         query.prepare("INSERT INTO HistoryTable (rowindex,title, url, adate, atime) "
       
   320             "VALUES (NULL,:title, :url, :adate, :atime)");
       
   321 
       
   322 		//query.bindValue(":rowindex", QVariant(aIndex));
       
   323         query.bindValue(":title", QVariant(title));
       
   324         query.bindValue(":url", QVariant(url));
       
   325         query.bindValue(":adate", QVariant(adate));
       
   326         query.bindValue(":atime", QVariant(atime));
       
   327         query.exec();
       
   328         error = query.lastError();
       
   329         }
       
   330 
       
   331     if (error.type() == QSqlError::NoError)
       
   332         {
       
   333         return ErrNone;
       
   334         }
       
   335     else
       
   336         {
       
   337         return ErrGeneral;
       
   338         }
       
   339     }
       
   340 
       
   341 
       
   342 /**==============================================================
       
   343  * Description: fetches History From database
       
   344  ================================================================*/
       
   345 QList<HistoryLeaf*> BrowserContent::FetchHistory()
       
   346     {
       
   347     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
       
   348     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
       
   349     QList<HistoryLeaf*> nodeslist;
       
   350     
       
   351     bool dbopen = db.isOpen();
       
   352     bool ok;
       
   353 
       
   354     if (dbopen)
       
   355         {
       
   356 
       
   357         QSqlQuery query(db);
       
   358 
       
   359         query.prepare("SELECT title,url,adate,atime,rowindex FROM HistoryTable ORDER BY rowindex");
       
   360         query.exec();
       
   361         QSqlError error = query.lastError();
       
   362 
       
   363         while (query.next())
       
   364             {
       
   365 
       
   366             QString title = query.value(0).toString();
       
   367             QString url = query.value(1).toString();
       
   368             QString date = query.value(2).toString();
       
   369             QString time = query.value(3).toString();
       
   370             int aIndex=query.value(4).toInt(&ok);
       
   371             HistoryLeaf* node = new HistoryLeaf();
       
   372             QDate adate = QDate::fromString(date, "dd.MM.yyyy");
       
   373 			QTime atime = QTime::fromString(time, "h:mm ap");
       
   374             node->setTitle(title);
       
   375             node->setUrl(url);
       
   376             node->setDate(adate);
       
   377             node->setLastVisited(atime);
       
   378 //            node->setTag(tag);
       
   379             node->setIndex(aIndex);
       
   380             nodeslist.append(node);         
       
   381             }
       
   382         }
       
   383        return nodeslist;
       
   384 
       
   385     }
       
   386 
       
   387 /**==============================================================
       
   388  * Description: Clear all rows  From History database
       
   389  ================================================================*/
       
   390 int BrowserContent::clearHistory()
       
   391 {
       
   392     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
       
   393     QSqlError error;
       
   394     
       
   395     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
       
   396     bool ok;
       
   397     if (db.isOpen()){
       
   398         QSqlQuery query(db);
       
   399         query.prepare("DELETE  FROM  HistoryTable" );
       
   400         
       
   401 		query.exec();
       
   402         error = query.lastError();
       
   403         
       
   404 		if (error.type() == QSqlError::NoError)	{
       
   405 			return ErrNone;
       
   406 		}
       
   407 		else{
       
   408 			return ErrGeneral;
       
   409 		}
       
   410     }
       
   411 }