| Quintiq file version 2.0 | 
| #parent: #root | 
| Method SynchronizeSolverSettingGroups | 
| { | 
|   Description: 'Updates the SolverSettingsGroup and SolverSettings instances with info from the SolverSettings KT.' | 
|   TextBody: | 
|   [* | 
|     // Martijn van Elzakker Jul-21-2015 (created) | 
|     // This method first flags all current solversettinggroups as not being part of the KT | 
|     // Then it traverses the KT and checks if there exists a solversettinggroup with the same name as the KT name | 
|     // if there does not, it creates a new SolverSettingGroup | 
|     // if there does, it updates the SolverSettingGroup | 
|     // In any case, it flags the current SolverSettingGroup as being part of the KT | 
|     // At the end, the method deletes all SolverSettingGroup that are still flagged as not part of the KT and it synchronizes the SolverSetting | 
|      | 
|     traverse( this, SolverSettingGroup, solversettinggroup ) | 
|     { | 
|       solversettinggroup.IsInKnowledgeTable( false ); | 
|     } | 
|      | 
|     solversettingstable := SolverSettingsTable::Table(); | 
|      | 
|     traverse( solversettingstable, Rows, row ) | 
|     { | 
|       group := select( this, | 
|                        SolverSettingGroup, | 
|                        solversettinggroup, | 
|                        solversettinggroup.Name() = row.Name() ); | 
|      | 
|       if( isnull( group ) ) | 
|       { | 
|         group := SolverSettingGroup::Create( this, row.Name() ); | 
|       } | 
|       else | 
|       { | 
|         group.Update( row.Name() ); | 
|       } | 
|       group.IsInKnowledgeTable( true ); | 
|     } | 
|      | 
|     traverse( this, SolverSettingGroup, solversettinggroup, not solversettinggroup.IsInKnowledgeTable() ) | 
|     { | 
|       solversettinggroup.Delete() | 
|     } | 
|      | 
|      this.SynchronizeSolverSettings(); | 
|   *] | 
| } |