package kerho;
import java.util.*;

/**
 * Kerho-luokka, joka huolehtii jäsenistöstä.  Pääosin kaikki metodit
 * ovat vain "välittäjämetodeja" jäsenistöön tai harrastuksiin.
 *
 * @author Vesa Lappalainen
 * @version 1.0, 09.02.2003
 * @version 1.1, 23.02.2003
 * @version 1.2, 20.03.2003
 */
public class Kerho {

  private Jasenet jasenet = new Jasenet();
  private Harrastukset harrastukset = new Harrastukset();

  public String getNimi() { return jasenet.getKoko_nimi(); }
  public int getJasenia() { return jasenet.getLkm();       }

  /**
   * Poistaa jäsenistöstä ja harrasteista ne joilla on valittu id. Kesken.
   * @param id viitenumero, jonka mukaan poistetaan
   * @return montako jäsentä poistettiin
   */
  public int poista(int id)              { return 0;                          }

//  public boolean TeeBak(String bak_tark) { return jasenet.TeeBak(bak_tark);   }
  public String getTiedoston_nimi()      { return jasenet.getTiedoston_nimi();}
  public String getBak_nimi()            { return jasenet.getBak_nimi();      }
  public void lisaa(Jasen jasen) throws SailoException
                                         { jasenet.lisaa(jasen);              }
  public void korvaa(Jasen jasen) throws SailoException
                                         { jasenet.korvaa(jasen);             }
  public void lisaa(Harrastus har)       { harrastukset.lisaa(har);           }

//  public Jasen anna_jasen(int i) throws SailoException
//                                         { return jasenet.anna(i);            }
  public Iterator jasen_iterator()         { return jasenet.iterator();       }
  public Iterator harrastus_iterator()     { return harrastukset.iterator();  }
  public Iterator harrastus_iterator(int jid) { return harrastukset.iterator(jid);}


  public void lue_tiedostosta(String nimi) throws SailoException {
    jasenet.lue_tiedostosta(nimi);
    harrastukset.lue_tiedostosta(nimi);
  }

  public void talleta() throws SailoException {
    String virhe = "";
    try {
      jasenet.talleta();
    } catch ( SailoException ex ) {
      virhe = ex.getMessage();
    }

    try {
      harrastukset.talleta();
    } catch ( SailoException ex ) {
      virhe += ex.getMessage();
    }
    if ( !virhe.equals("") ) throw new SailoException(virhe);
  }

  public List etsi(int k, String hakuehto) {
    return jasenet.etsi(k,hakuehto);
  }

  /**
   * Etsii jäsenen id:n perusteella
   * @param id tunnusnumero, jonka mukaan etsitään
   * @return jäsen jolla etsittävä id tai null
   */
  public Jasen annaJasenId(int id) {
    return jasenet.annaId(id);
  }


  public static void main(String args[]) {
    Kerho kerho = new Kerho();

    try {
      kerho.lue_tiedostosta("kelmit");
    } catch ( SailoException ex ) {
      System.out.println(ex.getMessage());
    }

    try {
      Jasen aku = new Jasen(), aku2 = new Jasen();
      aku.rekisteroi();    aku.vastaa_aku_ankka();
      aku2.rekisteroi();   aku2.vastaa_aku_ankka();

      kerho.lisaa(aku);
      kerho.lisaa(aku2);

      System.out.println("============= Kerhon testi =================");

      for (Iterator i=kerho.jasen_iterator(); i.hasNext(); ) {
        Jasen jasen = (Jasen)i.next();
//        System.out.println("Jäsen nro: " + i);
        jasen.tulosta(System.out);
      }

      kerho.talleta();

    } catch ( SailoException ex ) {
      System.out.println(ex.getMessage());
    }
  }


}