kerho
Class Jasenet

java.lang.Object
  extended by kerho.Jasenet
All Implemented Interfaces:
Iterable<Jasen>

public class Jasenet
extends Object
implements Iterable<Jasen>

Kerhon jäsenistä joka osaa mm. lisätä uuden jäsenen

Version:
1.0, 22.02.2003
Author:
Vesa Lappalainen

Nested Class Summary
 class Jasenet.JasenetIterator
          Luokka jäsenten iteroimiseksi.
 
Constructor Summary
Jasenet()
          Oletusmuodostaja
Jasenet(int koko)
          Muodostaja jolla maxkoko voidaan asettaa
 
Method Summary
 Jasen anna(int i)
          Palauttaa viitteen i:teen jäseneen.
 Jasen annaId(int id)
          Etsii jäsenen id:n perusteella
 Object annaObj(int i)
          Palauttaa viitteen i:teen jäseneen.
 Collection<Jasen> etsi(String hakuehto, int k)
          Palauttaa "taulukossa" hakuehtoon vastaavien jäsenten viitteet
 int etsiId(int id)
          Etsii jäsenen id:n perusteella
 String getBakNimi()
          Palauttaa varakopiotiedoston nimen
 String getKokoNimi()
          Palauttaa Kerhon koko nimen
 int getLkm()
          Palauttaa kerhon jäsenten lukumäärän
 String getTiedostonNimi()
          Palauttaa tiedoston nimen, jota käytetään tallennukseen
 String getTiedostonPerusNimi()
          Palauttaa tiedoston nimen, jota käytetään tallennukseen
 Iterator<Jasen> iterator()
          Palautetaan iteraattori jäsenistään.
 void korvaaTaiLisaa(Jasen jasen)
          Korvaa jäsenen tietorakenteessa.
 void lisaa(Jasen jasen)
          Lisää uuden jäsenen tietorakenteeseen.
 void lueTiedostosta(String tied)
          Lukee jäsenistön tiedostosta.
static void main(String[] args)
          Testiohjelma jäseniställe
 int poista(int id)
          Poistaa jäsenen jolla on valittu tunnusnumero
 void setTiedostonPerusNimi(String tied)
          Asettaa tiedoston perusnimen ilan tarkenninta
 void talleta()
          Tallentaa jäsenistän tiedostoon.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Jasenet

public Jasenet()
Oletusmuodostaja


Jasenet

public Jasenet(int koko)
Muodostaja jolla maxkoko voidaan asettaa

Parameters:
koko - jäsenistön maxkoko
Method Detail

lisaa

public void lisaa(Jasen jasen)
           throws SailoException
Lisää uuden jäsenen tietorakenteeseen. Ottaa jäsenen omistukseensa.

Parameters:
jasen - lisätäävän jäsenen viite. Huom tietorakenne muuttuu omistajaksi
Throws:
SailoException - jos tietorakenne on jo täynnä
Example:
 #THROWS SailoException 
 #PACKAGEIMPORT
 Jasenet jasenet = new Jasenet(5);
 Jasen aku1 = new Jasen(), aku2 = new Jasen();
 aku1.rekisteroi(); aku2.rekisteroi();
 jasenet.getLkm() === 0;
 jasenet.lisaa(aku1); jasenet.getLkm() === 1;
 jasenet.lisaa(aku2); jasenet.getLkm() === 2;
 jasenet.lisaa(aku1); jasenet.getLkm() === 3;
 jasenet.anna(0) === aku1;
 jasenet.anna(1) === aku2;
 jasenet.anna(2) === aku1;
 jasenet.anna(1) == aku1 === false;
 jasenet.anna(1) == aku2 === true;
 jasenet.anna(3) === aku1; #THROWS IndexOutOfBoundsException 
 jasenet.lisaa(aku1); jasenet.getLkm() === 4;
 jasenet.lisaa(aku1); jasenet.getLkm() === 5;
 jasenet.lisaa(aku1);  #THROWS SailoException
 

poista

public int poista(int id)
Poistaa jäsenen jolla on valittu tunnusnumero

Parameters:
id - poistettavan jäsenen tunnusnumero
Returns:
1 jos poistettiin, 0 jos ei löydy
Example:
 #THROWS SailoException 
 Jasenet jasenet = new Jasenet(5);
 Jasen aku1 = new Jasen(), aku2 = new Jasen(), aku3 = new Jasen();
 aku1.rekisteroi(); aku2.rekisteroi(); aku3.rekisteroi();
 int id1 = aku1.getTunnusnro();
 jasenet.lisaa(aku1); jasenet.lisaa(aku2); jasenet.lisaa(aku3);
 jasenet.poista(id1+1) === 1;
 jasenet.etsiId(id1+1) === -1; jasenet.getLkm() === 2;
 jasenet.poista(id1) === 1; jasenet.getLkm() === 1;
 jasenet.poista(id1+3) === 0; jasenet.getLkm() === 1;
 

korvaaTaiLisaa

public void korvaaTaiLisaa(Jasen jasen)
                    throws SailoException
Korvaa jäsenen tietorakenteessa. Ottaa jäsenen omistukseensa. Etsitään samalla tunnusnumerolla oleva jäsen. Jos ei läydy, niin lisätään uutena jäsenenä.

Parameters:
jasen - lisätäävän jäsenen viite. Huom tietorakenne muuttuu omistajaksi
Throws:
SailoException - jos tietorakennen on jo täynnä
 #THROWS SailoException,CloneNotSupportedException
 #PACKAGEIMPORT
 Jasenet jasenet = new Jasenet();
 Jasen aku1 = new Jasen(), aku2 = new Jasen();
 aku1.rekisteroi(); aku2.rekisteroi();
 jasenet.getLkm() === 0;
 jasenet.korvaaTaiLisaa(aku1); jasenet.getLkm() === 1;
 jasenet.korvaaTaiLisaa(aku2); jasenet.getLkm() === 2;
 Jasen aku3 = aku1.clone();
 aku3.aseta(3,"kkk");
 jasenet.anna(0) == aku1 === true;
 jasenet.korvaaTaiLisaa(aku3); jasenet.getLkm() === 2;
 jasenet.anna(0) === aku3;
 jasenet.anna(0) == aku3 === true;
 jasenet.anna(0) == aku1 === false;
 

anna

public Jasen anna(int i)
           throws IndexOutOfBoundsException
Palauttaa viitteen i:teen jäseneen.

Parameters:
i - monennenko jäsenen viite halutaan
Returns:
viite jäseneen, jonka indeksi on i
Throws:
IndexOutOfBoundsException - jos i ei ole sallitulla alueella

annaObj

public Object annaObj(int i)
               throws IndexOutOfBoundsException
Palauttaa viitteen i:teen jäseneen.

Parameters:
i - monennenko jäsenen viite halutaan
Returns:
viite jäseneen, jonka indeksi on i
Throws:
IndexOutOfBoundsException - jos i ei ole sallitulla alueella

lueTiedostosta

public void lueTiedostosta(String tied)
                    throws SailoException
Lukee jäsenistön tiedostosta.

Parameters:
tied - tiedoston nimen alkuosa
Throws:
SailoException - jos lukeminen epäonnistuu
Example:
 #THROWS SailoException 
 #import java.io.File;
 
  Jasenet jasenet = new Jasenet();
  Jasen aku1 = new Jasen(), aku2 = new Jasen();
  aku1.vastaaAkuAnkka();
  aku2.vastaaAkuAnkka();
  String tiedNimi = "testikelmit";
  File ftied = new File(tiedNimi+".dat");
  ftied.delete();
  jasenet.lueTiedostosta(tiedNimi); #THROWS SailoException
  jasenet.lisaa(aku1);
  jasenet.lisaa(aku2);
  jasenet.talleta();
  jasenet = new Jasenet();           // Poistetaan vanhat luomalla uusi
  jasenet.lueTiedostosta(tiedNimi);  // johon ladataan tiedot tiedostosta.
  Iterator i = jasenet.iterator();
  i.next().toString() === aku1.toString();
  i.next().toString() === aku2.toString();
  i.hasNext() === false;
  jasenet.lisaa(aku2);
  jasenet.talleta();
  ftied.delete() === true;
  File fbak = new File(tiedNimi+".bak");
  fbak.delete() === true;
 

talleta

public void talleta()
             throws SailoException
Tallentaa jäsenistän tiedostoon. Tiedoston muoto:
 Kelmien kerho
 20
 ; kommenttirivi
 2|Ankka Aku|121103-706Y|Ankkakuja 6|12345|ANKKALINNA|12-1234|||1996|50.0|30.0|Velkaa Roopelle
 3|Ankka Tupu|121153-706Y|Ankkakuja 6|12345|ANKKALINNA|12-1234|||1996|50.0|30.0|Velkaa Roopelle
 

Throws:
SailoException - jos talletus epäonnistuu

getKokoNimi

public String getKokoNimi()
Palauttaa Kerhon koko nimen

Returns:
Kerhon koko nimi merkkijononna

getLkm

public int getLkm()
Palauttaa kerhon jäsenten lukumäärän

Returns:
jäsenten lukumäärä

setTiedostonPerusNimi

public void setTiedostonPerusNimi(String tied)
Asettaa tiedoston perusnimen ilan tarkenninta

Parameters:
tied - tallennustiedoston perusnimi

getTiedostonPerusNimi

public String getTiedostonPerusNimi()
Palauttaa tiedoston nimen, jota käytetään tallennukseen

Returns:
tallennustiedoston nimi

getTiedostonNimi

public String getTiedostonNimi()
Palauttaa tiedoston nimen, jota käytetään tallennukseen

Returns:
tallennustiedoston nimi

getBakNimi

public String getBakNimi()
Palauttaa varakopiotiedoston nimen

Returns:
varakopiotiedoston nimi

iterator

public Iterator<Jasen> iterator()
Palautetaan iteraattori jäsenistään.

Specified by:
iterator in interface Iterable<Jasen>
Returns:
jäsen iteraattori

etsi

public Collection<Jasen> etsi(String hakuehto,
                              int k)
Palauttaa "taulukossa" hakuehtoon vastaavien jäsenten viitteet

Parameters:
hakuehto - hakuehto
k - etsittävän kentän indeksi
Returns:
tietorakenteen löytyneistä jäsenistä
Example:
 #THROWS SailoException 
   Jasenet jasenet = new Jasenet();
   Jasen jasen1 = new Jasen(); jasen1.parse("1|Ankka Aku|030201-115H|Ankkakuja 6|");
   Jasen jasen2 = new Jasen(); jasen2.parse("2|Ankka Tupu||030552-123B|");
   Jasen jasen3 = new Jasen(); jasen3.parse("3|Susi Sepe|121237-121V||131313|Perämetsä");
   Jasen jasen4 = new Jasen(); jasen4.parse("4|Ankka Iines|030245-115V|Ankkakuja 9");
   Jasen jasen5 = new Jasen(); jasen5.parse("5|Ankka Roope|091007-408U|Ankkakuja 12");
   jasenet.lisaa(jasen1); jasenet.lisaa(jasen2); jasenet.lisaa(jasen3); jasenet.lisaa(jasen4); jasenet.lisaa(jasen5);
   List loytyneet;
   loytyneet = (List)jasenet.etsi("*s*",1);
   loytyneet.size() === 2;
   loytyneet.get(0) == jasen4 === true;
   loytyneet.get(1) == jasen3 === true;
   
   loytyneet = (List)jasenet.etsi("*7-*",2);
   loytyneet.size() === 2;
   loytyneet.get(0) == jasen5 === true;
   loytyneet.get(1) == jasen3 === true;
 

annaId

public Jasen annaId(int id)
Etsii jäsenen id:n perusteella

Parameters:
id - tunnusnumero, jonka mukaan etsitään
Returns:
jäsen jolla etsittävä id tai null
 #THROWS SailoException 
 Jasenet jasenet = new Jasenet(5);
 Jasen aku1 = new Jasen(), aku2 = new Jasen(), aku3 = new Jasen();
 aku1.rekisteroi(); aku2.rekisteroi(); aku3.rekisteroi();
 int id1 = aku1.getTunnusnro();
 jasenet.lisaa(aku1); jasenet.lisaa(aku2); jasenet.lisaa(aku3);
 jasenet.annaId(id1  ) == aku1 === true;
 jasenet.annaId(id1+1) == aku2 === true;
 jasenet.annaId(id1+2) == aku3 === true;
 

etsiId

public int etsiId(int id)
Etsii jäsenen id:n perusteella

Parameters:
id - tunnusnumero, jonka mukaan etsitään
Returns:
löytyneen jäsenen indeksi tai -1 jos ei löydy
 #THROWS SailoException 
 Jasenet jasenet = new Jasenet(5);
 Jasen aku1 = new Jasen(), aku2 = new Jasen(), aku3 = new Jasen();
 aku1.rekisteroi(); aku2.rekisteroi(); aku3.rekisteroi();
 int id1 = aku1.getTunnusnro();
 jasenet.lisaa(aku1); jasenet.lisaa(aku2); jasenet.lisaa(aku3);
 jasenet.etsiId(id1+1) === 1;
 jasenet.etsiId(id1+2) === 2;
 

main

public static void main(String[] args)
Testiohjelma jäseniställe

Parameters:
args - ei käytässä