LuciadCPillar 2023.1.04
luciad::IFeatureSaveSupport Class Referenceabstract

An implementation of this interface can be supplied to the FeatureModelPersistenceManager to enable support for saving in-memory changes. More...

#include <luciad/models/features/IFeatureSaveSupport.h>

Public Member Functions

virtual ~IFeatureSaveSupport ()=default
 
virtual void discardChanges ()=0
 Resets the unsaved (in-memory) changes of the IFeatureModel, returning the IFeatureModel's state back to that of its backend. More...
 
virtual std::vector< FeatureChangegetChanges () const =0
 Retrieves a list of all unsaved (in-memory) changes to the IFeatureModel. More...
 
virtual std::optional< FeatureSaveErrorInfosaveChanges ()=0
 Saves the in-memory changes of the IFeatureModel in the IFeatureModel's backend (for example a file or database). More...
 

Detailed Description

An implementation of this interface can be supplied to the FeatureModelPersistenceManager to enable support for saving in-memory changes.

See this article for more information.

Since
2023.1

Constructor & Destructor Documentation

◆ ~IFeatureSaveSupport()

virtual luciad::IFeatureSaveSupport::~IFeatureSaveSupport ( )
virtualdefault

Member Function Documentation

◆ discardChanges()

virtual void luciad::IFeatureSaveSupport::discardChanges ( )
pure virtual

Resets the unsaved (in-memory) changes of the IFeatureModel, returning the IFeatureModel's state back to that of its backend.

Since this changes the in-memory state of the IFeatureModel, the model's observers should be notified with a luciad::FeatureModelEvent containing feature changes that go from the current state to the backend's state.

◆ getChanges()

virtual std::vector< FeatureChange > luciad::IFeatureSaveSupport::getChanges ( ) const
pure virtual

Retrieves a list of all unsaved (in-memory) changes to the IFeatureModel.

That is, the changes that need to be saved to the IFeatureModel's backend to persist all in-memory changes.

There should only be one FeatureChange per FeatureId. If a feature has been updated multiple times, it should be condensed into a single FeatureChange. Note: If a feature has been deleted, and another feature with the same FeatureId was added, this condenses to a single update FeatureChange.

Returns
a list of all uncommitted changes to the IFeatureModel

◆ saveChanges()

virtual std::optional< FeatureSaveErrorInfo > luciad::IFeatureSaveSupport::saveChanges ( )
pure virtual

Saves the in-memory changes of the IFeatureModel in the IFeatureModel's backend (for example a file or database).

Typically, this method shouldn't modify the in-memory state of the model. So the feature model does not have to send out events through its observers. In some cases however (depending on the model/save implementation), feature changes can occur while changes are saved. In that case, the model's observers need to be notified of those changes.

Returns
std::nullopt on success, or error information on failure.