Kuntokirjuri. Ohjelmistokuvaus. Miika Alonen. Jarkko Laine. Jesse Honkanen. Veli Matti Huovinen. Jani Jäntti. Versio 1.0 9.5.2008.



Samankaltaiset tiedostot
Kuntokirjuri. Testausraportti. Miika Alonen Jarkko Laine Jesse Honkanen Veli Matti Huovinen Jani Jäntti. Versio

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

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

Visual Case 2. Miika Kasnio (C9767)

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kuntokirjuri. Toiminnallinen ja Tekninen määrittely. Miika Alonen Jarkko Laine Jesse Honkanen Veli Matti Huovinen Jani Jäntti. Versio

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

Valppaan asennus- ja käyttöohje

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

LINUX-HARJOITUS, MYSQL

Kuntokirjuri. Käyttöohje. Miika Alonen Jarkko Laine Jesse Honkanen Veli Matti Huovinen Jani Jäntti. Versio

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

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Tietokannat II -kurssin harjoitustyö

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Lohtu-projekti. Ylläpitäjän dokumentti. Versiohistoria: Ensimmäinen versio Andreas Asuja

Action Request System

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

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

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Lohtu-projekti. Testaussuunnitelma

Kieliversiointityökalu Java-ohjelmistoon. Ohje

TIETOKANTOJEN PERUSTEET MARKKU SUNI

SQL - STRUCTURED QUERY LANGUAGE

24h Admin V / 24h_Admin_v100.pdf 1/9

Treenitietokannan suunnitteludokumentti

Tietokantojen hallinta

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

CSE-A1200 Tietokannat

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

BaseMidlet. KÄYTTÖOHJE v. 1.00

Maiju Mykkänen Susanna Sällinen

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Ensimmäisessä vaiheessa ladataan KGU tietokanta Hallitse tietokantoja toiminnon avulla.

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Ylläpitodokumentti Mooan

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

KYMP Webmail -palvelu

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

T Testiraportti - järjestelmätestaus

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

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

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

UCOT-Sovellusprojekti. Asennusohje

HELIA 1 (14) Outi Virkki Tiedonhallinta

Hakemistojen sisällöt säilötään linkitetyille listalle.

Hirviö Järjestelmätestauksen testitapaukset ja suoritusloki I1

T Testiraportti TR-3. ETL-työkalu

Tietokannat II -kurssin harjoitustyö

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

LoCCaM. LoCCaM Cam laitteiston ohjaaminen. Dimag Ky dimag.fi

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

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

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Korkeakoulujen prosessipalvelin: mallintajan palvelinohje Versio 0.2

Lohdutus - tietokantadokumentti

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

3. Taulujen määrittely ja muuttaminen

Aditro Tikon ostolaskujen käsittely versio 6.2.0

Ylläpitodokumentti Labra

Tietokantasovelluksen määrittelydokumentti

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Office 365 palvelujen käyttöohje Sisällys

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

T Testiraportti - integraatiotestaus

zotero

Määrittelydokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi

8. Näppäimistöltä lukeminen 8.1

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti

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

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

SmartShip Connect Lite lisäosa WooCommerce alustalle (c) Webbisivut.org

Ohje kehitysympäristöstä. Dokumentti: Ohje kehitysympäristöstä.doc Päiväys: Projekti : AgileElephant

Solteq Tekso v Versiopäivitysohje.

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

8. Näppäimistöltä lukeminen 8.1

5. HelloWorld-ohjelma 5.1

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

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

2. Käsiteanalyysi ja relaatiomalli

SQL Buddy JAMK Labranet Wiki

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

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

Lyseopaneeli 2.0. Käyttäjän opas

Kuopio Testausraportti Asiakkaat-osakokonaisuus

Tietokantakurssit / TKTL

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Transkriptio:

Kuntokirjuri Ohjelmistokuvaus Miika Alonen Jarkko Laine Jesse Honkanen Veli Matti Huovinen Jani Jäntti Versio 1.0 9.5.2008 Jakelu: Asiakas Jukka Rantala Ohjaaja Erkki Pesonen Opponoiva ryhmä 1 Kuopion yliopisto tietojenkäsittelytieteen laitos

Dokumentin versiohistoria: Versio Pvm Tekijä Muutos 0.1 19.4.08 MA Yleistä ohjelmistokuvauksesta 0.2 20.4.08 JH Lisää yleistä tietoa 0.3 21.4.08 JH Hieman muokkausta 0.4 22.4.08 MA Tarkempaa tietoa ohjelman rakenteesta 0.5 23.4.08 MA Lisää tarkempaa tietoa 1.0 9.5.08 MA Kirjoitusasun korjauksia Tekijöiden lyhenteet: MA JJ JH VH JL Miika Alonen Jani Jäntti Jesse Honkanen Veli Matti Huovinen Jarkko Laine

SISÄLLYSLUETTELO SISÄLLYSLUETTELO... 3 1 JOHDANTO... 5 1.1 Tarkoitus ja kattavuus... 5 1.2 Dokumentin rakenne... 5 2 TOTEUTUSYMPÄRISTÖ... 6 2.1 Käytetyt kehitysvälineet... 6 2.2 Käytetyt komponenttikirjastot... 6 2.3 Yhteensopivuus... 7 3 TOTEUTUKSEN YLEISKUVAUS... 7 4 ARKKITEHTUURI... 8 4.1 Luokkakuvaukset... 8 Merkittävät luokat... 9 Lomakeluokat... 9 Muut luokat... 10 4.2 Käyttöliittymä... 11 4.3 Raportit... 12 4.4 Tietokanta... 12 4.4.1 Yleistä...12 4.4.2 Tietokannan käsittelyyn käytetyt komennot...13 Uuden tietokannan luonti... 13 Profiilin asetusten haku... 13 Profiilin asetusten tallennus... 13 Profiilin salasanan vaihto... 13 Profiilin varmuuskopionti... 13 Varmuuskopion tuonti... 13 4.4.3 Tietokannan taulujen luontikomennot...13 4.4.4 Tyyppien ja attribuuttien käsittely...15

Tyyppien listaus...15 Attribuuttien listaus...15 Tyypin lisäys...16 Tyypin poisto...16 Tyypin infot...16 Attribuutin lisäys...16 Attribuutin poisto...16 Attribuutin infot...16 4.4.5 Merkintöjen käsittely...16 Merkinnän lisäys silmukalla Markings oliosta...16 Merkinnän poisto...16 Merkintöjen listaus...17 5 YLLÄPITO OHJEITA... 17 5.1 Projektin dokumentaatio... 17 5.2 Kehitysympäristö... 17 5.3 Projektikansion sisältö.... 18 5.4 Testaus... 18 LÄHTEET... 19 LIITTEET: Liite 1 Tiivistetty luokka kaavio (UML luokkakaavio, vain tärkeimmät attribuutit ja metodit) Liite 2 ER Kaavio

1 JOHDANTO 1.1 Tarkoitus ja kattavuus Tässä dokumentissa on kuvattu Kuntokirjuri ohjelman toteutus. Dokumentti on tarkoitettu mahdolliselle jatkokehittäjälle tai ylläpitäjälle. Tämän dokumentin lisäksi projektin koodissa on Javadoc kommentointi [10], joten tarkemmat metodikuvaukset löytyvät koodin mukana tulevista Javadoc sivuista. Myös muista projektin aikana syntyneistä dokumenteista löytyy hyödyllistä tietoa järjestelmän toiminnasta. Muut dokumentit ovat saatavissa samassa paikassa kuin tämä dokumentti, eli projektin verkkosivuilta [1]. Näistä dokumenteista löytyy myös järjestelmän yleiskuvaus ja mahdollisia jatkokehitysajatuksia. Tässä dokumentissa on lyhyitä arvioita tehdyistä ratkaisuista, mutta ei kuvauksia vaihtoehtoisista ja hylätyistä ratkaisuvaihtoehdoista. 1.2 Dokumentin rakenne Luvussa 2 on listattu käytetyt välineet ja komponentit Luvussa 3 on annettu ohjelmarakenteen yleiskuvaus Luvussa 4 on kuvattu ohjelmiston arkkitehtuuri Luvussa 5 on ohjeita ylläpitoon ja kehittämiseen 5 / 19

2 TOTEUTUSYMPÄRISTÖ Tässä luvussa on kuvattu ohjelman kehittämiseen käytetyt välineet ja tarvittava ympäristö. 2.1 Käytetyt kehitysvälineet Netbeans 6.0.1 [6] Monipuolinen avoimen lähdekoodin sovelluskehitysympäristö JDK 1.6 [8] Sunin virallinen java kehityspaketti ireport 0.9.1 nb plugin [4] Avoimen lähdekoodin raporttipohjien tekotyökalu, josta saatavilla sekä Netbeans ympäristöön integroituva paketti että erillinen ohjelma 2.2 Käytetyt komponenttikirjastot Ohjelma käyttää useita valmiita komponenttikirjastoja eri avoimen lähdekoodin projekteista, kuten SwingX, JasperReports ja JDateChooser. Myös näillä projekteilla on riippuvuuksia lukuisiin muihin avoimen lähdekoodin projekteihin. Alla on listattu toteutuksessa käytetyt komponenttikirjastot. Jokainen paketti on lisensoitu avoimen lähdekoodin lisenssillä (Lisenssi suluissa). Swing Application Framework appframework 1.0.3 (GPL) Swing Application Framework swing worker 1.1 (GPL) JasperReports 2.0.3 [3] Raportointityökalut (GPL) DateChooser 1.1 Kalenterityökalu (Sun Public Licence) SwingX 27 1 2008 Komponentteja käyttöliittymän tekoon (LGPL) Substance Lite 4.3 Ulkoasukomponentit (BSD) Derby 10.3.2.1 [7] Käytetty JDBC tietokantamoottori (Apache) 6 / 19

2.3 Yhteensopivuus Käytettyjen välineiden yhteensopivuutta aiempien versioiden kanssa ei ole kokeiltu. Toteutuksessa käytettiin tuoreimpia osia tarkoituksella, sillä taaksepäin yhteensopivuutta ei pidetty erityisen tärkeänä. Kehitysvälineet ovat kaikki java pohjaisia ja saatavilla myös muille alustoille kuin Windowsille. 3 TOTEUTUKSEN YLEISKUVAUS Kuntokirjuri ohjelma on "Swing Application Framework" arkkitehtuurimallin mukainen työpöytäsovellus. Ohjelman perusidea on toimia kalenteripohjaisena terveystietojen seurantajärjestelmänä, johon voidaan helposti lisätä ja poistaa merkintöjä, merkintätyyppejä ja niihin liittyviä ominaisuuksia. Talletettavat tiedot säilytetään ohjelmiston sulautettuun Derby tietokantaan. Merkintöjen tallentamiseen ja hakemiseen tietokannasta käytetään apuna Markings luokkaa, josta luodaan merkintäolioita. Näihin olioihin yksilöidään tietokannasta kaikki yhteen merkintään liittyvät arvot. Markingsluokka toimii siis rajapintana ja tietojen yhdistäjänä relaatiotietokannalle, jossa tiedot on hajautettu tarvittavan joustavuuden, kuten merkintätyyppien ja ominaisuuksien "lisäys ja poisto" toimintojen saavuttamiseksi. Database luokassa määritellään tietokannan rakenne, salausmenetelmä ja tarvittavat metodit tietojen lisäämiseen ja poistoon. Valmiit Markings oliot tuodaan tietokannasta ohjelmassa käytettyjen komponenttien "malli" luokkiin jonka avulla voidaan helposti päivittää komponenttien tietoja. Tällaisia malliluokkia on esimerkiksi MarkingTableModel ja MarkingListModel. Käyttöliittymän tapahtumakuuntelijoilla päivitetään "malli" luokkien tietoja, tuomalla niihin Markings oliotaulukoita, jolloin myös niihin liittyvät käyttöliittymän komponentit päivittyvät automaattisesti. Ohjelmassa käytetyt raportit luodaan suoraan tietokannasta käyttäen JasperReportkomponenttikirjastoa. Ohjelmassa käytetyt valmiit raporttipohjat ohjelmaan on luotu Netbeans:in ireport lisäkomponentilla. 7 / 19

4 ARKKITEHTUURI Tässä luvussa on kuvattu ohjelmiston arkkitehtuuri, esittelemällä ohjelmistossa käytetyt luokat, tietokanta käyttöliittymä ja raporttitoiminto. Suurella abstraktiotasolla ohjelmiston arkkitehtuuri koostuu alla olevista komponenteista. Kuva 1: Komponenttikaavio UML notaatio 4.1 Luokkakuvaukset Tässä osassa on kuvattu ohjelman luokkien käyttötarkoitus. Tarkemmat kuvaukset luokista löytyy lähdekoodien mukana tulevista Javadoc dokumentaatiosta. Liitteissä on tiivistetty luokkakaavio joka kuvaa ohjelmassa käytetyt luokat, ja niiden tärkeimmät attribuutit ja operaatiot. Liite 1. Kaikki projektissa kirjoitetut luokat on määritelty kuulumaan osaksi kuntokirjurievolution pakettia. Itse luotujen luokkien lisäksi ohjelmassa käytetään lukuisia kirjastoista löytyviä luokkia. Kannattaa ensin tarkistaa JDK:n api [11]. 8 / 19

Merkittävät luokat KKApplication Tämä luokka on Swing Application Framework mukainen käyttöliittymäluokan yliluokka, joka näyttää kirjautumisikkunan, ja käynnistää ohjelman kun sisäänkirjaus onnistuu. KKView Tämä luokka on Swing Desktop Application mukainen käyttöliittymäluokka, johon liittyy olennaisesti KKView.form tiedosto, jonka Netbeans 6.0 generoi automaattisesti. Ilman form tiedostoa, ohjelmaa ei voida kehittää Netbeans kehitysympäristössä. Käyttöliittymäluokka sisältää pääosan ohjelmassa käytetyistä komponenteista, mutta on riippuvainen myös muista luokista. Database Tämä luokka on luo sulautetun tietokannan käyttäen Derby tietokantamoottoria. Tarkempi kuvaus tietokannasta kohdassa 4.4. Markings Tästä luokasta luodaan olioita, jotka voi sisältää yhden merkinnän kaikki tiedot. Markingsolioita käytetään tiedon siirtämiseen tietokannan ja ohjelman välillä. Lomakeluokat kuntokirjurievolutionaboutbox Tämä luokka on käyttöliittymän AboutBox. Joka antaa käyttäjälle yleistä tietoa ohjelman versiosta ja tekijöistä. LogginFrame Tämä luokka on ohjelman sisäänkirjautumisikkuna, jonka avulla käyttäjä voi syöttää ohjelmalle oman profiilinsa ja salasanan. Kirjautumisikkuna yrittää avata tietokannan käyttäjältä saamallaan tunnuksella ja salasanalla, ja taustalla kuunteleva käyttöliittymäluokan yliluokka avaa ohjelman kirjautumisen onnistuessa. 9 / 19

NewProfileDialog Tämä luokka on profiilinluonti ikkuna josta käyttäjä voi luoda itselleen uuden profiilin. Profiilia luotaessa kutsutaan tietokantaluokan metodia joka rakentaa uudelle käyttäjälle oman tietokannan. NewPasswordDialog Tämä luokka on salasananvaihtoikkuna jolla voidaan vaihtaa salasanan profiiliinsa. Ikkuna kutsuu tietokantaluokan metodia salasanan vaihtamiseen. NewReportDialog Tämä luokka on raportinluonti ikkuna, jolla luodaan uusi raportti. Raportti luodaan käyttäen JasperReport komponentteja ja raportti vaatii ireport ohjelmalla tehdyt.jasper raporttipohjat. Muut luokat BusyBox Tämä luokka on yksinkertainen, Odota hetki ikkuna, joka käynnistetään silloin, kun ohjelma suorittaa aikaavieviä toimenpiteitä. MarkingListModel Tämä luokka on käyttöliittymän JList komponentin käyttämä malliluokka, jonka avulla voidaan päivittää tiedot käyttöliittymään näkyville. Tätä mallia voidaan myös kutsua päivittämään MarkingTableModel malliluokka, jolloin haluttu merkintä näkyy JTablekomponentissa. MarkingTableModel Tämä luokka on käyttöliittymän JTable komponentin käyttämä malliluokka, jonka avulla voidaan näyttää yksi Marking olio halutussa taulussa. Päivittämällä malliluokan sisältämä Marking olio, päivittyy sen tiedot siihen liittyvään JTable komponenttiin automaattisesti. 10 / 19

MultiLineColumn Tämä luokka mahdollistaa JTable komponentin sarakkeen muokkaamisen automaattisesti siten, että jos yhteen kenttään kirjoitetun tekstin määrä ylittää kentän pituuden, muokataan rivin korkeutta, ja asetetaan teksti näkymään useammalle riville. DiaryListRenderer Tämä luokka mahdollistaa sen, että JList komponentin objekteja voidaan kuunnella ja tarvittaessa muokata komponentin ulkoasua sekä sen solujen sisältämää tekstiä. TextVerifier Tällä luokalla voidaan tarkistaa että käyttäjä ei syötä virheellisiä arvoja tekstikenttään. NoSqlVerifier Tällä luokalla voidaan estää että käyttäjä ei voi syöttää SQL komentoja tekstikenttään. NumberVerifier Tällä luokalla voidaan tarkistaa että käyttäjän antama numeraalinen syöte on annetulta väliltä x y. BodyMassIndex Tämä luokka sisältää metodit painoindeksin laskemiseen ja arvoihin liittyvään luokitukseen. 4.2 Käyttöliittymä Käyttöliittymä on tehty Swing Desktop Application ja Swing Application Framework mukaisesti, Netbeans 6.0 kehitysympäristössä. Käyttöliittymän toteutuksessa käytettiin pääosin Javan Swing ja SwingX komponentteja. Asettelut tehtiin Netbeansin suunnittelutyökaluilla. Käyttöliittymän toteutuksessa käytettiin monia ulkopuolisia komponentteja. Joidenkin käyttöliittymän osien kanssa jouduttiin kikkailemaan halutun toiminnan aikaansaamiseksi. Käyttöliittymän tapahtumankäsittelijät 11 / 19

käyttävät hyödykseen Database luokan tarjoamia palveluita markings luokan ja komponenttien malli luokkien kautta. 4.3 Raportit Raportit toteutettiin JasperSoftin[2] ylläpitämillä avoimen lähdekoodin työkaluilla JasperReports[3] ja ireport[4]. Raporttipohjat tehtiin ireportin Netbeans pluginilla. XML muotoiset raporttipohjat löytyvät.jrxml tiedostoista ja niistä käännetyt tiedostot.jasper tiedostoissa. Pohjia voi muokata haluamakseen. Yleisohjeet työkalujen käyttöön löytyy läheteissä olevista linkeistä [4] ja [5]. 4.4 Tietokanta Tässä osassa on tarkempi kuvaus tietokannasta ja sen käsittelyyn käytetyistä komennoista. 4.4.1 Yleistä Lyhyt kuvaus tietokannassa käytetyistä tekniikoista. Lisätietoja Derby tietokannan käytöstä löytyy esimerkiksi Apachen Derby sivuilta [7]. Tässä luvussa olevat komennot on kopioitu Database luokan metodeista. Tarkoitus on antaa yleiskuva käytetyistä komennoista. Tarkempia tietoja Database luokan metodeista löytyy Javadoceista ja koodia tarkastelemalla. Kaikki tietokantakomennot tehdään Statement olion kautta käyttäen executexxx([sql komento]) metodeja. Lauseissa olevat tunnukset ovat parametrien tunnuksia. Komentoihin liittyviä parametrejä on neljää tyyppiä: merkkijonoja, kokonaislukuja, Markings olioita ja Timestamp olioita. Hakasulut tarkoittavat, että koodissa on ehto, jolla suluissa oleva osa voi jäädä väliin. Tietokannan viite eheyksien tarkistuksiin ei käytetty omaa koodia, vaan määriteltiin vierasavaimia sisältävät taulut cascade on delete tyyppisiksi. Tietokannan ER kaavio liitteessä 1. 12 / 19

4.4.2 Tietokannan käsittelyyn käytetyt komennot Uuden tietokannan luonti Tietokannan luontivaiheessa määritellään käyttäjätunnus, salasana ja uuden profiilin perusasetukset. Lyhyesti tietokannan luonti tapahtuu olemassa olevaa Derby yhteyttä käyttäen komennolla, jossa määritellään uusi tietokanta salatuksi, ja käytetään salausavaimena annettua käyttäjätunnusta ja salasanaa. DriverManager.getConnection(jdbc:derby+usrname;create=true ;dataencryption=true ;bootpassword= + usrname + zxcfrh64jmd4& hnkfvrtygs +pass,usrprops) Profiilin asetusten haku values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('[asetuksen nimi]') Profiilin asetusten tallennus Metodi saa parametrikseen Properties tyyppisen olion, jossa olevat arvot se tallentaa tietokantaan. call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('entry.getKey()','entry.getValue()') Profiilin salasanan vaihto CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.user.usrname','newpw') Profiilin varmuuskopionti CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE(?) Varmuuskopion tuonti jdbc:derby:databasename;restorefrom=backuplocation 4.4.3 Tietokannan taulujen luontikomennot Types taulu: CREATE TABLE Types ( 13 / 19

TypeName VARCHAR(100) NOT NULL, TypeInfo VARCHAR(1000) DEFAULT 'EI LISÄTIETOJA', CalendarID INTEGER NOT NULL, CONSTRAINT Types_PK PRIMARY KEY (TypeName,CalendarID) ) Attributes taulu: CREATE TABLE Attributes ( AttribName VARCHAR(100) NOT NULL, AttribInfo VARCHAR(1000) DEFAULT 'EI LISÄTIETOJA', CONSTRAINT Attributes_PK PRIMARY KEY (AttribName) ) TypeCollection taulu: CREATE TABLE TypeCollections ( AttributePlace INTEGER NOT NULL, Attributes_AttribName VARCHAR(100), Types_TypeName VARCHAR(100) NOT NULL, Types_CalendarID INTEGER NOT NULL, CONSTRAINT TypeCollections_PK PRIMARY KEY (AttributePlace,Types_TypeName,Attributes_AttribName), CONSTRAINT TypeCollections_Attributes_FK FOREIGN KEY (Attributes_AttribName) REFERENCES Attributes (AttribName) ON DELETE CASCADE, CONSTRAINT TypeCollections_Types_FK FOREIGN KEY (Types_TypeName,Types_CalendarID) REFERENCES Types (TypeName,CalendarID) ON DELETE CASCADE ) 14 / 19

Markings taulu: CREATE TABLE Markings ( Time TIMESTAMP NOT NULL, TextValue VARCHAR(1000) DEFAULT NULL, TargetBoolean VARCHAR(5) DEFAULT 'false', Value DOUBLE DEFAULT NULL, Types_TypeName VARCHAR(100) NOT NULL, Types_CalendarID INTEGER NOT NULL, TypeCollections_AttributePlace INTEGER NOT NULL, Attributes_AttribName VARCHAR(100) NOT NULL, CONSTRAINT Markings_PK PRIMARY KEY (Time, TargetBoolean, TypeCollections_AttributePlace, Types_TypeName), CONSTRAINT Markings_TypeCollections_FK FOREIGN KEY (TypeCollections_AttributePlace, Types_TypeName, Attributes_AttribName) REFERENCES TypeCollections (AttributePlace, Types_TypeName, Attributes_AttribName) ON DELETE CASCADE, CONSTRAINT Markings_Types_FK FOREIGN KEY (Types_Typename, Types_CalendarID) REFERENCES Types (TypeName, CalendarID) ON DELETE CASCADE ) 4.4.4 Tyyppien ja attribuuttien käsittely Tyyppien listaus SELECT TypeName FROM Types [WHERE CalendarID=calendarID] ORDER BY TypeName Attribuuttien listaus 15 / 19

SELECT Attributes_AttribName FROM TypeCollections WHERE Types_TypeName='typeName' ORDER BY AttributePlace TAI, jos typename == null SELECT AttribName FROM Attributes Tyypin lisäys INSERT INTO Types values ('newtypename','newtypeinfo',calendarid) INSERT INTO TypeCollections values((i+1), 'attribnames[i]', 'newtypename', calendarid) Tyypin poisto DELETE FROM Types WHERE Types.TypeName='typeName' Tyypin infot SELECT TypeInfo FROM Types WHERE TypeName='typename' Attribuutin lisäys INSERT INTO Attributes values('aname','ainfo') Attribuutin poisto DELETE FROM Attributes WHERE Attributes.AttribName='aName' Attribuutin infot SELECT AttribInfo FROM Attributes WHERE AttribName='attribname' 4.4.5 Merkintöjen käsittely Merkinnän lisäys silmukalla Markings oliosta INSERT INTO Markings (Time, TextValue, TargetBoolean, Value, Types_TypeName, TypeCollections_AttributePlace, Types_CalendarID, Attributes_AttribName) values ('newmarking.gettimestamp().tostring()', 'newmarking.getattribtextvalue(i)','target.tostring()', newmarking.getattribvalue(i), 'newmarking.gettypename()', (i+1), +calendarid, 'newmarking.getattribname(i)') Merkinnän poisto DELETE FROM Markings WHERE Markings.Time = 'delmarking.gettimestamp().tostring()' AND Markings.TargetBoolean = '((Boolean)delMarking.getTargetValue())).toString()' AND Markings.Types_TypeName='delMarking.getTypeName()' 16 / 19

Merkintöjen listaus SELECT Time, TextValue, TargetBoolean, Value, Types_TypeName, TypeCollections_AttributePlace, Types_CalendarID FROM Markings WHERE Time BETWEEN 'start.tostring()' AND 'end.tostring()' [AND Types_CalendarID=calendarID] [AND Types_TypeName='tName'] ORDER BY Time, Types_TypeName, TargetBoolean, TypeCollections_AttributePlace 5 YLLÄPITO OHJEITA Tässä kappaleessa on kuvattu ylläpito ja kehitysohjeita mahdollisille jatkokehittäjille. 5.1 Projektin dokumentaatio Projektin julkaistu dokumentaatio löytyy projektin nettisivuilta [1]. Muista dokumenteista voi löytyä sellaista tietoa, mitä tästä on jätetty pois. Projektin lähdekoodi on myös ladattavissa projektin SourceForge sivuilta. Luokkien Javadoc dokumentaatio löytyy käännettynä lähdekoodin mukana. 5.2 Kehitysympäristö Kehitysympäristöksi suosittelemme Netbeansia[6] ja JDK:n versiota 1.6 tai tuoreempaa. Projektin voi avata helposti, kun lähdekoodipaketti on ensin purettu. Lähdekoodit voivat olla myös saatavissa CVS versionhallintaa käyttäen, jos sitä palvelua päätetään projektin lopussa käyttää. SourceForge ohjeistaa versionhallinnan käytössä. Raporttipohjien laadintaohjelma ireport [4] on saatavissa lisäosana Netbeans ympäristöön. Vaihtoehdoisesti voidaan ladata versio, joka ei tarvitse Netbeansia toimiakseen. Huom! Projektia avatessa saattaa tulla virheilmoitus löytymättömistä paketeista. Paketit ovat purkukansion libraries hakemistossa. Virheen saa korjattua painamalla oikealla näppäimellä tuotua projektia ohjeiden mukaan. Kun kaikki paketit ovat löytyneet pitäisi ohjelman olla toimintavalmis. Ennenkuin aloittaa käyttöliittymän ulkoasun kohennuksen, kannattaa paneelien layout vaihtaa freelayot muotoon, koska käytetty GridBagLayout estää komponenttien vapaan siirtelyn. 17 / 19

5.3 Projektikansion sisältö. build/ Sisältää käännetyt java luokat (*.class) ja resurssitiedostot, eli kuvat ym. libraries/ Sisältää ohjelmassa tarvittavat kolmannen osapuolen paketit. Kuvaus paketeista luvussa 2.2. nbproject/ Sisältää Netbeansin projektiasetuksia. Profiles/ Syntyy vasta, kun ensimmäinen profiili luodaan. Jokainen profiili omassa kansiossaan. Kaikki profiiliin liittyvät tiedot on samassa kansiossa. Kaikki tiedostot on Derby tietokannan luomia. Raports/ Sisältää XML muotoiset raporttipohjat (*.jrxml) ja käännetyt raporttipohjat (*.jasper). src/ Sisältää projektin lähdekoodit (*.java) ja lomakepohjat (*.form). Sisältää myös kuvakkeita. build.xml Muokattava tiedosto, jos haluaa tehdä omanlaisensa käännöksen. manifest.mf Tarvitaan paketin paketointiin ja ajoon. Jaettu paketti on.jar tyyppinen tiedosto, jossa on sisällä käännetyt luokkatiedostot ja muut tarvitut tiedostot ja kirjastot. 5.4 Testaus Netbeansiin on integroitu monia testausta helpottavia toimintoja, kuten JUnit [9]. Projektin aikana näitä työkaluja ei juurikaan käytetty, joten regressiotestaus ei suoraan onnistu. Projektin aikana tehdystä testauksesta löytyy tietoa Testaussuunnitelmasta ja Testausraportista. Testaus tulee jäämään pahasti keskeneräiseksi projektin päättyessä, joten syytä testaukseen on. 18 / 19

LÄHTEET [1]Kuntokirjurin kotisivu, http://kuntokirjuri.sourceforge.net/ [2] JasperSoftin kotisivu, http://www.jaspersoft.com/jaspersoft_products.html [3] JasperReports, http://jasperforge.org/jaspersoft/opensource/business_intelligence/jasperreports/ [4] Ireport, http://www.jasperforge.org/jaspersoft/opensource/business_intelligence/ireport/page.php?name=ire portnb [5] Jasperreportsin käyttöohje http://jasperforge.org/jaspersoft/opensource/business_intelligence/jasperreports/tutorial.html [6] Netbeansin kotisivu, http://www.netbeans.org/ [7] Derbyn kotisivu, http://db.apache.org/derby/ [8] JDK lataussivu, http://java.sun.com/javase/downloads/index.jsp [9] JUnit, http://www.junit.org/ [10] Javadocista tietoa, http://java.sun.com/j2se/javadoc/faq/index.html [11] Javan API, http://java.sun.com/javase/6/docs/api/ 19 / 19

LIITTEET: Liite 1 Tiivistetty luokka kaavio (UML luokkakaavio, vain tärkeimmät attribuutit ja metodit)

Liite 2 ER Kaavio