Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • jjlindho/ohj2
  • taaunisk/ohj2
  • snelvjxz/ohj2
  • vitumaja/ohj2
  • hemalein/ohj2
  • sippjoju/ohj2
  • joolpekk/ohj2
  • laospiri/ohj2
  • aaalliim/ohj2
  • jousamla/ohj2
  • askerazu/ohj2
  • juhhakal/ohj2
  • riikoovy/ohj2
  • eevaluur/ohj2
  • iitaseil/ohj2
  • laukjsxz/ohj2
  • nekaheik/ohj2
  • puttalmi/ohj2
  • iiarjoha/ohj2
  • jojohyva/ohj2
  • koskeljs/ohj2
  • anjumiel/ohj2
  • montwepa/ohj2
  • anmamisu/ohj2
  • virtveso/ohj2
  • pulalemi/ohj2
  • neuvolja/ohj2
  • jtjruuzy/ohj2
  • jokiasyy/ohj2
  • mirmatok/ohj2
  • nioannxs/ohj2
  • stsosupa/ohj2
  • uegronzs/ohj2
  • iiahjuma/ohj2
  • tsniemi/ohj2
  • eveoksan/ohj2
  • hevelatt/ohj2
  • toloojxz/ohj2
  • tabeohzy/ohj2
  • rjkforxy/ohj2
  • jukrjarv/ohj2
  • chjomaki/ohj2
  • mutkajyu/ohj2
  • ojpoutan/ohj2
  • hetikkan/ohj2
  • kivitiju/ohj2
  • hesoniem/ohj2
  • vetavatt/ohj2
  • rajamahm/ohj2
  • kvvloppo/ohj2
  • rthuhtzu/ohj2
  • hartaper/ohj2
  • eskolajs/ohj2
  • sptuomyz/ohj2
  • jajotiai/ohj2
  • mehtotp/ohj2
  • roelmame/ohj2
  • ltjaasks/ohj2
  • kaupmarj/ohj2
  • anolahop/ohj2
  • patmikli/ohj2
  • hejamima/ohj2
  • tuosam/ohj2
  • lepplaju/ohj2
  • ninmarpe/ohj2
  • laletamm/ohj2
  • vtkurros/ohj2
  • jujukinn/ohj2
  • mustkiri/ohj2
  • jeratake/ohj2
  • veemaunv/ohj2
  • autieaxv/ohj2
  • hejajarv/ohj2
  • mmsuvivu/ohj2
  • jesoalas/ohj2
  • vesamaki/ohj2
  • joantiku/ohj2
  • vainihsy/ohj2
  • aiepalvv/ohj2
  • elmamaen/ohj2
  • vjsivula/ohj2
  • korhkakr/ohj2
  • hytovjxz/ohj2
  • jasemyll/ohj2
  • viwapaul/ohj2
  • mikksexy/ohj2
  • meaeskev/ohj2
  • avikjmvs/ohj2
  • hasoini/ohj2
  • melllaem/ohj2
  • hejaasxs/ohj2
  • mavaltol/ohj2
  • tuvivera/ohj2
  • edciriac/ohj2
  • aljohutt/ohj2
  • saarelea/ohj2
  • japenurm/ohj2
  • lanilaht/ohj2
  • paporki/ohj2
  • mvholmsy/ohj2
  • josaflin/ohj2
  • velaalro/ohj2
  • ejkorkko/ohj2
  • arvilami/ohj2
  • liikknaw/ohj2
  • seppezw/ohj2
  • analmios/ohj2
  • kolsinm/ohj2
  • makivixs/ohj2
  • hesaalho/ohj2
  • asperala/ohj2
  • jumialko/ohj2
  • inkaurha/ohj2
  • viitalja/ohj2
  • mijoherr/ohj2
  • nitusalm/ohj2
  • olpemila/ohj2
  • jpleppan/ohj2
  • tupemerv/ohj2
  • tlwmoila/ohj2kevat
  • jkleppan/ohj2
  • jamapahi/ohj2-2021
  • svvvenxt/ohj2
  • sipoamxz/ohj2
  • saelmark/ohj2
  • elkalaat/ohj2
  • iimelapp/ohj2
  • tojotont/ohj2
  • mitulint/ohj2
  • jakarkkt/ohj2
  • jkrapo/ohj2
  • kakkohjy/ohj2
  • ikonajzy/ohj2
  • mitalain/ohj2
  • aajamape/ohj2
  • vpikahyy/ohj2
  • mjtrajal/ohj2
  • laromaas/ohj2
  • mivamaki/ohj2
  • ajautio/ohj2
  • joalerho/ohj2
  • louniats/ohj2
  • kalettaw/ohj2
  • jupekett/ohj2
  • jueelehr/ohj2
  • kauhanla/ohj2
  • tksnikka/ohj2
  • ropotjxy/ohj2
  • sulkupjy/ohj2
  • jovimajo/ohj2
  • mmoikari/ohj2
  • korhonje/ohj2
  • rokapark/ohj2
  • lajavani/ohj2
  • tetuanka/ohj2
  • jaheorol/ohj2
  • oskoivu/ohj2
  • sshahyy/ohj2
  • elemiron/ohj2
  • thheino/ohj2
  • saviolhe/ohj2
  • oskaleme/ohj2
  • hemamipi/ohj2
  • kortevax/ohj2
  • jymikars/ohj2
  • sjjylhzv/ohj2
  • osgulind/ohj2
  • salakyto/ohj2
  • joakurww/ohj2
  • topelamm/ohj2
  • ilanviki/ohj2
  • mjslopxy/ohj2
  • mikmatka/ohj2
  • roerleht/ohj2
  • jujujato/ohj2
  • saesossu/ohj2
  • mksavola/ohj2
  • veiervas/ohj2
  • jaenkoso/ohj2
  • kankaazt/ohj2
  • nmgronxs/ohj2
  • japehovi/ohj2
  • jlang/ohj2
  • sahuhta/ohj2
  • viimaila/ohj2
  • healturu/ohj2
  • jsmannik/ohj2
  • ostomaal/ohj2
  • maamiltu/ohj2
  • jailklee/ohj2
  • juiifepo/ohj2
  • njkokko/ohj2
  • aaltoops/ohj2old
  • jeakaura/ohj2
  • moyamoha/ohj2
  • aabackxy/ohj2
  • lasotamm/ohj2
  • mosaluht/ohj2
  • tkvolane/ohj2
  • jurmojxs/ohj2
  • ckhannyu/ohj2
  • iianhell/ohj2
  • tahansxy/ohj2
  • amhakkiu/ohj2
  • lapptazv/ohj2
  • opandexs/ohj2
  • ylimyset/ohj2
  • juumaran/ohj2
  • eljamahe/ohj2
  • kajopalh/ohj2
  • aaerjosa/ohj2
  • jvwlehti/ohj2
  • pokoivuu/ohj2
  • aevoutiv/ohj2
  • jojahilt/ohj2
  • pyjuella/ohj2
  • ansakatu/ohj2
  • mmlehtxy/ohj2
  • zaktahes/ohj2
  • luotajyz/ohj2
  • mmharjss/ohj2
  • nyholsmy/ohj2
  • jakantol/ohj2
  • lmjmonov/ohj2
  • mimuilu/ohj2
  • hekakasa/ohj2
  • elmajunt/ohj2
  • jajveden/ohj2
  • sajosaap/ohj2
  • kjraitax/ohj2
  • waljaama/ohj2
  • mipasane/ohj2
  • oionnitu/ohj2
  • mielkang/ohj2
  • selkamks/ohj2
  • akalek/ohj2
  • smkolari/ohj2
  • jeantoff/ohj2
  • akpesoin/ohj2
  • eetvalli/ohj2
  • puusos/ohj2
  • osjoneuv/ohj2
  • jujusakk/ohj2
  • lammiaev/ohj2
  • matoskni/ohj2
  • rosalla/ohj2
  • topekost/ohj2
  • rvtuohiv/ohj2
  • jejuluot/ohj2
  • jeanttix/ohj2
  • helmaaja/ohj2
  • nieetorp/pelikirjasto
  • frimroch/ohj2
  • jutamikk/ohj2
  • pulkpehe/ohj2
  • tilaanah/ohj2
  • iurasane/ohj2
  • vivahutt/ohj2
  • lokakall/ohj2
  • eepehukk/ohj2
  • juolenak/ohj2
  • samsaare/ohj2
  • aaelmust/ohj-2-s-2
  • mannisma/ohj2
  • akkoskxw/ohj2
  • tojopaja/ohj2
  • markkvmx/ohj2
  • puhakrpy/ohj2
  • jasmarne/ohj2
  • mianroys/ohj2
  • panyland/ohj2
  • kajakrvi/ohj2vanha
  • harkotmy/ohj2
  • jstonter/ohj2
  • mujajall/ohj2
  • salmsmxs/ohj2
  • jpakastu/ohj2
  • seirepox/ohj2
  • surminma/ohj2
  • karherka/ohj2
  • pohjjuan/ohj2
  • domanasi/ohj2
  • eeroltry/ohj2
  • lyytitts/ohj2
  • jasumado/ohj2
  • ayakiel/ohj2
  • mjlammi/ohj2
  • artokaka/ohj2
  • lejaolto/ohj2
  • nejokiia/ohj2
  • akjrouta/ohj2
  • melaukka/ohj2
  • karlkkxu/ohj2
  • roilrepo/ohj2
  • sskorppv/ohj2
  • misacase/ohj2
  • juktapmo/ohj2
  • huikuptu/ohj2
  • hekaahve/ohj2
  • kimjohke/ohj2
  • tie/ohj2/2020k/ohj2
  • enmistyl/ohj2
  • huttunol/ohj2
  • iioskort/ohj2
  • jakabund/ohj2
  • eranpalm/ohj2
  • mimariep/ohj2
  • ansakhar/ohj2
  • lauemija/ohj2
  • oltapaak/ohj2
  • jolajuko/ohj2
  • eppmakin/ohj2
  • askisozs/ohj2
  • eetakoiv/ohj2
  • jumailon/ohj2
  • kohontex/ohj2
  • vpkangas/ohj2
  • vihebeha/ohj2
  • phmkataj/ohj2
  • ejmatils/ohj2
  • jhkoivuz/ohj2
  • tmvesaks/ohj2
  • jokrhiet/ohj2
  • mooinoyz/ohj2
  • rimajarv/ohj2
  • tojyjolk/ohj2
  • jusakihe/ohj2
  • anjusiko/ohj2
  • immomipe/ohj2
  • milakoiv/ohj2
  • mikkmmxy/ohj2
  • loppujjy/ohj2
  • rasakork/ohj2
  • smkheiku/ohj2
  • jlttuomy/ohj2
  • anvemaha/ohj2
  • jyjokokk/ohj2
  • kakivimu/ohj2
  • joollaul/ohj2
  • jonijura/ohj2
  • weikimhe/ohj2
  • saarskxz/ohj2
  • grontova/ohj2
  • sspaavxt/ohj2
  • korhtmyz/ohj2
  • janmatla/ohj2
  • huhtopzw/ohj2
  • mikorpi/ohj2
  • tlauren/ohj2
  • kauppsms/ohj2
  • markauha/ohj2
  • pslaiho/ohj2
  • aetaivav/ohj2
  • jaanvahk/ohj2
  • tuomiaey/ohj2
  • jomihutt/ohj2
  • anntarva/ohj2
  • pieton/ohj2
  • vppitkzz/ohj2
  • holopvax/ohj2
  • sjalavyy/ohj2
  • keranhos/ohj2
  • willheto/ohj2
  • anmasnec/ohj2
  • niksanho/ohj2
  • temarahi/ohj2
  • ileneeyv/ohj2
  • titapelk/ohj2
  • voutilaw/ohj2
  • eeelorau/ohj2
  • kmsaarin/ohj2
  • iimamaki/ohj2
  • anjuylaj/ohj2
  • pekoniav/ohj2
  • tolppajy/ohj2
  • emostuom/ohj2
  • ohj20c/ohj2
  • ilhamahu/ohj2
  • totonter/ohj2
  • jamlauzs/ohj2
  • sianjoih/ohj2
  • limajopa/ohj2
  • otvlahti/ohj2
  • iijoliim/ohj2
  • mijoerla/ohj2
  • putulit/ohj2
  • mikjuhva/ohj2
  • mahyvakw/ohj2
  • jtuusnas/ohj2
  • aspaakki/ohj2
  • sspjussi/ohj2
  • jatauren/ohj2
  • jopariih/ohj2
  • kannijpy/ohj2
  • sahlatik/ohj2
  • jjliukks/ohj2
  • juelreim/ohj2
  • tulaanla/ohj2
  • iimaheky/ohj2
  • kaarajyu/ohj2
  • takksmxy/ohj2
  • vainlmzz/ohj2
  • jypemiko/ohj2
  • tuvipeno/ohj2
  • juhevali/ohj2
  • jpputkos/ohj2
  • maaviixu/ohj2
  • kaustmjv/ohj2
  • pelkrpxt/ohj2
  • tovijeko/ohj2
  • variskay/ohj2
  • lataelyl/ohj2
  • avkoivxw/ohj2
  • mikatoiv/ohj2
  • mikkskxt/ohj2
  • tejututt/ohj2
  • amsalmel/ohj2
  • leinojkv/ohj2
  • johaggre/ohj2
  • rkvauhyy/ohj2
  • nyktopsa/ohj2
  • sasantaw/ohj2
  • mavivilh/ohj2
  • mmmannik/ohj2
  • mtahalzw/ohj2
  • kotanema/ohj2
  • anulmetu/ohj2
  • ademjako/ohj2
  • natuhaut/ohj2
  • granalky/ohj2
  • terechar/ohj2
  • aaanybyy/ohj2
  • jasielja/ohj2
  • smhiltun/ohj2
  • jemahint/ohj2
  • evotsamu/ohj2
  • heikkiri/ohj2
  • kijapepa/ohj2
  • amsyvanz/ohj2
  • autelian/ohj2
  • jopeuusi/ohj2
  • koitotws/ohj2
  • sukakont/ohj2
  • harilmsl/ohj2
  • elieeros/ohj2
  • toalhaka/ohj2
  • jomirist/ohj2
  • herttaay/ohj2
  • otsapeka/ohj2
  • jaanikha/ohj2
  • tovarita/ohj2
  • laaklavy/ohj2
  • saamarhe/ohj2
  • niemamko/ohj2
  • avvaltxt/ohj2
  • mianheha/ohj2
  • lavileht/ohj2
  • hanserhw/ohj2
  • jumipart/ohj2
  • tisormun/ohj2
  • mimatalu/ohj2
  • agthnezy/ohj2
  • laakojut/ohj2
  • emjotika/ohj2
  • pohjaezv/ohj2
  • svpatron/ohj2
  • antesaar/ohj2
  • rjtaipaz/ohj2
  • jlsmeriw/ohj2
  • heikkiaj/ohj2
  • angeimon/ohj2
  • pekaahon/ohj2
  • pehejusi/ohj2
  • tumaolva/ohj2
  • juhehavi/ohj2
  • mimajuoi/ohj2
  • juosmake/ohj2
  • almikent/ohj2
  • tetalepo/ohj2
  • joolahti/ohj2
  • svhentiz/ohj2
  • mikrats/ohj2
  • pjdaniyu/ohj2
  • patolone/ohj2
  • hmjantxv/ohj2
  • aoniemiw/ohj2
  • jujajova/ohj2
  • jaleli/ohj2
  • alcowekb/ohj2
  • pesearnd/ohj2
  • smmraitu/ohj2
  • sakapaap/ohj2
  • roerker/ohj2
  • mraatika/ohj2
  • mijuntti/ohj2
  • mmmaikxu/ohj2
  • karppiaa/ohj2
  • lahaeske/ohj2
  • laevkarn/ohj2
  • pimafinn/ohj2
  • hemasuur/ohj2
  • ojjranss/oldOhj2
  • tirrrazy/ohj2
  • kolarjjy/ohj2-vanha
  • lasirkka/ohj2
  • thaaltos/ohj2
  • hemasill/ohj2
  • misewint/ohj2
  • ronevaxy/ohj2
  • riiijoko/ohj2
  • mijapeli/ohj2
  • pmvparti/ohj2
  • sakkorps/ohj2
  • koivevxt/ohj2
  • mikorkea/ohj2
  • maviahon/ohj2
  • tie/ohj2/2021k/ohj2
  • salojema/ohj2
  • laaaraty/ohj2
  • katsusah/ohj2
  • elianthe/ohj2
  • rekantlo/ohj2
  • aleemika/ohj2
  • korpitex/ohj2
  • jueijarv/ohj2
  • aldiskan/ohj2
  • tojubjor/ohj2
  • lkryytty/ohj2
  • tkhuntin/ohj2
  • vesal/ohj2
  • misapeta/ohj2
  • rauhmisu/ohj2
  • sjsalone/ohj2
  • ojalaja/ohj2
  • tahvpwzw/ohj2
  • ememviit/ohj2
  • juervaha/ohj2
  • satapohj/ohj2
  • eranemta/ohj2
  • juhammar/ohj2
  • teminiem/ohj2
  • lapakrva/ohj2
  • tasachla/ohj2
  • kanstmxv/ohj2
  • rahkonri/ohj2
  • niktapky/ohj2
  • vuhpulkk/ohj2
  • waeekron/ohj2
  • elkahela/ohj2
  • joanjupu/ohj2
  • jkruuth/ohj2
  • merkmxz/ohj2
  • lahteajv/ohj2
  • veemantt/ohj2
  • kutvonsk/ohj2
  • hslotjon/ohj2
  • emtulyja/ohj2
  • jetimiko/ohj2
  • pmitynny/ohj2
  • patmikel/ohj2
  • tujokuus/ohj2
  • toevkrsu/ohj2
  • kaksosmy/ohj2
  • kamaheit/ohj2
  • tysterex/ohj2
  • olahtani/ohj2
  • jtmaatta/ohj2
  • jkkjarvi/ohj2
  • ikaleniz/ohj2
  • vehemake/ohj2
  • lpsuurw/ohj2
  • partsatv/ohj2
  • saanmiso/ohj2
  • eeanpulk/ohj2
  • kaiadesa/ohj2
  • eetarasa/ohj2
  • jolehto/ohj2
  • alalojap/ohj2_v
  • ljhovila/ohj2
  • apkataxt/ohj2
  • saiannka/ohj2
  • ojmannex/ohj2vanha
  • maanketo/ohj2
  • vartivov/ohj2
  • rekallio/ohj2
  • mvhonkzz/harkkatyo-2
  • anneveka/ohj2
  • huhtjyil/ohj2
  • kirskaxt/ohj2ht
  • pamifors/ohj2
  • npura/harkkatyo-ohj-2
  • koskelju/ohj2
  • seastrom/ohj2
  • eerikano/ohj2
  • vaolinxt/ohj2
  • ammikkys/ohj2
  • lmketola/ohj2
  • raisapjy/ohj2
  • tiantaha/ohj2
  • myhesare/ohj2ht
  • heajuvon/ohj2
  • thalolri/elokuvalogi
  • tisanarh/ohj2
603 results
Show changes
Commits on Source (1)
  • mvholmsy's avatar
    V7 · b5bfc3a5
    mvholmsy authored
    b5bfc3a5
Showing
with 2590 additions and 516 deletions
3|4|1.12.2020|10.0||-10|0.0|0.0|100.0
3|4|1.12.2020|10.0||-10|0.0|0.0|1.0E8
5|3|1.1.2020|10.0||-5|200.0|180.0|180.0
nimet.dat
5
3|Veikko|Hakulinen|01.01.2020|Kuopio|040|@|2000
4|Hemppa|Myyrä|12.6.1986|Laukaa|0407243639|s.posti@testi|2020
package Tietorakenteet;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import fi.jyu.mit.ohj2.Mjonot;
/**
* @author MHo
......@@ -8,7 +18,6 @@ import java.util.ArrayList;
* Hiihtorekisterin jasenet, joka lisää ja poistaa jäseniä.
*/
public class Hiihdot {
private String tiedostonNimi = "";
private ArrayList<Hiihto> hiihdot = new ArrayList<Hiihto>();
/**
......@@ -19,17 +28,80 @@ public class Hiihdot {
}
/**
* @param hiihto suoritus, joka lisätään rekisteriin
* @example
* <pre name="test">
* Hiihdot ht = new Hiihdot();
* Hiihto h = new Hiihto(0);
* ht.lisaa(h);
* ht.getHiihdot() === 1;
* </pre>
*/
public void lisaa(Hiihto hiihto){
hiihdot.add(hiihto);
}
/**
* Korvaa hiihdon tietorakenteessa.
* Etsitään samalla tunnusnumerolla oleva hiihto ja ei löydy niin lisätään uutena.
* @param h lisättävän hiihdon viite.
* @throws SailoException jos tietorakenne on jo täynnä
* @example
* <pre name="test">
* #THROWS SailoException,CloneNotSupportedException
* #PACKAGEIMPORT
* Hiihdot hiihdot = new Hiihdot();
* Hiihto h1 = new Hiihto(0), h2 = new Hiihto(0);
* hiihdot.getHiihdot() === 0;
* hiihdot.korvaaTaiLisaa(h1); hiihdot.getHiihdot() === 1;
* hiihdot.korvaaTaiLisaa(h2); hiihdot.getHiihdot() === 2;
* Hiihto h3 = h1.clone();
* hiihdot.korvaaTaiLisaa(h3); hiihdot.getHiihdot() === 2;
* </pre>
*/
public void korvaaTaiLisaa(Hiihto h) throws SailoException {
int id = h.getID();
for (int i = 0; i < getHiihdot(); i++) {
if (hiihdot.get(i).getID() == id) {
hiihdot.set(i, h);
return;
}
}
lisaa(h);
}
/**
* Palauttaa viitteen i:teen jäseneen.
* Poistaa kaikki tietyn tietyn jäsenen hiihdot
* @param tunnusNro viite siihen, mihin liittyvät tietueet poistetaan
* @return montako poistettiin
* @example
* <pre name="test">
* Hiihdot ht = new Hiihdot();
* Hiihto h1 = new Hiihto(0);
* Hiihto h2 = new Hiihto(0);
* ht.lisaa(h1); ht.lisaa(h2);
* ht.getHiihdot() === 2;
* ht.poistaHiihdot(0) === 2; ht.getHiihdot() === 0;
* </pre>
*/
public int poistaHiihdot(int tunnusNro) {
int n = 0;
for (Iterator<Hiihto> it = hiihdot.iterator(); it.hasNext();) {
Hiihto h = it.next();
if ( h.getJasenID() == tunnusNro ) {
it.remove();
n++;
}
}
return n;
}
/**
* Palauttaa viitteen i:teen hiihtoon.
* @param i monennenko jäsenen viite halutaan
* @return viite jäseneen, jonka indeksi on i
* @throws IndexOutOfBoundsException jos i ei ole sallitulla alueella
......@@ -38,6 +110,8 @@ public class Hiihdot {
* Hiihto eka = new Hiihto(1);
* Hiihto toka = new Hiihto(1);
* Hiihdot hiihdot = new Hiihdot();
* hiihdot.lisaa(eka);
* hiihdot.lisaa(toka);
* hiihdot.anna(0) === eka;
* hiihdot.anna(1) === toka;
* </pre>
......@@ -51,22 +125,75 @@ public class Hiihdot {
/**
* Lukee hiihdot tiedostosta.
* @param hakemisto tiedoston hakemisto
* @throws SailoException jos lukeminen epäonnistuu
*/
public void lueTiedostosta(String hakemisto) throws SailoException {
tiedostonNimi = hakemisto + "/nimet.dat";
throw new SailoException("Ei osata vielä lukea tiedostoa " + tiedostonNimi);
* Lukee harrastukset tiedostosta.
* @throws SailoException jos lukeminen epäonnistuu
* @example
* <pre name="test">
* #THROWS SailoException
* #import java.io.File;
* Hiihdot hiihdot = new Hiihdot();
* Hiihto h1 = new Hiihto(1);
* Hiihto h2 = new Hiihto(1);
* Hiihto h3 = new Hiihto(1);
* Hiihto h4 = new Hiihto(2);
* Hiihto h5 = new Hiihto(2);
* File ftied = new File("hiihdot.dat");
* ftied.delete();
* hiihdot.lueTiedostosta(); #THROWS SailoException
* hiihdot.lisaa(h1);
* hiihdot.lisaa(h2);
* hiihdot.lisaa(h3);
* hiihdot.lisaa(h4);
* hiihdot.lisaa(h5);
* hiihdot.tallenna();
* hiihdot = new Hiihdot();
* hiihdot.lueTiedostosta();
* hiihdot.getHiihdot() === 5;
* hiihdot.lisaa(h1);
* hiihdot.tallenna();
* hiihdot.getHiihdot() === 6;
* ftied.delete() === true;
* File fbak = new File("hiihdot.bak");
* fbak.delete() === true;
* </pre>
*/
public void lueTiedostosta() throws SailoException {
try ( BufferedReader fi = new BufferedReader(new FileReader("hiihdot.dat")) ) {
String rivi;
while ( (rivi = fi.readLine()) != null ) {
rivi = rivi.trim();
if ( "".equals(rivi) || rivi.charAt(0) == ';' ) continue;
Hiihto h = new Hiihto(0);
h.parse(rivi); // voisi olla virhekäsittely
lisaa(h);
}
} catch ( FileNotFoundException e ) {
throw new SailoException("Tiedosto 'hiihdot.dat' ei aukea");
} catch ( IOException e ) {
throw new SailoException("Ongelmia tiedoston kanssa: " + e.getMessage());
}
}
/**
* Tallentaa hiihdon tiedostoon.
* Tallentaa harrastukset tiedostoon.
* @throws SailoException jos talletus epäonnistuu
*/
public void talleta() throws SailoException {
throw new SailoException("Ei osata vielä tallentaa tiedostoa " + tiedostonNimi);
public void tallenna() throws SailoException {
File fbak = new File("hiihdot.bak");
File ftied = new File("hiihdot.dat");
fbak.delete(); // if ... System.err.println("Ei voi tuhota");
ftied.renameTo(fbak); // if ... System.err.println("Ei voi nimetä");
try ( PrintWriter fo = new PrintWriter(new FileWriter(ftied.getCanonicalPath())) ) {
for (Hiihto h : hiihdot) {
fo.println(h.toString());
}
} catch ( FileNotFoundException ex ) {
throw new SailoException("Tiedosto " + ftied.getName() + " ei aukea");
} catch ( IOException ex ) {
throw new SailoException("Tiedoston " + ftied.getName() + " kirjoittamisessa ongelmia");
}
}
......@@ -75,15 +202,16 @@ public class Hiihdot {
* @return tietyn jäsenen hiihdot listana
* @example
* <pre name="test">
* Hiihdot hiihdot = new Hiihdot();
* Hiihto eka = new Hiihto(1);
* Hiihto toka = new Hiihto(1);
* Hiihto kolmas = new Hiihto(2);
* Hiihdot hiihdot = new Hiihdot();
* Hiihto kol = new Hiihto(2);
* hiihdot.lisaa(eka);
* hiihdot.lisaa(toka);
* hiihdot.lisaa(kolmas);
* hiihdot.getJasenenHiihdot(1) === "[eka, toka]";
* hiihdot.getJasenenHiihdot(2) === "[kolmas]";
* hiihdot.lisaa(kol);
* hiihdot.anna(0) === eka;
* hiihdot.anna(1) === toka;
* hiihdot.anna(2) === kol;
* </pre>
*/
public ArrayList<Hiihto> getJasenenHiihdot(int id) {
......@@ -114,26 +242,70 @@ public class Hiihdot {
}
/**
* Poistetaan valittu hiihto rekisteristä
* @param h hiihto joka poistetaan
* @return true jos poisto onnistui
* @example
* <pre name="test">
* Hiihdot ht = new Hiihdot();
* Hiihto h1 = new Hiihto(0); Hiihto h2 = new Hiihto(0);
* ht.lisaa(h1); ht.lisaa(h2);
* ht.getHiihdot() === 2;
* ht.poista(h1) === true;
* ht.getHiihdot() === 1;
* </pre>
*/
public boolean poista(Hiihto h) {
for (int i = 0; i < hiihdot.size(); i++) {
if (h.getID() == hiihdot.get(i).getID()) hiihdot.remove(hiihdot.get(i));
}
return true;
}
/**
* @param j jäsen jonka kilometrit lasketaan
* @return kilometrit
* @example
* <pre name="test">
* Jasen j = new Jasen();
* Hiihdot ht = new Hiihdot();
* Hiihto h1 = new Hiihto(1);
* h1.aseta(2, "10");
* ht.lisaa(h1);
* ht.laskeKm(j) === "10.0";
* Hiihto h2 = new Hiihto(1);
* h2.aseta(2, "10");
* ht.lisaa(h2);
* ht.laskeKm(j) === "20.0";
* </pre>
*/
public String laskeKm(Jasen j) {
ArrayList<Hiihto> jasenenHiihdot = getJasenenHiihdot(j.getID());
double km = 0;
for (Hiihto h : jasenenHiihdot) {
km += Mjonot.erotaDouble(h.anna(2), 0);
}
return Double.toString(km);
}
/**
* @param args ei käytössä
*/
public static void main(String args[]) {
Hiihdot hiihdot = new Hiihdot();
Hiihto lenkki = new Hiihto(1), toinen = new Hiihto(2);
try {
hiihdot.lisaa(lenkki);
hiihdot.lisaa(toinen);
System.out.println("========== Hiihdot testi ==============");
for (int i=0; i < hiihdot.getHiihdot(); i++) {
Hiihto hiihto = hiihdot.anna(i);
System.out.println("Hiihto nro: " + i);
hiihto.tulosta(System.out);
}
} catch ( Exception ex ) {
System.out.println(ex.getMessage());
}
......
......@@ -2,27 +2,29 @@ package Tietorakenteet;
import java.io.OutputStream;
import java.io.PrintStream;
import java.time.LocalDate;
import java.util.Random;
import fi.jyu.mit.ohj2.Mjonot;
/**
* @author MHo
* @version 20.2.2020
* Jasen -luokka, joka lisää jäsenen rekisteriin.
*/
public class Hiihto {
public class Hiihto implements Cloneable, Tietue {
private int id;
private int jasenID;
private String pvm = "";
private double matka;
private String matka = "";
private String aika = "";
private double lampotila;
private double keskisyke;
private double maksimisyke;
private double kalorit;
private String lampotila = "";
private String keskisyke = "";
private String maksimisyke = "";
private String kalorit = "";
private static int juoksevaNro = 1;
/**
* Muodostaja
* @param jasenID jolle hiihtosuoritus lisätään
......@@ -30,15 +32,268 @@ public class Hiihto {
public Hiihto(int jasenID){
id = juoksevaNro;
this.jasenID = jasenID;
pvm = "5.3.2020";
matka = 20; //new Random().nextInt((50 - 1) + 1) + 1; //arpoo matkan yksilöimistä varten
aika = "1:30";
lampotila = -5; //new Random().nextInt((5 - (-20)) + 1) + (-20); //arpoo lämpötilan yksilöimistä varten
keskisyke = 120;
maksimisyke = 180;
kalorit = 100;
juoksevaNro++;
}
@Override
public int getKenttia() {
return 7;
}
@Override
public int ekaKentta() {
return 1;
}
/**
* Hiihto tallennetaan vain, jos sillä on päivämäärä.
* Samannimisellä metodilla tarkistetaan Jasen -luokassa, että lisättävällä jäsenellä on nimi.
* Tämän vuoksi palautetaan tässä päivämäärä tarkistustietona.
*/
@Override
public String getNimi() {
return pvm + " ";
}
/**
* @example
*/
@Override
public int getID() {
return id;
}
/**
* Palauttaa k:tta jäsenen kenttää vastaavan kysymyksen
* @param k kuinka monennen kentän kysymys palautetaan (0-alkuinen)
* @return k:netta kenttää vastaava kysymys
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.getKysymys(1) === "Päivämäärä";
* h.getKysymys(2) === "Matka";
* h.getKysymys(7) === "Kalorit";
* h.getKysymys(8) === "Virheellinen kenttä";
* </pre>
*/
@Override
public String getKysymys(int k) {
switch ( k ) {
case 1: return "Päivämäärä";
case 2: return "Matka";
case 3: return "Aika";
case 4: return "Lämpötila";
case 5: return "Keskisyke";
case 6: return "Maksimisyke";
case 7: return "Kalorit";
default: return "Virheellinen kenttä";
}
}
/**
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.parse("0|1|1.1.2020|10|1:30|-5|180|200|800");
* h.anna(1) === "1.1.2020";
* h.anna(7) === "800";
* h.anna(8) === "Tietoa ei löydy!";
* </pre>
*/
@Override
public String anna(int k) {
switch ( k ) {
case 1: return "" + pvm;
case 2: return "" + matka;
case 3: return "" + aika;
case 4: return "" + lampotila;
case 5: return "" + keskisyke;
case 6: return "" + maksimisyke;
case 7: return "" + kalorit;
default: return "Tietoa ei löydy!";
}
}
/**
* Asettaa k:n kentän arvoksi parametrina tuodun merkkijonon arvon
* @param k kuinka monennen kentän arvo asetetaan
* @param jono joka asetetaan kentän arvoksi
* @return null jos asettaminen onnistuu, muuten vastaava virheilmoitus.
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.aseta(1,"1.5.2020") === null;
* h.aseta(1,"1.13.2020") === "Tarkista kuukausi";
* h.aseta(1,"1.5.2022") === "Tarkista vuosi";
* h.aseta(2,"10") === null;
* h.aseta(2,"abc") === "Tarkista matka";
* h.aseta(3,"aika") === "Tarkista aika";
* h.aseta(5,"syke") === "Tarkista keskisyke";
* h.aseta(5,"100") === null;
* h.aseta(6,"syke") === "Tarkista maksimisyke";
* h.aseta(6,"100") === null;
* h.aseta(7,"kal") === "Tarkista kalorit";
* h.aseta(7,"100") === null;
* </pre>
*/
@Override
public String aseta(int k, String jono) {
if (jono == "") return "";
String tjono = jono.trim();
StringBuilder sb = new StringBuilder(tjono);
switch ( k ) {
case 1:
if (tjono.equals("")) return null;
try {
int tulos = Pvm.pvmParse(sb);
if (tulos == 1) return "Tarkista päivä";
if (tulos == 2) return "Tarkista kuukausi";
if (tulos == 3) return "Tarkista vuosi";
pvm = tjono;
} catch ( NumberFormatException ex ) {
return "Syötä päivämäärä muodossa pp.kk.vvvv" + ex;
}
return null;
case 2:
try {
if (Mjonot.erotaDouble(tjono, 0) == 0) return "Tarkista matka";
matka = Double.toString(Mjonot.erotaDouble(tjono, 0));
} catch ( NumberFormatException ex ) {
return "Tarkista matka" + ex.getMessage();
} return null;
case 3:
try {
int h = Mjonot.erotaInt(sb, -1);
int m = Mjonot.erotaInt(sb, -1);
if (h < 0 || m < 0 || m > 59) return "Tarkista aika";
if (tjono.charAt(2) != ':') return "Syötä aika muodossa hh:mm";
aika = Integer.toString(h) + ':' + Integer.toString(m);
} catch ( NumberFormatException ex ) {
return "Tarkista aika" + ex.getMessage();
}
return null;
case 4:
if (tjono.equals("")) return null;
try {
String etu = "-";
String luku = "";
if (tjono.indexOf('+') >= 0) etu = "";
if (tjono.charAt(0) == '-' || tjono.charAt(0) == '+') luku = tjono.substring(1);
else luku = tjono.substring(0);
if (Mjonot.erotaDouble(luku, 100) >= 100) return "Tarkista lämpötila";
lampotila = etu + luku;
} catch ( NumberFormatException ex ) {
return "Tarkista lämpötila" + ex.getMessage();
}
return null;
case 5:
if (tjono.equals("")) return null;
try {
double syke = Mjonot.erotaDouble(sb, -1);
if (syke < 0) return "Tarkista keskisyke";
keskisyke = Double.toString(syke);
} catch ( NumberFormatException ex ) {
return "Tarkista keskisyke" + ex.getMessage();
}
return null;
case 6:
if (tjono.equals("")) return null;
try {
double syke = Mjonot.erotaDouble(sb, -1);
if (syke < 0) return "Tarkista maksimisyke";
maksimisyke = Double.toString(syke);
} catch ( NumberFormatException ex ) {
return "Tarkista maksimisyke" + ex.getMessage();
}
return null;
case 7:
if (tjono.equals("")) return null;
try {
double kal = Mjonot.erotaDouble(sb, -1);
if (kal < 0) return "Tarkista kalorit";
kalorit = Double.toString(kal);
} catch ( NumberFormatException ex ) {
return "Tarkista kalorit" + ex.getMessage();
}
return null;
default: return "Virheellinen syöttö!";
}
}
/**
* Kloonataan hiihto
* @return Object kloonattu hiihto
* @example
* <pre name="test">
* #THROWS CloneNotSupportedException
* Hiihto h = new Hiihto(0);
* h.parse(" 1.5.2020 | 10.0 | 1:30");
* Hiihto kopio = h.clone();
* kopio.toString() === h.toString();
* h.parse(" 1.5.2020 | 20.0 | 1:00");
* kopio.toString().equals(h.toString()) === false;
* </pre>
*/
@Override
public Hiihto clone() throws CloneNotSupportedException {
Hiihto uusi;
uusi = (Hiihto) super.clone();
return uusi;
}
/**
* Selvittää harrastuksen tiedot | erotellusta merkkijonosta.
* Pitää huolen että seuraavaNro on suurempi kuin tuleva tunnusnro.
* @param rivi josta harrastuksen tiedot otetaan
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.parse("1 | 5 | 10.3.2020 | 20 | 1:30 | 150 ");
* h.getJasenID() === 5;
* h.toString().startsWith("1|5|10.3.2020|20|");
* h.parse("1| 20");
* h.getJasenID() === 20;
* h.toString().startsWith("1|20|");
* </pre>
*/
public void parse(String rivi) {
StringBuffer sb = new StringBuffer(rivi);
id = Mjonot.erota(sb, '|', id);
jasenID = Mjonot.erota(sb, '|', jasenID);
pvm = Mjonot.erota(sb, '|', pvm);
matka = Mjonot.erota(sb, '|', matka);
aika = Mjonot.erota(sb, '|', aika);
lampotila = Mjonot.erota(sb, '|', lampotila);
keskisyke = Mjonot.erota(sb, '|', keskisyke);
maksimisyke = Mjonot.erota(sb, '|', maksimisyke);
kalorit = Mjonot.erota(sb, '|', kalorit);
juoksevaNro++;
}
/**
* Palauttaa harrastuksen tiedot merkkijonona jonka voi tallentaa tiedostoon.
* @return harrastus tolppaeroteltuna merkkijonona
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.parse(" 1 | 3 | 31.3.2020 | 10 | 1:30| -5|180|200|800 ");
* h.toString() === "1|3|31.3.2020|10|1:30|-5|180|200|800";
* </pre>
*/
@Override
public String toString() {
return id + "|" + jasenID + "|" + pvm + "|" + matka + "|" + aika + "|" + lampotila + "|" + keskisyke + "|"
+ maksimisyke + "|" + kalorit;
}
/**
......@@ -49,7 +304,6 @@ public class Hiihto {
}
/**
* Haetaan hiihdon kaikki tiedot
* @return hiihtosuorituksen tiedot merkkijonotaulukkona
......@@ -57,12 +311,14 @@ public class Hiihto {
* <pre name="test">
* #import java.util.Arrays;
* Hiihto eka = new Hiihto(1);
* Arrays.toString(eka.getTiedot()) === "[5.3.2020, 20, 1:30, -5, 120, 180, 100]";
* eka.parse("1|1|1.1.2020|10|1:30|-5|180|200|800");
* eka.anna(7) === "800";
* Arrays.toString(eka.getTiedot()) === "[1.1.2020, 10, 1:30, -5, 180, 200, 800]";
* </pre>
*/
public String[] getTiedot() {
String[] tiedot = new String[] {pvm, Double.toString(matka), aika, Double.toString(lampotila),
Double.toString(keskisyke), Double.toString(maksimisyke), Double.toString(kalorit)};
String[] tiedot = new String[] {pvm, matka, aika, lampotila,
keskisyke, maksimisyke, kalorit};
return tiedot;
}
......
......@@ -2,44 +2,290 @@ package Tietorakenteet;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Random;
import fi.jyu.mit.ohj2.Mjonot;
/**
* @author MHo
* @version 20.2.2020
* Jasen -luokka, joka lisää jäsenen rekisteriin.
*/
public class Jasen {
public class Jasen implements Cloneable, Tietue {
private int id;
private String nimi = "";
private String syntAika = "";
private String eNimi = "";
private String sNimi = "";
private String sAika = "";
private String pKunta = "";
private int puh;
private String puh = "";
private String sPosti = "";
private int liittymisV;
private String lVuosi = "";
private static int juoksevaNro = 1;
/**
* Muodostaja
*/
public Jasen(){
id = juoksevaNro;
nimi = "Nokka Räkä";
syntAika = "01.08.1960";
pKunta = "Lahti";
puh = 0401234567;
sPosti = "nr@niilot.fi";
liittymisV = 2000; //new Random().nextInt((2020 - 1980) + 1) + 1980; //arpoo liittymisvuoden yksilöimistä varten
juoksevaNro++;
}
/**
* Tehdään identtinen klooni jäsenestä
* @return Object kloonattu jäsen
* @example
* <pre name="test">
* #THROWS CloneNotSupportedException
* Jasen jasen = new Jasen();
* jasen.parseJasen(" 3 | Ankka Aku | 123");
* Jasen kopio = jasen.clone();
* kopio.toString() === jasen.toString();
* jasen.parseJasen(" 4 | Ankka Tupu | 123");
* kopio.toString().equals(jasen.toString()) === false;
* </pre>
*/
@Override
public Jasen clone() throws CloneNotSupportedException {
Jasen uusi;
uusi = (Jasen) super.clone();
return uusi;
}
/**
* Muodostaja merkkijonosta
* @param rivi tiedostosta
* @example
* <pre name="test">
* Jasen j = new Jasen();
* j.parseJasen(" 3 | Ukko | Pekka ");
* j.toString() === "3|Ukko|Pekka|||||";
* </pre>
*/
public void parseJasen(String rivi){
StringBuilder sb = new StringBuilder(rivi);
id = Mjonot.erota(sb, '|', juoksevaNro);
if(id >= juoksevaNro) juoksevaNro = id + 1;
eNimi = Mjonot.erota(sb, '|', eNimi);
sNimi = Mjonot.erota(sb, '|', sNimi);
sAika = Mjonot.erota(sb, '|', sAika);
pKunta = Mjonot.erota(sb, '|', pKunta);
puh = Mjonot.erota(sb, '|', puh);
sPosti = Mjonot.erota(sb, '|', sPosti);
lVuosi = Mjonot.erota(sb, '|', lVuosi);
}
@Override
/**
* Palauttaa jäsenen tiedot merkkijonona jonka voi tallentaa tiedostoon.
* @return jäsen tolppaeroteltuna merkkijonona
* @example
* <pre name="test">
* Jasen jasen = new Jasen();
* jasen.parseJasen(" 3 | Ankka Aku | 31.3.2020 | Jykyla | 040123 | aku@posti.fi");
* jasen.toString().startsWith("3|Ankka Aku|31.3.2020|Jykyla|") === true; // on enemmän kuin 3 kenttää, siksi loppu |
* </pre>
*/
public String toString() {
return "" +
id + "|" + eNimi + "|" + sNimi + "|" + sAika + "|" + pKunta + "|" + puh + "|" + sPosti + "|" + lVuosi;
}
/**
* Antaa k:n kentän sisällön merkkijonona
* @param k monenenko kentän sisältö palautetaan
* @return kentän sisältö merkkijonona
* @example
* <pre name="test">
* Jasen j = new Jasen();
* j.parseJasen("1|Ukko|Pekka");
* j.anna(1) === "Ukko";
* j.anna(2) === "Pekka";
* </pre>
*/
@Override
public String anna(int k) {
switch ( k ) {
case 1: return "" + eNimi;
case 2: return "" + sNimi;
case 3: return "" + sAika;
case 4: return "" + pKunta;
case 5: return "" + puh;
case 6: return "" + sPosti;
case 7: return "" + lVuosi;
default: return "Tietoa ei löydy!";
}
}
/**
* Asettaa k:n kentän arvoksi parametrina tuodun merkkijonon arvon
* @param k kuinka monennen kentän arvo asetetaan
* @param jono joka asetetaan kentän arvoksi
* @return null jos asettaminen onnistuu, muuten vastaava virheilmoitus.
* @example
* <pre name="test">
* Jasen jasen = new Jasen();
* jasen.aseta(1,"harri") === null;
* jasen.aseta(2,"olli") === null;
* jasen.aseta(3,"01.10.1900") === null;
* jasen.aseta(3,"01.22.1900") === "Tarkista kuukausi";
* jasen.aseta(3,"01.10.800") === "Tarkista vuosi";
* jasen.aseta(4,"akaa") === null;
* jasen.aseta(4,"01") === "Paikkakunta ei saa sisältää numeroita";
* jasen.aseta(5,"12345678900") === "Tarkista puhelinnumero";
* jasen.aseta(5,"1234567890") === null;
* jasen.aseta(6,"kissa") === "@-merkki puuttuu!"
* jasen.aseta(7,"2000") === null;
* jasen.aseta(7,"00") === "Tarkista liittymisvuosi";
* </pre>
*/
@Override
public String aseta(int k, String jono) {
String tjono = jono.trim();
StringBuilder sb = new StringBuilder(tjono);
switch ( k ) {
case 1:
if (tjono.equals("")) return null;
String e1 = tjono.substring(0, 1).toUpperCase();
eNimi = e1 + tjono.substring(1);
return null;
case 2:
if (tjono.equals("")) return null;
String s1 = tjono.substring(0, 1).toUpperCase();
sNimi = s1 + tjono.substring(1);;
return null;
case 3:
if (tjono.equals("")) return null;
try {
int tulos = Pvm.pvmParse(sb);
if (tulos == 1) return "Tarkista päivä";
if (tulos == 2) return "Tarkista kuukausi";
if (tulos == 3) return "Tarkista vuosi";
sAika = tjono;
} catch ( NumberFormatException ex ) {
return "Syötä syntymäaika muodossa pp.kk.vvvv" + ex;
}
return null;
case 4:
if (tjono.equals("")) return null;
if (Mjonot.erotaDouble(sb, 0) != 0) return "Paikkakunta ei saa sisältää numeroita";
String p1 = tjono.substring(0, 1).toUpperCase();
pKunta = p1 + tjono.substring(1);
return null;
case 5:
try {
if (tjono.equals("")) return null;
if (tjono.length() > 10) return "Tarkista puhelinnumero";
puh = Mjonot.erotaEx(sb, '§', puh);
} catch ( NumberFormatException ex ) {
return "Tarkista puhelinnumero" + ex;
}
return null;
case 6:
try {
if (tjono.equals("")) return null;
if (tjono.indexOf("@") < 0) return "@-merkki puuttuu!";
sPosti = tjono;
} catch ( NumberFormatException ex ) {
return "Tarkista sähköposti" + ex;
}
return null;
case 7:
if (tjono.equals("")) return null;
try {
int a = Mjonot.erotaInt(tjono, 0);
if (a < 1900 || a > Calendar.getInstance().get(Calendar.YEAR)) return "Tarkista liittymisvuosi";
lVuosi = Integer.toString(a);
} catch ( NumberFormatException ex ) {
return "Tarkista liittymisvuosi" + ex;
}
return null;
default: return "Virheellinen syöttö!";
}
}
/**
* @return jäsenen tietojen määrän
*/
@Override
public int getKenttia() {
return 7;
}
/**
* @return ensimmäisen syötettävän kentän indeksi
*/
@Override
public int ekaKentta() {
return 1;
}
/**
* Palauttaa k:tta jäsenen kenttää vastaavan kysymyksen
* @param k kuinka monennen kentän kysymys palautetaan (0-alkuinen)
* @return k:netta kenttää vastaava kysymys
* @example
* <pre name="test">
* Jasen eka = new Jasen();
* eka.getKysymys(0) === "Virheellinen kenttä";
* eka.getKysymys(2) === "Sukunimi";
* eka.getKysymys(8) === "Virheellinen kenttä";
* </pre>
*/
@Override
public String getKysymys(int k) {
switch ( k ) {
case 1: return "Etunimi";
case 2: return "Sukunimi";
case 3: return "Syntymäaika";
case 4: return "Paikkakunta";
case 5: return "Puhelinnumero";
case 6: return "Sähköposti";
case 7: return "Liittymisvuosi";
default: return "Virheellinen kenttä";
}
}
/**
* Jäsenten vertailija
*/
public static class Vertailija implements Comparator<Jasen> {
private int k;
@SuppressWarnings("javadoc")
public Vertailija(int k) {
this.k = k;
}
@Override
public int compare(Jasen jasen1, Jasen jasen2) {
return jasen1.getKysymys(k).compareToIgnoreCase(jasen2.getKysymys(k));
}
}
/**
* @return jäsenen ID-numero
* @example
* <pre name="test">
* Jasen j = new Jasen();
* j.parseJasen("1|Ukko");
* j.getID() === 1;
* </pre>
*/
@Override
public int getID() {
return id;
}
......@@ -47,26 +293,39 @@ public class Jasen {
/**
* @return jäsenen nimi
* <pre name="test">
* Jasen j = new Jasen();
* j.parseJasen("1|Ukko|Pekka");
* j.getNimi() === "Ukko Pekka";
* </pre>
*/
@Override
public String getNimi() {
return nimi;
return eNimi + " " + sNimi;
}
/**
* @return paikkakunta
public String tarkista() {
return pKunta;
}
*/
/**
* Haetaan henkilön tiedot
* @return jasenen tiedot merkkijono -taulukkona
* @example
* <pre name="test">
* #import java.util.Arrays;
* Jasen testi = new Jasen();
* Arrays.toString(testi.getTiedot()) === "[Nokka Räkä, 01.08.1960, Lahti, 0401234567, nr@niilot.fi, 2000]";
* </pre>
*/
* testi.parseJasen("Ukko|Pekka|1.1.2000|Akaa|040|@mail|2020");
* Arrays.toString(testi.getTiedot()) === "[Ukko, Pekka, 1.1.2000, Akaa, 040, @mail, 2020]";
public String[] getTiedot() {
String[] tiedot = new String[] {nimi, syntAika, pKunta, Integer.toString(puh), sPosti, Integer.toString(liittymisV)};
String[] tiedot = new String[] {eNimi, sNimi, sAika, pKunta, puh, sPosti, lVuosi};
return tiedot;
}
*/
/**
......@@ -74,9 +333,9 @@ public class Jasen {
* @param out tietovirta johon tulostetaan
*/
public void tulosta(PrintStream out) {
out.println(String.format("%03d", id, 3) + " " + nimi);
out.println(syntAika + " " + pKunta + " " + puh + " " + sPosti);
out.print("Liittynyt " + liittymisV + ".");
out.println(String.format("%03d", id, 3) + ' ' + eNimi + ' ' + sNimi);
out.println(sAika + ' ' + pKunta + ' ' + puh + ' ' + sPosti);
out.print("Liittynyt " + lVuosi + ".");
}
......
package Tietorakenteet;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import fi.jyu.mit.ohj2.WildChars;
/**
* @author MHo
* @version 20.2.2020
......@@ -8,10 +22,8 @@ package Tietorakenteet;
public class Jasenet {
private static int MAX_JASENIA = 5;
private int lkm = 0;
private String tiedostonNimi = "";
private String tiedostonNimi = "nimet.dat";
private Jasen alkiot[] = new Jasen[MAX_JASENIA];
//private ArrayList<Jasen> jasenisto = new ArrayList<Jasen>();
/**
* Muodostaja
......@@ -56,6 +68,36 @@ public class Jasenet {
}
/**
* 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ä.
* @param jasen lisättävän jäsenen viite.
* @throws SailoException jos tietorakenne on jo täynnä
* <pre name="test">
* #THROWS SailoException,CloneNotSupportedException
* #PACKAGEIMPORT
* Jasenet jasenet = new Jasenet();
* Jasen eka = new Jasen(), toka = new Jasen();
* jasenet.getLkm() === 0;
* jasenet.korvaaTaiLisaa(eka); jasenet.getLkm() === 1;
* jasenet.korvaaTaiLisaa(toka); jasenet.getLkm() === 2;
* Jasen kol = toka.clone();
* jasenet.korvaaTaiLisaa(kol); jasenet.getLkm() === 2;
* </pre>
*/
public void korvaaTaiLisaa(Jasen jasen) throws SailoException {
int id = jasen.getID();
if (id < 0) return;
for (int i = 0; i < lkm; i++) {
if ( alkiot[i].getID() == id ) {
alkiot[i] = jasen;
return;
}
}
lisaa(jasen);
}
/**
* Palauttaa viitteen i:teen jäseneen.
* @param i monennenko jäsenen viite halutaan
......@@ -81,23 +123,132 @@ public class Jasenet {
}
/**
* Palauttaa "taulukossa" hakuehtoon vastaavien jäsenten viitteet
* @param hakuehto hakuehto
* @param k etsittävän kentän indeksi
* @return tietorakenteen löytyneistä jäsenistä
* @example
* <pre name="test">
* #THROWS SailoException
* #import java.util.*;
* Jasenet jasenet = new Jasenet();
* Jasen eka = new Jasen(); eka.parseJasen("1|Ukko|Pekka|Akaa|");
* Jasen toka = new Jasen(); toka.parseJasen("2|Akka|Pekka|Helsinki|");
* Jasen kol = new Jasen(); kol.parseJasen("3|Jussi|Mietaa|Kurikka|");
* jasenet.lisaa(eka); jasenet.lisaa(toka); jasenet.lisaa(kol);
* List<Jasen> loytyneet;
* loytyneet = (List<Jasen>)jasenet.etsi("*k*",1);
* loytyneet.size() === 2;
* loytyneet = (List<Jasen>)jasenet.etsi("*P*",2);
* loytyneet.size() === 2;
* loytyneet.get(0) == eka === true;
* loytyneet.get(1) == toka === true;
* loytyneet = (List<Jasen>)jasenet.etsi(null,-1);
* loytyneet.size() === 3;
* </pre>
*/
public Collection<Jasen> etsi(String hakuehto, int k) {
String ehto = "*";
if ( hakuehto != null && hakuehto.length() > 0 ) ehto = hakuehto;
int hk = k;
if ( hk < 0 ) hk = 1;
Collection<Jasen> loytyneet = new ArrayList<Jasen>();
for (int i = 0; i < alkiot.length; i++) {
if (alkiot[i] == null) break;
if (WildChars.onkoSamat(alkiot[i].anna(hk), ehto)) loytyneet.add(alkiot[i]);
}
//Collections.sort(loytyneet, new Jasen.Vertailija(hk));
return loytyneet;
}
/**
* Lukee jäsenistön tiedostosta. Kesken.
* @param hakemisto tiedoston hakemisto
* Lukee jäsenistön tiedostosta.
* @throws SailoException jos lukeminen epäonnistuu
* @example
* <pre name="test">
* #THROWS SailoException
* #import java.io.File;
* Jasenet jasenet = new Jasenet();
* Jasen aku1 = new Jasen(), aku2 = new Jasen();
* File ftied = new File("nimet.dat");
* ftied.delete();
* jasenet.lueTiedostosta(); #THROWS SailoException
* jasenet.lisaa(aku1);
* jasenet.lisaa(aku2);
* jasenet.tallenna();
* jasenet = new Jasenet(); // Poistetaan vanhat luomalla uusi
* jasenet.lueTiedostosta(); // johon ladataan tiedot tiedostosta.
* jasenet.lisaa(aku2);
* jasenet.tallenna();
* ftied.delete() === true;
* File fbak = new File("nimet.bak");
* fbak.delete() === true;
* </pre>
*/
public void lueTiedostosta(String hakemisto) throws SailoException {
tiedostonNimi = hakemisto + "/nimet.dat";
throw new SailoException("Ei osata vielä lukea tiedostoa " + tiedostonNimi);
public void lueTiedostosta() throws SailoException {
//setTiedostonPerusNimi(tied);
try ( BufferedReader fi = new BufferedReader(new FileReader("nimet.dat"))) {
tiedostonNimi = fi.readLine();
if ( tiedostonNimi == null ) throw new SailoException("Kerhon nimi puuttuu");
String rivi = fi.readLine();
if ( rivi == null ) throw new SailoException("Maksimikoko puuttuu");
// int maxKoko = Mjonot.erotaInt(rivi,10); // tehdään jotakin
while ( (rivi = fi.readLine()) != null ) {
rivi = rivi.trim();
if ( "".equals(rivi) || rivi.charAt(0) == ';' ) continue;
Jasen jasen = new Jasen();
jasen.parseJasen(rivi); // voisi olla virhekäsittely
lisaa(jasen);
}
//muutettu = false;
} catch ( FileNotFoundException e ) {
throw new SailoException("Tiedosto " + tiedostonNimi + " ei aukea");
} catch ( IOException e ) {
throw new SailoException("Ongelmia tiedoston kanssa: " + e.getMessage());
}
}
/**
* Tallentaa jäsenistön tiedostoon. Kesken.
* Tallentaa jäsenistön tiedostoon.
* Tiedoston muoto:
* <pre>
* Hiihtorekisteri
* 5
* 1|Henri Havu|13.3.2020|Haparanda|040546|havu@niilot.fi|1990
* 2|Kalle Kone|12.5.2021|Torneå|040123|kone@niilot.fi|1989
* </pre>
* @throws SailoException jos talletus epäonnistuu
*/
public void talleta() throws SailoException {
throw new SailoException("Ei osata vielä tallettaa tiedostoa " + tiedostonNimi);
public void tallenna() throws SailoException {
//if ( !muutettu ) return;
File fbak = new File("nimet.bak");
File ftied = new File("nimet.dat");
fbak.delete(); // if .. System.err.println("Ei voi tuhota");
ftied.renameTo(fbak); // if .. System.err.println("Ei voi nimetä");
try ( PrintWriter fo = new PrintWriter(new FileWriter(ftied.getCanonicalPath())) ) {
fo.println("nimet.dat");
fo.println(MAX_JASENIA);
//fo.println(alkiot.length);
for (Jasen jasen : alkiot) {
if (jasen == null) continue;
fo.println(jasen.toString());
}
// catch ( IOException e ) { // ei heitä poikkeusta
// throw new SailoException("Tallettamisessa ongelmia: " + e.getMessage());
} catch ( FileNotFoundException ex ) {
throw new SailoException("Tiedosto " + ftied.getName() + " ei aukea");
} catch ( IOException ex ) {
throw new SailoException("Tiedoston " + ftied.getName() + " kirjoittamisessa ongelmia");
}
//muutettu = false;
}
......@@ -117,7 +268,54 @@ public class Jasenet {
public int getLkm() {
return lkm;
}
/**
* Poistaa jäsenen jolla on valittu tunnusnumero
* @param id poistettavan jäsenen tunnusnumero
* @return 1 jos poistettiin, 0 jos ei löydy
* @example
* <pre name="test">
* #THROWS SailoException
* Jasenet jasenet = new Jasenet();
* Jasen eka = new Jasen(), toka = new Jasen();
* int id1 = eka.getID();
* jasenet.lisaa(eka); jasenet.lisaa(toka);
* jasenet.poista(id1+1) === 1;
* jasenet.getLkm() === 1;
* jasenet.poista(id1) === 1; jasenet.getLkm() === 0;
* </pre>
*
*/
public int poista(int id) {
int ind = etsiID(id);
if (ind < 0) return 0;
lkm--;
for (int i = ind; i < lkm; i++)
alkiot[i] = alkiot[i + 1];
alkiot[lkm] = null;
return 1;
}
/**
* Etsii jäsenen id:n perusteella
* @param id tunnusnumero, jonka mukaan etsitään
* @return löytyneen jäsenen indeksi tai -1 jos ei löydy
* <pre name="test">
* #THROWS SailoException
* Jasenet jasenet = new Jasenet();
* Jasen eka = new Jasen(), toka = new Jasen();
* int id1 = eka.getID();
* jasenet.lisaa(eka); jasenet.lisaa(toka);
* jasenet.etsiID(id1+1) === 1;
* </pre>
*/
public int etsiID(int id) {
for (int i = 0; i < lkm; i++)
if (id == alkiot[i].getID()) return i;
return -1;
}
/**
* @param args ei käytössä
......
package Tietorakenteet;
import java.util.Calendar;
import fi.jyu.mit.ohj2.*;
/**
* Alustava luokka päivämäärää varten
* @author MHo
* @version 1.0, 07.02.2003
* @version 1.1, 14.02.2003
* @version 1.2, 17.02.2003
* @version 1.3, 11.02.2008
*/
public class Pvm {
private int pv;
private int kk;
private int vv;
/**
* Muuttaa päivämäärän nykypäivälle.
* Todo: pitää vaihtaa hakemaan päivämäärä oikeasti.
* Mutta perinnässäkään ei nyt saa käyttää enempää attribuutteja kuin tässä on
*/
public void paivays() {
pv = Calendar.getInstance().get(Calendar.DATE);;
kk = Calendar.getInstance().get(Calendar.MONTH);;
vv = Calendar.getInstance().get(Calendar.YEAR);;
}
/**
* Alustetaan päivämäärä. 0-arvot eivät muuta vastaavaa attribuuttia
* @param ipv päivän alustus
* @param ikk kuukauden alustus
* @param ivv vuoden alustus
* @return true jos päivämäärä okein, muuten false
* @example
* <pre name="test">
* Pvm pvm = new Pvm(12, 2, 2020);
* pvm.toString() === "12.2.2020";
* pvm.alusta(12, 13, 2020);
* pvm.toString() === "12.2.2020";
* pvm.alusta(12, 0, 2020);
* pvm.toString() === "12.2.2020";
* </pre>
*/
public static int alusta(int ipv, int ikk, int ivv) {
int p = ipv; int k = ikk; int v = ivv;
if (p == 0) return 1; //ipv = Calendar.getInstance().get(Calendar.DATE);;
if (k == 0 || k > 12 ) return 2; //ikk = Calendar.getInstance().get(Calendar.MONTH);;
if (v < 1900 || v > Calendar.getInstance().get(Calendar.YEAR)) return 3;
//v = Calendar.getInstance().get(Calendar.YEAR);;
if (p > KPITUUDET[karkausvuosi(ivv)][ikk-1]) return 1;
return 0;
/**
if ( ipv > 0 ) this.pv = ipv;
if ( ikk > 0 ) this.kk = ikk;
if ( ivv > 0 ) this.vv = ivv;
if ( this.vv < 50 ) this.vv += 2000;
if ( this.vv < 100 ) this.vv += 1900;
*/
}
public static final int KPITUUDET[][] = {
// 1 2 3 4 5 6 7 8 9 10 11 12
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
};
/**
* Palautetaan tieto siitä onko tutkittava vuosi karkausvuosi vai ei
* @param vv tutkittava vuosi
* @return 1 jos on karkausvuosi ja 0 jos ei ole
* @example
* <pre name="test">
* karkausvuosi(1900) === 0
* karkausvuosi(1900) === 0
* karkausvuosi(1901) === 0
* karkausvuosi(1996) === 1
* karkausvuosi(2000) === 1
* karkausvuosi(2001) === 0
* karkausvuosi(2004) === 1
* </pre>
*/
public static int karkausvuosi(int vv) {
if ( vv % 400 == 0 ) return 1;
if ( vv % 100 == 0 ) return 0;
if ( vv % 4 == 0 ) return 1;
return 0;
}
/** Alustetaan kaikki attribuutit oletusarvoon
public Pvm() {
this(0, 0, 0);
}
/**
* Alustetaan kuukausi ja vuosi oletusarvoon
* @param pv päivän alustusarvo
public Pvm(int pv) {
this(pv, 0, 0);
}
/**
* Alustetaan vuosi oletusarvoon
* @param pv päivän alustusarvo
* @param kk kuukauden oletusarvo
public Pvm(int pv, int kk) {
this(pv, kk, 0);
}
/**
* Alustetaan vuosi oletusarvoon
* @param pv päivän alustusarvo
* @param kk kuukauden oletusarvo
* @param vv vuoden alustusarvo
public Pvm(int pv, int kk, int vv) {
paivays();
alusta(pv, kk, vv);
}
/**
* Muodostaja. Alustetaan päivämäärä merkkijonosta
* @param s muotoa 12.3.2008 oleva merkkijono
public Pvm(String s) {
paivays();
pvmParse(s);
}
*/
/**
* Ottaa päivämäärän tiedot merkkijonosta joka on muotoa 17.2.2007
* Jos joku osa puuttuu, sille käytetään tämän päivän arvoa oletuksena.
* @param sb tutkittava merkkijono
* @return numeroilmoituksen siitä, onko päivämäärä oikein
*/
protected static int pvmParse(StringBuilder sb) {
int p = Mjonot.erota(sb, '.', 0);
int k = Mjonot.erota(sb, '.', 0);
int v = Mjonot.erota(sb, ' ', 0);
return alusta(p, k, v);
// tai alusta(Mjonot.erota(sb,'.',0),Mjonot.erota(sb,'.',0),Mjonot.erota(sb,'.',0));
}
/**
* Ottaa päivämäärän tiedot merkkijonosta joka on muotoa 17.2.2007
* Jos joku osa puuttuu, sille käytetään tämän päivän arvoa oletuksena.
* @param s tutkittava merkkijono
*/
protected final void pvmParse(String s) {
pvmParse(new StringBuilder(s));
}
/**
* Ottaa päivämäärän tiedot merkkijonosta joka on muotoa 17.2.2007
* Jos joku osa puuttuu, sille käytetään tämän päivän arvoa oletuksena.
* @param s tutkittava merkkijono
*
* @example
* <pre name="test">
* Pvm pvm = new Pvm(11,3,2003);
* pvm.parse("12"); pvm.toString() === "12.3.2003";
* pvm.parse("..2001"); pvm.toString() === "12.3.2001";
* pvm.parse("..2009 14:30"); pvm.toString() === "12.3.2009";
* </pre>
*/
public void parse(String s) {
pvmParse(s);
}
/**
* Ottaa päivämäärän tiedot merkkijonosta joka on muotoa 17.2.2007
* Jos joku osa puuttuu, sille käytetään tämän päivän arvoa oletuksena.
* Merkkijonosta otetaan pois vain se osa, jota tarvitaan.
* @param sb tutkittava merkkijono
*
* @example
* <pre name="test">
* Pvm pvm = new Pvm(11,3,2003);
* StringBuilder jono = new StringBuilder("12");
* pvm.parse(jono); pvm.toString() === "12.3.2003"; jono.toString() === "";
* jono = new StringBuilder("..2001");
* pvm.parse(jono); pvm.toString() === "12.3.2001"; jono.toString() === "";
* jono = new StringBuilder("..2009 14:30");
* pvm.parse(jono); pvm.toString() === "12.3.2009"; jono.toString() === "14:30";
* </pre>
*/
public void parse(StringBuilder sb) {
pvmParse(sb);
}
/**
* Päivämäärä merkkijonona
* @return päivämäärä muodossa 17.2.2007
* @example
* <pre name="test">
* Pvm tammi2011 = new Pvm(1,1,2011);
* tammi2011.toString() === "1.1.2011"
* Pvm helmi2011 = new Pvm(1,2,2011);
* helmi2011.toString() === "1.2.2011"
* Pvm tanaan = new Pvm(14,2,2011);
* tanaan.toString() === "14.2.2011"
* Pvm maalis97 = new Pvm(1,3,1997);
* maalis97.toString() === "1.3.1997"
* </pre>
*/
@Override
public String toString() {
return pv + "." + kk + "." + vv;
}
/**
* @return päivän arvo
* @example
* <pre name="test">
* Pvm pv = new Pvm("14.2.2011");
* pv.getPv() === 14;
* </pre>
*/
public int getPv() {
return pv;
}
/**
* @return kuukauden arvo
* @example
* <pre name="test">
* Pvm pv = new Pvm("14.2.2011");
* pv.getKk() === 2;
* </pre>
*/
public int getKk() {
return kk;
}
/**
* @return vuoden arvo
* @example
* <pre name="test">
* Pvm pv = new Pvm("14.2.2011");
* pv.getVv() === 2011;
* </pre>
*/
public int getVv() {
return vv;
}
/**
* Testataan päivämäärä-luokkaa
* @param args ei käytössä
*/
public static void main(String[] args) {
Pvm pvm = new Pvm();
pvm.parse("12.1.1995");
System.out.println(pvm);
pvm.parse("15.3");
System.out.println(pvm);
pvm.parse("14");
System.out.println(pvm.getPv());
}
/**
* @param pv1 1. päivämäärä
* @param pv2 2. päivämäärä
* @return -1 jos pv1 ennen pv2
* return 0 jos pv:t ovat samat
* return 1 muissa tapauksissa
* @example
* <pre name="test">
* Pvm pv1 = new Pvm("12.2.2020");
* Pvm pv2 = new Pvm("12.2.2020");
* compareTo(pv1, pv2) === 0;
* pv1 = new Pvm("12.2.2020");
* pv2 = new Pvm("13.2.2020");
* compareTo(pv1, pv2) === -1;
* pv1 = new Pvm("12.2.2020");
* pv2 = new Pvm("12.3.2020");
* compareTo(pv1, pv2) === -1;
* pv1 = new Pvm("12.2.2020");
* pv2 = new Pvm("12.2.2021");
* compareTo(pv1, pv2) === -1;
* </pre>
* */
public static int compareTo(Pvm pv1, Pvm pv2) {
if (pv1.toString().equals(pv2.toString())) return 0;
if (pv1.getVv() < pv2.getVv()
|| (pv1.getVv() == pv2.getVv() && pv1.getKk() < pv2.getKk())
|| (pv1.getKk() == pv2.getKk() && pv1.getPv() < pv2.getPv())
)return -1;
return 1;
}
/**
* Metodi päivämäärien vertailuun
* @param pv2 Pvm johon verrataan
* @return kumpi Pvm on pienempi
* @example
* <pre name="test">
* Pvm pv1 = new Pvm("12.2.2020");
* Pvm pv2 = new Pvm("12.2.2020");
* pv1.compareTo(pv2) === 0;
* pv2 = new Pvm("13.2.2020");
* pv1.compareTo(pv2) === -1;
* pv2 = new Pvm("12.3.2020");
* pv1.compareTo(pv2) === -1;
* pv2 = new Pvm("12.2.2021");
* pv1.compareTo(pv2) === -1;
* pv2 = new Pvm("11.2.2020");
* pv1.compareTo(pv2) === 1;
* </pre>
*/
public int compareTo(Pvm pv2) {
return compareTo(this, pv2);
}
/**
* Metodilla selvitetään, ovatko päivämäärät samat
* @param pv2 Pvm johon verrataan
* @return kumpi Pvm on pienempi
* @example
* <pre name="test">
* Pvm pv1 = new Pvm("12.2.2020");
* Pvm pv2 = new Pvm("12.2.2020");
* pv1.equals(pv2) === true;
* pv2 = new Pvm("13.2.2020");
* pv1.equals(pv2) === false;
* pv2 = new Pvm("12.3.2020");
* pv1.equals(pv2) === false;
* pv2 = new Pvm("12.2.2021");
* pv1.equals(pv2) === false;
* pv2 = new Pvm("11.2.2020");
* pv1.equals(pv2) === false;
* </pre>
*/
public boolean equals(Pvm pv2) {
if (compareTo(this, pv2) == 0) return true;
return false;
}
}
\ No newline at end of file
package Tietorakenteet;
import java.util.ArrayList;
import java.util.Collection;
/**
* @author MHo
......@@ -8,14 +9,15 @@ import java.util.ArrayList;
* Hiihtorekisterin jasenet, joka lisää ja poistaa jäseniä.
*/
public class Rekisteri {
private final Jasenet jasenet = new Jasenet();
private final Hiihdot hiihdot = new Hiihdot();
private Jasenet jasenet = new Jasenet();
private Hiihdot hiihdot = new Hiihdot();
/**
* Muodostaja
*/
public Rekisteri(){
//
}
......@@ -27,10 +29,9 @@ public class Rekisteri {
* Rekisteri rekisteri = new Rekisteri();
* Jasen eka = new Jasen();
* Jasen toka = new Jasen();
* Jasenet jasenet = new Jasenet();
* rekisteri.lisaa(eka);
* rekisteri.lisaa(toka);
* jasenet.getLkm() === 2;
* rekisteri.getLkm() === 2;
* </pre>
*/
public void lisaa(Jasen jasen){
......@@ -38,6 +39,41 @@ public class Rekisteri {
}
/**
* 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ä.
* @param jasen lisätäävän jäsenen viite. Huom tietorakenne muuttuu omistajaksi
* @throws SailoException jos tietorakenne on jo täynnä
* <pre name="test">
* #THROWS SailoException,CloneNotSupportedException
* #PACKAGEIMPORT
* Rekisteri R = new Rekisteri();
* Jasen eka = new Jasen(), toka = new Jasen();
* R.getLkm() === 0;
* R.korvaaTaiLisaa(eka); R.getLkm() === 1;
* R.korvaaTaiLisaa(toka); R.getLkm() === 2;
* Jasen kol = toka.clone();
* R.korvaaTaiLisaa(kol); R.getLkm() === 2;
* </pre>
*/
public void korvaaTaiLisaa(Jasen jasen) throws SailoException {
jasenet.korvaaTaiLisaa(jasen);
}
/**
* Korvaa hiihdon tietorakenteessa.
* Etsitään samalla id:llä oleva hiihto tai lisätään uutena hiihtona.
* @param h lisättävän hiihto.
* @throws SailoException jos tietorakenne on jo täynnä
*/
public void korvaaTaiLisaa(Hiihto h) throws SailoException {
hiihdot.korvaaTaiLisaa(h);
}
/**
* @param i monennenko jäsenen viite haetaan
* @return viite jäseneen, jonka indeksi on i
......@@ -46,9 +82,8 @@ public class Rekisteri {
* Rekisteri rekisteri = new Rekisteri();
* Jasen eka = new Jasen();
* Jasen toka = new Jasen();
* Jasenet jasenet = new Jasenet();
* jasenet.lisaa(eka);
* jasenet.lisaa(toka);
* rekisteri.lisaa(eka);
* rekisteri.lisaa(toka);
* rekisteri.annaJasen(0) === eka;
* </pre>
*/
......@@ -57,6 +92,30 @@ public class Rekisteri {
}
/**
* Palauttaa "taulukossa" hakuehtoon vastaavien jäsenten viitteet
* @param hakuehto hakuehto
* @param k etsittävän kentän indeksi
* @return tietorakenteen löytyneistä jäsenistä
* @throws SailoException Jos jotakin menee väärin
* @example
* <pre name="test">
* #THROWS CloneNotSupportedException, SailoException
* Rekisteri R = new Rekisteri();
* Jasen eka = new Jasen();
* eka.aseta(1,"Pekka");
* R.lisaa(eka);
* Collection<Jasen> loytyneet = R.etsi("*Pe*",1);
* loytyneet.size() === 1;
* Iterator<Jasen> it = loytyneet.iterator();
* it.next() == eka === true;
* </pre>
*/
public Collection<Jasen> etsi(String hakuehto, int k) throws SailoException {
return jasenet.etsi(hakuehto, k);
}
/**
* Lisää hiihto listaan.
* @param hiihto lisättävän hiihdon viite
......@@ -98,15 +157,13 @@ public class Rekisteri {
* @return halutun jäsenen kaikki hiihdot
* @example
* <pre name="test">
* Rekisteri rekisteri = new Rekisteri();
* Hiihto eka = new Hiihto(1);
* Hiihto toka = new Hiihto(1);
* Hiihto kolmas = new Hiihto(2);
* Rekisteri rekisteri = new Rekisteri();
* rekisteri.lisaaHiihto(eka);
* rekisteri.lisaaHiihto(toka);
* rekisteri.lisaaHiihto(kolmas);
* rekisteri.getJasenenHiihdot(1) === "[eka, toka]";
* rekisteri.getJasenenHiihdot(2) === "[kolmas]";
* </pre>
*/
public ArrayList<Hiihto> getJasenenHiihdot(int id) {
......@@ -115,24 +172,76 @@ public class Rekisteri {
/**
* Lukee jäsenistön tiedostosta. TODO lukeminen tiedostosta
* @param nimi jota käytetään lukemisessa
* Lukee rekisterin tiedot tiedostosta
* @throws SailoException jos lukeminen epäonnistuu
* @example
* <pre name="test">
* #THROWS SailoException
* #import java.io.*;
* #import java.util.*;
* Rekisteri r = new Rekisteri();
* Jasen j1 = new Jasen(); Jasen j2 = new Jasen();
* Hiihto h1 = new Hiihto(1);
* Hiihto h2 = new Hiihto(1);
* Hiihto h3 = new Hiihto(2);
* Hiihto h4 = new Hiihto(2);
* File fjas = new File("nimet.dat");
* File fhiih = new File("hiihdot.dat");
* fjas.delete();
* fhiih.delete();
* r.lueTiedostosta(); #THROWS SailoException
* r.lisaa(j1);
* r.lisaa(j2);
* r.lisaaHiihto(h1);
* r.lisaaHiihto(h2);
* r.lisaaHiihto(h3);
* r.lisaaHiihto(h4);
* r.tallenna();
* r = new Rekisteri();
* r.lueTiedostosta();
* r.lisaa(j2);
* r.lisaaHiihto(h4);
* r.tallenna();
* fjas.delete() === true;
* fhiih.delete() === true;
* File fjasbak = new File("nimet.bak");
* File fhbak = new File("hiihdot.bak");
* fjasbak.delete() === true;
* fhbak.delete() === true;
* </pre>
*/
public void lueTiedostosta(String nimi) throws SailoException {
jasenet.lueTiedostosta(nimi);
public void lueTiedostosta() throws SailoException {
jasenet = new Jasenet();
hiihdot = new Hiihdot();
jasenet.lueTiedostosta();
hiihdot.lueTiedostosta();
}
/**
* Poistaa jäsenet ja hiihdot, joilla on annettu nro
* TODO jäsenien ja hiihtojen poisto ko. luokista.
* Tallettaa kerhon tiedot tiedostoon
* Tallenttaa kerhon tiedot tiedostoon.
* Vaikka jäsenten tallettamien epäonistuisi, niin yritetään silti tallettaa
* harrastuksia ennen poikkeuksen heittämistä.
* @throws SailoException jos tallettamisessa ongelmia
*/
public void talleta() throws SailoException{
jasenet.talleta();
public void tallenna() throws SailoException {
String virhe = "";
try {
jasenet.tallenna();
} catch ( SailoException ex ) {
virhe = ex.getMessage();
}
try {
hiihdot.tallenna();
} catch ( SailoException ex ) {
virhe += ex.getMessage();
}
if ( !"".equals(virhe) ) throw new SailoException(virhe);
}
/**
* @return jäsenistön lkm
......@@ -167,6 +276,70 @@ public class Rekisteri {
public int getHiihdot() {
return hiihdot.getHiihdot();
}
/**
* @param j jäsen jonka kilometrit lasketaan
* @return jäsenen hiihtojen yhteiskilometrit
* @example
* <pre name="test">
* Rekisteri R = new Rekisteri();
* Jasen j = new Jasen();
* R.lisaa(j);
* Hiihto h1 = new Hiihto(1);
* h1.aseta(2, "10");
* R.lisaaHiihto(h1);
* R.laskeKm(j) === "10.0";
* Hiihto h2 = new Hiihto(1);
* h2.aseta(2, "10");
* R.lisaaHiihto(h2);
* R.laskeKm(j) === "20.0";
* </pre>
*/
public String laskeKm(Jasen j) {
return hiihdot.laskeKm(j);
}
/**
* Poistaa hiihtäjän ja kaikki hänen hiihtonsa
* @param jasen hiihtäjä jokapoistetaan
* @return montako jäsentä poistettiin
* @example
* <pre name="test">
* #THROWS Exception
* Rekisteri rekisteri = new Rekisteri();
* Jasen eka = new Jasen();
* rekisteri.lisaa(eka);
* rekisteri.getLkm() === 1;
* rekisteri.poistaHiihtaja(eka) === 1;
* rekisteri.getLkm() === 0;
* </pre>
*/
public int poistaHiihtaja(Jasen jasen) {
if ( jasen == null ) return 0;
int ret = jasenet.poista(jasen.getID());
hiihdot.poistaHiihdot(jasen.getID());
return ret;
}
/**
* @param h hiihto joka poistetaan
* @return true jos poisto onnistui
* @example
* <pre name="test">
* Rekisteri R = new Rekisteri();
* Hiihto h1 = new Hiihto(0); Hiihto h2 = new Hiihto(0);
* R.lisaaHiihto(h1); R.lisaaHiihto(h2);
* R.getHiihdot() === 2;
* R.poistaHiihto(h1) === true;
* R.getHiihdot() === 1;
* </pre>
*/
public boolean poistaHiihto(Hiihto h) {
return hiihdot.poista(h);
}
/**
* @param args ei käytössä
*/
......
package Tietorakenteet;
/**
* Rajapinta tietueelle johon voidaan taulukon avulla rakentaa
* "attribuutit".
* @author vesal
* @version Mar 23, 2012
* @example
*/
public interface Tietue {
/**
* @return tietueen kenttien lukumäärä
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.getKenttia() === 7;
* </pre>
*/
public abstract int getKenttia();
/**
* @return ensimmäinen käyttäjän syötettävän kentän indeksi
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.ekaKentta() === 1;
* </pre>
*/
public abstract int ekaKentta();
/**
* @param k minkä kentän kysymys halutaan
* @return valitun kentän kysymysteksti
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.getKysymys(1) === "Päivämäärä";
* </pre>
*/
public abstract String getKysymys(int k);
/**
* @param k Minkä kentän sisältö halutaan
* @return valitun kentän sisältö
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.parse("1|1| 1.5.2020 | 10.0 | 1:30 | -5 | 180 | 200 | 200 ");
* h.anna(1) === "1.5.2020";
* h.anna(2) === "10.0";
* h.anna(3) === "1:30";
* h.anna(5) === "180";
* </pre>
*/
public abstract String anna(int k);
/**
* Asetetaan valitun kentän sisältö. Mikäli asettaminen onnistuu,
* palautetaan null, muutoin virheteksti.
* @param k minkä kentän sisältö asetetaan
* @param s asetettava sisältö merkkijonona
* @return null jos ok, muuten virheteksti
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.aseta(3,"1:30") === null;
* h.aseta(4,"käpy") === null;
* </pre>
*/
public abstract String aseta(int k, String s);
/**
* Tehdään identtinen klooni tietueesta
* @return kloonattu tietue
* @throws CloneNotSupportedException jos kloonausta ei tueta
* @example
* <pre name="test">
* #THROWS CloneNotSupportedException
* Hiihto h = new Hiihto(0);
* h.parse(" 1.5.2020 | 10.0 | 1:30 | 180 | 200 ");
* Object kopio = h.clone();
* kopio.toString() === h.toString();
* h.parse(" 1.5.2020 | 2.0 | 0:30 | 120 | 130 ");
* kopio.toString().equals(h.toString()) === false;
* kopio instanceof Hiihto === true;
* </pre>
*/
public abstract Tietue clone() throws CloneNotSupportedException;
/**
* Palauttaa tietueen tiedot merkkijonona jonka voi tallentaa tiedostoon.
* @return tietue tolppaeroteltuna merkkijonona
* @example
* <pre name="test">
* Hiihto h = new Hiihto(0);
* h.parse("1| 0| 1.5.2020 | 10.0 | 1:30 | -5 | 100 | 120 | 200 ");
* h.toString() === "1|0|1.5.2020|10.0|1:30|-5|100|120|200";
* </pre>
*/
@Override
public abstract String toString();
/**
* @return hiihtäjän nimi
*/
public abstract String getNimi();
/**
* @return hiihtäjän ID
*/
public abstract int getID();
}
\ No newline at end of file
package Tietorakenteet.test;
// Generated by ComTest BEGIN
import Tietorakenteet.*;
import java.io.File;
import static org.junit.Assert.*;
import org.junit.*;
import Tietorakenteet.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2020.03.27 13:10:56 // Generated by ComTest
* @version 2020.04.27 13:17:15 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
......@@ -16,37 +17,119 @@ public class HiihdotTest {
// Generated by ComTest BEGIN
/** testAnna37 */
/** testLisaa34 */
@Test
public void testLisaa34() { // Hiihdot: 34
Hiihdot ht = new Hiihdot();
Hiihto h = new Hiihto(0);
ht.lisaa(h);
assertEquals("From: Hiihdot line: 38", 1, ht.getHiihdot());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testKorvaaTaiLisaa52
* @throws SailoException when error
* @throws CloneNotSupportedException when error
*/
@Test
public void testKorvaaTaiLisaa52() throws SailoException,CloneNotSupportedException { // Hiihdot: 52
Hiihdot hiihdot = new Hiihdot();
Hiihto h1 = new Hiihto(0), h2 = new Hiihto(0);
assertEquals("From: Hiihdot line: 57", 0, hiihdot.getHiihdot());
hiihdot.korvaaTaiLisaa(h1); assertEquals("From: Hiihdot line: 58", 1, hiihdot.getHiihdot());
hiihdot.korvaaTaiLisaa(h2); assertEquals("From: Hiihdot line: 59", 2, hiihdot.getHiihdot());
Hiihto h3 = h1.clone();
hiihdot.korvaaTaiLisaa(h3); assertEquals("From: Hiihdot line: 61", 2, hiihdot.getHiihdot());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testPoistaHiihdot81 */
@Test
public void testPoistaHiihdot81() { // Hiihdot: 81
Hiihdot ht = new Hiihdot();
Hiihto h1 = new Hiihto(0);
Hiihto h2 = new Hiihto(0);
ht.lisaa(h1); ht.lisaa(h2);
assertEquals("From: Hiihdot line: 86", 2, ht.getHiihdot());
assertEquals("From: Hiihdot line: 87", 2, ht.poistaHiihdot(0)); assertEquals("From: Hiihdot line: 87", 0, ht.getHiihdot());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testAnna109 */
@Test
public void testAnna37() { // Hiihdot: 37
public void testAnna109() { // Hiihdot: 109
Hiihto eka = new Hiihto(1);
Hiihto toka = new Hiihto(1);
Hiihdot hiihdot = new Hiihdot();
assertEquals("From: Hiihdot line: 41", eka, hiihdot.anna(0));
assertEquals("From: Hiihdot line: 42", toka, hiihdot.anna(1));
hiihdot.lisaa(eka);
hiihdot.lisaa(toka);
assertEquals("From: Hiihdot line: 115", eka, hiihdot.anna(0));
assertEquals("From: Hiihdot line: 116", toka, hiihdot.anna(1));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetJasenenHiihdot77 */
/**
* testLueTiedostosta131
* @throws SailoException when error
*/
@Test
public void testGetJasenenHiihdot77() { // Hiihdot: 77
public void testLueTiedostosta131() throws SailoException { // Hiihdot: 131
Hiihdot hiihdot = new Hiihdot();
Hiihto h1 = new Hiihto(1);
Hiihto h2 = new Hiihto(1);
Hiihto h3 = new Hiihto(1);
Hiihto h4 = new Hiihto(2);
Hiihto h5 = new Hiihto(2);
File ftied = new File("hiihdot.dat");
ftied.delete();
try {
hiihdot.lueTiedostosta();
fail("Hiihdot: 142 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
hiihdot.lisaa(h1);
hiihdot.lisaa(h2);
hiihdot.lisaa(h3);
hiihdot.lisaa(h4);
hiihdot.lisaa(h5);
hiihdot.tallenna();
hiihdot = new Hiihdot();
hiihdot.lueTiedostosta();
assertEquals("From: Hiihdot line: 151", 5, hiihdot.getHiihdot());
hiihdot.lisaa(h1);
hiihdot.tallenna();
assertEquals("From: Hiihdot line: 154", 6, hiihdot.getHiihdot());
assertEquals("From: Hiihdot line: 155", true, ftied.delete());
File fbak = new File("hiihdot.bak");
assertEquals("From: Hiihdot line: 157", true, fbak.delete());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetJasenenHiihdot204 */
@Test
public void testGetJasenenHiihdot204() { // Hiihdot: 204
Hiihdot hiihdot = new Hiihdot();
Hiihto eka = new Hiihto(1);
Hiihto toka = new Hiihto(1);
Hiihto kolmas = new Hiihto(2);
Hiihdot hiihdot = new Hiihdot();
Hiihto kol = new Hiihto(2);
hiihdot.lisaa(eka);
hiihdot.lisaa(toka);
hiihdot.lisaa(kolmas);
assertEquals("From: Hiihdot line: 85", "[eka, toka]", hiihdot.getJasenenHiihdot(1));
assertEquals("From: Hiihdot line: 86", "[kolmas]", hiihdot.getJasenenHiihdot(2));
hiihdot.lisaa(kol);
assertEquals("From: Hiihdot line: 212", eka, hiihdot.anna(0));
assertEquals("From: Hiihdot line: 213", toka, hiihdot.anna(1));
assertEquals("From: Hiihdot line: 214", kol, hiihdot.anna(2));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetHiihdot101 */
/** testGetHiihdot229 */
@Test
public void testGetHiihdot101() { // Hiihdot: 101
public void testGetHiihdot229() { // Hiihdot: 229
Hiihto eka = new Hiihto(1);
Hiihto toka = new Hiihto(1);
Hiihto kolmas = new Hiihto(3);
......@@ -54,6 +137,36 @@ public class HiihdotTest {
hiihdot.lisaa(eka);
hiihdot.lisaa(toka);
hiihdot.lisaa(kolmas);
assertEquals("From: Hiihdot line: 109", 3, hiihdot.getHiihdot());
assertEquals("From: Hiihdot line: 237", 3, hiihdot.getHiihdot());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testPoista250 */
@Test
public void testPoista250() { // Hiihdot: 250
Hiihdot ht = new Hiihdot();
Hiihto h1 = new Hiihto(0); Hiihto h2 = new Hiihto(0);
ht.lisaa(h1); ht.lisaa(h2);
assertEquals("From: Hiihdot line: 254", 2, ht.getHiihdot());
assertEquals("From: Hiihdot line: 255", true, ht.poista(h1));
assertEquals("From: Hiihdot line: 256", 1, ht.getHiihdot());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testLaskeKm271 */
@Test
public void testLaskeKm271() { // Hiihdot: 271
Jasen j = new Jasen();
Hiihdot ht = new Hiihdot();
Hiihto h1 = new Hiihto(1);
h1.aseta(2, "10");
ht.lisaa(h1);
assertEquals("From: Hiihdot line: 277", "10.0", ht.laskeKm(j));
Hiihto h2 = new Hiihto(1);
h2.aseta(2, "10");
ht.lisaa(h2);
assertEquals("From: Hiihdot line: 281", "20.0", ht.laskeKm(j));
} // Generated by ComTest END
}
\ No newline at end of file
......@@ -8,7 +8,7 @@ import Tietorakenteet.*;
/**
* Test class made by ComTest
* @version 2020.03.12 10:27:50 // Generated by ComTest
* @version 2020.04.29 23:28:14 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
......@@ -17,10 +17,97 @@ public class HiihtoTest {
// Generated by ComTest BEGIN
/** testGetTiedot57 */
/** testGetKysymys74 */
@Test
public void testGetTiedot57() { // Hiihto: 57
public void testGetKysymys74() { // Hiihto: 74
Hiihto h = new Hiihto(0);
assertEquals("From: Hiihto line: 76", "Päivämäärä", h.getKysymys(1));
assertEquals("From: Hiihto line: 77", "Matka", h.getKysymys(2));
assertEquals("From: Hiihto line: 78", "Kalorit", h.getKysymys(7));
assertEquals("From: Hiihto line: 79", "Virheellinen kenttä", h.getKysymys(8));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testAnna99 */
@Test
public void testAnna99() { // Hiihto: 99
Hiihto h = new Hiihto(0);
h.parse("0|1|1.1.2020|10|1:30|-5|180|200|800");
assertEquals("From: Hiihto line: 102", "1.1.2020", h.anna(1));
assertEquals("From: Hiihto line: 103", "800", h.anna(7));
assertEquals("From: Hiihto line: 104", "Tietoa ei löydy!", h.anna(8));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testAseta128 */
@Test
public void testAseta128() { // Hiihto: 128
Hiihto h = new Hiihto(0);
assertEquals("From: Hiihto line: 130", null, h.aseta(1,"1.5.2020"));
assertEquals("From: Hiihto line: 131", "Tarkista kuukausi", h.aseta(1,"1.13.2020"));
assertEquals("From: Hiihto line: 132", "Tarkista vuosi", h.aseta(1,"1.5.2022"));
assertEquals("From: Hiihto line: 133", null, h.aseta(2,"10"));
assertEquals("From: Hiihto line: 134", "Tarkista matka", h.aseta(2,"abc"));
assertEquals("From: Hiihto line: 135", "Tarkista aika", h.aseta(3,"aika"));
assertEquals("From: Hiihto line: 136", "Syötä aika muodossa hh:mm", h.aseta(3,"00"));
assertEquals("From: Hiihto line: 137", "Tarkista keskisyke", h.aseta(5,"syke"));
assertEquals("From: Hiihto line: 138", null, h.aseta(5,"100"));
assertEquals("From: Hiihto line: 139", "Tarkista maksimisyke", h.aseta(6,"syke"));
assertEquals("From: Hiihto line: 140", null, h.aseta(6,"100"));
assertEquals("From: Hiihto line: 141", "Tarkista kalorit", h.aseta(7,"kal"));
assertEquals("From: Hiihto line: 142", null, h.aseta(7,"100"));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testClone235
* @throws CloneNotSupportedException when error
*/
@Test
public void testClone235() throws CloneNotSupportedException { // Hiihto: 235
Hiihto h = new Hiihto(0);
h.parse(" 1.5.2020 | 10.0 | 1:30");
Hiihto kopio = h.clone();
assertEquals("From: Hiihto line: 240", h.toString(), kopio.toString());
h.parse(" 1.5.2020 | 20.0 | 1:00");
assertEquals("From: Hiihto line: 242", false, kopio.toString().equals(h.toString()));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testParse258 */
@Test
public void testParse258() { // Hiihto: 258
Hiihto h = new Hiihto(0);
h.parse("1 | 5 | 10.3.2020 | 20 | 1:30 | 150 ");
assertEquals("From: Hiihto line: 261", 5, h.getJasenID());
h.toString().startsWith("1|5|10.3.2020|20|");
h.parse("1| 20");
assertEquals("From: Hiihto line: 264", 20, h.getJasenID());
h.toString().startsWith("1|20|");
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testToString287 */
@Test
public void testToString287() { // Hiihto: 287
Hiihto h = new Hiihto(0);
h.parse(" 1 | 3 | 31.3.2020 | 10 | 1:30| -5|180|200|800 ");
assertEquals("From: Hiihto line: 290", "1|3|31.3.2020|10|1:30|-5|180|200|800", h.toString());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetTiedot312 */
@Test
public void testGetTiedot312() { // Hiihto: 312
Hiihto eka = new Hiihto(1);
assertEquals("From: Hiihto line: 60", "[5.3.2020, 20, 1:30, -5, 120, 180, 100]", Arrays.toString(eka.getTiedot()));
eka.parse("1|1|1.1.2020|10|1:30|-5|180|200|800");
assertEquals("From: Hiihto line: 316", "800", eka.anna(7));
assertEquals("From: Hiihto line: 317", "[1.1.2020, 10, 1:30, -5, 180, 200, 800]", Arrays.toString(eka.getTiedot()));
} // Generated by ComTest END
}
\ No newline at end of file
......@@ -8,7 +8,7 @@ import Tietorakenteet.*;
/**
* Test class made by ComTest
* @version 2020.03.12 10:03:25 // Generated by ComTest
* @version 2020.04.29 23:43:29 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
......@@ -17,10 +17,99 @@ public class JasenTest {
// Generated by ComTest BEGIN
/** testGetTiedot60 */
/**
* testClone42
* @throws CloneNotSupportedException when error
*/
@Test
public void testGetTiedot60() { // Jasen: 60
Jasen testi = new Jasen();
assertEquals("From: Jasen line: 63", "[Nokka Räkä, 01.08.1960, Lahti, 0401234567, nr@niilot.fi, 2000]", Arrays.toString(testi.getTiedot()));
public void testClone42() throws CloneNotSupportedException { // Jasen: 42
Jasen jasen = new Jasen();
jasen.parseJasen(" 3 | Ankka Aku | 123");
Jasen kopio = jasen.clone();
assertEquals("From: Jasen line: 47", jasen.toString(), kopio.toString());
jasen.parseJasen(" 4 | Ankka Tupu | 123");
assertEquals("From: Jasen line: 49", false, kopio.toString().equals(jasen.toString()));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testParseJasen64 */
@Test
public void testParseJasen64() { // Jasen: 64
Jasen j = new Jasen();
j.parseJasen(" 3 | Ukko | Pekka ");
assertEquals("From: Jasen line: 67", "3|Ukko|Pekka|||||", j.toString());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testToString89 */
@Test
public void testToString89() { // Jasen: 89
Jasen jasen = new Jasen();
jasen.parseJasen(" 3 | Ankka Aku | 31.3.2020 | Jykyla | 040123 | aku@posti.fi");
assertEquals("From: Jasen line: 92", true, jasen.toString().startsWith("3|Ankka Aku|31.3.2020|Jykyla|")); // on enemmän kuin 3 kenttää, siksi loppu |
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testAnna106 */
@Test
public void testAnna106() { // Jasen: 106
Jasen j = new Jasen();
j.parseJasen("1|Ukko|Pekka");
assertEquals("From: Jasen line: 109", "Ukko", j.anna(1));
assertEquals("From: Jasen line: 110", "Pekka", j.anna(2));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testAseta134 */
@Test
public void testAseta134() { // Jasen: 134
Jasen jasen = new Jasen();
assertEquals("From: Jasen line: 136", null, jasen.aseta(1,"harri"));
assertEquals("From: Jasen line: 137", null, jasen.aseta(2,"olli"));
assertEquals("From: Jasen line: 138", null, jasen.aseta(3,"01.10.1900"));
assertEquals("From: Jasen line: 139", "Tarkista kuukausi", jasen.aseta(3,"01.22.1900"));
assertEquals("From: Jasen line: 140", "Tarkista vuosi", jasen.aseta(3,"01.10.800"));
assertEquals("From: Jasen line: 141", null, jasen.aseta(4,"akaa"));
assertEquals("From: Jasen line: 142", "Paikkakunta ei saa sisältää numeroita", jasen.aseta(4,"01"));
assertEquals("From: Jasen line: 143", "Tarkista puhelinnumero", jasen.aseta(5,"12345678900"));
assertEquals("From: Jasen line: 144", null, jasen.aseta(5,"1234567890"));
assertEquals("From: Jasen line: 145", "@-merkki puuttuu!", jasen.aseta(6,"kissa"));
assertEquals("From: Jasen line: 146", null, jasen.aseta(7,"2000"));
assertEquals("From: Jasen line: 147", "Tarkista liittymisvuosi", jasen.aseta(7,"00"));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetKysymys239 */
@Test
public void testGetKysymys239() { // Jasen: 239
Jasen eka = new Jasen();
assertEquals("From: Jasen line: 241", "Virheellinen kenttä", eka.getKysymys(0));
assertEquals("From: Jasen line: 242", "Sukunimi", eka.getKysymys(2));
assertEquals("From: Jasen line: 243", "Virheellinen kenttä", eka.getKysymys(8));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetID282 */
@Test
public void testGetID282() { // Jasen: 282
Jasen j = new Jasen();
j.parseJasen("1|Ukko");
assertEquals("From: Jasen line: 285", 1, j.getID());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetNimi296 */
@Test
public void testGetNimi296() { // Jasen: 296
Jasen j = new Jasen();
j.parseJasen("1|Ukko|Pekka");
assertEquals("From: Jasen line: 299", "Ukko Pekka", j.getNimi());
} // Generated by ComTest END
}
\ No newline at end of file
package Tietorakenteet.test;
// Generated by ComTest BEGIN
import Tietorakenteet.*;
import java.util.*;
import java.io.File;
import static org.junit.Assert.*;
import org.junit.*;
import Tietorakenteet.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2020.03.12 10:23:27 // Generated by ComTest
* @version 2020.04.25 18:43:16 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
......@@ -16,56 +18,158 @@ public class JasenetTest {
// Generated by ComTest BEGIN
/** testLisaa28 */
/** testLisaa40 */
@Test
public void testLisaa28() { // Jasenet: 28
public void testLisaa40() { // Jasenet: 40
Jasenet jasenet = new Jasenet();
Jasen aku1 = new Jasen(), aku2 = new Jasen();
assertEquals("From: Jasenet line: 31", 0, jasenet.getLkm());
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 32", 1, jasenet.getLkm());
jasenet.lisaa(aku2); assertEquals("From: Jasenet line: 33", 2, jasenet.getLkm());
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 34", 3, jasenet.getLkm());
assertEquals("From: Jasenet line: 35", aku1, jasenet.anna(0));
assertEquals("From: Jasenet line: 36", aku2, jasenet.anna(1));
assertEquals("From: Jasenet line: 37", aku1, jasenet.anna(2));
assertEquals("From: Jasenet line: 38", false, jasenet.anna(1) == aku1);
assertEquals("From: Jasenet line: 39", true, jasenet.anna(1) == aku2);
assertEquals("From: Jasenet line: 43", 0, jasenet.getLkm());
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 44", 1, jasenet.getLkm());
jasenet.lisaa(aku2); assertEquals("From: Jasenet line: 45", 2, jasenet.getLkm());
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 46", 3, jasenet.getLkm());
assertEquals("From: Jasenet line: 47", aku1, jasenet.anna(0));
assertEquals("From: Jasenet line: 48", aku2, jasenet.anna(1));
assertEquals("From: Jasenet line: 49", aku1, jasenet.anna(2));
assertEquals("From: Jasenet line: 50", false, jasenet.anna(1) == aku1);
assertEquals("From: Jasenet line: 51", true, jasenet.anna(1) == aku2);
try {
assertEquals("From: Jasenet line: 40", aku1, jasenet.anna(3));
fail("Jasenet: 40 Did not throw IndexOutOfBoundsException");
assertEquals("From: Jasenet line: 52", aku1, jasenet.anna(3));
fail("Jasenet: 52 Did not throw IndexOutOfBoundsException");
} catch(IndexOutOfBoundsException _e_){ _e_.getMessage(); }
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 41", 4, jasenet.getLkm());
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 42", 5, jasenet.getLkm());
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 53", 4, jasenet.getLkm());
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 54", 5, jasenet.getLkm());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testAnna65 */
/**
* testKorvaaTaiLisaa76
* @throws SailoException when error
* @throws CloneNotSupportedException when error
*/
@Test
public void testAnna65() { // Jasenet: 65
public void testKorvaaTaiLisaa76() throws SailoException,CloneNotSupportedException { // Jasenet: 76
Jasenet jasenet = new Jasenet();
Jasen eka = new Jasen(), toka = new Jasen();
assertEquals("From: Jasenet line: 81", 0, jasenet.getLkm());
jasenet.korvaaTaiLisaa(eka); assertEquals("From: Jasenet line: 82", 1, jasenet.getLkm());
jasenet.korvaaTaiLisaa(toka); assertEquals("From: Jasenet line: 83", 2, jasenet.getLkm());
Jasen kol = toka.clone();
jasenet.korvaaTaiLisaa(kol); assertEquals("From: Jasenet line: 85", 2, jasenet.getLkm());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testAnna107 */
@Test
public void testAnna107() { // Jasenet: 107
Jasen testi = new Jasen();
Jasen toinen = new Jasen();
Jasenet jasenet = new Jasenet();
jasenet.lisaa(testi);
jasenet.lisaa(toinen);
assertEquals("From: Jasenet line: 71", testi, jasenet.anna(0));
assertEquals("From: Jasenet line: 72", toinen, jasenet.anna(1));
assertEquals("From: Jasenet line: 113", testi, jasenet.anna(0));
assertEquals("From: Jasenet line: 114", toinen, jasenet.anna(1));
try {
assertEquals("From: Jasenet line: 73", toinen, jasenet.anna(8));
fail("Jasenet: 73 Did not throw IndexOutOfBoundsException");
assertEquals("From: Jasenet line: 115", toinen, jasenet.anna(8));
fail("Jasenet: 115 Did not throw IndexOutOfBoundsException");
} catch(IndexOutOfBoundsException _e_){ _e_.getMessage(); }
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetLkm108 */
/**
* testEtsi132
* @throws SailoException when error
*/
@Test
public void testEtsi132() throws SailoException { // Jasenet: 132
Jasenet jasenet = new Jasenet();
Jasen eka = new Jasen(); eka.parseJasen("1|Ukko|Pekka|Akaa|");
Jasen toka = new Jasen(); toka.parseJasen("2|Akka|Pekka|Helsinki|");
Jasen kol = new Jasen(); kol.parseJasen("3|Jussi|Mietaa|Kurikka|");
jasenet.lisaa(eka); jasenet.lisaa(toka); jasenet.lisaa(kol);
List<Jasen> loytyneet;
loytyneet = (List<Jasen>)jasenet.etsi("*k*",1);
assertEquals("From: Jasenet line: 142", 2, loytyneet.size());
loytyneet = (List<Jasen>)jasenet.etsi("*P*",2);
assertEquals("From: Jasenet line: 144", 2, loytyneet.size());
assertEquals("From: Jasenet line: 145", true, loytyneet.get(0) == eka);
assertEquals("From: Jasenet line: 146", true, loytyneet.get(1) == toka);
loytyneet = (List<Jasen>)jasenet.etsi(null,-1);
assertEquals("From: Jasenet line: 148", 3, loytyneet.size());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testLueTiedostosta171
* @throws SailoException when error
*/
@Test
public void testLueTiedostosta171() throws SailoException { // Jasenet: 171
Jasenet jasenet = new Jasenet();
Jasen aku1 = new Jasen(), aku2 = new Jasen();
File ftied = new File("nimet.dat");
ftied.delete();
try {
jasenet.lueTiedostosta();
fail("Jasenet: 178 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
jasenet.lisaa(aku1);
jasenet.lisaa(aku2);
jasenet.tallenna();
jasenet = new Jasenet(); // Poistetaan vanhat luomalla uusi
jasenet.lueTiedostosta(); // johon ladataan tiedot tiedostosta.
jasenet.lisaa(aku2);
jasenet.tallenna();
assertEquals("From: Jasenet line: 186", true, ftied.delete());
File fbak = new File("nimet.bak");
assertEquals("From: Jasenet line: 188", true, fbak.delete());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetLkm259 */
@Test
public void testGetLkm108() { // Jasenet: 108
public void testGetLkm259() { // Jasenet: 259
Jasen eka = new Jasen();
Jasen toka = new Jasen();
Jasenet jasenet = new Jasenet();
jasenet.lisaa(eka);
jasenet.lisaa(toka);
assertEquals("From: Jasenet line: 114", 2, jasenet.getLkm());
assertEquals("From: Jasenet line: 265", 2, jasenet.getLkm());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testPoista304
* @throws SailoException when error
*/
@Test
public void testPoista304() throws SailoException { // Jasenet: 304
Jasenet jasenet = new Jasenet();
Jasen eka = new Jasen(), toka = new Jasen();
int id1 = eka.getID();
jasenet.lisaa(eka); jasenet.lisaa(toka);
assertEquals("From: Jasenet line: 310", 1, jasenet.poista(id1+1));
assertEquals("From: Jasenet line: 311", 1, jasenet.getLkm());
assertEquals("From: Jasenet line: 312", 1, jasenet.poista(id1)); assertEquals("From: Jasenet line: 312", 0, jasenet.getLkm());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testEtsiID331
* @throws SailoException when error
*/
@Test
public void testEtsiID331() throws SailoException { // Jasenet: 331
Jasenet jasenet = new Jasenet();
Jasen eka = new Jasen(), toka = new Jasen();
int id1 = eka.getID();
jasenet.lisaa(eka); jasenet.lisaa(toka);
assertEquals("From: Jasenet line: 337", 1, jasenet.etsiID(id1+1));
} // Generated by ComTest END
}
\ No newline at end of file
package Tietorakenteet.test;
// Generated by ComTest BEGIN
import Tietorakenteet.*;
import java.io.*;
import java.util.*;
import static org.junit.Assert.*;
import org.junit.*;
import Tietorakenteet.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2020.03.12 13:19:39 // Generated by ComTest
* @version 2020.04.27 13:19:08 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
......@@ -16,79 +18,154 @@ public class RekisteriTest {
// Generated by ComTest BEGIN
/** testLisaa26 */
/** testLisaa28 */
@Test
public void testLisaa26() { // Rekisteri: 26
public void testLisaa28() { // Rekisteri: 28
Rekisteri rekisteri = new Rekisteri();
Jasen eka = new Jasen();
Jasen toka = new Jasen();
Jasenet jasenet = new Jasenet();
rekisteri.lisaa(eka);
rekisteri.lisaa(toka);
assertEquals("From: Rekisteri line: 33", 2, jasenet.getLkm());
assertEquals("From: Rekisteri line: 34", 2, rekisteri.getLkm());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testKorvaaTaiLisaa48
* @throws SailoException when error
* @throws CloneNotSupportedException when error
*/
@Test
public void testKorvaaTaiLisaa48() throws SailoException,CloneNotSupportedException { // Rekisteri: 48
Rekisteri R = new Rekisteri();
Jasen eka = new Jasen(), toka = new Jasen();
assertEquals("From: Rekisteri line: 53", 0, R.getLkm());
R.korvaaTaiLisaa(eka); assertEquals("From: Rekisteri line: 54", 1, R.getLkm());
R.korvaaTaiLisaa(toka); assertEquals("From: Rekisteri line: 55", 2, R.getLkm());
Jasen kol = toka.clone();
R.korvaaTaiLisaa(kol); assertEquals("From: Rekisteri line: 57", 2, R.getLkm());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testAnnaJasen45 */
/** testAnnaJasen81 */
@Test
public void testAnnaJasen45() { // Rekisteri: 45
public void testAnnaJasen81() { // Rekisteri: 81
Rekisteri rekisteri = new Rekisteri();
Jasen eka = new Jasen();
Jasen toka = new Jasen();
Jasenet jasenet = new Jasenet();
jasenet.lisaa(eka);
jasenet.lisaa(toka);
assertEquals("From: Rekisteri line: 52", eka, rekisteri.annaJasen(0));
rekisteri.lisaa(eka);
rekisteri.lisaa(toka);
assertEquals("From: Rekisteri line: 87", eka, rekisteri.annaJasen(0));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testEtsi102
* @throws CloneNotSupportedException when error
* @throws SailoException when error
*/
@Test
public void testEtsi102() throws CloneNotSupportedException, SailoException { // Rekisteri: 102
Rekisteri R = new Rekisteri();
Jasen eka = new Jasen();
eka.aseta(1,"Pekka");
R.lisaa(eka);
Collection<Jasen> loytyneet = R.etsi("*Pe*",1);
assertEquals("From: Rekisteri line: 109", 1, loytyneet.size());
Iterator<Jasen> it = loytyneet.iterator();
assertEquals("From: Rekisteri line: 111", true, it.next() == eka);
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testLisaaHiihto64 */
/** testLisaaHiihto123 */
@Test
public void testLisaaHiihto64() { // Rekisteri: 64
public void testLisaaHiihto123() { // Rekisteri: 123
Rekisteri rekisteri = new Rekisteri();
Hiihto eka = new Hiihto(1);
Hiihto toka = new Hiihto(1);
rekisteri.lisaaHiihto(eka);
rekisteri.lisaaHiihto(toka);
assertEquals("From: Rekisteri line: 70", 2, rekisteri.getHiihdot());
assertEquals("From: Rekisteri line: 129", 2, rekisteri.getHiihdot());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testAnnaHiihto82 */
/** testAnnaHiihto141 */
@Test
public void testAnnaHiihto82() { // Rekisteri: 82
public void testAnnaHiihto141() { // Rekisteri: 141
Rekisteri rekisteri = new Rekisteri();
Hiihto eka = new Hiihto(1);
Hiihto toka = new Hiihto(1);
rekisteri.lisaaHiihto(eka);
rekisteri.lisaaHiihto(toka);
assertEquals("From: Rekisteri line: 88", eka, rekisteri.annaHiihto(0));
assertEquals("From: Rekisteri line: 147", eka, rekisteri.annaHiihto(0));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetJasenenHiihdot100 */
/** testGetJasenenHiihdot159 */
@Test
public void testGetJasenenHiihdot100() { // Rekisteri: 100
Rekisteri rekisteri = new Rekisteri();
public void testGetJasenenHiihdot159() { // Rekisteri: 159
Hiihto eka = new Hiihto(1);
Hiihto toka = new Hiihto(1);
Hiihto kolmas = new Hiihto(2);
Rekisteri rekisteri = new Rekisteri();
rekisteri.lisaaHiihto(eka);
rekisteri.lisaaHiihto(toka);
rekisteri.lisaaHiihto(kolmas);
assertEquals("From: Rekisteri line: 108", "[eka, toka]", rekisteri.getJasenenHiihdot(1));
assertEquals("From: Rekisteri line: 109", "[kolmas]", rekisteri.getJasenenHiihdot(2));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetLkm140 */
/**
* testLueTiedostosta178
* @throws SailoException when error
*/
@Test
public void testLueTiedostosta178() throws SailoException { // Rekisteri: 178
Rekisteri r = new Rekisteri();
Jasen j1 = new Jasen(); Jasen j2 = new Jasen();
Hiihto h1 = new Hiihto(1);
Hiihto h2 = new Hiihto(1);
Hiihto h3 = new Hiihto(2);
Hiihto h4 = new Hiihto(2);
File fjas = new File("nimet.dat");
File fhiih = new File("hiihdot.dat");
fjas.delete();
fhiih.delete();
try {
r.lueTiedostosta();
fail("Rekisteri: 192 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
r.lisaa(j1);
r.lisaa(j2);
r.lisaaHiihto(h1);
r.lisaaHiihto(h2);
r.lisaaHiihto(h3);
r.lisaaHiihto(h4);
r.tallenna();
r = new Rekisteri();
r.lueTiedostosta();
r.lisaa(j2);
r.lisaaHiihto(h4);
r.tallenna();
assertEquals("From: Rekisteri line: 205", true, fjas.delete());
assertEquals("From: Rekisteri line: 206", true, fhiih.delete());
File fjasbak = new File("nimet.bak");
File fhbak = new File("hiihdot.bak");
assertEquals("From: Rekisteri line: 209", true, fjasbak.delete());
assertEquals("From: Rekisteri line: 210", true, fhbak.delete());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetLkm249 */
@Test
public void testGetLkm140() { // Rekisteri: 140
public void testGetLkm249() { // Rekisteri: 249
Rekisteri rekisteri = new Rekisteri();
Jasen eka = new Jasen();
Jasen toka = new Jasen();
......@@ -98,9 +175,9 @@ public class RekisteriTest {
// Generated by ComTest BEGIN
/** testGetHiihdot156 */
/** testGetHiihdot265 */
@Test
public void testGetHiihdot156() { // Rekisteri: 156
public void testGetHiihdot265() { // Rekisteri: 265
Rekisteri rekisteri = new Rekisteri();
Hiihto eka = new Hiihto(1);
Hiihto toka = new Hiihto(1);
......@@ -108,6 +185,53 @@ public class RekisteriTest {
rekisteri.lisaaHiihto(eka);
rekisteri.lisaaHiihto(toka);
rekisteri.lisaaHiihto(kolmas);
assertEquals("From: Rekisteri line: 164", 3, rekisteri.getHiihdot());
assertEquals("From: Rekisteri line: 273", 3, rekisteri.getHiihdot());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testLaskeKm284 */
@Test
public void testLaskeKm284() { // Rekisteri: 284
Rekisteri R = new Rekisteri();
Jasen j = new Jasen();
R.lisaa(j);
Hiihto h1 = new Hiihto(1);
h1.aseta(2, "10");
R.lisaaHiihto(h1);
assertEquals("From: Rekisteri line: 291", "10.0", R.laskeKm(j));
Hiihto h2 = new Hiihto(1);
h2.aseta(2, "10");
R.lisaaHiihto(h2);
assertEquals("From: Rekisteri line: 295", "20.0", R.laskeKm(j));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testPoistaHiihtaja307
* @throws Exception when error
*/
@Test
public void testPoistaHiihtaja307() throws Exception { // Rekisteri: 307
Rekisteri rekisteri = new Rekisteri();
Jasen eka = new Jasen();
rekisteri.lisaa(eka);
assertEquals("From: Rekisteri line: 312", 1, rekisteri.getLkm());
assertEquals("From: Rekisteri line: 313", 1, rekisteri.poistaHiihtaja(eka));
assertEquals("From: Rekisteri line: 314", 0, rekisteri.getLkm());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testPoistaHiihto329 */
@Test
public void testPoistaHiihto329() { // Rekisteri: 329
Rekisteri R = new Rekisteri();
Hiihto h1 = new Hiihto(0); Hiihto h2 = new Hiihto(0);
R.lisaaHiihto(h1); R.lisaaHiihto(h2);
assertEquals("From: Rekisteri line: 333", 2, R.getHiihdot());
assertEquals("From: Rekisteri line: 334", true, R.poistaHiihto(h1));
assertEquals("From: Rekisteri line: 335", 1, R.getHiihdot());
} // Generated by ComTest END
}
\ No newline at end of file
package Tietorakenteet.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import Tietorakenteet.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2020.04.25 18:30:52 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
public class TietueTest {
// Generated by ComTest BEGIN
/** testInt17 */
@Test
public void testInt17() { // Tietue: 17
Hiihto h = new Hiihto(0);
assertEquals("From: Tietue line: 19", 7, h.getKenttia());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testInt29 */
@Test
public void testInt29() { // Tietue: 29
Hiihto h = new Hiihto(0);
assertEquals("From: Tietue line: 31", 1, h.ekaKentta());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testString41 */
@Test
public void testString41() { // Tietue: 41
Hiihto h = new Hiihto(0);
assertEquals("From: Tietue line: 43", "Päivämäärä", h.getKysymys(1));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testString53 */
@Test
public void testString53() { // Tietue: 53
Hiihto h = new Hiihto(0);
h.parse("1|1| 1.5.2020 | 10.0 | 1:30 | -5 | 180 | 200 | 200 ");
assertEquals("From: Tietue line: 56", "1.5.2020", h.anna(1));
assertEquals("From: Tietue line: 57", "10.0", h.anna(2));
assertEquals("From: Tietue line: 58", "1:30", h.anna(3));
assertEquals("From: Tietue line: 59", "180", h.anna(5));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testString72 */
@Test
public void testString72() { // Tietue: 72
Hiihto h = new Hiihto(0);
assertEquals("From: Tietue line: 74", null, h.aseta(3,"1:30"));
assertEquals("From: Tietue line: 75", null, h.aseta(4,"käpy"));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testTietue86
* @throws CloneNotSupportedException when error
*/
@Test
public void testTietue86() throws CloneNotSupportedException { // Tietue: 86
Hiihto h = new Hiihto(0);
h.parse(" 1.5.2020 | 10.0 | 1:30 | 180 | 200 ");
Object kopio = h.clone();
assertEquals("From: Tietue line: 91", h.toString(), kopio.toString());
h.parse(" 1.5.2020 | 2.0 | 0:30 | 120 | 130 ");
assertEquals("From: Tietue line: 93", false, kopio.toString().equals(h.toString()));
assertEquals("From: Tietue line: 94", true, kopio instanceof Hiihto);
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testString104 */
@Test
public void testString104() { // Tietue: 104
Hiihto h = new Hiihto(0);
h.parse("1| 0| 1.5.2020 | 10.0 | 1:30 | -5 | 100 | 120 | 200 ");
assertEquals("From: Tietue line: 107", "1|0|1.5.2020|10.0|1:30|-5|100|120|200", h.toString());
} // Generated by ComTest END
}
\ No newline at end of file
package fxHiihtorekisteri;
import java.io.PrintStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.ResourceBundle;
import Tietorakenteet.Hiihto;
import Tietorakenteet.Jasen;
import Tietorakenteet.Rekisteri;
import Tietorakenteet.SailoException;
import fi.jyu.mit.fxgui.ComboBoxChooser;
import fi.jyu.mit.fxgui.Dialogs;
import fi.jyu.mit.fxgui.ListChooser;
import fi.jyu.mit.fxgui.ModalController;
import fi.jyu.mit.fxgui.StringGrid;
import fi.jyu.mit.fxgui.TextAreaOutputStream;
import javafx.event.ActionEvent;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
/**
* @author JPo ja MHo
* @author MHo
* @version 13.1.2020
*
* Hiihtorekisteri, johon voi lisätä jäseniä ja heille hiihtosuorituksia.
* Jäseniä voi myös muokata ja poistaa.
* Hiihtoja voi muokata, mutta poisto ei vielä toimi.
*/
public class HiihtorekisteriGUIController {
public class HiihtorekisteriGUIController implements Initializable {
@FXML
private TextField Hakukentta;
@FXML private MenuItem ylanappiTallenna;
@FXML private MenuItem ylanappiTulosta;
@FXML private MenuItem ylanappiLisaaHiihtaja;
@FXML private MenuItem ylanappiPoistaHiihtaja;
@FXML private MenuItem ylanappiLopeta;
@FXML private MenuItem ylanappiKayttoOhje;
@FXML private MenuItem ylanappiTietoja;
@FXML
private Button nappiLisaaHiihto;
@FXML
private Button nappiMuokkaa;
@FXML
private Button nappiTulosta;
@FXML private ComboBoxChooser<String> cbKentat;
@FXML private TextField Hakuehto;
@FXML private ListChooser<Jasen> chooserJasenet;
@FXML
private MenuItem ylanappiTallenna;
@FXML
private MenuItem ylanappiTulosta;
@FXML
private MenuItem ylanappiLisaaHiihtaja;
@FXML
private MenuItem ylanappiPoistaHiihtaja;
@FXML
private MenuItem ylanappiLopeta;
@FXML private GridPane gridJasen;
@FXML private TextField kenttaENimi;
@FXML private TextField kenttaSNimi;
@FXML private TextField kenttaSAika;
@FXML private TextField kenttaPKunta;
@FXML private TextField kenttaPuh;
@FXML private TextField kenttaEmail;
@FXML private TextField kenttaLVuosi;
@FXML private TextField kenttaKm;
@FXML
private MenuItem ylanappiKayttoOhje;
@FXML private StringGrid<Hiihto> gridHiihdot;
@FXML
private MenuItem ylanappiTietoja;
@FXML private Button nappiLisaaHiihto;
@FXML private Button nappiTulosta;
@FXML
private ListChooser<Jasen> chooserJasenet;
private Rekisteri rekisteri;
private Jasen jasenKohdalla;
private static Jasen apujasen = new Jasen();
@FXML
private TextField kenttaNimi;
@FXML
private TextField kenttaSAika;
@FXML
private TextField kenttaPKunta;
@FXML
private TextField kenttaPuh;
@FXML
private TextField kenttaEmail;
@Override
public void initialize(URL url, ResourceBundle bundle) {
alusta();
}
@FXML void handleHakuehto() {
hae(0);
}
@FXML void handleLisaaHiihtaja() {
lisaaHiihtaja();
}
@FXML void handleLisaaHiihto() {
lisaaHiihto();
}
@FXML void handleMuokkaa() {
muokkaa();
}
@FXML void handleTulosta() {
tulosta(jasenKohdalla);
}
@FXML
private TextField kenttaLVuosi;
@FXML void handlePoistaHiihtaja() {
poistaHiihtaja();
}
@FXML
private TextField kenttaKm;
@FXML private String handleTallenna() {
return tallenna();
}
@FXML
private StringGrid<?> gridHiihdot;
private Rekisteri rekisteri;
private Jasen jasenKohdalla;
@FXML void handleLopeta() {
handleTallenna();
Platform.exit();
}
@FXML void handleKayttoOhje() { ModalController.showModal(HiihtorekisteriGUIController.class.getResource("Ohje.fxml"), "Käyttöohje", null, "");
}
@FXML void handleTietoja() { ModalController.showModal(HiihtorekisteriGUIController.class.getResource("Tietoja.fxml"), "Tietoja", null, "");
}
/**
......@@ -98,120 +112,217 @@ public class HiihtorekisteriGUIController {
public void setRekisteri(Rekisteri rekisteri) {
this.rekisteri = rekisteri;
alusta();
naytaJasen();
lueTiedosto();
}
/**
* Näyttää listasta valitun jäsenen tiedot, tilapäisesti yhteen isoon edit-kenttään
* Alustaa listan jäsenistä
*/
protected void naytaJasen() {
jasenKohdalla = chooserJasenet.getSelectedObject();
if (jasenKohdalla == null) return;
protected void alusta() {
chooserJasenet.clear();
chooserJasenet.addSelectionListener(e -> naytaJasen());
TextField[] kentat = new TextField[] {kenttaNimi, kenttaSAika, kenttaPKunta, kenttaPuh, kenttaEmail, kenttaLVuosi};
String[] tiedot = jasenKohdalla.getTiedot();
for (int i = 0; i < tiedot.length; i++) {
kentat[i].setText(tiedot[i]);
}
cbKentat.clear();
cbKentat.add(apujasen.getKysymys(2), null);
cbKentat.add(apujasen.getKysymys(4), null);
cbKentat.getSelectionModel().select(0);
TextField[] kentat = new TextField[]{kenttaENimi, kenttaSNimi, kenttaSAika, kenttaPKunta, kenttaPuh, kenttaEmail, kenttaLVuosi};
//TietueGUIController.luoKentat(gridJasen, jasenKohdalla);
for (TextField edit: kentat)
if ( edit != null ) {
edit.setEditable(false);
//edit.setOnMouseClicked(e -> { if ( e.getClickCount() > 1 ) muokkaa(getFieldId(e.getSource(),0)); });
//edit.focusedProperty().addListener((a,o,n) -> kentta = getFieldId(edit,kentta));
}
}
/**
* Näyttää listasta valitun jäsenen hiihdot
* Alustaa kerhon lukemalla sen valitun nimisestä tiedostosta
* @return null jos onnistuu, muuten virhe tekstinä
*/
protected void naytaHiihdot() {
gridHiihdot.clear();
jasenKohdalla = chooserJasenet.getSelectedObject();
ArrayList<Hiihto> jasenenHiihdot = rekisteri.getJasenenHiihdot(jasenKohdalla.getID());
for (int i = 0; i < jasenenHiihdot.size(); i++) {
String[] rivi = jasenenHiihdot.get(i).getTiedot();
gridHiihdot.add(rivi);
protected String lueTiedosto() {
try {
rekisteri.lueTiedostosta();
hae(0);
return null;
} catch (SailoException e) {
hae(0);
String virhe = e.getMessage();
if ( virhe != null ) Dialogs.showMessageDialog(virhe);
return virhe;
}
}
/**
* Hakee jäsenten tiedot listaan
* @param jnr jäsenen numero, joka aktivoidaan haun jälkeen
*/
protected void hae(int jnr) {
int jnro = jnr; // jnro jäsenen numero, joka aktivoidaan haun jälkeen
if ( jnro <= 0 ) {
Jasen kohdalla = jasenKohdalla;
if ( kohdalla != null ) jnro = kohdalla.getID();
}
int k;
k = 0;
if (cbKentat.getSelectionModel().getSelectedIndex() == 0) k = 2;
if (cbKentat.getSelectionModel().getSelectedIndex() == 1) k = 4;
//int k = cbKentat.getSelectionModel().getSelectedIndex() + 2; //apujasen.ekaKentta();
String ehto = Hakuehto.getText();
if (ehto.indexOf('*') < 0) ehto = "*" + ehto + "*";
chooserJasenet.clear();
int index = 0;
Collection<Jasen> jasenet;
if (ehto == "**") naytaKaikki();
else {
try {
jasenet = rekisteri.etsi(ehto, k);
int i = 0;
for (Jasen jasen:jasenet) {
if (jasen.getID() == jnro) index = i;
chooserJasenet.add(jasen.getNimi(), jasen);
i++;
}
} catch (SailoException ex) {
Dialogs.showMessageDialog("Jäsenen hakemisessa ongelmia! " + ex.getMessage());
}
chooserJasenet.setSelectedIndex(index); // tästä tulee muutosviesti joka näyttää jäsenen
}
}
@FXML
void handleHaku() {
//
/*
* Näytetään kaikki rekisterin hiihtäjät
*/
private void naytaKaikki() {
for (int i = 1; i < rekisteri.getLkm(); i++) {
chooserJasenet.add(rekisteri.annaJasen(i).getNimi(), rekisteri.annaJasen(i));
}
}
@FXML
void handleLisaaHiihto() {
//ModalController.showModal(HiihtorekisteriGUIController.class.getResource("LisaaHiihto.fxml"), "Hiihto", null, "");
int id = chooserJasenet.getSelectedObject().getID();
rekisteri.lisaaHiihto(new Hiihto(id));
hae(jasenKohdalla.getID());
/**
* Näyttää listasta valitun jäsenen tiedot
*/
protected void naytaJasen() {
jasenKohdalla = chooserJasenet.getSelectedObject();
if (jasenKohdalla == null) return;
TextField[] kentat = new TextField[] {kenttaENimi, kenttaSNimi, kenttaSAika, kenttaPKunta, kenttaPuh, kenttaEmail, kenttaLVuosi, kenttaKm};
TietueGUIController.naytaTietue(kentat, jasenKohdalla);
laskeKm();
naytaHiihdot(jasenKohdalla);
}
@FXML
void handleMuokkaa() {
ModalController.showModal(HiihtorekisteriGUIController.class.getResource("Muokkaa.fxml"), "Hiihtaja", null, "");
/**
* Näyetään valitun jäsenen yhteiskilometrit
*/
private void laskeKm() {
kenttaKm.setText(rekisteri.laskeKm(jasenKohdalla));
}
@FXML
void handleTulosta() {
ModalController.showModal(HiihtorekisteriGUIController.class.getResource("Tulosta.fxml"), "Tulosta", null, "");
/**
* Muokkaa olemassaolevaa jäsentä
*/
public void muokkaa() {
if ( jasenKohdalla == null ) return;
try {
Jasen jasen;
jasen = TietueGUIController.kysyTietue(null, jasenKohdalla.clone(), rekisteri);
if ( jasen == null ) return;
rekisteri.korvaaTaiLisaa(jasen);
hae(jasen.getID());
} catch (CloneNotSupportedException e) {
//
} catch (SailoException e) {
Dialogs.showMessageDialog(e.getMessage());
}
laskeKm();
}
@FXML
void handleLisaaHiihtaja() {
/**
* Luodaan rekisteriin uusi jäsen
*/
private void lisaaHiihtaja() {
Jasen uusi = new Jasen();
uusi = TietueGUIController.kysyTietue(null, uusi);
if ( uusi == null ) return;
rekisteri.lisaa(uusi);
//ModalController.showModal(HiihtorekisteriGUIController.class.getResource("LisaaHiihtaja.fxml"), "Hiihtaja", null, "");
hae(uusi.getID());
}
@FXML
void handlePoistaHiihtaja() {
Dialogs.showMessageDialog("Poisto ei vielä toimi");
}
@FXML
void handleTallenna() {
Dialogs.showMessageDialog("Tallennus ei toimi vielä");
}
@FXML
void handleLopeta() {
Dialogs.showMessageDialog("Tallentaa tiedot ja lopettaa ohjelman. Tallennus ei toimi vielä.");
private void lisaaHiihto() {
if ( jasenKohdalla == null ) return;
Hiihto uusi = new Hiihto(jasenKohdalla.getID());
uusi = TietueGUIController.kysyTietue(null, uusi);
if ( uusi == null ) return;
rekisteri.lisaaHiihto(uusi);
naytaHiihdot(jasenKohdalla);
gridHiihdot.selectRow(1000); // järjestetään viimeinen rivi valituksi
}
@FXML
void handleKayttoOhje() {
ModalController.showModal(HiihtorekisteriGUIController.class.getResource("Ohje.fxml"), "Ohje", null, "");
/**
* Näyttää listasta valitun jäsenen hiihdot
*/
private void naytaHiihdot(Jasen j) {
if (j == null) return;
gridHiihdot.clear();
ArrayList<Hiihto> jasenenHiihdot = rekisteri.getJasenenHiihdot(j.getID());
//String[] rivi = null;
for (Hiihto h : jasenenHiihdot) {
//rivi = h.getTiedot();
gridHiihdot.add(h, h.getTiedot());
}
gridHiihdot.setEditable(false);
}
@FXML
void handleTietoja() {
ModalController.showModal(HiihtorekisteriGUIController.class.getResource("Tietoja.fxml"), "Tietoja", null, "");
/*
* Poistetaan listalta valittu jäsen
*/
private void poistaHiihtaja() {
Jasen jasen = jasenKohdalla;
if ( jasen == null ) return;
if ( !Dialogs.showQuestionDialog("Poisto", "Poistetaanko hiihtaja: " + jasen.getNimi(), "Kyllä", "Ei") )
return;
rekisteri.poistaHiihtaja(jasen);
int index = chooserJasenet.getSelectedIndex();
hae(0);
chooserJasenet.setSelectedIndex(index);
}
/**
* Hakee jäsenten tiedot listaan
* @param jnro jäsenen numero, joka aktivoidaan haun jälkeen
*/
protected void hae(int jnro) {
chooserJasenet.clear();
int index = 0;
for (int i = 0; i < rekisteri.getLkm(); i++) {
Jasen jasen = rekisteri.annaJasen(i);
if (jasen.getID() == jnro) index = i;
chooserJasenet.add(jasen.getID() + " " + jasen.getNimi(), jasen);
private void tulosta(Jasen j) {
if (j == null) {
Dialogs.showMessageDialog("Valitse jäsen, jonka tiedot tulostetaan");
return;
}
chooserJasenet.setSelectedIndex(index); // tästä tulee muutosviesti joka näyttää jäsenen
TulostaGUIController.tulosta(j, rekisteri);
}
/**
* Alustaa listan jäsenistä
* @return ilmoitus, onnistuuko tallentaminen vai ei
*/
protected void alusta() {
chooserJasenet.clear();
chooserJasenet.addSelectionListener(e -> naytaJasen());
chooserJasenet.addSelectionListener(e -> naytaHiihdot());
public String tallenna() {
try {
rekisteri.tallenna();
Dialogs.showMessageDialog("Tiedot tallennettu");
return null;
} catch (SailoException ex) {
Dialogs.showMessageDialog("Tallennuksessa ongelmia! " + ex.getMessage());
return ex.getMessage();
}
}
}
\ No newline at end of file
package fxHiihtorekisteri;
package fxHiihtorekisteri;
import Tietorakenteet.Rekisteri;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.fxml.FXMLLoader;
/**
* @author JPo ja MHo
* @version 13.1.2020
*
*/
public class HiihtorekisteriMain extends Application {
@Override
......
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>
<BorderPane xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fxHiihtorekisteri.LisaaHiihtajaGUIController">
<bottom>
<HBox spacing="10.0" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</BorderPane.margin>
<children>
<Button fx:id="nappiTallenna" onAction="#handleTallenna" text="Tallenna" />
<Button fx:id="nappiPeruuta" alignment="CENTER" mnemonicParsing="false" onAction="#handlePeruuta" text="Peruuta" />
</children>
</HBox>
</bottom>
<center>
<GridPane hgap="10.0" BorderPane.alignment="CENTER">
<columnConstraints>
<ColumnConstraints fillWidth="false" halignment="RIGHT" hgrow="SOMETIMES" />
<ColumnConstraints hgrow="ALWAYS" maxWidth="550.000010172526" minWidth="69.33333841959634" />
</columnConstraints>
<rowConstraints>
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<padding>
<Insets left="10.0" right="10.0" top="10.0" />
</padding>
<children>
<Label text="Sukunimi" />
<TextField fx:id="kenttaSukunimi" GridPane.columnIndex="1" />
<Label text="Etunimi" GridPane.rowIndex="1" />
<TextField fx:id="kenttaEtunimi" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS" GridPane.rowIndex="1" />
<Label text="Syntymäaika" GridPane.rowIndex="2" />
<Label text="Paikkakunta" GridPane.rowIndex="3" />
<TextField fx:id="kenttaPaikkakunta" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS" GridPane.rowIndex="3" />
<Label text="Puhelinnumero" GridPane.rowIndex="4" />
<TextField fx:id="kenttaPuh" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<Label text="Sähköposti" GridPane.rowIndex="5" />
<TextField fx:id="kenttaEmail" GridPane.columnIndex="1" GridPane.rowIndex="5" />
<Label text="Liittymisvuosi" GridPane.rowIndex="6" />
<TextField fx:id="kenttaLVuosi" GridPane.columnIndex="1" GridPane.rowIndex="6" />
<DatePicker fx:id="kenttaSyntymaAika" GridPane.columnIndex="1" GridPane.rowIndex="2" />
</children>
</GridPane>
</center>
</BorderPane>
package fxHiihtorekisteri;
import fi.jyu.mit.fxgui.Dialogs;
import fi.jyu.mit.fxgui.ModalController;
import fi.jyu.mit.fxgui.ModalControllerInterface;
import fi.jyu.mit.ohj2.Mjonot;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TextField;
/**
* @author pohjo
* @version 13.1.2020
*
*/
public class LisaaHiihtajaGUIController implements ModalControllerInterface<String> {
@FXML
private Button nappiTallenna;
@FXML
private Button nappiPeruuta;
@FXML
private TextField kenttaSukunimi;
@FXML
private TextField kenttaEtunimi;
@FXML
private TextField kenttaPaikkakunta;
@FXML
private TextField kenttaPuh;
@FXML
private TextField kenttaEmail;
@FXML
private TextField kenttaLVuosi;
@FXML
private DatePicker kenttaSyntymaAika;
@FXML
void handleTallenna() {
/**
Dialogs.showMessageDialog("Tallennus ei toimi vielä");
String snimi = kenttaSukunimi.getText();
String enimi = kenttaEtunimi.getText();
String kunta = kenttaPaikkakunta.getText();
int puh = Integer.parseInt(kenttaPuh.getText());
String email = kenttaEmail.getText();
int vuosi = Integer.parseInt(kenttaLVuosi.getText());
String sAika = kenttaSyntymaAika.getPromptText();
*/
}
@FXML
void handlePeruuta() {
ModalController.closeStage(nappiPeruuta);
}
@Override
public String getResult() {
// TODO Auto-generated method stub
return null;
}
@Override
public void handleShown() {
// TODO Auto-generated method stub
}
@Override
public void setDefault(String oletus) {
// TODO Auto-generated method stub
}
//
}
\ No newline at end of file
package fxHiihtorekisteri;
import fi.jyu.mit.fxgui.Dialogs;
import fi.jyu.mit.fxgui.ModalController;
import fi.jyu.mit.fxgui.ModalControllerInterface;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
/**
* @author pohjo
* @version 13.1.2020
*
*/
public class LisaaHiihtoGUIController implements ModalControllerInterface<String> {
@FXML
private Button nappiTallenna;
@FXML
private Button nappiPeruuta;
@FXML
void handleTallenna() {
Dialogs.showMessageDialog("Tallennus ei toimi vielä");
}
@FXML
void handlePeruuta() {
ModalController.closeStage(nappiPeruuta);
}
@Override
public String getResult() {
// TODO Auto-generated method stub
return null;
}
@Override
public void handleShown() {
// TODO Auto-generated method stub
}
@Override
public void setDefault(String oletus) {
// TODO Auto-generated method stub
}
//
}
\ No newline at end of file