Quintiq file version 2.0
|
#parent: #root
|
MethodOverride Delete (Boolean isDatasetEvent_i)
|
{
|
Description:
|
[*
|
Delete the Dataset-level Set Interest, and in some condition the System-level Set Interest of the Set owner.
|
If the Set owner is local System, it is deleted immediately.
|
If the Set owner is another System, a request is sent to the System.
|
*]
|
TextBody:
|
[*
|
setMeta := this.SetMeta();
|
interestOwner := this.GetSystem();
|
|
// Set belongs to current System, there is no need to send a message to local System
|
if( interestOwner.IsLocalSystem() )
|
{
|
if( not setMeta.HasOtherOnlineDatasetInterest( this.DatasetMDSID() ) )
|
{
|
// Get current System's System-level SetInterest
|
systemInterest := select( interestOwner, SystemInterestedIn, systemInt, systemInt.SystemInterestedIn() = interestOwner );
|
|
if( not isnull( systemInterest ) )
|
{
|
// Intentionally put in inner if-statement, so the warning message below is added correctly
|
if( not this.SetMeta().SetTypeMeta().IsInterestedByDataset( this.DatasetMDSID() ) )
|
{
|
systemInterest.Delete();
|
}
|
}
|
else
|
{
|
LibDEF_Util::LogWarning( "SetInterestFromSystem for System '" + interestOwner.GUID() + "' is not found." );
|
}
|
}
|
}
|
else // Set belongs to another System, we need to send a message to the other System.
|
{
|
if( not setMeta.HasOtherOnlineDatasetInterest( this.DatasetMDSID() ) )
|
{
|
// Send a 'SetInterest-Deleted' message to the Set owner.
|
this.GetSystem().SendMetadataRequestSetInterestDeleted( this, isDatasetEvent_i );
|
}
|
}
|
|
// Delete the SetInterest, if applicable.
|
// When dataset is being unloaded, do not delete the dataset-level interest.
|
if( not isDatasetEvent_i )
|
{
|
// Mark the SetInterest's IsCreatedFromSetType to true if there is a dataset interest in SetType level.
|
if( this.SetMeta().SetTypeMeta().IsInterestedByDataset( this.DatasetMDSID() ) )
|
{
|
this.IsCreatedFromSetTypeInterest( true );
|
}
|
else
|
{
|
// Delete the dataset-level SetInterest immediately (as the 'approval' can be done locally).
|
this.Delete();
|
}
|
}
|
*]
|
}
|