Index: src/libchcore/TFileFiltersArray.cpp =================================================================== diff -u -r960167a493c3ae7ecbdc7e8c2b91619106d7a685 -rb193a95402f2bf4c456fb9d65d111caaf6994823 --- src/libchcore/TFileFiltersArray.cpp (.../TFileFiltersArray.cpp) (revision 960167a493c3ae7ecbdc7e8c2b91619106d7a685) +++ src/libchcore/TFileFiltersArray.cpp (.../TFileFiltersArray.cpp) (revision b193a95402f2bf4c456fb9d65d111caaf6994823) @@ -26,6 +26,14 @@ BEGIN_CHCORE_NAMESPACE +TFileFiltersArray::TFileFiltersArray() +{ +} + +TFileFiltersArray::~TFileFiltersArray() +{ +} + TFileFiltersArray& TFileFiltersArray::operator=(const TFileFiltersArray& rSrc) { if(this != &rSrc) @@ -81,18 +89,6 @@ return true; } -void TFileFiltersArray::Serialize(TReadBinarySerializer& rSerializer) -{ - using Serializers::Serialize; - Serialize(rSerializer, m_vFilters); -} - -void TFileFiltersArray::Serialize(TWriteBinarySerializer& rSerializer) const -{ - using Serializers::Serialize; - Serialize(rSerializer, m_vFilters); -} - bool TFileFiltersArray::IsEmpty() const { return m_vFilters.empty(); @@ -109,7 +105,8 @@ if(stIndex < m_vFilters.size()) { TFileFilter& rFilter = m_vFilters.at(stIndex); - rFilter = rNewFilter; + + rFilter.SetData(rNewFilter); return true; } else @@ -130,6 +127,8 @@ BOOST_ASSERT(stIndex < m_vFilters.size()); if(stIndex < m_vFilters.size()) { + m_setRemovedObjects.Add(m_vFilters[stIndex].GetObjectID()); + m_vFilters.erase(m_vFilters.begin() + stIndex); return true; } @@ -144,7 +143,39 @@ void TFileFiltersArray::Clear() { + BOOST_FOREACH(const TFileFilter& rFilter, m_vFilters) + { + m_setRemovedObjects.Add(rFilter.GetObjectID()); + } m_vFilters.clear(); } +void TFileFiltersArray::Store(const ISerializerContainerPtr& spContainer) const +{ + spContainer->DeleteRows(m_setRemovedObjects); + + BOOST_FOREACH(const TFileFilter& rFilter, m_vFilters) + { + rFilter.Store(spContainer); + } +} + +void TFileFiltersArray::Load(const ISerializerContainerPtr& spContainer) +{ + IColumnsDefinitionPtr spColumns = spContainer->GetColumnsDefinition(); + if(spColumns->IsEmpty()) + TFileFilter::SetupLoader(spColumns); + + ISerializerRowReaderPtr spRowReader = spContainer->GetRowReader(); + while(spRowReader->Next()) + { + TFileFilter tFileFilter; + tFileFilter.Load(spRowReader); + + tFileFilter.ResetModifications(); + + m_vFilters.push_back(tFileFilter); + } +} + END_CHCORE_NAMESPACE