import java.io.*;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.*;

public class musicTable
{
static int x=0, y=0, numberOfSongs = 0;
static String sname, aname, cdname;
static int stime, track;
	
public static void main(String[] args)
   {
   String lineOfText;
   File songList = new File("songs.txt");
   
// get number of songs
   try
	  { 
	  BufferedReader fileInput = new BufferedReader(new FileReader(songList));
	  x = 0;		
	  while (fileInput.ready() == true)
	     {
		 lineOfText = fileInput.readLine( );
		 x++;
		 numberOfSongs = x;
		 }  
	  numberOfSongs = numberOfSongs / 5;
	  fileInput.close( );
	  }
   catch(IOException e)
	  {
	  System.out.println("Problem reading from songs.txt");
	  System.exit(0);
	  }

   // note: no array of musicRecords
   TreeMap musicTable = new TreeMap();
   String sortedSongs[] = new String[ numberOfSongs ];
   String sortedArtists[] = new String[ numberOfSongs ];

// get song info	 
   try
	  { 
	  BufferedReader fileInput = new BufferedReader(new FileReader(songList));
      for (x=0; x< numberOfSongs; x++) 
	     {
		 sname = fileInput.readLine( );
		 aname = fileInput.readLine( );
		 cdname = fileInput.readLine( );

		 StringTokenizer tokens = new StringTokenizer( fileInput.readLine() ); 
		 stime = Integer.parseInt( tokens.nextToken() );
		 track = Integer.parseInt( tokens.nextToken() );
		 
		 fileInput.readLine( ); // blank line 
		 
         musicRecord tempRecord = new musicRecord(sname, aname, cdname, stime, track);
		 musicTable.put( sname, tempRecord );
		
		 sortedSongs[ x ] = sname;
		 sortedArtists[ x ] = aname;
		 }		 	 
	  fileInput.close( );
	  }
   catch(IOException e)
	  {
	  System.out.println("Problem reading from songs.txt");
	  System.exit(0);
	  }

   // print sorted database
   Arrays.sort( sortedSongs );
   Arrays.sort( sortedArtists );

   // sort
   musicRecord myRecord;
   System.out.println("**********");   
   for (x=0; x<numberOfSongs; x++)
	  {
	   myRecord = (musicRecord) musicTable.get( sortedSongs[x] );
	   myRecord.printRecord();
	  } 
   System.out.println("**********"); 

/*
   Map.Entry entry;   // a tracker
   Iterator itr = myTable.entrySet().iterator();
   while (  itr.hasNext() )
      {
	   entry = (Map.Entry) itr.next();
	   myRecord =  (musicRecord) myTable.get(  entry.getKey() );
	   System.out.println( myRecord.getArtist() );
      }
*/
   } // end main
   
} // end class

