Index: src/libchcore/TBasePathData.cpp =================================================================== diff -u -N -r081055369d6b332ef1651877756657973b1b2d9c -rfc67a825635691930b3ac00dc95b16e59f3d2fae --- src/libchcore/TBasePathData.cpp (.../TBasePathData.cpp) (revision 081055369d6b332ef1651877756657973b1b2d9c) +++ src/libchcore/TBasePathData.cpp (.../TBasePathData.cpp) (revision fc67a825635691930b3ac00dc95b16e59f3d2fae) @@ -114,9 +114,12 @@ m_setModifications.reset(); } -void TBasePathData::InitLoader(IColumnsDefinition& rColumnDefs) +void TBasePathData::InitColumns(IColumnsDefinition& rColumns) { - rColumnDefs % _T("id") % _T("src_path") % _T("skip_processing") % _T("dst_path"); + rColumns.AddColumn(_T("id"), IColumnsDefinition::eType_long); + rColumns.AddColumn(_T("src_path"), IColumnsDefinition::eType_path); + rColumns.AddColumn(_T("skip_processing"), IColumnsDefinition::eType_bool); + rColumns.AddColumn(_T("dst_path"), IColumnsDefinition::eType_path); } void TBasePathData::Load(const ISerializerRowReaderPtr& spRowReader) @@ -169,6 +172,8 @@ boost::shared_lock lock(m_lock); + InitColumns(spContainer); + spContainer->DeleteRows(m_setRemovedObjects); m_setRemovedObjects.Clear(); @@ -187,10 +192,9 @@ m_setRemovedObjects.Clear(); m_vEntries.clear(); + InitColumns(spContainer); + ISerializerRowReaderPtr spRowReader = spContainer->GetRowReader(); - IColumnsDefinition& rColumns = spRowReader->GetColumnsDefinitions(); - if(rColumns.IsEmpty()) - TBasePathData::InitLoader(rColumns); while(spRowReader->Next()) { @@ -281,4 +285,11 @@ return *this; } +void TBasePathDataContainer::InitColumns(const ISerializerContainerPtr& spContainer) const +{ + IColumnsDefinition& rColumns = spContainer->GetColumnsDefinition(); + if(rColumns.IsEmpty()) + TBasePathData::InitColumns(rColumns); +} + END_CHCORE_NAMESPACE