1 Johdanto

1.1 Tausta ja tarkoitus

Projektissa tuotettiin vaihtoehtoympäristö informaatiojärjestelmien harjoitustyön tekemiseen, nykyisen Oracle Web Server ympäristön tilalle. Vaihtoehtoympäristö perustuu laitoksen omaan tietokantapalvelimeen. Vaihtoehtoympäristöön toteutettiin komponentteja ja apuohjelmia, joiden tarkoituksena on helpottaa harjoitustyön tekemistä ja vähentää opeteltavien asioiden määrää. Komponenteista ja apuohjelmista syntyi Java-kielinen kirjasto, mitä harjoitustyön tekijä voi käyttää hyväkseen. Kirjaston nimi on wenla. Kirjaston avulla opiskelija tuottaa WWW-palvelimelle servlettejä, jotka tuottavat HTML-muotoisia sivuja käyttäjän WWW-selaimelle.

1.2 Käsitteitä

JDK Java Development Kit - Sun Microsystems:n Java kehitys- ja ajoympäristö.

HTML Internetissä olevissa dokumenteissa käytettävä standardoitu kuvauskieli.

  • SERVLET Java-kielen laajennus. Mahdollistaa pysyvien (permament) Java-kielisten ohjelmien tekemisen WWW-palvelimelle, joita voidaan kutsua WWW-selaimen sivuilta samaan tapaan kuin CGI ohjelmia.
  • 1.3 Yleiskatsaus dokumenttiin

    Dokumentin toisessa luvussa kuvataan tuotetun järjestelmän käyttöalue. Kolmannessa luvussa kerrotaan tehdyt muutokset määrittely- ja suunnitteludokumentin määrittelyihin. Luvusta löytyy myös osoite, mistä määrittely- ja suunnitteludokumenttien viimeisimmät versiot löytyvät. Neljännen luvun pääsisältö on toimintojen kuvaus, jossa kuvataan ensin koko järjestelmän arkkitehtuuri ja pääkomponentit erikseen. Viidennessä luvussa kuvataan rajoitteita järjestelmän toteutukselle ja noudatettavat standardit.

    2 Yleiskuvaus

    2.1 Sovellus alue

    Projektin lopputuloksena syntyi Java-kielinen wenla-kirjasto, joka sisältää komponentteja ja apuohjelmia. Kirjasto on tarkoitettu avuksi käyttäjille, jotka tekevät WWW-muotoisia tietokantaohjelmia. Kirjasto sijoittuu fyysisesti WWW-palvelimelle.

    Käyttäjät ohjelmoivat kirjastoa apuna käyttäen Java-kielisiä servlettejä palvelimelle, jotka muodostavat käyttäjälle WWW-selaimella näkyviä HTML-sivuja. Nämä HTML-sivut muodostavat käyttäjälle tietokantaohjelman käyttöliittymän.

    2.2 Koko järjestelmä ja ohjelmiston rooli siinä

    Projektissa tuotettiin vaihtoehtoympäristö informaatiojärjestelmien harjoitustyön tekemiseen. Järjestelmä on tarkoitettu toimimaan kaikissa ympäristöissä, joihin on saatavissa vähintään JDK 1.1.5.

    3 Määrittely- ja suunnitteludokumentti

    Määrittelydokumentti löytyy osoitteesta http://www.cs.helsinki.fi/group/wenla/dokut/maarittely102.html

    Suunnitteludokumentti löytyy osoitteesta http://www.cs.helsinki.fi/group/wenla/dokut/suunnittelu040.html

    3.1 Muutokset

    Muutokset määrittelydokumentista suunnitteludokumenttiin:

    Määrittelydokumentissa olevia metodien määrittelyjä on lisätty ja joitakin metodeita on siirretty taulukon käsittelystä lomakkeen käsittelyiksi. Myös luokkakaaviossa tulee olemaan enemmän luokkia kuin määrittelydokumentin kuvassa on.

    Muutokset suunnitteludokumenttista toteutusdokumenttiin:

    Yksi suunnitteludokumentissa mainittu luokka (Cell) poistettiin toteutuksen aikana tarpeettomana. Toteutuksen aikana lisättiin uusia tarpeelliseksi katsottuja luokkia.

    4 Arkkitehtuurin kuvaus

    4.1 Ohjelmiston toimintaperiaate

    Esimerkki kirjaston koodin käyttämisestä:

    Seuraavassa esitetään esimerkki kirjaston käytöstä HTML-sivun muodostamiseksi.

    import wenla.*;

    import java.io.*;

    public class esimerkki

    {

    public static void main(String[] args)

    {

    wenla.Page p;

    wenla.Form f;

    wenla.Table t;

    wenla.RadioGroup r;

    wenla.ButtonGroup B;

    PrintStream tulostus;

    tulostus = System.out;

    p = new Page(tulostus);

    p. backImage("taustakuva.gif");

    f = new Form(null,null,null,true);

    p.addObject(f);

    f.addHeading("Esimerkki lomake:");

    t = new Table();

    f.addObject(t);

    t.defineCell(1,1, new PromptField("Nimi"));

    t.defineCell(2,1, new TextField("Nimi","Nimi",30,30));

    t.defineCell(1,2, new PromptField("Osoite"));

    t.defineCell(2,2, new TextField("Osoite","Osoite",29,29));

    t.defineCell(1,3, new PromptField("Puhelinnro"));

    t.defineCell(2,3, new TextField("Puhelinnro","Puhelinnro",15,15));

    t.defineCell(1,4, new PromptField("Sukupuoli"));

    t.defineCell(2,4, r = new RadioGroup("Sukupuoli","Sukupuoli"));

    r.addButton("Mies", "Mies");

    r.addButton("Nainen", "Nainen");

    t.defineCell(1,5, new PromptField("Muuta"));

    t.defineCell(2,5, new TextField("Muuta","Muuta", 30, 30));

    b = new ButtonGroup();

    b.addButton("Lähetä","Submit","tehty");

    b.addButton("Tyhjennä","Reset","");

    f.addObject(b);

    p.addFreeText("<hr>");

    p.addFreeText("<p>Sivun loppuun voidaan lisätä tietoina

    esimerkiksi viimeinen päivitysajankohta</p>");

    p.printPage();

    }

    }

    Kuva 4.1 Esimerkkilomake

    Testauksessa käytettävä Koetietojen välitys -esimerkkijärjestelmä määriteltiin erilliseen dokumenttiin. Dokumentti löytyy tiedostosta http://www.cs.helsinki.fi/group/wenla/dokut/esisuun.doc.

    4.2 Moduulit ja niiden väliset suhteet

    Luokkakaavio löytyy erillisestä tiedostosta. Se liitetään ryhmän kotisivulle, kun se saadaan näkyviin WWW-selaimessa. Lähdekooditiedostot löytyvät hakemistosta /home/group/wenla/public_html/sorsat/valmiit. Käännetyt class-tiedostot löytyvät hakemistosta /home/group/wenla/public_html/sorsat/classes/wenla.

    4.3 Tietokanta-arkkitehtuuri

    Tietokantana käytetään laitoksen omaa tietokantapalvelinta. Kyselyt tehdään SQL-lauseilla, jotka käyttäjä itse kirjoittaa. Poikkeuksena laskurin lisääminen sivulle. Käyttäjä antaa vain taulunnimen, jossa haluaa pitää kirjaa sivulla käyntien lukumäärästä. Samankaltaisen poikkeuksen muodostaa Form-luokan toinen konstruktori, joka muodostaa annetusta taulusta halutuilla kentillä listamuotoisen lomakkeen.

    4.4 Moduulikuvaukset

    Moduuleja eli luokkia ympäristössä on 26. Seuraavissa aliluvuissa on selitetty tarkemmin mitä mikäkin luokka pitää sisällään.

    4.4.1 Page-luokka

    4.4.1.1 Yleiskuvaus

    Page-luokan avulla käyttäjä voi luoda HTML-sivuja ja tehdä sivuille erilaisia määrityksiä, kuten määrittää taustakuvan.

    4.4.1.2 Tietorakenteet

    private Vector v

    Vektoriin talletetaan sivulla olevat elementit.

    private Vector vf

    Vektoria käytetään sivulla olevien kehyksien osoitteiden talletukseen.

    private boolean font

    Tämä muuttuja ilmaisee, onko sivulle tehty tekstilajin, tekstin koon tai värin muutoksia. Jos on, liitetään automaattisesti sivun loppuun lopetusmerkki.

    private boolean bold

    Muuttuja ilmaisee onko sivulle annettu lihavointi-komento. Jos on ja ei ole lopetettu, tulee sivun loppuun automaattisesti lihavoinnin lopetusmerkki.

    private boolean italic

    Muuttuja ilmaisee onko sivulle annettu kursivointi-komento. Jos on ja ei ole lopetettu, tulee sivun loppuun automaattisesti kursivoinnin lopetusmerkki.

    private boolean clock

    Muuttuja ilmaisee onko sivulle tehty kello. Jos on, toista kelloa ei enää lisätä.

    private boolean errors

    Muuttujan arvo ilmaisee, onko sivulle tarkoitus liittää virheilmoituksia.

    private JavaSClass js

    Muuttujaan talletetaan javascript-luokan osoite.

    private ErrorMessage e

    Muuttujaan talletetaan ErrorMessage-luokan osoite.

    PrintStream out

    Tällä muuttujalla ilmaistaan mihin streamiin tulostus ohjataan.

    private boolean table

    Tällä muuttujalla ilmaistaan laskuriin liittyvän taulun puuttuminen.

    private int lkmnow

    Tämä muuttuja ilmaisee kuinka monta käyntiä sivulla on ollut.

    4.4.1.3 Toiminnot

    Page(PrintStream outstream)

    Page-luokan konstruktori, joka muodostaa HTML-sivun alkutekstejä.

    outstream - stream, johon tulostus ohjataan

    Page(PrintStream outstream, String title, String language)

    Page-luokan konstruktori, joka muodostaa HTML-sivun alkutekstejä.

    outstream - stream, johon tulostus ohjataan

    title - sivun otsikko

    language - sivun määrittelyjen kielikoodi, esimerkiksi EN

    public void addHeadMaterial(String text)

    Metodilla voi määritellä sivulle esimerkiksi taustakuvan ja tekstin värin.

    text - sivun määritysteksti

    public void addBackImage(String url)

    Metodilla voi määritellä sivulle taustakuvan.

    url - taustakuvan osoite

    public void addBackColor(String color)

    Metodilla voi määritellä sivulle taustavärin.

    color - taustaväri

    public void addTextColor(String color)

    Metodilla voi määritellä sivulle tekstin värin.

    color - sivulla olevan tekstin väri

    public void addLinkColor(String color)

    Metodilla voi määritellä sivulla olevien linkkien värin.

    color - sivulla olevien linkkien väri

    public void addUsedLinkColor(String color)

    Metodilla voi määritellä sivulla olevien, käytettyjen linkkien värin.

    color - käytettyjen linkkien väri

    public void addToBody(String text)

    Metodilla voi lisätä sivulle esimerkiksi onclick-funktioiden kutsuja.

    text - sivulle lisättävä määrittely

    public void addObject(Form form)

    Metodilla voi kytkeä lomakkeet sivuun.

    form - lomake, joka kytketään sivuun

    public void addHeader(int level, String text)

    Määrittelee otsikkotekstin.

    level - otsikkotaso (arvot välillä 1 - 6)

    text - otsikon teksti

    public void addBoldText(String text)

    Määrittelee lihavoidun tekstin.

    text - lihavoituteksti

    public void addItalicText(String text)

    Määrittelee kursivoidun tekstin.

    text - kursivoituteksti

    public void addBold()

    Määrittelee lihavoidun tekstin alkamisen.

    public void addItalic()

    Määrittelee kursivoidun tekstin alkamisen.

    public void endBold()

    Lopettaa lihavoidun tekstin.

    public void endItalic()

    Lopettaa kursivoidun tekstin.

    public void addNewRow()

    Määrittelee rivinvaihdon.

    public void addNewParagraph()

    Määrittelee uuden kappaleen alkamisen.

    public void addFont(String color, int size, String face)

    Tekstin värin, koon ja kirjasinlajin muutos.

    color - tekstin väri

    size - tekstin koko (0, jos ei haluta muuttaa nykyistä)

    face - tekstin kirjasinlaji

    public void endFont()

    Lopettaa tekstin koon, värin ja kirjasinlajin muutoksen.

    public void addFontColor(String color)

    Määrittelee tekstin värin.

    color - tekstin väri

    public void addFontFace(String face)

    Määrittelee tekstilajin.

    face - tekstilaji

    public void addFontSize(String size)

    Määrittelee tekstin koon.

    size - tekstin koko

    public void addLine()

    Tekee sivulle harmaan poikkiviivan.

    public void addImage(String url, String align, int width, int height, int hspace, int cspace, int border)

    Määrittelee kuvan koon ja sijainnin.

    url - kuvan URL-osoite

    align - tekstin sijoittuminen kuvaan nähden (left, right, top, middle, bottom) (null, jos ei haluta käyttää)

    width - kuvan leveys (0, jos alkuperäinen koko)

    height - kuvan korkeus (0, jos alkuperäinen koko)

    hspace - tyhjä tila kuvan oikealla ja vasemmalla puolella (0, jos halutaan oletusarvo)

    cspace - tyhjä tila kuvan ylä- ja alapuolella (0, jos halutaan oletusarvo)

    border - kehyksen paksuus

    public void addCounter(String tablename, String db, String user, String password,

    Driver driver) throws InvalidSQL

    Lisää laskurin, joka ilmoittaa sivulla käyntien lukumäärän.

    tablename - taulunnimi, jossa pidetään yllä sivulla käyntien lukumäärää

    db - tietokanta, johon kytkeydytään esimerkiksi jdbc:oracle:thin:@kontti.helsinki.fi:1521:ttst

    user - käyttäjätunnus

    password - käyttäjän salasana

    driver - ajuri, jota käytetään

    static void thrower(String text) throws InvalidSQL

    Metodia käytetään apuna SQL-virheiden nostamiseen.

    text - nostettavan virheilmoituksen selostus

    public void addClock(boolean java)

    Lisää joko käyvän tai muuttumattoman kellon.

    java - true=käyvä kello ja false=muuttumaton kello

    public void addDate()

    Lisää päivämäärän muodossa pp.kk.vvvv.

    public void addLink(String text, String url)

    Määrittelee linkin.

    text - käyttäjälle näkyvä teksti

    url - linkin URL-osoite

    public void addImageLink(String imageurl, int border, String url)

    Määrittelee kuvan linkiksi.

    imageurl - kuvan URL-osoite

    border - kuvan kehyksen paksuus

    url - linkin URL-osoite

    public void addFrameLink(String url, String target, String text)

    Määrittelee linkin toiseen kehykseen.

    url - toiseen kehykseen tulevan sivun URL-osoite

    target - kohde kehyksen nimi

    text - käyttäjälle näkyvä teksti, jota painamalla kohde kehykseen haetaan url-parametrilla määritelty sivu

    public void addComment(String text)

    Lisää kommentin.

    text - kommenttiteksti

    public void addFreeText(String text)

    Lisää vapaamuotoisen tekstin.

    text - HTML-muodossa oleva teksti

    public void addEmail(String url, String text)

    Lisää sähköposti-linkin.

    url - sähköpostiosoite

    text - käyttäjälle näkyvä teksti

    public void addJavaScript(String name, String javas)

    Metodilla voi määritellä sivulle omia javascript-funktioita.

    name - scriptille annettava nimi

    javas - lisättävä javascript-teksti

    private void findJavaScript()

    Hakee tarvittavat tarkastusfunktiot sivulle.

    public void addErrorMessage(String message)

    Metodilla voi määritellä sivulle omia javascript-funktioita.

    message - teksti, joka näytetään käyttäjälle

    public void getErrorMessages()

    Lisää sivulle käyttäjän määrittelemät virheilmoitukset.

    public void printPage()

    Tulostaa muodostetun sivun näytölle.

    4.4.2 FramePage-luokka

    4.4.2.1 Yleiskuvaus

    FramePage-luokan avulla käyttäjä voi luoda sivuja, jotka koostuvat kehyksistä. Kehysten sisältönä voi olla joko servletti tai tavallinen HTML-sivu. Kehyksiin haettavien sivujen on oltava olemassa, koska framePage-luokan avulla ei voi luoda uusia perussivuja.

    4.4.2.2 Tietorakenteet

    private Vector v

    Vektoriin talletetaan sivulla olevat elementit.

    private Vector frames

    Vektoria käytetään apuna tutkittaessa, koska kehysten lopetusmerkki pitää laittaa sivulle.

    private int amount

    Muuttuja ilmaisee kuinka monta kehyksen määrittely riviä pitäisi määritellä.

    PrintStream out

    Tällä muuttujalla ilmaistaan mihin streamiin tulostus ohjataan.

    4.4.2.3 Toiminnot

    public FramePage(PrintStream outstream, String title)

    FramePage-luokan konstruktori.

    outstream - stream, johon tulostus ohjataan

    title - sivulle annettava otsikkoteksti

    public void hFrameset(String up, String down, String border, boolean frameborder)

    Jakaa sivun vaakatasossa kahteen kehykseen.

    up - yläosan koko

    down - alaosan koko

    border - väli, joka kahden kehyksen väliin jää (null, jos ei haluta määritellä)

    frameborder - kehyksen piilotus = true, kehykset näkyvissä = false

    public void vFrameset(String left, String right, String border, boolean frameborder)

    Jakaa sivun pystysuunnassa kahteen kehykseen.

    left - vasemman puolen koko

    right - oikean puolen koko

    border - väli, joka kahden kehyksen väliin jää (null, jos ei haluta määritellä)

    frameborder - kehyksen piilotus = true, kehykset näkyvissä = false

    public void frameInclude(String src, String name, boolean frameborder, String color)

    Määrittelee kehyksen sisällön.

    src - kehyksen sisältämän sivun URL-osoite

    name - kehyksen nimi

    frameborder - kehyksen piilotus = true, kehykset näkyvissä = false

    color - kehyksen väri (null, jos ei määritellä)

    private void addEndFrame()

    Tutkii tarvitseeko lisätä kehyksen lopetusmerkki.

    public void addNoFrameText(String text)

    Määrittelee tekstin mikä näytetään käyttäjälle, jos selain ei tue kehyksiä.

    text - teksti, joka näytetään, jos selain ei tue kehyksiä

    public void addToFrame(String text)

    Metodilla voi lisätä viimeiseksi frameInclude-metodilla luotuun kehykseen määrityksiä.

    text - määritys, joka kehykseen halutaan lisätä

    public void addToFrameset(String text)

    Metodilla voi lisätä viimeiseksi hFrameset- tai vFrameset-metodilla jaettuun osaan määrityksiä.

    text - määritys, joka lisätään jaettuun osaan

    public void printFramePage()

    Tulostaa kehyssivun.

    4.4.3 TableData-luokka

    4.4.3.1 Yleiskuvaus

    TableData-luokalla esitetään taulukon solut. Jokaiseen taulukon soluun voidaan tallentaa yksi tai useampia objekteja. Luokan metodien avulla voidaan lisätä haluttuun taulukon soluun objekti tai kysyä tietyssä solussa olevat objektit.

    4.4.3.2 Tietorakenteet

    public Vector fRows
    Vektori, johon rivit tallennetaan

    public Vector fColumnInfo
    Taulukon sarakkeiden info tiedot tallessa tässä vektorissa

    public int fNumRows
    Kertoo taulussa käytössä olevien rivien lukumäärän

    public int fNumCols
    Kertoo taulussa käytössä olevien sarakkeiden lukumäärän

    Taulukko tallennetaan luokan sisäiseen vektori tietorakenteeseen riveittäin (fRows). Jokaisen rivin jokaista saraketta vastaa rivi vektoriin tallennettu toinen vektori. Jokaiseen tällaiseen vektoriin on tallennettu vielä yksi vektori, joka sisältää soluun kuuluvat objektit.

    4.4.3.3 Toiminnot

    TableData()

    TableData-luokan konstruktori.

    private void addRow()

    Lisää taulukkoon uuden rivin. Uuteen riviin lisätään käytössä olevien sarakkeiden lukumäärän (fNumCols) verran sarakkeita automaattisesti.

    private void addColumn()

    Lisää taulukkoon uuden sarakkeen. Aiheuttaa uuden vektorin lisäyksen kaikkiin fRows vektoriin tallennettuun objektiin.

    public Vector getElement(int colNum, int rowNum)

    Palauttaa taulukon soluun liittyvän elementtivektorin.

    colNum - sarakenumero
    rowNum - rivinumero

    Palauttaa taulukon soluun liittyvän vektorin, joka sisältää soluun tallennetut HTMLElementistä periytyviä olioita.
    Jos annetun solun sijainti koordinaatit virheelliset aiheuttaa poikkeuksen InvalidParameters.

    public void addElement(int colNum, int rowNum, Object element)

    Lisätään määriteltyyn soluun uusi elementti. Kasvattaa taulukon kokoa jos parametrit järkevissä rajoissa (rajat ovat 0 <= colNum < fNumCols+10 ja 0<=rowNum < fNumRows + 10).

    colNum - Sarakenumero
    rowNum - Rivinumero
    element - Lisättävä objekti
    Jos annetun solun sijainti koordinaatit virheelliset aiheuttaa poikkeuksen InvalidParameters

    public void copyRow(int oldRowNum, int newRowNum)

    Kopioidaan TableData -olion rivi toiseen riviin. Metodi lisää tarvittaessa uusia rivejä taulukkoon.

    oldRowNum - Kopioitavan rivin numero
    newRowNum - Rivi, johon kopioidaan

    Jos annetun rivin indeksi virheellinen, niin aiheutuu poikkeus InvalidParameters (rajat ovat 0 <= oldRowNum < fNumRows ja 0<= newRowNum < fNumRows + 10).

    4.4.4 Columns-luokka

    4.4.4.1 Yleiskuvaus

    Tämä luokka sisältää taulukon sarakkeesta talteen laitettuja määrittelyjä, kuten sarakkeen värin, sarakkeen keskityksen ja taulukon sarakerivin otsikon. Luokka ei sisällä metodeita tietojen käsittelyyn, vaan niitä käsitellään Table-luokan metodien avulla.

    4.4.4.2 Tietorakenteet


    public String fColumnHeading

    Tallennettuna listamuotoisia taulukkoja varten taulukon sarakkeen otsikko.

    public boolean fColumnNoWrap

    Kertoo voiko tekstiä rivittää sarakkeen solussa usealle riville.

    public String fColumnBGColor

    Kertoo taulukon sarakkeen kenttien taustavärin. Jos ei määritelty, niin käytetään oletus väriä.

    public String fColumnBorderColor

    Taulukon sarakkeen reunojen väri. Jos ei määritelty niin käytetään oletus väriä.

    public String fColumnAlign

    Kertoo taulukon sarakkeen keskityksen. Mahdolliset arvot ovat left, right ja center.

    4.4.4.3 Toiminnot

    public Column()

    Column-luokan konstruktori. Alustaa kaikki luokan muuttujat.

     

    4.4.5 JavaSClass-luokka

    4.4.5.1 Yleiskuvaus

    Luokan avulla kerätään HTMLElement-luokasta periytyvistä olioista Page-luokalle tarvittavat JavaScript-koodit. Luokka huolehtii ettei yksi JavaScript funktio tule lisättyä kuin kerran Page-luokkaan.

    4.4.5.2 Tietorakenteet


    private Vector fCodes

    JavaScript koodit ovat tallessa tässä vektorissa.

    private Vector fIdentifies

    JavaScript koodien tunnisteet ovat tallessa tässä vektorissa. Tunnisteita tarvitaan, että luokkaan uutta JavaScript –koodia lisättäessä voitaisiin tarkistaa onko koodi jo lisätty.

     

    4.4.5.3 Toiminnot

    JavaSClass()

    JavaScript luokan konstruktori. Luo luokan vektorit.

    public void addScript(String identify,String code)

    Funktio, jonka avulla voidaan lisätä uusia javascript koodeja. Tarkastaa ennen lisäystä, ettei vastaavaa koodia ole jo valmiiksi lisätty.

    identify - Lisättävän koodin tunniste
    code – Lisättävä JavaScript koodi

    public String getScript(int index)

    Funktio, jonka avulla voidaan kysyä JavaScript koodi halutulla indeksillä.

    index - Monesko JavaScript koodi vektorista palautetaan.

     

    4.4.6 HTMLElement-luokka

    4.4.6.1 Yleiskuvaus

    HTMLElement-luokka toimii perusluokkana, josta monet kirjaston luokat periytetään. Kyseessä on abstrakti luokka, jossa määritellään periytyviin luokkiin erilaisia toimintoja ja yksi tietorakenne.

    4.4.6.2 Tietorakenteet

    public boolean fIsDatabaseField
    Muuttuja, joka kertoo aiheuttiko connectData metodin kutsuminen tiedon tuontia luokkaan tietokannasta. Tarvitaan joissakin periytyvissä luokissa, joissa pitää tietää tuotiinko kenttään tietoa tietokannasta vai käyttäjän itse määrittelemää tietoa.

    4.4.6.3 Toiminnot

    HTMLElement luokan metodit ovat joko abstrakteja metodeita tai sisältävät pelkän rungon. Luokat, jotka haluavat metodien tekevän jotain syrjäyttävät nämä metodit omillaan.

    abstract void draw(PrintStream stream)

    Abstrakti metodi, joka syrjäytetään periytyvissä luokissa.

    stream - Kertoo streamin, mihin tulostus tehdään.

    public void getValidateFunctions(JavaSClass scriptClass)

    Metodi, joka palauttaa vastauksena elementtiin liittyvän JavaScript koodin tunnisteen. Luokat, joihin ei kuulu JavaScript koodia eivät lisää parametrina annettavaan scriptClass olioon mitään.

    scriptClass - JavaScript koodit tallentavaan olioon osoittava parametri.

    public void connectData(ResultSet rs)

    Funktio, jonka avulla kenttään kytketään kyselystä tiedot.

    rs - Osoitin kyselyn riviin, josta tiedot haetaan.

    Jos tietojen kytkeminen kenttään ei onnistu aiheuttaa ConnectDataException poikkeuksen.

    public Object clone()

    Funktio, jolla voidaan kopioida olio.

    Palauttaa oliosta luodun kopion.

    4.4.7 ButtonGroup-luokka

    4.4.7.1 Yleiskuvaus

    Luokan avulla voidaan luoda lomakkeelle nappiryhmiä. Nämä ryhmät voivat sisältää yhden tai useampia nappeja. Nappien painallus aiheuttaa lomakkeen tietojen lähettämisen napissa määriteltyyn osoitteeseen. Lisäksi voidaan napin painalluksesta laittaa lomake tyhjenemään.

    4.4.7.2 Tietorakenteet

    fButtons

    Vektori, johon on tallennettu nappiryhmän nappien HTML -koodit.

    4.4.7.3 Toiminnot


    public ButtonGroup()

    Nappiryhmän luova muodostin. Luo vektorin johon napit tallennetaan.

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt abstrakti metodi, joka huolehtii nappien tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.

    public void addButton(String name,String type, String value)

    Metodi, jonka avulla nappiryhmään voidaan lisätä uusi nappi. Lisää napin suoraan HTML koodina luokassa määriteltyyn fButtons vektoriin.

    name - Napissa lomakkeella oleva nimi.
    type - Napin tyyppi. Submit vai Reset.
    value - Arvo, mikä nappi painettaessa lähetetään lomakkeelta. Napin otsikko lomakkeella.

    InvalidParameters
    Poikkeus aiheutuu, jos napin tyyppi ei ole RESET tai SUBMIT

    public Object clone()

    Kopioi nappiryhmän. Kopioi kaikki nappiryhmän napit.

    Palauttaa nappiryhmän kopion.

     

    4.4.8 DatabaseField-luokka

    4.4.8.1 Yleiskuvaus

    Tästä luokasta periytetään kaikki sellaiset kentät, jotka hakevat tietonsa tietokannasta. Luokassa määritellään yleisiä muuttujia ja toimintoja tällaisille kentille.

    4.4.8.2 Tietorakenteet

    fConnect
    Muuttuja, jota käytetään kertomaan, onko kenttään jo kytketty tieto.

    fDatabaseName
    Tietokantakyselyissä kentästä käytettävä nimi.

    fFormFieldName

    HTML-lomakkeella kentästä käytettävä nimi.

    4.4.8.3 Toiminnot

    public void connectData(ResultSet rs)

    Funktio, jonka avulla kenttään kytketään kyselystä tiedot. Jos tiedon kytkeminen onnistuu laitetaan fConnect muuttujan arvoksi TRUE.

    rs - Osoitin kyselyn riviin, josta tiedot haetaan.

    Jos tietojen kytkeminen kenttään ei onnistu aiheutuu ConnectDataException poikkeus.


    public void fillFieldWithText(String fillText)

    Funktio, jonka avulla kenttään voidaan tuoda tekstiä. Tarkoitettu käytettäväksi kenttien täyttämiseen silloin, kun tieto ei tule tietokantakyselystä. Laitetaan fConnect muuttujan arvoksi TRUE.

    fillText - Teksti, joka kenttään laitetaan.

    4.4.9 DirectLinkField-luokka

    4.4.9.1 Yleiskuvaus

    Luokan avulla voidaan luoda staattisia linkkikenttiä lomakkeelle. Linkki määrätään kenttään luonnin yhteydessä.

    4.4.9.2 Tietorakenteet

    private String fLinkName
    Kentän sisältämä linkki on tallessa tässä muuttujassa.

    4.4.9.3 Toiminnot


    public DirectLinkField(String formFieldName, String linkName)

    Suoranlinkkikentän luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen. Tarkoittaa suoranlinkkikentän tapauksessa lomakkeella näkyvää klikattavaa tekstiä.
    linkName - Linkin URL-osoite.

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt abstrakti metodi, joka huolehtii suoranlinkkikentän tulostamisesta HTML-komennoilla lomakkeelle.

    stream
    - Kertoo streamin, mihin tulostus tehdään.

    public Object clone()

    Kopioi suoranlinkkikentän

    Palauttaa suoranlinkkikentän kopion.

     

    4.4.10 UnDirectLinkField-luokka

    4.4.10.1 Yleiskuvaus

    Luokan avulla voidaan luoda linkkikenttiä, joihin linkki haetaan tietokannasta.

    4.4.10.2 Toiminnot

    public UnDirectLinkField(String formFieldName,String databaseFieldName)

    Epäsuoranlinkkikentän luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen. Tarkoittaa epäsuoranlinkkikentän tapauksessa lomakkeella näkyvää klikattavaa tekstiä, joka aiheuttaa siirtymisen toiselle HTML –sivulle tai samalla sivulla eri kohtaan.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt metodi, joka huolehtii epäsuoranlinkkikentän tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.

    public Object clone()

    Kopioi epäsuoranlinkkikentän

    Palauttaa epäsuoranlinkkikentän kopion.

    4.4.11 DropDownField-luokka

    4.4.11.1 Yleiskuvaus

    Luokan avulla voidaan luoda alasvetovalikkoja HTML lomakkeelle. Luokka sisältää metodit, joilla voidaan lisätä vaihtoehtoja luokkaan. Tietokanta tiedon kytkemisen yhteydessä valitaan listasta automaattisesti tietokannan arvoa vastaava rivi.

    4.4.11.2 Tietorakenteet

    private Vector fAlternatives
    Vektori, johon alasvetovalikon vaihtoehdot tallennetaan.

    4.4.11.3 Toiminnot


    public DropDownField(String formFieldName,String databaseFieldName)

    Alasvetovalikon luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt abstrakti metodi, joka huolehtii alasvetovalikon tulostamisesta HTML-komennoilla lomakkeelle.

    stream
    - Kertoo streamin, mihin tulostus tehdään.

    public void addAlternative(String name)

    Lisää alasvetovalikon listaan vaihtoehdon.

    name
    - Vaihtoehdon nimi listaan.

    public Object clone()

    Kopioi alasvetovalikon, kopioi myös alasvetovalikkoon liittyvän vaihtoehto listan.

    Palauttaa alasvetovalikon kopion.

    4.4.12 HiddenField-luokka

    4.4.12.1 Yleiskuvaus

    Luokka, jonka avulla lomakkeelle voidaan luoda käyttäjälle näkymättömiä kenttiä. Käytetään esimerkiksi ID-tiedon tallentamiseen lomakkeelle.

    4.4.12.2 Toiminnot

    public HiddenField(String formFieldName,String databaseFieldName)

    Piilokentän luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt metodi, joka huolehtii piilokentän tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.

    public Object clone()

    Kopioi piilokentän

    Palauttaa piilokentän kopion.

    4.4.13 MemoField-luokka

    4.4.13.1 Yleiskuvaus

    Luokka, jonka avulla voidaan luoda memokenttiä lomakkeelle, memokenttä eroaa tavallisesta tekstikentästä kokonsa puolesta sillä se voi sisältää tekstiä useita rivejä.

    4.4.13.2 Tietorakenteet

    private int fRowCount
    Montako riviä memokenttään mahtuu kerralla näkyville.

    private int fColCount
    Montako merkkiä memokentän yhdelle riville mahtuu.

    4.4.13.3 Toiminnot


    public MemoField(String formFieldName,String databaseFieldName,int rows,int cols)

    Memokentän luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.
    rows - Kentästä lomakkeella näkyvien rivien lukumäärä.
    cols - Kentästä lomakkeella näkyvien sarakkeiden lukumäärä (= montako merkkiä rivillä).

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt abstrakti metodi, joka huolehtii memokentän tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.

    public Object clone()

    Kopioi memokentän.

    Palauttaa memokentän kopion.

    4.4.14 RadioGroup-luokka

    4.4.14.1 Yleiskuvaus

    Luokka, jonka avulla voidaan luoda valintapainikeryhmiä lomakkeelle. Yksi ryhmä voi sisältää yhden tai useampia valintapainikkeita. Luokka sisältää metodit valintapainikkeiden lisäämiseen. Tietokannasta tietoa kytkettäessä valitaan automaattisesti oletusarvoksi tietokannan arvo.

    4.4.14.2 Tietorakenteet

    private Vector fNames
    Vektoriin tallennetaan lomakkeella valintapainikkeissa näkyvät tekstit.

    private Vector fValues
    Vektoriin tallennetaan lomakkeelta lähtevät valintapainikkeiden arvot.

    private String fDefault
    Jos halutaan valita jokin oletusarvoisesti voimassa oleva, on tässä muuttujassa tallessa oletusarvoisesti päälläolevan valintapainikkeen nimi.

     

    4.4.14.3 Toiminnot

    public RadioGroup(String formFieldName,String databaseFieldName)

    Valintapainikeryhmän luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen

    public void draw(PrintStream stream)

    Yliajetaan periytynyt abstrakti metodi, joka huolehtii valintapainikkeiden tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.

    public void addButton(String name)

    Metodi, jonka avulla valintapainikeryhmään voidaan lisätä uusi valintapainike. Lomakkeella kentästä käytettävä nimi ja näkyvä arvo ovat samat.

    name - Valintapainikkeen näkyvä selite lomakkeella.

    public void addButton(String name, String value)

    Metodi, jonka avulla valintapainikeryhmään voidaan lisätä uusi valintapainike.

    name - Valintapainikkeen näkyvä selite lomakkeella.
    value - Valintapainikkeen painamisesta käsittelijälle lähtevä arvo.

    public void setDefault(String name)

    Metodi, jonka avulla voidaan merkitä jokin valintapainike valituksi.

    name - Kertoo sen valintapainikkeen nimi, joka merkitään valituksi.

    public void connectData(ResultSet rs)

    Syrjäytetään DatabaseField luokan connectData metodi, koska RadioGroupissa kyselystä tuleva data pitää vaikuttaa valintapainikeryhmän valintaan.

    rs - Osoitin kyselyn riviin, josta tiedot haetaan.


    public Object clone()

    Kopioi valintapainikeryhmän

    Palauttaa valintapainikeryhmän kopio olion.

    4.4.15 TextField-luokka

    4.4.15.1 Yleiskuvaus

    Tekstikentän luomiseen lomakkeelle käytettävä luokka.

    4.4.15.2 Tietorakenteet


    protected int fMaxLength

    Kentän maksimi pituus eli montako merkkiä kenttään voidaan syöttää

    protected int fSize

    Kentän pituus eli montako merkkiä kentässä näkyy

    4.4.15.3 Toiminnot

    public TextField(String formFieldName, String databaseFieldName, int maxLength, int size)

    Tekstikentän luova 1. muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.
    maxLength - Kentän maksimipituuden määräävä parametri
    size - Kentän pituus merkkeinä

    public TextField()

    Tekstikentän luova 2. muodostin. Luo tekstikentän ilman mitään parametreja.

    public TextField(String formFieldName,String databaseFieldName)

    Tekstikentän luova 3. muodostin. Kentästä käytetään oletuspituuksia.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt abstrakti metodi, joka huolehtii tekstikentän tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.


    public Object clone()

    Kopioi tekstikentän kaikkine pituus ja muine määritteineen.

    Palauttaa tekstikentän kopion.

    4.4.16 PasswordField-luokka

    4.4.16.1 Yleiskuvaus

    Luokan avulla voidaan luoda salasankenttä lomakkeelle. Luokka näyttää ulospäin normaalilta tekstikentältä, mutta kenttään kirjoitettaessa kaikki merkit korvataan * -merkillä.

    4.4.16.2 Toiminnot

    public PasswordField(String formFieldName, String databaseFieldName, int maxLength,
    int size)

    Salasanakentän luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.
    maxLength - Kentän maksimipituuden määräävä parametri
    size - Kentän pituus merkkeinä

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt metodi, joka huolehtii salasanakentän tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.


    public Object clone()

    Kopioi salasanakentän

    Palauttaa salasanakentän kopion.

    4.4.17 ValidateField-luokka

    4.4.17.1 Yleiskuvaus

    Luokka, josta kaikki JavaScriptiä tarkastukseen käyttävät luokat periytetään. Määrittelee yhden uuden metodin periytyviä luokkia varten.

    4.4.17.2 Toiminnot

    abstract String addCode()

    Metodi, jolla voidaan liittää haluttu JavaScript tarkastuskoodi kenttään.

    4.4.18 NumberField-luokka

    4.4.18.1 Yleiskuvaus

    Luokka, jonka avulla lomakkeelle voidaan tehdä kenttä, joka hyväksyy vain tietyn arvoalueen numerot. Jos arvoväli annetaan desimaalilukuna, voi myös käyttäjä syöttää kenttään desimaaliluvun. Oikean arvon tarkastaminen hoidetaan kenttään automaattisesti kytkettävällä JavaScript koodilla.

    4.4.18.2 Tietorakenteet


    private String code

    Muuttuja, johon on tallennettu tarkastuksesta huolehtiva JavaScript koodi.

    private String fMinNumber
    Muuttujaan tallennetaan pienin numero, joka kenttään voidaan syöttää.

    private String fMaxNumber
    Muuttujaan tallennetaan suurin numero, joka kenttään voidaan syöttää.

    4.4.18.3 Toiminnot


    public NumberField(String formFieldName,String databaseFieldName,
    String minNumber, String maxNumber,int maxLength)

    Numerokentän luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.
    minNumber - Pienin mahdollinen numero, joka kenttään voidaan antaa.
    maxNumber - Suurin mahdollinen numero, joka kenttään voidaan antaa.
    maxLength - Kentän maksimipituuden määräävä parametri

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt metodi, joka huolehtii numerokentän tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.


    public Object clone()

    Kopioi numerokentän

    Palauttaa numerokentän kopion.


    public void getValidateFunctions(JavaSClass scriptClass)

    Lisää Page luokassa määriteltyyn JavaSClass listaan tarkastukseen käytettävän JavaScript koodin tunnisteen ja itse JavaScript koodin


    public String addCode()

    Kertoo HTML koodin, millä tarkastuskoodi kytketään kenttään.

    4.4.19 ENumField-luokka

    4.4.19.1 Yleiskuvaus

    Luokka, jonka avulla lomakkeelle voidaan tehdä kenttä, joka hyväksyy vain tietyt syötteet. Sallitut syötearvot voidaan lisätä luokkaan sen metodilla. Oikean arvon tarkastaminen hoidetaan kenttään automaattisesti kytkettävällä JavaScript koodilla.

    4.4.19.2 Tietorakenteet

    private Vector fAlternatives
    Vektori, joka sisältää kenttään hyväksyttävien syötearvojen listan.

    private String code
    Muuttuja, johon on tallennettu tarkastuksesta huolehtiva JavaScript koodi.

    4.4.19.3 Toiminnot

    public ENumField(String formFieldName, String databaseFieldName,
    int maxLength, int size)

    Luettelokentän luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.
    maxLength - Kentän maksimipituus merkkeinä
    size - Kentän pituus merkkeinä

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt metodi, joka huolehtii luettelokentän tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.

    public void addEnumerate(String name)

    Lisää luettelokentän listaan uuden vaihtoehdon. Listan sisältöä verrataan hyväksyttäessä käyttäjän syötettä. Käyttäjän antama syöte pitää löytyä listasta.

    name - Listan vaihtoehdon nimi.


    public Object clone()

    Kopioi luettelokentän. Kopioi myös kenttään liittyvän listan arvoineen.

    Palauttaa luettelokentän kopion.


    public void getValidateFunctions(JavaSClass scriptClass)

    Lisää Page luokassa määriteltyyn JavaSClass listaan tarkastukseen käytettävän JavaScript koodin tunnisteen ja itse JavaScript koodin


    public String addCode()

    Kertoo HTML koodin, millä tarkastuskoodi kytketään kenttään.

    4.4.20 SSNField-luokka

    4.4.20.1 Yleiskuvaus

    Luokka, jonka avulla lomakkeelle voidaan tehdä kenttä, joka hyväksyy vain oikeanmuotoisen henkilötunnuksen. Oikean arvon tarkastaminen hoidetaan kenttään automaattisesti kytkettävällä JavaScript koodilla.

    4.4.20.2 Tietorakenteet


    private String code

    Muuttuja, johon on tallennettu tarkastuksesta huolehtiva JavaScript koodi.

    4.4.20.3 Toiminnot


    public SSNField(String formFieldName, String databaseFieldName)

    Henkilötunnuskentän luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.


    public void draw(PrintStream stream)

    Syrjäytetään periytynyt metodi, joka huolehtii henkilötunnuskentän tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.


    public Object clone()

    Kopioi henkilötunnuskentän

    Palauttaa henkilötunnuskentän kopion.


    public void getValidateFunctions(JavaSClass scriptClass)

    Lisää Page luokassa määriteltyyn JavaSClass listaan tarkastukseen käytettävän JavaScript koodin tunnisteen ja itse JavaScript koodin


    public String addCode()

    Kertoo HTML koodin, millä tarkastuskoodi kytketään kenttään.

    4.4.21 DateField-luokka

    4.4.21.1 Yleiskuvaus

    Luokka, jonka avulla lomakkeelle voidaan tehdä kenttä, joka hyväksyy vain oikeanmuotoisen päiväyksen. Lisäksi voidaan rajata päivämäärä väli, jossa annettavan päiväyksen tulee olla. Oikean arvon tarkastaminen hoidetaan kenttään automaattisesti kytkettävällä JavaScript koodilla.

    4.4.21.2 Tietorakenteet


    private String code
    Muuttuja, johon on tallennettu tarkastuksesta huolehtiva JavaScript koodi.

    private String fMinDate
    Pienin päivämäärä, joka kenttään voidaan syöttää on tallessa tässä muuttujassa.

    private String fMaxDate
    Suurin päivämäärä, joka kenttään voidaan syöttää on tallessa tässä muuttujassa.

    4.4.21.3 Toiminnot


    public DateField(String formFieldName, String databaseFieldName,
    String minDate, String maxDate)

    Päiväyskentän luova muodostin.

    formFieldName - Kertoo kentästä lomakkeella käytettävän nimen.
    databaseFieldName - Kertoo tietokantakyselyssä kentän nimen.
    minDate - Pienin mahdollinen päivämäärä, joka kenttään voidaan antaa.
    maxDate - Suurin mahdollinen päivämäärä, joka kenttään voidaan antaa.

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt metodi, joka huolehtii päivämääräkentän tulostamisesta HTML-komennoilla lomakkeelle.

    stream - Kertoo streamin, mihin tulostus tehdään.


    public Object clone()

    Kopioi päivämääräkentän

    Palauttaa päivämääräkentän kopion.


    public void getValidateFunctions(JavaSClass scriptClass)

    Lisää Page luokassa määriteltyyn JavaSClass listaan tarkastukseen käytettävän JavaScript koodin tunnisteen ja itse JavaScript koodin


    public String addCode()

    Kertoo HTML koodin, millä tarkastuskoodi kytketään kenttään.

    4.4.22 PromptField-luokka

    4.4.22.1 Yleiskuvaus

    Luokan avulla voidaan luoda staattisia tekstikenttiä lomakkeelle. PromptField-luokan olioita käytetään eri kenttien edessä selittämään kenttään haluttavaa arvoa.

    4.4.22.2 Tietorakenteet

    private String fPrompt
    Sisältää tekstin, joka kentässä näytetään.

    4.4.22.3 Toiminnot

    public PromptField(String Prompt)

    Selitekentän luova muodostin. Parametrina menee selite.

    prompt - Selitekentän teksti, joka tulostetaan lomakkeelle.


    public PromptField(databaseField field)

    Selitekentän luova 2. muodostin. Käytetään databaseField kentistä tehtäessä uusia kenttiä readonly formiin.

    field - DatabaseFieldistä periytynyt kenttä

    public void draw(PrintStream stream)

    Syrjäytetään periytynyt abstrakti metodi, joka huolehtii selitekentän tulostuksesta.

    stream - Kertoo streamin, mihin tulostus tehdään.


    public Object clone()

    Kopioi selitekentän

    Palauttaa selitekentän kopion.

     

    4.4.23 Form-luokka

    4.4.23.1 Yleiskuvaus

    Luokan avulla luodaan lomakkeita HTML sivulle. Lomake voi olla kirjoitussuojattu (readOnly).

    4.4.23.2 Tietorakenteet


    private Vector objectArray

    Vektori, johon tallennetaan lomakkeeseen liitetyt objektit.

    private String fFormStart

    Muuttuja, jossa on tallessa HTML muotoisen formin aloittava komentosarja. Muodostetaan Form luokan konstruktorien yhteydessä.

    private String fFormHeading
    Muuttuja, joka sisältää lomakkeelle määritetyn otsikon.

    private String fFormEndString
    Muuttuja, joka sisältää lomakkeen loppuun tulostettavat tiedot.

    private boolean fReadOnly
    Muuttuja, joka kertoo onko lomake kirjoitussuojattu.

    4.4.23.3 Toiminnot


    public Form(String name, String adressUrl, String metod,
                 String dbTableName,String dbTableFields,
                 String JDBCDriver,String dbUrl, String userID,
                 String userPasswd, boolean readOnlyParam)

    Form-luokan konstruktori, joka luo uuden standardilomakkeen. Parametrina tietokantataulu, josta lomakkeelle tulevat kentät haetaan.

    name - formille annettava nimi
    adressUrl - www-osoite
    metod - parametrien välitystapa
    dbTableName - tietokantataulun nimi
    dbTableFields - taulusta lomakkeelle haluttavat kentät
    JDBCDriver - Kertoo JDBC ajurin, jota käytetään
    dbUrl - Kertoo datan sijainnin
    userID - Millä käyttäjätunnuksella dataa haetaan
    userPasswd - Millä salasanalla dataa haetaan
    readOnlyParam - vainluku parametri

    Jos tietojen haku kannasta ja kytkeminen ei onnistu aiheuttaa ConnectDataException poikkeuksen.


    public Form(String name, String adressUrl, String metod, boolean readOnlyParam)

    Form-luokan 2.konstruktori

    name - formille annettava nimi
    adressUrl - www-osoite
    metod - parametrien välitystapa
    readOnlyParam - vainluku parametri

    public void addHeading(String formHeading)

    Lisää lomakkeelle otsikon

    formHeading - lomakkeen otsikko

    public void addEndText(boolean addDate,  String endText)

    Lisää lomakkeelle lopputekstin

    addDate - parametri kertoo halutaanko lisätä päiväys
    endText - lopputeksti

    public void addObject(Object element)

    Lisää lomakkeelle elementin

    element - lomakkeelle lisättävä elementti

    public void connectData(ResultSet rs)

    Syrjäytetään HTMLElementistä periytyvä metodi, jolla kytketään data kyselystä kenttiin. Käy läpi kaikki lomakkeeseen liittyvät HTMLElement luokasta periytyvät oliot ja kutsuu niiden vastaavaa kytkentä metodia.

    rs - Osoitin kyselyn riviin, josta tiedot haetaan.


    public void draw(PrintStream stream)

    Syrjäytetään periytynyt abstrakti metodi, joka huolehtii lomakkeen tulostamisesta HTML-komennoilla lomakkeelle. Käy läpi kaikki lomakkeeseen liittyvät HTMLElement luokasta periytyvät oliot ja kutsuu niiden vastaavaa piirto metodia.

    stream - Kertoo streamin, mihin tulostus tehdään.


    public void getValidateFunctions(JavaSClass scriptClass)

    Kutsuu kaikkia lomakkeeseen liittyviä HTMLElementistä periytyviä luokkia ja hakee niiltä JavaScript koodit.

    scriptClass - JavaScript koodit tallentavaan olioon osoittava parametri.

     

    4.4.24 Table-luokka

    4.4.24.1 Yleiskuvaus

    Käytetään HTML lomakkeelle taulujen luonnin apuna. Taulu voi olla listamuotoinen tai lomakemuotoinen. Taulu voi lisäksi olla kirjoitussuojattu (readOnly).

    4.4.24.2 Tietorakenteet

    private boolean fReadOnly
    Muuttujaan on tallennettuna tieto, onko taulu kirjoitussuojattu

    private String fTableHeading
    Muuttujaan on tallennettu taulun otsikko

    private int fTableBorder
    Muuttujassa tallessa taulukon reunojen paksuus.

    private String fTableWidth
    Muuttujassa tallessa taulukon leveys prosentteina sivun koosta.

    private String fTableAlign
    Muuttujaan tallennettu tieto taulukon sijainnista sivulla. Mahdolliset arvot left, right ja center.

    private String fTableType
    Kertoo minkä tyyppinen taulukko on kyseessä. Lomake- vai listamuotoinen taulukko.

    private String fTableFont
    Muuttujaan tallennettu taulukossa käytetyn fontin nimi.

    private String fTableFontSize
    Muuttujaan tallennettu taulukossa käytetyn fontin koko.

    private String fTableBGColor
    Muuttujaan tallennettu taulukon taustaväri.

    private String fTableBorderColor
    Muuttujaan tallennettu taulukon reunojen väri.

    private TableData fTable
    Oliossa tallessa taulukon sarakkeiden sisältämät objektit.

    4.4.24.3 Toiminnot

    public Table()

    Table-luokan konstruktori, joka luo uuden taulukon oletusarvoisilla parametreillä.


    public Table(boolean readonly,String tableHeading,int tableBorder,
                  String tableBGColor,String tableBorderColor,String tableWidth,
                  String tableAlign, String tableType)

    Table-luokan konstruktori, joka luo uuden taulukon parametreinä annettavilla arvoilla.

    readonly - Kertoo onko taulukko vain lukemista varten.
    tableHeading - Lomakkeella olevan taulukon otsikko
    tableBorder - Taulukon reuna. Jos 0, niin taulukolle ei piirretä reunoja.
    tableBGColor - Taulukon taustaväri.Jos "" niin käytetään oletusta.
    tableBorderColor - Taulukon reunojen väri. Jos "" niin käytetään oletusta.
    tableWidth - Taulukon leveys prosentteina.
    tableAlign - Taulukon tasaus vasemmalle, keskeelle tai oikealle.
    tableType - Taulukon muoto: lomake tai taulukko (arvoiksi voi antaa form tai list).

    Jos taulukon tyyppi ei ole list tai form aiheutuu poikkeus InvalidParameters.

    public void defineCell(int columnNum,int rowNum,Object newField)

    Määrittelee taulukkoon uuden solun

    columnNum - sarakenumero
    rowNum - rivinumero
    newField - soluun sijoitettava kenttä

    public void setReadOnly(boolean readOnly)

    Voidaan asettaa taulun fReadOnly arvo. Jos true, niin taulukon tiedot esitetään PromptFieldien avulla eli kaikki DatabaseField tyyppiset kentät vaihdetaan PromptField kentiksi ja tietokannan datasta tulee kentässä näkyvä arvo.

    readOnly - Uusi arvo fReadOnly muuttujalle.


    public void changeTableTextFont(String tableTextFont, String tableTextSize)

    Uudelleenmäärittelee taulukon tekstifontit

    tableTextFont - taulukon tekstilaji
    tableTextSize - taulukon tekstikoko

    public void draw(PrintStream stream)

    Tulostaa taulukon. Taulun tyyppi (list, form) määrää minkälainen tulostus tehdään. Pitää sisällään silmukan, joka käy läpi taulukkoon liittyvät oliot.

    stream - Kertoo streamin, mihin tulostus tehdään.


    public void changeColumnHeading(int colNum, String columnHeading)

    Vaihtaa sarakkeen oletusarvoisen otsikon parametrinä antamaan otsikkoon

    columnHeading - Sarakkeen otsikko
    colNum - Sarake, jonka otsikkoa vaihdetaan

    Jos annettu sarakkeen yksilöivä parametri virheellinen aiheuttaa poikkeuksen InvalidParameters.


    public void changeColumnBGColor(int colNum,String columnColor)

    Vaihtaa sarakkeen taustavärin

    columnColor - Uusi sarakkeen väri
    colNum - Sarake, jonka väriä vaihdetaan

    Jos annettu sarakkeen yksilöivä parametri virheellinen aiheuttaa poikkeuksen InvalidParameters.

    public void changeColumnBorderColor(int colNum, String columnColor)

    Vaihtaa sarakkeen reunavärin

    columnColor - Uusi sarakkeen väri
    colNum - Sarake, jonka väriä vaihdetaan

    Jos annettu sarakkeen yksilöivä parametri virheellinen aiheuttaa poikkeuksen InvalidParameters.


    public void changeColumnAlign(int colNum, String columnAlign)

    Vaihtaa sarakkeen tietojen keskityksen

    columnAlign - Kertoo käytettävän keskityksen.
    colNum - Sarake, jonka keskitystä vaihdetaan

    Jos annettu sarakkeen yksilöivä parametri virheellinen aiheuttaa poikkeuksen InvalidParameters.

    public void changeColumnWrap(int colNum,  boolean columnWrap)

    Kertoo voidaanko sarakkeeseen tulevaa tekstiä rivittää useammalle riville. Oletusarvoisesti ei voida.

    columnWrap - Kertoo, voidaanko sarakkeen soluissa teksti rivittää usealle riville.
    colNum - Sarake, jonka keskitystä vaihdetaan

    Jos annettu sarakkeen yksilöivä parametri virheellinen aiheuttaa poikkeuksen InvalidParameters.

    public void connectData(ResultSet rs)

    Syrjäytetään HTMLElementistä periytyvä metodi, jolla kytketään data kyselystä kenttiin. Pitää sisällä silmukan, joka käy läpi taulukkoon liittyvät oliot.

    rs - Osoitin kyselyn riviin, josta tiedot haetaan.

    Aiheuttaa poikkeuksen ConnectDataException, jos listamuotoiseen taulukkoon ei tietojen kytkentä onnistu.


    public void getValidateFunctions(JavaSClass scriptClass)

    Kutsuu kaikkia taulukkoon liittyviä HTMLElementistä periytyviä luokkia ja hakee niiltä JavaScript koodit.

    scriptClass - JavaScript koodit tallentavaan olioon osoittava parametri.

    4.4.25 ErrorMessage-luokka

    4.4.25.1 Yleiskuvaus

    Luokan avulla käyttäjä voi lisätä omia virheilmoituksia sivulle. Kun sivu tulostetaan, näytetään lisätyt virheilmoitukset punaisella pohjalla sivun ylälaidassa.

    4.4.25.2 Tietorakenteet

    private Vector errors

    Muuttujaan talletetaan käyttäjän määrittelemät virheilmoitukset.

    4.4.25.3 Toiminnot

    public ErrorMessage()

    ErrorMessage-luokan konstruktori.

    public void addEMessage(String text)

    Metodilla voi lisätä luokkaan käyttäjän määrittelemiä virheilmoituksia.

    text - lisättävä virheilmoitus

    public String getEMessage(int i)

    Metodilla haetaan lisätyt virheilmoitukset.

    i - i.s virheilmoitus, mikä halutaan hakea

    4.4.26 InvalidSQL-luokka

    4.4.26.1 Yleiskuvaus

    Luokkaa käytetään apuna nostettaessa poikkeus, jos SQL-lauseen suorituksessa tulee jokin virhe.

    4.4.26.2 Toiminnot

    public InvalidSQL()

    InvalidSQL-luokan konstruktori, joka suorittaa SQLException-luokan konstruktorin.

    public InvalidSQL(String text)

    InvalidSQL-luokan konstruktori, joka suorittaa SQLException-luokan konstruktorin.

    text - virheteksti

    4.4.27 InvalidParameters-luokka

    4.4.27.1 Yleiskuvaus

    Luokkaa käytetään apuna nostettaessa poikkeus, jos jonkin metodin suoritukseen tarvittavat parametrit ovat virheelliset.

    4.4.27.2 Toiminnot

    public InvalidParameters()

    InvalidParameters-luokan konstruktori, joka suorittaa Exception-luokan konstruktorin.

    public InvalidParameters(String text)

    InvalidParameters-luokan konstruktori, joka suorittaa Exception-luokan konstruktorin.

    text - virheteksti

    4.4.28 ConnectDataException-luokka

    4.4.28.1 Yleiskuvaus

    Luokkaa käytetään apuna nostettaessa poikkeus, jos SQL kysely kantaan ei onnistu.

    4.4.28.2 Toiminnot

    public ConnectDataException()

    ConnectDataException -luokan konstruktori, joka suorittaa Exception-luokan konstruktorin.

    public ConnectDataException(String text)

    ConnectDataException-luokan konstruktori, joka suorittaa Exception-luokan konstruktorin.

    text - virheteksti

    4.5 Javadoc-dokumentit

    Javadoc:lla tehdyt dokumentit löytyvät osoitteesta http://www.cs.helsinki.fi/group/wenla/sorsat/valmiit/tree.html

    5 Rajoitteet toteutukselle

    5.1 Noudatettavat standardit

    Projektin dokumentointi tehdään ensin Word97-muodossa, mutta lopullinen versio talletetaan myös HTML-muodossa.

    5.2 Ohjelmointikielet ja käyttöjärjestelmät

    Lähdekoodissa käytettiin Java 1.1:ssä määriteltyjä ominaisuuksia. Lähdekoodi kommentoitiin siten, että siitä voitiin generoida javadoc-dokumentaatio.

    5.3 Muut tarvittavat apuohjelmat

    Projektissa olisi tarvittu esimerkkiohjelman teossa servlet-runneria, mutta laitoksella ei saatu toimimaan yhtään runneria. Tämän takia testaukset on tehty normaaleina sovellutuksina. Tämä tarkoittaa sitä, että sivuista on muodostettu normaalit HTML-sivut, jotka on tulostettu tiedostoon.

    5.4 Arvio ja toteuma toteutuksen koosta

    Page-luokkaan tulee arviolta 400 koodiriviä. Tämä päälle tulee vielä kommentit eli kokonaisrivimäärä saattaa nousta lähemmäksi 700 riviä. FramePage-luokka on pienempi. Pelkkä ohjelma koodi vie arviolta 100 riviä ja kommenttien kanssa 200 riviä. Cell-, Column-, Form- ja Table-luokissa rivejä tulee olemaan arviolta 200 - 250. Loppuihin 17 luokkaan tulee koodia arviolta 700 - 900 riviä.

    Loppujen lopuksi Page-luokkaan tuli koodirivejä 1030. FramePage-luokkaan rivejä kertyi 280. Poikkeus luokkiin käytettiin 140 riviä. HTMLElement ja siitä periytyvät kentät veivät 1300 riviä. Form-, Table-, Column- ja TableData-luokkiin käytettiin 1050 riviä. Yhteensä 3800 riviä.

    5.5 Ohjelmointityyli

    Ohjelmointityyli on kuvattu Java-tyylioppaassa (http://www.cs.helsinki.fi/group/wenla/javatyyli.html).