Class NodeTjener

java.lang.Object
  extended byNodeTjener

public class NodeTjener
extends java.lang.Object

Denne klassen utfører tjener funksjoenene i simuleringen. Klassen holder en liste over indekstermer og navn/key/lok for filene som inneholder indekstermene. Klassen tar imot indekser som genereres av klientene, og når den aktiveres så setter den igang en metode som opplyser alle noder i en viss omkrets om hvor nær denne tjener er. System

Version:
25 feb
Author:
Morten Tvenning

Constructor Summary
NodeTjener(NodeKlient client)
          Enkel konstruktor som tar imot en klient som kobles til denne tjeneren.
 
Method Summary
 void addToOtherServersList(NodeTjener server)
          Legger en tjener til denne serverens nodeliste
 void aktiverTjener()
          Metode som aktiverer tjenerfunksjonen i en node Denne metoden styrer hvor mange hopp ut pingen skal gå!
 void distribuerIndeksTilAndreTjenere(java.util.ArrayList indexInsert)
          Denne metoden distribuerer indexInserts etter den har lagt den til i sin egen liste.
 boolean erAktiv()
          Returnerer om tjenernoden er aktivert
 NodeKlient getKlient()
          Klienten som er knyttet til denne tjeneren
 int indeksTermiIndeksBase(java.lang.String indexTerm)
          Denne metoden sjekker om en Streng allerede finnes som første instans i en liste i indexBasen
 int insertSpaceForNewIndexTerm(java.lang.String indexTerm)
          Metode som finner ut hvor i en allerede alfabetisk liste en ny insert skal settes.
 void leggTilFraTjenerNode(java.util.ArrayList innarray)
          Metode for å legge til en ArrayList til indexBase hvor elementene i arraylisten har form (String)indexInsert, (String)lok1, lok2, lok3... etc.
 boolean leggtilIndeksBaseFraArrayList(java.util.ArrayList inIndex)
          Denne metoden tar inne en ArrayList som er designet for å legge til indekstermer i listen.
 boolean leggTilIndeksBaseFraArrayListForDistribuering(java.util.ArrayList inIndex)
          Denne metoden tar inne en ArrayList som er designet for å legge til indekstermer i listen.
 void leggTilIndeksTerm(java.lang.String indexTerm, java.lang.String lok)
          Denne metoden skal legge til indexTermer og fil/lok/key disse skal bindes opp til.
 void printThisList()
          Printer ut navn på noden og indekslisten til denne tjenernoden.
 boolean sendIndeksBaseListTilAndreTjenere()
          Metode for å sende hele indexen til alle de andre tjenerne denne nodeTjeneren vet om.
 java.util.ArrayList sokEtterOrd(java.lang.String sokeord)
          Metode for å søke igjennom indexbasen til tjeneren, om denne tjeneren ikke returnerer nok søketreff opp til en hvis treshhold så sender den søket videre til andre tjenere i sin serverbase.
 java.util.ArrayList sokFraServerEtterOrd(java.lang.String sokeord)
          Metode som gjør det mulig å søke i andre tjenere uten å søke rekursivt videre.
 void tjenerPinger()
          Setter tjeneren til å pinge ut 5 hakk
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NodeTjener

public NodeTjener(NodeKlient client)
Enkel konstruktor som tar imot en klient som kobles til denne tjeneren. Starter opp indekslisten, en liste over andre servere og ett OIobjekt.

Method Detail

addToOtherServersList

public void addToOtherServersList(NodeTjener server)
Legger en tjener til denne serverens nodeliste


sendIndeksBaseListTilAndreTjenere

public boolean sendIndeksBaseListTilAndreTjenere()
Metode for å sende hele indexen til alle de andre tjenerne denne nodeTjeneren vet om.

Returns:
True hvor operasjonen gjennomføres, False om den failer, pga at denne noden ikke vet om noen andre nodeTjener.

distribuerIndeksTilAndreTjenere

public void distribuerIndeksTilAndreTjenere(java.util.ArrayList indexInsert)
Denne metoden distribuerer indexInserts etter den har lagt den til i sin egen liste. Denne metoden styrer også hvor mange noder inserten skal sendes videre til.

Parameters:
indexInsert - indeksinsert i form av en ArrayList

leggTilFraTjenerNode

public void leggTilFraTjenerNode(java.util.ArrayList innarray)
Metode for å legge til en ArrayList til indexBase hvor elementene i arraylisten har form (String)indexInsert, (String)lok1, lok2, lok3... etc.

Parameters:
innarray - ArrayList som inneholder en indeksinnsert og fillokaliseringer.

aktiverTjener

public void aktiverTjener()
Metode som aktiverer tjenerfunksjonen i en node Denne metoden styrer hvor mange hopp ut pingen skal gå! (Bredden på multikallet)


tjenerPinger

public void tjenerPinger()
Setter tjeneren til å pinge ut 5 hakk


getKlient

public NodeKlient getKlient()
Klienten som er knyttet til denne tjeneren

Returns:
nodeClient

leggtilIndeksBaseFraArrayList

public boolean leggtilIndeksBaseFraArrayList(java.util.ArrayList inIndex)
Denne metoden tar inne en ArrayList som er designet for å legge til indekstermer i listen.

Parameters:
inIndex - ArrayList hvor første element er lok/fil/key og resten av elementene i listen er IndexTermer
Returns:
true om indeksinserten går an å gjøre. false hvis ikke.

leggTilIndeksBaseFraArrayListForDistribuering

public boolean leggTilIndeksBaseFraArrayListForDistribuering(java.util.ArrayList inIndex)
Denne metoden tar inne en ArrayList som er designet for å legge til indekstermer i listen. denne metoden kalles bare for å distribuere fra andre tjenere.

Parameters:
inIndex - ArrayList hvor første element er lok/fil/key og resten av elementene i listen er IndexTermer
Returns:
true om indeksinserten går an å gjøre. false hvis ikke.

leggTilIndeksTerm

public void leggTilIndeksTerm(java.lang.String indexTerm,
                              java.lang.String lok)
Denne metoden skal legge til indexTermer og fil/lok/key disse skal bindes opp til. Finnes allerede termen skal bare fil/lok/key legges til. Og fikser om det kommer flere av samme. Ved å la være å legge til.

Parameters:
indexTerm - Termen som skal legges til.
lok - hvilken fil/key den skal bindes opp til.

indeksTermiIndeksBase

public int indeksTermiIndeksBase(java.lang.String indexTerm)
Denne metoden sjekker om en Streng allerede finnes som første instans i en liste i indexBasen

Parameters:
indexTerm - String for indexTermen som skal settes inn
Returns:
isInList posisjon i listen eller -1 hvis den ikke finnes i listen.

insertSpaceForNewIndexTerm

public int insertSpaceForNewIndexTerm(java.lang.String indexTerm)
Metode som finner ut hvor i en allerede alfabetisk liste en ny insert skal settes.

Parameters:
indexTerm - String index som skal inn i listen
Returns:
int Posisjonen som skal fylles av den nye inserten.

erAktiv

public boolean erAktiv()
Returnerer om tjenernoden er aktivert

Returns:
boolean true om server er aktivert.

printThisList

public void printThisList()
Printer ut navn på noden og indekslisten til denne tjenernoden.


sokEtterOrd

public java.util.ArrayList sokEtterOrd(java.lang.String sokeord)
Metode for å søke igjennom indexbasen til tjeneren, om denne tjeneren ikke returnerer nok søketreff opp til en hvis treshhold så sender den søket videre til andre tjenere i sin serverbase.

Parameters:
sokeord - søkeordet som tjeneren skal finne.
Returns:
Arrayliste med søkeresultatene som inneholder Strenger av typen filnavn/lok/key, søket er negativt vil den returnere en liste med en String "intetsøkeresultat"

sokFraServerEtterOrd

public java.util.ArrayList sokFraServerEtterOrd(java.lang.String sokeord)
Metode som gjør det mulig å søke i andre tjenere uten å søke rekursivt videre. Gjør nesten det samme som sokEtterOrd, men sender ikke søket videre om det ikke er nok treff.

Parameters:
sokeord - String med ordet du vil søke etter.
Returns:
liste med lokalisasjoner/key/navn ArrayList med strenger.