Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method SyncSetMeta (NamedValueTree nvt_i, NamedValue body_i, LibDEF_IntegrationEvent event_i) 
 | 
{ 
 | 
  Description: 'Synchronize SetType from NVT.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Jacky CHAN May-16-2016 (created) 
 | 
     
 | 
    traverse( body_i.Children(), Elements, setMeta, 
 | 
              setMeta.Name() = typeof( LibDEF_SetMeta ).Name() ) 
 | 
    { 
 | 
      syncSM := NamedValueTreeIO::ImportObject( nvt_i, setMeta, typeof( LibDEF_SetMeta ) ).astype( LibDEF_SetMeta ); 
 | 
     
 | 
      // find if already exists 
 | 
      dataBroker := this.DataBroker(); 
 | 
      matchedSM  := LibDEF_SetMeta::FindSetMeta( dataBroker, this.GUID(), syncSM.ChannelName(), syncSM.SetTypeName(), syncSM.Name() ); 
 | 
     
 | 
      // check the GUID 
 | 
      if( not isnull( matchedSM ) and 
 | 
          matchedSM.GUID() <> syncSM.GUID() ) 
 | 
      { 
 | 
        matchedSM.Delete(); 
 | 
        matchedSM := null( LibDEF_SetMeta ); 
 | 
      } 
 | 
     
 | 
      if( isnull( matchedSM ) ) 
 | 
      { 
 | 
        setTypeMeta := LibDEF_SetTypeMeta::FindSetTypeMeta( dataBroker, this.GUID(), 
 | 
                                                            syncSM.ChannelName(), syncSM.SetTypeName() ); 
 | 
     
 | 
        if( isnull( setTypeMeta ) ) 
 | 
        { 
 | 
          LibDEF_Util::EventLogError( event_i, 
 | 
                                      "Failed to synchronize SetMeta", 
 | 
                                      "Error synchronizing SetMeta, SetTypeMeta " + 
 | 
                                      LibDEF_SetTypeMeta::GetInstanceKeyAsString( this.GUID(), syncSM.ChannelName(), syncSM.SetTypeName() ) + 
 | 
                                      " cannot be found." ); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
          matchedSM := LibDEF_SetMeta::Create( setTypeMeta, 
 | 
                                               syncSM.Name(), 
 | 
                                               syncSM.GUID() ); 
 | 
        } 
 | 
      } 
 | 
     
 | 
      matchedSM.IsSoftDeleted( false );   
 | 
     
 | 
      // update other attributes 
 | 
      matchedSM.Update( syncSM.LastUpdated() ); 
 | 
       
 | 
      // create set interest of dataset(s) (if there is already dataset interest in set type level) 
 | 
      matchedSM.SetTypeMeta().CreateSetInterestOfDatasets( matchedSM ); 
 | 
    } 
 | 
  *] 
 | 
} 
 |