H O G ES C H O O L Academiejaar 2003 – 2004
G E NT
Departement Industriële Wetenschappen BME - CTL Schoonmeersstraat 52 9000 Gent
Softwarepakket voor het catalogeren en determineren van fruitsoorten
Eindwerk voorgedragen tot het behalen van het diploma van
INDUSTRIEEL INGENIEUR INFORMATICA Joke LAUKENS Liesbeth LYSSENS Promotor Hogeschool Gent: Promotor Nationale Boomgaarden Stichting:
Ann VAN OVERBERGE Ludo ROYEN
Woord vooraf
Wij willen onze dank betuigen aan alle mensen die ons op één of andere manier hielpen met ons eindwerk. Vooreerst willen we Anny Laczewny en Katleen Pipeleers, onze contactpersonen bij de Nationale Boomgaarden Stichting, bedanken. Zij zorgden voor de doorstroming van alle nodige informatie. Ludo Royen, voorzitter van de Nationale Boomgaarden Stichting en onze promotor, willen we danken voor het enthousiasme die we van hem kregen. Ann Van Overberge, onze promotor aan de Hogeschool Gent, bedanken wij voor de steun die we kregen bij het maken van ons eindwerk. Ook mogen wij onze vriendjes niet vergeten, zij stonden ons bij met raad en daad en staken ons vaak een hart onder de riem. Wij richten ook een woord van dank aan onze proeflezers: Laukens Sanne, Lyssens Christophe, Provoost Gerda en Vervaeke Karel. Tenslotte nog een speciaal woord van dank aan onze ouders voor de financiële steun die ze ons boden tijdens onze opleiding.
Laukens Joke Lyssens Liesbeth Gent, mei 2004
Abstract The goal of this thesis is to produce software to catalogue and identify different kinds of fruit varieties. In order to catalogue these fruit varieties data is gathered and stored in a database. The database can also be consulted to determine a fruit variety. We have opted for the MySQL database management system to take care of the data. Adding, searching, modifying and removing entries from the catalogue will be done through the use of a graphical user interface, made in Java. The identification is done by using a self-made method. The information used to identify the fruit variety was inserted using a graphical user interface. KEYWORDS : Catalogue; database; fruit varieties; identification; self-made method; graphical user interface
Inhoudsopgave Abstract Inhoudsopgave
4
Gebruikte afkortingen
8
Inleiding
9
HOOFDSTUK 1: Situering 1.1 1.2 1.3
Cera Foundation Nationale Boomgaarden Stichting Probleemstelling
HOOFDSTUK 2: Gebruikte software 2.1 2.2
Huidige situatie bij NBS Benodigdheden 2.2.1 Databanksysteem 2.2.1.1 Voordelen – nadelen 2.2.1.2 InnoDB tabellen 2.2.2 Programmeertaal 2.2.3 Verbinding tussen databank en applicatie
HOOFDSTUK 3 : Voorbereidend werk 3.1 3.2
3.3
Onze eerste ontmoeting De lijst met determinatiekenmerken 3.2.1 Begin juli 3.2.2 De raad van beheer 3.2.3 Vergadering met de raad van beheer 3.2.4 De definitieve lijst Samenwerking
HOOFDSTUK 4: Analyse 4.1 4.2
Fruit – Vrucht –Variëteit – Afleiders Gekregen informatie 4.2.1 Verwerken van de informatie
11 11 11 12 13 13 13 14 14 14 15 16 17 17 17 17 18 18 18 18 20 20 20 21 4
4.3
Determinatiemethode 4.3.1 Methode van de NBS 4.3.2 Methode van Joseph Vercier 4.3.2.1 Uitleg met voorbeeld 4.3.2.2 Voor- en nadelen 4.3.3 Eliminatie 4.3.4 Percentages 4.3.4.1 Voorbeeld 4.3.4.2 Voor- en nadelen
HOOFDSTUK 5: Databank 5.1 5.2
5.3
5.4 5.5
Ontwerpkeuze Algemene tabellen 5.2.1 Tabel ‘fruit’ 5.2.2 Tabel ‘vrucht’ 5.2.3 Tabel ‘kenmerktype’ 5.2.4 Tabel ‘kenmerkwaarde’ 5.2.5 Tabel ‘vruchtkenmerk’ Tabellen met extra informatie 5.3.1 Tabellen voor synoniemen en lokale namen 5.3.2 Tabellen voor referenties 5.3.3 Tabellen voor bijkomende informatie Tabellen voor de helpfunctie Tabellen voor foto’s
HOOFDSTUK 6: Code 6.1
6.2 6.3 6.4 6.5 6.6 6.7 6.8
Structuur 6.1.1 Algemeen 6.1.2 Boom 6.1.2.1 Dynamisch opbouwen van de boom 6.1.3 Databank 6.1.4 Event 6.1.5 Exceptions 6.1.6 GUI Catalogeren 6.2.1 WijzigenStart 6.2.2 WijzigenApplicatie Bewerken van referenties Verloop Paswoord en gebruikers Van individuele fiche naar bestand in PDF-formaat Kenmerkinformatie aanpassen Klikbare rand
24 24 24 25 28 28 28 29 30 31 31 33 33 33 33 35 35 35 36 36 37 37 38 39 39 39 39 40 41 41 42 42 42 43 43 44 45 47 48 52 53 5
6.9 Installatiewizard 6.10 Implementatiekeuzen HOOFDSTUK 7: Installatie 7.1 7.2 7.3 7.4
Databanksysteem (MySQL®) Java NBS - MaluDet Tentoonstelling
HOOFDSTUK 8 : Handleiding 8.1
8.2 8.3
8.4
8.5 8.6
Gemaakte afspraken 8.1.1 Ingeefmogelijkheden 8.1.2 Schermen en panelen 8.1.3 Kenmerkenpanelen 8.1.4 Meldingen 8.1.5 Kleuren 8.1.6 Actieknoppen Starten Catalogeren 8.3.1 Toevoegen 8.3.1.1 Identificatiegegevens toevoegen 8.3.1.2 Kenmerkwaarden toevoegen 8.3.1.3 Foto’s toevoegen 8.3.1.4 Referenties toevoegen 8.3.2 Wijzigen 8.3.2.1 Vrucht kiezen 8.3.2.2 Het wijzigen zelf 8.3.3 Verwijderen Determineren 8.4.1 Determineren in ‘expertmodus’ 8.4.1.1 Starten 8.4.1.2 De boom 8.4.1.2.1 Uitleg 8.1.4.2.2 Waarvoor dient deze structuur? 8.4.1.3 Het rechterpaneel 8.4.1.3.1 Het invulpaneel 8.4.1.3.2 Het actiepaneel 8.4.1.4 Menubalk 8.4.2 Determineren in ‘leekmodus’ 8.4.3 Het eigenlijke determineren Referenties bewerken Helpfunctie
54 55 56 56 57 58 58 60 60 60 64 65 66 67 68 68 70 70 72 73 75 76 78 79 80 82 83 83 83 84 84 87 87 88 89 89 91 93 95 97
6
8.6.1 Het tabblad “Boom” 8.6.2 Het tabblad “Index” 8.6.3 Meerdere kenmerken met dezelfde naam 8.7 Wisfunctie 8.8 Fiche van een variëteit opvragen 8.8.1 Individuele fiche 8.9 Paswoord en gebruiker veranderen 8.10 Kenmerkinformatie aanpassen
99 99 100 103 104 105 107 108
Algemeen besluit
112
APPENDIX 1: Lijst van kenmerken en hun afleiders APPENDIX 2: Tabel van Vercier APPENDIX 3: Voorbeeld van een individuele fiche in PDF-formaat
114 136 137
Lijst met figuren
142
Literatuurlijst
145
7
Gebruikte afkortingen GUI : Graphical User Interface NBS : Nationale Boomgaarden Stichting ODBC : Open Database Connectivity JDBC : Java Database Connectivity API : Application Program Interface JVM : Java Virtual Machine AWT : Abstract Window Toolkit PDF : Portable Document Format JFC : Java Foundation Classes FOP : Formatting Object processor XSL-FO : Extensible Stylesheet Language - Formatting Objects XML : Extensible Markup Language SVG : Scalable Vector Graphics MIF : Maker Interchange Format PS : Post Script W3C : World Wide Web Consortium XSLT : Extensible Stylesheet Language Transformations SAX : Simple API for XML
8
Inleiding In maart 2003 bezochten we de site van de Cera Foundation op zoek naar een eindwerk. Het project bij de Nationale Boomgaarden Stichting sprak ons onmiddellijk aan. De Nationale Boomgaarden Stichting is een vzw die zich bekommert om het behoud, het beheer en de verwerving van waardevolle boomgaarden en daarmee samenhangend hun flora en hun fauna. Het in stand houden en het heraanplanten van boomgaarden is voor de vzw één van haar prioriteiten, naast onder meer het uitbouwen en genetisch behouden van ons nationaal en lokaal fruitpatrimonium. De financiële middelen haalt de vzw uit leden- en vrijwilligersbijdragen en schenkingen van scholen, gemeenten, provinciebesturen, verenigingen en bedrijven. Bij de Nationale Boomgaarden Stichting zijn er een aantal experten in het determineren. Deze experten zijn echter al op zekere leeftijd. Mocht er hen iets overkomen, gaat er veel waardevolle kennis verloren. Daarom zocht de vzw een manier om deze informatie te catalogeren en via een programma te determineren. Daar de appel de belangrijkste vrucht is, is er besloten om met deze fruitsoort te starten. De Nationale Boomgaarden Stichting houdt zich echter niet alleen bezig met appels, zij bekommeren zich ook om peren, perziken, druiven, pruimen en krieken. Daarom is het ook de bedoeling dat dit project in de toekomst wordt verder gezet door andere studenten. Er is voor dit project gekozen omdat het ons wel aanspreekt om in de social profit een eindwerk te maken. Op deze manier kunnen we met onze kennis anderen helpen. We hebben het gevoel dat we met dit eindwerk iets nuttigs zullen verwezelijken. In eerste instantie is er aan de Nationale Boomgaarden Stichting om de nodige gegevens gevraagd. De belangrijkste gegevens zijn de kenmerken die gebruikt worden om een vrucht te catalogeren en te determineren. Naargelang de structuur van die gegevens wordt er een databankontwerp gemaakt. Nadien zal er een software applicatie geschreven worden die het catalogeren en determineren op een gebruiksvriendelijke manier mogelijk maakt.
9
Hieronder kan u een overzicht vinden van de verschillende onderdelen van deze tekst. HOOFDSTUK 1: Situering In dit eerste hoofdstuk wordt er een algemene situatieschets van het project gegeven. HOOFDSTUK 2 : Gebruikte software In dit hoofdstuk zal iets meer uitleg gegeven worden over de gebruikte software en ook waarom voor deze software geopteerd werd. HOOFDSTUK 3 : Voorbereidend werk De eerste fase in het eindwerk betrof vooral het verkrijgen van de juiste informatie. HOOFDSTUK 4 : Analyse In dit hoofdstuk zal iets meer verteld worden over de analyse van het project. Ook zal er iets meer uitleg gegeven worden omtrent de wijze van determineren en mogelijke oplossingen. HOOFDSTUK 5 : Databank Een belangrijk onderdeel van dit eindwerk is het catalogeren van variëteiten en hun vele kenmerken. Dit gebeurt met behulp van een databank. In dit hoofdstuk wordt deze databank nader besproken. HOOFDSTUK 6 : Code In dit hoofdstuk zal iets meer verteld worden over de code die er geschreven is en iets meer uitleg over bepaalde keuzes die hieromtrent gemaakt zijn. HOOFDSTUK 7 : Installatie In dit hoofdstuk wordt beschreven hoe het programma gebruiksklaar wordt gemaakt. Bovendien kan u hier vinden wat er moet gebeuren indien de NBS het programma wil gebruiken op tentoonstellingen. HOOFDSTUK 8 : Handleiding In dit hoofdstuk wordt uitgebreid uitgelegd hoe men met het programma moet werken. Er is uitgegaan van een minimale basiskennis.
10
HOOFDSTUK 1 Situering In dit eerste hoofdstuk zal iets meer verteld worden over hoe het onderwerp voor dit eindwerk gevonden is, wat de Nationale Boomgaarden Stichting juist is en wat zij van ons verwachten.
1.1 Cera Foundation De dag van vandaag moeten bedrijven constant vernieuwen om up to date te blijven, zij moeten blijven investeren om te kunnen concurreren. Stilstaan is achteruitgaan. Dit geldt uiteraard ook voor sociale organisaties, maar zij hebben vaak niet de capaciteiten om zulke investeringen te doen. Ook is er vaak niet de nodige knowhow om de technische verbeteringen intern te laten uitvoeren. Hier biedt de Cera Foundation een oplossing. Zij bieden toekomstige industrieel ingenieurs eindwerken aan. Deze eindwerken houden allen een maatschappelijk waardevolle én technologische uitdaging in. Aan het eindwerk wordt eveneens een prijs gekoppeld; de Cera Foundation Award1. Dit om de industrieel ingenieurs te bedanken voor hun inzet in de social profit. Ook wij vonden ons eindwerk op de site van de Cera Foundation, namelijk een project van de Nationale Boomgaarden Stichting2, afgekort NBS.
1.2 Nationale Boomgaarden Stichting In de jaren ‘70 vond een massale rooiing plaats van hoogstamboomgaarden omwille van economische redenen. Verschillende individuen wilden echter dit waardevol stukje cultuurpatrimonium beschermen en herwaarderen. Het boomgaardlandschap is immers uniek voor onze gewesten en draagt een onschatbaar genetisch patrimonium in zich. Daarom ging men, onder impuls van Ludo Royen, op zoek naar steeds zeldzamer wordende oude variëteiten van de eigen regio. Al snel had men een collectie van een 500-tal variëteiten. Deze collectie vormde de basis voor de oprichting van de NBS vzw in 1984. In de loop der jaren is de collectie uitgegroeid tot reeds 3500 variëteiten en is nu bekend als de genenbank Vlaanderen. 1 2
http://award.cerafoundation.be/ http://www.boomgaardenstichting.be/
11
Nog steeds zet de NBS zich in voor de verwerving, het behoud en het beheer van waardevolle boomgaarden, hun flora en fauna. Dit doen ze onder andere door het streven naar een genetisch behoud van ons nationaal en lokaal fruitpatrimonium en door projecten op te richten voor landschapsonderhoud en -herstel. Ze verzorgen eveneens educatieve activiteiten die verband houden met boomgaard en natuur en voorzien in pomologisch studie- en opzoekingswerk.
1.3 Probleemstelling Tegenwoordig ligt de kennis omtrent de verschillende vruchten, hun kenmerken en het determineren ervan voornamelijk bij ouderen. Als er die ouderen iets zou overkomen, dan gaat die kennis verloren. Daarom vraagt de Nationale Boomgaarden Stichting om vruchten te kunnen catalogeren aan de hand van hun kenmerken en software te ontwikkelen om te kunnen determineren. Het catalogeren en determineren gebeurt met behulp van een databank. Het is de bedoeling om dit te doen voor verschillende fruitsoorten, maar om te starten met de appel, omdat dit de belangrijkste fruitsoort blijkt te zijn. Daarom is er gevraagd om er voor te zorgen dat het programma makkelijk uitbreidbaar is voor peren, pruimen, perziken, druiven en kersen.
12
HOOFDSTUK 2 Gebruikte software In dit hoofdstuk zal iets meer uitleg gegeven worden over de gebruikte software en waarom voor deze software geopteerd werd.
2.1 Huidige situatie bij de NBS De Nationale Boomgaarden Stichting heeft op haar secretariaat vier pc’s en één server staan. Die vijf computers staan in een netwerk verbonden met elkaar. De server draait alle programma’s waarmee op het secretariaat gewerkt wordt. Eén van hun medewerkers, J. Punie, heeft enige kennis van computers en programmeren, hij werkte in het verleden aan een Dosprogramma om te kunnen determineren. Daar buiten is er niemand met enige kennis van informatica buiten die van de gebruikte softwarepakketten. Er kan gebruik worden gemaakt van een printer en een scanner.
2.2 Benodigdheden Voor het catalogeren van de informatie over verschillende fruitvariëteiten en alle bijhorende extra informatie die nodig is, maken we gebruik van een databank. Een databank is een, op een zinvolle manier, gestructureerde verzameling van niet vluchtige gegevens die door toepassingen wordt aangesproken. Er bestaan verschillende types databanksystemen en binnen een bepaald type kan men uit verschillende ‘merken’ kiezen. De bijhorende software is geschreven in een bepaalde programmeertaal. Een programmeertaal is een middel om te communiceren met de computer. Men kiest best een programmeertaal waarmee de databank aangesproken kan worden. Opdat een programma gebruik kan maken van een databank, moet er een soort van brug geslagen worden tussen het programma en de databank. Wij hebben besloten voor niet betaalde middelen te kiezen, daar wij het budget van de Nationale Boomgaarden Stichting niet onnodig willen belasten.
13
2.2.1 Databanksysteem Om de databank te beheren wordt er gebruik gemaakt van het databanksysteem MySQL® Database Server, meer bepaald de MySQL 4.0 versie. MySQL is een geregistreerd handelsmerk van MySQL AB in de Verenigde Staten, de Europese Unie en andere landen.
2.2.1.1
Voordelen - nadelen
MySQL is een open source/free software product, dit wil zeggen dat er gratis van MySQL gebruik kan gemaakt worden. Een ander groot voordeel is dat MySQL grote databanken aankan. Wat in dit geval zeker nodig is, aangezien de grote hoeveelheid kenmerken en het grote aantal vruchtvariëteiten die in de databank moet kunnen geplaatst worden. Een alternatief zou PostgreSQL geweest zijn. PostgreSQL heeft als voordeel dat het geneste queries toelaat en MySQL jammer genoeg niet. Toch is er voor MySQL gekozen. Deze is sneller dan PostgreSQL en aangezien er sprake is van een grote hoeveelheid data werd snelheid gezien als een enorm pluspunt. MySQL is daarenboven heel betrouwbaar en eenvoudig in gebruik. Het afdwingen van referentiële integriteit lag echter niet zo voor de hand. Standaard maakt MySQL 4.0 gebruik van MyISAM tabellen, maar om referentiële integriteit af te dwingen is het nodig om gebruik te maken van InnoDB tabellen. Hetzelfde geldt voor transacties. InnoDB heeft als voordeel dat het veiliger is dan MyISAM. MyISAM is echter veel sneller dan InnoDB en neemt minder schijfruimte in beslag. Dit komt door het wegvallen van controle en een lagere overhead. Toch is er gekozen voor het gebruik van InnoDB tabellen en dit omwille van de veiligheid.
2.2.1.2
InnoDB tabellen
InnoDB is het eerste type MySQL tabel die toelaat foreign key constraints te definiëren om zo de referentiële integriteit te garanderen. De tabel die de verwijzing maakt moet een index hebben voor de kolommen waarop de foreign key wordt toegepast. De kolommen waarnaar verwezen wordt in een andere of dezelfde tabel moeten ook een index hebben. InnoDB gaat deze indexen niet automatisch creëren, dit moet expliciet gebeuren. Indexen worden gebruikt om sneller records te vinden aan de hand van kolomwaarden. Zonder een index moet MySQL bij de eerste record van de tabel starten en vervolgens de hele tabel overlopen op zoek naar de nodige records. Dit
14
kan snelheidsproblemen geven bij grote tabellen. Heeft de tabel echter voor die kolommen een index, hoeft hij niet alle records sequentieel te doorlopen. Bij InnoDB zijn deze nodig om een vlugge controle te doen van de referentiële integriteit. ‘Primary key’ en ‘unique’ zijn een vorm van impliciete indexen. Er kunnen expliciete indexen gecreëerd worden met de index-statement.
2.2.2 Programmeertaal Als programmeertaal is er gekozen voor Java. Het grote voordeel van Java is dat het de sterktes van andere objectgeoriënteerde programmeertalen bundelt, maar tegelijk hun zwaktes elimineert. Het resultaat hiervan is dat Java een programmeerplatform is geworden dat heel krachtig en gebruiksvriendelijk is. Java is weinig complex in het gebruik en daardoor worden minder fouten gemaakt bij het schrijven van de code. Hierdoor neemt het implementeren en debuggen minder tijd in beslag. Dit is één van de belangrijkste voordelen van Java, omdat bij het ontwikkelen van programma' s de ontwikkelingstijd van primordiaal belang is. Bovendien wordt de ontwikkelingstijd van de applicaties gereduceerd door de uitgebreide API3. Een belangrijk kenmerk van Java programma' s is dat er maar één universele versie hoeft te worden geschreven die zonder aanpassingen draait op computers van divers pluimage en op diverse besturingssystemen: MacOS, Windows, Unix, Linux, etc... Dit strategische voordeel van Java staat bekend als: ' write once run anywhere'™. Java technologie omvat meer dan een programmeertaal, het is een programmeerplatform dat 2 belangrijke facetten bevat: de programmeertaal en de Virtual Machine. Deze Virtual Machine is één van de belangrijkste bouwstenen van het programmeerplatform. De JVM4 zorgt ervoor dat een Java programma effectief kan worden uitgevoerd, door de omvorming van de Java instructies naar bruikbare code voor het systeem. Deze component is verantwoordelijk voor de platformonafhankelijkheid. Er wordt gebruik gemaakt van de Java Standard Edition. Deze editie bevat een JVM en een uitgebreide JFC aan functionaliteit zoals netwerk en internet functies, database access, user interface functionaliteit (AWT, Swing), etc.
3 4
Application Program Interface, een set van functies die gebruikt kunnen worden bij het programmeren Java Virtual Machine
15
Voor de interactie tussen de gebruiker en het programma wordt er gebruik gemaakt van GUI’s. Deze worden geschreven met JavaSwing, een onderdeel van Java.
2.2.3 Verbinding tussen databank en applicatie Hier is er gekozen voor MySQL Connector/J. Dit is een volledig in Java geschreven driver die JDBC-opdrachten omzet in het netwerkprotocol gebruikt door de MySQL databank. Dit soort drivers maakt rechtstreekse netwerkverbindingen met de databank. MySQL Connector/J heeft een complete JDBC kenmerken set en ondersteunt hiermee de mogelijkheden van MySQL. Een andere mogelijkheid zou de MySQL Connector/ODBC geweest zijn. Hier wordt contact verkregen met de databank door gebruik te maken van ODBC5. Er gebeurt een vertaling van JDBC-opdrachten naar ODBC-opdrachten, die dan weer vertaald worden naar databankopdrachten. Er is gekozen voor MySQL Connector/J omdat deze veel efficiënter blijkt te zijn dan MySQL Connector/ODBC.
5
Dit is de API voor databanken van Microsoft.
16
HOOFDSTUK 3 Voorbereidend werk De eerste fase in dit eindwerk betrof vooral het verkrijgen van de juiste informatie. Dit bleek geen gemakkelijke opgave.
3.1 Onze eerste ontmoeting Onze eerste ontmoeting met de mensen van de Nationale Boomgaarden Stichting vond plaats op 7 april 2003. Terplaatste werd, na een korte kennismaking, uitgelegd wat zij van ons verwachten: een programma om te determineren. Er was wel het idee van een databank, maar verder gingen de specificaties niet. Het viel ons bijzonder op dat deze mensen geen kennis hadden van programmeren en alle hieraan gerelateerde zaken. Omdat wij geen zicht hadden op determinatiekenmerken, vroegen we hen om een lijst te maken met de kenmerken waarop zij willen determineren. Deze lijst hadden wij graag gehad voor juli, vermits we toen gingen beginnen aan ons eindwerk.
3.2 De lijst met determinatiekenmerken 3.2.1 Begin juli Begin juli was er nog geen lijst. Er werd een e-mail verstuurd met de volgende vragen: 1 2 3 4 5
Wat is het doel van het programma? Welke zijn de determinatiesleutels? Hoe gebeurt determineren tegenwoordig? Waar is de informatie momenteel opgeslagen of terug te vinden? Wie moet gebruik kunnen maken van het programma?
Er werd ook vermeld dat er best meteen een volledige lijst werd gemaakt. Latere uitbreidingen zouden leiden naar aanpassingen in de databank en de applicatie en dus te vermijden. Er werd ook naar de belangrijkheid van elk kenmerk gevraagd, vermits dit invloed zou kunnen hebben op het determinatieproces.
17
3.2.2 De raad van beheer Deze vragen werden door de contactpersoon doorgegeven aan de raad van beheer van de NBS. Ongeveer een maand later beslisten zij dat het beter was om samen te komen. Toen er werd geprobeerd om een datum vast te leggen, bleek dit niet zo evident. Er werd nog eens aangedrongen om toch een lijst op te sturen. Zodoende zou er wat voorbereidend werk kunnen gebeuren. We kregen een lijst. Deze lijst was maar voorlopig, er kon echter een idee worden gevormd omtrent de structuur van de vele determinatiesleutels. Er kon ook gezocht worden naar een passend databankontwerp. Sinds die eerste voorlopige lijst zijn er veel wijzigingen de revue gepasseerd.
3.2.3 Vergadering met de raad van beheer Half augustus werd het doel van het eindwerk nog eens besproken. Er werd tevens samen met de raad van beheer verder gewerkt aan de lijst met determinatiekenmerken. Deze zou nog gecontroleerd worden door een aantal specialisten die niet op de vergadering aanwezig konden zijn. Daarna zou de lijst als definitief beschouwd worden. Conclusies over het doel van het eindwerk en de voorlopige lijst werden in een tekstbestand gegoten en naar het secretariaat van de Nationale Boomgaarden Stichting gestuurd. We wilden niet riskeren dat de opdracht halverwege het project zou veranderden en zo kon er verder gewerkt worden aan de lijst.
3.2.4 De definitieve lijst Op de definitieve lijst met determineersleutels en hun afgeleiden was het nog even wachten. Vele voorlopige lijsten zijn de revue gepasseerd. Op 17 november 2003 hadden wij onze ‘definitieve’ lijst. Toch werden er nog foutjes gevonden, maar na half januari kwamen er gelukkig geen grote aanpassingen meer.
3.3 Samenwerking De Cera Foundation legt een stage van 1 maand op. Wij hadden de maand juli hiervoor gekozen. Op de NBS tekenden ze voor ons het stagecontract. Er werd wel afgesproken dat er niet ter plaatse ging gewerkt worden, vermits er op het secretariaat noch de plaats noch de middelen waren. Half juli bleek dat er door de mensen die ons gingen helpen met het opstellen van de lijst collectief verlof werd genomen. Onze ‘stage’ is dus gedeeltelijk verplaatst naar augustus en september. Dit was niet gepland. 18
De samenwerking liet, zoals blijkt, te wensen over. De gevraagde informatie kwam maar met vertragingen. Dit was zo met de lijst van determinatiesleutels (de belangrijkste brok informatie), maar ook met alle andere informatie die wij aan de NBS vroegen. Op het secretariaat van de NBS gaf men het e-mail adres van de voorzitter van de NBS. Herhaaldelijk mailen haalde niets uit. Na een telefoontje bleek dat de voorzitter zijn e-mail vrijwel niet controleert. Er is dan overgeschakeld naar telefoontjes. Blijkbaar drong het niet door dat wij binnen een beperkt tijdsframe zaten. Telefoneren kan echter alleen ’s avonds na 19u00 wanneer Mr. Royen thuis is.
19
HOOFDSTUK 4 Analyse De analyse van het project werd enigszins bemoeilijkt door de trage informatiestroom vanuit de NBS. De analyse en het uitwerken van het eindwerk liep hierdoor een beetje door elkaar. In dit hoofdstuk zal iets meer verteld worden over de analyse. Ook zal er iets meer uitleg gegeven worden omtrent de wijze van determineren en mogelijke oplossingen.
4.1 Fruit - Vrucht - Variëteit - Afleiders Doorheen deze tekst en het programma wordt er gebruik gemaakt van de termen fruit, vrucht en variëteit. Om verwarring te vermijden zullen we uitleggen wat het verschil is tussen de drie. Nog een veel gebruikte term die voor verwarring zou kunnen zorgen is afleider. Daarom dat ook deze verder zal toegelicht worden. Fruit is een soort, bijvoorbeeld appel of peer. Een variëteit is een onderverdeling van een soort fruit, bijvoorbeeld Granny Smith is een appelvariëteit en Conference is een perenvariëteit. Een vrucht is een exemplaar van een bepaalde variëteit, bijvoorbeeld één Granny Smith appel of één Conference peer. Vrucht en variëteit kunnen soms door elkaar gebruikt worden, daar ze vrijwel het zelfde aanduiden. Een fruit heeft steeds bepaalde kenmerken. Elk kenmerk kan verschillende waarden bevatten. Deze waarden worden de afleiders van een kenmerk genoemd. Bijvoorbeeld: het vruchtvlees van de appel heeft als kenmerk ‘hardheid’. De afleiders van dit kenmerk zijn: erg zacht, zacht, matig vast, vast/hard en hard/krakend. Dit zijn dus alle mogelijke waarden die kunnen gebruikt worden voor het kenmerk ‘hardheid’.
4.2 Gekregen informatie De NBS zou, om te starten, graag een systeem hebben om appels te catalogeren en determineren. Daarom heeft de NBS een lijst gegeven met alle kenmerken van appels en hun afleiders waarop men wilt determineren. De volledige lijst is te vinden in appendix 1. Als u even naar deze lijst kijkt valt meteen de grote hoeveelheid informatie op. Er is sprake van 173 determineerbare kenmerken en 677 afleiders. Bovendien zijn er ook nog identificatiegegevens en 13 bijkomende kenmerken. Het doornemen en verwerken van deze lijst heeft veel tijd in beslag genomen. Dit kwam gedeeltelijk doordat er heel wat voorlopige lijsten de revue zijn gepasseerd.
20
4.2.1 Verwerken van de informatie Tijdens het opstellen van de lijst van kenmerken, samen met de mensen van de raad van beheer van de NBS, bleken er veel kenmerken te zijn. Om een overzichtelijke en logische indeling te verkrijgen werd gezamenlijk besloten de kenmerken te groeperen. Het overkoepelende kenmerk van een groep kenmerken noemen we het ouderkenmerk van deze kenmerken. Het ouderkenmerk beschrijft de gemeenschappelijke noemer van de onderliggende kenmerken. Deze ouderkenmerken worden dikwijls samen in een nieuw overkoepelend ouderkenmerk gegroepeerd. Bijvoorbeeld: De kenmerken ‘hardheid’ en ‘kleur’ van het vruchtvlees zijn samen ingedeeld bij ‘vruchtvlees’. De ouderkenmerken ‘vruchtvlees’ en ‘pitten’ kunnen samen ingedeeld worden bij ‘inwendig’. De ouderkenmerken ‘inwendig’ en ‘uitwendig’ tenslotte horen samen bij ‘vrucht’.
figuur 4.1 : boomstructuur Op deze manier kwam er een indeling, een soort boomstructuur, die doorheen ons programma een zeer belangrijke rol heeft. Zowel de databank als de applicatie maken er op één of andere manier gebruik van. Meer uitleg hierover vindt u echter in de respectievelijke hoofdstukken.
21
Hieronder kunt u de volledige indeling van ouderkenmerken vinden. -
vrucht - inwendig - vruchtvlees - klokhuis en zaadholten in dwarsdoorsnede - klokhuis en zaadholten in lengtedoorsnede - pitten - uitwendig - vruchthuid en kleur - vorm en grootte - steelholte - vruchtsteel - kelkhuis - kelkholte - kelkbladeren - rijptijd - gebruik
-
-
-
vegetatieve kenmerken - kenmerken boom - twijg - blad - bladsteel - uitzicht fysiologische kenmerken gevoeligheden - stressgevoeligheid - gevoeligheden voor aantastingen - bacteriën en virussen - insecten en bewaarziekten - schimmels cultuur - teeltkenmerken - standplaatsfactoren
In de gekregen lijst zijn er kenmerken die belangrijker zijn dan andere. Zo is de vruchthuidkleur van een variëteit belangrijker dan de zichtbaarheid van de lenticellen op de twijg. Uit alle kenmerken is er een selectie gemaakt van 16 kenmerken die het belangrijkst zijn bij het determineren. Deze zullen zowel bij catalogeren als determineren een belangrijke functie hebben. De belangrijkste kenmerken zijn: -
-
-
De kleur en hardheid van het vruchtvlees. De grondkleur van een vrucht is de kleur van de vrucht die heel de vrucht bedekt. De dekkleur van een vrucht kan de grondkleur voor kleine of grotere oppervlakken bedekken. Bijvoorbeeld: een groene appel met een rode blos. Groen is de grondkleur, rood is de dekkleur. Soms komt de dekkleur voor onder de vorm van strepen. Dit noemt men de streping van de vrucht. Ook treedt er soms een verruwing en verkleuring op van het huidoppervlak. Dit noemt men beroesting. De graad van de beroesting van de vruchthuid en het voorkomen van streping zijn eveneens belangrijk. Ook de textuur van het oppervlak is belangrijk. De algemene vorm van de appel is eveneens belangrijk. De verhouding tussen de hoogte en de breedte van de vrucht en de verhouding van de breedte van de kelkholte en de breedte van de steelholte. Op het moment dat de vruchten rijp zijn aan de boom, noemt men de vruchten boomrijp. Indien men de vruchten dan plukt, moet men ze vrijwel direct consumeren. Indien men de vruchten een tijdje wil kunnen bewaren,
22
-
dient men ze te plukken een tijdje voor de boomrijptijd, dit moment noemt men de plukrijptijd. Op dat moment zijn de vruchten echter nog niet consumeerbaar. Door het liggen van de vrucht, gaat deze rijpen. Het moment dat hij dan consumeerbaar geworden is, is het begin van de consumptierijptijd. De diepte van steelholte en de diepte van kelkholte. De lengte van de vruchtsteel en de lengte van de kelkbladeren.
Naast die belangrijkste kenmerken bevat de lijst met alle kenmerken ook enkele kenmerken die slechts een informatieve functie hebben. Deze worden de bijkomende informatie genoemd. Het is niet de bedoeling dat deze kenmerken gebruikt worden om te determineren. Deze informatie dient enkel als extra informatie naar de gebruiker toe. Er zijn 13 verschillende soorten bijkomende informatie, die hier verder toegelicht worden. -
Gemiddelde hoogte en gemiddelde breedte gaan over de grootte en vorm van de vrucht. Hoe lang een vrucht houdbaar is, kan bijgehouden worden in de bijkomende kenmerken luchtbewaring en koelhuisbewaring. Bij aroma kan een korte beschrijving over de smaak meegeven worden Bij vitamine C - gehalte, soortelijke massa, suikergehalte en zuurheid van de vrucht kunnen de overeenkomstige numerieke waarden ingevuld worden. In verband met de twijg en de boom kan het aantal knoppen (per 20 cm) en het gemiddeld aantal dagen bloei bijgehouden worden. Tenslotte hebben we nog de gelijkende vruchten en de bepalende vruchtkenmerken. Een gelijkende vrucht is een vrucht van een andere variëteit die veel overeenkomsten vertoont met de huidige vrucht en een bepalend vruchtkenmerk is een kenmerk dat enkel bij die vrucht voorkomt. Hiervan zijn er meerdere mogelijk voor één vrucht. In samenspraak met de NBS is er gekozen voor een maximum aantal van vijf waarden voor zowel gelijkende vruchten als bepalende vruchtkenmerken.
Ten slotte is het natuurlijk ook de bedoeling dat we identificatiegegevens van een vrucht bijhouden. Onder identificatiegegevens verstaan we de variëteitnaam, de synoniemen en de lokale namen van een vrucht. De variëteitnaam, ook wel ‘de naam van de eerste beschrijver genoemd’, is uniek voor een vrucht. Dit is de officiële naam waaronder de vrucht gekend is. Hiernaast kan er ook nog sprake zijn van synoniemen en lokale namen. Dit kunnen er logischerwijs meerdere zijn voor één vrucht. Daarom wordt ook hier gebruik gemaakt van een maximum van vijf waarden. Dit getal is bekomen in samenspraak met de NBS. Er werd besloten om de hoeveelheid te beperken omdat er zeer veel synoniemen en lokale namen kunnen bestaan voor een vrucht. De keuze viel op het getal vijf omdat dit volgens de NBS een redelijk aantal is. Hetzelfde geldt voor de gelijkende vruchten en de bepalende vruchtkenmerken.
23
4.3 Determinatiemethode Voor het determineren moest er een goede methode gevonden worden. Dit bleek niet zo evident. Hieronder worden enkel methoden met hun voor- en nadelen besproken.
4.3.1 Methode van de NBS Binnen de Nationale Boomgaarden Stichting heeft men een aantal specialisten inzake appels. Deze mensen kunnen door jarenlange ervaring op het zicht determineren. Bij het determineren komen zij niet altijd tot een sluitende variëteitnaam, maar hebben wel een zeer goed idee. Eventueel kan er verder opgezocht worden in boeken. De experten van de Nationale Boomgaarden Stichting kunnen zelf moeilijk aangeven welke kenmerken zij eerst evalueren tijdens het determineren. Bij het bekijken van een vrucht hebben ze meteen een totaalbeeld van de vrucht. Ook kan het soms zijn dat men de vrucht kan determineren aan de hand van een klein detail (geen belangrijk kenmerk, of zelfs geen determinatiekenmerk) dat voor de herkenning zorgt. Deze methode is voor ons uiteraard niet bruikbaar.
4.3.2 Methode van Joseph Vercier Joseph Vercier, een erkend tuinbouwkundige en boomkundige uit Frankrijk, schreef omtrent 1934 het boek ‘Détermination Rapide des Variétés de Fruits: Poires et Pommes’. In dit boek wordt er een methode aangeboden waarmee men een vlugge determinatie van appelen en peren kan doen. Vercier heeft deze methode ontworpen opdat ook een leek in pomologie gebruik kan maken van dit systeem. Voor appel komt deze methode neer op het evalueren van 10 kenmerken. Deze zijn: de plukrijptijd, de verhouding van de hoogte ten opzichte van de breedte, symmetrie, omtrek, de diepte van de steelholte, de diepte van de kelkholte, de vruchthuidkleur, de grootte van het steeltje, de grootte van de kelk en tenslotte de vruchtvleeskleur. (Merk op dat deze gedeeltelijk overeenkomen met de lijst van belangrijkste kenmerken in 4.2.1) In de appendix 2 vindt men de originele determinatietabel opgesteld door Vercier terug. Omdat deze echter in het Frans opgesteld is, zal ze hieronder in het Nederlands vertaald worden en zal er uitleg met een voorbeeld gegeven worden.
24
4.3.2.1
Uitleg met voorbeeld
kenmerken plukrijptijd (A)
afleiders nummers juli - augustus 1 september - oktober 2 november - midden december 3 einde december - januari - februari 4 maart - april - mei 5 verhouding hoger dan breed 1 hoogte/breedte breder dan hoog 2 even hoog als breed 3 (B) Symmetrie symmetrisch en regelmatig afgerond 1 en symmetrisch en onregelmatig afgerond 2 Omtrek symmetrisch en geribd 3 licht asymmetrisch en regelmatig afgerond 4 (C) licht asymmetrisch en onregelmatig afgerond 5 licht asymmetrisch en geribd 6 asymmetrisch en regelmatig afgerond 7 asymmetrisch en onregelmatig afgerond 8 asymmetrisch en geribd 9 diepte van beide holten zijn diep 1 steel- en beide holten zijn middelmatig diep 2 kelkholte beide holten zijn weinig diep 3 diepe steelholte, kelkholte middelmatig diep 4 (D) diepe steelholte, kelkholte weinig diep 5 middelmatig diepe steelholte, diepe kelkholte 6 middelmatig diepe steelholte, weinig diepe kelkholte 7 weinig diepe steelholte, diepe kelkholte 8 weinig diepe steelholte, middelmatig diepe kelkholte 9 vruchthuidkleur wittig of helder geel, zonder bijkomende kleur 1 citroen geel of donker geel, zonder bijkomende kleur 2 (E) geel, met grijze of bruine wassing rond het steeltje 3 geel, licht gemarmerd, gevlekt of besluierd met grijs 4 of rood ergens anders dan aan het steeltje volledig grijs of sterk gevlekt, besluierd of gemarmerd 5 met grijs of rossig zonder rode teint volledig of gevlekt grijs, of grijs of rood gemarmerd, 6 met een rode of roze teint
25
steel en kelk (F)
vruchtvleeskleur (G)
geel aangeslagen met roos of rood verenigd, zonder enige grijze of rossige teint rood of roos gestreept helemaal of bijna helemaal rood lang steeltje en grote kelk lang steeltje en een middelmatige kelk lang steeltje en een kleine kelk middelmatig lang steeltje en grote kelk middelmatig lang steeltje en een middelmatige kelk middelmatig lang steeltje en een kleine kelk kort steeltje en grote kelk kort steeltje en een middelmatige kelk kort steeltje en een kleine kelk zacht, wit, sappig wit, weinig sappig wit, stevig maar niet knapperig wit, knapperig witgroenig, zacht witgroenig, stevig gelig, zacht gelig, stevig rozig of roos dooraderd
7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
Voor determinatie selecteert men best een staal van op z’n minst 6, liefst 10, vruchten van dezelfde boom(soort) die het meest op elkaar gelijken. Zorg dat ze qua grootte ook overeenkomen, de kleinste en grootste exemplaren mogen niet in de staal waarop men gaat determineren voorkomen. In onderstaand voorbeeld wordt uitgegaan van de variëteit ‘Reine des reinettes’. Voor elk kenmerk (of combinatie van twee kenmerken) in de tabel gaat men kijken met welke afleider de meeste appels uit de staal overeenkomen. Elk kenmerk heeft in de tabel een letter gekregen (vet gedrukt en tussen haakjes in kolom 1). In onderstaand tabelletje vindt men diezelfde letters terug. In dat tabelletje vult men bij de overeenkomstige letter (kenmerk) het nummer in dat hoort bij de gekozen afleider. A B C D E F G
4 2 4 5 8 4 8
26
In plaats van een enkel nummer te kiezen voor elk kenmerk, waarmee men veronderstelt dat de vruchten die aan andere nummers (afleiders) voldoen geëlimineerd zijn, is het verstandig om, indien er twijfelgevallen zijn binnen de staal, om ook nog 1 of 2 andere nummers te noteren. Zij verwoorden een relatieve maar handige juistheid, om de variëteit te evalueren. Dit nummer zal boven of onder het reeds gekozen afleidernummer geplaatst worden. A B C D E F G 2 7
1
5 4
5 3
4 2 4 5 8 4 8 3
Voorbeeld: binnen de staal van de ‘Reine des reinettes’ voldoen de meeste vruchten voor kenmerk plukrijptijd (A) aan afleider 4: einde december - januari februari. Toch waren er nog een aantal vruchten welke aan afleider 3: november midden december voldeden. Zij waren echter met minder in aantal dan diegene die aan afleider 4 voldeden. Op bovenstaande manier vormt men één of meer getallen bestaande uit zeven cijfers. Dit getal is een representatie van 10 verschillende kenmerken. Men noemt dit getal/deze getallen de ‘diagnose’ van de vruchten. Hier: 4 245 848, 3 245 848, 4 225 848, 3 225 848, … Eénmaal men de diagnose gevonden heeft, begint het opzoekingswerk. In het boek ‘Détermination Rapide des Variétés de Fruits: Poires et Pommes’ vindt men buiten de determinatietabel nog 2 dingen: een lijst met de nummers en een lijst met variëteiten en hun beschrijving. De beschrijving van een variëteit bevat een figuur van mogelijke contouren van de variëteit en wat uitleg rond de variëteit en zijn kenmerken (de 10 geëvalueerde, maar ook andere). In de numerisch geordende lijst kan men de diagnose gaan opzoeken. Bij elk cijfer vindt men de naam van de overeenkomstige variëteit. Die kan men dan verder in het boek opzoeken. Indien de vrucht voor u voldoet aan de beschrijving heeft u een goede kans dat u gevonden heeft welke variëteit van appel u in handen heeft. U kan best wel alle mogelijke combinaties van de diagnose overlopen.
27
4.3.2.2
Voor- en nadelen
Vercier wou een eenvoudige methode creëren, zodat iedereen (leek en specialist) er gebruik van kon maken. Bij ons is het de bedoeling van een systeem te maken voor de specialist en een ander systeem voor de leek. Toch willen we dezelfde determineermethode gebruiken. Positief is dat het systeem rekening houdt met het feit dat een variëteit voor een bepaald kenmerk aan verschillende afleiders kan voldoen. Vercier baseerde zich in zijn onderzoek op 10 kenmerken van de appel. Binnen dit project moet er rekening worden gehouden met mogelijks 173 kenmerken. De zeven cijfer lange diagnose zou veel langer worden en groter in aantal. Hoe langer de diagnose, hoe minder handelbaar ze is. Bovendien is het niet de bedoeling dat tijdens het determineren elk kenmerk wordt ingevuld, dus er zouden leemtes ontstaan in de diagnose.
4.3.3 Eliminatie Een andere mogelijke manier zou kunnen zijn door middel van eliminatie. Telkens er een waarde wordt ingegeven voor een bepaald kenmerk, worden alle appels die hieraan niet voldoen geëlimineerd. Deze manier van werken voldoet ook niet. Vanuit de NBS geven ze immers zelf aan dat men niet verwacht op één bepaalde variëteit uit te komen. Ze noemen dit zelfs ‘onmogelijk’. Men wil liever uitkomen op een beperkte selectie vruchten die aan een groot deel van de kenmerken voldoet. Om meer precies te zijn, ze willen een selectie van vruchten die voldoen aan een bepaald percentage van de ingegeven kenmerken.
4.3.4 Percentages Zoals net vermeld, wil men werken met percentages. Onze methode maakt daar gebruik van. Voor elk ingegeven kenmerk wordt gekeken welke vruchten er aan de ingevulde afleider voldoen. Deze verzameling van variëteiten wordt bijgehouden in een tabel. Bovendien wordt elke variëteit die minstens aan 1 ingegeven kenmerk voldoet, opgeslagen in een tweede tabel. Voor elke vrucht in die tweede tabel houdt men ook een teller bij, welke bijhoudt hoeveel keer de vrucht aan de ingevulde kenmerken voldoet. Aan de hand van de tellers van de tweede tabel en het aantal ingegeven kenmerken kan men dan voor elke vrucht zien voor hoeveel procent hij aan de ingegeven kenmerken voldoet.
28
Op deze manier is het mogelijk voor de gebruiker om aan te geven of hij de vruchten wil zien die aan alle afleiders voldoen of maar aan een bepaald percentage van de kenmerken. Het is ook mogelijk om de vruchten op te vragen die aan alle ingegeven verplichte kenmerken voldoen. Eerst werd eraan gedacht om elk kenmerk een bepaald gewicht te geven bij determinatie. Dit gewicht zou dan de belangrijkheid van een bepaald kenmerk weergeven. Hier werd echter van afgestapt. Dit omdat de mogelijkheid werd ingebouwd om enkel de vruchten die aan alle ingegeven verplichte kenmerken voldoen op te vragen.
4.3.4.1
Voorbeeld
Overzicht inhoud van de databank (fictief):
verplicht appel 1 appel 2 appel 3 appel 4 appel 5 appel 6
grondkleur ja witgeel / geel groen groen / groengeel groen / oranje rood witgeel
dekkleur ja oranje
geur neen zwak
dikte huid neen dik
streping neen geen
rood / donkerrood donkerrood / paars bruin
zwak
dun
geen
krachtig
dun
middelmatig
oranje roos
onbepaald krachtig
zwak
middelmatig middelmatig dik dik
volledig volledig
Stel er wordt tijdens het determineren ingegeven: grondkleur dekkleur geur dikte huid streping groen donkerrood zwak geen Opgemaakte tabellen voor oplossing: Tabel 1: voor elk ingevuld kenmerk wordt bijgehouden welke groep van variëteiten eraan voldoen. grondkleur appel 2 appel 3 appel 4
dekkleur appel 2 appel 3
geur appel 1 appel 2 appel 4
streping appel 1 appel 2
29
Tabel 2: voor elke vrucht die minstens aan 1 kenmerk voldoet, dit zijn alle vruchten uit tabel 1, wordt er een teller bijgehouden welke aangeeft aan hoeveel kenmerken hij voldoet. vrucht appel 1 appel 2 appel 3 appel 4
teller 2 4 2 2
Hieruit kan men opmaken dat appel 2 aan alle ingegeven kenmerken voldoet. Appel 1, appel 3 en appel 4 voldoen aan 50% van de ingegeven kenmerken. Na een verdere verwerking van bovenstaande gegevens, vindt men dat appel 2 en appel 3 voldoen aan alle verplichte kenmerken. Aan de hand van wat de gebruiker wenst te zien, krijgt hij de verschillende appels op het scherm te zien.
4.3.4.2
Voor- en nadelen
Deze methode is zeer gebruiksvriendelijk, de gebruiker kan zelf kiezen welke kenmerken hij invult. Het is natuurlijk wel aan te raden dat hij de verplichte kenmerken invult, maar het is geen verplichting. Bovendien kan de gebruiker ook zelf kiezen welke groep vruchten hij wil zien aan de hand van de keuze van het percentage. Vanuit het standpunt van de computer gezien is dit waarschijnlijk niet de meest optimale keuze, het is een arbeidsintensieve methode. Door de specifieke eisen van de Nationale Boomgaarden Stichting echter, hebben wij voor deze methode gekozen.
30
HOOFDSTUK 5 Databank Een belangrijk onderdeel van dit eindwerk is het catalogeren van variëteiten en hun vele kenmerken. Dit gebeurt met behulp van een databank. Bij het determineren zal men gebruik maken van de ingevulde databank. In dit hoofdstuk wordt deze databank nader besproken.
5.1 Ontwerpkeuze De Nationale Boomgaarden Stichting wil uiteindelijk graag een databank en determinatieapplicatie hebben voor 6 fruitsoorten (appel, peer, perzik, druif, pruim en kers). Er werd gevraagd dit in de eerste plaats voor appel te doen. Appel is voor de NBS de belangrijkste fruitsoort. Bovendien moet er een goede basis zijn voor de andere fruitsoorten. Deze goede basis houdt in dat alles makkelijk uitbreidbaar is met de andere fruitsoorten. Daar werd in ons databankontwerp rekening mee gehouden. Er moeten geen wijzigingen aangebracht worden aan de databank voor het toevoegen van een andere fruitsoort. De huidige databank kan verschillende fruitsoorten tegelijk aan. Het ingeven van de juiste gegevens volstaat. Bovendien moet het mogelijk zijn dat er voor één kenmerk van een variëteit verschillende waarden (afleiders) kunnen toegekend worden. Ook dit vormt met het gekozen ontwerp geen enkel probleem. De uiteindelijke tabellenstructuur van de databank kunt in de onderstaande figuur bekijken. In het vervolg van dit hoofdstuk zullen de verschillende onderdelen van deze databank van naderbij bekeken worden.
31
figuur 5.1: relatieschema van de volledige databank 32
5.2 Algemene tabellen
figuur 5.2 : algemene tabellen
5.2.1 Tabel ‘fruit’ Deze tabel houdt alle soorten fruit bij waarvoor de databank gebruikt wordt. ‘id’ is een uniek nummer dat overeenkomt met een bepaald soort fruit waarvan de naam in het veldje ‘naam’ wordt opgeslagen. Voorlopig zal deze tabel enkel een record bevatten voor de appel. Later kunnen daar nog andere fruitsoorten bijkomen. Fruit is een soort, bijvoorbeeld appel of peer. Een variëteit is een onderverdeling van een soort fruit, bijvoorbeeld Granny Smith is een appelvariëteit en Conference is een perenvariëteit. Een vrucht is een exemplaar van een bepaalde variëteit, bijvoorbeeld één Granny Smith appel of één Conference peer. Vrucht en variëteit kunnen soms door elkaar gebruikt worden daar ze vrijwel het zelfde aanduiden.
5.2.2 Tabel ‘vrucht’ Deze tabel bevat de namen van de verschillende variëteiten. Deze tabel heeft de velden ‘id’ en ‘vruchtnaam’. Het veld ‘id’ houdt ook hier weer een nummer bij dat gebruikt wordt om referenties hiernaar te maken in andere tabellen. De naam van de vrucht wordt bijgehouden in het veld ‘vruchtnaam’.
5.2.3 Tabel ‘kenmerktype’ De tabel kenmerktype bevat alle determineerbare kenmerken van een fruitsoort. Elke fruitsoort bevat kenmerken die uniek zijn voor die soort. In werkelijkheid kunnen sommige kenmerken voor verschillende fruitsoorten elkaar overlappen. Maar vermits deze kenmerken wel andere kenmerkwaarden (of
33
afleiders) kunnen bezitten per fruitsoort, worden de kenmerken niet herbruikt. Deze tabel zal dus voor elke fruitsoort een andere lijst kenmerken bevatten. Het veld ‘id’ houdt een nummer bij dat overeenkomt met een bepaald kenmerktype. Het veld ‘fruitid’ komt overeen met de nummers (id) die staan in de tabel ‘fruit’. De naam van het kenmerktype wordt bijgehouden in het veldje ‘naam’. ‘Ouderkenmerk’ en ‘verplicht’ worden nog iets meer toegelicht. Het veldje ‘ouderkenmerk’ zorgt voor een hiërarchische structuur, zodat de opdeling gegeven in de lijst ook hier duidelijk naar voorkomt. Niet elk kenmerk in deze tabel heeft afleiders, sommigen hebben enkel subkenmerken. Kenmerken met afleiders hebben als ouderkenmerk het id van hun ouderkenmerk. Kenmerken zonder ouderkenmerk (null) en kenmerken met ouderkenmerk maar zonder afleiders zorgen enkel voor de opbouw van de structuur. Voorbeeld ter verduidelijking:
figuur 5.3 : inhoud van kenmerktype De kenmerken ‘kleur’ en ‘dooradering’ hebben als ouderkenmerk ‘3’. Als men bij de regel met id = 3 gaat kijken zal men ‘vruchtvlees’ als kenmerk vinden. Hieruit kan men afleiden dat ‘vruchtvlees’ het ouderkenmerk is van ‘kleur’ en ‘dooradering’. ‘Vruchtvlees’ op zijn beurt heeft als ouderkenmerk ‘2’. Op de regel met id = 2 vindt men het kenmerk ‘inwendig’. Vruchtvlees heeft dus als ouderkenmerk ‘inwendig’. Op dezelfde manier kan men het ouderkenmerk van ‘inwendig’ vinden: ‘vrucht’. Hier stopt het. ‘Vrucht heeft als ouderkenmerk ‘null’ en is bijgevolg het startkenmerk.
34
Het veldje ‘verplicht’ wordt gebruikt om aan te duiden welke kenmerken verplicht zijn en welke niet. De kenmerken waarvoor het veldje ‘verplicht’ waarde 1 (true) heeft zijn verplichte kenmerken. De kenmerken waarvoor dit veldje waarde 0 (false) zijn niet verplichte kenmerken.
5.2.4 Tabel ‘kenmerkwaarde’ De afleiders van de kenmerken zijn in de tabel ‘kenmerkwaarde’ terug te vinden. De velden ‘id’ en ‘waarde’ zijn gelijkaardig aan de velden ‘id’ en ‘naam’ uit de tabel ‘kenmerktype’. Het veld ‘kenmerktypeid’ bevat een verwijzing naar het kenmerk waarvan deze waarde een afleider is. Dit is het kenmerk waarvoor ‘kenmerktypeid’ overeenkomt met het veldje ‘id’ in de tabel ‘kenmerktype’. Tenslotte iets meer uitleg over het veld ‘waardenr’. Dit veld houdt waardenummers bij. Deze waardenummers worden gebruikt in het ‘PODO’-project waar dit eindwerk niets mee te maken heeft. De NBS vroeg echter expliciet om deze ook op te slaan in de databank. Zij zijn niet nuttig voor elk kenmerk en worden hier verder niet gebruikt.
5.2.5 Tabel ‘vruchtkenmerk’ In deze tabel worden de vruchten en hun kenmerken aan elkaar gekoppeld. Voor de kenmerken van een vrucht waarvoor ze een waarde kregen, kunt u hier een verwijzing vinden naar de waarde van dat kenmerk. Een variëteit (de vrucht) kan voor een kenmerk meerdere waarden hebben. Zo kan een Jonagold (appel) als grondkleur geelgroen of geel hebben. Beide mogelijkheden moeten worden opgeslagen in de databank. Dit wordt opgevangen in deze tabel, waar voor elk kenmerk de kenmerkwaarde wordt opgeslagen. De id van die bepaalde variëteit wordt aan de id van een bepaalde afleider voor een kenmerk gekoppeld. Deze worden bijgehouden in respectievelijk het veldje ‘vruchtid’ en het veldje ‘kenmerkwaardeid’. Meerdere kenmerkwaardeids van hetzelfde kenmerk kunnen aan eenzelfde vrucht gekoppeld worden.
5.3 Tabellen met extra informatie Deze tabellen bevatten de verschillende soorten namen van een vrucht, de bijkomende informatie over een vrucht en de referenties naar de literatuur waar meer informatie over bepaalde vruchten kan gevonden worden.
35
figuur 5.4: extra tabellen
5.3.1 Tabellen voor synoniemen en lokale namen Vruchten kunnen soms verschillende namen hebben. Zo is er de naam gegeven door de eerste beschrijver of de variëteitnaam. Deze slaan wij op in de tabel ‘vrucht’ onder ‘vruchtnaam’. Maar een variëteit kan onder meerdere namen gekend zijn. Deze delen we op in synoniemen en lokale namen. Deze worden opgeslagen in respectievelijk de tabellen ‘synoniem’ en ‘lokalenaam’.
5.3.2 Tabellen voor referenties Er was gevraagd om de mogelijkheid te voorzien om verwijzingen te maken naar boeken of magazines. Hiervoor werd de tabel ‘bibliografie’ toegevoegd. Hierin worden alle titels van de mogelijke referenties bijgehouden (veldje ‘boek’). Het veldje ‘id’ bevat ook hier weer een nummering. De verwijzing wordt gemaakt met behulp van de tabel ‘boekreferentie’. In deze tabel zijn er twee veldjes. Het veldje ‘vruchtid’ bevat het id van een vrucht uit de gelijknamige tabel. Het veldje ‘boekid’ bevat het id van een boek of magazine uit de tabel bibliografie. Er kunnen meerdere boeken gelinkt worden aan een bepaalde vrucht, voor het geval dat er in meerdere boeken informatie over een bepaalde vrucht kan gevonden worden. Een boek kan gelinkt worden aan meerdere vruchten, in één boek of magazine kan namelijk informatie staan over meer dan één vrucht. Tenslotte is er bij de tabel ‘bibliografie’ het veldje ‘ingebruik’ voorzien, dat aanduidt of een bepaalde referentie reeds gebruikt wordt bij één of meerdere vruchten. Als het veldje de waarde 1 bevat wil dit zeggen dat de referentie reeds gebruikt wordt, bij de waarde 0 is de referentie nog door geen enkele vrucht in gebruik genomen. 36
5.3.3 Tabellen voor bijkomende informatie Voor het catalogeren van de kenmerken is er gevraagd de mogelijkheid te voorzien om bijkomende informatie toe te voegen. Dit is informatie die niet van toepassing is bij het determineren, maar die wel handig kan zijn voor de gebruiker om te weten. Daarom wordt deze informatie op een aparte plaats bijgehouden. Deze bijkomende kenmerken worden bijgehouden in de tabel ‘bijkomendeinformatie’. Hier zijn twee veldjes voorzien, ‘id’ dat het id-nummer bijhoudt van een bepaald bijkomend kenmerk en ‘infotype’ waar de naam van het soort bijkomend kenmerk wordt bijgehouden (vb. “suikergehalte”, “aantalknoppen”). Deze tabel zal voor appel 13 records bevatten, één voor elk bijkomend kenmerk, maar kan later meerdere records gaan bevatten. Het linken van bijkomende informatie en het invullen ervan gebeurd met behulp van de tabel ‘vruchtinfo’. De veldjes ‘vruchtid’ en ‘infoid’ zorgen voor het linken. Het veldje ‘vruchtid’ houdt de id bij van de vrucht waarvoor de bijkomende kenmerken ingevuld worden. Het veldje ‘infoid’ houdt de id bij van het type bijkomende informatie. Het veldje ‘waarde’ tenslotte houdt de waarde bij van het bijkomende kenmerk. Voor meer informatie over de bijkomende kenmerken zie 4.1.2 .
5.4 Tabellen voor de helpfunctie
figuur 5.5: tabellen voor de helpfunctie
37
Bij het toevoegen van vruchten en bij het determineren zal het mogelijk zijn om een helpfunctie te starten. De tabellen uit figuur 5.5 zijn hiervoor gebruikt. Sommige kenmerken zijn vrij duidelijk. Zo zal iedereen wel begrijpen dat het kenmerk ‘verwerkingsmogelijkheden’ bij het ouderkenmerk ‘gebruik’ staat voor de verschillende manieren waarop men de vrucht kan verwerken. Het kenmerk ‘kleur lenticellen’ bij het hoofdkenmerk ‘vruchthuid en kleur’ echter is niet zo vanzelfsprekend. Daarom kan er voor de kenmerken een woordje uitleg opgeslagen worden. Dit gebeurt in de tabel ‘kenmerkuitleg’. De uitleg is wel maar van beperkte grootte. De uitleg mag niet groter zijn dan 255 karakters, spaties inbegrepen. Omdat ook de afleiders soms niet even duidelijk zijn voor iedereen kunnen er verduidelijkende prentjes worden bijgevoegd. Dit gebeurt in de tabel ‘kenmerkprentje’. In de databank zelf komen geen prentjes, wel de bestandsnaam. Deze bestandsnaam is geen willekeurig gekozen naam maar de waarde van deze afleider.
5.5 Tabellen voor de foto’s
figuur 5.6: tabellen voor de foto’s Het is mogelijk om foto’s van een vrucht bij te houden. Zo kan de databank foto’s bevatten van het vooraanzicht, het bovenaanzicht, het onderaanzicht, de dwarsdoorsnede en de lengtedoorsnede van een vrucht. Voor elke tabelrecord wordt een vruchtid bijgehouden. Het zijn niet de foto’s zelf die worden opgeslagen, maar wel de namen van de bestanden die naar deze foto’s verwijzen. De foto’s zelf worden bewaard op de server. 38
HOOFDSTUK 6 Code In dit hoofdstuk zal iets meer verteld worden over de code die er geschreven is en iets meer uitleg over bepaalde keuzes die hieromtrent gemaakt zijn. Er wordt niet bij alle code stilgestaan. Daarvoor is het project te uitgebreid.
6.1 Structuur Er zijn zes packages: algemeen, boom, databank, event, exceptions en GUI. Deze zullen in dit hoofdstuk verder besproken worden.
6.1.1 Algemeen In deze package staan alle klassen die aangemaakt zijn ter ondersteuning van al de overige klassen. Enkele voorbeeldjes hiervan zijn: AlgemeneConstanten, HulpFuncties, DigitDocument, BorderListener, ...
6.1.2 Boom Binnen de applicatie wordt veelvuldig gebruik gemaakt van een boomstructuur die alle informatie van een fruitsoort in zich houdt. Men kan deze structuur terugvinden bij toevoegen, wijzigen, determineren, de helpfunctie, … . Men kan ze ook in de databankstructuur terugvinden. De package ‘boom’ bevat alle klassen die rechtstreeks verband houden met die boomstructuur. De boomstructuur wordt aangemaakt met een eigen implementatie van JTree (klasse Boom). Er is ook een eigen implementatie gemaakt van DefaultMutableTreeNode (klasse Knoop) en zijn UserObject (klasse Kenmerk) om aan onze eigen specifieke behoeften te voldoen. Ook de klasse voorzien voor de bijkomende informatie wordt hier bijgehouden. Deze informatie wordt niet rechtstreeks in de boom opgeslagen, maar wordt wel op een gelijkaardige manier behandeld voor het catalogeren. Er is eveneens een klasse voorzien om gemakkelijk met referenties te kunnen werken, omdat hier naast de referentie zelf nog extra informatie nodig is (voor meer informatie zie 6.3 Bewerken van referenties).
39
6.1.2.1
Dynamisch opbouwen van de boom
Een van de belangrijkste functies van de klasse ‘Boom’ is het dynamisch construeren van de boomstructuur die doorheen het programma veelvuldig gebruikt wordt. In de functie ‘maakAppelBoom( )’ gaat het programma uit de tabel ‘kenmerktype’ van de databank alle records die verband houden met appel ophalen en deze opslagen in een tabel. Elke record komt overeen met een Kenmerk-object en dus met een Knoop-object in de toekomstige boom. Afhankelijk of het kenmerk een ouderkenmerk is of een determineerbaar kenmerk, worden er andere waarden meegegeven bij het instantiëren van een Knoop object. Daarom moet er eerst gekeken worden voor elke record of het kenmerk dat er mee overeenstemt een ouderkenmerk is of een determineerbaar kenmerk. Daarom wordt er gezocht naar een ander record waarvan de id gelijk is aan de ouderid van het geëvalueerde record. Indien de record een ouderkenmerk blijkt te zijn, wordt er een Knoop-object geïnstantieerd voor deze record en toegevoegd aan een tabel met alle uiteindelijke knopen. Indien de record geen ouderkenmerk is wordt ook hier een Knoop-object geïnstantieerd, maar eerst moet de naam van zijn toekomstig paneel geconstrueerd worden. De knoop wordt vervolgens aan zijn ouder toegevoegd.
figuur 6.1: opstellen van een boomstructuur Vervolgens wordt de tabel met knopen overlopen en voor elke knoop gekeken of die een ouder heeft. Indien dit zo is, wordt die knoop toegevoegd aan zijn ouder. Op het einde blijven er in de lijst van knopen enkel nog de topouderkenmerken staan. Deze worden rechtstreeks aan de het root-element van de boom toegevoegd.
40
Er zijn enkele extra kenmerken die in de boom kunnen bijgevoegd worden, maar waarop niet wordt gedetermineerd en daarom niet mee in de basisboom geplaatst worden. Deze extra kenmerken zijn de identificatiegegevens, de referenties en de foto’s. Er zijn hiervoor functies voorzien zodat de basisboom kan uitgebreid worden. Dit is echter niet dynamisch. Er is ook nog de bijkomende informatie, die enkel bewerkt wordt bij het catalogeren. Deze bijkomende kenmerken horen bij verschillende ouderkenmerken die reeds in de boom staan, maar ze worden in de databankstructuur op een aparte plaats bijgehouden. Om de boomstructuur niet te ingewikkeld te maken is er geopteerd om de bijkomende informatie niet toe te voegen aan de boom, maar om deze in een klasse apart onder te brengen. Mocht de tabel kenmerktype veranderen, zal ook de boomstructuur veranderen. Daardoor zullen ook GUI’s moeten aangepast worden. Het werd echter niet als haalbaar beschouwd om dynamisch GUI’s te laten genereren, vermits het over bijzonder veel kenmerken gaat en de schikking op de panelen overzichtelijk moet blijven.
6.1.3 Databank Hier staan de klassen die gebruikt worden voor het aanspreken van de databank. De klasse DBConnectie zorgt voor de connectie met de databank. Hiervan zijn een aantal andere klassen afgeleid, namelijk DeterminatieConnectie, ToevoegenConnectie, WijzigenConnectie, VerwijderenConnectie, KenmerkenConnectie en ReferentieConnectie. Deze zijn alle zes gelijkaardig. Voorbeeld: DeterminatieConnectie bevat de verschillende functies die gebruikt worden bij het ophalen van gegevens bij het determineren. Er zijn echter ook functies, zoals ‘int ophalenFruitId(String fruit)’,die ook gebruikt kunnen worden voor het toevoegen. Deze functies staan daarom niet in DeterminatieConnectie zelf maar staan in DBConnectie met als modificator protected.
6.1.4 Event Deze package bevat de klassen die gebruikt zijn om een nieuwe event en een nieuwe listener te creëren. Het raadplegen van de databank kan soms wel wat tijd vergen gezien de grote hoeveelheid kenmerken. Daarom werd er besloten van een verloopbalk weer te geven om de gebruiksvriendelijkheid van het programma te vergroten.
41
Om het verloop weer te geven moest er een manier bedacht worden om de informatie hieromtrent door te geven naar de GUI. Er werd gekozen voor het aanmaken van een nieuwe event en eventlistener. Aangezien deze niet echt bij de databank of de GUI alleen horen zijn ze ondergebracht in een aparte package. Meer uitleg hierover in 6.4.
6.1.5 Exceptions Bij het catalogeren wordt gebruik gemaakt van transacties. Dit om te voorkomen dat er bij het optreden van fouten bij het aanspreken van de databank data onvolledig zou worden opgeslagen. Daarom worden er door de connectieklassen die instaan voor het catalogeren exceptions opgeworpen en dit tot in de GUI, zodat hier een gepaste melding kan gegeven worden naar de gebruiker toe. Deze zelfgemaakte exceptions worden in deze package bijgehouden.
6.1.6 GUI Alle klassen in verband met de GUI worden ook in een aparte package bijgehouden. Deze package wordt verder opgedeeld al naargelang het onderdeel van de GUI. Zo is er de package ‘applicaties’ waarin alle deelapplicaties bijgehouden worden. De klassen die hierbij eventueel gebruikt worden staan in een andere package. De naam van de package refereert naar welke toepassing er gebruik van maakt. Bijvoorbeeld de klasse DeterminatieApplicatie zal gebruik maken van de panelen in de package ‘determinatieklassen’. Er zijn ook applicatie-klassen voor het wijzigen en het toevoegen. Deze maken echter gebruik van dezelfde panelen. Aangezien beide dienen om het catalogeren van de vruchten bij te houden, is er gekozen voor de naam catalogeerklassen om deze panelen bij te houden.
6.2 Catalogeren Bij toevoegen en wijzigen wordt de boomstructuur eerst uitgebreid met enkele extra kenmerken, namelijk de identificatiegegevens, referentie en foto’s. De structuur van deze kenmerken is als volgt: -
-
identificatiegegevens - variëteitnaam - synoniemen - lokale namen referenties - referentie
-
foto’s - vooraanzicht - bovenaanzicht - onderaanzicht - dwarsdoorsnede - lengtedoorsnede
42
6.2.1 WijzigenStart Bij het opstarten moet de gebruiker een variëteit kunnen kiezen. Hiervoor worden alle variëteiten van een bepaalde fruitsoort opgehaald uit de databank. Dit laatste gebeurd aan de hand van de verplichte kenmerken, aangezien deze de enigste kenmerken zijn die zeker in de databank zijn opgeslagen.
6.2.2 WijzigenApplicatie Als er een variëteit gekozen is, wordt de boom uitgebreid. De waarden die in de databank staan voor die bepaalde variëteit worden in de boom geladen. Als een paneel getoond wordt zullen de kenmerken die in de boom ingevuld staan ingevuld zijn op het paneel. Als er op annuleren geklikt wordt, moeten de oude waarden weer ingevuld worden op de panelen. Telkens een waarde gewijzigd wordt op het paneel wordt deze direct aangepast in de boom. Het is hierdoor niet mogelijk om de boom te gebruiken om de oude waarden op te zoeken. Daarom wordt er gebruik gemaakt van een hashmap om de oude waarden bij te houden. Het zal ook die hashmap zijn die gebruikt wordt voor het doorgeven van de wijzigingen naar de databank toe. De hashmap wordt aangemaakt en opgevuld tijdens het opvullen van de boom. Als key wordt de knoop horende bij een kenmerk gebruikt. De value is telkens een Vector die de waarden bevat die bij een kenmerk horen. In geval van annuleren worden de oude waarden uit de hashmap gehaald en bij het juiste kenmerk ingevuld in de boom. Vervolgens wordt het paneel opnieuw ingeladen en zullen de vorige waarden weer zichtbaar zijn. Het annuleren en toepassen is telkens per paneel voorzien. Als voor een bepaald paneel het toepassen wordt gestart, worden de gewijzigde kenmerkwaarden, van dat paneel, in de hashmap aangepast aan deze die in de boom staan. Op deze manier bevat de hashmap eigenlijk steeds een vorige toestand, vandaar de naam ‘vorigeToestand’ voor deze hashmap. Als de toepassing beëindigd wordt wanneer nog niet alle wijzigingen zijn “toegepast”, zal er gevraagd worden of deze wijzigingen alsnog moeten opgeslagen worden. Indien niet, wordt de hashmap ‘vorigeToestand’ rechtstreeks doorgegeven aan de databank. Anders moeten eerst de nog niet “toegepaste” waarden uit de boom opgehaald worden en in de hashmap geplaatst worden. Er wordt nog een tweede hashmap gebruikt, met de naam ‘gewijzigd’. Deze wordt gebruikt om bij te houden op welk paneel er wijzigingen zijn aangebracht die nog niet zijn “toegepast”. Als key heeft deze hashmap telkens het eerste kenmerk van een paneel en als value een boolean. De value is ‘true’ als er een wijziging
43
gemaakt is. Van zodra een wijziging “toegepast” wordt, wordt de value op ‘false’ gezet. Initieel is de hashmap ‘gewijzigd’ leeg. Pas als er voor de eerste keer een wijziging gemaakt wordt op een paneel wordt zijn eerste kenmerk toegevoegd aan de hashmap (met value op ‘true’). Op deze manier wordt voorkomen dat men de volledige boom moet overlopen om te controleren welke kenmerken gewijzigd zijn.
6.3 Bewerken van referenties Voor het bewerken van referenties van de tabel ‘bibliografie’ van de databank, wordt de ganse inhoud van de tabel uit de databank gehaald. Deze lijst kan bewerkt worden via de ReferentiesApplicatie. Deze wordt uitgebreid besproken in 8.5. Het grote probleem hierbij is dat deze herwerkte lijst anders kan zijn dan de lijst die in de databank staat. In het slechtste geval moet er voor elke record gecontroleerd worden of een bepaalde referentie reeds in de databank staat of niet. Als er referenties in de databank staan die niet meer in de herwerkte lijst staan, wil dit zeggen dat de gebruiker ze net heeft verwijderd en dan moeten deze referenties uit de databank verwijderd worden. De moeilijkheid hier is dat het kan zijn dat een zonet verwijderde referentie verbonden is met een vrucht. De referentiële integriteit komt dan in het gedrang. Eerst moet er gecontroleerd worden of deze situatie zich wel degelijk voordoet. Als dit zo is, moet er eerst aan de gebruiker gevraagd worden of hij zeker is dat hij deze referentie wil verwijderen, aangezien deze verbonden is aan één of meerdere vruchten. Daarna pas kan de referentie uit de tabel ‘bibliografie’ verwijderd worden, als de eventuele verbinding tussen vrucht en boek verbroken is. Dit alles leek nogal omslachtig en niet echt performant. Als eerste hulpmiddel werd de oorspronkelijke tabel van ‘bibliografie’ uitgebreid met een extra veldje ‘ingebruik’ (zie 5.3.2). Aan de hand hiervan kan men direct weten of er reeds een verbinding bestaat tussen een referentie en een vrucht. Er moeten dus geen extra queries meer uitgevoerd worden. Ook is er een klasse Referentie aangemaakt (in de package boom). Deze klasse bevat, naast de velden die ook in de databank staan, twee extra attributen van het type boolean: ‘nieuw’ en ‘verwijderd’. Voor elke record die wordt opgehaald uit de tabel ‘bibliografie’ wordt er een Referentie-object aangemaakt. Deze objecten worden in de lijst geplaatst waar verder mee gewerkt zal worden. Het attribuut ‘nieuw’ wordt gebruikt voor referenties die nieuw zijn in de lijst. Nu moet alleen maar gecontroleerd worden bij welke referenties dit attribuut 44
de waarde ‘true’ heeft om te weten of het nog moet toegevoegd worden aan de databank. Het attribuut ‘verwijderd’ wordt op gelijkaardige wijze gebruikt voor referenties in de lijst die mogen verwijderd worden uit de databank. Als een referentie uit de visuele lijst op de GUI verwijderd wordt, wordt deze echter niet verwijderd uit de onderliggende lijst, maar krijgt het attribuut ‘verwijderd’ de waarde ‘true’. Aan de hand van dit attribuut kan er beslist worden of een referentie al dan niet uit de databank moet verwijderd worden. Deze attributen hebben als voordeel dat nu niet heel de tabel ‘bibliografie’ moet overlopen worden om te weten welke referenties nieuw zijn en welke referenties mogen verwijderd worden.
6.4 Verloop De bewerkingen die verband houden met de databank kunnen soms wat tijd in beslag nemen. Daarom wordt er een progressiebericht voorzien om de gebruiker op de hoogte te houden. De meest voornaamste bewerkingen die hiervan gebruik maken zijn determineren, toevoegen en wijzigen. Hiervoor wordt er een eigen implementatie gemaakt van de klasse JProgressBar om zelf een verlooppaneel aan te maken (de klasse VerloopPaneel). Het probleem dat hier ondervonden werd, was dat het schermpje om het verloop te laten zien wel zichtbaar werd, maar volledig leeg bleef, zoals te zien in figuur 6.2. Dit kwam doordat de bewerkingen in verband met de databank en het progressiebericht in dezelfde thread zaten. Hierdoor moesten de aanpassingen aan het progressiebericht wachten tot de databank gedaan had. Het probleem werd opgelost door gebruik te maken van de klasse SwingWorker.
figuur 6.2 : leeg verloop-scherm Door de klasse SwingWorker te gebruiken kunnen de bewerkingen die verband houden met de databank op de achtergrond uitgevoerd worden. Er komt wel iets meer code aan te pas om databankacties uit te voeren. Het gebruik van SwingWorker wordt in volgend voorbeeld geïllustreerd.
45
final VerloopListener vl = this; final SwingWorker worker = new SwingWorker() { public Object construct() { boom.opvullenDB(vl,vrucht); return null; } }; worker.start();
De functie construct van de klasse SwingWorker moet overschreven worden. Ze moet de functie bevatten die in de achtergrond moet uitgevoerd worden. In dit voorbeeld is dat het opvullen van de databank. Het aanpassen van het verloop bij het progressiebericht moet gebeuren telkens er een databankbewerking wordt uitgevoerd voor een kenmerk. Deze databankbewerkingen vinden plaats in de klasse DBConnectie en zijn afgeleide klassen, horende tot de package ‘databank’. Het progressiebericht zelf is een GUI en hoort hier dus niet thuis. Daarom werd er besloten om deze databank-klassen events te laten opwerpen. Hiervoor werden de klassen VerloopEvent en VerloopListener geschreven. Aan de klasse DBConnectie werd dan extra code toegevoegd, aangezien het deze klasse (en zijn afgeleide klassen) is die events zal opwerpen. private Vector listeners = new Vector(); public synchronized void addVerloopListener(VerloopListener vl){ listeners.add(vl); } protected synchronized void removeVerloopListener(VerloopListener vl){ listeners.remove(vl); } protected synchronized void verwittigGeevalueerd(Object bron, int tijd){ VerloopEvent ve = new VerloopEvent(bron,tijd); Enumeration en = listeners.elements(); while(en.hasMoreElements()){ ((VerloopListener) en.nextElement()).kenmerkGeevalueerd(ve); } }
Met addVerloopListeners en removeVerloopListeners kunnen er listeners toegevoegd en verwijderd worden. De functie verwittigGeevalueerd zorgt ervoor dat de event opgegooid wordt. Deze functies moeten geplaatst worden daar waar er een signaal moet doorgestuurd worden naar die klassen die deze VerloopListener implementeren. Er zijn op deze manier functies voorzien voor het toevoegen, evalueren en wijzigen van gegevens aan de databank. Er wordt als parameter 46
telkens de tijd doorgegeven. Deze tijd kan opgevraagd worden door de functie getVerlooptijd uit de klasse VerloopEvent. Het is deze tijd die gebruikt kan worden om de waarde op de verloopbalk aan te passen. In de klasse VerloopPaneel zijn functies voorzien om het aanpassen van de waarde van de verloopbalk eenvoudig te laten verlopen.
6.5 Paswoord en gebruikersnaam Op het secretariaat van de Nationale Boomgaarden Stichting wordt de databank op de server gedraaid. Indien men op tentoonstellingen gaat staan, kan men moeilijk zomaar de server meenemen. Daarom is er de mogelijkheid om alle data uit de databank te exporteren en in een nieuwe databank, op een andere computer te importeren. Zo kan er niets gebeuren met de echte databank als men op verplaatsing is. Toch wil men voorkomen dat de tentoonstellingsbezoekers wijzigingen kunnen doorvoeren op de tweede databank. Daar zijn andere tentoonstellingbezoekers niet mee geholpen. De informatie die zij krijgen moet juist zijn. Opdat men wil voorkomen dat tentoonstellingsbezoekers wijzigingen kunnen doorvoeren in de tweede databank moet er één of andere beveiliging ingebouwd worden. We willen voorkomen dat de tentoonstellingbezoekers naar het startmenu van het programma kunnen terugkeren. Daar zouden ze immers kunnen kiezen om vruchten uit de databank te wijzigen of verwijderen. We moeten dus vermijden dat ze het huidige deel van het programma, determineren voor leken, kunnen afsluiten. Ze mogen ook niet in de mogelijkheid zijn om het volledige programma af te sluiten of een nieuw exemplaar van het programma op te starten. Daarom zijn een aantal voorzorgsmaatregelen getroffen. Het paneel dat zichtbaar is tijdens het determineren zet zich automatisch naar ‘full-screen size’. Dit wil zeggen dat de Windows takenbalk en het Start-menu van Windows niet zichtbaar zijn. Men kan het paneel niet verkleinen of afsluiten. Er zal ook geen toetsenbord beschikbaar zijn voor de tentoonstellingsbezoekers. Ze hebben het immers niet nodig, want alles gebeurt via de muis, en kunnen zo via Ctrl-Alt-Del ‘Windows Taakbeheer’ niet oproepen. Afsluiten gebeurt via het ‘stop’-menu in de menubalk. Er wordt bij het afsluiten om een gebruikersnaam en paswoord gevraagd. Op die manier kunnen enkel de mensen die deze kennen terug naar het startmenu van het programma. De gebruikersnaam en het paswoord worden aangemaakt bij het installeren van het programma. Deze wordt geëncrypteerd in een configuratiebestand opgeslagen. De encryptie gebeurt met behulp van MD5. Opgelet: de gebruikersnaam en het paswoord worden lokaal opgeslagen, niet op de server. Deze kunnen dus voor elke computer verschillend zijn.
47
6.6 Van individuele fiche naar bestand in PDF-formaat Binnen het programma is het mogelijk om de individuele fiche van een variëteit op te vragen. Omdat het handig kan zijn deze af te printen of door te sturen naar een geïnteresseerde is het mogelijk gemaakt om deze fiche naar PDFformaat om te zetten. Hiervoor wordt gebruik gemaakt van FOP. In de bijlagen is er een voorbeeld van een individuele fiche in PDF-formaat. FOP was de eerste print formatter gebaseerd op XSL-FO en tevens de eerste output onafhankelijke formatter. FOP maakt deel uit van het ‘Apache XML project’ en is een open-source Java API. Als input verwacht het programma een ‘formatting object’- boom om aan de hand hiervan de inhoud naar het gewenste formaat om te zetten. Het belangrijkste output formaat is PDF (tevens het best ondersteund), maar er zijn ook verschillende andere output formaten mogelijk zoals TXT, SVG, AWT, MIF, en PS. In plaats van een XSL-FO bestand als input kan FOP dit XSL-FO bestand zelf genereren aan de hand van een XML inputbestand en een XSLT stylesheet. Dit is de manier waarop FOP in dit project gebruikt wordt. FOP heeft als uiteindelijk doel om de XSL-FO versie 1.0 W3C Recommandation te implementeren. Voorlopig echter is nog niet de volledige standaard geïmplementeerd. Toch heeft FOP reeds de reputatie om beter te zijn dan vele andere gratis tools. Bovendien schommelen de prijzen van commerciële tools tussen $80 en $5.000. Voor ons gebruik blijkt de huidige stand van zaken meer dan voldoende.
figuur 6.3 : verloop PDF generatie
48
Er is een XSLT-bestand gemaakt: ‘opmaak.xsl’. Dit bestand beschrijft de opmaak van het toekomstige PDF-bestand. Indien de gebruiker een PDF wil van een bepaalde variëteit, wordt er aan de hand van de gegevens in de databank een ‘input.xml’ bestand gegenereerd. Deze twee bestanden worden meegegeven aan het FOP-programma. Er wordt een tijdelijk XSL-FO bestand gegenereerd. Daaruit wordt het PDF-bestand aangemaakt. Hieronder zal er een fractie van de bestanden worden weergegeven. Elk stuk bestand geeft het stuk code dat de synoniemen en lokale namen behandeld. ‘tussen.fo’ is het XSL-FO bestand dat intermediaire code bevat. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:template match="root"> ... <xsl:text>1. Naamgeving <xsl:apply-templates select="namen"/> ... <xsl:template match="namen"> * <xsl:text>Synoniemen <xsl:apply-templates select="synoniemen"/> *
49
<xsl:text>Lokale namen <xsl:apply-templates select="lokalenamen"/> ...
opmaak.xsl ... <synoniemen> <synoniem>Belle de Boskoop <synoniem>Goudreinette <synoniem>Goudrenet <synoniem>Schoner von Boskoop Reinette Monstrueuse Reinette von Mondforte ...
input.xml ... 1. Naamgeving * Synoniemen -
50
Belle de Boskoop ... * Lokale namen - Reinette Monstrueuse ...
tussen.fo
figuur 6.3: fragment van het uiteindelijke PDF-bestand 51
6.7 Kenmerkinformatie aanpassen Opdat de gebruiker gebruik zou kunnen maken van de helpfunctie bij het toevoegen, wijzigen en determineren dient er natuurlijk eerst een deel informatie ingegeven te worden. Dit kan via de ‘Kenmerken bewerken’ toepassing. Binnen deze toepassing kan de gebruiker voor elk kenmerk een woordje uitleg ingeven en voor elke afleider kan er een figuur worden ingegeven. Kenmerk is hier een zeer breed begrip. In deze context bevat kenmerk de naamgeving, determineerbare kenmerken, bijkomende kenmerken, referentie en foto’s. Voor de determineerbare kenmerken is er een eenvoudige methode om de ingegeven informatie op te slaan. Er is een tabel ‘kenmerkuitleg’ in de databank waarin de uitleg van het bijhorende kenmerk wordt opgeslagen. Er is ook een tabel ‘kenmerkprentje’ dat de naam van de figuur horende bij een afleider opslaat. Het eigenlijke prentje wordt in een map op de server bijgehouden. In deze map vindt men weer de hiërarchische boomstructuur van de determineerbare kenmerken terug. Zo zal het prentje van de afleider ‘ovaal’ van het kenmerk ‘vorm’ van pitten terug te vinden zijn in de map C://maludet/kenmerkfigs/vrucht/inwendig/pitten/vorm/ovaal.jpg van de server. Deze hiërarchie is er omdat verschillende kenmerken wel gelijknamige afleiders kunnen hebben, maar de figuren van de afleiders daarom niet gelijk zijn. Op deze manier is het pad naar de figuur ook gemakkelijk af te leiden van het kenmerkpad van het kenmerk waartoe de afleider behoort. Voor alle andere kenmerken (naamgeving, bijzondere kenmerken, referentie en foto’s) zijn er geen tabellen in de databank die deze informatie bijhouden. Dit omdat de structuur van de databank er zich niet makkelijk toe leent. Omdat het maar over een beperkt aantal kenmerken gaat, is er gekozen om te werken met een configuratiebestand in plaats van de databankstructuur onnodig groter én ingewikkelder te maken. Bovendien is er voor elk kenmerk dat in het configuratiebestand komt te staan maar 1 figuur van toepassing. Daarom is er voor de volgende structuur gekozen voor een kenmerkregel in het bestand: naam_van_kenmerk£uitleg_van_kenmerk£bestandsnaam_van_prentje Indien er voor een bepaald kenmerk geen uitleg en geen prentje is ingegeven, is er geen regel voor dat kenmerk in het configuratiebestand. Indien enkel de uitleg of het prentje gegeven zijn, wordt de andere vervangen door ‘ ‘. Dit omdat de StringTokenizer anders maar twee tokens herkent. Dit zou problemen geven. Er is maar één kenmerkregel per kenmerk in het bestand mogelijk.
52
Omdat de gegevens die in het configuratiebestand staan nodig kunnen zijn bij de helpfunctie, die kan opgeroepen worden tijdens het determineren, toevoegen en wijzigen, worden ze ingelezen bij het opstarten van het programma. Ze worden in de klasse ‘ExtraInfo’ in een Hashmap gestoken. Het is deze klasse die verantwoordelijk is voor het inlezen en uitschrijven van de gegevens. Het uitschrijven gebeurt enkel indien er wijzigingen kunnen gebeurd zijn, dit is bij het verlaten van de toepassing ‘Kenmerken bewerken’. Omdat er twee mogelijke manieren zijn om een willekeurig kenmerk te behandelen (via databank of de klasse ‘ExtraInfo’), moet men te weten kunnen komen welke handeling van toepassing is. Daarom heeft de klasse Knoop een extra attribuut ‘special’. Determineerbare kenmerken hebben voor dat attribuut als waarde ‘false’, al de andere ‘true’.
6.8 Klikbare rand Bij het ‘determineren in expertmodus’, het toevoegen en het wijzigen is het mogelijk om meer informatie op te roepen over een kenmerk of zijn afleiders door dubbel te klikken op de naam van het kenmerk op het paneel. Op die manier opent de helpfunctie zich voor dat kenmerk specifiek. Die klikbare naam is eigenlijk een klikbare boord. Dit wordt bekomen door twee panelen boven elkaar te plaatsen. Het onderste paneel krijgt de TitledBorder met de naam van het kenmerk en wordt klikbaar gemaakt door er een afgeleide klasse van MouseAdapter, BorderListener, aan te hangen. Het bovenste paneel is niet klikbaar. Op die manier is enkel het ‘zichtbare’ gedeelte van het onderste paneel, de rand, klikbaar.
6.9 Installatiewizard Om het programma makkelijk te kunnen installeren is er een installatiewizard voorzien. Deze zorgt dat de nodige mappen aangemaakt worden en de nodige gegevens naar deze mappen gekopieerd worden. Hiervoor worden er nieuwe bestanden aangemaakt met behulp van de klasse File. Vervolgens wordt de inhoud van het ene bestand naar het andere bestand gekopieerd. Dit gebeurt door gebruik te maken van de klasse FileChannel. Hiermee kan je data van de ene File naar de andere File transfereren.
53
private void bestandKopieren(String van, String naar){ File naarFile = new File(naar); machtigingenInstellen(naar); try { FileChannel srcChannel = new FileInputStream(van).getChannel(); FileChannel dstChannel = new FileOutputStream(naar).getChannel(); dstChannel.transferFrom(srcChannel, 0, srcChannel.size()); srcChannel.close(); dstChannel.close(); } catch (IOException e) { System.err.println("Fout bij kopieren bestanden: " + e.getMessage()); } }
Bij het aanmaken van nieuwe bestanden en mappen moet er echter wel opgelet worden. Voor sommige mappen en bestanden is het de bedoeling dat ze gedeeld worden over het lokale netwerk. Bij sommige besturingssystemen (o.a. Windows XP Home Edition) worden de machtigingen van deze bestanden en mappen echter niet meteen ingesteld voor de gebruiker ‘Iedereen’ (‘Everyone’). Hiervoor moet het commando ‘cacls’ gebruikt worden. Dit commando zorgt ervoor dat de Access Control Lists juist ingesteld worden. Dit commando moet uitgevoerd worden van op de commandline. Hiervoor wordt in het programma gebruik gemaakt van volgende code: Runtime.getRuntime().exec("cmd /c " + commando);
De installatiewizard plaatst ook een shortcut op het bureaublad en maakt de databank aan. Voor beide is er een batch bestand aangemaakt die elk met bovenstaande code kunnen uitgevoerd worden. Er is één server die alle nodige informatie bevat. Het is dus nodig dat de andere computers in het netwerk weten welke computer er juist server is. Deze informatie wordt gevraagd bij de installatie. De naam van de computer (of “C:\” als het de server zelf is) wordt opgeslagen in het bestand ‘servernaam’. Deze naam wordt dan gebruikt om het pad naar de gedeelde bronnen te bepalen. Er wordt ook een login en paswoord ingegeven voor de tentoonstellingsapplicatie (zie 8.4.2). Deze gegevens worden lokaal bijgehouden in het bestand user.
6.10 Implementatiekeuzes Dit programma is gemaakt door twee personen. Lyssens Liesbeth nam vooral het catalogeren voor haar rekening en Laukens Joke vooral het determineren. Doordat het eindwerk geschreven is door twee personen komen sommige implementatiekeuzen soms niet helemaal overeen. Uiteraard is er veel overleg geweest, maar sommige implementatiekeuzen waren afhankelijk van de te programmeren toepassing. 54
HOOFDSTUK 7 Installatie In dit hoofdstuk wordt beschreven hoe het programma gebruiksklaar wordt gemaakt. Dit vergt de installatie van een aantal extra programma’s. Bovendien kan u hier vinden wat er moet gebeuren indien de NBS het programma wil gebruiken op tentoonstellingen.
7.1 Databanksysteem (MySQL®) De hier beschreven installatie is van toepassing op Windows 2000 en Windows XP. MySQL moet enkel geïnstalleerd worden op de computer die als server dienst doet. MySQL unzippen + installeren 1 2 3 4 5
Haal het zip-bestand mysql-4.0.18-win uit de map “installatie” van op de bijgeleverde CD Unzip dit bestand in een tijdelijke map Dubbelklik in de tijdelijke map op het bestand ‘setup.exe’. Dit zal de wizard voor de installatie opstarten. In de wizard mag steeds op de knop ‘next’ geklikt worden. Als de wizard zichzelf gesloten heeft zonder foutmeldingen, is de software goed geïnstalleerd.
Pad6 juist instellen 1 2 3 4
5 6
Open Verkenner, klik met de rechter muisknop op ‘Deze Computer’ en kies ‘Eigenschappen’. Er zal een nieuw venster verschijnen. Klik op het tabblad ‘Geavanceerd’. Op dit tabblad moet op de knop ‘Omgevingsvariabelen’ geklikt worden. Weer zal een nieuw venster verschijnen. In de onderste lijst, bij de omgevingsvariabelen, moet nu path geselecteerd worden (dit staat in de kolom ‘variabelen’). Deze kan geselecteerd worden door er op te klikken met de linker muisknop. Klik op de knop ‘bewerken’. Op het nieuw verschenen venster is er een tekstveld zichtbaar. Achteraan de tekst in dit tekstveld moet ;C:\mysql\bin toegevoegd worden. Let op, vergeet de puntkomma vooraan niet!
6
het pad instellen zorgt ervoor dat u in de command prompt gewoon mysql kan intikken, zonder eerst naar de juiste map te hoeven gaan.
55
7
Tenslotte er in alle vensters die openstaan op OK geklikt worden. Hierdoor zullen de vensters zich sluiten en worden de wijzigingen opgeslagen.
Enkele laatste instellingen 1
2
Open een command prompt venster. Deze kan opgestart worden door op ‘Start’ te klikken en vervolgens op ‘Uitvoeren’. Er wordt een venster met een tekstveld getoond. In dit tekstveld moet er cmd ingetikt worden en vervolgens geklikt worden op de knop OK. Tik in deze command prompt mysqld --install in en druk dan op de returntoets. Dit zorgt ervoor dat de MySQL service automatisch opgestart en afgesloten wordt bij respectievelijk het opstarten en afsluiten van de computer.
Tenslotte nog even de computer herstarten en MySQL zou klaar moeten zijn voor gebruik. Om te testen of het goed geïnstalleerd is, kan in een command prompt mysqlshow ingetikt worden. Als alles goed verlopen is wordt er een kleine tabel zichtbaar met de titel “databases”.
7.2 Java Om het programma te kunnen gebruiken moet Java op elke computer geïnstalleerd worden. De gebruikte versie van Java is van toepassing op Windows 98, Windows XP, Windows 2000 en Windows Server 2003. Indien er problemen ondervonden worden bij de installatie kan het nodig zijn om een Service Pack moet te installeren. Meer informatie hierover kan teruggevonden worden op “http://support.microsoft.com/default.aspx?scid=fh;EN-US;sp” Java installeren 1
2 3 4
Op de cd, in de map “installatie” kan het bestand j2re-1_4_2_04-windows-i586-p.exe gevonden worden. Om de installatiewizard te starten moet er hierop dubbel geklikt worden (met de linkermuisknop). Vooreerst zal de License Agreement te zien zijn. Om Java te kunnen installeren moet onderaan “I accept the terms in the license agreement” aangeklikt worden. Vervolgens mag steeds op de knop ‘next’ geklikt worden. Op het einde op de knop ‘finish’ klikken. Het installatieproces is nu voltooid.
56
7.3 NBS - MaluDet Tot slot kan nu het eigenlijke programma geïnstalleerd worden. 1 2
3 4
5 6
Het bestand installeren.jar kan gevonden worden in de map “installatie/maludet” op de cd. Door hier dubbel op te klikken zal de installatiewizard gestart worden. Hier kan opgegeven worden of de computer waarop het programma moet geïnstalleerd worden de server is of niet. Indien dit niet het geval is moet de naam opgeven worden van de computer die dienst doet als server. Vervolgens moet ook een gebruikersnaam en paswoord opgegeven worden. Deze dienen om de tentoonstellingsapplicatie te kunnen afsluiten (zie hoofdstuk 8.4.2). Als er op ‘Voltooien’ geklikt wordt en de gegevens correct zijn ingevuld zal de installatie uitgevoerd worden. Anders wordt er een boodschap getoond van wat er mis is en kan dit alsnog aangepast worden. Het programma wordt geïnstalleerd in de map C:\maludet. Op de desktop wordt een snelkoppeling geplaatst naar het programma, zodat er niet telkens naar deze map moet gegaan worden.
Alles is nu geïnstalleerd en het programma is klaar voor gebruik.
7.4 Tentoonstelling De computer die op tentoonstellingen wordt gebruikt moet geconfigureerd worden als een server. Het databanksysteem, Java en NBS-MaluDet moeten daarvoor, zoals hierboven uitgelegd, geïnstalleerd worden. Op het moment dat dit gebeurd is, kan het programma gebruikt worden, maar is de databank nog leeg. De databank moet worden opgevuld met dezelfde variëteiten als die op de server op het secretariaat van de Nationale Boomgaarden Stichting. Daarvoor moeten de volgende stappen ondernomen worden. Op de server op het secretariaat: 1
2 3
In de map ‘C:\maludet\databank\’ kan het bestand ‘overzetten_db.bat’ gevonden worden. Door op dat bestand te dubbelklikken wordt er automatisch een nieuw bestand gegenereerd namelijk ‘tentoondb.sql’. Dit bestand moet overgezet worden naar de computer die op de tentoonstelling gaat. Dit kan bijvoorbeeld met een diskette. De map met de foto’s van de vruchten, namelijk C:\maludet\fruitfigs, zelf moet eveneens gekopieerd worden. Dit kan via diskette, cd-rom of via het netwerk. Merk wel op dat de inhoud van deze map groot 57
kan zijn, daar ze veel foto’s kan bevatten. Indien de map te groot is, kan zippen een oplossing bieden. Op de computer van de tentoonstelling: 1 2 3
4
Installeer eerst het databanksysteem, Java en NBS-MaluDet. Plaats het bestand ‘tentoondb.sql’ in de map ‘C:\maludet\databank\’. In diezelfde map moet er dubbelgeklikt worden op het bestand ‘invoeren_copy_db.bat’. Er zal zich een command prompt openen. Gelieve dit niet af te sluiten, het zal zichzelf afsluiten na een tijdje. Nadien is de databank geïnitialiseerd. De map C:\maludet\fruitfigs moet vervangen worden door de map met de foto’s die van de server werd gehaald.
58
HOOFDSTUK 8 Handleiding In dit hoofdstuk wordt uitgebreid uitgelegd hoe men met het programma moet werken. Er is uitgegaan van een minimale basiskennis. Soms worden keuzen die gemaakt zijn bij het programmeren uitgelegd, opdat het duidelijk zou zijn, waarom sommige dingen in het programma zijn zoals ze zijn.
8.1 Gemaakte afspraken 8.1.1 Ingeefmogelijkheden Er zijn verschillende manieren om de gegevens in te geven. Eén daarvan is door middel van radiobuttons (zie figuur 8.1). Dit zijn de kleine cirkels met waarden ernaast. Ze zijn gegroepeerd binnen een kader. Hiervan kan men er slechts één per kenmerk aanklikken. Merk op dat als er éénmaal een radiobutton is aangeklikt er altijd één radiobutton van de groep aangeklikt zal blijven. De enige manier om een ingevulde waarde te verwijderen, is door gebruik te maken van de wisfunctie (voor meer info zie 8.7).
figuur 8.1: radiobuttons Een speciale vorm van radiobuttons zijn togglebuttons (zie figuur 8.2). In plaats van cirkeltjes met een waarde ernaast heeft men hier knoppen. Op deze knoppen vindt men altijd een figuur terug en meestal een waarde. Indien er geen waarde aanwezig is op de knop, is dit omdat de naam niet relevant is en de figuur duidelijk genoeg is. Ook togglebuttons zijn gegroepeerd binnen een kader en er kan maar één togglebutton tegelijk ingedrukt zijn. Evenals bij radiobuttons zal er, éénmaal er een togglebutton aangeklikt is, altijd één togglebutton van de groep aangeklikt blijven. Ook hier moet er gebruik gemaakt worden van de wisfunctie om de ingevulde waarden te verwijderen.
59
figuur 8.2 : togglebuttons Een andere manier zijn checkboxen (zie figuur 8.3). Dit zijn vierkantjes die men kan aanvinken. Hiervan kan men er zoveel aanvinken als men wilt. Men kan ze “uitvinken” door gebruik te maken van de wisfunctie of door er nogmaals op te klikken. Checkboxen worden gebruikt bij kenmerken waar meerdere waarden kunnen ingegeven worden.
figuur 8.3 : checkboxen Er kan ook gebruik gemaakt worden van lijsten. Eén element uit de lijst selecteren gebeurt met een enkele muisklik op het te selecteren element. Indien men meerdere elementen tegelijk wilt selecteren, moet men tijdens het klikken de Ctrl-toets ingedrukt houden. Dit is echter niet altijd mogelijk, in sommige lijsten kan men slechts één waarde per keer selecteren. Met behulp van de knoppen kan men beslissen wat er met de geselecteerde waarden moet gebeuren. Soms wordt er met twee lijsten (zie figuur 8.4) gewerkt. De rechtse lijst bevat de geselecteerde waarden en de linkse lijst de niet-geselecteerde waarden. Men kan waarden toevoegen uit de linkse lijst en verwijderen uit de rechtse lijst door gebruik te maken van de voorziene knoppen. Waarden aanduiden uit één van deze lijsten gebeurt op dezelfde manier als hiervoor beschreven.
60
figuur 8.4 : lijsten Nog een andere manier zijn dropdownlists (zie figuur 8.5). Hierbij kan slechts één waarde geselecteerd worden. Om de volledige lijst met waarden te zien, moet men klikken op de witte rechthoek. Met behulp van de schuifbalk rechts kan men de waarden te zien krijgen die niet zichtbaar zijn in het vakje. Indien men de ingegeven waarde wil annuleren, kan men de wisfunctie gebruiken of moet men het allereerste element in de lijst aanklikken. Dit zal meestal “…” zijn.
figuur 8.5 : dropdownlist Men kan ook een tekstveld tegenkomen (zie figuur 8.6). Hierin kan men tekst intypen. Als dit tekstveld alleen voorkomt, is het intypen van tekst voldoende. Sommige tekstvelden kunnen enkel numerieke waarden bevatten. Het is bij deze tekstvelden niet mogelijk om iets anders in te vullen. Indien men dit toch probeert, zal dit enkel een “beep”-geluidje tot gevolg hebben.
figuur 8.6 : tekstveld
61
Het is ook mogelijk dat een tekstveld met knoppen gebruikt wordt, om waarden toe te voegen aan een lijst. De opbouw is meestal zoals in figuur 8.7, met rechts het tekstveld, in het midden de knoppen en links de lijst. In eerste instantie is het niet mogelijk om op de knoppen ‘Toevoegen of ‘Verwijderen’ te klikken, zoals te zien in onderstaande figuur.
figuur 8.7 : leeg Van zodra men in het tekstveld, links van de knoppen, een waarde ingeeft, zal de knop ‘Toevoegen’ aanklikbaar worden. Als men vervolgens op deze knop klikt, zal de ingegeven waarde in de rechter lijst komen te staan, het linkse tekstveld zal leeg zijn en het zal niet meer mogelijk zijn om op de knop ‘Toevoegen’ te klikken. Er moet dus telkens iets ingevuld zijn in het tekstveld alvorens er op de knop ‘Toevoegen’ geklikt kan worden (zie figuur 8.8).
figuur 8.8 : toevoegen van een synoniem Het verwijderen van een waarde uit de lijst doet u door de te verwijderen waarde in de rechterlijst aan te klikken met uw linker muisknop (zie figuur 8.9). De knop ‘Verwijderen’ kan nu aangeklikt worden. Als men op deze knop klikt, wordt de waarde definitief uit de lijst verwijderd. Het is ook mogelijk om meerdere waarden tegelijk te verwijderen uit de lijst. Hiervoor moet men, tijdens het aanklikken van de te verwijderen waarden, de Ctrl-toets ingedrukt houden. Als men nu op de knop ‘Verwijderen’ klikt zullen alle aangeduide waarden uit de lijst verwijderd worden, dit eveneens definitief.
62
figuur 8.9 : verwijderen van een synoniem Tenslotte wordt er soms gebruik gemaakt van schuifpanelen met checkboxen in (zie figuur 8.10). Dit komt voor bij het catalogeren van referenties en verplichte kenmerken. Het is namelijk mogelijk om bij beide meerdere waarden in te geven. Aangezien bij sommige verplichte kenmerken en bij de referenties het aantal checkboxen echter te groot zou zijn, is er gekozen om ze in een schuifpaneel te plaatsen. Het gebruik ervan komt overeen met het gebruik van gewone checkboxen. Het enige verschil is dat er nu, net zoals bij lijsten en dropdownlists, gebruik moet gemaakt worden van een schuifbalk om waarden te zien die anders niet meteen zichtbaar zijn.
figuur 8.10 : schuifpaneel met checkboxen
8.1.2 Schermen en panelen Doorheen de tekst die volgt zullen de woorden ‘scherm’ en ‘paneel’ vaak voorkomen. Omdat dit verwarrend kan zijn, worden beide termen uitgelegd. Een scherm is opgebouwd uit panelen. Het bevat altijd minstens één paneel maar meestal meerdere. Een paneel is altijd een onderdeel van een scherm, het kan niet op zichzelf voorkomen. Op onderstaande figuur is het scherm met een groene rand omgeven, twee voorbeelden van panelen zijn door een rode rand omgeven.
63
De inhoud van een paneel kan sterk verschillen. Ze kan een enkele knop bevatten of de totale inhoud van een scherm.
figuur 8.11 : verschil tussen scherm en paneel
8.1.3 Kenmerkpanelen Er zijn panelen met kenmerken voorzien voor alle rechtstreekse ouderkenmerken. Met rechtstreekse ouderkenmerken worden de kenmerken bedoeld die in de lijst op p22 geen afleiders hebben maar wel eigenlijke kenmerken bevatten. Zo is er bijvoorbeeld een paneel voorzien voor alle kenmerken die als ouderkenmerk ‘vruchtvlees’ hebben en een ander paneel voor alle kenmerken met als ouderkenmerk ‘klokhuis en zaadholten in dwarsdoorsnede’. Dit geeft een totaal van 24 panelen waarop waarden van kenmerken kunnen ingevuld worden. Bij catalogeren zijn er drie extra panelen, deze voor de identificatiegegevens, de foto’s en de referenties. Dit zijn gegevens die enkel ingevuld moeten worden bij het catalogeren. Hierdoor is er voor catalogeren een totaal van 27 panelen.
64
Deze grote hoeveelheid panelen is het gevolg van de grote hoeveelheden kenmerken en afleiders (de waarden die voor een kenmerk mogelijk zijn) die door de Nationale Boomgaarden Stichting zijn opgegeven. Soms zijn er teveel kenmerken voor een ouderkenmerk om ze weer te geven op een enkelvoudig paneel. In deze gevallen wordt er gebruik gemaakt van tabpagina’s. Tabpagina’s zijn verschillende kenmerkpanelen die achter elkaar zijn geplaatst. Men kan verspringen tussen deze panelen door bovenaan op de tabs te klikken.
figuur 8.12 : tabs van een tabpagina
8.1.4 Meldingen Om de gebruiker op de hoogte te houden van wat er allemaal gebeurt, wordt er gebruik gemaakt van boodschapschermen. Zo zijn er onder andere de schermen met waarschuwingsberichten (zie figuur 8.13). Deze zijn er om de gebruiker te verwittigen van mogelijk onomkeerbare gevolgen van een bepaalde keuze en om te controleren of dit echt is wat de gebruiker wil. Voorbeeld: bij het verwijderen van een referentie uit de databank zal er een schermpje opspringen met daarop de boodschap “Bent u zeker dat u deze referentie wilt verwijderen?”. Er zullen op dit scherm drie knoppen te zien zijn, met de opschriften ‘Ja’, ‘Ja op alles’ en ‘Nee’. Indien er op ‘Ja’ geklikt wordt, zal er verder gegaan worden met de opdracht. Indien er op ‘Nee’ geklikt wordt, zal de opdracht niet uitgevoerd worden. ‘Ja op alles’ is voorzien voor wanneer meerdere referenties gelijktijdig verwijderd worden. Als er dan op deze knop geklikt wordt, zal voor de overige referenties deze waarschuwing niet meer getoond worden.
figuur 8.13 : een waarschuwingsbericht
65
Een andere mogelijkheid zijn informatieberichten. Deze worden gebruikt om aan de gebruiker te melden wanneer er aan bepaalde voorwaarden niet voldaan wordt. Er wordt vermeld wat er juist van de gebruiker verwacht wordt om wel aan de voorwaarden te voldoen. Op het scherm is slechts één knop aanwezig. Deze heeft het opschrift ‘OK’. Deze knop dient enkel om het schermpje te sluiten. Een voorbeeldje is te zien in onderstaande figuur.
figuur 8.14 : een informatiebericht Tot slot zijn er de progressieberichten (zie figuur 8.15) die het verloop van een bepaalde actie weergeven. Hiervan wordt gebruik gemaakt in situaties waarbij acties redelijk wat tijd in beslag kunnen nemen. Op deze manier heeft de gebruiker een idee van hoelang een bepaalde actie nog kan duren.
figuur 8.15 : progressiebericht
8.1.5 Kleuren Doorheen de hele applicatie wordt gebruik gemaakt van drie kleuren. Namelijk zwart, blauw en rood. Hieronder zal de reden voor deze verschillende kleuren verder toegelicht worden. De blauwe en rode kleuren worden gebruikt voor kenmerken. De rode kleur duidt de belangrijkste kenmerken aan. Deze kenmerken moeten verplicht ingevuld worden bij het toevoegen en het wijzigen van een vrucht. Bij het determineren is het aangeraden om deze kenmerken in te vullen, aangezien deze zeker ingevuld werden voor elke vrucht. De blauwe kleur duidt al de overige kenmerken aan.
66
In een boomstructuur duidt de zwarte kleur op ouderkenmerken. Meer uitleg over de boomstructuur in 8.4.1.2. Op de panelen zelf wordt de zwarte kleur gebruikt om de waarden (ook afleiders genoemd) van de kenmerken aan te duiden.
8.1.6 Actieknoppen Onderaan een scherm zullen er vaak enkele knoppen zichtbaar zijn. Dit zullen we vanaf nu de actieknoppen noemen. Door op deze knoppen te klikken worden verschillende acties opgeroepen. De actie die zal uitgevoerd worden, staat beschreven op de knop. Zo zal bijvoorbeeld het drukken op de knop ‘Wissen’ de inhoud van een paneel wissen. Meer uitleg over de acties zal ten gepaste tijde in de volgende onderdelen van dit hoofdstuk worden uitgelegd.
8.2 Starten Om het programma te starten kan men op onderstaand icoontje klikken dat men normalerwijze op de desktop kan terug vinden. Indien het icoontje daar niet te vinden is, kan men dubbel klikken op het bestand ‘maludet.jar’ in de map waarin het programma is geïnstalleerd. Dit is de map C:\\maludet\programma. Het programma zal zich openen met het scherm uit figuur 8.17.
figuur 8.16 : icoontje Men krijgt een startmenu te zien met een knop voor elke mogelijke toepassing die voorzien is. In volgende onderdelen van dit hoofdstuk worden deze verder besproken. Naast de knoppen voorzien om de verschillende toepassingen op te starten zijn nog twee extra knoppen voorzien. Door het klikken op de knop ‘Info’ zal men het logo van het programma te zien krijgen, net als de naam van het programma en de namen van de makers. Normaal komt men na het beëindigen van een toepassing steeds weer terecht op het startmenu. Om het programma af te sluiten is er de knop ‘Afsluiten’ voorzien.
67
figuur 8.17 : startmenu Hier volgt een kort overzicht met welke toepassing men waar in de handleiding kan vinden: -
Catalogeren - Toevoegen - Wijzigen - Verwijderen
(Variëteiten toevoegen aan de databank) (Gegevens van de variëteiten wijzigen) (Variëteiten verwijderen uit de databank)
-
Determineren - Determineren - Tentoonstelling - Fiche opvragen
(Een variëteit opzoeken a.d.h.v. kenmerken) (Determineren voor op tentoonstellingen) (Gegevens ven een variëteit opvragen)
-
Administratie - Referenties bewerken (Referenties toevoegen/verwijderen) - Kenmerken bewerken (Uitleg/foto’s toevoegen in de helpfunctie) - Paswoord veranderen (Paswoord voor tentoonstelling veranderen)
68
8.3 Catalogeren Om het catalogeren in goede banen te leiden kan men, naast het voor de hand liggende toevoegen, ook wijzigen en verwijderen. Voor elk van deze opdrachten is een toepassing voorzien.
8.3.1 Toevoegen Bij het toevoegen kan men voor een bepaalde variëteit, waarden van kenmerken toevoegen aan de databank. Dit kan ook voor zijn variëteitnaam, synoniemen, lokale naam, bijkomende informatie, foto’s en referenties. Er wordt gebruik gemaakt van een wizard-systeem. Alle schermen moeten één voor één doorlopen worden en pas op het allerlaatste scherm is er de mogelijkheid om het toevoegen te voltooien. De wizard start met het scherm voor de identificatiegegevens. Hierna volgen alle schermen met de kenmerken en bijkomende informatie. Tot slot wordt er geëindigd met een scherm om foto’s van de vrucht toe te voegen en een scherm om referenties naar de literatuur op te geven. Elk scherm in de wizard heeft dezelfde opbouw. Een voorbeeld hiervan is te zien in figuur 8.18. Onderaan, in de groene kader, ziet men het actiepaneel. Deze zal op alle schermen dezelfde zijn. Rechts op het actiepaneel staan de knoppen om door de wizard te navigeren, namelijk ‘Vorige’ en ‘Volgende’. Met de knop ‘Volgende’ krijgt men het eerstvolgende scherm te zien. Op gelijkaardige manier gaat men, door op de knop ‘Vorige’ te klikken, naar het vorige scherm. Als men op het eerste scherm is, zal het niet mogelijk zijn om ‘vorige’ aan te klikken, aangezien er hier geen vorig scherm is. Enkel op het laatste scherm is de mogelijkheid voorzien om het toevoegen te voltooien. Hiervoor krijgt men de knop ‘Voltooien’ te zien op de plaats van de knop ‘Volgende’. Als men op deze knop klikt zullen de ingegeven waarden daadwerkelijk opgeslagen worden in de databank. Links staan de overige knoppen. ‘Help’ dient om de helpfunctie op te starten. Voor meer informatie over de helpfunctie zie 8.6. Door op ‘Wissen’ te klikken kan men de waarden ingegeven op het huidige scherm wissen. Let op, alle ingegeven waarden op het scherm worden gewist. Als er gebruik gemaakt wordt van tabpagina’s, worden ook de waarden op elk van die tabpagina’s gewist. Tenslotte is er nog de knop ‘Stoppen’. Als men op deze knop klikt zal de wizard gesloten worden. Eerst wordt er gevraagd of u wel zeker bent dat u de wizard wilt afsluiten. Indien hier op ‘Ja’ geklikt wordt, zal de wizard gesloten worden en keert men terug naar het startmenu. Indien er op ‘Nee’ geklikt wordt blijft de wizard open. Hetzelfde geldt voor het sluiten van de wizard door op het kruisje rechtsboven aan het scherm te klikken. 69
figuur 8.18 : opbouw scherm voor toevoegen Het deel van het scherm dat omringd wordt door de rode kader zullen we het invulpaneel noemen. Daar kunnen de waarden van de kenmerken ingevuld worden. Er is een invulpaneel voorzien voor elk ouderkenmerk, voor de identificatiegegevens, de foto’s en de referenties. Bepaalde kenmerken zullen verplicht moeten ingevuld worden. Deze worden weergegeven in een rode kleur, zodat ze makkelijk te onderscheiden zijn van de rest. Het zal niet mogelijk zijn om verder te gaan naar het volgende scherm voordat deze verplichte kenmerken ingevuld zijn. Indien men toch op ‘Volgende’ klikt alvorens het verplichte kenmerk is ingevuld, zal men hiervan op een gepaste manier verwittigd worden (zie figuur 8.19).
70
figuur 8.19 : foutmelding voor verplicht kenmerk
8.3.1.1
Identificatiegegevens toevoegen
figuur 8.20 : scherm voor het toevoegen van identificatiegegevens Om te beginnen krijgt men het scherm te zien waar de identificatiegegevens van de te beschrijven variëteit kunnen ingegeven worden (zie figuur 8.20). Dit zijn de namen van de variëteit. Dit zijn de variëteitnaam (de eigenlijke naam van de vrucht), de synoniemen en de lokale namen. De mogelijke hoeveelheid synoniemen en lokale namen in de databank is beperkt tot vijf. 71
Een bepaalde variëteitnaam kan maar één keer voorkomen, ze moet uniek zijn. Wanneer er op ‘Volgende’ geklikt wordt, zal er gecontroleerd worden of de opgegeven variëteitnaam al in de databank staat. Als bij de controle dezelfde variëteitnaam gevonden wordt, krijgt men hiervan een gepast foutbericht te zien (zie figuur 8.21). De reeds ingevulde informatie op het invulpaneel wordt gewist.
figuur 8.21: foutmelding bij dubbele naam Er kan enkel en alleen verder gegaan worden naar het volgende scherm als er een variëteitnaam is opgegeven die bovendien nog niet in de databank gebruikt wordt. Het ingeven van de synoniemen en lokale namen gebeurt met behulp van een tekstveld met knoppen, zoals besproken in 8.1.1.
8.3.1.2
Kenmerkwaarden toevoegen
Voor het toevoegen van kenmerkwaarden is steeds dezelfde structuur voor een paneel gebruikt. De waarden staan gegroepeerd per kenmerk en zijn omringd met een kader met de naam van het kenmerk. De kleur van de naam van het kenmerk geeft weer of het een verplicht kenmerk is of niet. Als het een verplicht kenmerk is dan heeft het een rode kleur, anders een blauwe. Indien er teveel kenmerken zijn om weer te geven op één scherm wordt er gebruik gemaakt van tabpagina’s (zie 8.1.3). Het ingeven van de waarden gebeurt zoals besproken in 8.1.1. Bij toevoegen is het mogelijk om bijkomende informatie toe te voegen. Deze wordt mee op de schermen voor de algemene kenmerken vermeld. Zo zal het bijkomende kenmerk ‘gemiddelde hoogte’, dat te maken heeft met de vorm en grootte van de vrucht, mee op het scherm te vinden zijn waar alle kenmerken over de vorm en de grootte staan, zoals te zien op figuur 8.22. Voor deze bijkomende informatie wordt gebruik gemaakt van tekstvelden. Bij ‘gelijkende vruchten’ en ‘bepalende vruchtkenmerken’ (zie figuur 8.23) is het mogelijk om meerdere waarden in te geven. Dit laatste gebeurt door middel van een tekstveld met knoppen, meer uitleg hierover vindt men in 8.1.1. Het aantal in te geven waarden is beperkt tot vijf.
72
figuur 8.22 : scherm met bijkomende informatie
figuur 8.23 : gelijkende vruchten en bepalende vruchtkenmerken
73
8.3.1.3
Foto’s toevoegen
Na het toevoegen van de kenmerken krijgt men het scherm te zien voor het ingeven van foto’s. Er kunnen vijf foto’s van een vrucht ingegeven worden, namelijk van het vooraanzicht, het bovenaanzicht, het onderaanzicht, de dwarsdoorsnede en de lengtedoorsnede. Deze kunnen elk apart toegevoegd worden. Een stuk van dit scherm is te zien in onderstaande figuur.
figuur 8.24 : voorbeeld van foto’s Om een foto toe te voegen klikt men op de knop ‘Toevoegen’. Men krijgt een bestandskiezer te zien zoals weergegeven in figuur 8.25. Hier kan men een foto kiezen. De foto moet echter wel van het type .gif of .jpg zijn. Daarom is er bij de bestandskiezer een filter ingegeven die u enkel deze bestanden laat zien. Zodra men een foto geselecteerd heeft en op de knop met opschrift ‘Kies’ heeft geklikt, zal de foto toegevoegd worden aan het scherm. De grootte van de foto’s op het scherm is beperkt. Als men voor een grote foto zou kiezen wordt deze automatisch verkleind. Als er éénmaal een foto is toegevoegd, zullen er naast de foto op het scherm twee knoppen staan: ‘Aanpassen’ en ‘Verwijderen’. Als men op de knop ‘Aanpassen’ klikt, zal de bestandskiezer weer getoond worden. Men kan er een nieuwe foto uitkiezen. De foto op het scherm zal door de nieuw gekozen foto vervangen worden. Als men op de knop ‘Verwijderen’ klikt, dan zal de foto verwijderd worden en krijgt men weer de knop ‘Toevoegen’ te zien.
74
figuur 8.25 : bestandskiezer
8.3.1.4
Referenties toevoegen
Op het laatste scherm dat men te zien krijgt kunnen referenties aangevinkt worden. Deze referenties geven weer waar informatie kan gevonden worden in de literatuur over de zonet beschreven variëteit. Het kan natuurlijk zijn dat een bepaalde referentie nog niet in de opgegeven lijst staat. Als men deze wil toevoegen aan de lijst, moet men op de knop ‘Referenties bewerken’ klikken. Hierdoor wordt de toepassing voor het bewerken van referenties opgestart. Deze wordt uitgebreid besproken in 8.5.
75
figuur 8.26 : scherm om referenties toe te voegen Nadat de referenties in orde zijn gebracht kan men op ‘Voltooien’ klikken. Hierdoor zal de vrucht met alle ingegeven waarden in de databank opgeslagen worden. Dit toevoegen kan even duren, dit al naargelang het aantal ingevulde kenmerken. Men krijgt een progressiebericht (zie figuur 8.15) te zien dat het verloop van het toevoegen weergeeft. Als het toevoegen voltooid is krijgt men volgend schermp te zien:
figuur 8.27 : toevoegen voltooid
76
Als er op ‘Ja’ geklikt wordt zal de wizard weer van vooraf aan gestart worden. Indien er op ‘Nee’ geklikt wordt, wordt de wizard afgesloten en komt men weer bij het startmenu terecht (zie figuur 8.17). Het kan echter ook zijn dat de vrucht niet toegevoegd werd. Dit kan twee oorzaken hebben. Tijdens het toevoegen van een vrucht heeft iemand anders reeds dezelfde vrucht toegevoegd aan de databank. Aangezien de variëteitnaam uniek moet zijn, kan de vrucht dan niet meer toegevoegd worden. Men wordt hiervan verwittigd en men krijgt de keuze om de andere vrucht in de databank te laten staan of deze te overschrijven met de net ingegeven waarden.
figuur 8.28 : vrucht reeds toegevoegd Een andere oorzaak kan zijn dat er iets is misgelopen met het toevoegen aan de databank zelf. Er zullen geen gegevens van de vrucht opgeslagen worden in de databank. Men krijgt onderstaande melding te zien.
figuur 8.29 : foutmelding bij toevoegen
8.3.2 Wijzigen Deze toepassing dient om de waarden van variëteiten, die reeds in de databank staan, te wijzigen. In eerste instantie krijgt men een scherm te zien met daarop een lijst met alle variëteiten van een bepaalde fruitsoort (zie figuur 8.30). Uit deze lijst moet één variëteit gekozen worden waarvan men de gegevens wilt wijzigen.
77
figuur 8.30 : lijst met variëteiten om te wijzigen
8.3.2.1
Vrucht kiezen
Er zijn drie manieren om een variëteit te selecteren en verder te gaan naar het volgende scherm: 1
Door dubbel te klikken, met de linker muisknop, op de gewenste variëteit.
2
Door op de variëteit in de lijst te klikken met de linker muisknop en vervolgens op de ‘OK’ knop te klikken. Deze wordt aanklikbaar van zodra er een variëteit geselecteerd is in de lijst.
3
Door de naam van de variëteit in te tikken in het tekstveld bovenaan. Het is zelfs niet nodig om de volledige variëteitnaam op te geven. De naam in de lijst die er het meest mee overeenkomt wordt automatisch geselecteerd. Er kan op de Enter-toets gedrukt worden terwijl men nog in het tekstveld bezig is of men kan op ‘OK’ klikken. Let op: het is de variëteit die geselecteerd staat in de lijst die gebruikt zal worden.
Vervolgens worden alle gegevens van gekozen variëteiten opgehaald en wordt de effectieve applicatie om te wijzigen gestart. Als men op de knop ‘Annuleren’ klikt, komt men weer bij de startmenu terecht (zie figuur 8.17).
78
8.3.2.2
Het wijzigen zelf
Men krijgt een scherm (zie figuur 8.31) te zien met daarin als eerste paneel het paneel voor de identificatiegegevens. De rode kader duidt het invulpaneel aan. Deze is net dezelfde als bij toevoegen. De groene kader geeft ook hier het actiepaneel aan. Deze is anders dan bij toevoegen en wordt zo meteen nader toegelicht. Tenslotte is er hier ook nog een blauwe kader. In deze kader is er een dropdownlist te zien.
figuur 8.31 : schermopbouw voor wijzigen Deze dropdownlist dient om het ouderkenmerk te kiezen waarvan men de waarden van zijn kenmerken wilt wijzigen. Wilt men bijvoorbeeld de hardheid van de variëteit wijzigen, dan moet men in de dropdownlist kiezen voor vruchtvlees, waarvan hardheid een kenmerk is. Om iets te selecteren in de dropdownlist, klikt 79
men op de witte rechthoek. Hierdoor krijgt men de ganse lijst te zien waaruit men kan kiezen. Daar de lijst vrij lang is, is er een schuifbalk voorzien. Hiermee kan men door de lijst scrollen. De ouderkenmerken staan alfabetisch in de lijst om het zoeken te vergemakkelijken. Eens men een keuze gemaakt heeft, kan men op de knop ‘OK’, naast de dropdownlist klikken. Het invulpaneel zal hierdoor vervangen worden door het paneel horende bij het gekozen ouderkenmerk. Men kan op de invulpanelen naar believen wijzigingen aanbrengen. Al de verplichte kenmerken moeten ingevuld zijn voor er kan overgaan worden naar een ander ouderkenmerk. Als men de variëteitnaam wil wijzigen, mag deze enkel gewijzigd worden naar een naam die nog niet in de databank staat. Hierop zal wederom gecontroleerd worden. De knoppen rechts op het actiepaneel dienen om de wijzigingen definitief toe te passen of te annuleren, dit telkens voor het invulpaneel dat op dat moment zichtbaar is. Als er op de knop ‘Toepassen’ geklikt wordt, worden de nieuwe waarden definitief gewijzigd. Als er op de knop ‘Annuleren’ geklikt wordt, worden de gemaakte wijzigingen, die nog niet werden “toegepast”, ongedaan gemaakt. Als men reeds op ‘Toepassen’ geklikt had, zal de toestand gewijzigd worden naar die toestand toen er op ‘Toepassen’ werd geklikt. Dus eens er op ‘Toepassen’ is geklikt, kan er niet meer teruggegaan worden naar een toestand van voor het toepassen. De linkse knoppen zijn ongeveer hetzelfde als bij toevoegen. Ook hier roept ‘Help’ de helpfunctie op. Door op de knop ‘Wissen’ te klikken zullen alle waarden van het huidige paneel gewist worden. Afsluiten doet men door te klikken op de knop ‘Stoppen’ of op het kruisje rechtsboven aan het scherm. Er zal gevraagd worden of men de nog niet opgeslagen wijzigingen wil toepassen of niet. Dit zijn al de wijzigingen op de panelen waarvoor nog niet op ‘Toepassen’ is geklikt. Hierna worden alle wijzigingen aangepast in de databank. Hierbij krijgt men een progressiebericht (zie figuur 8.15) te zien dat het verloop van het wijzigen zal weergeven. Vervolgens komt men weer bij de startmenu terecht (zie figuur 8.17). Het kan natuurlijk gebeuren dat, terwijl men de gegevens van een variëteit aan het wijzigen is, dezelfde variëteit uit de databank verwijderd werd door een andere gebruiker. In dit geval krijgt men de keuze of men de variëteit opnieuw wilt toevoegen of niet.
80
figuur 8.32 : vrucht verwijderd Het kan ook gebeuren dat er iets misloopt bij het wijzigen in de databank. Dan zal geen enkele wijziging opgeslagen worden. Men krijgt een melding te zien zoals deze bij toevoegen (zie figuur 8.29).
8.3.3 Verwijderen Bij catalogeren is de mogelijkheid voorzien om variëteiten uit de databank te verwijderen. Hierbij krijgt men een lijst van alle variëteiten te zien zoals te zien in onderstaande figuur.
figuur 8.33 : lijst met vruchten om te verwijderen Een variëteit kan op verschillende manieren verwijderd worden: 1
Door dubbel te klikken op een variëteit, met de linkermuisknop.
2
Een variëteit selecteren in de lijst door er op te klikken met de linkermuisknop en vervolgens op de ‘OK’-knop te klikken. 81
3
Een variëteit intikken in het tekstveld bovenaan. In de lijst wordt dan de variëteit geselecteerd die er het meest mee overeenkomt. Men kan de Enter-toets indrukken, terwijl men nog in het tekstveld staat, of men kan op de ‘OK’-knop klikken. Merk op dat het de variëteit is die geselecteerd staat in de lijst die verwijderd zal worden.
Alvorens de variëteit definitief verwijderd wordt, zal er eerst nog een waarschuwingsbericht getoond worden waarin gevraagd wordt of men wel zeker is dat men deze variëteit wil verwijderen. Eens de variëteit verwijderd is kan dit niet meer ongedaan gemaakt worden. Na het verwijderen van de variëteit komt men weer op het startmenu terecht (zie figuur 8.17). Op het scherm is er naast de ‘OK’-knop ook nog een ‘Annuleren’-knop voorzien. Door hier op te klikken gaat men meteen terug naar het startmenu (zie figuur 8.17). Dit kan ook verkregen worden door op het kruisje rechtsboven aan het scherm te klikken.
8.4 Determineren Eenmaal er een aantal variëteiten in de databank staan, kan men beginnen met determineren. Er zijn twee modi waaronder men kan determineren: de expertmodus en de leekmodus. Er zijn een aantal dingen die gelijk lopen in beide modi, andere dingen zijn er enkel bij het determineren in ‘expertmodus’. Daarom zal eerst de ‘expertmodus’ uitgelegd worden. Zodoende kan er bij determineren in ‘leekmodus’ verwezen worden naar reeds uitgelegde onderdelen.
8.4.1 Determineren in ‘expertmodus’ 8.4.1.1
Starten
Opdat men met dit onderdeel kan starten dient men op het startmenu (zie figuur 8.17) op de knop ‘Determineren’ te klikken. Er opent zich het startscherm. Het startscherm bevat 3 delen: de boom (links), het rechterpaneel (rechts) (dat initieel een startpaneel is) en de menubalk (bovenaan). Elk onderdeel zal doorheen de handleiding in detail besproken worden.
82
figuur 8.34 : startscherm determineren
8.4.1.2
De boom
8.4.1.2.1 Uitleg De boom is een hiërarchische structuur van kenmerken. Het gebruik ervan is heel erg te vergelijken met het gebruik van Explorer (verkenner) in Windows. Toch zal het gebruik hier uitgebreid uitgelegd worden. De boom bevat alle kenmerken waarop kan gedetermineerd worden. De kenmerken zijn in groepen onderverdeeld. Elke groep heeft een factor gemeenschappelijk, dit noemen we hun ouderkenmerk. Voorbeeld: Alle kenmerken die iets met pitten te maken hebben zitten samen in een groep onder het ouderkenmerk ‘pitten’. Dat ouderkenmerk pitten zal op zijn beurt samen met onder andere het ouderkenmerk vruchtvlees in een groep met als ouderkenmerk ‘inwendig’ zitten. Het ouderkenmerk ‘inwendig’ zit samen met onder andere het ouderkenmerk ‘uitwendig’ in een groep met als ouderkenmerk ‘vrucht’. Op die manier krijgen we een hiërarchische structuur welke alle kenmerken bevat. De top-ouderkenmerken waarin de kenmerken zitten kan men op het startscherm van determineren zien.
83
figuur 8.35 : boomstructuur gedeeltelijk ontvouwen De kenmerken die hoger in de zichtbare structuur staan zijn belangrijker dan kenmerken lager in de structuur. Dit is al zichtbaar op het startscherm. Binnen het ouderkenmerk ‘cultuur’ zal men bijvoorbeeld het kenmerk ‘gevoeligheid voor koper’ terug vinden. Binnen het ouderkenmerk ‘vrucht’ zal men bijvoorbeeld het kenmerk ‘kleur van het vruchtvlees’ terug vinden. Het spreekt voor zich dat de kopergevoeligheid minder belangrijk is dan de vruchtvleeskleur. Het ouderkenmerk ‘cultuur’ staat dan ook lager in de structuur dan het ouderkenmerk ‘vrucht’. Op het startscherm zijn er enkel de top-ouderkenmerken zichtbaar en helemaal geen eigenlijke kenmerken. De boom is opgevouwen. De kenmerken kunnen echter zichtbaar gemaakt worden.
figuur 8.36 : opgevouwen kenmerk
figuur 8.37 : opengevouwen kenmerk
Op fig 8.36 ziet u het ouderkenmerk ‘vrucht’ welke de onderliggende structuur niet laat zien. Dit kan men zien aan het plusje naast de groep. Willen we de groepen of kenmerken onder een ouderkenmerk zichtbaar maken, hoeven we enkel op het plusje naast dat ouderkenmerk te klikken of door dubbel te klikken op de naam ‘vrucht’. Het resultaat is zichtbaar op fig 8.37 . Er zijn 4 nieuwe groepen zichtbaar en de plus naast ‘vrucht’ is in een min veranderd. Het minnetje duidt aan dat het ouderkenmerk de direct onderliggende structuur laat zien.
84
Men kan de boom ook weer opvouwen. Dit gebeurt analoog aan het openvouwen. Door het klikken op een minnetje naast een ouderkenmerk of door nogmaals te dubbelklikken op de naam van het ouderkenmerk wordt de onderliggende structuur van groepen en kenmerken opgevouwen. Het minnetje wordt door het plusje vervangen, welke aanduidt dat er een direct onderliggende structuur is, die niet zichtbaar is. Het ouderkenmerk ‘vrucht’ bevat enkel andere ouderkenmerken, maar een ouderkenmerk kan ook kenmerken bevatten. Opgelet, een ouderkenmerk kan geen kenmerken én ouderkenmerken bevatten in zijn direct onderliggende structuur.
In de figuur hiernaast is een deel van de boomstructuur opengevouwen. Het ouderkenmerk ‘vruchtvlees’ bijvoorbeeld bevat kenmerken. Het onderscheid tussen ouderkenmerken en gewone kenmerken wordt gemaakt door de kleur van het bolletje voor de naam. Er zijn drie kleuren: rood, blauw en zwart. Is het bolletje zwart, dan hebben we te maken met een ouderkenmerk. Is het bolletje blauw of rood, dan hebben we te maken met een kenmerk. Het verschil tussen blauwe en rode kenmerken werd reeds uitgelegd in 8.1.5.
figuur 8.38 : verschil tussen kenmerk en ouderkenmerk
Naast een kenmerk is er geen plusje of minnetje zichtbaar. Een eigenlijk kenmerk bevat immers geen onderliggende structuur.
Soms zijn de namen van de ouderkenmerken of kenmerken te lang om binnen de randen van het paneel van de boom te passen. Er verschijnt dan onderaan een schuifbalk (zie figuur 8.38). Door op de blauwe/paarse schuifbalk te klikken en deze te verslepen kan men de rest van de namen zichtbaar maken.
85
Analoog: indien de boom te groot wordt voor het paneel, zal er rechts naast de boom een verticale schuifbalk komen. Hiermee kan men op analoge manier ook de niet-zichtbare delen van de boom zichtbaar maken.
8.4.1.2.2 Waarvoor dient deze structuur? Door het dubbelklikken op een kenmerk gaat het bijhorende kenmerkenpaneel rechts zichtbaar worden. Alle kenmerken binnen één groep behoren tot hetzelfde paneel. Het maakt dus in principe niet uit op welk kenmerk van de groep er geklikt wordt.
8.4.1.3
Het rechterpaneel
Aanvankelijk ziet het rechterpaneel eruit zoals op figuur 8.34, maar zoals in 8.4.1.2 uitgelegd werd, kan men door op een kenmerk in de boom dubbel te klikken, de inhoud van het rechterpaneel veranderen. Er verschijnt dan een kenmerkenpaneel.
figuur 8.39 : kenmerkenpaneel
86
Op bovenstaande figuur is een screenshot zichtbaar van het kenmerkenpaneel horende bij de kenmerken van het ouderkenmerk vruchtsteel. Opgelet: de groene en gele kader zijn er niet in het echt, deze zijn enkel aangebracht op de figuur om de uitleg gemakkelijker te maken. Alles binnen de gele kader noemen we het actiepaneel. Alles binnen de groene kader noemen we het invulpaneel. Samen vormen zij het kenmerkenpaneel. Deze structuur van een kenmerkenpaneel (rechtergedeelte van het scherm) is voor elk kenmerkenpaneel hetzelfde.
8.4.1.3.1 Het invulpaneel Het invulpaneel is afhankelijk van het ouderkenmerk van het kenmerk dat aangeklikt werd. Er is voor elke ouderkenmerk dat eigenlijke kenmerken bevat een invulpaneel, het bevat alle kenmerken die in de groep van dat ouderkenmerk zitten. Op figuur 8.40 zijn dat alle kenmerken van de groep ‘vruchtsteel’. Van elk kenmerk kan men op het paneel alle afleiders terugvinden.
De kenmerknaam op het invulpaneel heeft dezelfde kleur als het bolletje voor het kenmerk in de boom. De kader omgeeft alle mogelijke afleiders van dat kenmerk. figuur 8.40 : een kenmerk Bij het determineren is het de bedoeling dat men enkel waarden invult bij kenmerken waarvan men zeker is dat de variëteit aan die waarde voor dat kenmerk voldoet. Als men niet zeker is, vult men het niet in. Er zou dan namelijk geen zekerheid zijn omtrent het bekomen resultaat. Het invullen van een kenmerk verloopt zoals uitgelegd in 8.1.1. Uiteraard kan men op verschillende kenmerkpanelen waarden ingeven. De reeds ingegeven waarden worden onthouden door het programma. Niets gaat verloren bij het wisselen van de kenmerkenpanelen. Mocht er een bepaald kenmerk of een bepaalde afleider van een kenmerk niet duidelijk zijn, is er mogelijkheid tot het oproepen van de helpfunctie. Hoe dit kan wordt besproken in 8.6.
87
Soms zijn er teveel kenmerken binnen een groep om ze overzichtelijk weer te geven op één paneel. Er wordt dan gebruik gemaakt van tabpanelen. Het gebruik van tabpanelen wordt uitgelegd in 8.1.3.
8.4.1.3.2 Het actiepaneel Het actiepaneel vindt men terug onderaan elk kenmerkenpaneel. Indien het kenmerkenpaneel opgedeeld is met tabpanelen, zal het actiepaneel op elk tabpaneel aanwezig zijn. Op het actiepaneel vindt men steeds 2 knoppen: ‘Wissen’ en ‘Zoeken’. Indien er per ongeluk een waarde verkeerd is ingevuld, kan men de ingegeven waarde voor het kenmerk wissen. Hiervoor klikt men op de knop ‘Wissen’ links op het actiepaneel. Meer informatie hierover is te vinden bij wissen (zie 8.7). Indien men denkt dat er genoeg gegevens ingevuld zijn en men wilt het resultaat bekijken, klikt men op de knop ‘Zoeken’ rechts op het actiepaneel. Meer uitleg daarover is te vinden bij het eigenlijke determineren (zie 8.4.3).
8.4.1.4
Menubalk
Er staan twee menu’s op de menubalk: het menu ‘Starten’ en het menu ‘Extra’.
figuur 8.41 : menu Starten
figuur 8.42 : menu Extra
In het menu ‘Starten’ kan men voor ‘Opnieuw beginnen’ of voor ‘Stoppen’ kiezen. Als men voor ‘Opnieuw beginnen’ kiest worden alle ingegeven kenmerken op alle panelen gewist en start men terug van op het startscherm (zie figuur 8.34). Indien men voor ‘Stoppen’ zou kiezen, keert men terug naar het startmenu (zie figuur 8.17). Daar kan men voor een andere toepassing kiezen (wijzigen, toevoegen, …) of het hele programma afsluiten.
88
figuur 8.43: opnieuw beginnen In het menu ‘Extra’ kan men voor ‘Kenmerken help’ of ‘Overzicht’ kiezen. Indien men voor ‘Kenmerken help’ kiest wordt de helpfunctie gestart. Meer informatie hierover in 8.6 . Indien men voor ‘Overzicht’ kiest, zal er zich een nieuw scherm openen. Hierop krijgt men een overzicht van alle reeds ingevulde kenmerken en de ingegeven waarde(n). Het scherm kan gesloten worden door op het kruisje te klikken dat rechtsboven zichtbaar is.
figuur 8.44: overzicht van reeds ingevulde kenmerken
89
8.4.2
Determineren in ‘leekmodus’
Deze modus is vooral bedoeld om te gebruiken op tentoonstellingen waar men de Nationale Boomgaarden Stichting kan vinden. Bezoekers (dikwijls leken in de pomologie) kunnen zelf opzoeken welke vrucht ze meebrachten, zonder een expert om advies te moeten vragen. Het is dikwijls niet de bedoeling om op één variëteit uit te komen, maar om al een selectie te maken tussen de mogelijke variëteiten. Daarom kan er enkel gedetermineerd worden op een geselecteerd aantal kenmerken. Een expert ter plaatse kan de bezoekers dan eventueel verder helpen. Opdat men met het determineren in leekmodus kan starten dient men op het startmenu (zie figuur 8.17) op de knop ‘Tentoonstelling’ te klikken. Bij het opstarten van dit programmagedeelte zal men een scherm zien met vier tabs. Op elk tabpaneel vind men enkele kenmerken terug. In het totaal zijn er zestien kenmerken over de verschillende tabpanelen verdeeld. Deze kenmerken zijn dezelfde kenmerken als diegene die bij het toevoegen van een variëteit verplicht in te geven zijn. Er is een tabpaneel voor vruchtvlees en vruchthuid, één voor de vorm van de vrucht, één voor kelk en steel en één voor rijptijd.
figuur 8.45: determineren tijdens een tentoonstelling
90
Anders dan in de expertmodus kan men hier bij sommige kenmerken wel bijhorende figuren op de panelen zien. Het is immers nodig dat de gebruiker snel zijn gegevens rond een vrucht kan inbrengen. Er wordt ook verondersteld dat de gebruiker het programma voordien nog nooit gebruikt heeft en dat hij geen handleiding hoeft te gebruiken. De boomstructuur die men in de ‘expertmodus’ ziet, is hier niet terug te vinden. Er is wel nog een kenmerkenpaneel, maar het is niet meer gelinkt aan een bepaald ouderkenmerk. Er is ook maar één menu in de menubalk. Voor het ingeven van de kenmerken zijn er twee manieren gebruikt. Sommige kenmerken maken gebruik van radiobuttons, andere van togglebuttons. Het gebruik van beide is te vinden in 8.1.1. Indien men denkt genoeg kenmerkwaarden ingegeven te hebben, kan men de vruchten die aan de ingegeven waarden voldoen, opvragen door een klik op de ‘Zoeken’-knop rechts onderaan. Een klik op deze knop zal het eigenlijke determineren starten. Meer info hierover in 8.4.3. Door op de knop ‘Alles wissen’ te klikken worden alle ingegeven waarden van alle tabpanelen gewist. Men kan ‘opnieuw’ beginnen.
figuur 8.46 : alles wissen? Men kan terugkeren naar het startmenu (zie figuur 8.17) door op de menubalk het menu ‘stop’ te kiezen en daar op het menuitem ‘Stoppen’ te klikken. Het is niet de bedoeling dat de bezoekers van de tentoonstelling variëteiten kunnen toevoegen, wijzigen of verwijderen. Daarom wordt er bij het afsluiten van ‘determineren voor leken’ om een gebruikersnaam en een paswoord gevraagd. Enkel indien deze juist zijn, kan men terugkeren naar het startmenu en een andere toepassing starten. Op een andere manier is deze toepassing niet te sluiten.
91
figuur 8.47 : afsluitcontrole
figuur 8.48 : foutmelding De gebruikersnaam en het paswoord zijn bij installatie ingesteld geweest. Indien men deze wenst te veranderen, kan dit door ‘Paswoord veranderen’ op het startmenu (zie figuur 8.17) te kiezen. Meer informatie hierover in 8.9.
8.4.3 Het eigenlijke determineren Nadat men op de ‘Zoeken’-knop van een van de determinatieonderdelen heeft geklikt, zal het eigenlijke determineren starten. Bij determineren in expertmodus zal dit proces uit 3 stappen bestaan: het ophalen uit de databank, het laten invullen van de percentagefiche door de gebruiker en het toonbaar maken van de fichebak. Bij het determineren in leekmodus wordt de tweede stap, het laten invullen van de percentagefiche, overgeslagen. Het programma zal aan de hand van de ingevulde gegevens, de variëteiten die eraan voldoen, ophalen uit de databank. Hoelang het programma hierover doet is afhankelijk van het aantal ingevulde kenmerken en het aantal variëteiten in de databank. Daarom krijgt men een progressiebericht (zie figuur 8.15) te zien. Deze geeft aan hoe ver het programma in het determinatieproces zit.
92
figuur 8.49 : keuze van percentage Eenmaal het eigenlijke determinatieproces gedaan is, krijgt men een nieuw scherm te zien. Daarop moet men aanvinken welke percentages men te zien wilt krijgen. Er is de keuze tussen verschillende mogelijkheden. De eerste mogelijkheid is standaard altijd aangevinkt. Meerdere keuzen tegelijk zijn mogelijk. Bij determineren in leekmodus wordt deze stap, zoals eerder vermeld, overgeslagen. Er wordt immers enkel op de verplichte kenmerken gedetermineerd. Door op de ‘OK’knop te klikken, komt men op het volgende scherm. Het aantal vruchten dat aan al de ingegeven kenmerken voldoet zal groot zijn indien er weinig kenmerken ingegeven werden. Hoe meer kenmerken ingevuld op de determinatiepanelen, hoe kleier de groep vruchten die er volledig of gedeeltelijk aan kunnen voldoen. Het volgende scherm dat men te zien krijgt is de fichebak. Hier vindt men voor elke percentage dat men op het vorige paneel koos de namen van de vruchten die eraan voldoen. Let wel op, als men koos voor ‘alle variëteiten die voor 100% aan alle ingevulde kenmerken voldoen’ en voor ‘alle variëteiten die voor 60% aan alle ingevulde kenmerken voldoen’, zullen alle variëteiten die voor 100% voldoen ook terug te vinden zijn in de lijst van de variëteiten die aan 60% voldoen.
93
figuur 8.50 : fichebak Van alle variëteiten zichtbaar in de fichebak kan men de individuele fiche opvragen. Dit kan door dubbel te klikken op de vruchtnaam of door de vrucht te selecteren en vervolgens op ‘Fiche bekijken’-knop te klikken. Men keert terug naar het determinatiescherm door op de ‘Stoppen’-knop te klikken. Meer informatie over de individuele fiche is te vinden in 8.8.1. Indien de gebruiker niet tevreden is over het resultaat kan die vanuit de fichebak terug keren naar de invulpanelen door op de knop ‘Stoppen’ te klikken. Daar kan de gebruiker dan nog wat kenmerken invullen of veranderen.
8.5 Referenties bewerken Met deze toepassing is het mogelijk om referenties toe te voegen of te verwijderen. Er wordt een lijst getoond met alle referenties die zich in de databank bevinden (zie figuur 8.51). De lijst is alfabetisch gerangschikt. Dit maakt de lijst overzichtelijker en op deze manier is het makkelijker om bepaalde referenties op te zoeken. De toepassing om referenties te bewerken kan opgestart worden van op de startmenu, maar ook van op het paneel voor referenties bij het toevoegen en wijzigen (zie figuur 8.26).
94
figuur 8.51 : scherm om referenties te bewerken Het tekstveld bovenaan het scherm dient om referenties toe te voegen aan de lijst. Nadat men de naam van de nieuwe referentie heeft ingegeven is het mogelijk om op de knop ‘Toevoegen’ te klikken. Een andere manier om toe te voegen is om direct na het intikken van de naam op de Enter-toets te klikken. Als u één van deze twee acties uitvoert dan zal de referentie toegevoegd worden aan de lijst. Indien de referentie die men probeert toe te voegen reeds in de lijst staat, krijgt men een informatiebericht (zie figuur 8.52) te zien en wordt de referentie geen tweede keer meer toegevoegd.
figuur 8.52 : informatiebericht wanneer de referentie al in de lijst staat
95
Om een referentie te verwijderen moet er eerst een referentie uit de lijst geselecteerd worden. Dit doet men door op de naam in de lijst te klikken. Het is eveneens mogelijk om meerdere namen tegelijk te selecteren. Dit doet men door tijdens het aanklikken van de referenties de Ctrl-toets ingedrukt te houden. Van zodra er iets geselecteerd is in de lijst, wordt de knop ‘Verwijderen’ klikbaar. Om zeker te zijn dat men niet per ongeluk een referentie verwijdert, verschijnt er eerst nog een waarschuwingsbericht vooraleer de referentie effectief uit de lijst verwijderd wordt. Indien men een referentie probeert te verwijderen die reeds verbonden is met een variëteit, wordt hiervoor eveneens een waarschuwingsbericht getoond. Door op ‘Nee’ te klikken, kan het verwijderen alsnog ongedaan gemaakt worden. Alle wijzigingen zijn pas van kracht van zodra er op ‘Toepassen’ wordt geklikt. Als men op ‘Annuleren’ klikt worden alle wijzigingen, die nog niet zijn “toegepast”, ongedaan gemaakt en wordt het scherm gesloten. Als men op ‘OK’ klikt, dan worden de gemaakte wijzigingen opgeslagen en wordt de toepassing beëindigd. De toepassing kan ook beëindigd worden door op het kruisje rechtsboven aan het scherm te klikken. Als men op dat moment wijzigingen heeft gemaakt die nog niet zijn opgeslagen, wordt er, door middel van volgend bericht, gevraagd of men dit toch alsnog wil doen.
figuur 8.53 : mogelijkheid om wijzigingen alsnog op te slagen
8.6 Helpfunctie Soms kan er enige hulp nodig blijken: een kenmerk is niet duidelijk of een afleider moet gevisualiseerd worden. De helpfunctie kan opgeroepen worden vanuit determineren in expertmodus, toevoegen en wijzigen. De helpfunctie bevat voor elk kenmerk mogelijks een kort woordje uitleg en voor elke afleider mogelijks een figuur. Mogelijks, want deze moeten wel eerst in de databank ingegeven worden voordat men ze kan gebruiken. Het ingeven gebeurt in een ander toepassing beschreven in 8.10.
96
De helpfunctie wordt als volgt opgeroepen: - Bij het determineren: - ofwel kiest men in het menu ‘Extra’ voor ‘Kenmerken hulp’. - ofwel dubbel klikt men op het invulpaneel op de naam van het kenmerk waarvan men wat uitleg wil. -
Bij het toevoegen en wijzigen: - ofwel klikt men op de knop ‘Help’ in het actiepaneel. - ofwel dubbel klikt men op het invulpaneel op de naam van het kenmerk waarvan men uitleg wil.
figuur 8.54 : helpfunctie startpagina Het scherm van de helpfunctie is op te delen in twee delen. Links vindt men twee tabbladen. Rechts vindt men initieel een startpagina met een klein woordje uitleg over het gebruik van de helpfunctie.
97
8.6.1 Het tabblad ‘Boom’ Op het tabblad met de boomstructuur is het de bedoeling dat men in de boomstructuur het kenmerk gaat zoeken waarover men meer informatie wil. Het gebruik van de boom is hetzelfde als het gebruik van de boom uit de determineren in expertmodus. Uitleg over het gebruik van de boom is in puntje 8.4.1.2 terug te vinden. Merk wel op dat deze boom uitgebreider is dan de boom zichtbaar bij determineren in expertmodus. Daar bevat de boom immers enkel de kenmerken waarop gedetermineerd wordt. Deze boom bevat eveneens bijkomende kenmerken, identificatiegegevens, referenties en foto’s.
8.6.2 Het tabblad ‘Index’ Indien men niet met de boom wilt werken, is er de mogelijkheid om de kenmerken in een lijst op te zoeken. De kenmerkenlijst bevat alle kenmerken die in de boom staan op het tabblad ‘Boom’. Er zijn verschillende manieren om uitleg over een kenmerk of een afleider op te zoeken. Manier 1: - Typ in het tekstveld bovenaan de naam van het kenmerk waarvan men uitleg wilt. Opgelet, indien men uitleg wilt over een afleider, moet men toch de naam van het kenmerk, waartoe de afleider behoort, gebruiken. De lijst bevat enkel kenmerken, geen afleiders. - In de lijst zal er een kenmerk blauw omkaderd worden. Dat kenmerk is geselecteerd. Dit is het kenmerk dat men intikte of het kenmerk dat alfabetisch gezien het dichtst bij de ingetikte naam ligt. Indien het geselecteerde kenmerk in de lijst niet het kenmerk is dat u intikte, bestaat dat kenmerk niet of werd er misschien een typfout gemaakt. - Vanaf het moment dat het juiste kenmerk in de lijst geselecteerd is, kan men op ‘Zoeken’ klikken. - Indien men een nieuw kenmerk wilt opzoeken, klikt men op de knop ‘Wissen’ onder het tekstveld. De inhoud van het tekstveld wordt dan gewist. Manier 2: - Zoek met behulp van de scrollbar door de lijst naar het gewenste kenmerk en klik het aan. - Klik op ‘Zoeken’.
98
figuur 8.55 : tabblad ‘Index’
8.6.3 Meerdere kenmerken met dezelfde naam De lijst bevat alle kenmerken, maar geen dubbels. Het kenmerk beroestingsvorm bijvoorbeeld kan voorkomen op de vruchthuid, in de steelholte en in de kelkholte. Dit kenmerk komt wel drie keer voor in de kenmerkenboom, maar slechts één keer in de kenmerkenlijst omdat het ouderkenmerk waartoe het kenmerk behoort niet mee wordt opgenomen in de lijst.
99
figuur 8.56 : helpfunctie met meerdere mogelijkheden Indien men zo een kenmerk selecteert, krijgt men op het rechterdeel van het scherm een overzicht van de volledige kenmerknaam te zien, zoals op bovenstaande figuur. In dit overzicht kan men vervolgens het juiste kenmerk selecteren door er op te klikken. Indien men nadien op de knop ‘Zoeken’ onder het overzicht klikt, krijgt men de juiste pagina met uitleg te zien.
100
figuur 8.57 : helpfunctie voorbeeld met lijst Het paneel, waarop men uitleg kan vinden, bevat drie vaste onderdelen. Het bevat altijd een kader met daarin heel het pad van het kenmerk. Het pad van een kenmerk is de hiërarchische opsomming van alle groepen waarin het kenmerk zich bevindt. Het eigenlijk kenmerk bevindt zich onderaan het pad. Onder de kader met het pad, komt er een klein woordje uitleg over het kenmerk zelf. Indien hier niets staat, is er geen uitleg in de databank gevonden over dit kenmerk. Daaronder staan er prentjes van het kenmerk. Deze prentjes zijn figuren van de afleiders. Naast elke figuur staat de naam van de bijhorende afleider. De figuren worden (anders dan in toevoegen en wijzigen) niet herschaald omdat de figuren dikwijls details beschrijven. We willen wel opmerken dat grote foto’s dan niet volledig zichtbaar gaan zijn, tenzij men gebruik maakt van de schuifbalken. Indien men de helpfunctie oproept door op de naam van een kenmerk op het kenmerkenpaneel te klikken, opent de helpfunctie meteen met het juiste uitlegpaneel aan de rechterkant. Het is dan niet meer nodig om op zoek te gaan naar het gewenste kenmerk.
101
Men kan de helpfunctie sluiten door op het kruisje rechts bovenaan het venster te klikken.
8.7 De wisfunctie Indien men per ongeluk iets foutief ingeeft op het paneel, dan kan men dit corrigeren door de wisfunctie op te roepen. De wisfunctie wordt als volgt opgeroepen: - Bij het determineren: door een klik op de knop ‘Wissen’ links op het actiepaneel. -
Bij het toevoegen en wijzigen: door een klik op de knop ‘Wissen’. Deze bevindt zich op het actiepaneel als tweede van links.
Indien bij toevoegen of wijzigen de wisfunctie wordt opgeroepen, is er enkel de mogelijkheid om heel de inhoud van het huidige kenmerkenpaneel te wissen. Het programma vraagt of men wel zeker is dat men de inhoud van het scherm wilt wissen.
figuur 8.58 : wissen bij toevoegen en wijzigen Bij het oproepen van de functie tijdens het determineren in expert-modus verschijnt er een scherm waarop men kan kiezen of men het hele huidige kenmerkenpaneel of enkel een enkel kenmerk wenst te wissen. Men kan ook op ‘Annuleren’ klikken indien men toch niets wil wissen.
figuur 8.59 : wisfunctie eerste scherm
102
Indien men kiest om het gehele kenmerkenpaneel te wissen zullen alle ingevulde waarden van dat kenmerkenpaneel verwijderd worden. Indien men kiest om een enkel kenmerk te wissen, zal er een nieuw scherm verschijnen waarop men door middel van een dropdownlist kan kiezen welk kenmerk van het paneel men wenst te wissen. Het kenmerk dat zichtbaar is op het schermpje zal gewist worden na een klik op de ‘OK’-knop. Hier kan men op de ‘Cancel’-knop klikken indien men toch niets wil wissen.
figuur 8.60 :wissen tweede scherm
8.8 Fiche van een variëteit opvragen Het opvragen van een fiche van een bepaalde variëteit kan door op het startmenu (zie figuur 8.17) voor de toepassing ‘Fiche opvragen’ te kiezen. Men krijgt dan een scherm te zien met een lijst met daarop alle variëteiten uit de databank. Door een bepaalde variëteit te selecteren en vervolgens op ‘Fiche’ te klikken of door dubbel te klikken op een bepaalde variëteit krijgt men de individuele fiche van de variëteit te zien. Terugkeren naar het startmenu kan door een klik op de ‘Stoppen’-knop.
103
figuur 8.61 : fichebak
8.8.1 Individuele fiche De individuele fiche bevat alle informatie die opgeslagen is in de databank over een variëteit. Dit is de variëteitnaam, de lokale namen en synoniemen, de ingegeven kenmerken, de bijkomende informatie, foto’s en referenties naar literatuur. Referenties en bijkomende informatie staan in een dropdownlist, de lijst zal helemaal zichtbaar zijn als men op het pijltje aan de rechterkant van de dropdownlist klikt. De foto’s staan niet op de individuele fiche zelf, maar men kan ze bezichtigen door een klik op de ‘Foto’s bekijken’-knop indien deze ooit werden ingegeven. Er zal zich dan een paneel openen met de bijhorende foto’s. Als er op de knop ‘PDF-bestand maken’ geklikt wordt, wordt er een bestand gemaakt van het PDF-formaat. Hierin komt alle informatie die op de individuele fiche staat. Enkel de foto’s komen niet in het bestand. Het bestand krijgt de naam van de variëteit, bvb ‘Granny Smith.pdf’. Het genereren van dit bestand kan enkele seconden duren. Nadien wordt er een bericht getoond dat het bestand is aangemaakt en in welke map het te vinden is.
104
figuur 8.62 : aanmaken PDF Door een klik op de knop ‘Terug naar fiche-bak’ keert men terug naar de fichebak waar men een andere individuele fiche kan opvragen.
figuur 8.63 : individuele fiche van Transparente de Croncels
105
8.9 Paswoord en gebruikersnaam veranderen Bij het installeren van het programma is er gevraagd geweest om een paswoord en gebruikersnaam in te geven. Indien die om een of andere reden gewijzigd moeten worden, kan dit door op het startscherm voor ‘Paswoord veranderen’ te kiezen.
figuur 8.64 : aanpassen paswoord en gebruikersnaam Er wordt gevraagd de oude gebruikersnaam, het oude paswoord, de nieuwe gebruikersnaam en het nieuwe paswoord in te geven. Het nieuwe paswoord moet tweemaal ingegeven worden. Dit omdat er anders problemen kunnen ontstaan door toevallige typfouten. Let op: zowel de gebruikersnaam als het paswoord zijn hoofdlettergevoelig. Door een klik op de ‘OK’-knop wordt er gekeken of de oude gegevens correct zijn. Zoniet wordt er een foutmelding gegeven. Als ze wel correct zijn, wordt er gekeken of de twee nieuwe paswoorden gelijk zijn. Als dit allemaal in orde is, worden de oude gebruikersnaam en het oude paswoord aangepast. Anders krijgt men een foutmelding.
figuur 8.65 : foutmelding bij wijzigen van paswoord en gebruikersnaam
106
8.10 Kenmerkinformatie aanpassen Opdat er in de helpfunctie uitleg zou staan voor een kenmerk of een prentje bij een afleider moet die eerst ingegeven worden. Dit is mogelijk gemaakt met deze toepassing. Opstarten gebeurt door op het startmenu (zie figuur 8.17) op de knop ‘Kenmerken bewerken’ te klikken.
figuur 8.66 : kenmerken bewerken Bovenstaand scherm bestaat uit twee delen. Het linkergedeelte is een vast gedeelte, de inhoud zal niet veranderen (op de view van de boom na). Het rechtergedeelte is afhankelijk van de acties van de gebruiker op het linkerpaneel. Initieel vindt men rechts een paneel met een beetje uitleg. Het linkerpaneel bevat een boomstructuur en 2 knoppen. Het gebruik van de boom is analoog aan het gebruik tijdens het determineren in expertmodus, voor meer uitleg zie 8.4.1.2. Het is de bedoeling dat men het kenmerk, waarvan men informatie wilt toevoegen, verwijderen of aanpassen, selecteert in de boom. Vervolgens moet men op ‘Kenmerkuitleg’ of ‘Afleiderfiguren’ klikken.
107
Door op ‘Kenmerkuitleg’ te klikken kan men het woordje uitleg over het kenmerk toevoegen, verwijderen of aanpassen. Het rechterpaneel zal veranderen. Al naargelang er een uitleg aanwezig was of niet zal de inhoud verschillen.
figuur 8.67 : geen uitleg aanwezig Indien er nog geen uitleg voor een bepaald kenmerk was ingegeven ziet het rechterpaneel eruit zoals hierboven. Binnen het witte veld kan men een uitleg intypen van maximaal 255 lettertekens lang. Indien de maximale lengte bereikt is, zal het niet meer mogelijk blijken om tekst in te typen en zal er een ‘beep’ klinken. Na een klik op de ‘Verandering toepassen’-knop worden de gegevens in de databank aangepast. Het rechterpaneel van het scherm zal veranderen. Een voorbeeld is te vinden op onderstaand scherm. Dit is hetzelfde paneel als het paneel dat men zou krijgen als er wel al een uitleg ingegeven was. Indien men de huidige uitleg wilt wijzigen kan men een nieuwe uitleg typen binnen het witte veld. Opgelet: de uitleg mag nog steeds niet langer zijn dan 255 lettertekens. Na een klik op de ‘Verandering toepassen’-knop zal het scherm veranderen. Hetzelfde scherm zal zichtbaar zijn, maar de net ingegeven uitleg staat bij huidige uitleg. Indien men de huidige uitleg
108
wil verwijderen, dient men op de knop ‘Uitleg wissen’ te klikken. Daardoor zal de uitleg veranderen en het scherm zal het scherm van figuur 8.67 worden.
figuur 8.68 : wel uitleg aanwezig Door op het linkerpaneel op de knop ‘Afleiderfiguren’ te klikken kan men prentjes voor de afleiders van het geselecteerde kenmerk uit de boom toevoegen, wijzigen of verwijderen. Na de klik op de ‘Afleiderfiguren’-knop verandert de rechterkant, zoals te zien op onderstaande figuur. Voor elke afleider van het geselecteerde kenmerk is er een figuur en één of twee knoppen. Indien er nog geen figuur ingegeven was voor een bepaalde afleider ziet men een rood omkaderde rechthoek met een vraagteken in. Naast die figuur is er één knop, namelijk ‘Figuur toevoegen’. Als men op die knop klikt opent er zich een bestandskiezer. Daar kan men het bestand dat de juiste figuur bevat horende bij de afleider selecteren. Er worden alleen figuren met een gif of jpg extensie toegestaan. De gekozen figuur zal daarna op het rechterpaneel zichtbaar zijn. Er bevinden zich twee knoppen naast.
109
Indien er wel al een figuur ingegeven was voor een bepaalde afleider ziet men de bijhorende figuur met daarnaast twee knoppen: ‘Figuur aanpassen’ en ‘Figuur verwijderen’. Door op de ‘Figuur aanpassen’-knop te klikken krijgt men opnieuw een bestandskiezer, waar men een nieuw bestand kan kiezen. Door op de ‘Figuur verwijderen’-knop te klikken verwijdert men de figuur en krijgt men weer de rood omkaderde rechthoek met een vraagteken in te zien. De figuren worden (anders dan in toevoegen en wijzigen) niet herschaald omdat de figuren dikwijls details beschrijven. Er moet wel opgemerkt worden dat grote foto’s dan niet volledig zichtbaar zullen zijn, tenzij er met de schuifbalken gewerkt wordt. Houd hiermee rekening bij het kiezen van de figuren.
figuur 8.69 : figuren van afleiders bewerken Stoppen kan door op de menubalk in het menu stop voor ‘Stoppen’ te kiezen.
110
Algemeen besluit Het doel van dit project is bereikt. Appels kunnen gemakkelijk in een databank gecatalogeerd worden en determineren is op twee niveau’s mogelijk. Er is geprobeerd om zo object-gericht mogelijk te werken. Dit resulteert in een duidelijke scheiding tussen de databank en de GUI. In de toekomst is het de bedoeling dat dit project door andere studenten wordt voortgezet. Bij het ontwerp van de databank is de doelstelling van uitbreidbaarheid zeker bereikt. Uitbreiden naar andere fruitsoorten betekent geen wijziging in de tabellenstructuur. Binnen de applicatielogica is er geprobeerd om zo veel mogelijk dynamisch te werken. De gegevens omtrent de fruitsoort, nodig bij het catalogeren en determineren, worden zoveel mogelijk uit de databank gehaald. Enkel bij de GUI is er besloten van niet dynamisch te werk te gaan. Het dynamisch aanmaken van de user interface leek ons niet haalbaar gezien de grote hoeveelheid kenmerken. De gebruiksvriendelijkheid zou er, ons inziens, ten zeerste onder lijden. Als we onze verwezelijking achteraf bekijken, merken we zelf op dat onze programmeerstijl er in de loop van het project op verbeterd is. De structuur van onze code werd duidelijker naarmate het project verstreek. Mochten we het project moeten overdoen, zouden er bepaalde zaken efficienter en overzichtelijker aangepakt worden. Java bevat een zeer uitgebreide functionaliteit. Toen we in het begin aan het project begonnen hadden we geen idee van de vele mogelijkheden. Soms bleek dat we iets hadden geïmplementeerd wat reeds bestond. Dit hebben we dan aangepast. Desalnietemin we met dit project een betere kijk hebben gekregen op de mogelijkheden die Java biedt, hebben we nog lang geen volledig op wat Java ons allemaal te bieden heeft. Enkele punten van verbetering: -
De interactie van de grafische interface verloopt momenteel vooral met de muis. Graag hadden we het meer keyboard-gericht gezien, maar hiervoor was onvoldoende tijd.
-
Bij determineren is de mogelijkheid voorzien om bij het ingeven van waarden te wissen per kenmerk. Door een andere structuur bij toevoegen is dit hier nog niet ingebouwd.
-
Momenteel is er geen webapplicatie voorzien, daar dit in eerste instantie niet door de NBS gevraagd werd. Tijdens een meeting in maart bleek sommige
111
leden van de raad van bestuur dit echter als een pluspunt te zien. Voor ons was het toen echter reeds te laat om dit nog te verwezelijken. -
Aanvankelijk was het de bedoeling om het binnen het programma mogelijk te maken om de individuele fiches af te drukken. Dit bleek echter niet zo eenvoudig. Daarom werd er geopteerd voor FOP, zodat er kon geëxporteerd worden naar afdrukbaar formaat, namelijk PDF. Dit was echter al in een later stadium. Bij het genereren van de individuele fiche in PDF-formaat moet er een input.xml bestand gegenereerd worden. Het genereren van dit input bestand gebeurt niet echt ‘netjes’. Er wordt een gigantische string gemaakt en in een bestand gestoken. Een nettere oplossing zou gebruik maken van SAX. Hiervoor hadden we spijtig genoeg niet voldoende tijd meer.
Bij aanvang van dit eindwerk was het project nogal vaag omschreven. Dit omdat de NBS geen idee had van wat de mogelijkheden waren. Hierdoor hebben we zelf veel belangrijke keuzes in hun plaats moeten maken. We mogen toch stellen dat we tot een gewaardeerd en gebruiksvriendelijk programma zijn gekomen.
112
Appendix 1 Lijst van kenmerken en hun afleiders Bij sommige kenmerken staat er (B.I.) vermeld, dit staat voor Bijkomende Informatie. -
Identificatie gegevens - Pomologische naam (Eerste beschrijver, variëteitnaam) - Synoniemen (max. 5) - Lokale namen (max. 5) - Bibliografie
-
Vruchtvlees - Hardheid - erg zacht (1) - zacht (3) - matig vast (5) - vast/hard (7) - hard/krakend (9) - Kleur - wit - witgroen - geel - groenig - groengeel - dooradering - andere kleur - zelfde kleur - Sapgehalte (eetrijp) - droog (1) - weinig sappig (3) - matig sappig (5) - zeer sappig (7) - extreem sappig (9) - Structuur - erg fijn (1) - fijn (3) - gemiddeld fijn (5) - grof (7) - zeer grof/korrelig (9)
113
-
-
-
-
-
-
Zoetheid (eetrijp smaakgevoel) - niet zoet (1) - beetje zoet (3) - gemiddeld zoet (5) - sterk zoet (7) - enorm zoet (9) Zuurheid (eetrijp smaakgevoel) - niet zuur (1) - beetje zuur (3) - gemiddeld zuur (5) - sterk zuur (7) - enorm zuur (9) Globale smaak (eetrijp) - zeer slecht (1) - slecht (3) - middelmatig (5) - goed (7) - zeer goed (9) Aroma (eetrijp) - zwak aromatisch - krachtig aromatisch (B.I.) beschrijving aroma Gevoeligheid (meerdere keuzes mogelijk) - stip - druk - vochtverlies - meligheid - glazigheid Gevoeligheid voor kneuzingen - erg klein (1) - klein (3) - middelmatig (5) - groot (7) - erg groot (9) (B.I.) Vitamine C gehalte - waarde adhv min. 10 vruchten (B.I.) Soortelijke massa - waarde adhv min. 10 vruchten (B.I.) Suikergehalte (refractometer in Bzix °) plukrijp/eetrijp - 1/100 foutmarge (B.I.) Zuurheid tov appelzuur(ph) - 1/100 foutmarge
114
-
Vorm en grootte - Algemene vorm (“gemiddelde” nemen van 10 vruchten, groot en klein) - bolvormig (vb. Golden Noble, Rome Beauty) - bolvormig conisch (vb. Cox’s Orange Pippin) - breed bolvormig conisch (vb. laxton’s Fortune, Beauty of Bath) - plat (vb. Court pendu) - plat rond (vb. Bramley’s Seedling, Idared) - kegelvormig/conisch (vb. Adam’s Pearmain) - kegelvormig/verlengd of Smal/conisch (vb. Kent, Norfolk Royal) - afgeknot/kegelvormig (vb. Kidd’s Orange Red) - elliptisch/ovaal (vb. Spencer, Kerry Pippin) - ovaal/kegelvormig of Elliptisch/conisch (eivormig) (vb. Summerred) - rechthoekig (vb. Gravenstein, Mutsu) - rechthoekig/kegelvormig/conisch (vb. Close, Catshead, Lord Derby) - rechthoekig samengetrokken (vb. Red Delicious) - Symmetrie (profiel) (optische indruk) - symmetrisch - licht asymmetrisch - asymmetrisch - Symmetrie (doorsnede) - regelmatig - licht onregelmatig - onregelmatig - Vormregelmaat in profiel ( de gelijkheid van de vorm van verschillende appels van 1 boom) - vormvast (1) - licht onregelmatig (2) - onregelmatig (3) - Vorm in dwarsdoorsnede (cm-maat! Fig N.O) - rond - ovaal - hoekig - Grootte - extreem klein (Golden Harvey) (1) - erg klein (Api Noir, Api) (2) - klein (Beauty of Bath, Pigeon, Miller’s Seedling) (3) - klein/gemiddeld (Alkmene, Cox’s O.P., Discovery) (4) - gemiddeld (Cox’s O.P., Golden D.) (5) - gemiddeld/groot (Gravensteiner, Lobo, Holsteiner Cox) (6) - groot (Schone v. Boskoop, Mutsu) (7) - erg groot (Mutsu, Bramley’s Seedling) (8) - extreem groot (Howgate Wonder) (9) - (B.I.) Gemiddelde hoogte (in mm) - waarde adhv van het gemiddelde van minimum 20 vruchten (1mm fout) - (B.I.) Gemiddelde breedte (in mm) - waarde adhv van het gemiddelde van minimum 20 vruchten (1 mm fout)
115
-
-
-
-
Verhouding breedte/hoogte - hoog - middelmatig - afgeplat Verhouding breedte kelkholte/steelholte - conisch - conisch/plat - cilindrisch Aanwassen (meerdere mogelijkheden) - vleesknobbel aan kelk - vleesknobbel aan steel - wratten en verdikkingen op vrucht
Vruchthuid en kleur - Oppervlak (meerdere mogelijkheden) - glad - ruw - droog - vettig - Dikte huid - dun - middelmatig - dik - Grondkleur bij oogstrijpheid - geel (Golden D.) (1) - witgeel (Transparent de Croncels) (2) - groengeel (Cox’s O.P.) (3) - witgroen (Oogstappel) (4) - groen (Granny Smith) (5) - oranje (6) - rood (7) - anders - Voorkomen dekkleur - over het hele oppervlak (9) - over grote delen vrucht (5) - aan zonzijde (blos) (3) - niet aanwezig (1) - Dekkleur (oogstrijp) - oranje (1) (Egremont Russet) - roos (2) ( ? ) - rood (3) (Jonathan) - donkerrood (4) (C.P. Plat) - paars (5) (Spartan) - bruin (6) (Lord Burghley)
116
-
-
-
-
-
-
Graad van dekkleur (oogstrijpheid) - afwezig (Granny Smith) (1) - weinig (Cox’s O.P.) (3) - gemiddeld (Gala) (5) - veel (Spartan) (7) - zeer veel (9) Patroon van dekkleur (meerdere mogelijk) - brede banden (Richard Delicious) - gestreept (Jupiter) - gespikkeld (Elstar) - gevlekt - gemarmerd (Reinette Marbrée) - gewassen (Gloster) Streping - geen (1) - middelmatig gestreept (5) - volledig gestreept (9) Beroestingsgraad - geen beroesting (0%) (1) - steelholte en/of kelk beroest (2) - zeer zwak beroest (<25%) (3) - zwak beroest (<50%) (4) - voor helft beroest (5) - sterk beroest (>50%) (6) - zeer sterk beroest (>75%) (7) - bijna volledig beroest (8) - volledig beroest (100 %) (9) Type beroesting - extreem fijn - erg fijn - gemiddeld - grof - geschubd - gebarsten Lenticellen vorm - rond - ovaal Lenticellen kleur - helder - donker Lenticellen zichtbaarheid - zwak (1) - duidelijk (3) - middelsterk (5) - sterk uitgesproken (7) - voelbaar (9), (Rode Bonheider)
117
-
-
Geur - zwak - krachtig - onbepaald Reliëf (meerdere mogelijkheden) - glad - wrattig - bultig - smalle ribben - tussenribben - brede ribben
-
Rijptijd en bewaarvermogen - Plukrijptijd - erg vroeg (Oogstappel, Close) (1) - vroeg (Tijdeman, Early W.) (3) - middenseizoen (Golden Delicious, Cox’s O.P.) (5) - laat (Jonagold, Fuji) (7) - erg laat (Granny Smith, Rome Beauty) (9) - Begin consumptierijpheid - extreem vroeg (aug) (1) - vroeg (sept) (3) - midden seizoen (okt, nov, dec) (5) - laat (jan, feb, maart) (7) - extreem laat (april, mei) (9) - (B.I.) Natuurlijke luchtbewaring - bewaarbaarheid tot … (week van het jaar) (foutmarge 1 week) - (B.I.) Koelhuisbewaring t° tot - bewaarbaarheid tot … (week van het jaar) (foutmarge 1 week)
-
Gebruik - Kookeigenschappen en gebruik - slecht - middelmatig - goed
118
-
-
-
Verwerkingsmogelijkheden (meerdere mogelijkheden mogelijk) - sap (1) - moes (2) - stoven (3) - stroop (4) - drogen (5) - wecken (6) - chips (7) - pectine (8) - konfijten (9) - gelei (10) - wijn (11) - azijn (12) - diksap (13) - opleg op azijn (14) - opleg op alcohol (15) - decoratie (16) - expositiefruit (17) Dessertkwaliteit (globale smaakervaring) - zeer slecht (1) - geringe kwaliteit (3) - middelmatig (5) - goed (7) - zeer goed (9)
Kelk/Kelkbladeren (bij pluk) - Kelktoestand (fig.) - gesloten (1) - halfopen (2) - open (3) - Lengte - kort (1) - middelmatig(5) - lang (9) - Breedte - smal (1) - middelmatig(5) - breed (9) - Bekleding - glad (1) - wollig (5)
119
-
-
-
-
-
Kleur - geelgroen - groen - geelbruin - roodbruin - roodachtig - grijs Stand - opgericht - samenneigend - platliggend Uitzicht - recht - gedraaid - teruggeplooid - gootvormig Punt - stompeindigend - spitseindigend Basis - aan basis vergroeid - basis gescheiden
Kelkholte - Breedte - smal (1) - middelmatig (2) - breed (3) - Diepte - opzittend (1) - ondiep (2) - middelmatig diep (3) - diep (4) - Ribbing Rand - afwezig of zeer zwak (1) (Charles Ross) - zwak (3) (Cox’s O.P., Beauty of Bath) - middelmatig (5) (Mutsu) - sterk (7) (Red Delicious) - zeer sterk (9) (Cox Pomona) - Grondkleur bij rijpheid - rood - oranje - romig wit - geel - geelgroen - groen
120
-
-
-
Dekkleur - oranje - roos - rood - donkerrood - paars - bruin Beroestingsvorm - geen beroesting - niet uitstralende vlek - uitstralende vlek
Kelkhuis/-buis - Grootte - klein (1) - middelmatig (2) - groot (3) - Breedte - smal (1) - middelmatig breed (2) - breed (3) - Vorm (meerdere mogelijkheden) - spitseindigend - stompeindigend - driehoekig - langdriehoekig - trechtervormig - Diepte - weinig diep (1) - middelmatig (2) - diep (3) - Kelkbuis breedte - smal - breed - Kelkbuis lengte - kort - lang - Inplanting meeldraden: - bovenste deel - midden - onderste deel
121
-
Vruchtsteel (bij pluk) - Lengte - zeer kort (nooit buiten steelholte) (1) - kort (ongeveer gelijk met steelholte of weinig uitstekend) (3) - middelmatig (5) - lang (7) - zeer lang (9) - Dikte - zeer dun (< 2 mm) (1) - dun ( 2 mm) (3) - middelmatig dik ( 2-3 mm) (5) - dik ( 3 mm) (7) - zeer dik ( > 3 mm) (9) - Kleur - groen - groengeel - bruin - roodbruin - Aard (meerdere mogelijkheden) - houtig - houtig tot vlezig - vlezig - donzig - verdikt aan uiteinde - gezwollen
-
Steelholte - Breedte - zeer smal (1) - smal (3) - middelmatig breed (5) - breed (7) - zeer breed (9) - Diepte - onbestaande (1) - ondiep (3) - middelmatig diep (5) - diep (7) - zeer diep (9) - Grondkleur bij rijpheid - rood - oranje - romig wit - geel - geelgroen - groen
122
-
-
-
-
Dekkleur - oranje - roos - rood - donkerrood - paars - bruin Oppervlak - glad - geplooid - met ribben - concentrische barstjes Beroestingsvorm - geen beroesting - niet uitstralende vlek - uitstralende vlek
Klokhuis + zaadholten in lengtedoorsnede - Ligging - midden in vrucht (1) - kelkzijdig (2) - steelzijdig (3) - Vorm klokhuis - hartvormig (1) - ajuinvormig (2) - bolvormig – conisch (3) - eivormig-conisch (4) - ellipsvormig – verlengd (5) - afgeplat (6) - Grootte zaadholten - klein - middelmatig - groot - zeer groot - Wand zaadholten - glad (1) - wollig (2) - wollig gestreept (3) - Vorm zaadholten - sikkelvormig (1) - boogvormig (2) - boonvormig (3) - oorvormig (4) - rugzakvormig (5)
123
-
-
Klokhuisas - gesloten (1) - open lacetvormig (2) - open elliptisch (3) Vaatbundeldoorsnede (fig) - klein (< ½ doorsnede vrucht) (1) - middelmatig (= ½ doorsnede vrucht) (2) - groot (groter dan ½ en kleiner dan ¾ doorsnede vrucht) (3) - zeer groot ( groter dan ¾ doorsnede vrucht) (4)
-
Klokhuis en zaadholten in dwarsdoorsnede - Asholte klokhuis - geen - klein - groot - Zaadholten - open (1) - gesloten (2) - Vorm zaadholten - ovaal (1) - lacetvormig (2) - ruitvormig (3) - concaaf (4) - Volume (breedte) zaadholte - smal - breed - gedeeltelijk verbonden - volledig verbonden
-
Pitten - Kleur (onmiddellijk na opensnijden vrucht) - gelig (1) - zwartbruin (4) - oranjebruin (2) - kastanjebruin (3) - Ontwikkeling - goed gevormd (2n) - loze of onvolmaakte pitten (3n) - Aantal per vrucht - talrijk (9) 9/10 - middelmatig (7) 7/8 - gering (5) 5/6 - zeer gering (3) 3/4 - geen (parthenocarpisch) (1)
124
-
-
-
-
-
Lengte - zeer klein (< 6 mm) (1) - klein (6-7 mm) (3) - middelgroot (7-8 mm) (5) - groot (8-9 mm) (7) - zeer groot ( > 9 mm) (9) Breedte - zeer smal (1) - smal (2) - middelmatig breed (3) - breed (4) Vorm - rond - ovaal - lang ovaal - spits Kop - gladkoppig - spitsneuzig in het midden - zijdelings spitsneuzig - zijdelings stompneuzig
Blad ( In groeiseizoen te nemen in het midden van een éénjarige twijg) - Oppervlak - glad - bedonsd - Grootte - zeer klein (1) - klein (3) - middelmatig (5) - groot (7) - zeer groot (9) - Vorm - elliptisch (vb. Borovincki) (1) - bijna rond (vb. Bâtul) (2) - rond (vb. Renet Bergamot) (3) - ovaal (vb. Boiken) (4) - obovata (vb. Candil Sinap) (5) - hartvormig (6) (fig Romanie p 168 I) - Punt - puntig convex (1) - puntig concaaf (2) - obtuus (3) zie fig. - afgerond (4)
125
-
-
-
-
-
Bladrand - gaaf (1) - getand (2) - dubbel getand (3) - gezaagd (4) (vb. Reinette Bauman fig. 55 p 170) - dubbel gezaagd (5) (vb. Bâtul) - gelobd (6) (vb. Reinette Bergamot) Bladbasis (steelkant) - versmallend (convex) (1) - versmallend (concaaf) (2) fig 54, p 176 - afgerond (3) - hartvormig (4) Kleur bovenkant (in groeiseizoen) - lichtgroen - groen - donkergroen - groenros - groengeel - bijzonder Herfstkleur - geel - rood - bruin
Bladsteel - Dikte - dun - middelmatig - dik - Lengte - zeer kort - kort - middelmatig - lang - zeer lang - Kleur - geel - geelgroen - groen - donkergroen - Steunblaadjes - geen - klein - middelmatig - groot
126
-
-
Inplanting - recht - schuin Oppervlak - glad - bedonsd
Twijg - Dikte - zeer dun - dun - middelmatig dik - dik - Lengte (normale groei) - kort - middelmatig - lang - zeer lang - Vorm 1-jarige twijg - recht - gebogen - gekruld - Internodiën op een 1-jarige twijg - klein - middelmatig - groot - (B.I.) Aantal : knoppen/20 cm:……. - kleur - bruin - rood - groenig - gelig - Bedonzing - geen (1) - licht (3) - middelmatig (5) - sterk (7) - volledig (9) - Lenticellen vorm - rond - ovaal - anders
127
-
-
-
-
-
-
Lenticellen kleur - helder - donker - helder op donker - donker op helder Lenticellen zichtbaarheid - zwak (1) - duidelijk (3) - middelsterk (5) - sterk uitgesproken (7) - voelbaar (9) Vorm knoppen - rond - ovaal - driehoekig - verlengd Kleur knoppen - grijs - bruin - groen - rood Stand van de knoppen tov tak - aanleunend - afstaand Top knoppen - puntig - stomp - rond
Vegetatieve kenmerken - Groeikracht - zeer zwak (1) - zwak (3) - middelmatig (5) - sterk (7) - zeer sterk (9) - Plaats vruchtdracht - I - II - III - IV - Wijze van vruchtdracht - apart hangend - per 2 hangend - in tros samenhangend
128
-
-
-
-
-
-
Eerste vruchtdracht - zeer vroeg (1) - vroeg (3) - middelmatig (5) - laat (7) - zeer laat (9) Productiviteit - zeer laag (1) - laag (3) - middelmatig (5) - hoog (7) - zeer hoog (9) Beurtjaargevoeligheid - niet (1) - weinig (3) - middelmatig (5) - vrij groot (7) - zeer groot (9) Groeibeeld gesteltakken– annex II - sterk rechtop (-30°) (1) - opgericht (30°) (3) - open gespreid (30°-60°) - open tot plat (60°-90°) - afhangend (90°-120°) - treurvorm (+120°) (9) Vertakkingsgraad - weinig vertakt - matig vertakt - sterk vertakt Stamkenmerken - goed als stamvormer - slecht als stamvormer Habitus hoogstamboomkruin - afgeplat bolvormig - bolvormig - breed piramidaal - hoog piramidaal - hoog rond - omgekeerd piramidaal - piramidaal - schermvormig - zuilvormig
129
-
Fysiologische Kenmerken - Begin bloei (10% open bloemen) - zeer vroeg (1) (Gravensteiner) - vroeg (3) (Schone van Boskoop) - middelmatig (5) (Cox’s o.p., Golden D.) - laat (7) (Court Pendu rosat, Gloster 69) - zeer laat (9) (Feuillemorte) - Duur van bloei in dagen - kort - middelmatig - lang - (B.I.) gemiddeld aantal dagen bloei - Vorstbestendigheid - weinig gevoelig (1) - middelmatig gevoelig (2) - zeer gevoelig (3) - Regelmaat van bloeien (5 typen) - buitengewoon onregelmatig (meerdere jaren niet) (1) - onregelmatig ( = kan 2 jaar overslaan) (3) - tweejaarlijks ( = beurtjaar) (5) - regelmatig ( = bepaalde jaren niet) (7) - buitengewoon regelmatig (Jaarlijks) (9) - 2e bloeiperiode - zeer zelden (1) - zelden (3) - middelmatig (5) - regelmatig (7) - zeer vaak (9) - Aard stuifmeel - goed (1) - slecht (2) - Intensiteit van de bloei - zeer klein (1) - middelmatig (5) - explosieve bloei (9) - Zelffertiliteit - zelfsteriel (1) - slecht (3) - gemiddeld (5) - goed (7) - zeer goed (9) - Ploïdie - diploïde (2n) - triploïde (3n)
130
-
Gevoeligheden voor aantastingen - Schimmels - bladschurft - takschurft - vruchtschurft - meeldauw - kanker - wortelrot - monilia - bottrytis - witziekte - stambastsrot - Insecten - bladluis - wollig bloedluis - schildluis - spin (spint) - fruitmot (wormstekigheid) - Bacteriën - perenvuur - Virussen - appelbladmozaïek - flat limb - rubberhout - heksenbezem - roestziekte waarden voor witziekte en kanker: - niet zichtbaar - secundaire infectie - sterk verspreid - zware infectie - maximale infectie waarden voor al de rest: - niet zichtbaar - in kleine mate - sterk verspreid - zware infectie - maximale infectie - Bewaarziekten - Stip - Bewaarrot - Klokhuisrot - Jonathanspot - Bitterpit
131
-
Stressgevoeligheid - Warmte - zeer gevoelig - gevoelig - middelmatig - bestand - zeer bestand - Koude – vorst (in de lente) - zeer gevoelig - gevoelig - middelmatig - bestand - zeer bestand - Droogte - zeer gevoelig - gevoelig - middelmatig - bestand - zeer bestand - Vochtigheid - zeer gevoelig - gevoelig - middelmatig - bestand - zeer bestand - Zonnebrand - zeer gevoelig - gevoelig - middelmatig - bestand - zeer bestand
-
Standplaatsfactoren - Windgevoeligheid - zeer gevoelig - middelmatig - zeer takvast - Bodemvereisten (meerdere keuzen) - droge zandbodem - leem - klei - goede vruchtbare bodem - vochtige koude bodems
132
-
-
-
Oriëntatie (leivormen) - N - NO - O - ZO - Z - ZW - W - NW Hoogtelijn: - < 300 m - 300 m tot 500 m - > 500 m
Cultuur - Goede compatibiliteit met: (meerdere) - zaailing - M7 - M9 - MM111 - Teeltwaarde (meerdere) - landschappelijke toepassing - boomgaardvariëteit - fruittuin - massaproductie - sierteelt - Boomvormen (meerdere) - hoogstam - halfstam - struik - leivorm espalier - leivorm verrier - leivorm U-vorm - leivorm cordon - Zwavelgevoeligheid - weinig - middelmatig - sterk - Gevoelig voor bordeaulese pap - weinig - middelmatig - sterk - Gevoelig voor koper - weinig - middelmatig - sterk
133
-
(B.I.) Gelijkende vruchten - opsommingsmogelijkheid (max. 5 namen van variëteiten) (B.I.) Bepalende vruchtkenmerken - opsommingsmogelijkheid (max. 5 kenmerken)
134
Appendix 2 Tabel van Vercier
135
Appendix 3 Voorbeeld van een individuele fiche in PDF-formaat Zie PDF-bestand in bijlage: Transparente de Croncels.pdf
136
Figurenlijst figuur 4.1 : boomstructuur
21
figuur 5.1 : relatieschema van de volledige databank
32
figuur 5.2 : algemene tabellen
33
figuur 5.3 : inhoud van kenmerktype
34
figuur 5.4 : extra tabellen
36
figuur 5.5 : tabellen voor de helpfunctie
37
figuur 5.6 : tabellen voor de foto’s
38
figuur 6.1 : opstellen van een boomstructuur
40
figuur 6.2 : leeg verloop-scherm
45
figuur 6.3 : verloop PDF generatie
48
figuur 8.1 : radiobuttons
60
figuur 8.2 : togglebuttons
61
figuur 8.3 : checkboxen
61
figuur 8.4 : lijsten
62
figuur 8.5 : dropdownlist
62
figuur 8.6 : tekstveld
62
figuur 8.7 : leeg
63
figuur 8.8 : toevoegen van een synoniem
63
figuur 8.9 : verwijderen van een synoniem
64
figuur 8.10 : schuifpaneel met checkboxen
64
figuur 8.11 : verschil tussen scherm en paneel
65
figuur 8.12 : tabs van een tabpagina
66
figuur 8.13 : een waarschuwingsbericht
66
figuur 8.14 : een informatiebericht
67
figuur 8.15 : progressiebericht
67
figuur 8.16 : icoontje
68 142
figuur 8.17 : startmenu
69
figuur 8.18 : opbouw scherm voor toevoegen
71
figuur 8.19 : foutmelding voor verplicht kenmerk
72
figuur 8.20 : scherm voor het toevoegen van identificatiegegevens
72
figuur 8.21: foutmelding bij dubbele naam
73
figuur 8.22 : scherm met bijkomende informatie
74
figuur 8.23 : gelijkende vruchten en bepalende vruchtkenmerken
74
figuur 8.24 : voorbeeld van foto’s
75
figuur 8.25 : bestandskiezer
76
figuur 8.26 : scherm om referenties toe te voegen
77
figuur 8.27 : toevoegen voltooid
77
figuur 8.28 : vrucht reeds toegevoegd
78
figuur 8.29 : foutmelding bij toevoegen
78
figuur 8.30 : lijst met variëteiten om te wijzigen
79
figuur 8.31 : schermopbouw voor wijzigen
80
figuur 8.32 : vrucht verwijderd
82
figuur 8.33 : lijst met vruchten om te verwijderen
82
figuur 8.34 : startscherm determineren
84
figuur 8.35 : boomstructuur gedeeltelijk ontvouwen
85
figuur 8.36 : opgevouwen kenmerk
85
figuur 8.37 : opengevouwen kenmerk
85
figuur 8.38 : verschil tussen kenmerk en ouderkenmerk
86
figuur 8.39 : kenmerkenpaneel
87
figuur 8.40 : een kenmerk
88
figuur 8.41 : menu Starten
89
figuur 8.42 : menu Extra
89
figuur 8.43 : opnieuw beginnen
90
figuur 8.44 : overzicht van reeds ingevulde kenmerken
90
figuur 8.45 : determineren tijdens een tentoonstelling
91
figuur 8.46 : alles wissen?
92
figuur 8.47 : afsluitcontrole
93
143
figuur 8.48 : foutmelding
93
figuur 8.49 : keuze van percentage
94
figuur 8.50 : fichebak
95
figuur 8.51 : scherm om referenties te bewerken
96
figuur 8.52 : informatiebericht wanneer de referentie al in de lijst staat
96
figuur 8.53 : mogelijkheid om wijzigingen alsnog op te slagen
97
figuur 8.54 : helpfunctie startpagina
98
figuur 8.55 : tabblad ‘Index’
100
figuur 8.56 : helpfunctie met meerdere mogelijkheden
101
figuur 8.57 : helpfunctie voorbeeld met lijst
102
figuur 8.58 : wissen bij toevoegen en wijzigen
103
figuur 8.59 : wisfunctie eerste scherm
103
figuur 8.60 : wissen tweede scherm
104
figuur 8.61 : fichebak
105
figuur 8.62 : aanmaken PDF
106
figuur 8.63 : individuele fiche van Transparente de Croncels
106
figuur 8.64 : aanpassen paswoord en gebruikersnaam
107
figuur 8.65 : foutmelding bij wijzigen van paswoord en gebruikersnaam
107
figuur 8.66 : kenmerken bewerken
108
figuur 8.67 : geen uitleg aanwezig
109
figuur 8.68 : wel uitleg aanwezig
110
figuur 8.69 : figuren van afleiders bewerken
111
144
Literatuurlijst ONGENAE en COOLSAET, V. en K., Webtechnologie, Hogeschool Gent Vakgroep Informatica en Universiteit Gent Vakgroep Toegepaste Wiskunde en Informatica, 2003-2004 POLLEFLIET, K., Je EINDWERK... op een correcte, aantrekkelijke, verantwoorde manier. Hoe begin je eraan?, tweede herwerkte versie, Hogeschool Gent, 1998 VERCIER, J., La détermination rapide des variétés de fruits, Parijs, Libraire J.-B. Baillière et fils, 1942 Nationale Boomgaarden Stichting, URL: http://www.boomgaardenstichting.be [september 2003 – mei 2004] Cera Foundation Award, URL:http//award.cerafoundation.be [februari 2003 – mei 2004] Vercier Joseph, http://perso.wanadoo.fr/fourey/croqueurs-de-pommes/vercier.htm [september 2003 – mei 2004] MySQL: The World’s Most Popular Open Source Database, URL:http//www.mysql.com [september 2003 – mei 2004] PostgreSQL, http://www.postgresql.org [september 2003 – mei 2004] FOP, http://xml.apache.org/fop/index.html [april 2004 – mei 2004]
145