Merge "[2.2.1][P130807-00904] Fail to get the host of the uri which has only ? charac...
[platform/framework/native/appfw.git] / src / io / FIo_DbEnumeratorImpl.cpp
index 365f7d4..057ca99 100644 (file)
@@ -1,5 +1,4 @@
 //
-// Open Service Platform
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
 // Licensed under the Apache License, Version 2.0 (the License);
@@ -795,180 +794,126 @@ _DbEnumeratorImpl::Reset(void)
 result
 _DbEnumeratorImpl::GetIntAt(int columnIndex, int& value) const
 {
-       result r = E_SUCCESS;
-
        SysTryReturnResult(NID_IO, __pEnum != null, E_INVALID_STATE,
                                "The Object is not constructed or the database is already been closed.");
        SysTryReturnResult(NID_IO, columnIndex >= 0 && columnIndex < __columnCount, E_INVALID_ARG,
                                "Given column index is out of range.");
        SysTryReturnResult(NID_IO, __pDbEnumeratorCache != null, E_INVALID_STATE,
                                "The method has tried to fetch the column data of a result set that is not activated.");
+       SysTryReturnResult(NID_IO, __pDbEnumeratorCache->__pCurrentDbRow != null, E_SYSTEM,
+                               "Result row is not activated.");
 
-       if (__pDbEnumeratorCache->__pCurrentDbRow)
-       {
-               _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
-               if (pDbColumn)
-               {
-                       if (pDbColumn->type != SQLITE_INTEGER)
-                       {
-                               r = E_TYPE_MISMATCH;
-                               SysLog(NID_IO, "[E_TYPE_MISMATCH] Trying to access column of different type.");
-                               goto CATCH;
-                       }
+       _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
+       SysTryReturnResult(NID_IO, pDbColumn != null, E_SYSTEM, "The specified column at index %d is not found from the result set.", columnIndex);
 
-                       value = *((int *)pDbColumn->pData.get());
-               }
-       }
-       return E_SUCCESS;
+       SysTryReturnResult(NID_IO, pDbColumn->type == SQLITE_INTEGER, E_TYPE_MISMATCH,
+                       "Trying to access column of different type.");
 
-CATCH:
-       return r;
+       SysTryReturnResult(NID_IO, pDbColumn->pData != null, E_SYSTEM,  "Data for specified column does not exist.");
+
+       value = *((int *)pDbColumn->pData.get());
+
+       return E_SUCCESS;
 }
 
 result
 _DbEnumeratorImpl::GetInt64At(int columnIndex, long long& value) const
 {
-       result r = E_SUCCESS;
-
        SysTryReturnResult(NID_IO, __pEnum != null, E_INVALID_STATE,
                                "The Object is not constructed or the database is already been closed.");
        SysTryReturnResult(NID_IO, columnIndex >= 0 && columnIndex < __columnCount, E_INVALID_ARG,
                                "Given column index is out of range.");
        SysTryReturnResult(NID_IO, __pDbEnumeratorCache != null, E_INVALID_STATE,
                                "The method has tried to fetch the column data of a result set that is not activated.");
+       SysTryReturnResult(NID_IO, __pDbEnumeratorCache->__pCurrentDbRow != null, E_SYSTEM,
+                               "Result row is not activated.");
 
-       if (__pDbEnumeratorCache->__pCurrentDbRow)
-       {
-               _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
-               if (pDbColumn)
-               {
-                       if (pDbColumn->type != SQLITE_INTEGER)
-                       {
-                               r = E_TYPE_MISMATCH;
-                               SysLog(NID_IO, "[E_TYPE_MISMATCH] Trying to access column of different type.");
-                               goto CATCH;
-                       }
+       _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
+       SysTryReturnResult(NID_IO, pDbColumn != null, E_SYSTEM, "The specified column at index %d is not found from the result set.", columnIndex);
 
-                       value = *((long long *)pDbColumn->pData.get());
-               }
-       }
-       return E_SUCCESS;
+       SysTryReturnResult(NID_IO, pDbColumn->type == SQLITE_INTEGER, E_TYPE_MISMATCH,
+                       "Trying to access column of different type.");
+       SysTryReturnResult(NID_IO, pDbColumn->pData != null, E_SYSTEM,  "Data for specified column does not exist.");
 
-CATCH:
-       return r;
+       value = *((long long *)pDbColumn->pData.get());
+
+       return E_SUCCESS;
 }
 
 result
 _DbEnumeratorImpl::GetDoubleAt(int columnIndex, double& value) const
 {
-       result r = E_SUCCESS;
-
        SysTryReturnResult(NID_IO, __pEnum != null, E_INVALID_STATE,
                                "The Object is not constructed or the database is already been closed.");
        SysTryReturnResult(NID_IO, columnIndex >= 0 && columnIndex < __columnCount, E_INVALID_ARG,
                                "Given column index is out of range.");
        SysTryReturnResult(NID_IO, __pDbEnumeratorCache != null, E_INVALID_STATE,
                                "The method has tried to fetch the column data of a result set that is not activated.");
+       SysTryReturnResult(NID_IO, __pDbEnumeratorCache->__pCurrentDbRow != null, E_SYSTEM,
+                               "Result row is not activated.");
 
-       if (__pDbEnumeratorCache->__pCurrentDbRow)
-       {
-               _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
-               if (pDbColumn)
-               {
-                       if (pDbColumn->type != SQLITE_FLOAT)
-                       {
-                               r = E_TYPE_MISMATCH;
-                               SysLog(NID_IO, "[E_TYPE_MISMATCH] Trying to access column of different type.");
-                               goto CATCH;
-                       }
+       _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
+       SysTryReturnResult(NID_IO, pDbColumn != null, E_SYSTEM, "The specified column at index %d is not found from the result set.", columnIndex);
+       SysTryReturnResult(NID_IO, pDbColumn->type == SQLITE_FLOAT, E_TYPE_MISMATCH, "Trying to access column of different type.");
+       SysTryReturnResult(NID_IO, pDbColumn->pData != null, E_SYSTEM,  "Data for specified column does not exist.");
 
-                       value = *((double *)pDbColumn->pData.get());
-               }
-       }
-       return E_SUCCESS;
+       value = *((double *)pDbColumn->pData.get());
 
-CATCH:
-       return r;
+       return E_SUCCESS;
 }
 
 result
 _DbEnumeratorImpl::GetStringAt(int columnIndex, String& value) const
 {
-       result r = E_SUCCESS;
-
        SysTryReturnResult(NID_IO, __pEnum != null, E_INVALID_STATE,
                                "The Object is not constructed or the database is already been closed.");
        SysTryReturnResult(NID_IO, columnIndex >= 0 && columnIndex < __columnCount, E_INVALID_ARG,
                                "Given column index is out of range.");
        SysTryReturnResult(NID_IO, __pDbEnumeratorCache != null, E_INVALID_STATE,
                                "The method has tried to fetch the column data of a result set that is not activated.");
+       SysTryReturnResult(NID_IO, __pDbEnumeratorCache->__pCurrentDbRow != null, E_SYSTEM,
+                               "Result row is not activated.");
 
-       if (__pDbEnumeratorCache->__pCurrentDbRow)
-       {
-               _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
-               if (pDbColumn)
-               {
-                       if (pDbColumn->type != SQLITE_TEXT)
-                       {
-                               r = E_TYPE_MISMATCH;
-                               SysLog(NID_IO, "[E_TYPE_MISMATCH] Trying to access column of different type.");
-                               goto CATCH;
-                       }
+       _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
+       SysTryReturnResult(NID_IO, pDbColumn != null, E_SYSTEM, "The specified column at index %d is not found from the result set.", columnIndex);
+       SysTryReturnResult(NID_IO, pDbColumn->type == SQLITE_TEXT, E_TYPE_MISMATCH, "Trying to access column of different type.");
+       SysTryReturnResult(NID_IO, pDbColumn->pData != null, E_SYSTEM,  "Data for specified column does not exist.");
 
-                       value = String((const char*)pDbColumn->pData.get());
-               }
-       }
-       return E_SUCCESS;
+       result r = StringUtil::Utf8ToString(const_cast< char* >(pDbColumn->pData.get()), value);
+       SysTryReturn(NID_IO, r == E_SUCCESS, r, r, "[%s] Propagating to caller...", GetErrorMessage(r));
 
-CATCH:
-       return r;
+       return E_SUCCESS;
 }
 
 result
 _DbEnumeratorImpl::GetBlobAt(int columnIndex, ByteBuffer& value) const
 {
-       result r = E_SUCCESS;
-       int blobLen = 0;
-       const byte* pBlob = null;
-
        SysTryReturnResult(NID_IO, __pEnum != null, E_INVALID_STATE,
                                "The Object is not constructed or the database is already been closed.");
        SysTryReturnResult(NID_IO, columnIndex >= 0 && columnIndex < __columnCount, E_INVALID_ARG,
                                "Given column index is out of range.");
        SysTryReturnResult(NID_IO, __pDbEnumeratorCache != null, E_INVALID_STATE,
                                "The method has tried to fetch the column data of a result set that is not activated.");
+       SysTryReturnResult(NID_IO, __pDbEnumeratorCache->__pCurrentDbRow != null, E_SYSTEM,
+                               "Result row is not activated.");
 
-       if (__pDbEnumeratorCache->__pCurrentDbRow)
-       {
-               _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
-               if (pDbColumn)
-               {
-                       if (pDbColumn->type != SQLITE_BLOB)
-                       {
-                               r = E_TYPE_MISMATCH;
-                               SysLog(NID_IO, "[E_TYPE_MISMATCH] Trying to access column of different type.");
-                               goto CATCH;
-                       }
+       _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
+       SysTryReturnResult(NID_IO, pDbColumn != null, E_SYSTEM, "The specified column at index %d is not found from the result set.", columnIndex);
+       SysTryReturnResult(NID_IO, pDbColumn->type == SQLITE_BLOB, E_TYPE_MISMATCH, "Trying to access column of different type.");
 
-                       blobLen = pDbColumn->size;
-                       pBlob = (const byte*)pDbColumn->pData.get();
+       int blobLen = pDbColumn->size;
+       SysTryReturnResult(NID_IO, pDbColumn->pData != null, E_SYSTEM,  "Data for specified column does not exist.");
 
-                       r = value.SetArray(pBlob, 0, blobLen);
-               }
-       }
+       const byte* pBlob = reinterpret_cast< const byte* >(pDbColumn->pData.get());
+       result r = value.SetArray(pBlob, 0, blobLen);
+       SysTryReturn(NID_IO, r == E_SUCCESS, r, r, "[%s] Propagating to caller...", GetErrorMessage(r));
 
-       // fall thru
-CATCH:
-       return r;
+       return E_SUCCESS;
 }
 
 result
 _DbEnumeratorImpl::GetBlobAt(int columnIndex, void* buffer, int size) const
 {
-       result r = E_SUCCESS;
-       int blobLen = 0;
-       const byte* pBlob = null;
-
        SysTryReturnResult(NID_IO, __pEnum != null, E_INVALID_STATE,
                                "The Object is not constructed or the database is already been closed.");
        SysTryReturnResult(NID_IO, columnIndex >= 0 && columnIndex < __columnCount, E_INVALID_ARG,
@@ -977,69 +922,50 @@ _DbEnumeratorImpl::GetBlobAt(int columnIndex, void* buffer, int size) const
        SysTryReturnResult(NID_IO, size > 0, E_INVALID_ARG, "Invalid size was passed.");
        SysTryReturnResult(NID_IO, __pDbEnumeratorCache != null, E_INVALID_STATE,
                                "The method has tried to fetch the column data of a result set that is not activated.");
+       SysTryReturnResult(NID_IO, __pDbEnumeratorCache->__pCurrentDbRow != null, E_SYSTEM,
+                               "Result row is not activated.");
 
-       if (__pDbEnumeratorCache->__pCurrentDbRow)
-       {
-               _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
-               if (pDbColumn)
-               {
-                       if (pDbColumn->type != SQLITE_BLOB)
-                       {
-                               r = E_TYPE_MISMATCH;
-                               SysLog(NID_IO, "[E_TYPE_MISMATCH] Trying to access column of different type.");
-                               goto CATCH;
-                       }
+       _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
+       SysTryReturnResult(NID_IO, pDbColumn != null, E_SYSTEM, "The specified column at index %d is not found from the result set.", columnIndex);
+       SysTryReturnResult(NID_IO, pDbColumn->type == SQLITE_BLOB, E_TYPE_MISMATCH, "Trying to access column of different type.");
 
-                       blobLen = pDbColumn->size;
-                       pBlob = (const byte*)pDbColumn->pData.get();
-                       memcpy(buffer, pBlob, (blobLen < size) ? blobLen : size);
-               }
-       }
+       int blobLen = pDbColumn->size;
+       SysTryReturnResult(NID_IO, pDbColumn->pData != null, E_SYSTEM,  "Data for specified column does not exist.");
+
+       const byte* pBlob = reinterpret_cast< const byte* >(pDbColumn->pData.get());
+       memcpy(buffer, pBlob, (blobLen < size) ? blobLen : size);
 
        if (size < blobLen)
        {
-               r = E_OVERFLOW;
+               return E_OVERFLOW;
        }
 
-       // fall thru
-CATCH:
-       return r;
+       return E_SUCCESS;
 }
 
 result
 _DbEnumeratorImpl::GetDateTimeAt(int columnIndex, DateTime& value) const
 {
-       result r = E_SUCCESS;
-       const char* pStr = null;
-
        SysTryReturnResult(NID_IO, __pEnum != null, E_INVALID_STATE,
                                "The Object is not constructed or the database is already been closed.");
        SysTryReturnResult(NID_IO, columnIndex >= 0 && columnIndex < __columnCount, E_INVALID_ARG,
                                "Given column index is out of range.");
        SysTryReturnResult(NID_IO, __pDbEnumeratorCache != null, E_INVALID_STATE,
                                "The method has tried to fetch the column data of a result set that is not activated.");
+       SysTryReturnResult(NID_IO, __pDbEnumeratorCache->__pCurrentDbRow != null, E_SYSTEM,
+                               "Result row is not activated.");
 
-       if (__pDbEnumeratorCache->__pCurrentDbRow)
-       {
-               _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
-               if (pDbColumn)
-               {
-                       if (pDbColumn->type != SQLITE_TEXT)
-                       {
-                               r = E_TYPE_MISMATCH;
-                               SysLog(NID_IO, "[E_TYPE_MISMATCH] Trying to access column of different type.");
-                               goto CATCH;
-                       }
+       _DbColumn* pDbColumn = dynamic_cast < _DbColumn* >(__pDbEnumeratorCache->__pCurrentDbRow->dbValuesList.GetAt(columnIndex));
+       SysTryReturnResult(NID_IO, pDbColumn != null, E_SYSTEM, "The specified column at index %d is not found from the result set.", columnIndex);
+       SysTryReturnResult(NID_IO, pDbColumn->type == SQLITE_TEXT, E_TYPE_MISMATCH, "Trying to access column of different type.");
+       SysTryReturnResult(NID_IO, pDbColumn->pData != null, E_SYSTEM,  "Data for specified column does not exist.");
 
-                       pStr = (const char*) pDbColumn->pData.get();
-               }
-       }
+       const char* pStr = const_cast< char* >(pDbColumn->pData.get());
 
-       r = DateTime::Parse(pStr, value);
+       result r = DateTime::Parse(pStr, value);
+       SysTryReturn(NID_IO, r == E_SUCCESS, r, r, "[%s] Propagating to caller...", GetErrorMessage(r));
 
-       // fall thru
-CATCH:
-       return r;
+       return E_SUCCESS;
 }
 
 int