import java.io.*;

public class StudentReader
{
  private Student[] roster;
  
  public StudentReader( String filename )
  {
    roster = readFile( filename );
  }
  
  public Student[] getRoster()
  {
    return roster;
  }
  
  private Student[] readFile( String filename )
  {
    Student[] result = new Student[50];     // I picked this number to be safe, but...
    int       count  = 0;
    String    line   = null;
    
    try {
      BufferedReader source = new BufferedReader( new FileReader(filename) );
      line = source.readLine();            // ignore the header line
        
      while ( true )
      {
        line = source.readLine();
        if ( line == null )
          break;
        
        result[count] = new Student( line );
        count++;
        if ( count >= 50 )                          // added to ensure we do
          break;                                    // not overflow our array
      }
      
      source.close();
    }
    catch (IOException e) {
      System.out.println( "An error occurred reading the file " + filename );
      return null;
    }
    
    if ( count < 50 )                               // added to ensure we do
      return trimStudentArray( result, count );     // not return empty slots
    return result;
  }
  
  private Student[] trimStudentArray( Student[] bigArray, int actualSize )
  {
    Student[] result = new Student[actualSize];
    
    for ( int i = 0; i < actualSize; i++ )
    {
      result[i] = bigArray[i];
    }
    
    return result;
  }
}