| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetSet (String datasetKind_i, String datasetName_i, String setTypeName_i,  | 
|   String setName_i, Boolean setFoundRequired_i) as LibDMF_Set | 
| { | 
|   Description: | 
|   [* | 
|     Retrieve the Set based on dataset kind, dataset name, settype name and set name | 
|     The flag setFoundRequired_i is used to determine if the transaction will fail when no set can be found. | 
|   *] | 
|   TextBody: | 
|   [* | 
|     set := null( LibDMF_Set ); | 
|     channelRoot := this.CommunicationChannelRoot(); | 
|      | 
|     if( channelRoot.IsDataManager() ) | 
|     { | 
|       setType := this.GetSetType( datasetKind_i, datasetName_i, setTypeName_i ); | 
|      | 
|       if( not isnull( setType ) ) | 
|       { | 
|         set := LibDMF_Set::FindSet( setName_i ); | 
|      | 
|         // Retrieve IntegrationEvent. | 
|         event := channelRoot.EventGetLast( datasetKind_i, datasetName_i ); | 
|         systemOnChannel := this.GetSystemOnChannel( datasetKind_i, datasetName_i ); | 
|      | 
|         // for error checking | 
|         if( isnull( set ) ) | 
|         { | 
|           logerror := "Set '" + setName_i + "' not found; Channel = " + this.Name() + ", QProduct = " + systemOnChannel.QProductName() + ", System = " + systemOnChannel.SystemName() + ", SetType = " + setTypeName_i; | 
|      | 
|           // log the event as failed if the set must be found | 
|           if( setFoundRequired_i ) | 
|           { | 
|             channelRoot.EventLogActivityError( event, | 
|                                                "Set '" + setName_i + "' not found", | 
|                                                logerror ); | 
|           } | 
|         } | 
|         else | 
|         { | 
|           // checks if the set type belongs to the set type | 
|           if( not set.SetType() = setType) | 
|           { | 
|             // reset to null | 
|             set := null( LibDMF_Set ); | 
|      | 
|             logerror := "Set '" + setName_i + "' not owned by Set Type " + setTypeName_i + "; Channel = " + this.Name() + ", QProduct = " + systemOnChannel.QProductName() + ", System = " + systemOnChannel.SystemName(); | 
|      | 
|             // log the event as failed if the set must be found | 
|             if( setFoundRequired_i ) | 
|             { | 
|               channelRoot.EventLogActivityError( event, | 
|                                                  "Set '" + setName_i + "' not owned by Set Type " + setTypeName_i, | 
|                                                  logerror ); | 
|             } | 
|             else | 
|             { | 
|               // log warning | 
|               channelRoot.EventLogActivityWarning( event, | 
|                                                    logerror ); | 
|             } | 
|           } | 
|         } | 
|       } | 
|     } | 
|      | 
|     return set; | 
|   *] | 
| } |