Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method SynchronizeSolverSettings 
 | 
{ 
 | 
  Description: 'Synchronizes the SolverSetting of all SolverSettingGroup based on the KT' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Martijn van Elzakker Jul-21-2015 (created) 
 | 
    // Sets all current solversettings to not be in the KT 
 | 
    // then it traverses the KT and for each SolverSettingGroup it checks if a solversetting with the ParameterNumber from the KT exists 
 | 
    // if it does not, it creates a new SolverSetting 
 | 
    // if it does exist, it updates that solversetting 
 | 
    // in both cases it flags the solversetting as being part of the KT 
 | 
    // at the end of the method all solversetting that are still flagged as not part of the KT are deleted 
 | 
     
 | 
    traverse( this, SolverSettingGroup.SolverSetting, solversetting ) 
 | 
    { 
 | 
      solversetting.IsInKnowledgeTable( false ); 
 | 
    } 
 | 
     
 | 
    solversettingstable := SolverSettingsTable::Table(); 
 | 
     
 | 
    traverse( solversettingstable, Rows, row ) 
 | 
    { 
 | 
      owner := select( this, 
 | 
                       SolverSettingGroup, 
 | 
                       solversettinggroup, 
 | 
                       solversettinggroup.Name() = row.Name() ); 
 | 
     
 | 
      if( not isnull( owner ) ) 
 | 
      { 
 | 
        setting := select( owner, 
 | 
                           SolverSetting, 
 | 
                           solversetting, 
 | 
                           solversetting.ParameterNumber() = row.ParameterNumber() ); 
 | 
     
 | 
        if( isnull( setting ) ) 
 | 
        { 
 | 
          setting := SolverSetting::Create( owner, row.ParameterNumber(), row.ParameterValue(), row.IsNumberParameter(), row.Notes() ); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
          setting.Update( row.ParameterNumber(), row.ParameterValue(), row.IsNumberParameter(), row.Notes() ); 
 | 
        } 
 | 
        setting.IsInKnowledgeTable( true ); 
 | 
      } 
 | 
    } 
 | 
     
 | 
    traverse( this, SolverSettingGroup.SolverSetting, solversetting, not solversetting.IsInKnowledgeTable() ) 
 | 
    { 
 | 
      solversetting.Delete() 
 | 
    } 
 | 
  *] 
 | 
} 
 |