\subsubsection{Luokka ResourceIterator}
\label{metaOnRi}
\texttt{ResourceIterator} toteuttaa javan \texttt{Iterator}-rajapinnan ja perii sen metodit ja kentät. Ainoastaan yliajetut metodit toimivat, muut aiheuttavat \\ OperationNotSupportedException-poikkeuksen. Luokka on tarkoitettu \texttt{OntologyResource}-tyyppisten olioiden iteroimiseen. Eli oliot käydään
yksi kerrallaan läpi. Iteraattorissa ei enää tehdä suodatusta, sillä tässä vaiheessa mukana ovat enää halutun kaltaiset \texttt{OntologyResource}-oliot.

\subsection*{Kentät}

\subsubsection*{private OntologyResource next}
Muuttuja joka osoittaa seuraavaan ontologiaresurssiin tässä iteraattorissa.

\subsubsection*{private ResourceIterator tail}
Muuttuja joka osoittaa seuraavaan iteraattoriin, josta jatkaa kun tämän iteraattorin kaikki alkiot on käyty läpi. Toteuttaa iteraattoreiden ketjutuksen.

\subsubsection*{private ResourceProvider resourceProvider}
Muuttuja johon on tallennettu Jenasta \texttt{ResourceCollection}-olioita hakeva \texttt{ResourceProvider}-olioita.

\subsubsection*{private boolean closed}
Muuttuja, joka kertoo onko iteraattori sujettu. Alkuarvoksi on asetettu false.

\subsection*{Konstruktorit}

\subsubsection*{protected ResourceIterator()}
Konstruktori, joka luo uuden tyhjän \texttt{ResourceIterator}-olion.

\subsubsection*{protected ResourceIterator(ResourceProvider resourceProvider)}
Konstruktori, joka luo uuden tyhjän \texttt{ResourceIterator}-olion, ja asettaa sen resourceProvider-kentän arvoksi parametrina annettu \texttt{ResourceProvider}-olio.

\subsection*{Metodit}

\subsubsection*{public void addIterator(ResourceIterator resourceIterator)}
Ketjuttaa tämän iteraattorin jälkeen annetun \texttt{ResourceIterator}-olion.

\subsubsection*{public boolean hasNext()}
Palautaa toden arvon jos iteraattorin next-kenttä osoittaa \texttt{OntologyResource}-olioon. Jos ei, metodi yrittää hakea \texttt{OntologyResource}-oliota eteenpäin iteraattoriketjussa. Mikäli iteraattoriketju loppuu (kenttä tail = null) ennen kun ontologiaresurssi löydetään, palautetaan false. Toteuttaa java \texttt{Iterator}-luokan rajapintaa.

\subsubsection*{public Object next()}
Palauttaa sen olion johon iteraattorin next-kenttä osoittaa. Jos seuraavaa oliota ei löydy, metodi sulkee iteraattorin. Käyttää hasNext-metodia. Toteuttaa java \texttt{Iterator}-luokan rajapintaa.

\subsubsection*{protected abstract Object getNext() throws Exception}
Palauttaa seuraavan olion iteraattorista. Jätetty alaluokkien toteutettavaksi.

\subsubsection*{protected abstract boolean hasNextHead() throws Exception}
Palauttaa toden arvon jos iteraattorilla on seuraavaa oliota. Jätetty alaluokkien toteutettavaksi.

\subsubsection*{protected abstract void closeHead() throws Exception}
Sulkee tämän iteraattorin ja vapauttaa sen varaamat resurssit. Erityisen tärkeä tietokantoja käsitellessä (tulevaisuuden asioita..). Jätetty alaluokkien toteutettavaksi.

\subsubsection*{public void close()}
Kutsuu seuraavaa close-metodia false-arvoisella parametrilla.

\subsubsection*{private void close(boolean onlyThis)}
Sulkee tämän iteraattorin. Jos annettun parametrin arvo on false, suljetaan koko iteraattoriketju rekursiivisesti.

\subsubsection*{protected void finalize()}
Kutsuu tämän luokan close()-metodia.

\subsubsection*{public void remove() throws UnsupportedOperationException, IllegalStateException}
Javan \texttt{Iterator}-rajapinnan remove()-metodia ei ole toteutettu.
