package kerho;
import java.io.*;
import fi.jyu.mit.ohj2.*;
/**
 * Harrastus joka osaa mm. itse huolehtia tunnus_nro:staan.
 *
 * @author Vesa Lappalainen
 * @version 1.0, 20.03.2003
 */
public class Harrastus {
  private int    tunnus_nro;
  private int    jasen_id;
  private String ala;
  private int    aloitusvuosi;
  private int    tuntia_viikossa;

  private static int seuraava_nro = 1;

  public Harrastus() {  }

  /**
   * Apumetodi, jolla saadaan täytettyä testiarvot Harrastukselle.
   * Aloitusvuosi arvotaan, jotta kahdella harrastuksella ei olisi
   * samoja tietoja.
   * @param jid viite henkilöön, jonka harrastuksesta on kyse
   */
  void vastaa_pitsin_nyplays(int jid) {
     jasen_id = jid;
     ala = "Pitsin nypläys";
     aloitusvuosi = Jasen.rand(1900,2000);
     tuntia_viikossa = Jasen.rand(0,60);
  }


  /**
   * Tulostetaan harrastuksen tiedot
   * @param out tietovirta johon tulostetaan
   */
  public void tulosta(PrintWriter out) {
    out.println(ala + " " + aloitusvuosi + " " + tuntia_viikossa);
  }


  /**
   * Tulostetaan harrastuksen tiedot
   * @param os tietovirta johon tulostetaan
   */
  public void tulosta(OutputStream os) {
    tulosta(new PrintStream(os));
  }


  /**
   * Tulostetaan harrastuksen tiedot
   * @param os tietovirta johon tulostetaan
   */
  public void tulosta(PrintStream out) {
    tulosta(new PrintWriter(out,true));
  }

  /**
   * Antaa harrastukselle seuraavan rekisterinumeron.
   * @return harrastuksen uusi tunnus_nro
   */
  public int  rekisteroi() {
    tunnus_nro = seuraava_nro;
    seuraava_nro++;
    return tunnus_nro;
  }

  /**
   * Saantimetodi harrastuksen tunnusnumerolle
   * @return harrastuksen tunnusnumero
   */
  public int getTunnus_nro() { return tunnus_nro; }


  /**
   * Saantimetodi sille, kenen harrastus on kyseessä
   * @return sen jäsenen id, jonka harrastus on kyseessä
   */
  public int getJasen_id() { return jasen_id; }


  /**
   * Harrastuksen tiedot tolppa-erotettuna jonona
   * @return harrastus tolppaerotettuna jonona
   */
  public String toString() {
    return "" +
    tunnus_nro     + "|" +
    jasen_id       + "|" +
    ala            + "|" +
    aloitusvuosi   + "|" +
    tuntia_viikossa;
  }


  /**
   * Erottelee harrastuksen tiedot tolppaerotellusta merkkijonosta
   * @param rivi harrastuksen tiedot tolppaeroteltuna jonona
   */
  public void parse(String rivi) {
    StringBuffer sb = new StringBuffer(rivi);
    tunnus_nro     = Mjonot.erota(sb,'|',tunnus_nro);
    if ( tunnus_nro >= seuraava_nro ) seuraava_nro = tunnus_nro + 1;
    jasen_id       = Mjonot.erota(sb,'|',jasen_id);
    ala            = Mjonot.erota(sb,'|',ala);
    aloitusvuosi   = Mjonot.erota(sb,'|',aloitusvuosi);
    tuntia_viikossa= Mjonot.erota(sb,'|',tuntia_viikossa);
  }


  /**
   * Testiohjelma Harrastukselle.
   * @param args ei käytössä
   */
  public static void main(String args[]) {
    Harrastus har = new Harrastus();
    har.vastaa_pitsin_nyplays(2);
    har.tulosta(System.out);
  }

}