| 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();     | 
|     } | 
|   *] | 
| } |