• Ei tuloksia

Suunnittelukuvasto Websovellus Fillariverstas Ihmeidentekijät Versio 0.8 Luonnos Tekijä Ari Lintukorpi 13.5.2010 Jan Nyman Jori Sivonen Jouko Rahikainen Anssi Metsäranta Tarkastanut Anssi Metsäranta Hyväksynyt

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Suunnittelukuvasto Websovellus Fillariverstas Ihmeidentekijät Versio 0.8 Luonnos Tekijä Ari Lintukorpi 13.5.2010 Jan Nyman Jori Sivonen Jouko Rahikainen Anssi Metsäranta Tarkastanut Anssi Metsäranta Hyväksynyt"

Copied!
47
0
0

Kokoteksti

(1)

Suunnittelukuvasto Websovellus Fillariverstas Ihmeidentekijät

Versio 0.8 Luonnos

Tekijä Ari Lintukorpi 13.5.2010 Jan Nyman

Jori Sivonen Jouko Rahikainen Anssi Metsäranta Tarkastanut Anssi Metsäranta Hyväksynyt

(2)

MUUTOSHISTORIA

versionumero pvm muutos

0.1 5.4.2010 Luonnos

0.2 9.4.2010 Lisätty materiaalia

0.3 15.4.2010 Lisätty kaavioita ja sisällysluettelo 0.4 16.4.2010 Lisätty kaavioita ja korjattu puutteita

0.5 19.4.2010 Lisätty paketit ja korjattu katselmoinnissa havaittuja virheitä 0.6 30.4.2010 Lisätty paketteja

0.7 5.5.2010 Lisätty paketteihin lisää tietoa 0.8 13.5.2010 Lisätty lisää paketteja ja tietoa

(3)

Sisällysluettelo

1 Johdanto ... 4

2 Käyttöliittymät ... 4

3 Oliomalli ... 8

4 Relaatiotietokanta ... 10

4.1 Relaatiokaavat ... 10

4.2 Relaatioiden luontilauseet ... 13

5.1 Kirjautuminen osakäyttötapaus ... 17

5.2 Pyörän suunnittelu osakäyttötapaus ... 18

5.3 Merkin valinta osakäyttötapaus ... 18

6 Viestiyhteyskaaviot ... 19

6.1 Kirjautuminen viestiyhteistyökaavio ... 19

6.2 Suunnittelu viestiyhteistyökaavio ... 22

6.3 Osan valinta viestiyhteistyökaavio ... 25

7 Paketit... 29

7.1 Kohdeluokat-paketti ... 33

7.2 Servletit-paketti ... 41

7.3 Tietokanta-paketti ... 44

(4)

1 Johdanto

Tässä dokumentissa on kuvattu Fillariverstas Oy:lle toteuttavan

Websovelluksen suunnitelma. Sovellus mahdollistaa polkupyörien suunnittelun ja tarjouspyynnön lähettämisen. Tämä dokumentti sisältää

käyttöliittymäsuunnitelman ja ohjelmiston rakenteen kuvauksen. Lisäksi dokumentissa kuvataan yhteistyö- ja viestintäyhteyskaaviot ja tietokannan rakenne. Dokumentti on kirjoitettu määrityskuvaston pohjalta.

Ensimmäisen iteraation aikana suunnitellaan ja toteutetaan asiakkaiden kirjautuminen järjestelmään ja rungon valinta. Toisen iteraation aikana suunnitellaan ja toteutetaan polkupyörän suunnittelu ja tarjouspyynnön lähettäminen.

2 Käyttöliittymät

Järjestelmän käyttöliittymä toteutetaan Internetselainpohjaisena.

Käyttöliittymät koodataan xhtml-ilmaisukieltä käyttäen ja JSP-tekniikkaa (JavaServer Pages) ja JSTL (JavaServer Pages Standard Tag Library) standardi tagikirjastoa noudattaen. Käyttöliittymätiedostot talletetaan jsp- tarkenteilla.

Toteutettavassa kokonaisuudessa on neljä näkymää:

 kirjautumis-näyttö, kirjautuminen.jsp ja

 pyörän suunnittelu, suunnittelu-näyttö, suunnittelu.jsp.

 suunnitelty pyörä, suunniteltuPyora.jsp

 tarjouspyyntö lähetetty, kiitos.jsp

Kun käyttäjä käynnistää ohjelman, käyttöliittymän näkymä näyttää kuvan 2.1 Kirjautuminen – kirjautuminen.jsp mukaiselta.

Kuva 2.1. Kirjautuminen – kirjautuminen.jsp

(5)

Käyttäjä kirjoittaa kirjautuminen-näytön kenttiin sähköpostiosoitteensa, joka toimii käyttäjätunnuksena ja salasanan. Kun asiakas painaa kirjaudu-

painiketta järjestelmä tarkistaa onko käyttäjätunnusta olemassa ja onko salasana syötetty oikein. Jos ehdot täyttyivät, asiakkaan kirjautuminen onnistuu.

Jos käyttäjätunnusta ei löydy tietokannasta, järjestelmä kirjoittaa kirjautumis- näytölle tekstin: ”Väärä käyttäjätunnus tai salasana!”.

Jos tietokannan käsittelyssä tapahtui virhe, järjestelmä palauttaa käyttäjän kirjautumis-näytölle.

Kirjautumisen tarkempi toiminta on kerrottu kohdassa 5.1 Kirjautuminen osakäyttötapaus.

Kuva 2.2. Suunnittelu, osan tyypin valinta – suunnittelu.jsp

Tyypin valinnan tarkempi kuvaus on kerrottu kohdassa 5.2 Pyörän suunnittelu osakäyttötapaus.

(6)

Kuva 2.3. Suunnittelu, osan tyyppi valittu – suunnittelu.jsp

Merkin valinnan tarkempi kuvaus on kerrottu kohdassa 5.3 Merkin valinta osakäyttötapaus.

Kuva 2.4. Suunnittelu, osan valinta – suunnittelu.jsp

(7)

Kuva 2.5. Suunnittelu, osa valittu – suunnittelu.jsp

Kuva 2.6. Suunnittelu, tarjouspyynnön lähetys – suunniteltuPyora.jsp

(8)

Kuva 2.7. Suunnittelu, tarjouspyyntö lähetetty – kiitos.jsp

3 Oliomalli

Tietojärjestelmän luokkakaavio on kuvattu kuvassa 3.1 Luokkakaavio.

Kirjautumisen toimintaa ohjaa Java-servletti nimeltään Kirjautuminen.java.

Kirjautuminen toimii käyttöliittymien (kirjautuminen.jsp ja suunnittelu.jsp) ja liiketoimintaluokkien välillä. Se huolehtii ohjelman toimintalogiikasta ja toiminnasta. Se tutkii käyttäjän tekemät valinnat ja ohjaa sovelluksen eri toimintavaihtoehtoihin. Se muodostaa sovelluksen toiminnassa tarvittavat liiketoimintaoliot käyttäjän antamien syötteiden perusteella.

(9)

Kuva 3.1. Luokkakaavio

(10)

4 Relaatiotietokanta

Relaatiotietokannan relaatiokaavio on kuvattu kuvassa Kuva 4.1 Tietokannan relaatiokaavio. Pyöräsuunnitelma-relaation ja muiden relaatioiden välillä on yhteyssuhde

Kuva 4.1. Tietokannan relaatiokaavio.

4.1 Relaatiokaavat

Relaatiokaavat on kuvattu kuvassa 4.2 Relaatiokaavat. Relaation pääavain on alleviivattu ja viiteavain on kursivoitu.

ASIAKAS(

sahkoposti : VARCHAR(50) NOT NULL, salasana : VARCHAR(20) NOT NULL, etunimi : VARCHAR(20) NOT NULL, sukunimi : VARCHAR(30) NOT NULL, sukupuoli : VARCHAR(20) NOT NULL, puhelinnumero : VARCHAR(20) NOT NULL, katuosoite : VARCHAR(20) NOT NULL, postitmp : VARCHAR(20) NOT NULL, postinro : VARCHAR(20) NOT NULL,

(11)

)

PYORASUUNNITELMA(

pyorasuunnitelma_id : INTEGER NOT NULL, kokonaishinta : DECIMAL(8,2) NOT NULL, pvm : DATE NOT NULL,

asiakas_id : VARCHAR(20) NOT NULL, polkimet_id : INTEGER NOT NULL, vaihteet_id : INTEGER NOT NULL, haarukka_id : INTEGER NOT NULL, runko_id : INTEGER NOT NULL, ketjut_id : INTEGER NOT NULL, tanko_id : INTEGER NOT NULL, jarrut_id : INTEGER NOT NULL, satula_id : INTEGER NOT NULL, renkaat_id : INTEGER NOT NULL, vanteet_id : INTEGER NOT NULL,

)

VANTEET(

vanteet_id : INTEGER NOT NULL, tyyppi : VARCHAR(30) NOT NULL, koko : INTEGER NOT NULL,

merkki : VARCHAR(100) NOT NULL, hinta : DECIMAL(8,2) NOT NULL,

)

RENKAAT(

renkaat_id : INTEGER NOT NULL, tyyppi : VARCHAR(30) NOT NULL, koko : INTEGER NOT NULL,

merkki : VARCHAR(100) NOT NULL, hinta : DECIMAL(8,2) NOT NULL,

)

SATULA(

satula_id : INTEGER NOT NULL, vari : VARCHAR(20) NOT NULL, tyyppi : VARCHAR(30) NOT NULL, koko : VARCHAR(1) NOT NULL, merkki : VARCHAR(100) NOT NULL, hinta : DECIMAL(8,2) NOT NULL,

)

JARRUT(

jarrut_id : INTEGER NOT NULL, tyyppi : VARCHAR(30) NOT NULL, merkki : VARCHAR(100) NOT NULL, hinta : DECIMAL(8,2) NOT NULL,

)

KETJUT(

(12)

ketjut_id : INTEGER NOT NULL, tyyppi : VARCHAR(30) NOT NULL, lenkit_lkm : INTEGER NOT NULL, merkki : VARCHAR(100) NOT NULL, hinta : DECIMAL(8,2) NOT NULL,

)

TANKO(

tanko_id :INTEGER NOT NULL, vari : VARCHAR(20) NOT NULL, tyyppi : VARCHAR(30) NOT NULL, koko : INTEGER NOT NULL,

merkki : VARCHAR(100) NOT NULL, hinta : DECIMAL(8,2) NOT NULL, liitos_id : INTEGER NOT NULL,

)

RUNKO(

runko_id : INTEGER NOT NULL, vari : VARCHAR(20) NOT NULL, tyyppi : VARCHAR(30) NOT NULL, koko : VARCHAR(1) NOT NULL, merkki : VARCHAR(100) NOT NULL, hinta : DECIMAL(8,2) NOT NULL, liitos_id : INTEGER NOT NULL,

)

HAARUKKA(

haarukka_id : INTEGER NOT NULL, vari : VARCHAR(20) NOT NULL, tyyppi : VARCHAR(30) NOT NULL, merkki : VARCHAR(100) NOT NULL, hinta : DECIMAL(8,2) NOT NULL, liitos_id : INTEGER NOT NULL,

)

LIITOKSET(

liitos_id : INTEGER NOT NULL, tyyppi : VARCHAR(10) NOT NULL,

)

VAIHTEET(

vaihteet_id : INTEGER NOT NULL, tyyppi : VARCHAR(30) NOT NULL, merkki : VARCHAR(100) NOT NULL, hinta : DECIMAL(8,2) NOT NULL,

)

(13)

POLKIMET(

polkimet_id : INTEGER NOT NULL, vari : VARCHAR(20) NOT NULL, tyyppi : VARCHAR(30) NOT NULL, merkki : VARCHAR(100) NOT NULL, hinta : DECIMAL(8,2) NOT NULL,

)

Kuva 4.2 relaatiokaavat 4.2 Relaatioiden luontilauseet

Pyöräsuunnitelman relaatiokannan luontilauseet on kuvattu kuvassa 4.3.

Relaatioiden luontilauseet.

CREATE TABLE Asiakas (

sahkoposti VARCHAR(50) NOT NULL, salasana VARCHAR(20) NOT NULL, etunimi VARCHAR(20) NOT NULL, sukunimi VARCHAR(30) NOT NULL, sukupuoli VARCHAR(20) NOT NULL, puhelinnumero VARCHAR(20) NOT NULL, katuosoite VARCHAR(20) NOT NULL, postitmp VARCHAR(20) NOT NULL, postinro VARCHAR(20) NOT NULL, PRIMARY KEY (sahkoposti)

);

CREATE TABLE Liitokset (

liitos_id INTEGER NOT NULL, tyyppi VARCHAR(10) NOT NULL, PRIMARY KEY (liitos_id) );

CREATE TABLE Haarukka (

haarukka_id INTEGER NOT NULL, vari VARCHAR(20) NOT NULL, tyyppi VARCHAR(30) NOT NULL, merkki VARCHAR(100) NOT NULL, hinta DECIMAL(8,2) NOT NULL, liitos_id INTEGER NOT NULL, PRIMARY KEY (haarukka_id),

FOREIGN KEY (liitos_id) REFERENCES Liitokset(liitos_id) );

CREATE TABLE Runko(

runko_id INTEGER NOT NULL, vari VARCHAR(20) NOT NULL, tyyppi VARCHAR(30) NOT NULL, koko VARCHAR(1) NOT NULL, merkki VARCHAR(100) NOT NULL, hinta DECIMAL(8,2) NOT NULL, liitos_id INTEGER NOT NULL, PRIMARY KEY (runko_id),

FOREIGN KEY (liitos_id) REFERENCES Liitokset(liitos_id) );

(14)

CREATE TABLE Tanko(

tanko_id INTEGER NOT NULL, vari VARCHAR(20) NOT NULL, tyyppi VARCHAR(30) NOT NULL, koko INTEGER NOT NULL, merkki VARCHAR(100) NOT NULL, hinta DECIMAL(8,2) NOT NULL, liitos_id INTEGER NOT NULL, PRIMARY KEY (tanko_id),

FOREIGN KEY (liitos_id) REFERENCES Liitokset(liitos_id) );

CREATE TABLE Polkimet (

polkimet_id INTEGER NOT NULL, vari VARCHAR(20) NOT NULL, tyyppi VARCHAR(30) NOT NULL, merkki VARCHAR(100) NOT NULL, hinta DECIMAL(8,2) NOT NULL, PRIMARY KEY (polkimet_id) );

CREATE TABLE Vaihteet(

vaihteet_id INTEGER NOT NULL, tyyppi VARCHAR(30) NOT NULL, merkki VARCHAR(100) NOT NULL, hinta DECIMAL(8,2) NOT NULL, PRIMARY KEY (vaihteet_id) );

CREATE TABLE Ketjut(

ketjut_id INTEGER NOT NULL, tyyppi VARCHAR(30) NOT NULL, lenkit_lkm INTEGER NOT NULL, merkki VARCHAR(100) NOT NULL, hinta DECIMAL(8,2) NOT NULL, PRIMARY KEY (ketjut_id) );

CREATE TABLE Jarrut(

jarrut_id INTEGER NOT NULL, tyyppi VARCHAR(30) NOT NULL, merkki VARCHAR(100) NOT NULL, hinta DECIMAL(8,2) NOT NULL, PRIMARY KEY (jarrut_id) );

CREATE TABLE Satula(

satula_id INTEGER NOT NULL, vari VARCHAR(20) NOT NULL, tyyppi VARCHAR(30) NOT NULL, koko VARCHAR(1) NOT NULL, merkki VARCHAR(100) NOT NULL, hinta DECIMAL(8,2) NOT NULL, PRIMARY KEY (satula_id) );

CREATE TABLE Renkaat(

renkaat_id INTEGER NOT NULL, tyyppi VARCHAR(30) NOT NULL, koko INTEGER NOT NULL, merkki VARCHAR(100) NOT NULL,

(15)

hinta DECIMAL(8,2) NOT NULL, PRIMARY KEY (renkaat_id) );

CREATE TABLE Vanteet(

vanteet_id INTEGER NOT NULL, tyyppi VARCHAR(30) NOT NULL, koko INTEGER NOT NULL, merkki VARCHAR(100) NOT NULL, hinta DECIMAL(8,2) NOT NULL, PRIMARY KEY (vanteet_id) );

CREATE TABLE Pyorasuunnitelma (

pyorasuunnitelma_id INTEGER NOT NULL, kokonaishinta DECIMAL(8,2) NOT NULL,

pvm DATE NOT NULL,

asiakas_id VARCHAR(50) NOT NULL, polkimet_id INTEGER NOT NULL, vaihteet_id INTEGER NOT NULL, haarukka_id INTEGER NOT NULL, runko_id INTEGER NOT NULL, ketjut_id INTEGER NOT NULL, tanko_id INTEGER NOT NULL, jarrut_id INTEGER NOT NULL, satula_id INTEGER NOT NULL, renkaat_id INTEGER NOT NULL, vanteet_id INTEGER NOT NULL, PRIMARY KEY (pyorasuunnitelma_id),

FOREIGN KEY (asiakas_id) REFERENCES Asiakas(sahkoposti), FOREIGN KEY (polkimet_id) REFERENCES

Polkimet(polkimet_id),

FOREIGN KEY (vaihteet_id) REFERENCES Vaihteet(vaihteet_id),

FOREIGN KEY (haarukka_id) REFERENCES Haarukka(haarukka_id),

FOREIGN KEY (runko_id) REFERENCES Runko(runko_id), FOREIGN KEY (ketjut_id) REFERENCES

Ketjut(ketjut_id),

FOREIGN KEY (tanko_id) REFERENCES Tanko(tanko_id), FOREIGN KEY (jarrut_id) REFERENCES

Jarrut(jarrut_id),

FOREIGN KEY (satula_id) REFERENCES Satula(satula_id),

FOREIGN KEY (renkaat_id) REFERENCES Renkaat(renkaat_id), FOREIGN KEY (vanteet_id) REFERENCES Vanteet(vanteet_id) );

CREATE SEQUENCE seq_suunnitelma MINVALUE 1 INCREMENT BY 1;

Kuva 4.3. Relaatioiden luontilauseet

(16)

5 Järjestelmän arkkitehtuurimalli

Järjestelmän rakenne käyttäjän ja pääservletin välillä on kuvattu JSP Model 2:n mukaisessa MVC-mallissa kuvassa 5.1 Järjestelmän rakenne.

Kuva 5.1. Järjestelmän rakenne.

Järjestelmässä käytetään 3-tasoista mallia, joka ilmenee kuvassa 5.2. 3- tasomalli.

Kuva 5.2. 3-tasomalli

JSP:t

Liike- toiminta-

luokat

Tieto-kanta- luokat

Servlet-

luokka

(17)

Yhteistyökaavioissa ei näy container-ohjelmistoa, vaan kaavioissa käyttöliittymä kutsuu suoraan pääservletin doGet- ja doPost-metodia.

Yhteistyökaavioilla kuvataan järjestelmän käyttötapaukset ja käyttötapausten osakäyttötapaukset. Niihin on liitetty metodin kutsun paluuarvo katkoviivoin UML-standardista poiketen.

5.1 Kirjautuminen osakäyttötapaus

Kun järjestelmä käynnistetään, avautuu kirjautuminen.jsp-ikkuna. Tähän ikkunaan käyttäjä kirjoittaa käyttäjätunnuksensa, joka on asiakkaan sähköpostiosoite ja tämän lisäksi salasanan. Tämän jälkeen hän painaa Kirjaudu-painiketta. Kun asiakkaan tiedot on haettu onnistuneesti, tietokannasta haetaan vielä runkojen tyypit ja siirrytään suunnittelu.jsp- näyttöön.

Tapahtumat, jotka seuraavat Kirjaudu-nappulan painalluksen jälkeen, on kuvattu kuvassa 5.2 Kirjautuminen yhteistyökaavio.

:FillariIhmeet :AsiakasOhjaus :TietokantaOhjaus

Parametrit:

action="kirjaudu"

sahkoposti = käyttäjän kirjoittama asiakkaan sähköpostiosoite salasana = käyttäjän kirjoittama asiakkaan salasana

kirjautuminen.jsp

1)doGet(...)

2)hae(String sahkoposti, String salasana)

3)haeAsiakkaat(String sahkoposti, String salasana) Poikkeustilanne, attribuutit:

eiTulosta=true , jos tietokannasta ei löytynyt hakukriteerin täyttäviä asiakastietoja

tietokantaVirhe=true , jos tietokannan käsittelyssä tapahtui virhe siirrytään kirjautuminen.jsp-sivulle.

6)”aktivoi

Suunnittelu.jsp

2)Asiakas 3)ArrayList <HashMap>

Jos asiakastiedot löytyi, sessionattribuutit:

asiakas=Asiakas-olio muut attribuutit:

tyyppilista:ArrayList<String>

:RunkoOhjaus

4)haeTyypit() 5)haeTyypit()

5)ArrayList <HashMap>

4)ArrayList<String>

Kuva 5.2. Kirjautuminen yhteistyökaavio

(18)

5.2 Pyörän suunnittelu osakäyttötapaus

Näytölle tulee aktiiviset linkit, joista käyttäjä valitsee haluamansa rungon tyypin. Kun käyttäjä on valinnut tyypin, alle listautuu hakukriteeriä vastaavat osat. Osista näytetään vain merkki ja hinta. Tapahtuma on kuvattu

yhteistyökaavion avulla kuvassa, 5.3 Pyörän suunnittelu yhteistyökaavio.

:FillariIhmeet Parametrit:

action="haeRungot"

tyyppi = käyttäjän valitsema rungon tyyppi

suunnittelu.jsp

1)doGet(...)

2)haeRungot(String

tyyppi) 3)haeRungot(String tyyppi)

Poikkeustilanne, attribuutit:

tietokantaVirhe=true , jos tietokannan käsittelyssä tapahtui virhe tai yhtään runkoa ei löytynyt kannasta.

siirrytään kirjautuminen.jsp-sivulle.

4)”ak tivoi”

2)ArrayList<Runko> 3)ArrayList <HashMap>

session attribuutit:

runkolista:ArrayList<Runko>

:RunkoOhjaus :TietokantaOhjaus

Kuva 5.3. Pyörän suunnittelu yhteistyökaavio

5.3 Merkin valinta osakäyttötapaus

Kun käyttäjä valitsee rungon merkin ja painaa pyörän merkissä olevaa linkkiä, alle avautuu aktiiviset linkit jossa on tarkemmat tiedot osista (esim. väri, koko). Tapahtuma on kuvattu yhteistyökaavion avulla kuvassa, 5.3 Merkin valinta osakäyttötapaus.

:FillariIhmeet Parametrit:

action="haeValitutRungot"

merkki= käyttäjän valitsema rungon merkki

suunnittelu.jsp

1)doGet(...)

2)haeValitutRungot(String merkki)

3)haeValitutRungot(String merkki)

Poikkeustilanne, attribuutit:

tietokantaVirhe=true , jos tietokannan käsittelyssä tapahtui virhe tai yhtään runkoa ei löytynyt kannasta.

siirrytään kirjautuminen.jsp-sivulle.

4)”ak tivoi”

2)ArrayList<Runko> 3)ArrayList <HashMap>

attribuutit:

valitturunkolista:ArrayList<Runko>

:RunkoOhjaus

Kuva 5.3 Merkin valinta osakäyttötapaus

(19)

6 Viestiyhteyskaaviot

Viestiyhteyskaavioissa kuvataan samat käyttötapaukset ja osakäyttötapaukset kuin yhteistyökaavioissakin. Kaavioissa näkyy käyttöliittymän (jsp-tiedoston) ja pääservletin välinen kommunikointi siten, että käyttöliittymä kutsuu

pääservletin doPost- tai doGet-metodia. Todellisuudessa käyttöliittymä ei suoraan kutsu pääservletin metodeja vaan kutsun tekee Container-sovellus (ks. kuva 5.1. Järjestelmän rakenne.). Container-sovellus ei siis näy

kaavioissa. Lisäksi kaavioissa doGet- ja doPost-metodien palauttama arvo kuvataan metodien paluuarvona. Todellisuudessa paluutieto palautetaan doGet- ja doPost-metodien parametrin HttpServerRequest-olion attribuutin avulla.

Lisäksi kun pääservletti antaa käskyn aktivoida toisen käyttöliittymän, tämä kuvataan viestiyhteyskaavioissa metodin ”aktivoi”-kutsulla. Todellisuudessa pääservletti välittää tiedon RequestDispatcher-olion metodin forward avulla.

6.1 Kirjautuminen viestiyhteistyökaavio

Kirjautuminen järjestelmässä on yksi käyttötapaus, kirjautuminen, joka muodostuu yhdestä osakäyttötapauksesta:

1) Kirjautuminen, jolloin käyttäjä kirjoittaa sähköpostiosoitteen ja salasanan, jonka jälkeen painaa Kirjaudu-painiketta.

Tapahtuma on kuvattu viestiyhteistyökaavion avulla kuvissa, 6.1.1

kirjautuminen viestiyhteyskaavio 1, 6.1.2 kirjautuminen viestiyhteyskaavio 2, 6.1.3 kirjautuminen viestiyhteyskaavio 3.

(20)

Parametrit:

action="kirjaudu"

sahkoposti = käyttäjän kirjoittama asiakkaan sähköpostiosoite salasana = käyttäjän kirjoittama asiakkaan salasana

Jos asiakastiedot löytyi, sessionattribuutit:

asiakas=Asiakas-olio muut attribuutit:

tyyppilista:ArrayList<String>

Kirjautuminen.jsp :FillariIhmeet :AsiakasOhjaus

doGet(...)

hae (String sahkoposti, String salasana)

Asiakas Poikkeustilanne, attribuutit:

eiTulosta=true , jos tietokannasta ei löytynyt hakukriteerin täyttäviä asiakastietoja

tietokantaVirhe=true , jos tietokannan käsittelyssä tapahtui virhe siirrytään kirjautuminen.jsp-sivulle.

new AsiakasOhjaus()

:RunkoOhjaus

new RunkoOhjaus()

haeTyypit()

ArrayList <String>

Suunnittelu.jsp

Poikkeustilanne:

Jos RunkoOhjaus heittää poikkeuksen SQLException

==>attribuutti:tietokantaVirhe=true siirrytään kirjautuminen.jsp-sivulle.

Kuva 6.1.1 kirjautuminen viestiyhteyskaavio 1

(21)

:TietokantaOhjaus

:Tietokanta AsiakasOhjaus-olion metodi

Asiakas hae(String sahkoposti, String salasana):

Asiakas-luokan tarkastaSahkoposti metodi tarkistaa parametrin : paluuarvo on false, kun parametri on

- null tai tyhjä tai

se sisältää muitakin kuin seuraavia merkkejä:

a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z, 0,1,2,3,4,5,6,7,8,9,

. (piste), _ (alaviiva),-(yksi väliviiva),@ (miau-merkki).

Asiakas-luokan tarkastaSalasana metodi tarkastaa parametrin:

paluuarvo on false, kun parametri on - null tai tyhjä tai

tai se sisältää muitakin kuin seuraavia merkkejä:

a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z, A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z, 0,1,2,3,4,5,6,7,8,9,

_ (alaviiva).

new TietokantaOhjaus()

haeAsiakkaat(String sahkoposti, String salasana)

new Tietokanta() yhdista() boolean onnistui sql:

SELECT * FROM asiakas

WHERE sahkoposti='sahkoposti' AND salasana='salasana'

suoritaKysely(String sql) ArrayList <HashMap>

katkaise() boolean onnistui ArrayList <HashMap>

Jos ArrayList <HashMap> != null luodaan ArrayListan HashMap-oliosta Asiakas-olio.

HashMap-olioiden avaintiedot:

sahkoposti etunimi sukunimi sukupuoli puhelinnumero katuosoite postitmp

postinro :Asiakas

new Asiakas(String sposti, String etu, String suku, String sex, String puh, String katu, String tmp, String pnro) Poikkeustilanne:

TietokantaOhjauksen metodi heittää poikkeuksen SQLException, jonka AsiakasOhjauksen metodi välittää eteenpäin.

:Asiakas Asiakas tarkastaSahkoposti(String sahkoposti)

ok/not ok

Asiakas.tarkastaSalasana(String salasana) ok/not ok

jos Asiakas-luokan metodit palauttavat

arvon false, palataan kutsujaan ja paluuarvo on null.

Kuva 6.1.2 kirjautuminen viestiyhteyskaavio 2

(22)

RunkoOhjaus-olion metodi ArrayList <String> haeTyypit()

:RunkoOhjaus

:TietokantaOhjaus

:Tietokanta new TietokantaOhjaus()

haeTyypit()

new Tietokanta() yhdista() boolean onnistui

sql:

SELECT DISTINCT tyyppi FROM runko

ORDER BY tyyppi suoritaKysely(String sql)

ArrayList <HashMap>

katkaise() boolean onnistui ArrayList <HashMap>

jos ArrayList <HashMap> != null

jokaisesta ArrayListan oliosta tehdään String-olio ja lisätään ArrayList <String> -olioon.

HashMap-avain:

tyyppi

Poikkeustilanne:

TietokantaOhjauksen metodi heittää poikkeuksen SQLException, jonka RunkoOhjauksen metodi välittää eteenpäin.

Jos ArrayList <HashMap> == null

RunkoOhjaus heittää SQLException poikkeuksen

Kuva 6.1.3 kirjautuminen viestiyhteyskaavio 3

6.2 Suunnittelu viestiyhteistyökaavio

Suunnittelujärjestelmässä on yksi käyttötapaus, pyörän suunnittelu, joka muodostuu useasta osakäyttötapauksesta:

1-10) Ensiksi valitaan ylhäällä olevasta linkistä osan tyyppi, jonka jälkeen alle listautuu hakukriteeriä vastaavat osat. Osista näytetään listauksessa malli ja hinta.

Tapahtuma on kuvattu viestiyhteistyökaavion avulla kuvissa, 6.2.1, 6.2.2 suunnittelu viestiyhteyskaavio.

(23)

Parametrit:

action="haeRungot"

tyyppi = käyttäjän valitsema rungon tyyppi

Suunnittelu.jsp :FillariIhmeet :RunkoOhjaus

doGet(...)

new RunkoOhjaus() haeRungot (String tyyppi)

ArrayList<Runko>

Poikkeustilanne:

Jos RunkoOhjaus heittää poikkeuksen SQLException tai ArrayList<Runko>==null

==>attribuutti:tietokantaVirhe=true siirrytään Krjautuminen.jsp-sivulle.

session attribuutit:

runkolista:ArrayList<Runko>

Kirjautuminen.jsp

Kuva 6.2.1 suunnittelu viestiyhteyskaavio 1

(24)

:TietokantaOhjaus

new TietokantaOhjaus()

haeRungot (String tyyppi)

:RunkoOhjaus :Tietokanta

new Tietokanta() yhdista() boolean onnistui

sql:

SELECT distinct merkki, hinta FROM runko

WHERE tyyppi='tyyppi' order by merkki

suoritaKysely(String sql) ArrayList <HashMap>

katkaise() boolean onnistui ArrayList <HashMap>

Jos ArrayList <HashMap> != null

jokaisesta ArrayListan HashMap-oliosta tehdään runko-olio, joka siirretään ArrayList <Runko> listaan HashMap-olioiden avaintiedot:

runko_id , vari , tyyppi , koko , merkki , hinta , liitos_id

:Runko

new Runko(int id, String vari, String tyyppi, String koko, String merkki, double hinta)

Poikkeustilanne:

TietokantaOhjauksen metodi heittää poikkeuksen SQLException, jonka RunkoOhjauksen metodi välittää eteenpäin.

RunkoOhjaus-olion metodi ArrayList<String> haeRungot()

Kuva 6.2.2 suunnittelu viestiyhteyskaavio 2

(25)

6.3 Osan valinta viestiyhteistyökaavio

Suunnittelujärjestelmässä on yksi käyttötapaus, pyörän suunnittelu, joka muodostuu useasta osakäyttötapauksesta:

1-10) Käyttäjä painaa haluamansa osan nimeä ja alle avautuu lista, jossa voi valita osan värin, koon yms. Haluttu osa siirtyy suunnitelmaan linkkiä painamalla. Kaikki osat valittuaan näytölle listautuu yhteenveto suunnitelmasta ja käyttäjä painaa Lähetä tarjouspyyntö-painiketta jolloin tarjouspyyntö menee käsittelyyn.

Tapahtuma on kuvattu viestiyhteistyökaavion avulla kuvissa: 6.3.1, 6.3.2, 6.3.3 ja 6.3.4 osan valinta viestiyhteyskaavio. Kuvat 6.3.1 ja 6.3.2 kuvaavat tilannetta, jossa valitaan pyörän ensimmäinen osa. Kuvat 6.3.3 ja 6.3.4 kuvaavat tilannetta, jossa valitaan pyörän seuraava osa. Seuraavat osat valitaan samalla periaatteella kuin näissä kahdessa jälkimmäisessä kuvassa.

Suunnittelu.jsp :FillariIhmeet :RunkoOhjaus

doGet(...)

new RunkoOhjaus() haeValitutRungot (String merkki)

ArrayList<Runko>

Poikkeustilanne:

Jos RunkoOhjaus heittää poikkeuksen SQLException tai ArrayList<Runko>==null

==>attribuutti:tietokantaVirhe=true siirrytään Kirjautuminen.jsp-sivulle.

Kirjautuminen.jsp

Parametrit:

action="haeValitutRungot"

merkki= käyttäjän valitsema rungon merkki

attribuutit:

valitturunkolista:ArrayList<Runko>

Kuva 6.3.1 osan valinta viestiyhteyskaavio 1

(26)

:TietokantaOhjaus

new TietokantaOhjaus()

haeValitutRungot (String merkkii)

:RunkoOhjaus :Tietokanta

new Tietokanta() yhdista() boolean onnistui

sql:

SELECT * FROM runko

WHERE merkki='merkki' order by hinta

suoritaKysely(String sql) ArrayList <HashMap>

katkaise() boolean onnistui ArrayList <HashMap>

Jos ArrayList <HashMap> != null

jokaisesta ArrayListan HashMap-oliosta tehdään runko-olio, joka siirretään ArrayList <Runko> listaan HashMap-olioiden avaintiedot:

runko_id , vari , tyyppi , koko , merkki , hinta , liitos_id

:Runko

new Runko(int id, String vari, String tyyppi, String koko, String merkki, double hinta)

Poikkeustilanne:

TietokantaOhjauksen metodi heittää poikkeuksen SQLException, jonka RunkoOhjauksen metodi välittää eteenpäin.

RunkoOhjaus-olion metodi ArrayList<String> haeValitutRungot()

Kuva 6.3.2 osan valinta viestiyhteyskaavio 2

(27)

Parametrit:

runko_id = käyttäjän valitseman rungon id

Jos haarukkatiedot löytyi, sessionattribuutit:

haarukka=Haarukka-olio muut attribuutit:

haarukkalista:ArrayList<String>

Suunnittelu.jsp :FillariIhmeet :RunkoOhjaus

doGet()

haeRunko(int runko_id)

Runko

Poikkeustilanne, attribuutit:

eiTulosta=true , jos tietokannasta ei löytynyt hakukriteerin täyttäviä runkotietoja

tietokantaVirhe=true , jos tietokannan käsittelyssä tapahtui virhe siirrytään Kirjautuminen.jsp-sivulle.

new RunkoOhjaus()

:RunkoOhjaus

haarukkaTyyppiValittu(Liitos liitos)

ArrayList<String>

Suunnittelu.jsp

Poikkeustilanne:

Jos RunkoOhjaus heittää poikkeuksen SQLException

==>attribuutti:tietokantaVirhe=true siirrytään Kirjautuminen.jsp-sivulle.

sessionattribuutit:

runko=Runko-olio

Kuva 6.3.3 osan valinta viestiyhteyskaavio 3

(28)

:TietokantaOhjaus

new TietokantaOhjaus()

haeValittuRunko(int runko_idi)

:RunkoOhjaus :Tietokanta

new Tietokanta() yhdista() boolean onnistui sql:

"SELECT runko_id,vari, r.tyyppi AS tyyppi, merkki,koko, hinta, t.liitos_id AS liitos_id, t.tyyppi AS liitos_tyyppi " +

"FROM runko r

JOIN liitokset t On r.liitos_id=t.liitos_id WHERE runko_id= runko_id;

suoritaKysely(String sql) ArrayList <HashMap>

katkaise() boolean onnistui ArrayList <HashMap>

Jos ArrayList <HashMap> != null

jokaisesta ArrayListan HashMap-oliosta tehdään runko-olio, joka siirretään ArrayList <Runko> listaan HashMap-olioiden avaintiedot:

runko_id , vari , tyyppi , koko , merkki , hinta , liitos_id

:Runko

new Runko(int id, String vari, String tyyppi, String koko, String merkki, double hinta, Liitos lii)

Poikkeustilanne:

TietokantaOhjauksen metodi heittää poikkeuksen SQLException, jonka RunkoOhjauksen metodi välittää eteenpäin.

RunkoOhjaus-olion metodi ArrayList<String> haeValittuRunko()

Kuva 6.3.4 osan valinta viestiyhteyskaavio 4

(29)

6.4 Tarjouspyynnön lähetys viestiyhteyskaavio

Suunnittelujärjestelmässä on yksi käyttötapaus, pyörän suunnittelu, joka muodostuu useasta osakäyttötapauksesta:

Käyttäjä painaa ”Lähetä tarjouspyyntö” painiketta. Järjestelmä lisää pyöräsuunnitelmaan tietokantaan ja siirtää käyttäjän Kiitos.jsp näkymään.

Tapahtuma on kuvattu viestiyhteistyökaavion avulla kuvissa: 6.4.1 ja 6.4.2 osan valinta viestiyhteyskaavio.

Parametrit:

action="lahetaPyorasuunnitelma"

ps = käyttäjän suunnittelema pyörä

SuunniteltuPyora.jsp :FillariIhmeet :RunkoOhjaus

doGet(...)

new RunkoOhjaus()

talletaPyorasuunnitelma (PyoraSuunnitelma ps)

Poikkeustilanne:

Jos RunkoOhjaus heittää poikkeuksen SQLException

==>attribuutti:tietokantaVirhe=true siirrytään Kirjautuminen.jsp-sivulle.

Kiitos.jsp

Kuva 6.4.1 Tarjouspyynnön lähetys viestiyhteyskaavio 1

(30)

:TietokantaOhjaus

new TietokantaOhjaus()

talletaPyorasuunnitelma(PyoraSuunnitelma ps)

:RunkoOhjaus :Tietokanta

new Tietokanta() yhdista() boolean onnistui sql:

"INSERT INTO pyorasuunnitelma (pyorasuunnitelma_id, kokonaishinta, pvm, asiakas_id, polkimet_id, vanteet_id, "+

"haarukka_id, runko_id, ketjut_id, tanko_id, jarrut_id, satula_id, renkaat_id, vaihteet_id) VALUES(seq_suunnitelma.NEXTVAL,"

suoritaKysely(String sql) katkaise() boolean onnistui

RunkoOhjaus-olion metodi talletaPyorasuunnitelma()

Kuva 6.4.2 Tarjouspyynnön lähetys viestiyhteyskaavio 2

6.5 Tarjouspyynnön peruutus viestiyhteyskaavio

Tarjouspyynnön peruutus toimii täsmälleen samalla tavalla kahdessa eri käyttötapauksessa, Suunnittelu.jsp ja Kiitos.jsp.

Käyttäjä painaa ”Tyhjennä pyöräsuunnitelma”, ”peruuta” tai ”suunnittele uusi pyörä” painiketta. Järjestelmä tyhjentää pyöräsuunnitelman ja siirtää

käyttäjän Suunnittelu.jsp näkymään ensimmäisen komponentin valintaan.

Tapahtuma on kuvattu viestiyhteistyökaavion avulla kuvassa: 6.5 Tarjouspyynnön peruutus viestiyhteyskaavio.

(31)

Parametrit:

action="lahetaPyorasuunnitelma"

ps = käyttäjän suunnittelema pyörä

SuunniteltuPyora.jsp :FillariIhmeet :RunkoOhjaus

doGet(...)

new RunkoOhjaus() haeTyypit()

Poikkeustilanne:

Jos RunkoOhjaus heittää poikkeuksen SQLException

==>attribuutti:tietokantaVirhe=true siirrytään Kirjautuminen.jsp-sivulle.

Suunnittelu.jsp

ArrayList <String>

Kaikki session attribuutit ja osien listat asetetaan nulleiksi.

Kuva 6.5 Tarjouspyynnön peruutus viestiyhteyskaavio

6.6 Ulos kirjautuminen viestiyhteyskaavio

Ulos kirjautuminen toimii täsmälleen samalla tavalla kahdessa eri käyttötapauksessa, Suunnittelu.jsp ja Kiitos.jsp.

Käyttäjä painaa ”Kirjaudu Ulos” painiketta. Järjestelmä kirjaa käyttäjän ulos ja siirtää hänet Kirjautuminen.jsp näkymään.

Tapahtuma on kuvattu viestiyhteistyökaavion avulla kuvassa: 6.6 Ulos kirjautuminen viestiyhteyskaavio.

(32)

Parametrit:

action="Kirjaudu ulos"

Suunnittelu.jsp

doGet(...)

Kirjautuminen.jsp

Sessio suljetaan:

HttpSession session = request.getSession(false);

session.invalidate();

Kuva 6.6 Ulos kirjautuminen viestiyhteyskaavio 7 Paketit

Websovelluksen luokat jaetaan kolmeen pakettiin: kohdeluokat, servletit ja tietokanta.

(33)

Kuva 7.1 Kohdeluokat-paketti

7.1 Kohdeluokat-paketti

Kohdeluokat-pakettiin kuuluvat AsiakasOhjaus-, RunkoOhjaus-,

PyoraSuunnitelma-, Asiakas-, Runko-, Liitos-, Pvm-, Haarukka-, Jarrut-, Ketjut-, Polkimet-, Renkaat-, Satula-, Tanko-, Vaihteet- ja Vanteet-luokka.

AsiakasOhjaus-luokka Toimii FillariIhmeet- ja TietokantaOhjaus-luokan välissä.

Attribuutit ArrayList<HashMap <String, String>> lista;

Muodostimet public AsiakasOhjaus() - oletusmuodostin

Metodit public Asiakas hae (String ktunnus, String salas) throws SQLException - hakee käyttäjän antaman hakukriteerin perusteella asiakkaiden tiedot

tietokannasta

RunkoOhjaus-luokka Kuvaa käsiteltävää tietoa pyörän tyypin valinta ja haku.

Attribuutit ArrayList<HashMap <String, String>> lista;

ArrayList<String>tyypit;

String tyyppi;

String merkki;

Muodostimet public RunkoOhjaus() - oletusmuodostin

Metodit public ArrayList<Runko> haeRungot(String tyyppi) throws SQLException public ArrayList<Runko> haeValitutRungot(String merkki) throws

SQLException

(34)

public Runko haeValittuRunko(int runkoId) throws SQLException

public ArrayList<Haarukka> haeHaarukat(Liitos liitos) throws SQLException public ArrayList<String> haeHaarukkaTyypit() throws SQLException

public ArrayList<Haarukka> haeValitutHaarukat(String merkki) throws SQLException

public Haarukka haeValittuHaarukka(int haarukkaId) throws SQLException PyoraSuunnitelma-luokka Kuvaa käsiteltävää tietoa pyörän suunnittelu.

Attribuutit private int pyorasuunnitelma_id;

private Double kokonaishinta;

private String pvm;

Muodostimet public PyoraSuunnitelma() - oletusmuodostin

Metodit -

Asiakas-luokka kuvaa käsiteltävää tietoa asiakas.

Attribuutit private String sahkoposti;

private String salasana;

private String etunimi;

private String sukunimi;

private String sukupuoli;

private String puhelinnumero;

private String katuosoite;

private String postitmp;

private String postinro;

Muodostimet public Asiakas (String sposti, String etunimi, String sukunimi, String sex, String puh, String katuos, String postitmp, String postinro)

Metodit public void setSahkoposti (String sahkoposti) public void setSalasana(String salasana) public void setEtunimi(String etunimi) public void setSukunimi(String sukunimi) public void setSukupuoli(String sukupuoli)

public void setPuhelinnumero(String puhelinnumero) public void setKatuosoite(String katuosoite)

public void setPostitmp(String postitmp) public void setPostinro(String postinro) public String getSahkoposti()

public String getSalasana() public String getEtunimi() public String getSukunimi()

(35)

public String getSukupuoli() public String getPuhelinnumero() public String getKatuosoite() public String getPostitmp() public String getPostinro() public String toString()

public static boolean tarkastaSahkoposti(String posti) public static boolean tarkastaSalasana(String sana)

Runko-luokka Kuvaa käsitettä pyörän runko.

Attribuutit private int runko_id;

private String vari;

private String tyyppi;

private String koko;

private String merkki;

private double hinta;

private Liitos liitos;

Muodostimet public Runko (int runko_id, String vari, String tyyppi, String koko, String merkki, double hinta)

public Runko (int runko_id, String vari, String tyyppi, String koko, String merkki, double hinta, Liitos lii)

Metodit public void setRunko_id(int runko_id) public void setVari(String vari)

public void setTyyppi(String tyyppi) public void setKoko(String koko) public void setMerkki(String merkki) public void setHinta(double hinta) public void setLiitos_id(int liitos_id) public int getRunko_id()

public String getVari() public String getTyyppi() public String getKoko() public String getMerkki() public double getHinta() public int getLiitos_id()

 palautetaan kutsujalle ko. attribuutin arvo public String toString()

Liitos-luokka Kuvaa pyörän rungon, tangon ja haarukan liitostyyppiä.

Attribuutit private int liitos_id;

private String tyyppi;

(36)

Muodostimet public Liitos (int liitos_id, String tyyppi) Metodit public void setLiitos_id(int liitos_id)

public void setTyyppi(String tyyppi) public int getLiitos_id()

public String getTyyppi()

 palautetaan kutsujalle ko. attribuutin arvo public String toString()

Haarukka-luokka Kuvaa käsitettä pyörän haarukan valinta.

Attribuutit private int haarukka_id;

private String vari;

private String tyyppi;

private String merkki;

private double hinta;

private int liitos_id;

private Liitos liitos;

Muodostimet public Haarukka(String merkki, double hinta)

public Haarukka (int haarukka_id, String vari, String tyyppi, String merkki, double hinta)

public Haarukka (int haarukka_id, String vari, String tyyppi, String merkki,double hinta, Liitos lii)

Metodit public void setHaarukka_id(int haarukka_id public void setVari(String vari)

public void setTyyppi(String tyyppi) public void setKoko(int koko)

public void setMerkki(String merkki) public void setHinta(double hinta) public void setLiitos_id(int liitos_id) public int getKoko()

public String getTyyppi() public String getVari() public int getHaarukka_id() public String getMerkki() public double getHinta() public int getLiitos_id()

Jarrut-luokka Kuvaa käsitettä pyörän jarrujen valinta.

Attribuutit private int jarrut_id;

private String tyyppi;

(37)

private String merkki;

private double hinta;

Muodostimet public Jarrut (int jarrut_id

,

String tyyppi

,

String merkki

,

double hinta) Metodit public void setJarrut_id(int jarrut_id

public void setTyyppi(String tyyppi) public void setMerkki(String merkki) public void setHinta(double hinta) public int getJarrut_id

public String getTyyppi public String getMerkki() public double getHinta()

Ketjut-luokka Kuvaa käsitettä pyörän ketjujen valinta.

Attribuutit private int ketjut_id;

private String tyyppi;

private int lenkit_lkm;

private String merkki;

private double hinta;

Muodostimet public Ketjut (ketjut_id, String tyyppi, lenkit_lkm, String merkki

,

double hinta) Metodit public void setKetjut_id(int ketjut_id)

public void setTyyppi(String tyyppi) public void setLenkit_lkm(int lenkit_lkm) public void setMerkki(String merkki) public void setHinta(double hinta) public int getKetjut_id()

public String getTyyppi() public int getLenkit_lkm() public String getMerkki() public double getHinta()

Polkimet-luokka Kuvaa käsitettä pyörän polkimien valinta.

Attribuutit private int polkimet_id;

private String vari;

private String tyyppi;

private String merkki;

private double hinta;

Muodostimet public Polkimet (polkimet_id, String vari, String tyyppi, String merkki, double hinta)

Metodit public void setPolkimet_id(int polkimet_id) public void setVari(String vari)

(38)

public void setTyyppi(String tyyppi) public void setMerkki(String merkki) public void setHinta(double hinta) public int getPolkimet_id()

public String getVari() public String getTyyppi() public String getMerkki() public double getHinta()

Renkaat-luokka Kuvaa käsitettä pyörän renkaiden valinta.

Attribuutit private int renkaat_id;

private String tyyppi;

private int koko;

private String merkki;

private double hinta;

Muodostimet public Renkaat (renkaat_id, String tyyppi, int koko, String merkki, double hinta)

Metodit public void setRenkaat_id(int renkaat_id) public void setTyyppi(String tyyppi) public void setKoko(int koko) public void setMerkki(String merkki) public void setHinta(double hinta) public int getRenkaat_id()

public String getTyyppi() public int getKoko() public String getMerkki() public double getHinta()

Satula-luokka Kuvaa käsitettä pyörän satulan valinta.

Attribuutit private int satula_id;

private String vari;

private String tyyppi;

private String koko;

private String merkki;

private double hinta;

Muodostimet public Satula (int satula_id, String vari, String tyyppi, String koko, String merkki, double hinta)

Metodit public void setSatula_id(int satula_id) public void setTyyppi(String tyyppi) public void setKoko(int koko) public void setMerkki(String merkki) public void setHinta(double hinta)

(39)

public int getSatula_id() public String getTyyppi() public int getKoko() public String getMerkki() public double getHinta()

Tanko-luokka Kuvaa käsitettä pyörän tangon valinta.

Attribuutit private int tanko_id;

private String vari;

private String tyyppi;

private int koko;

private String merkki;

private double hinta;

private int liitos_id;

private Liitos liitos;

Muodostimet public Tanko(String merkki, double hinta)

public Tanko (int tanko_id, String vari, String tyyppi, String koko, String merkki, double hinta, int liitos_id)

public Tanko (int tanko_id, String vari, String tyyppi, int koko, String merkki,double hinta, Liitos lii)

Metodit public void setTanko_id(int tanko_id) public void setVari(String vari)

public void setTyyppi(String tyyppi) public void setKoko(int koko) public void setMerkki(String merkki) public void setHinta(double hinta) public void setLiitos_id(int liitos_id) public int getTanko_id()

public String getVari() public String getTyyppi() public int getKoko() public String getMerkki() public double getHinta() public int getLiitos_id()

Vaihteet-luokka Kuvaa käsitettä pyörän vaihteiden valinta.

Attribuutit private int vaihteet_id;

private String tyyppi;

private String merkki;

private double hinta;

Muodostimet public Vaihteet (vaihteet_id, double hinta, String merkki, String tyyppi)

(40)

Metodit public void setVaihteet_id(int vaihteet_id) public void setTyyppi(String tyyppi)

public void setMerkki(String merkki) public void setHinta(double hinta) public int getVaihteet_id()

public String getTyyppi() public String getMerkki() public double getHinta()

Vanteet-luokka Kuvaa käsitettä pyörän vanteiden valinta.

Attribuutit private int vanteet_id;

private String tyyppi;

private int koko;

private String merkki;

private double hinta;

Muodostimet public Vanteet (vanteet_id, String tyyppi, int koko, String merkki, double hinta)

Metodit public void setVanteet_id(int vanteet_id) public void setTyyppi(String tyyppi) public void setKoko(int koko)

public void setMerkki(String merkki) public void setHinta(double hinta) public int getVanteet_id()

public String getTyyppi() public int getKoko() public String getMerkki() public double getHinta()

Pvm-luokka Kuvaa käsitettä päivämäärä.

Attribuutit int pp;

int kk;

int vv;

Muodostimet public Pvm( int pp, int kk, int vv) Metodit

public void setPaiva(int pp) public void setKuukausi(int kk) public void setVuosi(int vv)

public void setPvm(int pp, int kk, int vv) public int getPaiva()

public int getKuukausi() public int getVuosi()

(41)

public void lisaaPaiva(int arvo) public void lisaaKuukausi(int arvo) public void lisaaVuosi(int arvo) public String toString()

7.2 Servletit-paketti

Sisältää järjestelmän pääservletin eli käyttöliittymää ohjaavan FillariIhmeet- luokan. FillariIhmeet-luokka toimii käyttäjälle näytettävien jsp-sivujen sekä liiketoimintaa ohjaavan AsiakasOhjaus-luokan välillä.

FillariIhmeet-luokka Sisältää ohjelman logiikan, on järjestelmän pääservletti ja toimii käyttöliittymien ja Kohdeluokkien välillä.

Muodostimet public FillariIhmeet() - oletusmuodostin

Metodit protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

protected void merkkiValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException

protected void tyyppiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

(42)

protected void runkoValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

protected void haarukkaTyyppiValittu(HttpServletRequest request, HttpServletResponse response, Runko runko) throws ServletException, IOException

protected void haarukkaMerkkiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException protected void haarukkaValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException protected void tankoTyyppiValittu(HttpServletRequest request,

HttpServletResponse response, Runko runko) throws ServletException, IOException

protected void tankoTyyppiValittu(HttpServletRequest request,

HttpServletResponse response, Runko runko) throws ServletException, IOException

protected void tankoMerkkiValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException

protected void tankoValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

protected void vanneTyyppiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException protected void vanneMerkkiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException protected void vanneValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException protected void RengasTyyppiValittu(HttpServletRequest request, HttpServletResponse response, Vanteet vanne)

protected void rengasMerkkiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException protected void RenkaatValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException protected void JarruTyyppiValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException protected void JarrutMerkkiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException protected void JarrutValittu(HttpServletRequest request,

(43)

HttpServletResponse response) throws ServletException, IOException protected void KetjutTyyppiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException protected void ketjuMerkkiValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException protected void KetjutValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException protected void PolkimetTyyppiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException protected void polkimetMerkkiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException protected void PolkimetValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException protected void satulaTyyppiValittu(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException protected void satulaMerkkiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException protected void satulaValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException protected void vaihdeTyyppiValittu(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException protected void vaihdeMerkkiValittu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException protected void vaihdeValittu(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException protected void lahetaPyorasuunnitelma(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

protected void kirjauduUlos(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

protected void kirjaudu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

(44)

7.3 Tietokanta-paketti

Sisältää TietokantaOhjaus- ja Tietokanta-luokat.

TietokantaOhjaus-luokka Toimii tietokanta-paketin rajapintana.

Attribuutit private Tietokanta tietokanta;

Muodostimet public TietokantaOhjaus() - oletusmuodostin

Metodit public ArrayList <HashMap<String,String>> haeAsiakas (String sposti, String ssana) throws SQLException

public ArrayList<HashMap<String, String>> haeTyypit() throws SQLException public ArrayList<HashMap<String, String>> haeRungot(String tyyppi)

throws SQLException

public ArrayList<HashMap<String, String>> haeValitutRungot(String merkki) throws SQLException

public ArrayList<HashMap<String, String>> haeValittuRunko(int runko_id) throws SQLException

public ArrayList<HashMap<String, String>> haeHaarukkaTyypit() throws SQLException

public ArrayList<HashMap<String, String>> haeHaarukat(Liitos liitos) throws SQLException

(45)

public ArrayList<HashMap<String, String>> haeValitutHaarukat(String merkki) throws SQLException

public ArrayList<HashMap<String, String>> haeValittuHaarukka(int haarukka_id) throws SQLException

public ArrayList<HashMap<String, String>> haeTankoTyypit() throws SQLException

public ArrayList<HashMap<String, String>> haeTangot(Liitos liitos) throws SQLException

public ArrayList<HashMap<String, String>> haeValitutTangot(String merkki) throws SQLException

public ArrayList<HashMap<String, String>> haeValittuTanko(int tanko_id) throws SQLException

public ArrayList<HashMap<String, String>> haeVanneTyypit() throws SQLException

public ArrayList<HashMap<String, String>> haeVanteet(String tyyppi) throws SQLException

public ArrayList<HashMap<String, String>> haeValitutVanteet(String merkki) throws SQLException

public ArrayList<HashMap<String, String>> haeValittuVanne(int vanteet_id) throws SQLException

public ArrayList<HashMap<String, String>> haeRengasTyypit() throws SQLException

public ArrayList<HashMap<String, String>> haeRenkaat(int vannekoko) throws SQLException

public ArrayList<HashMap<String, String>> haeValitutRenkaat(String merkki) throws SQLException

public ArrayList<HashMap<String, String>> haeValittuRengas(int renkaat_id) throws SQLException

public ArrayList<HashMap<String, String>> haeJarruTyypit() throws SQLException

public ArrayList<HashMap<String, String>> haeJarrut(String tyyppi) throws SQLException

public ArrayList<HashMap<String, String>> haeValitutJarrut(String merkki) throws SQLException

public ArrayList<HashMap<String, String>> haeValittuJarru(int jarrut_id)

(46)

throws SQLException

public ArrayList<HashMap<String, String>> haeKetjuTyypit() throws SQLException

public ArrayList<HashMap<String, String>> haeKetjut(String tyyppi) throws SQLException

public ArrayList<HashMap<String, String>> haeValitutKetjut(String merkki) throws SQLException

public ArrayList<HashMap<String, String>> haeValittuKetju(int ketjut_id) throws SQLException

public ArrayList<HashMap<String, String>> haePolkimetTyypit() throws SQLException

public ArrayList<HashMap<String, String>> haePolkimet(String tyyppi) throws SQLException

public ArrayList<HashMap<String, String>> haeValitutPolkimet(String merkki) throws SQLException

public ArrayList<HashMap<String, String>> haeValittuPoljin(int polkimet_id) throws SQLException

public ArrayList<HashMap<String, String>> haeSatulaTyypit() throws SQLException

public ArrayList<HashMap<String, String>> haeSatulat(String tyyppi) throws SQLException

public ArrayList<HashMap<String, String>> haeValitutSatulat(String merkki) throws SQLException

public ArrayList<HashMap<String, String>> haeValittuSatula(int satula_id) throws SQLException

public ArrayList<HashMap<String, String>> haeVaihteetTyypit() throws SQLException

public ArrayList<HashMap<String, String>> haeVaihteet(String tyyppi) throws SQLException

public ArrayList<HashMap<String, String>> haeValitutVaihteet(String merkki) throws SQLException

public ArrayList<HashMap<String, String>> haeValittuVaihde(int vaihteet_id) throws SQLException

public boolean talletaPyorasuunnitelma(PyoraSuunnitelma ps) throws SQLException

(47)

Tietokanta-luokka kuvaa fyysistä tietokantaa. Sen avulla saadaan yhteys todelliseen fyysiseen tietokantaa ja voidaan suorittaa kyselyjä ja päivityksiä em. kantaa.

Attribuutit private String sqlstate;

private boolean yhteysOnAuki = false;

private boolean transaktioKesken;

private Connection tietokantayhteys;

Metodit public boolean yhdista() throws SQLException - ottaa yhteyden fyysiseen tietokantaan public boolean katkaise() throws SQLException - katkaisee yhteyden fyysiseen tietokantaan

public ArrayList<HashMap> suoritaKysely(String sql) throws SQLException - suorittaa parametrissa saamansa sql-lauseen tietokannassa ja palauttaa tuloksen ArrayList <HashMap>-oliossa.

public int suoritaPaivitys(String sql) throws SQLException

- suorittaa parametrissa saamansa sql-päivityslauseen ja palauttaa arvonaan päivitettyjen rivien lukumäärän.

Viittaukset

LIITTYVÄT TIEDOSTOT

compressed data structures, full-text indexes, string processing, suffix array, Burrows-Wheeler transform, highly repetitive

Keywords: cosmology, the early universe, baryogenesis, inflation, preheating, super- symmetry, supergravity, string theory, flat directions,

It proposes three new algorithms – two based on sorted lists and one based on tries – to find the top-k similar string pairs efficiently, among which the trie-based algorithm achieves

Our results give strong evidence that it is cosmic string loops and not long string encounters (which we re-evaluated yielding drastically different results as those previously

 public void public void asetaNimi( asetaNimi(String String

&#34;public void public void asetaNimi( asetaNimi(String String

public class AudioSystemTest { public static void. public static void main(String[] args) { Mixer.Info[] mi

n void void init() n void void start() n void void stop() n URL getCodeBase() n void void showStatus(String msg) n String