} // public string Data /// <summary> /// This method implements IComparable for TestItemSortByString objects. /// </summary> /// <param name="pComparand"> /// The other TestItemSortByString against which to compare this one. /// </param> /// <returns> /// The return value is specified in the IComparable interface, as it is /// implemented by the string class, which carries it out on behalf of /// objects of this class. /// </returns> public int CompareTo ( object pComparand ) { if ( pComparand.GetType ( ) == this.GetType ( ) ) { TestItemSortByString tiComparand = ( TestItemSortByString ) pComparand; return _lngKey.CompareTo ( tiComparand.Key ); } // TRUE (normal) block, if ( pComparand.GetType ( ) == this.GetType ( ) ) else { throw new ArgumentException ( Properties.Resources.IDS_COMPARETO_MISMATCH ); } // FALSE (exception) block, if ( pComparand.GetType ( ) == this.GetType ( ) ) } // public int CompareTo (implements IComparable)
} //private string [ ] LoadInputList private static TestItemSortByString [ ] LoadList ( string [ ] pastrInputList ) { const long KEY_FIELD = ArrayInfo.ARRAY_FIRST_ELEMENT; const long VALUE_FIELD = KEY_FIELD + ArrayInfo.NEXT_INDEX; const long EXPECTED_FIELD_COUNT = VALUE_FIELD + ArrayInfo.NEXT_INDEX; // On entry, pastrMasterFile is known to be populated. long lngLastItem = pastrInputList.LongLength + ArrayInfo.INDEX_FROM_ORDINAL; long lngKey = KEY_FIELD; // ---------------------------------------------------------------- // Since the label row is separated from the data, the array that // stores the data needs one fewer elements than are in the input // array. Moreover, the code in the ELSE block of the outermost of // the IF blocks within the following FOR loop must adjust the // subscript into which it inserts each element down by one, to // account for the discarded label. // ---------------------------------------------------------------- TestItemSortByString [ ] ratiItems = new TestItemSortByString [ lngLastItem ]; for ( long lngCurrentItem = ArrayInfo.ARRAY_FIRST_ELEMENT ; lngCurrentItem <= lngLastItem ; lngCurrentItem++ ) { string [ ] astrFields = pastrInputList [ lngCurrentItem ].Split ( new char [ ] { SpecialCharacters.TAB_CHAR } ); if ( lngCurrentItem == ArrayInfo.ARRAY_FIRST_ELEMENT ) { // The first element contains labels. if ( s_Labels == null ) { // Save to compare against the next list. if ( astrFields.Length == EXPECTED_FIELD_COUNT ) { // Label appears to be OK. s_Labels = pastrInputList [ lngCurrentItem ]; } // TRUE (normal) block, if ( astrTest.Length == EXPECTED_FIELD_COUNT ) else { // Compose a message and throw an exception. string strMsg = string.Format ( Properties.Resources.IDS_BAD_MASTER_LABEL_ROW , new object [ ] { EXPECTED_FIELD_COUNT , astrFields.Length , pastrInputList [ lngCurrentItem ] , Environment.NewLine } ); throw new Exception ( strMsg ); } // FALSE (exception) block, if ( astrTest.Length == EXPECTED_FIELD_COUNT ) } // TRUE (first time) block, if ( s_Labels == null ) else { // Both must match, or we die. if ( pastrInputList [ lngCurrentItem ] != s_Labels ) { // Compose a message and throw an exception. string strMsg = string.Format ( Properties.Resources.IDS_INCONSISTENT_INPUTS , s_Labels , pastrInputList [ lngCurrentItem ] , Environment.NewLine ); throw new Exception ( strMsg ); } // if ( pastrInputList [ lngCurrentItem ] != s_Labels ) } // FALSE (subsequent calls) block, if ( s_Labels == null ) } // TRUE (one-off) block, if ( lngCurrentItem == ArrayInfo.ARRAY_FIRST_ELEMENT ) else { if ( long.TryParse ( astrFields [ KEY_FIELD ] , out lngKey ) ) { ratiItems [ lngCurrentItem + ArrayInfo.INDEX_FROM_ORDINAL ] = new TestItemSortByString ( lngKey , astrFields [ VALUE_FIELD ] ); } // TRUE (normal) block, if ( long.TryParse ( astrFields [ KEY_FIELD ] , out lngKey ) ) else { string strMsg = string.Format ( Properties.Resources.IDS_INVALID_KEY , astrFields [ KEY_FIELD ] , pastrInputList [ lngCurrentItem ] ); throw new Exception ( strMsg ); } // FALSE (exception) block, if ( long.TryParse ( astrFields [ KEY_FIELD ] , out lngKey ) ) } // FALSE block, if ( lngCurrentItem == ArrayInfo.ARRAY_FIRST_ELEMENT ) } // for ( long lngCurrentItem = ArrayInfo.ARRAY_FIRST_ELEMENT ; lngCurrentItem <= lngLastItem ; lngCurrentItem++ ) return ratiItems; } // private static TestItemSortByString [ ] LoadList