Change file path of domain socket
[platform/framework/native/appfw.git] / src / io / FIo_DataSetImpl.cpp
index 5f5c250..012d78f 100644 (file)
@@ -1,5 +1,4 @@
 //
-// Open Service Platform
 // Copyright (c) 2013 Samsung Electronics Co., Ltd.
 //
 // Licensed under the Apache License, Version 2.0 (the License);
@@ -37,14 +36,24 @@ using namespace Tizen::Base::Collection;
 namespace Tizen { namespace Io
 {
 _DataSetImpl::_DataSetImpl(void)
-       :__rowCount(0)
+       : __columnCount(0)
+       , __rowCount(0)
+       , __pDataSet(null)
+       , __pColumnList(null)
+       , __pColumnTypeList(null)
 {
-
 }
 
 _DataSetImpl::~_DataSetImpl(void)
 {
-
+       for (int i = 0; i< __enumImplList.GetCount() ; i++)
+               (static_cast<_DataSetEnumeratorImpl*>(__enumImplList.GetAt(i)))->__dataSetDeleted = true;
+       for (int i = 0; i< __rowImplList.GetCount() ; i++)
+               (static_cast<_DataRowImpl*>(__rowImplList.GetAt(i)))->__dataSetDeleted = true;
+
+       delete __pDataSet;
+       delete __pColumnList;
+       delete __pColumnTypeList;
 }
 
 result
@@ -52,21 +61,28 @@ _DataSetImpl::Construct(const IList& columnNames)
 {
        result r = E_SUCCESS;
 
+       __pDataSet = new (std::nothrow) LinkedList(SingleObjectDeleter);
+       SysTryReturnResult(NID_IO, __pDataSet != null, E_OUT_OF_MEMORY, "The memory is insufficient.");
+       __pColumnList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+       SysTryReturnResult(NID_IO, __pColumnList != null, E_OUT_OF_MEMORY, "The memory is insufficient.");
+       __pColumnTypeList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+       SysTryReturnResult(NID_IO, __pColumnTypeList != null, E_OUT_OF_MEMORY, "The memory is insufficient.");
+
        __columnCount = columnNames.GetCount();
-       SysTryReturn(NID_IO, __columnCount > 0, E_INVALID_ARG, r, "[E_INVALID_ARG] column count is 0.");
+       SysTryReturnResult(NID_IO, __columnCount > 0, E_INVALID_ARG, "column count is 0.");
 
-       r = __columnList.Construct(__columnCount);
+       r = __pColumnList->Construct(__columnCount);
        SysTryReturn(NID_IO, r == E_SUCCESS, E_OUT_OF_MEMORY, r, "[E_OUT_OF_MEMORY] column list construct failed");
-       r = __columnTypeList.Construct(__columnCount);
+       r = __pColumnTypeList->Construct(__columnCount);
        SysTryReturn(NID_IO, r == E_SUCCESS, E_OUT_OF_MEMORY, r, "[E_OUT_OF_MEMORY] column type list construct failed");
 
        for (int i = 0 ; i < __columnCount ; i++)
        {
-               r = __columnList.Add(new (std::nothrow) String(*(String*)(columnNames.GetAt(i))));
-               SysTryReturn(NID_IO, r == E_SUCCESS, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
+               r = __pColumnList->Add(new (std::nothrow) String(*(String*)(columnNames.GetAt(i))));
+               SysTryReturnResult(NID_IO, r == E_SUCCESS, E_OUT_OF_MEMORY, "The memory is insufficient.");
 
-               r = __columnTypeList.Add(new (std::nothrow) Integer(DB_COLUMNTYPE_NULL));
-               SysTryReturn(NID_IO, r == E_SUCCESS, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
+               r = __pColumnTypeList->Add(new (std::nothrow) Integer(DB_COLUMNTYPE_NULL));
+               SysTryReturnResult(NID_IO, r == E_SUCCESS, E_OUT_OF_MEMORY, "The memory is insufficient.");
        }
        //SysLog(NID_IO, "column count is %d", __columnCount);
 
@@ -77,18 +93,23 @@ DataRow*
 _DataSetImpl::CreateDataRowN(void)
 {
        result r;
-       unique_ptr<ArrayList> pNewRowArrayList(new (std::nothrow) ArrayList);
+       unique_ptr<ArrayList> pNewRowArrayList(new (std::nothrow) ArrayList(SingleObjectDeleter));
        SysTryReturn(NID_IO, pNewRowArrayList != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
 
        unique_ptr<DataRow> pDataRow(_DataRowImpl::CreateDataRowInstanceN(__columnCount, pNewRowArrayList.get()));
        SysTryReturn(NID_IO, pDataRow != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
 
-       r = __dataSet.Add(pNewRowArrayList.release());
+       r = __pDataSet->Add(pNewRowArrayList.release());
        SysTryReturn(NID_IO, r == E_SUCCESS, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Add Row to DataSet is failed");
 
-       _DataRowImpl::GetInstance(*pDataRow)->__pColumnTypeList = &__columnTypeList;
+       _DataRowImpl::GetInstance(*pDataRow)->__pColumnTypeList = __pColumnTypeList;
+
+       r = __rowImplList.Add(_DataRowImpl::GetInstance(*pDataRow));
+       SysTryReturn(NID_IO, r == E_SUCCESS, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Add to LinkedList Falied");
+
+       _DataRowImpl::GetInstance(*pDataRow)->__pRowImplList = &__rowImplList;
 
-       __rowCount = __dataSet.GetCount();
+       __rowCount = __pDataSet->GetCount();
        //SysLog(NID_IO, "row count is %d", __rowCount);
 
        return pDataRow.release();
@@ -98,15 +119,22 @@ _DataSetImpl::CreateDataRowN(void)
 DataSetEnumerator*
 _DataSetImpl::GetDataSetEnumeratorN(void)
 {
+       result r;
+
        unique_ptr<DataSetEnumerator> pDataSetEnum(_DataSetEnumeratorImpl::CreateDataSetEnumeratorInstanceN());
 
-       _DataSetEnumeratorImpl::GetInstance(*pDataSetEnum)->__pDataSet = &__dataSet;
-       _DataSetEnumeratorImpl::GetInstance(*pDataSetEnum)->__pColumnList = &__columnList;
+       _DataSetEnumeratorImpl::GetInstance(*pDataSetEnum)->__pDataSet = __pDataSet;
+       _DataSetEnumeratorImpl::GetInstance(*pDataSetEnum)->__pColumnList = __pColumnList;
        _DataSetEnumeratorImpl::GetInstance(*pDataSetEnum)->__columnCount = __columnCount;
        _DataSetEnumeratorImpl::GetInstance(*pDataSetEnum)->__rowCount = __rowCount;
 
        //SysLog(NID_IO, "row count is %d, column count is %d", __rowCount, __columnCount);
 
+       r = __enumImplList.Add(_DataSetEnumeratorImpl::GetInstance(*pDataSetEnum));
+       SysTryReturn(NID_IO, r == E_SUCCESS, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Add to LinkedList Falied");
+
+       _DataSetEnumeratorImpl::GetInstance(*pDataSetEnum)->__pEnumImplList = &__enumImplList;
+
        return pDataSetEnum.release();
 }
 
@@ -114,26 +142,22 @@ DataSet*
 _DataSetImpl::CloneN(void) const
 {
        result r;
-       Integer* pColumnType = null;
 
        unique_ptr< DataSet > pDataSet(new (std::nothrow) DataSet());
        SysTryReturn(NID_IO, pDataSet != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
 
-       pDataSet->Construct(__columnList);
+       pDataSet->Construct(*__pColumnList);
 
        for (int i = 0; i < __columnCount; i++)
        {
-               pColumnType = static_cast<Integer*>(_DataSetImpl::GetInstance(*pDataSet)->__columnTypeList.GetAt(i));
-               r = _DataSetImpl::GetInstance(*pDataSet)->__columnTypeList.SetAt(new Integer(*(Integer*)__columnTypeList.GetAt(i)), i);
-               delete pColumnType;
-
+               r = _DataSetImpl::GetInstance(*pDataSet)->__pColumnTypeList->SetAt(new Integer(*(Integer*)__pColumnTypeList->GetAt(i)), i);
                SysTryReturn(NID_IO, r == E_SUCCESS, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] ColumnTypeList Copy Falied");
        }
 
        for (int i = 0; i < __rowCount; i++)
        {
                DataRow* pNewRow = pDataSet->CreateDataRowN();
-               r = _DataRowImpl::GetInstance(*pNewRow)->Clone((const ArrayList*)(__dataSet.GetAt(i)));
+               r = _DataRowImpl::GetInstance(*pNewRow)->Clone((const ArrayList*)(__pDataSet->GetAt(i)));
                delete pNewRow;
 
                SysTryReturn(NID_IO, r == E_SUCCESS, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] DataRow Clone Falied");
@@ -161,7 +185,7 @@ _DataSetImpl::GetHashCode(void) const
 
        for (int i = 0; i < __rowCount; i++)
        {
-               const ArrayList* pDataRowArrayList = static_cast<const ArrayList*>(__dataSet.GetAt(i));
+               const ArrayList* pDataRowArrayList = static_cast<const ArrayList*>(__pDataSet->GetAt(i));
                hash += _DataRowImpl::GetHashCode(pDataRowArrayList);
        }