Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Samankaltaiset tiedostot
Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään. Vaatimusdokumentti

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Graafinen käyttöliittymä lintujen rengastusjärjestelmään Projektisuunnitelma

Käyttöohje. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Ylläpitodokumentti. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Lohtu-projekti. Testaussuunnitelma

Käyttöohje. Tiput-ryhmä Ohjelmistotuotantoprojekti

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpito-ohje. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Toteutusdokumentti. Kotkat-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Vaatimusmäärittelydokumentti Osatehtävä Jokeri

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

Lohtu-projekti. Testiraportti. Versiohistoria: syklin toteutuksen testit. 1. ajo Virve

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

KÄYTTÖLIITTYMÄ SÄÄKSIEN PESIMÄTIETOJEN TIETOKANTAAN Käyttöohje

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Tietokannan luominen:

Käyttöohje. MAITO metadatan hallintatyökalu. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Action Request System

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Käsikirjan paperiversiota ei enää ylläpidetä ohjeen päivämäärän jälkeen. Viimeisimmät versiot ohjeista löydät ohjelman Help-ruudulta.

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Tikon Web-sovellukset

5. HelloWorld-ohjelma 5.1

Käyttöohje. Versiohistoria: versio Mari Kommenttien perusteella korjattu versio

Loppuraportti. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Käyttöohjeet. Sovellussivusto

TIETOKANTA MERIKOTKIEN SEURANTAAN Toteutusdokumentti. Versiohistoria:

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Uutta Remote Support Platform 3.0 -versiossa

Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria

A TIETORAKENTEET JA ALGORITMIT

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

Tietokannat II -kurssin harjoitustyö

Mainosankkuri.fi-palvelun käyttöohjeita

HELIA 1 (14) Outi Virkki Tiedonhallinta

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

KYMP Webmail -palvelu

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

Aditro Tikon versio SP1

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

Sisällysluettelo 1 Johdanto Root, koko Opalan pääkäyttäjä

Formaalit menetelmät: Kirjaston formalisointi Z-kuvauskielellä

17 BUDJETOINTI. Asiakaskohtainen Budjetti Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust Yleistä

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Fingridin säätösähkötarjousohje. Vaksin käyttöohjeet

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Microsoft Visual Studio 2005

Yhteenvetodokumentti. Halaan-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Toimittajaportaalin pikaohje

OPI-Maksut - Käyttötapaukset

Selaimen asetukset. Toukokuu (7) Selaimen asetukset Tikon Oy. All rights reserved.

Valppaan asennus- ja käyttöohje

Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy

Ylläpitodokumentti Mooan

Provet Net Kutsut ohje

Toimittajaportaalin pikaohje

UTIFLEET-VARAUSJÄRJESTELMÄ KÄYTTÄJÄN OHJE. Gospel Flight ry

WinOodin versiopäivitys 4.6; asennettu tuotantokantaan

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

KIURU Tietotekniikan sovellusprojekti

KÄYTTÖOHJE SISÄLLYSLUETTELO KIRJAUTUMINEN JÄRJESTELMÄÄN...2 JÄLKITOIMITUSKÄSITTELY...8 TUOTTEEN ETSIMINEN TILAUSTA TEHDESSÄ...9

EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille Meeri Nieminen

Käyttötapauksen nimi Lukija: pääsivu Osallistujat Lukija Tuloehdot Käyttäjä on avannut sivuston pääsivun Kuvaus Ruudulle tulostuvat kirjoittajat ja

Testaussuunnitelma Labra

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Projektisuunnitelma. Asdf. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Matematiikan oppifoorumi Projektisuunnitelma

Ohjelmiston testaus ja laatu. Testausmenetelmiä

F-Secure KEY salasanojenhallintaohjelman käyttöönotto PC -laitteella

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Aditro Tikon versio SP1

Toimittajaportaalin rekisteröityminen Toimittajaportaalin sisäänkirjautuminen Laskun luonti Liitteen lisääminen laskulle Asiakkaiden hallinta Uuden

Toteutusdokumentti. Aija. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteenlaitos

Tietokanta (database)

Transkriptio:

Graafinen käyttöliittymä lintujen rengastusjärjestelmään Toteutusdokumentti Versiohistoria: 0.1 19.04.2002 Ensimmäinen luonnos. Peter Lindroos 0.2 26.04.2002 Toinen luonnos. Vesa Teikari 0.3 02.05.2002 Kolmas luonnos. Peter Lindroos 0.4 04.05.2002 Neljäs luonnos. Vesa Teikari 0.5 05.05.2002 Viides luonnos. Peter Lindroos 0.6 06.05.2002 Vähäisiä korjauksia edelliseen luonnokseen. Vesa Teikari 0.7 07.05.2002 Korjauksia: kielioppia ja tekstin rakennetta. Vesa Teikari 0.8 11.05.2002 Lisää tekstiä Peter Lindroos 1.0 12.05.2002 Selvennyksiä tekstiin, perusteellista selvittelyä. Peter Lindroos Helsinki, 12. toukokuuta 2002 Markus Päivinen Mari Jaakkola Peter Lindroos Tarja Rauste Simo Salmensuu Vesa Teikari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti Haukka

Sisältö 1 Johdanto 1 1.1 Dokumentin tarkoitus........................ 1 1.2 Tekninen sanasto ja käytetyt lyhenteet............... 1 2 Vaatimusmäärittely, suunnittelu ja niihin tehdyt muutokset 2 3 Toteutusratkaisut 3 3.1 Toteutuksen yleiskuva........................ 3 3.2 Tiedostojen sijainti......................... 3 3.3 Näyttöjen tekninen toteutus..................... 4 4 Järjestelmään toteutetut uudet luokat 7 4.1 tipu.servlet.renpal.................... 7 4.2 tipu.servlet.retyyllapito............... 8 4.3 tipu.servlet.lasarjat................... 8 4.4 tipu.servlet.renkir.................... 9 4.5 tipu.servlet.krselaus................... 9 4.6 tipu.servlet.varejakelu................. 9 4.7 tipu.servlet.rehirrus................... 10 4.8 tipu.servlet.rengastajat................ 10 4.9 tipu.servlet.maat...................... 10 4.10 tipu.servlet.laanit.................... 10 4.11 tipu.servlet.lylalue................... 10 4.12 tipu.servlet.euring.................... 10 4.13 tipu.servlet.renkesupd.................. 11 4.14 tipu.servlet.lajiupd................... 11

2 4.15 tipu.servlet.sanasto................... 11 4.16 tipu.servlet.lintuasemat................ 11 4.17 tipu.servlet.rvhajoitus................. 11 5 Toteuttamatta jääneet piirteet ja parannusehdotukset 12

1 1 Johdanto 1.1 Dokumentin tarkoitus Ohjelmistotuotantoprojekti Haukka jatkoi Tipu4- ja Tintti-projektien työtä graafisen käyttöliittymän, WWW-Tipun, toteuttamiseksi lintujenrengastusjärjestelmään. Järjestelmä on käytössä Helsingin yliopiston Luonnontieteellisen keskusmuseon Rengastustoimistossa. Haukka-projektissa seurattiin Tipu4:n käyttöliittymäsuunnitelmaa ja toteutusmallia ja jatkettiin WWW-Tipu:n kehitystä Tintti-projektin mallin mukaisesti. Tässä dokumentissa kuvataan Haukka-projektin tekemät lisäykset ja muutokset lintujenrengastusjärjestelmän WWW-käyttöliittymään. Muiden osien dokumentaatio on kuvattu Tipu4- [1] ja Tintti-projektin [2] dokumenteissa. 1.2 Tekninen sanasto ja käytetyt lyhenteet Check - Fortran kielinen ohjelma, joka huolehtii rengastuksiin ja tapaamisiin liittyvien tietojen tarkastuksista. Connection pool - ohjelmointiratkaisu, jolla voidaan rajata yhteydet johonkin tiettyyn resurssiin. Näitä yhteyksiä luodaan ja jaetaan asiakkaille dynaamisesti. JDBC-ajuri Java DataBase Connectivity - ajuri, mahdollistaa tietokantakutsut palvelinsovelmista. Mallipohja - käyttöliittymänäytön runko (Template), johon voidaan lisätä ohjelmallisesti vaihtuvia arvoja. Näyttö - Käyttöliittymän näyttö viittaa siihen mallipohjaan ja servletiin, joka on ko. hetkellä selaimessa.

2 Servlet - Javalla kirjoitettu ohjelmamoduuli, joka suoritetaan palvelimella, palvelinsovelma. SQL Structured Query Language - standardi kyselykieli, jolla määrittetään erilaisia tietokantaoperaatioita. Tipukanta - eläinmuseossa käytettävä relaatiotietokanta rengastustietojen säilyttämiseen. WWW-Tipu - Tässä dokumentissa kuvattu graafinen käyttöliittymä lintujen rengastustietokannalle. 2 Vaatimusmäärittely, suunnittelu ja niihin tehdyt muutokset Projektin vaatimukset ovat määritelty dokumentissa Graafinen käyttöliittymä lintujen rengastusjärjestelmään Vaatimusdokumentti (versio 1.2) [5]. Suunnittelu on kuvattu dokumentissa Graafinen käyttöliittymä lintujen rengastusjärjestelmään Suunnitteludokumentti (versio 1.4) [6]. Suunnittelu on tehty Vaatimusdokumentin määrittelyjen mukaan. Käytettyjen renkaiden selaus: näyttöön on lisätty palauta-toiminto. Rengasvälin hajoitus: näyttöön on lisätty palauta-toiminto. LYL-Alueiden ylläpito: kenttä LYL-Alue toteutettiin numeerisena kenttänä, ei alasvetovalikkona. Lajien ylläpito: näytöstä jätetty Peruuta-painike pois tarpeettomana. Lintuasemien ylläpito: alasvetovalikot Asema ja Kunta on vaihdettu normaaleiksi tekstikentiksi, joissa on popup-valikko.

3 3 Toteutusratkaisut 3.1 Toteutuksen yleiskuva Kuhunkin käyttöliittymän näyttöön liittyy yksi mallipohja, Java-Servlet sekä JavaScriptkoodi. Servlet-ohjelma vastaa toiminnallisuudesta ja palauttaa tietoa käyttäjälle. Tähän servlet käyttää apunaan mallipohjaa lomakkeen muodostamiseen johon servletin tuottama tieto ripustetaan. Lomakkeen ulkoasun määrittelyyn käytetään css-tyylimäärittelyjä, jotka liitetään lomakkeeseen käyttäjän selaimessa. Ennen lomakkeelle syötettyjen tietojen lähettämistä takaisin servletille tehdään tarkistus JavaScript-funktioilla. Ohjelmaan kuuluu myös yleiskäyttöisiä moduuleja, joilla hoidetaan mm. yhteydet tietokantaan [1]. Servletit kirjoitettiin Java 1.2 -standardin mukaisesti. Lähdekoodi kommentoitiin siten, että siitä voidaan generoida Javadoc [3] -dokumentaatio. Selaimessa tehtävät tarkistukset ja alasvetovalikko on toteutettu JavaScriptillä. Näytöt laadittiin ilmaisen (GPL) FreeMarker-kirjaston avulla [4]. Alasvetovalikko on toteutettu osoitteesta http://www.brainjar.com saatavissa olevalla Navigation Bar -sovelluksella, jonka lähdekoodi ja dokumentaatio ovat tiedostossa navbar.zip. Oracle 8i:n JDBC-ajurista on käytössä versio 8.1.7 for Java 1.2.x. 3.2 Tiedostojen sijainti Www-Tipu sovellus käynnistyy URL:ista http://www.cs.helsinki.fi/group/haukka/www-tipu): Tiedostot Alkokrunni palvelimella:

4 /home/local/haukka/jserv/servlets - Haukka-projektin lähdekoodi nyt toteutetuista näytöistä. /home/local/haukka/jserv/servlets/tipu/servlet - käännetyt (.class) tiedostot. /home/local/haukka/template - Mallipohjatiedostot /home/local/haukka/etc - Konfigurointitiedostot /home/local/haukka/src/ - Aikaisempien projektien lähdekoodi. Tiedostot Melkki palvelimella (http://www.cs.helsinki.fi/group/haukka/www-tipu): /home/group/haukka/public_html/www-tipu - WWW-Tipun Html ja JavaScript tiedostot 3.3 Näyttöjen tekninen toteutus Yliluokka tipu.servlet.tipuservlet on abstrakti luokka, jossa on toteutettu kaikkien servlettien yleinen toiminnallisuus eli haku, lisäys, poisto ja päivitys -operaatiot. TipuServlet Luokassa on kuvattu metodit, jotka käynnistetään aina ennen tai jälkeen, kun käyttäjä tekee jonkin valinnan lomakkeelta. Esim. metodi dosearchpre- Hook käynnistetään käyttäjän painettua Hae-painiketta, tämän jälkeen suoritetaan tietokantaoperaatio (tässä tapauksessa haku eli SELECT operaatio), joka on toteutettu valmiiksi TipuServlet yliluokassa. Haun jälkeen suoritetaan dosearchpost- Hook. Muut toiminnot on toteutettu vastaavilla metodeilla.

5 Jokaisella do<toiminto><pre/post>hook metodi välittää parametrina Map values tyyppisen hajautustaulun. Tämä on Freemarker [4] tietorakenne, joka sisältää lomakkeen kentissä olevat muuttujien arvot, sekä TipuServlet yliluokan ohjaamiseen tarvittavat muuttujat. Yliluokka käyttää rakennetta välittämään tietoa käyttäjältä (mallipohjalta) itselleen ja yliluokalta käyttäjälle (takaisin mallipohjalle), muokkaamalla rakenteen tietoja tarkoituksenmukaisella tavalla. Näytön toteuttaja voi vaikuttaa näiden (em.) jäljempänä kuvattavien metodien sisällä siihen mitä ruudulle tulostuu ja mitä tietoja tarkistetaan. Pyytämällä mallipohjalta tarvittavaa kenttää, esim. komennolla String arvo=values.get("koodi") tämä komento palauttaisi nyt tietorakenteessa olevan (myös näytöllä) koodi kentän arvon muuttujaan arvo. Tätä arvoa voitaisiin nyt muuttaa ja sitten asettaa se takaisin tietorakenteeseen (menee siis myös mallipohjalle) lauseella values.put("koodi", arvo). Käyttäjä voi do<toiminto>prehook metodissa ohjata TipuServlet -luokan toimintaa komennoilla : values.put("skip",) kertoo yliluokalle, että tietokantaoperaatio (insert, delete, update, search) ohitetaan, eli sitä ei toteuteta, mutta jatketaan muuten suoritusta normaalisti. Voidaan käyttää kun on esim. havaittu virhe käyttäjän syöttämissä tiedoissa tai halutaan itse tehdä tietokantaoperaatiot. values.remove("ppvm") poistaa kentän PPVM values tietorakenteesta, esim. ennen hakuoperaation toteutusta, jotta yliluokka ei käyttäisi PPVM kenttää toteuttaessaan tietokantahakua käyttäjän antamin ehdoin. puterror(values, "Virheilmoitus!") antaa yliluokalle virheilmoituksen, joka näytetään näytön yläosassa. values.put("notices","huomautus!") on ylimääräinen huomautus käyttäjälle ja näkyy näytön yläosassa.

6 Kun WWW-Tipuun toteutetaan uusia näyttöjä, tulee TipuServlet-luokasta luoda aliluokka, ja ylikirjoittaa tarvittavat metodit. Jokaiseen aliluokkaan eli servletiin tulee kirjoittaa vähintään seuraavat metodit: void initialize() Metodi joka käynnistetään, kun tämä aliluokka ladataan ensimmäistä kertaa muistiin. Tässä voidaan hakea luokan tarvitsemaa staattista tietoa tietokannasta, esim. alasvetovalikoihin sijoitettavaa tietoa. String getsearchkey() Metodi jonka ainoa tehtävä on palauttaa se tietokannan kenttä, jonka mukaan tulosrelaatiot halutaan järjestää näytöllä. protected SimpleHash getindexrow(map values) Metodi palauttaa hakutuloslistan rivin SimpleHash-kenttinä. Tähän metodiin kuvataan ne kentät, jotka käyttäjä haluaa näkyväksi hakutuloslistassa. Tarkempi kuvaus metodin käytöstä löytyy ohjelmakoodista. Valinnaiset metodit, joita ei ole pakko toteuttaa: void doposthook() Suoritetaan aina kun käyttäjä on painanut mitä tahansa painiketta juuri ennen mallipohjan tulostamista näytölle. Tässä metodissa voidaan tehdä tarkistuksia jotka tehdään toiminnoista riippumatta. void dosearchprehook(map values), void dosearchposthook(map values), void doinsertprehook(map values), doinsertpost- Hook(Map values), void dodeleteprehook(map values), void dodeleteposthook(map values), doupdateprehook(map values), void doupdateposthook(map values) Metodeja, jotka suoritetaan aina ko. operaatiota ennen PreHook tai jälkeen PostHook.

7 Haukka -projektissa tehtäväksi jäi mallipohjien laatiminen ja näiden ennen ja jälkeen tietokantaoperaatioiden tapahtuvien metodien kirjoitus, eli tietokantaan vietävän tiedon tarkistus ja muokkaamminen. Luokka on kuvattu tarkemmin Tipu4-projektin toteutusdokumentissa [1, Kappale 3.9]. 4 Järjestelmään toteutetut uudet luokat Kaikki projektin toteuttamat luokat ovat laajennuksia tipu.servlet.tipuservlet yläluokkaan. Tässä kappaleessa kuvataan tarkemmin vain ne ratkaisut, jotka poikkeavat yliluokan tarjoamista palveluista. 4.1 tipu.servlet.renpal Luokka RenPal huolehtii rengastajille jaettujen renkaiden selailusta ja käyttämättä jättämien sarjojen palautuksesta. Kohdetauluna on JAKELU. Palautuksen yhteydessä tarkastetaan ettei yhtäkään palautetuista renkaista ole käytetty, ja että kyseiset renkaat on todella jaettu palauttajalleen. Luokka on toteutettu sikäli muista näytöistä poikkeavasti, että siinä palautus-painikkeen painaminen suorittaa aina doupdateprehook metodin, jossa yliluokan suorittama tietokantaoperaatio eli tässä tapauksessa update, kuitenkin ohitetaan suorittamalla values.put"skip",-lause 3.3,5. Tämä joudutaan tekemään siksi, että yliluokka ei tarjoa mahdollisuutta tehdä samaan aikaan enempää kuin yhden tietokanta-operaation. Tässä luokassa tarvitaan kuitenkin yksi update- ja yksi insert-operaatio siinä tapauksessa, että rengastaja palauttaa renkaita hänelle jaetun sarjan keskeltä. Tuolloin joudutaan päivittämään

8 jo kannassa oleva sarja niin, että siitä tulee uusi alkupuolen sarja (vanhat renkaat palautettavan sarja 1. rengas - 1) ja lisäämään uusi sarja kopiona vanhasta (palautettavan sarjan viimeinen rengas + 1 vanhan sarjan loppu). Palautuksen onnistumisesta ilmoitetaan values.put("notices", «ilmoitus>")3.3 komennon avulla yliluokalle. 4.2 tipu.servlet.retyyllapito Luokka ReTyYllapito huolehtii rengassarjojen hausta, lisäyksestä, poistosta ja ylläpidosta. Kohdetauluna on RENGAS. Tarkistetaan etteivät lisättävät tai päivitettävät rengassarjat sarjat mene vanhojen kanssa päällekkäin RENGAS-taulussa. Poiston yhteydessä tarkistetaan, ettei jotakin välin rengasta ole jo jaettu jollekin rengastajalle JAKELU-taulusta tai, ettei rengasta ole jo rengastettu (RENGASTETTUtaulu). 4.3 tipu.servlet.lasarjat Luokka LaSarjat huolehtii lajeille sallittujen sarjojen hausta, lisäyksestä ja päivityksestä. Kohdetaulu on RSARJA. Luokan initialize()3.3 -metodissa haetaan kaikki sarjat tietokantakyselyllä: select distinct substr(rgtunnus1, 1, 2) from RENGAS order by substr(rgtunnus1, 1, 2) ja asetetaan ne values tietokantarakenteeseen, jotta ne voidaan näyttää näytöllä alasvetovalikossa.

9 Alasvetovalikkoratkaisuun päädyttiin siksi, että ei tarvistsisi erikseen tarkistaa sarjan kelvollisuutta, lisäys operaation yhteydessä. Lisäyksen yhteydessä tarkistetaan, että käyttäjän syöttämä laji löytyy LAJI-tietokantataulusta. 4.4 tipu.servlet.renkir Luokka RenKir huolehtii rengastajille jaettujen renkaiden selauksesta ja hävinneiden tuohoutuneiden renkaiden merkitsemisestä. Kohdetaulu on RENGASTUS. Luokassa tarkistetaan että hävinneet/tuhotut on jaettu ilmoittajalle (JAKELU-taulusta) ja ettei kyseisiä renkaita jo ole käytetty (RENGASTETTU-taulusta). Tätä näyttöä ei ole saatu implementoitua toimivaksi. Ongelmia on ollut siinä, että ei ole osattu ratkaista yliluokan useampien tietokantaoperaatioiden suorituksen rajoitusta, joka on kuvattu luokan RenPal toteutuskuvauksessa??renpal). 4.5 tipu.servlet.krselaus Luokka Krselaus huolehtii kaytettyjen renkaiden selauksesta. Kohdetaulu on REN- GASTETTU. 4.6 tipu.servlet.varejakelu Luokka VaReJakelu huolehtii värirenkaiden jakelusta. Käyttäjän syöttäessä uuden jakelun tarkistetaan, että lajin lyhenne läytyy LAJItaulusta, ja että rengastaja löytyy RENGASTAJA-taulusta sekä, että jakopäivämäärä on menneisyydessä. Kohdetaulu on VRENGAS.

10 4.7 tipu.servlet.rehirrus Luokka ReHirrus huolehtii rengastusten hirrustietojen ylläpidosta. Kohdetaulu on RHIRRUS. 4.8 tipu.servlet.rengastajat Luokka rengastajat huolehtii rengastajatietojen ylläpidosta. Kohdetaulu on REN- GASTAJA. 4.9 tipu.servlet.maat Luokka Maat huolehtii maiden hausta, lisäyksestä, päivityksestä ja poistosta. Kohdetaulu on OSOITEMAA. 4.10 tipu.servlet.laanit Luokka Laanit huolehtii läänitietojen ylläpidosta. Kohdetaulu on LAANI, johon myös kaikki tietokantaoperaatiot kohdistuvat. 4.11 tipu.servlet.lylalue Luokka Lylalue huolehtii Lyl-alueiden ylläpidosta. Kohdetaulu on LYL_ALUE. 4.12 tipu.servlet.euring Luokka Euring huolehtii maiden hausta, lisäyksestä, päivityksestä ja poistosta. Kohdetaulu on ULKOMAINEN_PAIKKA.

11 4.13 tipu.servlet.renkesupd Luokka RenKesUpd huolehtii rengaskeskusten hausta, lisäyksestä, päivityksestä ja poistosta. Kohdetaulu on RENGASTUSKESKUS. Luokasta puuttuu maatietojen tarkistus OSOITEMAA-taulusta. 4.14 tipu.servlet.lajiupd Luokka LajiUpd huolehtii lajien hausta, lisäyksestä, päivityksestä ja poistosta. Kohdetaulu on LAJI. 4.15 tipu.servlet.sanasto Luokka Sanasto huolehtii SANASTO tietokantataulun tietueiden ylläpidosta. 4.16 tipu.servlet.lintuasemat Luokka Lintuasemat huolehtii LINTUASEMA tietokantataulun tietueiden ylläpidosta. 4.17 tipu.servlet.rvhajoitus Luokka on toteutettu sikäli muista näytöistä poikkeavasti, että siinä Pilko-painikkeen painaminen suorittaa aina doupdateprehook metodin, jossa yliluokan suorittama tietokantaoperaatio eli tässä tapauksessa update, kuitenkin ohitetaan suorittamalla values.put"skip",-lause 3.3,5. Tämä joudutaan tekemään siksi, että yliluokka ei tarjoa mahdollisuutta tehdä samaan aikaan enemmän kuin yhden tietokanta-operaation. Tässä luokassa tarvitaan

12 kuitenkin useampi insert-operaatio jokaista hajoitettavan RENGASTUS-taulun hajoitettavaa rengasta kohti. Hajoituksen onnistumisesta ilmoitetaan values.put("notices", «ilmoitus>")3.3 komennon avulla yliluokalle. 5 Toteuttamatta jääneet piirteet ja parannusehdotukset Projektin aikana tuli esille useita parannusehdotuksia ja joitakin edellisten projektien huomaamattajääneitä virheitä, joita ei ajanpuutteen vuoksi kyetty korjaamaan. Valikon todettiin toimivan väärin Internet Explorer 6.0:n eri versioilla, joten se ehdotettiin vaihdettavaksi uuteen (HV Menu Ger Versluis 2000) ja määriteltiin sen parametrit muistuttamaan vanhaa valikkoa mahdollisimman paljon. Menun rengastukset ja apurekisterit valikot tulostuvat liian ylös, eikä niitä saatu ajoissa kohdallen. Valikko koostuu tiedostoista: /www-tipu/index.uus.html - WWW-sivu josta menua kutsutaan JavaScript-komennolla go() /www-tipu/js/menu.js.uus - Itse menun rajapintaluokka /www-tipu/js/menuitems.js.uus - Menutiedosto, jossa kuvataan menu ja sen parametrit. Tähän tiedostoon tulee tehdä menua koskevat ulkoasumuutokset. Popup-valikon katsottiin olevan liian hidas latautumaan. Lisäksi se, että popup-servletti hakee kaikki koskaan tarvitsemansa tiedot kerralla muistiin, todettiin olevan huono ratkaisu silloin, kun on juuri lisätty uusi

13 tietue ja pitäisi saada se popup-listaukseen. Tähän ehdotettiin ratkaisuksi uudelleenohjelmointia, jossa tietokannan tiedot haettaisiin aina kyselyn yhteydessä vain siitä taulusta johon kysely kohdistuu. Popup-valikko on kokonaisuudessaan tiedostossa Popup.java. Popup-luokka ei ole TipuServletin alaluokka vaan itsenäinen servlet. Kun hakutulosten listauksessa saadaan yli 100 tietuetta, pitäisi lause "löytyi 100 sanaa"korvata lauseella "löytyi xx sanaa, joista 100 näytetään". Yliluokan TipuServlet ohjelmakoodia tulee muuttaa siten, että se laskee koko tietokantahaun tulosten määrän ja ilmoittaa sen mallipohjalla toteutuksessa kuvatulla tavalla. Siniset viivat (HTML:n <HR> elementit) pitää vaihtaa siniseen viiva-imageen (sini.gif). Erityisesti Hakutulosten selauksessa <HR> elementtejä on vielä jäljellä. Asiakkaalle järjestetyssä demo-tilaisuudessa asiakas toivoi, että värirenkaiden jakeluun pitää lisätä 80 merkkiä pitkä kommenttikenttä. Kommenttikenttä tulee lisätä VRENGAS-tietokantatauluun. Asiakkaalle järjestetyssä demo-tilaisuudessa asiakas toivoi, että Värirengastusten kommenttikenttää pitää pidentää ja lisätä uusina kenttinä jalkarenkaan rengastajan numero ja nimi, sekä värirenkaan rengastajan numero ja nimi. Renkaiden merkintä hävinneeksi-näytön Merkintä hävinneeksi-toimintoa ei saatu ajoissa valmiiksi, selvitetty tarkemmin edellä kappaleessa 4.4). Testausdokumentista löytyvät toteuttamatta jääneet kohdat[7]. Päivämääräkentät on poistettava hakutuloksista (values.remove("pvmkentännimi") toiminnolla??) koska niiden mukaan haku, edellyttäisi päivämääräkenttien valmistelua

14 tietokannanhallintajärjestelmän ymmärtämään muotoon, ja tähän ei projektin käytettävissä oleva aika riittänyt. Rengastusten syöttö -lomakkeessa alempi Pvm kenttä on väärän muotoinen. Taulujen INPUT-kentät näkyvät IE 6.0:ssa keskitettynä. Testausdokumentin Rengastajien ylläpito-lomakkeen (rengastajat.java) ja Värirenkaiden jakelu-lomakkeen (VaReJakelu.java) ei huomautukset ja Käytettyjen renkaiden selaus-lomakkeen (Krselaus.java) huomautus Hae toiminnon kohdalla, johtuvat siitä, että servleteissä ei ole poistettu PVM kenttää hakutuloksista edellä (kappaleessa 3) kuvatulla tavalla. Testausdokumentin Rengastuskeskusten ylläpito-lomakkeen huomautus siitä, että maatietoja ei tarkisteta, johtuu siitä, että tarkistus puuttuu kokonaan Rengastuskeskusten ylläpidosta (RenKesUpd.java (kappale (??)). Testausdokumentin Sanasto-lomakkeen huomautus Hausta kun kaikki kentät on täytetty, johtuu luultavasti siitä, että SANASTO-taulun sateksti kenttä on alunperin tallennettu pieniä kirjaimia käyttäen ja nyt TipuServlet-yliluokka muuttaa haussa kaikki merkit isoiksi. Tietokantataulut Ohjelmakoodit (A) liitteenä omissa tiedostoissaan: alkokrunni@/home/local/haukka/jserv/servlet/*.java

15 Viitteet [1] Tipu4-projekti Toteutusdokumentti http://www.cs.helsinki.fi/group/tipu4/implementationspec/ [2] Tintti-projekti Toteutusdokumentti http://www.cs.helsinki.fi/group/tintti/documents/toteutus.pdf [3] Javadoc 1.2 http://java.sun.com/products/jdk/1.2/docs/tooldocs/javadoc/ [4] Freemarker http://freemarker.sourceforge.net/ [5] Haukka-projekti Vaatimusdokumentti http://www.cs.helsinki.fi/group/haukka/dokumentit/vaatimus.pdf [6] Haukka-projekti Suunnitteludokumentti http://www.cs.helsinki.fi/group/haukka/dokumentit/2003-suun.pdf [7] Haukka-projekti Testausdokumentti http://www.cs.helsinki.fi/group/haukka/dokumentit/0705-testaus.pdf