Fixed Nabi Issues: 53721,53372,53761,53768
[apps/osp/Internet.git] / src / IntBookmarkPresentationModel.cpp
index 3c8c772..891723c 100644 (file)
@@ -2,7 +2,7 @@
 
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
-// Licensed under the Flora License, Version 1.0 (the License);
+// Licensed under the Flora License, Version 1.1 (the License);
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
@@ -21,6 +21,7 @@
  */
 
 #include <cstdlib>
+
 #include "IntBookmarkData.h"
 #include "IntBookmarkPresentationModel.h"
 #include "IntTypes.h"
@@ -34,7 +35,7 @@ using namespace Tizen::Locales;
 using namespace Tizen::System;
 
 extern const wchar_t* BOOKMARK_URL_TABLE;
-extern const wchar_t* BOOKMARK_FOLDER_TABLE;
+//extern const wchar_t* BOOKMARK_FOLDER_TABLE;
 extern const wchar_t* DEFAULT_VALUE_PARENTID ;
 
 BookmarkPresentationModel* BookmarkPresentationModel::__pBookmarkPresentationModel = null;
@@ -63,6 +64,8 @@ result
 BookmarkPresentationModel::Construct(void)
 {
        result r = E_SUCCESS;
+       DB_FILE_PATH = L"/opt/usr/dbspace/.internet_bookmark.db";
+
        r = PresentationModelBase::Initialize();
        TryCatch( !IsFailed(r),,"Failed to intitialize bookmarkPresentation Model %s",GetErrorMessage(r));
     CATCH: return r;
@@ -88,6 +91,7 @@ void BookmarkPresentationModel::DestroyInstance(void)
 {
        if (__pBookmarkPresentationModel)
        {
+               __pBookmarkPresentationModel->UnInitialize();
                delete __pBookmarkPresentationModel;
                __pBookmarkPresentationModel = null;
        }
@@ -107,30 +111,78 @@ BookmarkPresentationModel::GetInstance(void)
 result
 BookmarkPresentationModel::SaveFolder(BookmarkData& bookmark)
 {
+       bookmark.SetParentId("0");
+       return SaveTempBookmark(bookmark);
+}
+
+result
+BookmarkPresentationModel::SaveBookmark(BookmarkData& bookmark)
+{
        result r = E_FAILURE;
-       String bookmarkFolderTable(BOOKMARK_FOLDER_TABLE);
+       String bookmarkTable(BOOKMARK_URL_TABLE);
        String query;
        String columnNames;
+       String attachment;
        int resultCount = -1;
        int rowId = -1;
        DateTime dt;
        String bookmarkId;
        String bookmarkTitle = bookmark.GetBookmarkTitle();
-       bookmarkTitle.Replace(L"'", L"''");
+       bookmarkTitle.Replace(L"'", L"\'");
+       String bookmarkUrl = bookmark.GetUrl();
+       bookmarkUrl.Replace(L"'", L"\'");
+
+       AppLog("BookmarkPresentationModel::SaveBookmark");
+
+       String pFavArray;
+       ByteBuffer* pFavBuffer = bookmark.GetFavIconBuffer();
+       if(pFavBuffer != null)
+       {
+               AppLog("Buffer found");
+               pFavBuffer->Flip();
+
+               wchar_t value;
+
+               AppLog("BookmarkPresentationModel::SaveBookmark 0 ");
+
+               while(pFavBuffer->HasRemaining())
+               {
+                       pFavBuffer->GetWchar(value);
+                       pFavArray.Append(value);
+               }
+       }
+
+       AppLog("BookmarkPresentationModel::SaveBookmark 1 pFavArray(%d) is %ls",pFavArray.GetLength(), pFavArray.GetPointer());
 
        PresentationModelBase::GetCurrentDateTime(dt);
        if (bookmark.GetBookmarkId() == "")
        {
+               columnNames.Append(L"TYPE, ");
+               columnNames.Append(L"PARENT, ");
+               columnNames.Append(L"ADDRESS, ");
                columnNames.Append(L"TITLE, ");
-               columnNames.Append(L"CREATED_TIME, ");
-               columnNames.Append(L"MODIFIED_TIME");
+               columnNames.Append(L"CREATIONDATE, ");
+               columnNames.Append(L"UPDATEDATE, ");
+               columnNames.Append(L"FAVICON, ");
+               //      columnNames.Append(L"FAVICON_LENGTH, ");
+               columnNames.Append(L"FAVICON_W, ");
+               columnNames.Append(L"FAVICON_H");
+               //columnNames.Append(L"FAVICON_ID"
+               //columnNames.Append(L"FAVICON_ID");
 
                query.Append(L"INSERT INTO ");
-               query.Append(bookmarkFolderTable);
+               query.Append(bookmarkTable);
                query.Append("(");
                query.Append(columnNames);
                query.Append(") ");
                query.Append("VALUES(");
+               query.Append(bookmark.GetBookmarkType());
+               query.Append(", ");
+               query.Append(bookmark.GetParentId());
+               query.Append(", ");
+               query.Append("'");
+               query.Append(bookmarkUrl);
+               query.Append("', ");
                query.Append("'");
                query.Append(bookmarkTitle);
                query.Append("', ");
@@ -139,32 +191,88 @@ BookmarkPresentationModel::SaveFolder(BookmarkData& bookmark)
                query.Append("', ");
                query.Append("'");
                query.Append(dt.ToString());
-               query.Append("')");
+               query.Append("', ");
+               query.Append("'");
+               query.Append(pFavArray);
+               query.Append("', ");
+               query.Append(bookmark.GetFavIconWidth());
+               query.Append(", ");
+               query.Append(bookmark.GetFavIconHeight());
+               /*query.Append("', ");
+               query.Append("'");
+               query.Append(bookmark.GetIconPath());
+               query.Append("'");
+               query.Append(", ");
+               query.Append("'");
+               query.Append(bookmark.GetFaviconId());*/
+               query.Append(")");
        }
        else
        {
                query.Append(L"UPDATE ");
-               query.Append(bookmarkFolderTable);
+               query.Append(bookmarkTable);
+               query.Append(" SET PARENT = ");
+               query.Append(bookmark.GetParentId());
+               query.Append(", ADDRESS = ");
+               query.Append("'");
+               query.Append(bookmarkUrl);
+               query.Append("'");
+               query.Append(", TITLE = ");
+               query.Append("'");
+               query.Append(bookmarkTitle);
+               query.Append("'");
+               query.Append(", UPDATEDATE = ");
+               query.Append("'");
+               query.Append(dt.ToString());
+               query.Append("'");
+               query.Append(" WHERE ID = ");
+               query.Append(bookmark.GetBookmarkId());
+               /*query.Append(L"UPDATE ");
+               query.Append(bookmarkTable);
                query.Append(" SET TITLE = ");
                query.Append("'");
                query.Append(bookmarkTitle);
                query.Append("'");
+               query.Append(", URL = ");
+               query.Append("'");
+               query.Append(bookmarkUrl);
+               query.Append("'");
+               query.Append(", PARENT_BOOKMARK_ID = ");
+               query.Append(bookmark.GetParentId());
                query.Append(", MODIFIED_TIME = ");
                query.Append("'");
                query.Append(dt.ToString());
                query.Append("'");
+               query.Append(", ICON_PATH = ");
+               query.Append("'");
+               query.Append(bookmark.GetIconPath());
+               query.Append("'");
+               query.Append(", FAVICON_ID = ");
+               query.Append("'");
+               query.Append(bookmark.GetFaviconId());
+               query.Append("'");
                query.Append(" WHERE ID = ");
-               query.Append(bookmark.GetBookmarkId());
+               query.Append(bookmark.GetBookmarkId());*/
        }
 
-
        r = PresentationModelBase::ExecuteQuery(query, resultCount);
-       TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::SaveFolder query failed  %s",GetErrorMessage(r));
+       AppLog("BookmarkPresentationModel::SaveBookmark query is %S",query.GetPointer());
+
+       if (r == E_SUCCESS)
+       {
+               AppLog("BookmarkPresentationModel::SaveBookmark query is success");
+       }
+       else
+       {
+               AppLog("BookmarkPresentationModel::SaveBookmark query is failure");
+       }
+
+       TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::SaveBookmark query failed  %s",GetErrorMessage(r));
 
        r = PresentationModelBase::CommitDb();
 
-       r = GetLastInsertedId(bookmarkFolderTable, rowId);
-       TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::SaveFolder GetLastInsertedId failed %s",GetErrorMessage(r));
+       r = GetLastInsertedId(bookmarkTable, rowId);
+       TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::SaveBookmark GetLastInsertedId failed %s",GetErrorMessage(r));
 
        if (rowId < 0)
                return E_FAILURE;
@@ -178,9 +286,8 @@ BookmarkPresentationModel::SaveFolder(BookmarkData& bookmark)
 }
 
 result
-BookmarkPresentationModel::SaveBookmark(BookmarkData& bookmark)
+BookmarkPresentationModel::SaveTempBookmark(BookmarkData& bookmark)
 {
-
        result r = E_FAILURE;
        String bookmarkTable(BOOKMARK_URL_TABLE);
        String query;
@@ -195,79 +302,65 @@ BookmarkPresentationModel::SaveBookmark(BookmarkData& bookmark)
        String bookmarkUrl = bookmark.GetUrl();
        bookmarkUrl.Replace(L"'", L"''");
 
-
        PresentationModelBase::GetCurrentDateTime(dt);
+
        if (bookmark.GetBookmarkId() == "")
        {
+               columnNames.Append(L"TYPE, ");
+               columnNames.Append(L"PARENT, ");
+               columnNames.Append(L"ADDRESS, ");
                columnNames.Append(L"TITLE, ");
-               columnNames.Append(L"URL, ");
-               columnNames.Append(L"PARENT_BOOKMARK_ID, ");
-               columnNames.Append(L"CREATED_TIME, ");
-               columnNames.Append(L"MODIFIED_TIME, ");
-               columnNames.Append(L"ICON_PATH, ");
-               columnNames.Append(L"FAVICON_ID");
+               columnNames.Append(L"CREATIONDATE, ");
+               columnNames.Append(L"UPDATEDATE, ");
+
+               columnNames.Append(L"FAVICON, ");
+               columnNames.Append(L"FAVICON_W, ");
+               columnNames.Append(L"FAVICON_H");
 
                query.Append(L"INSERT INTO ");
                query.Append(bookmarkTable);
                query.Append("(");
                query.Append(columnNames);
                query.Append(") ");
-               query.Append("VALUES(");
-               query.Append("'");
-               query.Append(bookmarkTitle);
-               query.Append("', ");
-               query.Append("'");
-               query.Append(bookmarkUrl);
-               query.Append("', ");
-               query.Append(bookmark.GetParentId());
-               query.Append(", ");
-               query.Append("'");
-               query.Append(dt.ToString());
-               query.Append("', ");
-               query.Append("'");
-               query.Append(dt.ToString());
-               query.Append("', ");
-               query.Append("'");
-               query.Append(bookmark.GetIconPath());
-               query.Append("'");
-               query.Append(", ");
-               query.Append("'");
-               query.Append(bookmark.GetFaviconId());
-               query.Append("'");
-               query.Append(")");
+               query.Append("VALUES");
+               query.Append(" (?,?,?,?,?,?,?,?,?)");
+               r = PresentationModelBase::ExecuteBookmarkQuery(query, resultCount, bookmark);
        }
        else
        {
                query.Append(L"UPDATE ");
                query.Append(bookmarkTable);
-               query.Append(" SET TITLE = ");
-               query.Append("'");
-               query.Append(bookmarkTitle);
-               query.Append("'");
-               query.Append(", URL = ");
-               query.Append("'");
-               query.Append(bookmarkUrl);
-               query.Append("'");
-               query.Append(", PARENT_BOOKMARK_ID = ");
+               query.Append(" SET PARENT = ");
                query.Append(bookmark.GetParentId());
-               query.Append(", MODIFIED_TIME = ");
+               query.Append(", ADDRESS = ");
                query.Append("'");
-               query.Append(dt.ToString());
+               query.Append(bookmarkUrl);
                query.Append("'");
-               query.Append(", ICON_PATH = ");
+               query.Append(", TITLE = ");
                query.Append("'");
-               query.Append(bookmark.GetIconPath());
+               query.Append(bookmarkTitle);
                query.Append("'");
-               query.Append(", FAVICON_ID = ");
+               query.Append(", UPDATEDATE = ");
                query.Append("'");
-               query.Append(bookmark.GetFaviconId());
+               query.Append(dt.ToString());
                query.Append("'");
                query.Append(" WHERE ID = ");
                query.Append(bookmark.GetBookmarkId());
+               r = PresentationModelBase::ExecuteQuery(query, resultCount);
        }
 
 
-       r = PresentationModelBase::ExecuteQuery(query, resultCount);
+       AppLog("BookmarkPresentationModel::SaveBookmark query is %S",query.GetPointer());
+
+       if (r == E_SUCCESS)
+       {
+               AppLog("BookmarkPresentationModel::SaveBookmark query is success");
+       }
+       else
+       {
+               AppLog("BookmarkPresentationModel::SaveBookmark query is failure");
+       }
+
        TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::SaveBookmark query failed  %s",GetErrorMessage(r));
 
        r = PresentationModelBase::CommitDb();
@@ -284,6 +377,7 @@ BookmarkPresentationModel::SaveBookmark(BookmarkData& bookmark)
        bookmark.SetBookmarkId(bookmarkId);
 
     CATCH: return r;
+
 }
 
 result
@@ -291,7 +385,7 @@ BookmarkPresentationModel::DeleteFolder(int folderId)
 {
        result r = E_SUCCESS;
        String query;
-       String bookmarkFolderTable(BOOKMARK_FOLDER_TABLE);
+       String bookmarkTable(BOOKMARK_URL_TABLE);
        int resultCount = -1;
 
        if (folderId < 1)
@@ -301,7 +395,7 @@ BookmarkPresentationModel::DeleteFolder(int folderId)
 
        //strQuery.Format(MAX_DB_QUERY_SIZE, L"DELETE FROM %ls WHERE ID = %d", strBookmarkTable.GetPointer(), bookmarkId);
        query.Append(L"DELETE FROM ");
-       query.Append(bookmarkFolderTable);
+       query.Append(bookmarkTable);
        query.Append(" WHERE ID = ");
        query.Append(folderId);
 
@@ -355,7 +449,7 @@ BookmarkPresentationModel::DeleteBookmarkByFolderId(int folderId)
        //strQuery.Format(MAX_DB_QUERY_SIZE, L"DELETE FROM %ls WHERE ID = %d", strBookmarkTable.GetPointer(), bookmarkId);
        query.Append(L"DELETE FROM ");
        query.Append(bookmarkTable);
-       query.Append(" WHERE PARENT_BOOKMARK_ID = ");
+       query.Append(" WHERE PARENT = ");
        query.Append(folderId);
 
        r = BookmarkPresentationModel::ExecuteQuery(query, resultCount);
@@ -396,8 +490,9 @@ BookmarkPresentationModel::GetBookmarkCount(const String& parentID, int& bookmar
        //query.Format(MAX_DB_QUERY_SIZE, L"SELECT COUNT(ID) FROM %ls WHERE PARENT_ID = %ls", strTable.GetPointer(),notebookId.GetPointer());
        query.Append(L"SELECT COUNT(ID) FROM ");
        query.Append(bookmarkTable);
-       query.Append(" WHERE PARENT_BOOKMARK_ID = ");
+       query.Append(" WHERE PARENT = ");
        query.Append(parentID);
+       query.Append(" AND ADDRESS != ''");
 
 
        r = PresentationModelBase::ExecuteQuery(query, count);
@@ -422,6 +517,41 @@ BookmarkPresentationModel::GetBookmarkCount(const String& parentID, int& bookmar
 result
 BookmarkPresentationModel::GetFolderCount(const String& parentID, int& folderCount)
 {
+
+       int count = -1;
+       int intVal = -1;
+       String query;
+       String bookmarkTable(BOOKMARK_URL_TABLE);
+       result r = E_FAILURE;
+       bool nextRowPresent = false;
+
+       //query.Format(MAX_DB_QUERY_SIZE, L"SELECT COUNT(ID) FROM %ls WHERE PARENT_ID = %ls", strTable.GetPointer(),notebookId.GetPointer());
+       query.Append(L"SELECT COUNT(ID) FROM ");
+       query.Append(bookmarkTable);
+       query.Append(" WHERE PARENT = ");
+       query.Append(parentID);
+       query.Append(" AND ADDRESS = ''");
+
+       r = PresentationModelBase::ExecuteQuery(query, count);
+       TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::GetBookmarkCount query failed  %s",GetErrorMessage(r));
+       r = PresentationModelBase::DbIsNextRowPresent(nextRowPresent);
+       TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::DbIsNextRowPresent query failed  %s",GetErrorMessage(r));
+       if (nextRowPresent == true)
+       {
+               r = PresentationModelBase::GetColumn(0, intVal);
+               if (IsFailed(r))
+               {
+                       AppLogDebug("Error:BookmarkPresentationModel::GetColumn:%s", GetErrorMessage(r));
+                       return r;
+               }
+       }
+       folderCount = intVal;
+       AppLog("Count:%d", folderCount);
+
+       CATCH: return r;
+
+
+       /*
        int count = -1;
        int intVal = -1;
        String query;
@@ -449,7 +579,7 @@ BookmarkPresentationModel::GetFolderCount(const String& parentID, int& folderCou
        folderCount = intVal;
 
        CATCH: return r;
-}
+*/}
 
 result
 BookmarkPresentationModel::GetFoldersBookmarks(const String& parentID, int startIndex, int limit, ArrayList& pBookmarkList)
@@ -480,8 +610,9 @@ BookmarkPresentationModel::GetBookmark(const String& parentID, int startIndex, i
 
        query.Append(L"SELECT * FROM ");
        query.Append(bookmarkTable);
-       query.Append(" WHERE PARENT_BOOKMARK_ID = ");
+       query.Append(" WHERE PARENT = ");
        query.Append(parentID);
+       query.Append(" AND ADDRESS != ''");
 
        //Append LIMIT
        if (limit > 0)
@@ -505,12 +636,32 @@ BookmarkPresentationModel::GetBookmark(const String& parentID, int startIndex, i
        CATCH: return r;
 }
 
+result BookmarkPresentationModel::GetBookmarkForHistory(int startIndex, Tizen::Base::Collection::ArrayList& pBookmarkList)
+{
+       int count = -1;
+       String query;
+       String bookmarkTable(BOOKMARK_URL_TABLE);
+       result r = E_FAILURE;
+
+       query.Append(L"SELECT * FROM ");
+       query.Append(bookmarkTable);
+       query.Append(" WHERE ADDRESS != ''");
+
+       r = PresentationModelBase::ExecuteQuery(query, count);
+       TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::GetBookmark query failed  %s",GetErrorMessage(r));
+
+       r = CreateBookmarkList(count, pBookmarkList);
+       TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::CreateBookmarkList failed  %s",GetErrorMessage(r));
+
+       CATCH: return r;
+}
+
 result
 BookmarkPresentationModel::GetFolder(const String& parentID, int startIndex, int limit, ArrayList& folderList)
 {
        int count = -1;
        String query;
-       String bookmarkFolderTable(BOOKMARK_FOLDER_TABLE);
+       String bookmarkTable(BOOKMARK_URL_TABLE);
        result r = E_FAILURE;
 
        if (parentID.CompareTo(DEFAULT_VALUE_PARENTID ) != 0)
@@ -518,8 +669,8 @@ BookmarkPresentationModel::GetFolder(const String& parentID, int startIndex, int
                return E_SUCCESS;
        }
        query.Append(L"SELECT * FROM ");
-       query.Append(bookmarkFolderTable);
-
+       query.Append(bookmarkTable);
+       query.Append(" WHERE ADDRESS = ''");
 
        //Append LIMIT
        if (limit > 0)
@@ -565,17 +716,19 @@ BookmarkPresentationModel::GetSearchBookmarkCount(int& searchBookmarkCount, Stri
        String bookmarkTable(BOOKMARK_URL_TABLE);
        result r = E_FAILURE;
        bool nextRowPresent = false;
-       text.Replace(L"'", L"''");
+       text.Replace(L"'", L"\'");
 
        query.Append(L"SELECT COUNT(ID) FROM ");
        query.Append(bookmarkTable);
        query.Append(L" WHERE (TITLE LIKE '%");
        query.Append(text);
-       query.Append("%')");
+       query.Append("%'");
        query.Append(" OR ");
-       query.Append(L"(URL LIKE '%");
+       query.Append(L"ADDRESS LIKE '%");
        query.Append(text);
-       query.Append("%')");
+       query.Append("%'");
+       query.Append(" ESCAPE '/')");
+       query.Append(" AND ADDRESS != ''");
 
        r = BookmarkPresentationModel::ExecuteQuery(query, count);
        TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::GetSearchBookmarkCount query failed  %s",GetErrorMessage(r));
@@ -589,7 +742,10 @@ BookmarkPresentationModel::GetSearchBookmarkCount(int& searchBookmarkCount, Stri
        }
        searchBookmarkCount = intVal;
 
-       CATCH: return r;
+       CATCH:
+//     text.Replace(L"''", L"'");
+       return r;
+
 }
 
 
@@ -600,16 +756,18 @@ BookmarkPresentationModel::GetSearchFolderCount(int& searchFolderCount, String&
        int count = -1;
        int intVal = -1;
        String query;
-       String bookmarkFolderTable(BOOKMARK_FOLDER_TABLE);
+       String bookmarkTable(BOOKMARK_URL_TABLE);
        result r = E_FAILURE;
        bool nextRowPresent = false;
-       text.Replace(L"'", L"''");
+       text.Replace(L"'", L"\'");
 
        query.Append(L"SELECT COUNT(ID) FROM ");
-       query.Append(bookmarkFolderTable);
-       query.Append(L" WHERE (TITLE LIKE '%");
+       query.Append(bookmarkTable);
+       query.Append(L" WHERE TITLE LIKE '%");
        query.Append(text);
-       query.Append("%')");
+       query.Append("%'");
+       query.Append(" ESCAPE '/'");
+       query.Append(" AND ADDRESS = ''");
 
        r = BookmarkPresentationModel::ExecuteQuery(query, count);
        TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::GetSearchBookmarkCount query failed  %s",GetErrorMessage(r));
@@ -623,7 +781,9 @@ BookmarkPresentationModel::GetSearchFolderCount(int& searchFolderCount, String&
        }
        searchFolderCount = intVal;
 
-       CATCH: return r;
+       CATCH:
+//     text.Replace(L"''", L"'");
+       return r;
 }
 
 
@@ -654,16 +814,17 @@ BookmarkPresentationModel::GetSearchBookmark(int startIndex, int limit, ArrayLis
        String bookmarkTable(BOOKMARK_URL_TABLE);
        result r = E_FAILURE;
 
-       text.Replace(L"'", L"''");
+       text.Replace(L"'", L"\'");
        query.Append(L"SELECT * FROM ");
        query.Append(bookmarkTable);
-       query.Append(L" WHERE (TITLE LIKE '%");
+       query.Append(L" WHERE ((TITLE LIKE '%");
        query.Append(text);
-       query.Append("%')");
+       query.Append("%' ESCAPE '/')");
        query.Append(" OR ");
-       query.Append(L"(URL LIKE '%");
+       query.Append(L"(ADDRESS LIKE '%");
        query.Append(text);
-       query.Append("%')");
+       query.Append("%' ESCAPE '/') )");
+       query.Append(" AND (ADDRESS != '')");
        //Append LIMIT
        if (limit > 0)
        {
@@ -677,14 +838,16 @@ BookmarkPresentationModel::GetSearchBookmark(int startIndex, int limit, ArrayLis
                        query.Append(startIndex);
                }
        }
-
+       AppLog("Query is %ls", query.GetPointer());
        r = BookmarkPresentationModel::ExecuteQuery(query, count);
        TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::GetSearchBookmark query failed  %s",GetErrorMessage(r));
 
        r = CreateBookmarkList(count, pBookmarkList);
        TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::CreateBookmarkList failed  %s",GetErrorMessage(r));
 
-       CATCH: return r;
+       CATCH:
+//     text.Replace(L"''", L"'");
+       return r;
 }
 
 result
@@ -692,15 +855,18 @@ BookmarkPresentationModel::GetSearchFolder(int startIndex, int limit, ArrayList&
 {
        int count = -1;
        String query;
-       String bookmarkFolderTable(BOOKMARK_FOLDER_TABLE);
+       String bookmarkTable(BOOKMARK_URL_TABLE);
        result r = E_FAILURE;
-       text.Replace(L"'", L"''");
+       text.Replace(L"'", L"\'");
 
        query.Append(L"SELECT * FROM ");
-       query.Append(bookmarkFolderTable);
-       query.Append(L" WHERE (TITLE LIKE '%");
+       query.Append(bookmarkTable);
+       query.Append(L" WHERE TITLE LIKE '%");
        query.Append(text);
-       query.Append("%')");
+       //query.Append("%')");
+       query.Append("%'");
+       query.Append(" ESCAPE '/'");
+       query.Append(" AND ADDRESS = ''");
 
        //Append LIMIT
        if (limit > 0)
@@ -722,7 +888,9 @@ BookmarkPresentationModel::GetSearchFolder(int startIndex, int limit, ArrayList&
        r = CreateFolderList(count, pFolderList);
        TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::CreateBookmarkList failed  %s",GetErrorMessage(r));
 
-       CATCH: return r;
+       CATCH:
+//     text.Replace(L"''", L"'");
+       return r;
 }
 
 result
@@ -745,7 +913,6 @@ BookmarkPresentationModel::CreateFolderList(int bookmarkCount, ArrayList& folder
        {
                return E_SUCCESS;
        }
-
        for (int l_bookmarkCount = 0; l_bookmarkCount < bookmarkCount; l_bookmarkCount++)
        {
                r = PresentationModelBase::DbIsNextRowPresent(nextRowPresent);
@@ -754,6 +921,7 @@ BookmarkPresentationModel::CreateFolderList(int bookmarkCount, ArrayList& folder
                if (nextRowPresent == true)
                {
                        pBookmark = new(std::nothrow) BookmarkData;
+
                        if (pBookmark)
                        {
                                for (int columnCount = 0; columnCount < MAX_NOTE_TABLE_COLUMN; columnCount++)
@@ -761,7 +929,7 @@ BookmarkPresentationModel::CreateFolderList(int bookmarkCount, ArrayList& folder
 
                                        switch (columnCount)
                                        {
-                                       case 0:
+                                       case BOOKMARK_ID:
                                                r = PresentationModelBase::GetColumn(columnCount, intVal);
                                                if (!IsFailed(r))
                                                {
@@ -775,16 +943,34 @@ BookmarkPresentationModel::CreateFolderList(int bookmarkCount, ArrayList& folder
 
                                                }
                                                break;
-
-                                       case 1:
+                                       case BOOKMARK_PARENT:
+                                               r = PresentationModelBase::GetColumn(columnCount, intVal);
+                                               if (!IsFailed(r))
+                                               {
+                                                       if (intVal > 0)
+                                                       {
+                                                               parentId.Clear();
+                                                               parentId.Append(intVal);
+                                                               if (parentId.GetLength() > 0)
+                                                                       pBookmark->SetParentId(parentId);
+                                                       }
+                                               }
+                                               break;
+                                       case BOOKMARK_ADDRESS:
+                                               r = PresentationModelBase::GetColumn(columnCount, value);
+                                               if (!IsFailed(r))
+                                               {
+                                                       pBookmark->SetUrl(value);
+                                               }
+                                               break;
+                                       case BOOKMARK_TITLE:
                                                r = PresentationModelBase::GetColumn(columnCount, value);
                                                if (!IsFailed(r))
                                                {
                                                        pBookmark->SetBookmarkTitle(value);
                                                }
                                                break;
-
-                                       case 2:
+                                       case BOOKMARK_CREATIONDATE:
                                                r = PresentationModelBase::GetColumn(columnCount, dateValue);
                                                if (!IsFailed(r))
                                                {
@@ -793,7 +979,7 @@ BookmarkPresentationModel::CreateFolderList(int bookmarkCount, ArrayList& folder
                                                }
                                                break;
 
-                                       case 3:
+                                       case BOOKMARK_UPDATEDATA:
                                                r = PresentationModelBase::GetColumn(columnCount, dateValue);
                                                if (!IsFailed(r))
                                                {
@@ -801,6 +987,32 @@ BookmarkPresentationModel::CreateFolderList(int bookmarkCount, ArrayList& folder
                                                        pBookmark->SetModifiedTime(modifiedTime);
                                                }
                                                break;
+
+                                               /*case 6:
+                                               r = PresentationModelBase::GetColumn(columnCount, value);
+                                               if (!IsFailed(r))
+                                               {
+                                                       iconPath = value;
+                                                       pBookmark->SetIconPath(iconPath);
+                                               }
+                                               break;
+                                       case 7:
+
+                                               r = PresentationModelBase::GetColumn(columnCount, intVal);
+                                               if (!IsFailed(r))
+                                               {
+                                                       if (intVal >= 0)
+                                                       {
+                                                               faviconId.Clear();
+                                                               faviconId.Append(intVal);
+                                                               if (faviconId.GetLength() > 0)
+                                                               {
+                                                                       pBookmark->SetFaviconId(faviconId);
+                                                               }
+                                                       }
+                                               }
+                                               break;*/
+
                                        default:
                                                break;
                                        }
@@ -822,6 +1034,7 @@ BookmarkPresentationModel::CreateFolderList(int bookmarkCount, ArrayList& folder
 result
 BookmarkPresentationModel::CreateBookmarkList(int bookmarkCount, ArrayList& bookmarkList)
 {
+       AppLog("BookmarkPresentationModel::CreateBookmarkList start");
        BookmarkData* pBookmark = null;
        int intVal = -1;
        String value;
@@ -832,9 +1045,11 @@ BookmarkPresentationModel::CreateBookmarkList(int bookmarkCount, ArrayList& book
        String faviconId;
        DateTime createdTime;
        DateTime modifiedTime;
+       ByteBuffer *pFavIconBuffer = null;
+
        String iconPath;
        bool nextRowPresent = false;
-       
+
        if (bookmarkCount < 1)
        {
                return E_SUCCESS;
@@ -855,7 +1070,7 @@ BookmarkPresentationModel::CreateBookmarkList(int bookmarkCount, ArrayList& book
 
                                        switch (columnCount)
                                        {
-                                       case 0:
+                                       case BOOKMARK_ID:
                                                r = PresentationModelBase::GetColumn(columnCount, intVal);
                                                if (!IsFailed(r))
                                                {
@@ -869,38 +1084,34 @@ BookmarkPresentationModel::CreateBookmarkList(int bookmarkCount, ArrayList& book
 
                                                }
                                                break;
-
-                                       case 1:
-                                               r = PresentationModelBase::GetColumn(columnCount, value);
+                                       case BOOKMARK_PARENT:
+                                               r = PresentationModelBase::GetColumn(columnCount, intVal);
                                                if (!IsFailed(r))
                                                {
-                                                       pBookmark->SetBookmarkTitle(value);
+                                                       if (intVal > 0)
+                                                       {
+                                                               parentId.Clear();
+                                                               parentId.Append(intVal);
+                                                               if (parentId.GetLength() > 0)
+                                                                       pBookmark->SetParentId(parentId);
+                                                       }
                                                }
                                                break;
-
-                                       case 2:
+                                       case BOOKMARK_ADDRESS:
                                                r = PresentationModelBase::GetColumn(columnCount, value);
                                                if (!IsFailed(r))
                                                {
                                                        pBookmark->SetUrl(value);
                                                }
                                                break;
-
-                                       case 3:
-                                               r = PresentationModelBase::GetColumn(columnCount, intVal);
+                                       case BOOKMARK_TITLE:
+                                               r = PresentationModelBase::GetColumn(columnCount, value);
                                                if (!IsFailed(r))
                                                {
-                                                       if (intVal > 0)
-                                                       {
-                                                               parentId.Clear();
-                                                               parentId.Append(intVal);
-                                                               if (parentId.GetLength() > 0)
-                                                                       pBookmark->SetParentId(parentId);
-                                                       }
+                                                       pBookmark->SetBookmarkTitle(value);
                                                }
                                                break;
-
-                                       case 4:
+                                       case BOOKMARK_CREATIONDATE:
                                                r = PresentationModelBase::GetColumn(columnCount, dateValue);
                                                if (!IsFailed(r))
                                                {
@@ -908,8 +1119,12 @@ BookmarkPresentationModel::CreateBookmarkList(int bookmarkCount, ArrayList& book
                                                        pBookmark->SetCreatedTime(createdTime);
                                                }
                                                break;
+                                       case BOOKMARK_SEQUENCE:
+                                       {
 
-                                       case 5:
+                                       }
+                                       break;
+                                       case BOOKMARK_UPDATEDATA:
                                                r = PresentationModelBase::GetColumn(columnCount, dateValue);
                                                if (!IsFailed(r))
                                                {
@@ -917,8 +1132,74 @@ BookmarkPresentationModel::CreateBookmarkList(int bookmarkCount, ArrayList& book
                                                        pBookmark->SetModifiedTime(modifiedTime);
                                                }
                                                break;
+                                       case BOOKMARK_VISITDATE:
+                                       {
+
+                                       }
+                                       break;
+                                       case BOOKMARK_EDITABLE:
+                                       {
+
+                                       }
+                                       break;
+                                       case BOOKMARK_ACCESSACCOUNT:
+                                       {
+
+                                       }
+                                       break;
+                                       case BOOKMARK_FAVICON:
+                                       {
+                                               AppLog("BookmarkPresentationModel::CreateBookmarkList BOOKMARK_FAVICON 0");
+                                               pFavIconBuffer = new ByteBuffer();
+                                               r = PresentationModelBase::GetColumn(columnCount, *pFavIconBuffer);
+                                               AppLog("BookmarkPresentationModel::CreateBookmarkList BOOKMARK_FAVICON 1");
+                                               if (pFavIconBuffer->GetCapacity() > 0)
+                                               {
+                                                       AppLog("BookmarkPresentationModel::CreateBookmarkList favIconBuffer not null");
+                                               }
+                                               else
+                                               {
+                                                       AppLog("BookmarkPresentationModel::CreateBookmarkList favIconBuffer is null");
+                                               }
 
-                                       case 6:
+                                               if (!IsFailed(r))
+                                               {
+                                                       iconPath = value;
+                                                       pBookmark->SetFavIconBuffer(*pFavIconBuffer);
+                                               }
+                                       }
+                                       break;
+                                       case BOOKMARK_FAVICON_LENGTH:
+                                       {
+
+                                       }
+                                       break;
+                                       case BOOKMARK_FAVICON_W:
+                                       {
+                                               r = PresentationModelBase::GetColumn(columnCount, intVal);
+                                               if (!IsFailed(r))
+                                               {
+                                                       if (intVal > 0)
+                                                       {
+                                                               pBookmark->SetFavIconWidth(intVal);
+                                                       }
+                                               }
+                                       }
+                                       break;
+                                       case BOOKMARK_FAVICON_H:
+                                       {
+                                               r = PresentationModelBase::GetColumn(columnCount, intVal);
+                                               if (!IsFailed(r))
+                                               {
+                                                       if (intVal > 0)
+                                                       {
+                                                               pBookmark->SetFavIconHeight(intVal);
+                                                       }
+                                               }
+                                       }
+                                       break;
+                                               /*
+                                                *case 6:
                                                r = PresentationModelBase::GetColumn(columnCount, value);
                                                if (!IsFailed(r))
                                                {
@@ -941,7 +1222,7 @@ BookmarkPresentationModel::CreateBookmarkList(int bookmarkCount, ArrayList& book
                                                                }
                                                        }
                                                }
-                                               break;
+                                               break;*/
 
                                        default:
                                                break;
@@ -958,6 +1239,7 @@ BookmarkPresentationModel::CreateBookmarkList(int bookmarkCount, ArrayList& book
                        }
                }
        }
+       AppLog("BookmarkPresentationModel::CreateBookmarkList end");
        return r;
 }
 
@@ -974,11 +1256,27 @@ BookmarkPresentationModel::DoesBookmarkExist(const Tizen::Base::String& Url, boo
 
        query.Append(L"SELECT COUNT(ID) FROM ");
        query.Append(bookmarkTable);
-       query.Append(" WHERE URL = '");
+       query.Append(" WHERE ADDRESS = '");
        query.Append(Url);
+       if(Url.EndsWith(L"/"))
+       {
+               query.Append("' OR ADDRESS = '");
+               String newUrl = L"";
+               Url.SubString(0,Url.GetLength()-1 ,newUrl);
+               query.Append(newUrl);
+       }
+       else
+       {
+               query.Append("' OR ADDRESS = '");
+               String newUrl = Url;
+//             Url.SubString(0,Url.GetLength()-1 ,newUrl);
+               newUrl.Append(L"/");
+               query.Append(newUrl);
+       }
+
        if(checkParentId == true)
        {
-               query.Append(L"' AND PARENT_BOOKMARK_ID = '");
+               query.Append(L"' AND PARENT = '");
                query.Append(parentId);
        }
        query.Append("'");
@@ -1018,8 +1316,26 @@ BookmarkPresentationModel::DeleteBookmark(const Tizen::Base::String& url)
 
        query.Append(L"DELETE FROM ");
        query.Append(bookmarkTable);
-       query.Append(" WHERE URL = '");
+       query.Append(" WHERE ADDRESS = '");
        query.Append(url);
+
+       if(url.EndsWith(L"/"))
+       {
+               query.Append("' OR ADDRESS = '");
+               String newUrl = L"";
+               url.SubString(0,url.GetLength()-1 ,newUrl);
+               query.Append(newUrl);
+       }
+       else
+       {
+               query.Append("' OR ADDRESS = '");
+               String newUrl = url;
+//             Url.SubString(0,Url.GetLength()-1 ,newUrl);
+               newUrl.Append(L"/");
+               query.Append(newUrl);
+
+       }
+
        query.Append(L"'");
 
        r = BookmarkPresentationModel::ExecuteQuery(query, resultCount);