<HTML><HEAD><link type="text/css" href="../css/main_styles.css" rel="stylesheet"></HEAD>
<BODY><TITLE>%mqc_check_preferences</TITLE><H1>%mqc_check_preferences  </H1><P CLASS="Paragraph">Classname: <B>%mqc_check_preferences  </B></P><P CLASS="Paragraph">Inherits from: <B><A href=..\checkmate\xug_base_checker.html>%ug_base_checker </A></B></P><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"> </PRE><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">
<B>Description:</B>
    Verifies that the customer defaults are set properly according to the user default
    specified in the user defined XML file.
Parameters:
    ( String ) user_preferences_file - The full file path of customer default file name for
                                       User Level.
                                       Default is "".
    ( String ) group_preferences_file - The full file path of customer default file name for
                                       Group Level.
                                       Default is "".
    ( String ) Site_preferences_file - The full file path of customer default file name for
                                       Site Level.
                                       Default is "".
    ( Name )   log_type         - Log type. Can be: LOG_ERROR/LOG_WARNING/LOG_INFO
                                  Default is LOG_ERROR.
    ( String ) log_msg          - User logging message.
                                  Default is "".
Return Values:
   Warning: Not found the preferences file or not get preference setting.
   Pass:    The customer defaults setting are proper.
   Failed:  The customer defaults setting are not proper.
</PRE><PRE><FONT COLOR= blue>DefClass: %mqc_check_preferences ( %ug_base_checker );
</FONT></PRE><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  General attrbutes and parameters</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )            %test_category:        "Template.Preferences";
   ( String )            %displayed_name:       "Check Preferences";

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( Boolean Parameter ) Disabled?:             False;
   ( Boolean Parameter ) save_log_in_part:      True;
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  Parameters for this class</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )            user_preferences_file_file:    "";
   ( String )            user_preferences_file_label:   "User Preferences File";
   
</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )            group_preferences_file_file:   "";
   ( String )            group_preferences_file_label:  "Group Preferences File";
   
</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )            site_preferences_file_file:    "";
   ( String )            site_preferences_file_label:   "Site Preferences File";

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( List )              log_type_option:       {LOG_ERROR, LOG_WARNING, LOG_INFO};
   ( String )            log_type_label:        "Log Option";

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String Parameter )  user_preferences_file:         "";
   ( String Parameter )  group_preferences_file:        "";
   ( String Parameter )  site_preferences_file:         "";
   ( Name Parameter )    log_type:              LOG_ERROR;
   ( String Parameter )  log_msg:               "";
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  Temporary Attributes</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )            log_msg_label:         "Log Message";
   

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( Boolean )           drf_pref_file_exist:   If ( access( user_preferences_file:, exists ) |
                                                     access( group_preferences_file:, exists ) |
                                                     access( site_preferences_file:, exists ) )
                                                Then True
                                                Else False;

   ( List )              user_company_standard:  mqc_askPreferencesFromXML( user_preferences_file: );
   
   ( List )              group_company_standard: mqc_askPreferencesFromXML( group_preferences_file: );
   
   ( List )              site_company_standard:  mqc_askPreferencesFromXML( site_preferences_file: );
 
   ( List )              all_company_standard:   site_company_standard: + get_other_company_standard:();

   ( List )              usr_preferences:       mqc_askPreferences( all_company_standard: );

   ( List )              different_preferences: get_different_preferences:();


</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  Attribute of checking entry</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( Any Uncached )      do_check:
   @{
        If ( !drf_pref_file_exist: )
        Then #File not exist, skip checking
        @{
            ug_mqc_log( LOG_WARNING, {}, "Not found the preferences file." );
        }
        Else If ( Empty?( all_company_standard: ) )
        Then #Not get preference setting, skip checking
        @{
            ug_mqc_log( LOG_WARNING, {}, "No customer preferences in the specified preferences file." );
        }
        Else If( Length( different_preferences: ) = 0 )
        Then #All preferences have the same values, check pass
        @{
            ug_mqc_lprintf({"The customer defaults settings are proper."});
        }
        Else Loop #Failed, Generate Log one by one
        {
            #Log user defined message first.
            With $log_usr_msg Is 
               If ( log_msg: = "" ) Then Donothing 
               Else ug_mqc_log( log_type:, {}, log_msg: );

            #Log other messages one by one.
            For $each In different_preferences:; 
                     
            Do If ( Second($each) = "NO EXIST" )
               Then #Not found this preference, Log Error
               @{
                    $detail_msg << "Given " 
                                   + Stringvalue( First($each) ) 
                                   + " name or value is incorrect.~n";

                    ug_mqc_log( LOG_ERROR, {}, $detail_msg );
               }
               Else #Found different value of user preference and company standard, 
               @{   #log according to log_type
                    $detail_msg << "Found " + Stringvalue( First($each) ) 
                                   + " value is: "
                                   + Stringvalue( Second($each) ) 
                                   + " not as required value: " 
                                   + Stringvalue( Third($each) ) 
                                   + ".";

                    ug_mqc_log( log_type:, {}, $detail_msg );
               };
        };                                    
    };


</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>( Method Any ) get_other_company_standard:()
@{                             
    $other_group_stan << 
        If ( !Empty?( group_company_standard: ) )
         Then Loop
         {
             For $group_stan  In  group_company_standard:; 	        
             If ( Find( First( $group_stan ), site_company_standard:, key, first ) = novalue )
             Collect  $group_stan;
         }  
         Else
             {};
                                
    If ( !Empty?( user_company_standard: ) )
    Then
    @{                            
        $other_user_stan << 
            Loop
            {
                For $user_stan  In  user_company_standard:;     	        
                If ( Find( First( $user_stan ), site_company_standard: + $other_group_stan, key, first ) = novalue )
                Collect  $user_stan;
            };
        $other_group_stan + $other_user_stan ;
     }
     Else
        $other_group_stan;
    
};

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>( Method Any ) get_different_preferences:()
@{
    Loop
    {
        For $usr_pref  In  usr_preferences:; 
        For $cmp_pref  In  all_company_standard:;
        
        For $pref_values_pairs  Is compare_preference_value:( $usr_pref, $cmp_pref );

        If ( !Empty?( $pref_values_pairs ) ) 
        Collect $pref_values_pairs;
    };  
};

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>( Method Any ) compare_preference_value:( List $user_pref, List $cmp_pref )
@{
    $pref_name     << First ( $user_pref );
    $pref_type     << Second( $user_pref );
    $usr_value_str << Third ( $user_pref );
    $cmp_value_str << Third ( $cmp_pref  );

    #Deal with the proto user preference value string and company standard value string.
    $usr_value << If ( equal($pref_type, "string_list") )
                  Then mqc_convertListToString(Sort($usr_value_str, Ascending), "\")
                  Else $usr_value_str;
                         
    $cmp_value << If ( equal($pref_type, "string_list") )
                  Then
                  @{
                      $split_to_list << SplitString(replaceString($cmp_value_str,"~"",""),"\");
                      mqc_convertListToString(Sort($split_to_list, Ascending), "\");
                  }
                  Else $cmp_value_str;

    #Get preference name and the different values.
    #If the user preference value equals to the company standard value, return empty list.
    If ( (equal ($pref_type, "NO EXIST")) |
         (Member($pref_type, {"int", "real"}) & (!equal_number:($usr_value, $cmp_value))) |
         (equal ($pref_type, "string_list" )  & (!equal        ($usr_value, $cmp_value))) |
         (equal ($pref_type, "string"      )  & (!equal        ($usr_value, $cmp_value))) )
    Then 
        { $pref_name, $usr_value, $cmp_value }
    Else 
        {};
};

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>(Method Any) equal_number:( String $first_number, String $second_number )
@{
     ug_rexp_match( $first_number ,  "[+-]{0,1}[0-9.]{1,}" ) 
   & ug_rexp_match( $second_number,  "[+-]{0,1}[0-9.]{1,}" ) 
   & equal( makenumber($first_number), makenumber($second_number) );
};

</SPAN></FONT></PRE></DIV></TABLE><p class=EndLine>&nbsp;</p><p class=blank>&nbsp;</p></BODY></HTML>