Quintiq file version 2.0 
 | 
#parent: #root 
 | 
MethodOverride Delete (Boolean isDatasetEvent_i) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    setTypeMeta   := this.SetTypeMeta(); 
 | 
    interestOwner := this.GetSystem(); 
 | 
     
 | 
    // SetType belongs to current System, there is no need to send a message to local System 
 | 
    if( interestOwner.IsLocalSystem() ) 
 | 
    { 
 | 
      // if this is the only dataset interest for this SetType, then can also remove the system level interest 
 | 
      if( not setTypeMeta.HasOtherOnlineDatasetInterest( this.DatasetMDSID() ) ) 
 | 
      {     
 | 
        // Get current System's System-level SetTypeInterest     
 | 
        setTypeInterestFromSystem := select( setTypeMeta, SetTypeInterestFromSystem, setTypeInterestFromSystem, 
 | 
                                             setTypeInterestFromSystem.SystemInterestedIn() = interestOwner ); 
 | 
     
 | 
        if( not isnull( setTypeInterestFromSystem ) ) 
 | 
        {  
 | 
          // Delete the SetInterest from System immediately  (as the 'approval' can be done locally) if there isn't dataset interest created manually in set level 
 | 
          // Because SetInterest created manually in Set level will not be deleted when we delete interest at SetType level 
 | 
          traverse( setTypeInterestFromSystem, SetInterestFromSystem, setInterestFromSystem, setInterestFromSystem.IsAllSetInterestOfDatasetCreatedFromSetTypeInterest() ) 
 | 
          { 
 | 
            setInterestFromSystem.Delete();  
 | 
          } 
 | 
           
 | 
          setTypeInterestFromSystem.Delete(); 
 | 
        }     
 | 
        else 
 | 
        { 
 | 
          LibDEF_Util::LogWarning( "SetTypeInterestFromSystem 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 setTypeMeta.HasOtherOnlineDatasetInterest( this.DatasetMDSID() ) ) 
 | 
      {  
 | 
        /// Send a 'SetTypeInterest-Deleted' message to the Set owner. 
 | 
        this.SetTypeMeta().System().SendMetadataRequestSetTypeInterestDeleted( this, isDatasetEvent_i ); 
 | 
      } 
 | 
    } 
 | 
     
 | 
    // Delete the SetTypeInterest, if applicable. 
 | 
    // When dataset is being unloaded, do not delete the dataset-level interest. 
 | 
    if( not isDatasetEvent_i ) 
 | 
    { 
 | 
      // Delete the SetInterests of the dataset that weren't created manually from Set-level (as the 'approval' can be done locally). 
 | 
      traverse( this, SetInterestOfDataset, setInterestOfDataset, setInterestOfDataset.IsCreatedFromSetTypeInterest() ) 
 | 
      { 
 | 
        setInterestOfDataset.Delete();         
 | 
      } 
 | 
       
 | 
      // Delete dataset-level SetTypeInterest. 
 | 
      this.Delete();     
 | 
    } 
 | 
  *] 
 | 
} 
 |