Nämä korjaukset ovat luokkien ohjelmoijien erikseen
ilmoittamia ja kirjaamia korjauksia integrointivaiheessa
löydettyihin bugeihin.
************************************************************
TreeManager:
************************************************************
1.2.10
Kuvaus: Kun ensin valitaan pääkirjoitus ja sitten corrected DTD, tulee
"Can't get reference to body.content" ja
konsolille tulostuu nullpoint exception, sekä
Body.getSelectedArea: rivi 628 ja Body. drawNode: rivi 386.
Virhe saatu toistettua useita kertoja.
Havainto: EventHandlerit
Vakavuus: 1
Luokittelu: Body ja TreeManager
Korjaus: Ei mikään ihme, sillä TreeManagerille annetaan (väärä)
kolumni-DTD, joka on liian löysä. Virhe on UIManagerissa tai
sitten tietokannassa on kaksi väärää DTD:tä.
1.3.
Kuvaus: Tyhjän artikkelipohjan tallennus. Annettu vain kuvaus Save
As-ikkunassa, corrected DTD oli artikkelipohjana.
Havainto: Nul-artikkeli tallentui. Save tehty sekä Tool Barista että
Filestä. Load-tilanteessa käyttöliittymä menee sekaisin,
TreeManager heittää nullpointerexceptionia, getActive Buttons:
rivi 509. Kaataa niin kauan kuin body on tyhjä, riippumatta
muista tyhjistä kentistä.
Vakavuus: 1
Luokittelu: TreeManager
Korjaus: 17.4. body.content-elementin lapsivektori oli null.
Nyt se ei voi olla null:
public boolean[] getActiveButtons(AreaSelection s) {
...
if (old == null) {
parent.setChildren(new Vector(0));
old = parent.getChildren();
}
1.3
Kuvaus: Tyhjän artikkelipohjan tallennus. Annettu vain kuvaus Save
As-ikkunassa, column DTD oli artikkelipohjana. Vatii, että
headers-kentissäkin on oltava bodyn lisäksi jotain.
Havainto: Nul-artikkeli tallentui. Save tehty sekä Tool Barista että
Filestä. Load-tilanteessa tuli asiallinen virheilmoitus
"Document tree could not be created. Reason: The document
could not not loaded due to its invalidity." Käyttöliitymä
ja softa pysyi kunnossa. Column DTD:n tallennus/lataus ei tuota
validia lopputuosta!!! Samalla view source lopettaa alkurivien
jälkeen DOCTYPEEN, artikkeli oli kunnossa tallennustilanteessa ja
tuntui olevan kunnossa myös latauksen alussa. UIManagerin
setHeaderValues metodi heittää keskeytyksen (Header values cuold
not be saved XML-tree).
Vakavuus: 1
Luokittelu: TreeManager
Korjaus: Ongelma johtuu kolumni-dtd:stä, joka on liian löysä.
DTD päivitetään.
1.4.8
Kuvaus: Tekstiä ilman kappaletta ei saada aikaan, mutta kun pelkät
headersit oli ja body tyhjä. Tällöin body content alkumerkki jää
lisäämättä puuhun.
Havainto: Ohjelma katuu invalidiin puuhun.
toString() pitää huolehtia, että puun tulee olla validi.
Vakavuus: 1
Luokittelu: TreeManager
Korjaus: Itse asiassa ohjelma ei kaadu ja näytettiin XML-tyylinen
tyhjä elementti: "
". Ei korjattavaa.
2.5.5
Kuvaus: Artikkelin ainoan kappaleen tappaminen cutilla, tekee xlm-sivun
mukaan puusta invaliditin poistamalla body.contentin.
Vakavuus: 1
Luokittelu: TreeManager ja Body
Korjaus: Itse asiassa ohjelma ei kaadu ja näytettiin XML-tyylinen
tyhjä elementti: "". Ei korjattavaa.
Kuvaus: Hyperlinkki, quote ja special sallivat mitä tahansa inline-
elementtejä lisättävän sisään ensimmäisessä kerroksessa.
Onko näin NITF:n mukaan? Samat elementit sallivat,
esim. ensin hyperlinkki, äärettömän monta quote,
hyperlinkkiä ja specialia niin, että viimeisimpään tasoon
saakka voi lisätä kaikkia muitakin inline-elementtejä.
Onko näin NITF:n mukaan?
Luokittelu: TreeManager
Korjaus: DTD sallii kaiken tuon. Tässä kaivataan lisäominaisuutta,
jota ei toteuteta.
2.18
Kuvaus: Personille lisättän value=vesipää ja idsrc=.
Havainto: Ikkuna ei kuole ja tulee ClassCastException: PCData paikassa
Body.ActionPerformed rivillä 1143. Samoin tapahtuu kun tyhjillä
arvoilla painetaa ok. Kirjoitetu arvot ei myöskään tallennu
puuhun xml-sivun mukaan. Näyttää olevan muiden attribuutti-
ikkunoiden ongelma. Muöskään kantaan tallennettujen
attribuuttien ylläpito ei onnistu.
Vakavuus: 2
Luokittelu: TreeManager
Korjaus: Käytettiin väärää muuttujaa. Korjattu 17.4.
Nyt:
Attribute[] oldAtts = ((Element)clickedNode).getAttributes();
Oli:
Attribute[] oldAtts = ((Element)currentNode).getAttributes();
**********************************************************
Body:
**********************************************************
*-----*
Kuvaus: Rivitysalgoritmin? mahdollinen bugi: kursorin epämääräinen
siirtyminen isoja tekstilohkokja kirjoitettaessa. Rivin lopussa
se hyppää joko jollekin seuraavalle riville tai blockin loppuun.
Jossain vaiheessa hyppäys taapahtuu myösss seuraavaan blockiin.
Mitä enemmän on inline-elemetin osia mukana kursorin edellä,
sitä varmemmin alkaa kursorin hyppääminen. Suoritusongelma?
Satunnaisesti tapahtuu seuraavaa: Kun ollaan rivin lopussa,
kursori alkaa mennä rivejä eteenpäin, mutta teksti kirjoittuu
silti oikeaan kohtaan, ts. kursori kadottaa paikkansa mutta itse
kirjoituskohta säilyttää paikkaansa.
Vakavuus: 2
Luokittelu: Body
-----------
Tähän bugiin ei ole korjausta.
Bugi saadaan aikaan jos kirjoitetaan hyvin nopeasti, jolloin
tapahtumankäsittely sekoaa jotenkin.
*-----*
Kuvaus: Aina kun mennään block-alueen ulkopuolelle ja painetaan
esim. Enter, muitaa jokin osa vanhan kursoripaikan ja tekee
esim. uuden paragrafin.
Havainto: Ulkopuolella oltaessa ei nollata kursorin paikkaa.
Vakavuus: 1
Luokittelu Body
----------
Korjattu: Enter ei enää vaikuta jos ollaan block-tagin päällä
*-----*
2.2.14
Kuvaus: Kun blockin aluista otetaan mukaan blockin aloitusmerkki ja osa
tekstiä inline-elementteineen, cut ei onnistu, joskus tekee
paste ja joskus poistaa osan. Olettavasti muistaa vanhan
kursorin paikan.
Huom! blockin lopulle tehtäessä sama testi,
näitä ongelmia ei esiinny.
Havainto: Kursorin sijoittaminen blockin ulkopuolelle aiheuttaa
epämääräistä toimintaa. Kts. 2.5.5 kohta.
Vakavuus: 1
Luokittelu: Body
----------
Korjattu samalla kuin ylläoleva ongelmakin. Korjattu laittamalla
drawImage-metodiin, joka paikkaan jossa currentNodea muutetaan käky jolla
myös oldNodea muutetaan.
*-----*
2.5.5
Kuvaus: Kun ensin jaetaan kappale painamalla Enter ja sitten kursori
näpätään jälkimmäisen kallapeen block-kuvan jälkeen
ja painetaa uudelleen Enter. Koodissa tulee error
StringIndexOutOfBoundsExpection: String index out of range: -1
tapahtuu Body.keyRelease rivillä 963 (StringBuffer indeksivirhe)
Huom. tässä vaiheessa ruutua ei piirretä uudelleen, mutta kun
siirrytään tekemään jotakin, piirretään uudelleen ruutu
lisättynä uudella paragrafilla. Yleiseti ottaen ongelma lienee,
että ohjelma muistaa vanha kursorin paikka ja tekee toiminnan
sinne
silloin, kun ollaan sallitun alueen ulkopuolella. Toiminta
tapahtuu vasta kun mennään seuraavaan vaiheesee.
Vakavuus: 2
Luokittelu: Body
-----------
Korjattu. Samalla korjattu myös kursorin karkailu ongelma
***********************************************************
UIManager
***********************************************************
Virhe:
1.2
Kuvaus: Artikkelia ladattaessa writers, alias ja gategoriat eivät tule
artikkelin mukaan. Aliaksen hakua ei ole toteutettu.
Havainto: Oletusarvon mukaan tuli tai jos muutettiin sen mukaan
Vakavuus: 2
Luokittelu: UIManager
Korjaus:
Alkuperäisessä koodissa asiaan ei olettu ollenkaan kantaa, vaan indeksit laitettiin
luodaan 0:aan. Korjauksena ohjelmaan luotiin private metodi
setIPTCCombos(String[] iptcVal), joka asetettaa parametrinä saamansa taulukon
mukaan combobox:ien arvot vastaamaan ladatun artikkelin tilannetta, tai
virhetilanteissa 1. arvot taulukosta.
Virhe:
1.4.1
Kuvaus : tehtiin artikkeli kaikkine tietoineen, tallennettiin ilman
kuvausta. Ensin ladattiin tyhjä pohja. Sitten ladattiin artikkeli,
jolloin puuttuivat headersit. Käytettiin artikkelissa
Corrected DTD.
Havainto: Ei tallentanut sitä puuhun, xml-tiedot olivat tyhjiä, tapahtui
kaksi kertaa, mutta ei löydetty tapaa toistaa virhettä. Virhe ei
tapahdu koskaan kahta kertaa perätysten. Huom! virhe ehkä johtunee
setHeadersValuesin kutsumattomuudesta näissä tilanteissa.
Vakavuus. 2
Luokittelu: UIManage/TreeManager
Lisähavainto korjausvaiheessa: virhe saadaan aina aikaan seuraavasti:
täytetään Header-tiedot, ja sitten vasta bodyyn tavaraa. View Source
ilmentää, että header tiedot eivät mene puuhun. Vasta kun bodyn täytön
jälkeen mennään header-tietojen johonkin kenttään, ja tullaan sieltä
pois, niin tapahtumakäsittelijä toitaa tiedot puuhun (joka voidaan
todentaa tarkastamalla puu). Valitettavasti tätäkään toimintaa
ei saa aikaan jokaisella kerralla.
Lisälisähavainto:
Koodissa on pieni looginen virhe. Arvot kyllä asetetaan UIManagerin
sisäisiin muuttujaan (taulukkoon) mutta niitä ei varsinaisesti aseteta
puuhun. Tämä siis aiheuttaa sen, että arvot eivät välttämättä menekään
puuhun.
Korjaus:
metodin setHeaderData-metodin lopuksi lisätty flush()-metodin kutsu,
joka tallettaa arvot puuhun. Näin pakotetaan sisäisissä muuttujissa
olevat arvot tallettumaan.
Virhe:
1.6
Kuvaus: Päivämäärässä menee kaikki läpi.
Havainto: Tallentuu sekä puuhun että tietokantaan, tulee myös latauksen
jälkeen artikkelin pvm:ksi.
Vakavuus: 3
Luokittelu: UIManager
Korjaus:
Ennen tallennusta tarkastetaan päivämäärän muoto ja hyvyys yleisellä
tasolla. Jos päivämäärä ei mene tarkastuksen läpi, laitetaan siihen
nykyinen päivämäärä. Tämä korjaus oli vain osittainen, eikä läheskään
kattava. Siitä puuttuu mm. annetun päivämäärän järkevyystarkastus.