\section{K�ytt�liittym�moduuli (PL)}
\label{k�li}

\subsection{Rajapintojen kuvaus}
\label{k�li_raja}

 K�ytt�liittym� k�ytt�� suodattimen tarjoamia palveluita muodostaessaan tulossivua ja
 HiBrowse selaamiseen.
 Suodattimelle k�ytt�liittym� antaa pyynt�jen yhteydess� tiedeon kulloisenkin k�ytt�j�n HiBrowsen tilasta
 ja edellisist� kuvavalinnoista.

\subsection{K�ytt�liittym�kuvaus}
\label{k�li_k�yt}

 K�ytt�liittym� jakautuu kahteen osaan. Vasen osa pit�� sis�ll��n HiBrowse-komponentin ja
 oikea osa kuvasivun.
 HiBrowse-komponentilla k�ytt�j� voi etsi� haluamiaan kuvia museon kokoelmasta.
 K�ytt�liittym�ss� tarjotaan k�ytt�j�lle muutama j�rjestelm�n valitsema kuva, jotta k�ytt�j�� ei pakoteta
 k�ytt�m��n HiBrowse-komponenttia.
 Jokaiseen kuvasivuun liittyy mielenkiintoisia linkej�, jota seuraamalla k�ytt�j� voi tutustua helposti
 ja vaivattomasti museon kokoelmiin.

\subsection{Luokkakuvaus}
\label{k�li_luok}

\begin{figure}
\begin{center}
\includegraphics[width=0.7\textwidth]{KaliLuokkakaavio.eps}
\caption{UML-kaavio K�ytt�liittym�- ja profiilimodulista.}
\label{k�li1}
\end{center}
\end{figure}

\textbf{HiBrowseJSP}
 T�m� JSP toteuttaa HiBrowse-komponentin. Komponentin puurakenne luodaan k�ytt�en HTML-taulukoita ja kuvia.
 Puurakenteen alustamiseen k�ytet��n suodattimen getFacetRoots-metodia.
 Kun k�ytt�j� selailee HiBrowse-komponenttia, JSP kutsuu itse��n ja URL-koodaa muuttuneen fasetin tilan.
 Koodaus tapa: "HiBrowse.jsp?path=<fasetinPolku>\&action=<toiminta>"
 fasetinPolku muotoa "juuri.luokka.aliluokka"
 action parametrej� show, close, open, select, removeFacet, addFacet
 Kun JSP alkaa t�m�nj�lkeen kokoamaan n�kym��, ensin se p�ivitt�� Profile-olioon oikean HiBrowsen tilan.
 T�m�nj�lkeen kutsutaan suodattimen getFacetChildren-metodia ja getFacetIntersectImages-metodia
 Profile-parametrilla, jokaista fasettia kohden. Viimeinen aste on vain rakentaa palautusarvoja vastaavat n�kym�t ruudulle.
 Mik�li k�ytt�j� valitsee yksitt�isen kuvan, kutsutaan oikean kehykseen ResultJSP:t�, jolle v�litet��n URL-parametrina valitun kuvan ID.
 T�ss� tapauksessa HiBrowse-komponenttia ei p�ivitet�.


\textbf{WelcomeJSP}

 T�m� luokka generoi oikeean kehykseen aloitussivun, joka sis�lt��
 pient� ohjeistusta HiBrowsen k�ytt��n ja muutaman k�ytt�ji� yleisesti
 kiinnostaneen kuvan. N�m� kuvat saadaan suodattimelta Filter-luokan metodilla getDefaultImages.

\textbf{ResultJSP}

 T�m� luokka generoi varsinaisen tulossivun oikeaan kehykseen. Tulossivu
 tarvitsee URL-koodattuna parametrina n�ytett�v�n kuvan ID:n.
 JSP pyyt�� saamaansa ID:t� vastaavat tiedot suodattimelta getImage- ja getInterestingLinks-metodeilla.

\section{Profiili (PL)}
\label{prof}

\subsection{Luokkakuvaus}
\label{prof_luok}
\textbf{Profile}

 Profilessa on tallessa t�m�nhetkinen HiBrowse-komponentin tila ja lista kuvista, joita k�ytt�j� on
 t�m�n istunnon aikana katsellut. Profiilit ovat varastoituna javax.servlet.http.HttpSession-olioon
 nimell� profile.

\textbf{FacetSelection}
 T�ss� luokassa on tiedot yhden fasetin valitusta solmusta ja juuresta.
 Molemmat tiedot tallennetaan String-olioina.

\subsection{Liittym�suunnitelma}
\label{prof_liit}

\textbf{Profile-luokan suodattimelle tarjoamat metodit}

\textbf{public FacetSelection[] getStateOfHiBrowse();}

  Palautettava taulukko sis�lt�� tiedon niiden fasettien tilasta, jotka eiv�t ole alkutilassa.
  Kukin taulukon elementti sis�lt�� aktiivisen Node-olion.

\textbf{public Vector getPreviousSelections();}

  Palautettava Vector-olio sis�lt�� t�m�n k�ytt�j�n katsomien kuvien ID:t.

\textbf{Profile-luokan k�ytt�liittym�modulille tarjoamat metodit}

 \textbf{public void setStateOfHiBrowse(FacetSelection);}
  Asettaa nykyisen HiBrowsen tilan Profile-olioon.
  Jos t�m�n fasetintila on jo varastoituna Profile-olioon, muutetaan sen tila vastaamaan
  uutta tilaa. Jos t�m�n fasetin tilaa ei l�ydy, lis�t��n se Profile-olioon.

 \textbf{public void addSelection(String);}
  Lis�� valitun kuva historiatietoihin.

 \textbf{FacetSelection-luokan accessorit}

 \textbf{public void setActiveNode(String newActive, String parent);}\newline
 \textbf{public String getActiveNode();}\newline
 \textbf{public void setFacetRoot(String);}\newline
 \textbf{public String getFacetRoot();}\newline

