Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod ValidateInput ( 
 | 
  output String feedback_o, 
 | 
  MacroPlan owner_i, 
 | 
  OptimizerPuzzleWIP optimizerpuzzlewip_i, 
 | 
  String optimizerpuzzlename_i 
 | 
) declarative remote as Boolean 
 | 
{ 
 | 
  Description: 
 | 
  [* 
 | 
    Verify if optimizer puzzle is valid 
 | 
    - empty name 
 | 
    - unique name 
 | 
  *] 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Check if the values commited are valid 
 | 
    feedback_o := ''; 
 | 
     
 | 
    // Check if name is empty 
 | 
    // First check for performance reason 
 | 
    if( optimizerpuzzlename_i = '' ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_OptimizerPuzzle_ValidateInput_IsNameEmpty();  
 | 
    } 
 | 
    // Check if opimizer is World 
 | 
    else if( optimizerpuzzlewip_i.IsWorld() ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_OptimizerPuzzleBase_CannotEditWorld();  
 | 
    } 
 | 
     
 | 
    // Check if name is unique 
 | 
    else if( exists( owner_i, 
 | 
                     OptimizerPuzzle, 
 | 
                     op, 
 | 
                     optimizerpuzzlewip_i.CreateAsNew() or         // CreateAsNew = copy (versus edit), we always want consider all puzzle for name unique check 
 | 
                     op <> optimizerpuzzlewip_i.OptimizerPuzzle(), // not preventing user from editing and keeping the same name 
 | 
                     op.Name() = optimizerpuzzlename_i ) ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_OptimizerPuzzle_ValidateInput_IsNameUnique(); 
 | 
    } 
 | 
         
 | 
    return feedback_o = ''; 
 | 
  *] 
 | 
} 
 |