import java.util.*;

public class ClubMembers
{
    private ArrayList<MemberInfo> memberList;
    
    public ClubMembers( )
    {
        memberList = new ArrayList<MemberInfo>();
    }
   
    public void addMembers( String[] names, int gradYear )
    {
        for( int i = 0; i < names.length; i++ )
        {
            memberList.add( new MemberInfo(names[i], gradYear, true) );
        }
    }   
   
    public void addMember( MemberInfo mem )
    {
        memberList.add( mem );
    }
   
    /* --------------------------------------------------
       Removal is tricky, because when you do

		arrayList.remove(i)

       A new arrayList element will be in spot i !!
       -------------------------------------------------- */
    public ArrayList<MemberInfo> removeMembers( int year )
    {
        ArrayList<MemberInfo> goodStanding = new ArrayList<MemberInfo>();

        int i = 0;

        while(i < memberList.size())  // Done when spot i does not exist
        {
	    /* ========================================
	       Test if member i has graduated
	       ======================================== */
            if( memberList.get(i).getGradYear() <= year )
            {
                MemberInfo removed = memberList.remove(i);  // Remove member

                if( removed.inGoodStanding() )
                    goodStanding.add(removed); // Add to return if good standing
            }
            else
            {
                i++;  // Keep this member (not graduated)
            }
        }

        return goodStanding;
    }
   
   public String toString()
   {
       return memberList.toString();
   }
}
