Index: src/libchcore/TTaskInfo.cpp =================================================================== diff -u -N -r081055369d6b332ef1651877756657973b1b2d9c -rfc67a825635691930b3ac00dc95b16e59f3d2fae --- src/libchcore/TTaskInfo.cpp (.../TTaskInfo.cpp) (revision 081055369d6b332ef1651877756657973b1b2d9c) +++ src/libchcore/TTaskInfo.cpp (.../TTaskInfo.cpp) (revision fc67a825635691930b3ac00dc95b16e59f3d2fae) @@ -102,9 +102,11 @@ m_setModifications.reset(); } -void TTaskInfoEntry::InitLoader(IColumnsDefinition& rColumnDefs) +void TTaskInfoEntry::InitColumns(IColumnsDefinition& rColumnDefs) { - rColumnDefs % _T("id") % _T("path") % _T("task_order"); + rColumnDefs.AddColumn(_T("id"), IColumnsDefinition::eType_sizet); + rColumnDefs.AddColumn(_T("path"), IColumnsDefinition::eType_path); + rColumnDefs.AddColumn(_T("task_order"), IColumnsDefinition::eType_int); } size_t TTaskInfoEntry::GetObjectID() const @@ -201,6 +203,8 @@ void TTaskInfoContainer::Store(const ISerializerContainerPtr& spContainer) const { + InitColumns(spContainer); + spContainer->DeleteRows(m_setRemovedTasks); m_setRemovedTasks.Clear(); @@ -212,10 +216,9 @@ void TTaskInfoContainer::Load(const ISerializerContainerPtr& spContainer) { + InitColumns(spContainer); + ISerializerRowReaderPtr spRowReader = spContainer->GetRowReader(); - IColumnsDefinition& rColumns = spRowReader->GetColumnsDefinitions(); - if(rColumns.IsEmpty()) - TTaskInfoEntry::InitLoader(rColumns); TTaskInfoEntry tEntry; while(spRowReader->Next()) @@ -238,4 +241,11 @@ THROW_CORE_EXCEPTION(eErr_InvalidArgument); } +void TTaskInfoContainer::InitColumns(const ISerializerContainerPtr& spContainer) const +{ + IColumnsDefinition& rColumns = spContainer->GetColumnsDefinition(); + if(rColumns.IsEmpty()) + TTaskInfoEntry::InitColumns(rColumns); +} + END_CHCORE_NAMESPACE