Produktrapport. Hovedprosjekt ved Høgskolen i Oslo

Like dokumenter
Forprosjekt Hovedprosjekt ved Høgskolen i Oslo Våren 2008

Kravspesifikasjon Hovedprosjekt ved Høgskolen i Oslo Våren 2008

Prosessrapport. Hovedprosjekt ved Høgskolen i Oslo. Våren 2008

S y s t e m d o k u m e n t a s j o n

Hovedprosjekt i data ved Høgskolen i Oslo våren 2007

1 Forord. Kravspesifikasjon

Testsituasjon Resultat Kommentar. Fungerer som det skal!

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

Kjøre Wordpress på OSX

1. Innføring i bruk av MySQL Query Browser

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

Eksamen i Internetteknologi Fagkode: ITE1526

Innstallasjon og oppsett av Wordpress

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

IN2000. Gjennomgang av tekniske oppgaver på prøveeksamen. Erlend Stenlund og Steffen Almås + innspill fra Gaute Berge

Test Beskrivelse Resultat Innhenting CBIS Programmet mottar data fra CBIS OK, men kun. Innhenting Tellus Programmet mottar data fra Tellus OK

Båtforening på nett. Produktrapport

Eksamen i Internetteknologi Fagkode: ITE1526

INF5120 Oblig 1c4 - Gruppe 19

Web fundamentals. Web design. Frontend vs. Backend Webdesign 17. januar Monica Strand

CORBA Component Model (CCM)

Argumenter fra kommandolinjen

Implementering av caching ved hjelp av Spring. Christian Vestøl

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

MySQL. Historikk. Nedlasting og installasjon

file:///c:/users/michaelp/sites/dkdm/dw6/dreamweaver6.html

Testing av Noark 5 uttrekk med kdrs-toolboxvalidator og innsyn med kdrs-toolbox-innsyn. Thomas Sødring HiOA

Innføring i bruk av CGI4VB

Innledende Analyse Del 1.2

Produktrapport. Produktrapport. Hjelpemiddel portal for Parkinsonforbundet

Introduksjon til fagfeltet

Produktrapport Gruppe 9

Introduksjon til programmering og programmeringsspråk

Forprosjekt gruppe 13

Obligatorisk oppgave 3 i Databaseadministrasjon.

Bachelorprosjekt 2015

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

Læreplan i informasjonsteknologi - programfag i studiespesialiserende utdanningsprogram

Dette dokumentet er en produktrapport for vårt avsluttende hovedprosjekt våren 2008 ved høgskolen i Oslo, for ingeniør - avdelingen.

PROSESSDOKUMENTASJON

En lett innføring i foreninger (JOINs) i SQL

HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

Produktrapport. Utvikling av moduler til CMS for bonefish.no. Gruppe 08-23

2 Om statiske variable/konstanter og statiske metoder.

Databaser kort intro. Tom Heine Nätt

Denne rapporten er beregnet for dataansvarlig på Grefsenhjemmet, den som skal installere, vedlikeholde og modifisere systemet.

Kravspesifikasjon MetaView

Dette er en demonstrasjonsside som vi skal bruke for å se litt nærmere på HTTP protokollen. Eksemplet vil også illustrere et par ting i PHP.

SQL: Systemaspekter. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Systemaspekter V18 1 / 21

Innhold Forord...3 Begreper og akronymer...4 Systembeskrivelse...5 Generelt...5 Funksjonelle krav...7 Ikke-Funksjonelle krav...9 Prioritering...

Oppgave 1 (Opprett en database og en tabell)

Arne Maus, Ifi. delvis lån av gamle foiler

Kravspesifikasjon. Leserveiledning Kravspesifikasjonen består av følgende deler: Presentasjon Om bedriften

Enkle generiske klasser i Java

Artist webside. Gruppe medlemmer Joakim Kartveit. Oppdragsgiver Tetriz Event & Management. Frode Mathiesen. Gry Anita Nilsen.

Tilkobling og Triggere

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

ADDML. Archival Data Description Markup Language. Generell del. Versjon PA 0.07 Sist oppdatert: TPD. ADDML_8_2.doc 03/03/2011 1(12)

Vårt system kan kjøres ved å skrive. STUD1 konto fredo 37 (holdeplass)

Forord Dette er testdokumentasjonen skrevet i forbindelse med hovedprosjekt ved Høgskolen i Oslo våren 2010.

Final Projectreport Gry Skårbø

Tjenestebeskrivelse Webhotelltjenester

3 Filstruktur. Slik ser filstrukturen til applikasjonen ut når den er lagt ut på server eller når den er deployet.

Kapittel 1: Datamaskiner og programmeringsspråk

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

P L A N I A 8 S Y S T E M K R A V PLANIA 8 SYSTEM KRAV. Plania 8 Systemkrav.docx av 8

SPARQL. Daniel Reinholdt. Trondheim Daniel Reinholdt (NTNU) SPARQL Trondheim / 17

Http- og WebServices funksjoner

Testrapport. Aker Surveillance. Gruppe 26. Hovedprosjekt ved Høgskolen i Oslo og Akershus. Oslo, Public 2013 Aker Solutions Page 1 of 5

Dagbok. Januar. Uke 2 ( ) Uke 3 ( ) Uke 3 (17.01, 12:45-14:00)

Pedagogisk regnskapssystem

Eksamen i Internetteknologi Fagkode: IVA1379

Kapittel 1: Datamaskiner og programmeringsspråk

Test 2 OOP. - Prøveeksamen

1. NetBeans IDE: Lage en enkel mobilapplikasjon

KRAVSPESIFIKASJON. Tittel: Pris++ Oppgave: Utvikle en Android applikasjon med tilhørende databasesystem. Periode: 1. Januar til 11. Juni.

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

Eksamen Objektorientert Programmering 2013

Utvikling fra kjernen og ut

INF1000 HashMap. Marit Nybakken 2. november 2003

2 Om statiske variable/konstanter og statiske metoder.

Satsvise, interaktive, sanntids/innbakte systemer. Arne Maus, Ifi. Oppdeling av både program og data på flere maskiner

3. Kravspesifikasjon. Experior - rich test editor for FitNesse -

Automatisering av uttrekk fra bevarte databaser

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

Introduksjon til objektorientert programmering

- analyse og implementasjon

Publisering av statiske og dynamiske websider til klasserom.net fra Dreamweaver og MySQL

Introduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

Produktdokumentasjon. Madison Møbler Administrasjonsside og Nettbutikk

Gruppe prosjekt del 3. INFO134 Klientprogrammering Vår 2017 Kandidatnummer: 304, 298

MARE NOSTRUM. Del 4 Brukermanual

Kravspesifikasjon Gruppe nr ABTF

KRAVSPESIFIKASJON v.1.2

Gruppenavn. Beskrivelse av arkitektur For Navn på systemet. Versjon <1.0>

Etternavn Fornavn Født Død Annet Felt

Presentasjon av gruppe 7: Erik Østensen, Henning Østensen og Kenneth Ådalen

Konfigurasjonsstyring

einnsyn PoC: Demo for tredje sprint

Transkript:

Produktrapport Hovedprosjekt ved Høgskolen i Oslo Våren 2008 1

1. Forord Produktrapporten beskriver systemet vi har utviklet i hovedprosjektet Metagen. Hovedprosjektet er et avsluttende prosjekt for bachelorstudiet i dataingeniør og informasjonsteknologi ved Høgskolen i Oslo. Informasjon om prosessen som førte frem til systemet finnes i prosessrapporten. Dokumentet er beregnet på vår oppdragsgiver A-Pressen Interaktiv (API) som skal vedlikeholde og videreutvikle systemet og andre som måtte ha interesse av å sette seg inn i MetaGen. Leseren av dokumentet bør har kjennskap til Java og objektorientert programmering, samt generell kunnskap om faget data, for å få en fullverdig forståelse av dokumentet. 2

Innhold Produktrapport 1 Hovedprosjekt ved Høgskolen i Oslo 1 Våren 2008 1 1. Forord 2 3. Innledning 4 4. Systemet 5 4.1 MetaGen 5 4.1.2 Arkitekturdiagrammet for systemet 7 5 Valg og vurdering av verktøy 7 5.1 Eclipse (med webtools) 7 5.2 SubClipse 7 5.3 M2clipse 7 M2clipse er en pluging som gjør det mulig å bruke maven i eclipse. Plugingen er ment å gi Maven-støtte i Eclipse. 7 5.4 Tomcat 6 8 5.5 Spring Framework 2.5 8 5.7 Hibernate 8 5.8 Ant/Maven 8 5.9 Subversion 8 5.10 Java SE JDK 6 9 5.11 MySQL 5 (InnoDB, UTF-8) 9 6. Kort innføring av Hibernate 10 6.1 Databasen 10 6.1.2 Tabell artikkel 10 6.1.3 Tabell politiker 11 6.1.4 Tabell parti 11 6.1.5 Tabell artikkel_has_politiker 11 7. XML 16 7.1 XML parsing 16 8.1 Pakage parse 19 8.2 Pakage service 19 8.3 Pakage web 19 8.4 Package events 19 9. MetaEx 20 10. Biblioteker i prosjektet 21 10.1 Biblioteker for systemet MetaEx 22 3

3. Innledning MetaGen automatisk genererer relevant tilleggsinformasjon til artikler basert på innhold. Dette inkluderer både ekstra informasjon om temaer som tas opp, men også referanser til andre artikler som handler om lignende tema. MetaGen kommuniserer med eksternt system, og gir ut info på forespørsel. Selve kommunikasjonen foregår i et strukturert XML format. Selv om systemet til en viss grad klare å oppdatere seg selv når artikler legges ut, så trengte vi et brukergrensesnitt for manuell overstyring og administrasjon av selve systemet. 4

4. Systemet I dette kapittelet beskrives MetaGen og de komponentene rundt systemet. 4.1 MetaGen Metagen er navnet på hovedprosjektet vårt, dette navnet ble født da vi forsto hva systemet skulle gjøre. Nemmelig berike artikkelen ved å generere metainformasjon (tileggsinformasjon) om innholdet. Systemet skal tas i bruk når en bruker skal lese en vilkårlig artikkel i en av APIs nettaviser. Metagen skal hente ekstra informasjon om innholdet til artikkelen uten at brukeren gjør noe ekstra. Informasjonen blir automatisk generert og brukes til å berike artikkelen. Det kan oppstå to situasjoner når systemet kjører. Figurene nedenfor viser situasjonene. Det kan oppstå to situasjoner når systemet kjører. Figurene nedenfor viser situasjonene. Når MetaGen finner artikkel iden i cache databasen skjer det følgende: 5

Når MetaGen ikke finner artikkel iden i cache databasen skjer det følgende: 6

4.1.2 Arkitekturdiagrammet for systemet Arkitekturdiagrammet viser relasjonene mellom de forskjellige delene i MetaGen og omgivelsen rundt MetaGen. 5 Valg og vurdering av verktøy I dette kapittel tar vi for oss de verktøyene som har blitt brukt under utviklingen av systemet. 5.1 Eclipse (med webtools) Eclipse er et rammeverk for utvikling av Java programmer. Et utviklingsverktøy som har en del nyttige plugings. Eclipse er kompatibel med de fleste platformene. Det ble brukt ulike pluging funksjoner som M2clipse, subclipse, tomcat. Hensikten med Eclipse er å lage et lett miljø for å utvikle programvarer. Eclipse har prosjekthåndtering, støtter versjonskontroller og har integrerte debuggin. 5.2 SubClipse SubClipse er en pluging som muliggjør Subversion tilkobling i Eclipse, noe som ikke er standard. Vi kan si at det er en ekstramodul i Eclipse, som gjør at vi kan lett synkronisere koden mot subversion serveren uten å starte eksterne programmer. 5.3 M2clipse M2clipse er en pluging som gjør det mulig å bruke maven i eclipse. Plugingen er ment å gi Mavenstøtte i Eclipse. 7

5.4 Tomcat 6 Tomcat er en en Servlet container og webserver som tolker JSP-kode og Java Servleter. Det er denne webserveren systemet vår kjøres på. 5.5 Spring Framework 2.5 Spring er et gratis rammeverk med mange tjenester og muligheter. Det er en åpen kildekode applikasjon for Java platformer. Vi kan si at Spring er en samling av mindre rammeverk og de fleste av disse rammeverkene er dannet for å fungere uavhengige av hverandre, men de gir bedre funksjonalitet når de blir brukt sammen. Den sørger også for håndteringen mellom objektene og enkler gjør bruken av Hibernate. 5.7 Hibernate Hibernate er en av de mest populære ORM verktøyene for Java, og fungerer veldig bra sammen med Spring Framework. ORM står for Object Relational Mapping, og er et rammeverk som gjør det enklere å kommunisere med en relasjonsdatabase fra et objektorientert miljø. ORM- en tar seg av lagringen av dataene fra objektene i databasen når det er nødvendig, og henter ut dataene og plassere dem i objektet når det er nødvendig. Ved bruk av denne type ORM-teknologi kan man enkelt bytte database på et senere tidspunkt dersom er ønskelig. 5.8 Ant/Maven Maven er et verktøy og rammeverk for automatisert bygging, testing og deployment av Javaapplikasjoner. Maven har også en veldig avansert system for konfigurasjonsstyring av både egen koder og biblioteker. Ant og Maven er byggeprogrammer for å automatisere utrulling av programmet, og for å kjøre unittester. 5.9 Subversion Subversion(SVN) er et versjonkontrollsystem. Altså et system som kan holde orden på forskjellige versjoner av en eller flere filer. Flere personer kan jobbe på den samme filen. 8

5.10 Java SE JDK 6 Java er hovedteknologien for hele prosjektet. Java er for det første et objektorientert programmeringsspråk. Javas utvikler er James Gosling og andre utviklere hos Sun Microsystems. Det finnes forskjellige versjoner av Java som kan brukes. Standardutgaven heter Java SE. Java SE inneholder det mest grunnleggende man trenger for å kunne kjøre, samt utvikle Java-kode. 5.11 MySQL 5 (InnoDB, UTF-8) MySQL er en relasjonsdatabase og ordet SQL står for Structured Query Language. En database er enkelt et sted hvor du kan lagre informasjon i. MySQL5 er en type database med versjon 5 som har støtte for avansert funksjonalitet som lagrede prosedyrer, triggere og views. Databasen kjører på de fleste operativsystemene som finnes der ute og kan kobles til mange programmeringsspråk som Java, PHP, C++, Perl og etc. InnoDB er en slags driver eller tabellhåndterer som tar for seg måten data lagres i databasen.utf8 er et tegnsett som kan representere alle tegn i standarden Unicode. UTF-8 representerer nummerte samling av tegn med mellom en og fire byte og er konstruert slik at de første 128 tegnene samsvarer med US-ASCII-standarden.. 9

6. Kort innføring av Hibernate Hibernate er et såkalt Objekt/Relasjons Mapping rammeverk som enklere gjør bruken av databaseaksess i et objektorientert miljø. Grunnen til vi valgte dette rammeverket er fordi API hadde tidligere erfaring med det og Hibernate går for å være det beste alternativet for Java og er den mest utbredte rammeverket for java.en utvikler trenger ikke å programmere veldig mye for å aksesserre databasen noe av de største fordelene med Hibernate. Hibernate har også sitt eget query språk, HQL et språk som ligner veldig på SQL, men er spesiallaget for å gjøre spørringer i databaser med persisterte objekter. HQL er blant annet objektorientert, noe som gjør det veldig lett å hente ut ønsket informasjon. 6.1 Databasen Databasen metagen inneholder data som vi har valgt å ta med fra Stortinget og i cache databasen inneholder det kun referanseinfo. Her er Er-diagrammet: Navne på databasen og javabønene vi brukte for aksesssere objektene brukte vi standard navn konvensjon for database vi har nevnt i mer deltaljert i prosessrapporten. 6.1.2 Tabell artikkel artikkel_artikkel_id: Artikkelens id. Bruker for å søke etter bestemt artikkel, eller hente ut referanseinfo om artikkelen lastupdate: Dette feltet beskriver tiden artikkelen ble sist oppdatert 10

6.1.3 Tabell politiker politiker_politiker_id: Poltikerens id. Brukes for unikt identifisere en politiker. fornavn: Poltikerens fornavn etternavn: Politikerens etternavn født: Politikerens bursdag død: For de politikerene som har død initialer: Politikerens initialer parti_parti_id: Identifikatoren til parti for politikeren. 6.1.4 Tabell parti parti_parti_id: Parti id. Unikt id for hvert parti. navn: Parti navn beskrivelse: Beskrivelse av partiet forkortelse: Forkortelse av partiet, mest brukt for søking 6.1.5 Tabell artikkel_has_politiker artikkel_artikkel_id: To femmednøkler blir primærnøkkel kalles composite key politiker_politiker_id: To fremmednøkkel blir primærnøkkel kalles composite key Relasjonen mellom artikkel og politikere var mange-til-mange relasjon. Det samme gjaldt for artikkel og parti. Et artikkel kan inneholdet enten ingen eller mange politikere og det samme gjelder for artikkel og parti. Et artikkel kan inneholdet enten null eller mange partier og vice verca. Dette løses med en toveis-en-til-mange link-tabell mellom entitetene (artikkel_has_politiker),(artikkel_has_parti). Samtidig er det et en-til-mange forhold mellom politiker og et parti fordi en politiker har et felt i politikertabellen som forteller hvilket parti en politiker tilhører. 11

6.2 Objektorienterte miljøet Javabønnene vi bruker for å aksesserre databasen er helt ordinær Java klasse med get og set metoder for alle feltene i databasen tabellen samtidig en default konstruktør. Det som skjedde var at objektene ble tolket av Hibernate mapping som sørget for å lese relasjonen mellom objektet og tabellen i databasen. 12

Her et eksempel med en Java bønnene vi har brukt som mapper opp mot en tabell i databasen: public class Politiker { private Long id; private String fornavn; private String etternavn; private Date fodt; private String parti; private String initialer; private Set<Artikkel> artikkel = new HashSet(); Politiker(){} public Long getid() { return id; } public void setid(long id) { this.id = id; } public String getfornavn() { return fornavn; ////RESTEN AV METODENE ER UTELATT FOR ENKELHETSSKYLD// public void addtoartikkel(artikkel a){ this.getartikkel().add(a); a.getpolitiker().add(this); } public void removefromartikkel(artikkel a){ this.getartikkel().remove(a); a.getpolitiker().remove(this); 13 }

Her er tabellen vi mapper mot Javabønnen legg merke til likheten mellom dem: Her er eksempel på mapping dokumentet som forteller Hibernate om klassen Politiker.java: <hibernate-mapping> <class name="events.politiker" table="politiker"> <id name="id" column="politiker_id"> <generator class="native"/> </id> <property name="fornavn"/> <property name="etternavn"/> <property name="parti"/> <property name="fodt" type="date"/> <property name="initialer" /> <set name="artikkel" table="artikkel_has_politiker"> <key column="politiker_politiker_id"/> <many-to-many column="artikkel_artikkel_id" class="events.artikkel"/> </set> </class> Taggen class forteller hvilken klasse (name) som skal mappes til hvilken tabell (table). I dette eksempelet var klassenavnet Politiker og tabell navnet politiker. 14

Taggen id beskriver hvilken rad i tabellen objektet representer. Vi valgte at databasen bestemte id til objektene ved at det stod generator lik nativ. Taggen property forteller hvilken Java klasse som mappes til hvilken kolonne i database raden. Vi har unnlat å ta med column elementet siden Hibernate oftest klarte selv å tolke hvordan databasen typen skulle tolkes til Java typen. Siden det var mange-til-mange relasjon mellom artikkel og politiker og mellom parti og artikkel valgte vi å programmere mappingen i bidirectional som står for at assosiasjonene var toveis og ikke enveis. Det vil si vi trenge å kunne slå opp artikkel ut ifra en politiker og kunne slå opp politiker ut ifra artikkel. For å sørge for at assosiasjonen ble toveis valgte vi å ta med set name lik artikkel og set name lik politiker. Alle mappingene vi brukte har vi tatt med i konfigurasjonsfilen Hibernate.cfg.xml Her er et eksempel på hvordan vi har gjort det: <mapping resource="events/parti.hbm.xml"/> 15

7. XML XML står for Extensible Markup Language. Kort sakt er XML for å strukturere data eller beskrive data (metadata) i elementer ved å bruke tekstkoding eller markeringskoder. 7.1 XML parsing Det XML- parsere gjør er å analysere XML- teksten og generere trestruktur(setter teksten inn i objekter). XML-parseren kan også sjekke at dokumentet er i henhold til forhåndsdefinert språk.(validering) I vårt system brukes XML-parsingen når MetaGen ikke finner artikkel iden i cache databasen. Når MetaGen sjekker artikkel iden mot cache databasen, og finner ikke iden fra før, henter den xml representasjonen av artikkelen og representasjonen blir parset av Java og putta i Java objekter. Altså xml filen(representasjonen av artikkelen) blir parset til Java objekter. Vi brukte Jakarta Commons Digester for å lage Java objekter av xml. Commons Digester ble laget slik at koden som trengs for å opprette Java objekter av xml fil skulle bli standardisert, slik at det kunne brukes i mange og forskjellige prosjekter som parser xml filer til Java objekter. 16

KODING: Nedenfor ligger det en bit av kode som vi brukte for parsingen. Digester digester = new Digester(); digester.setvalidating( false ); digester.addobjectcreate( "io/article", Article.class ); digester.addobjectcreate( "io/article/field", Field.class ); digester.addsetproperties("io/article/field", "name", "name"); digester.addbeanpropertysetter("io/article/field", "innhold"); digester.addsetnext("io/article/field", "addfield", "parse.field"); digester.addobjectcreate( "io/article/field/p", P.class ); digester.addbeanpropertysetter("io/article/field/p", "inn"); digester.addsetnext("io/article/field/p", "addp", "parse.p"); digester.addobjectcreate( "io/article/field/p/b", B.class ); digester.addbeanpropertysetter("io/article/field/p/b", "inn"); digester.addsetnext("io/article/field/p/b", "addb", "parse.b"); Som det ble nevnt ovenfor er dette standard, det eneste som er annerledes er det som ligger inni i parentesene, det har med navn på attributtene til xml filen å gjøre. Digester koden blir brukt annerledes hvis xml filen er bygd på en annet måte. En liten forklaring av koden: digester.addobjectcreate( "io/article", Article.class ); Denne setningen er for laging av Java objekter. Koden går del for del inn i xml filen. io/article er den øverste delen av xml. Koden finner du i klassen Article. 17

Hierarkiet som vi har på xml filen som er ovenfor er: <io> <article> <filed> 'io' 'io/article' 'io/article/field' <name/> 'io/article/field/name' <innhold/> 'io/article/field/innhold' <p> <b/> 'io/article/field/p' 'io/article/field/p/b' </p> </field> </article> </io> I tillegg til å bruke Digester strukturen for parsing har vi en join metode får å samle inn all teksten av xml fila i et streng, metoden ser slikt: public void joinp(){ for(int i=0; i< ps.size();i++){ if(ps.get!= null){ ps.get.joinb(); innhold+= ps.get.getinn(); } 18

8. Kort beskrivelse av klasser i MetaGen Her har vi en listet over klasser i MetaGen med en kort forklaring. 8.1 Pakage parse I disse klassene Article.java, Field.java, B.java og P.java bruker man Digester for å parse xml felter med samme navn som klassens objekt har. 8.2 Pakage service FetchXML.java er klassen som kjører Digester klassene. RegexSearch Når man parser alle xml filene alt blir satt inn i en streng. Det klassen sørger for er å gå igjennom alle tabellene i databasen og ser om innholdet matcher med strengen. 8.3 Pakage web AdminController.java beskriver brukergrensesnitt for administrator. AdminCommand.java Klassen fanger parameter som sendes via en url adresse. CommandController.java Klassen tar imot en forespørsel om en artikkel, henter artikkelen og sender forespørselen tilbake. ArtikkelCommand.java fanger parameter artikkel id via en url adresse. 8.4 Package events Artikkel.java Det er en Javabønne som beskriver artikkel som kobler til en database.(pojo) Politiker.java Det er en Javabønne som beskriver politikker som kobler til en database.(plan old Java objekt) 19

9. MetaEx MetaEx er lagd for å hente ned informasjon fra nett og generere SQL INSERT setninger på bakgrunn av dette. Programmet bruker pakken HTTPClient for kommunikasjon mot web for å laste ned sider. Kommunikasjonen mot websiden skjer i UTF-8 format, og det er viktig at tekstbehandleren koden skrives i er satt til UTF-8, ellers kan det oppstå feil. For å kunne gjøre søk mot personsøk siden på stortinget er man nødt til å initialisere en slags kontakt først for å få tak i session/cookie og to valideringsvariabler. Etter den første kontakten tar HTTPClient seg av implementeringen av sessions/cookies automatisk bak kulissene. Programmet sender i tillegg med de to valideringsvariablene med hver forespørsel som POST verdier for at stortinget.no skal godkjenne http-requestene ved søk. Sendes det søkekriterium uten disse verdiene vil forespørselen feile. Under testing ble det brukt en intercepting proxy for å lytte til http-kommunikasjonen mellom nettleseren og websiden. Dette ble gjort for at MetaEx skulle kunne etterligne nettleseren best mulig, og det var da enklere å oppdage feil ved testing. For å bruke en proxy for å sjekke forespørslene var nettleseren nødt til å sette tilkoblingen sin til å bruke proxy serveren som var satt opp. I dette tilfellet localhost:8081. Denne endringen ble også gjort i MetaEx under testing for å sammenligne forespørslene. 20

10. Biblioteker i prosjektet Vi har brukt en del biblioteker i systemet vårt. Dette er en oversikt over ulike biblioteker vi har tatt i bruk: Hibernate3.jar ant-1.6.5.jar ant-antlr-1.6.5.jar antlr-2.7.6.jar asm.jar asm-attrs.jar commons-collections-2.1.1.jar commons-logging-1.0.4.jar dom4j-1.6.1.jar jta.jar log4j-1.2.11.jar commons-beanutils-1.8.0-beta.jar commons-digester-1.8.jar mysql-connector-java-5.1.5-bin.jar maven-ant-tasks catalina.jar naming-resources.jar 21

10.1 Biblioteker for systemet MetaEx Her er det en oversikt over de forskjellige jar filene som brukes til MetaEx systemet: codec.jar commons-httpclient-3.1.jar logging.jar logging-adapt.jar logging.api.jar 22