1 Johdanto

1.1 Käyttötarkoitus

Projektissa tuotettiin vaihtoehtoympäristö informaatiojärjestelmän harjoitustyön tekemiseen, nykyisen Oracle Web Server ympäristön tilalle ja se perustuu laitoksen omaan tietokantapalvelimeen. Vaihtoehtoympäristöön on toteutettu komponentteja ja apuohjelmia, joiden tarkoituksena on helpottaa harjoitustyön tekemistä ja vähentää opeteltavien asioiden määrää. Komponentit ja apuohjelmat on koottu Java-kieliseen kirjastoon nimeltään wenla, mitä harjoitustyön tekijä voi käyttää hyväkseen. Kirjastofunktioiden avulla käyttäjä tuottaa www-palvelimelle servlettejä, jotka tuottavat HTML-muotoisia sivuja käyttäjän www-selaimelle.

1.2 Oletettu käyttäjäprofiili ja käyttötapa

Kehitettävän ympäristön käyttäjät ovat pääasiassa opiskelijoita, joten ympäristöä käytetään ainakin Informaatiojärjestelmien harjoitustyön yhteydessä. Periaatteessa ympäristöä voi käyttää kuka tahansa, joka kokee tarjottavat komponentit ja apuohjelmat hyödylliseksi omaan tarkoitukseensa.

1.3 Käyttöympäristö

Järjestelmä on tarkoitettu toimimaan kaikissa ympäristöissä, joihin on saatavilla JDK 1.1.5:sta vastaava ympäristö. Käyttö tapahtuu WWW-selaimen kautta.

1.4 Viitteet muihin käytössä tarvittaviin dokumentteihin

Javadoc-dokumentit, jotka auttavat Wenla pakkauksen luokkien käytössä, löytyvät osoitteesta:

http://www.cs.helsinki.fi/group/wenla/sorsat/valmiit/tree.html

1.5 Ohjeessa käytetyt lyhenteet

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

2. Yleiset rajoitteet

Kirjasto on tarkoitettu avuksi käyttäjille, jotka tekevät www-muotoisia tietokantaohjelmia. Kirjasto sijoittuu fyysisesti www -palvelimelle. Laitteistorajoitukset muodostuvat eri ympäristöjen Java-toteutusten mahdollisesti aiheuttamista rajoituksista. Nämä eivät ole projektiryhmän hallittavissa.

3. Takuut ja sitoumukset

Emme takaa mitään.

4. Tuotteen käyttö

4.1 Wenla-pakkauksen käyttö

Jotta ohjelmassa pystyisi käyttämään Wenla-pakkauksen kirjastoluokkia, täytyy pakkaus tuoda mukaan samalla tavalla kuin Java-kirjastoluokat, eli ohjelman alkuun kirjoitetaan komento:

import wenla.*;

Myös CLASSPATH : iin täytyy liittää hakemiston polku, josta WENLA - pakkaus löytyy.

Seuraavassa esitetään esimerkki kirjaston tuomisesta ohjelmaan.

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"));

p.printPage();

}

}

4.2 Pikaopas

Moduuleja eli luokkia kirjastossa on 26. Alempana on selitetty tarkemmin mitä mikäkin kirjastoluokka pitää sisällään.

Page - luokka

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

Page(PrintStream outstream) - Page-luokan konstruktori, joka muodostaa HTML-sivun alkutekstejä.

Page(PrintStream outstream, String title, String language) - Page-luokan konstruktori, joka muodostaa HTML-sivun alkutekstejä.

public void addHeadMaterial(String text) - Metodilla voi määritellä sivulle esimerkiksi taustakuvan ja tekstin värin.

public void addBackImage(String url) - Metodilla voi määritellä sivulle taustakuvan.

public void addBackColor(String color) - Metodilla voi määritellä sivulle taustavärin.

public void addTextColor(String color) - Metodilla voi määritellä sivulle tekstin värin.

public void addLinkColor(String color) - Metodilla voi määritellä sivulla olevien linkkien värin.

public void addUsedLinkColor(String color) - Metodilla voi määritellä sivulla olevien, käytettyjen linkkien värin.

public void addToBody(String text) - Metodilla voi lisätä sivulle esimerkiksi onclick-funktioiden kutsuja.

public void addObject(Form form) - Metodilla voi kytkeä lomakkeet sivuun.

public void addHeader(int level, String text) - Määrittelee otsikkotekstin.

public void addBoldText(String text) - Määrittelee lihavoidun tekstin.

public void addItalicText(String text) -Määrittelee kursivoidun tekstin.

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.

public void endFont() - Lopettaa tekstin koon, värin ja kirjasinlajin muutoksen.

public void addFontColor(String color) - Määrittelee tekstin värin.

public void addFontFace(String face) - Määrittelee tekstin lajin.

public void addFontSize(String size) - Määrittelee tekstin koon.

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.

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.

static void thrower(String text) throws InvalidSQL - Metodia käytetään apuna SQL-virheiden nostamiseen.

public void addClock(boolean java) - Lisää joko käyvän tai muuttumattoman kellon.

public void addDate() - Lisää päivämäärän muodossa pp.kk.vvvv.

public void addLink(String text, String url) - Määrittelee linkin.

public void addImageLink(String imageurl, int border, String url) -Määrittelee kuvan linkiksi.

public void addFrameLink(String url, String target, String text) - Määrittelee linkin toiseen kehykseen.

public void addComment(String text) - Lisää kommentin.

public void addFreeText(String text) - Lisää vapaamuotoisen tekstin.

public void addEmail(String url, String text) - Lisää sähköposti-linkin.

public void addJavaScript(String name, String javas) - Metodilla voi määritellä sivulle omia javascript-funktioita.

private void findJavaScript() - Hakee tarvittavat tarkastusfunktiot sivulle.

public void addErrorMessage(String message) - Metodilla voi määritellä sivulle omia javascript-funktioita.

public void getErrorMessages() - Lisää sivulle käyttäjän määrittelemät virheilmoitukset.

public void printPage() - Tulostaa muodostetun sivun näytölle.

FramePage-luokka

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.

public FramePage(PrintStream outstream, String title) - FramePage-luokan konstruktori.

public void hFrameset(String up, String down, String border, boolean frameborder) - Jakaa sivun vaakatasossa kahteen kehykseen.

public void vFrameset(String left, String right, String border, boolean frameborder) - Jakaa sivun pystysuunnassa kahteen kehykseen.

public void frameInclude(String src, String name, boolean frameborder, String color) - Määrittelee kehyksen sisällön.

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ä.

public void addToFrame(String text) - Metodilla voi lisätä viimeiseksi frameInclude-metodilla luotuun kehykseen määrityksiä.

public void addToFrameset(String text) - Metodilla voi lisätä viimeiseksi hFrameset- tai vFrameset-metodilla jaettuun osaan määrityksiä.

public void printFramePage() - Tulostaa kehyssivun.

TableData-luokka

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

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.

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).

public void copyRow(int oldRowNum, int newRowNum) - Kopioidaan TableData -olion rivi toiseen riviin. Metodi lisää tarvittaessa uusia rivejä taulukkoon.

Columns-luokka

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.

public Column() - Column-luokan konstruktori. Alustaa kaikki luokan muuttujat.

JavaSClass-luokka

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.

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.

public String getScript(int index) - Funktio, jonka avulla voidaan kysyä JavaScript koodi halutulla indeksillä.

HTMLElement-luokka

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.

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.

public void getValidateFunctions(JavaSClass scriptClass) - Metodi, joka palauttaa vastauksena elementtiin liittyvän JavaScript koodin tunnisteen. Luokat, joihin ei kuulu JavaScript koodia eivät lisää parametrinä annettavaan scriptClass olioon mitään.

public void connectData(ResultSet rs) - Funktio, jonka avulla kenttään kytketään kyselystä tiedot.

public Object clone() - Funktio, jolla voidaan kopioida olio. Palauttaa oliosta luodun kopion.

ButtonGroup-luokka

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.

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.

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.

public Object clone() - Kopioi nappiryhmän. Kopioi kaikki nappiryhmän napit. Palauttaa nappiryhmän kopion.

DatabaseField-luokka

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

public void connectData(ResultSet rs) - Funktio, jonka avulla kenttään kytketään kyselystä tiedot. Jos tiedon kytkeminen onnistuu laitetaan fConnect muuttujan arvoksi TRUE.

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.

DirectLinkField-luokka

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

public DirectLinkField(String formFieldName, String linkName) -Suoralinkkikentän luova muodostin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt abstrakti metodi, joka huolehtii suoranlinkkikentän tulostamisesta HTML-komennoilla lomakkeelle.

public Object clone() - Kopioi suoranlinkkikentän Palauttaa suoranlinkkikentän kopion.

UnDirectLinkField-luokka

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

public UnDirectLinkField(String formFieldName,String databaseFieldName) Epäsuoranlinkkikentän luova muodostin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt metodi, joka huolehtii epäsuoranlinkkikentän tulostamisesta HTML-komennoilla lomakkeelle.

public Object clone() - Kopioi epäsuoranlinkkikentän Palauttaa epäsuoranlinkkikentän kopion.

DropDownField-luokka

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.

public DropDownField(String formFieldName,String databaseFieldName) - Alasvetovalikon luova muodostin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt abstrakti metodi, joka huolehtii alasvetovalikon tulostamisesta HTML-komennoilla lomakkeelle.

public void addAlternative(String name) - Lisää alasvetovalikon listaan vaihtoehdon.

public Object clone() - Kopioi alasvetovalikon, kopioi myös alasvetovalikkoon liittyvän vaihtoehto listan. Palauttaa alasvetovalikon kopion.

HiddenField-luokka

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

public HiddenField(String formFieldName,String databaseFieldName) - Piilokentän luova muodostin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt metodi, joka huolehtii piilokentän tulostamisesta HTML-komennoilla lomakkeelle.

public Object clone() - Kopioi piilokentän. Palauttaa piilokentän kopion.

MemoField-luokka

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

public MemoField(String formFieldName,String databaseFieldName,int rows,int cols) - Memokentän luova muodostin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt abstrakti metodi, joka huolehtii memokentän tulostamisesta HTML-komennoilla lomakkeelle.

public Object clone() - Kopioi memokentän. Palauttaa memokentän kopion.

RadioGroup-luokka

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.

public RadioGroup(String formFieldName,String databaseFieldName) -Valintapainikeryhmän luova muodostin.

public void draw(PrintStream stream) -Yliajetaan periytynyt abstrakti metodi, joka huolehtii valintapainikkeiden tulostamisesta HTML-komennoilla lomakkeelle.

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.

public void addButton(String name, String value) - Metodi, jonka avulla valintapainikeryhmään voidaan lisätä uusi valintapainike.

public void setDefault(String name) - Metodi, jonka avulla voidaan merkitä jokin valintapainike valituksi.

public void connectData(ResultSet rs) - Syrjäytetään DatabaseField luokan connectData metodi, koska RadioGroupissa kyselystä tuleva data pitää vaikuttaa valintapainikeryhmän valintaan.

public Object clone() - Kopioi valintapainikeryhmän. Palauttaa valintapainikeryhmän kopio olion.

TextField-luokka

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

public TextField(String formFieldName, String databaseFieldName, int maxLength, int size) - Tekstikentän luova 1. muodostin.

public TextField() -Tekstikentän luova 2. muodostin. Luo tekstikentän ilman mitään parametrejä.

public TextField(String formFieldName,String databaseFieldName) - Tekstikentän luova 3. muodostin. Kentästä käytetään oletuspituuksia.

public void draw(PrintStream stream) - Syrjäytetään periytynyt abstrakti metodi, joka huolehtii tekstikentän tulostamisesta HTML-komennoilla lomakkeelle.

public Object clone() - Kopioi tekstikentän kaikkine pituus ja muine määritteineen. Palauttaa tekstikentän kopion.

PasswordField-luokka

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

public PasswordField(String formFieldName, String databaseFieldName, int maxLength, int size) - Salasanakentän luova muodostin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt metodi, joka huolehtii salasanakentän tulostamisesta HTML-komennoilla lomakkeelle.

public Object clone() - Kopioi salasanakentän. Palauttaa salasanakentän kopion.

ValidateField-luokka

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

abstract String addCode() - Metodi, jolla voidaan liittää haluttu JavaScript tarkastuskoodi kenttään.

NumberField-luokka

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.

public NumberField(String formFieldName,String databaseFieldName, String minNumber, String maxNumber,int maxLength) - Numerokentän luova muodostin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt metodi, joka huolehtii numerokentän tulostamisesta HTML-komennoilla lomakkeelle.

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.

ENumField-luokka

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.

public ENumField(String formFieldName, String databaseFieldName, int maxLength, int size) - Luettelokentän luova muodostin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt metodi, joka huolehtii luettelokentän tulostamisesta HTML-komennoilla lomakkeelle.

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.

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.

SSNField-luokka

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.

public SSNField(String formFieldName, String databaseFieldName) - Henkilötunnuskentän luova muodostin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt metodi, joka huolehtii henkilötunnuskentän tulostamisesta HTML-komennoilla lomakkeelle.

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.

DateField-luokka

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.

public DateField(String formFieldName, String databaseFieldName, String minDate, String maxDate) - Päiväyskentän luova muodostin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt metodi, joka huolehtii päivämääräkentän tulostamisesta HTML-komennoilla lomakkeelle.

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.

PromptField-luokka

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

public PromptField(String Prompt) - Selitekentän luova muodostin. Parametrinä menee selite.

public PromptField(databaseField field) - Selitekentän luova 2. muodostin. Käytetään databaseField kentistä tehtäessä uusia kenttiä readonly formiin.

public void draw(PrintStream stream) - Syrjäytetään periytynyt abstrakti metodi, joka huolehtii selitekentän tulostuksesta.

public Object clone() - Kopioi selitekentän. Palauttaa selitekentän kopion.

Form-luokka

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

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. Parametrinä tietokantataulu, josta lomakkeelle tulevat kentät haetaan.

public Form(String name, String adressUrl, String metod, boolean readOnlyParam) - Form-luokan 2.konstruktori.

public void addHeading(String formHeading) - Lisää lomakkeelle otsikon.

public void addEndText(boolean addDate, String endText) - Lisää lomakkeelle lopputekstin.

public void addObject(Object element) - Lisää lomakkeelle elementin.

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.

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.

public void getValidateFunctions(JavaSClass scriptClass) - Kutsuu kaikkia lomakkeeseen liittyviä HTMLElementistä periytyviä luokkia ja hakee niiltä JavaScript koodit.

Table-luokka

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

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.

public void defineCell(int columnNum,int rowNum,Object newField) - Määrittelee taulukkoon uuden solun.

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.

public void changeTableTextFont(String tableTextFont, String tableTextSize) - Uudelleenmäärittelee taulukon tekstifontit.

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.

public void changeColumnHeading(int colNum, String columnHeading) - Vaihtaa sarakkeen oletusarvoisen otsikon parametrinä antamaan otsikkoon.

public void changeColumnBGColor(int colNum,String columnColor) - Vaihtaa sarakkeen taustavärin.

public void changeColumnBorderColor(int colNum, String columnColor) - Vaihtaa sarakkeen reunavärin.

public void changeColumnAlign(int colNum, String columnAlign) - Vaihtaa sarakkeen tietojen keskityksen.

public void changeColumnWrap(int colNum, boolean columnWrap) - Kertoo voidaanko sarakkeeseen tulevaa tekstiä rivittää useammalle riville. Oletusarvoisesti ei voida.

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.

public void getValidateFunctions(JavaSClass scriptClass) - Kutsuu kaikkia taulukkoon liittyviä HTMLElementistä periytyviä luokkia ja hakee niiltä JavaScript koodit.

ErrorMessage-luokka

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.

public ErrorMessage() - ErrorMessage-luokan konstruktori.

public void addEMessage(String text) - Metodilla voi lisätä luokkaan käyttäjän määrittelemiä virheilmoituksia.

public String getEMessage(int i) - Metodilla haetaan lisätyt virheilmoitukset.

InvalidSQL-luokka

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

public InvalidSQL() - InvalidSQL-luokan konstruktori, joka suorittaa SQLException-luokan konstruktorin.

public InvalidSQL(String text) - InvalidSQL-luokan konstruktori, joka suorittaa SQLException-luokan konstruktorin.

4.3 Ohjeet toimintojen suorittamiseksi

Kirjaston avulla tuotetaan ohjelmia, jotka tuottavat HTML-muotoisia sivuja käyttäjän WWW-selaimelle. Tarkoituksena on, että käyttäjä määrittele ohjelmassaan ensimmäiseksi sivun (page), johon kytketään lomake (form) ja lomakkeeseen kytketään taulukko (table).

Sivun määrittelemiseen käytetään luokkia Page ja FramePage, sekä niiden metodeja, joiden avulla pystyy määrittelemään sivun ulkoasun (kehykset, taustavärin, tekstifontit ja -värit, linkit jne.).

Page-luokka sisältää kaksi konstruktoria, jotka tuottavat HTML-sivun alussa tarvittavia määreitä. addObject- metodi kytkee lomakkeen sivulle. Sivun saa tulostettu näytölle tai tiedostoon printPage-metodilla.

FramePage-luokan avulla käyttäjä voi luoda sivuja, jotka koostuvat kehyksistä. Kehysten sisältönä voi olla joko ohjelma tai HTML-sivu. Sivujen , jotka kehyksiin haetaan, on oltava olemassa, koska framePage-luokan avulla ei voi luoda uusia perussivuja.

Seuraavaksi esimerkki, jossa on käytetty Page-luokan metodeja. Jos ohjelmalle annetaan parametreja, sivu tulostetaan tiedostoon esimsivu1.htm. Jos parametreja ei anneta, sivu tulostetaan näytölle.

import java.io.*;

import wenla.*;

public class Sivu1 {

public static void main(String[] args)

{

try

{

PrintStream tulos;

if (args.length > 0)

{

tulos = new PrintStream(new FileOutputStream("esimsivu1.htm"));

}

else

{

tulos = System.out;

}

wenla.Page p1 = new Page(tulos);

p1.addHeader(1,"Esimerkkisivu");

p1.addBackColor("silver");

p1.addItalic();

p1.addFreeText("tämä on vapaata tekstiä");

p1.endItalic();

p1.addNewRow();

p1.addItalicText("kursivoitu teksti");

p1.addNewParagraph();

p1.addFont("blue", 2, "courier");

p1.addFreeText("sinistä tekstiä");

p1.addFontColor("red");

p1.addTextColor("blue");

p1.addFontFace("arial");

p1.addFreeText("arialilla");

p1.addFontSize("6");

p1.addFreeText("isoa tekstiä");

p1.addFontColor("black");

p1.addNewRow();

p1.addLink("wenla", "http://www.cs.helsinki.fi/group/wenla");

p1.addLinkColor("#667766");

p1.addUsedLinkColor("red");

p1.addComment("lisätään vielä kommentti");

p1.addBold();

p1.addLine();

p1.addDate();

p1.addClock(false);

p1.printPage();

}

catch (InvalidParameters e)

{

System.out.println(e);

}

catch (Exception e)

{

System.out.println("main: "+e);

}

}

}

Kuva 1. Esimerkki Page-luokan käytöstä.

 

Form-luokan metodeita käyttämällä pystyy määrittelemään sivulle HTML-muotoisen lomakkeen, lisäämään lomakkeelle otsikon ja lopputekstiä, sekä kytkemään tietokantakyselyn tulosrivit lomakkeeseen.

addObject-metodin avulla lisätään lomakkeelle elementit (taulukko, painikkeet jne.) connectData-metodi kytkee tietokantakyselystä tulevan datan kenttiin.

Table-luokan tarjoamien metodien avulla pystytään määrittelemään HTML-muotoiselle lomakkeelle upotettava taulukko ja määrittelemään taulukkokohtaiset tekstifontit, tekstin sijainnin jne. Taulukko voi olla lista tai lomakkeen muotoinen. Taulu voi lisäksi olla kirjoitussuojattu (readOnly). Taulukon ulkomuoto (lista tai lomake) annetaan parametrinä Table-luokan konstruktorille.

DefineCell-metodilla määritellään taulukon solut. Parametreina annetaan taulukon sarakkeen ja rivin numerot, sekä soluun sijoitettava kenttä. Jokainen taulukon solu täytyy määritellä erikseen. Esim. määrittelyllä

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

taulukon 1. rivillä 1. sarakkessa olevaan soluun määritellään PromptField-kenttä. Soluihin voi määritellä HTML-muotoisia kenttiä, jotka ovat kuvattuna aikaisemmin tässä dokumentissa, sekä Javadoc-dokumentissa.

Mikäli lomakkeelle halutaan lomakkeen-muotoinen taulukko, määritellään se seuraavasti:

Table t1 = new Table(false,"",1,"","","100","center","form");

Parametri "form" kertoo, että taulukko näytetään lomakkeen muotoisena. Komennolla

f1.addObject(t1);

kytketään taulukko HTML-lomakkeeseen.

Listamuotoisen taulukon määrittely:

Table t1 = new Table(false,"",1,"","","100","center","list");

Parametri "list" kertoo, että taulukko näytetään lomakkeen muotoisena. Listamuotoisen taulukon tapauksessa määritellään vaan taulukon ensimmäisen rivin solut, toiset rivit kopioituvat automaattisesti niin monta kertaa, kun tietokantakyselyntuloksessa on rivejä.

Seuraavaksi esimerkki, jossa on määritelty lomake-muotoinen taulukko, käyttäen Page, Form ja Table luokkien metodeita.

stream = new PrintStream(new FileOutputStream("EsimSivu2.htm"));

p = new Page(stream);

p.addFontColor("blue");

p.addBackColor("silver");

p.addHeader(1,"Esimerkkisivu");

p.addLine();

f = new Form("lista","http:\\www.jotain.fi", "post", true);

p.addObject(f);

t = new Table(false,"",1,"","","100","center","form");

f.addObject(t);

t.defineCell(0,1,new PromptField("Etunimi:"));

t.defineCell(1,1,new TextField("Nimi","Etunimi",20,20));

t.defineCell(0,2,new PromptField("Sukunimi:"));

t.defineCell(1,2,new TextField("Sukunimi","Sukunimi",20,20));

t.defineCell(0,2,new PromptField("Syntymäpäivä:"));

t.defineCell(1,2,new TextField("Syntypaiva","Syntymapaiva",12,12));

p.addLine();

p.addDate();

Kuva 2. Esimerkki lomake- muotoisesta taulukosta.

Seuraavan esimerkin koodi on muuten edellisen esimerkkikoodin kaltainen, paitsi että tietokantakyselyntulos näytetään lista muotoisena taulukkona ja määritellään vaan taulukon ensimmäinen rivi.

stream = new PrintStream(new FileOutputStream("EsimSivu2.htm"));

p = new Page(stream);

p.addFontColor("blue");

p.addBackColor("silver");

p.addHeader(1,"Esimerkkisivu");

p.addLine();

f = new Form("lista","http:\\www.jotain.fi", "post", true);

p.addObject(f);

t = new Table(false,"",1,"","","100","center","list");

f.addObject(t);

t.defineCell(0,1,new TextField("Nimi","Etunimi",20,20));

t.defineCell(1,1,new TextField("Sukunimi","Sukunimi",20,20));

t.defineCell(2,1,new TextField("Syntypaiva","Syntymapaiva",12,12));

p.addLine();

p.addDate();

Kuva 3. Esimerkki lista muotoisesta taulukosta.

5. Virheilmoitukset

TableData-luokan metodi getElement generoi poikkeuksen InvalidParameters, jos annetun solun sijaintikoordinaatit virheelliset.

TableData-luokan metodi addElement aiheuttaa poikkeuksen InvalidParameters, jos annetun solun sijaintikoordinaatit virheelliset.

TableData-luokan metodi copyRow aiheuttaa poikkeuksen InvalidParameters, jos annetun rivin indeksi virheellinen (rajat ovat 0 <= oldRowNum < fNumRows ja 0<= newRowNum < fNumRows + 10).

HTMLElement-luokan metodi connectData aiheuttaa ConnectDataException poikkeuksen, jos tietojen kytkeminen kenttään ei onnistu .

DatabaseField-luokan metodi connectData aiheuttaa ConnectDataException poikkeuksen, jos tietojen kytkeminen kenttään ei onnistu.

Table-luokan metodit changeColumnHeading, changeColumnBorderColor, changeColumnBGColor, changeColumnAlign ja changeColumnWrap aiheuttavat poikkeuksen InvalidParameters, jos annettu sarakkeen yksilöivä parametri on virheellinen.

Table-luokan metodi connectData aiheuttaa poikkeuksen ConnectDataException, jos listamuotoiseen taulukkoon tietojen kytkentä ei onnistu.