diff --git a/kerho/bin/RalliJava/Henkilo.class b/kerho/bin/RalliJava/Henkilo.class index dceb3beb503b8531c32b6e785c535ded2a34928b..075e1ad374b89ab47b3251c0a0ddeefee73d482c 100644 Binary files a/kerho/bin/RalliJava/Henkilo.class and b/kerho/bin/RalliJava/Henkilo.class differ diff --git a/kerho/bin/RalliJava/Henkilot.class b/kerho/bin/RalliJava/Henkilot.class index 4aa4aef19a48b842e56e094154c23f78445581a2..75edad3a3371181932eeee1c4f7d3166892c2a67 100644 Binary files a/kerho/bin/RalliJava/Henkilot.class and b/kerho/bin/RalliJava/Henkilot.class differ diff --git a/kerho/bin/RalliJava/Ralli.class b/kerho/bin/RalliJava/Ralli.class index d00ee8801a7c6a95ab2a078af392af1c2060eb2b..0fc36168a0b480ec791a2e1cd74b49c0910e1254 100644 Binary files a/kerho/bin/RalliJava/Ralli.class and b/kerho/bin/RalliJava/Ralli.class differ diff --git a/kerho/bin/RalliJava/Rallit.class b/kerho/bin/RalliJava/Rallit.class index ada51a5827284973604ea60f607fb2ef501aed01..7285af94649461203393c4eb58d48e09ff02056c 100644 Binary files a/kerho/bin/RalliJava/Rallit.class and b/kerho/bin/RalliJava/Rallit.class differ diff --git a/kerho/bin/RalliJava/Rekisteri.class b/kerho/bin/RalliJava/Rekisteri.class index f50f040b8d1c22eee72461074bed396d551ddc7b..129c925b531495b15dc3a1284d45aa2c3ee93dcc 100644 Binary files a/kerho/bin/RalliJava/Rekisteri.class and b/kerho/bin/RalliJava/Rekisteri.class differ diff --git a/kerho/bin/RalliJava/SailoException.class b/kerho/bin/RalliJava/SailoException.class index 0bdb65f2b5fe49194423f15a4f4c27615f3df2a4..81ebc6b05318672c5e1f228aae3dbadd050095b1 100644 Binary files a/kerho/bin/RalliJava/SailoException.class and b/kerho/bin/RalliJava/SailoException.class differ diff --git a/kerho/bin/RalliJava/test/HenkiloTest.class b/kerho/bin/RalliJava/test/HenkiloTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1a7a07ad49856e879a24c606d1fb2ee6be817dbc Binary files /dev/null and b/kerho/bin/RalliJava/test/HenkiloTest.class differ diff --git a/kerho/bin/RalliJava/test/HenkilotTest.class b/kerho/bin/RalliJava/test/HenkilotTest.class new file mode 100644 index 0000000000000000000000000000000000000000..0888dfd61eb1043330212aff258d450c7cea1d2b Binary files /dev/null and b/kerho/bin/RalliJava/test/HenkilotTest.class differ diff --git a/kerho/bin/application/Main.class b/kerho/bin/application/Main.class index 3e51077fe58f2e490b5c78d8e648ab216863e9a7..9b57e137721be5b392c06e464365e1f04d3955c8 100644 Binary files a/kerho/bin/application/Main.class and b/kerho/bin/application/Main.class differ diff --git a/kerho/bin/application/RalliController.class b/kerho/bin/application/RalliController.class index 5ae638ca7e31336f6d258077af71425512a5fe76..1b3c72ecc35719929000e55f864b68dff6c3bec3 100644 Binary files a/kerho/bin/application/RalliController.class and b/kerho/bin/application/RalliController.class differ diff --git a/kerho/bin/application/UudenlisaysController.class b/kerho/bin/application/UudenlisaysController.class index 9034e7dc1912c0fc3e068ecee7617713649d0899..2ab50a320567f86e543525885bf56c5dd6b2dd53 100644 Binary files a/kerho/bin/application/UudenlisaysController.class and b/kerho/bin/application/UudenlisaysController.class differ diff --git a/kerho/kerho/nimet.dat b/kerho/kerho/nimet.dat index ce1596a3d783122a5497ef1b73bc997fe65c3abc..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 --- a/kerho/kerho/nimet.dat +++ b/kerho/kerho/nimet.dat @@ -1,3 +1 @@ -0|Rovanperä|Oskari|18|Keuruu|Kuopion nopeet|59|41| -1|Sokka|Oskari|54|Rovaniemi|Rovaniemen nopeet shamaanit|83|17| -2|Rovanperä|Teemu|59|Seinäjoki|Kuopion nopeet|99|76| + diff --git a/kerho/src/RalliJava/Henkilo.java b/kerho/src/RalliJava/Henkilo.java index ba685607109d27946db135fc6bc9449f72ed6879..39e6ff9ee91c7bfa2f539ecb78ef96422e302755 100644 --- a/kerho/src/RalliJava/Henkilo.java +++ b/kerho/src/RalliJava/Henkilo.java @@ -3,6 +3,8 @@ package RalliJava; import java.io.PrintStream; import java.util.Random; +import fi.jyu.mit.ohj2.Mjonot; + /** * @author idamk * @version 12.2.2025 @@ -11,7 +13,7 @@ import java.util.Random; */ public class Henkilo { - private int henkilonTunnusNro = 0; + private int henkilonTunnusNro; private String etunimi = ""; private String sukunimi = ""; private int ika = 0; @@ -20,15 +22,28 @@ public class Henkilo { private String seura = ""; private String kotipaikkakunta = ""; - private static int seuraavaNro = 0; + private static int seuraavaNro = 1; /** - * + * Antaa henkilölle identifioivan tunnusnumeron + * @return uusi tunnusnumero + * @example + * <pre name="test"> + * Henkilo henkilo1 = new Henkilo(); + * henkilo1.getHenkilonTunnusNro()===0; + * henkilo1.rekisteroi(); + * Henkilo henkilo2 = new Henkilo(); + * henkilo2.rekisteroi(); + * int ht1 = henkilo1.getHenkilonTunnusNro(); + * int ht2 = henkilo2.getHenkilonTunnusNro(); + * ht1 === ht2-1; + * </pre> */ - public void rekisteroi() { + public int rekisteroi() { henkilonTunnusNro = seuraavaNro; seuraavaNro++; + return henkilonTunnusNro; } @@ -74,6 +89,23 @@ public class Henkilo { henkilo.tulosta(System.out); } + /** + * selkeä tulostus + */ + public void vastaaKalle() { + + etunimi = "Kalle"; + sukunimi = "Rovanperä"; + ika = 25; + kotipaikkakunta = "Jyväskylä"; + seura = "Toyota Gazoo Racing WRT"; + rallienMaara = 24; + voitetutRallit = 24; + + Henkilo henkilo = new Henkilo(henkilonTunnusNro, etunimi, sukunimi, ika, kotipaikkakunta, seura, rallienMaara, voitetutRallit); + henkilo.tulosta(System.out); + } + /** * @return tunnusnro @@ -82,6 +114,16 @@ public class Henkilo { return henkilonTunnusNro; } + + /** + * @param numero numero + */ + public void setHenkilonTunnusNro(int numero) { + henkilonTunnusNro = numero; + // jos tunnusnumero on varattu, seuraavaa numeroa kasvatetaan yhtä suuremmaksi kuin hlon tunnusnro + if (henkilonTunnusNro >= seuraavaNro) seuraavaNro = henkilonTunnusNro + 1; + } + /** * Alustaa henkilön */ @@ -125,11 +167,27 @@ public class Henkilo { /** * @return henkilön nimi + * @example + * <pre name="test"> + * Henkilo henkilo = new Henkilo(); + * henkilo.vastaaKalle(); + * henkilo.getNimi() =R= "Kalle Rovanperä"; */ public String getNimi() { return this.etunimi + " " + this.sukunimi; } + + /* + * Palauttaa tiedot tiedostoon tallennettavana merkkijonona + * @return henkilon tiedot merkkijonona + * @example + * <pre name="test"> + * Henkilo henkilo = new Henkilo(); + * henkilo.parse("2|Rovanperä|Kalle|"); + * henkilo.toString().startsWith("2|Rovanperä|Kalle|") === true; + * </pre> + */ @Override public String toString() { return "" + @@ -143,6 +201,36 @@ public class Henkilo { voitetutRallit + "|"; } + + /** + * Pilkkoo henkilötiedot osiin merkkijonosta + * Mukana myös setHenkilonTunnusNro() mikä pitää huolen henkilön tunnusnumerosta + * @param rivi rivi joka pilkotaan osiin + * @example + * <pre name="test"> + * Henkilo henkilo = new Henkilo(); + * henkilo.parse("2|Rovanperä|Kalle|"); + * henkilo.getHenkilonTunnusNro()===2; + * henkilo.toString().startsWith("2|Rovanperä|Kalle|")===true; + * henkilo.rekisteroi(); + * int ht = henkilo.getHenkilonTunnusNro(); + * henkilo.parse(""+(ht+20)); + * henkilo.rekisteroi(); + * henkilo.getHenkilonTunnusNro() === ht+20+1; + * </pre> + */ + public void parse(String rivi) { + StringBuffer sb = new StringBuffer(rivi); + setHenkilonTunnusNro(Mjonot.erota(sb, '|', getHenkilonTunnusNro())); // seuraavan numeron käsittely + sukunimi = Mjonot.erota(sb, '|', sukunimi); + etunimi = Mjonot.erota(sb, '|', etunimi); + ika = Mjonot.erota(sb, '|', ika); + kotipaikkakunta = Mjonot.erota(sb, '|', kotipaikkakunta); + seura = Mjonot.erota(sb, '|', seura); + rallienMaara = Mjonot.erota(sb, '|', rallienMaara); + voitetutRallit = Mjonot.erota(sb, '|', voitetutRallit); + } + /** * @param args ei käytössä */ diff --git a/kerho/src/RalliJava/Henkilot.java b/kerho/src/RalliJava/Henkilot.java index 1471cdc5635838bfbf71a161a3b8a869556b6d23..1b0e4297e63c153411415e4475d4811f4469f928 100644 --- a/kerho/src/RalliJava/Henkilot.java +++ b/kerho/src/RalliJava/Henkilot.java @@ -3,7 +3,10 @@ package RalliJava; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.FileInputStream; import java.io.PrintStream; +import java.util.Scanner; +//import fi.jyu.mit.ohj2.Mjonot; //import java.util.ArrayList; //import java.util.List; @@ -32,6 +35,23 @@ public class Henkilot { /** * @param henkilo lisättävä henkilö * @throws SailoException säilö + * @example + * <pre name="test"> + * #THROWS SailoException + * Henkilot henkilot = new Henkilot(); + * Henkilo henkilo1 = new Henkilo(), henkilo2 = new Henkilo(); + * henkilot.getLkm() === 0; + * henkilot.lisaa(henkilo1); henkilot.getLkm()===1; + * henkilot.lisaa(henkilo2); henkilot.getLkm()===2; + * henkilot.lisaa(henkilo1); henkilot.getLkm()===3; + * henkilot.anna(0)===henkilo1; + * henkilot.anna(1)===henkilo2; + * henkilot.anna(2)===henkilo1; + * henkilot.anna(3)===henkilo1; #THROWS IndexOutOfBoundsException + * henkilot.lisaa(henkilo1); henkilot.getLkm()===4; + * henkilot.lisaa(henkilo1); henkilot.getLkm()===5; + * henkilot.lisaa(henkilo2); #THROWS SailoException + * </pre> */ public void lisaa(Henkilo henkilo) throws SailoException { if (lkm >= alkiot.length) throw new SailoException("Liikaa alkioita"); @@ -57,6 +77,30 @@ public class Henkilot { throw new SailoException("Tiedosto " + tiedosto.getAbsolutePath()); } } + + /** + * @param hakemisto mistä haetaan + * @throws SailoException jos tiedoston lukemisessa jotain ongelmaa + */ + public void lueTiedostosta(String hakemisto) throws SailoException { + String tiedostonNimi = hakemisto + "/nimet.dat"; + File tiedosto = new File(tiedostonNimi); + + try (Scanner in = new Scanner(new FileInputStream(tiedosto))) { + while (in.hasNext() ) { // jos on seuraava olemassa niin luetaan seuraava nimi + String s = in.nextLine(); + if (s == null || "".equals(s) || s.charAt(0) == ';') continue; + Henkilo henkilo = new Henkilo(); + henkilo.parse(s); //TODO: PARSE MJONOT.JYU juttu!!!!! + + lisaa(henkilo); + } + } catch (FileNotFoundException e) { + throw new SailoException("Ei saa luettua tiedostoa " + tiedostonNimi); + } + + } + /** * @param rallinTunnusNro tarkasteltavan rallin tunnusnumero @@ -109,6 +153,13 @@ public class Henkilot { public static void main(String[] args) { Henkilot henkilot = new Henkilot(); + try { + henkilot.lueTiedostosta("kerho"); + } catch (SailoException ex) { + System.err.println(ex.getMessage()); + } + + Henkilo rovis = new Henkilo(); Henkilo asunmaa = new Henkilo(); Henkilo elfyn = new Henkilo(); @@ -123,13 +174,13 @@ public class Henkilot { try { henkilot.lisaa(rovis); henkilot.lisaa(asunmaa); - henkilot.lisaa(elfyn); + henkilot.lisaa(elfyn); System.out.println("==================== Testi ======================"); for (int i = 0; i < henkilot.getLkm(); i++) { Henkilo henkilo = henkilot.anna(i); - System.out.println("Henkilo nro: " + i); + System.out.println("Henkilo nro: " + (i+1)); henkilo.tulosta(System.out); } @@ -137,6 +188,7 @@ public class Henkilot { System.err.println("Liikaa alkioita :0"); //kun alkioita enemmän kun MAX sallii } + // tallentaminen hakemistoon "kerho" try { henkilot.tallenna("kerho"); } catch (SailoException e) { diff --git a/kerho/src/RalliJava/Rekisteri.java b/kerho/src/RalliJava/Rekisteri.java index 5c4e478aeec29312ca336080f02e3af7e8a880a1..14dd529bdac1c1dc2693662203d928238013d8dd 100644 --- a/kerho/src/RalliJava/Rekisteri.java +++ b/kerho/src/RalliJava/Rekisteri.java @@ -5,6 +5,8 @@ import java.util.List; /** * @author idamk * @version 25.2.2025 + * TODO: nimien toistuvuustarkistin + * TODO: * */ public class Rekisteri { @@ -57,6 +59,7 @@ public class Rekisteri { return henkilot.anna(i); } + /** * @param henkilo Henkilö kenen rallit halutaan tietää * @return listan näistä ralleista diff --git a/kerho/src/RalliJava/test/HenkiloTest.java b/kerho/src/RalliJava/test/HenkiloTest.java new file mode 100644 index 0000000000000000000000000000000000000000..589f76d98c213bf2ab3b5bd48e855c0774fc3328 --- /dev/null +++ b/kerho/src/RalliJava/test/HenkiloTest.java @@ -0,0 +1,67 @@ +package RalliJava.test; +// Generated by ComTest BEGIN +import static org.junit.Assert.*; +import org.junit.*; +import RalliJava.*; +// Generated by ComTest END + +/** + * Test class made by ComTest + * @version 2025.03.26 10:56:37 // Generated by ComTest + * + */ +@SuppressWarnings({ "all" }) +public class HenkiloTest { + + + + // Generated by ComTest BEGIN + /** testRekisteroi32 */ + @Test + public void testRekisteroi32() { // Henkilo: 32 + Henkilo henkilo1 = new Henkilo(); + assertEquals("From: Henkilo line: 34", 0, henkilo1.getHenkilonTunnusNro()); + henkilo1.rekisteroi(); + Henkilo henkilo2 = new Henkilo(); + henkilo2.rekisteroi(); + int ht1 = henkilo1.getHenkilonTunnusNro(); + int ht2 = henkilo2.getHenkilonTunnusNro(); + assertEquals("From: Henkilo line: 40", ht2-1, ht1); + } // Generated by ComTest END + + + // Generated by ComTest BEGIN + /** testGetNimi171 */ + @Test + public void testGetNimi171() { // Henkilo: 171 + Henkilo henkilo = new Henkilo(); + henkilo.vastaaKalle(); + { String _l_=henkilo.getNimi(),_r_="Kalle Rovanperä"; if ( !_l_.matches(_r_) ) fail("From: Henkilo line: 174" + " does not match: ["+ _l_ + "] != [" + _r_ + "]");}; + } // Generated by ComTest END + + + // Generated by ComTest BEGIN + /** testToString185 */ + @Test + public void testToString185() { // Henkilo: 185 + Henkilo henkilo = new Henkilo(); + henkilo.parse("2|Rovanperä|Kalle|"); + assertEquals("From: Henkilo line: 188", true, henkilo.toString().startsWith("2|Rovanperä|Kalle|")); + } // Generated by ComTest END + + + // Generated by ComTest BEGIN + /** testParse210 */ + @Test + public void testParse210() { // Henkilo: 210 + Henkilo henkilo = new Henkilo(); + henkilo.parse("2|Rovanperä|Kalle|"); + assertEquals("From: Henkilo line: 213", 2, henkilo.getHenkilonTunnusNro()); + assertEquals("From: Henkilo line: 214", true, henkilo.toString().startsWith("2|Rovanperä|Kalle|")); + henkilo.rekisteroi(); + int ht = henkilo.getHenkilonTunnusNro(); + henkilo.parse(""+(ht+20)); + henkilo.rekisteroi(); + assertEquals("From: Henkilo line: 219", ht+20+1, henkilo.getHenkilonTunnusNro()); + } // Generated by ComTest END +} \ No newline at end of file diff --git a/kerho/src/RalliJava/test/HenkilotTest.java b/kerho/src/RalliJava/test/HenkilotTest.java new file mode 100644 index 0000000000000000000000000000000000000000..14c971d315de6569e8c9f4ebbebc1d7c4dae5a16 --- /dev/null +++ b/kerho/src/RalliJava/test/HenkilotTest.java @@ -0,0 +1,44 @@ +package RalliJava.test; +// Generated by ComTest BEGIN +import static org.junit.Assert.*; +import org.junit.*; +import RalliJava.*; +// Generated by ComTest END + +/** + * Test class made by ComTest + * @version 2025.03.26 11:05:27 // Generated by ComTest + * + */ +@SuppressWarnings({ "all" }) +public class HenkilotTest { + + + // Generated by ComTest BEGIN + /** + * testLisaa39 + * @throws SailoException when error + */ + @Test + public void testLisaa39() throws SailoException { // Henkilot: 39 + Henkilot henkilot = new Henkilot(); + Henkilo henkilo1 = new Henkilo(), henkilo2 = new Henkilo(); + assertEquals("From: Henkilot line: 43", 0, henkilot.getLkm()); + henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 44", 1, henkilot.getLkm()); + henkilot.lisaa(henkilo2); assertEquals("From: Henkilot line: 45", 2, henkilot.getLkm()); + henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 46", 3, henkilot.getLkm()); + assertEquals("From: Henkilot line: 47", henkilo1, henkilot.anna(0)); + assertEquals("From: Henkilot line: 48", henkilo2, henkilot.anna(1)); + assertEquals("From: Henkilot line: 49", henkilo1, henkilot.anna(2)); + try { + assertEquals("From: Henkilot line: 50", henkilo1, henkilot.anna(3)); + fail("Henkilot: 50 Did not throw IndexOutOfBoundsException"); + } catch(IndexOutOfBoundsException _e_){ _e_.getMessage(); } + henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 51", 4, henkilot.getLkm()); + henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 52", 5, henkilot.getLkm()); + try { + henkilot.lisaa(henkilo2); + fail("Henkilot: 53 Did not throw SailoException"); + } catch(SailoException _e_){ _e_.getMessage(); } + } // Generated by ComTest END +} \ No newline at end of file