pusu.data
Class PusuDatabase

java.lang.Object
  extended by pusu.data.PusuDatabase

public class PusuDatabase
extends java.lang.Object

PusuDatabase huolehtii ohjelman tietojen tallentamisesta tietokantaan ja niiden sieltä noutamisesta.


Nested Class Summary
static class PusuDatabase.FeedStatus
          Määrittelee käytettävät syötteiden tilakoodit.
static class PusuDatabase.ServerSetting
          Määrittelee käytettävät palvelinasetukset.
 
Constructor Summary
PusuDatabase(java.lang.String username, java.lang.String password, java.lang.String dbName)
          Luo uuden tietokantayhteyden paikallisella koneella oletusportissa sijaitsevaan Postgres-tietokantaan.
PusuDatabase(java.lang.String username, java.lang.String password, java.lang.String dbName, java.lang.String serverAddr)
          Luo uuden tietokantayhteyden määritellyllä koneella oletusportissa sijaitsevaan Postgres-tietokantaan Tämän konstruktorin kutsu vastaa kutsua PusuDatabase(username, password, dbName, serverAddr, 5432)
PusuDatabase(java.lang.String username, java.lang.String password, java.lang.String dbName, java.lang.String serverAddr, int port)
          Luo uuden tietokantayhteyden määritellyllä koneella määritellyssä portissa sijaitsevaan Postgres-tietokantaan.
 
Method Summary
 void addItems(java.lang.String feedName, java.util.List<Item> items)
          Lisää syötteeseen uusia artikkeleita.
 Client deleteClient(Client client)
          Poistaa kaikki asiakasohjelman tiedot ja tilaukset.
 java.util.Collection<java.lang.String> getFeedList()
          Palauttaa kokoelman kaikista palvelimen tarjoamista syötteistä (ts.
 int getFeedUpdateInterval(java.lang.String feedName)
          Palauttaa syötteen minimipäivitysvälin.
 java.net.URL getFeedUrl(java.lang.String feedName)
          Palauttaa syötteen osoitteen.
 java.util.Collection<Item> getLatestItems(java.lang.String feedName, int count)
          Palauttaa syötteestä halutun määrän uusimpia artikkeleita.
 java.lang.String getServerSetting(PusuDatabase.ServerSetting setting)
          Palauttaa halutun palvelinasetuksen.
 java.util.Collection<Subscription> getUnsentItems()
          Kerää tietokannasta kaikki artikkelit, jotka asiakasohjelmille saadaan lähettää ja luo niistä kokoelman.
 java.util.Collection<Subscription> getUnsentItemsForClient(Client client)
          Kerää tietokannasta kaikki artikkelit, jotka saadaan lähettää halutulle asiakasohjelmalle, riippumatta siitä, koska asiakasohjelmalle on viimeksi lähetetty artikkeleita.
 java.util.Collection<java.lang.String> getWholeFeedList()
          Palauttaa kokoelman kaikista järjestelmän syötteistä.
 void updateFeedStatus(java.lang.String feedName, PusuDatabase.FeedStatus status)
          Päivittää syötteen tilatiedot.
 void updateSubscriptions(Client client, java.util.Collection<SubscriptionInfo> subscriptions)
          Lisää tai päivittää asiakasohjelman ja sen tilausten tiedot.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PusuDatabase

public PusuDatabase(java.lang.String username,
                    java.lang.String password,
                    java.lang.String dbName)
             throws java.net.ConnectException
Luo uuden tietokantayhteyden paikallisella koneella oletusportissa sijaitsevaan Postgres-tietokantaan. Tämän konstruktorin kutsu vastaa kutsua PusuDatabase(username, password, dbName, "localhost")

Parameters:
username - Tietokannan käyttäjänimi.
password - Tietokannan salasana.
dbName - Käytettävän tietokannan nimi.
Throws:
java.net.ConnectException - Jos tietokantaan ei saada yhteyttä.

PusuDatabase

public PusuDatabase(java.lang.String username,
                    java.lang.String password,
                    java.lang.String dbName,
                    java.lang.String serverAddr)
             throws java.net.ConnectException
Luo uuden tietokantayhteyden määritellyllä koneella oletusportissa sijaitsevaan Postgres-tietokantaan Tämän konstruktorin kutsu vastaa kutsua PusuDatabase(username, password, dbName, serverAddr, 5432)

Parameters:
username - Tietokannan käyttäjänimi.
password - Tietokannan salasana.
dbName - Käytettävän tietokannan nimi.
serverAddr - Tietokantapalvelimen osoite.
Throws:
java.net.ConnectException - Jos tietokantaan ei saada yhteyttä.

PusuDatabase

public PusuDatabase(java.lang.String username,
                    java.lang.String password,
                    java.lang.String dbName,
                    java.lang.String serverAddr,
                    int port)
             throws java.net.ConnectException,
                    java.lang.IllegalArgumentException
Luo uuden tietokantayhteyden määritellyllä koneella määritellyssä portissa sijaitsevaan Postgres-tietokantaan.

Parameters:
username - Tietokannan käyttäjänimi.
password - Tietokannan salasana.
dbName - Käytettävän tietokannan nimi.
serverAddr - Tietokantapalvelimen osoite.
port - Tietokantapalvelimen portti.
Throws:
java.net.ConnectException - Jos tietokantaan ei saada yhteyttä.
IllegalArgumentExecption - Jos porttinumero ei ole kelvollinen (ts. väliltä 0..65535)
java.lang.IllegalArgumentException
Method Detail

deleteClient

public Client deleteClient(Client client)
Poistaa kaikki asiakasohjelman tiedot ja tilaukset.

Parameters:
client - Poistettavan asiakasohjelman tiedot.
Returns:
Palauttaa joko asiakkuuden, joka poistettiin kannasta (jos löytyi asiakkuus annetuilla tiedoilla) tai parametrina annetun asiakkuuden (jos annetuilla tiedoilla ei löytynyt asiakkuutta). Huomaa, että tapaukset eroavat toisistaan ainoastaan asiakkuuden outbound cseq -arvon osalta: jos poistettiin olemassaoleva asiakkuus, tarvitaan tieto seuraavasta cseq-numerosta viimeistä NOTIFYÄ varten.

updateSubscriptions

public void updateSubscriptions(Client client,
                                java.util.Collection<SubscriptionInfo> subscriptions)
                         throws FeedNotFoundException,
                                NoSuchClientException
Lisää tai päivittää asiakasohjelman ja sen tilausten tiedot.

Parameters:
client - Asiakasohjelma, jonka tiedot lisätään tai päivitetään.
subscriptions - Asiakasohjelman tilausten tiedot.
Throws:
FeedNotFoundException - Jos jotakin tilattavista syötteistä ei ole olemassa.
NoSuchClientException - Jos annetulla asiakasohjelmalla on server tag, mutta muut tiedot eivät vastaa mitään asiakkuutta

getFeedList

public java.util.Collection<java.lang.String> getFeedList()
Palauttaa kokoelman kaikista palvelimen tarjoamista syötteistä (ts. niistä, joiden tila on "ok").

Returns:
Palauttaa kokoelman kaikista palvelimen tarjoamista syötteistä.

getWholeFeedList

public java.util.Collection<java.lang.String> getWholeFeedList()
Palauttaa kokoelman kaikista järjestelmän syötteistä.

Returns:
Palauttaa kokoelman kaikista järjestelmän syötteistä.

getFeedUrl

public java.net.URL getFeedUrl(java.lang.String feedName)
                        throws FeedNotFoundException
Palauttaa syötteen osoitteen.

Parameters:
feedName - Syötteen nimi.
Returns:
Syötteen osoite.
Throws:
FeedNotFoundException - Jos annetun nimistä syötettä ei ole (enää) olemassa.

getFeedUpdateInterval

public int getFeedUpdateInterval(java.lang.String feedName)
                          throws FeedNotFoundException
Palauttaa syötteen minimipäivitysvälin.

Parameters:
feedName - Syötteen nimi.
Returns:
Palauttaa syötteen minimipäivitysvälin.
Throws:
FeedNotFoundException - Jos annetun nimistä syötettä ei ole (enää) olemassa.

updateFeedStatus

public void updateFeedStatus(java.lang.String feedName,
                             PusuDatabase.FeedStatus status)
                      throws FeedNotFoundException
Päivittää syötteen tilatiedot.

Parameters:
feedName - Päivitettävä syöte.
status - Syötteen tila.
Throws:
FeedNotFoundException - Jos annetun nimistä syötettä ei ole (enää) olemassa.

addItems

public void addItems(java.lang.String feedName,
                     java.util.List<Item> items)
              throws FeedNotFoundException
Lisää syötteeseen uusia artikkeleita.

Parameters:
feedName - Syötteen nimi.
items - Lista uusista artikkeleista.
Throws:
FeedNotFoundException - Jos annetun nimistä syötettä ei ole (enää) olemassa.

getServerSetting

public java.lang.String getServerSetting(PusuDatabase.ServerSetting setting)
Palauttaa halutun palvelinasetuksen.

Parameters:
setting - Haluttu palvelinasetus.
Returns:
Palauttaa halutun palvelinasetuksen.

getLatestItems

public java.util.Collection<Item> getLatestItems(java.lang.String feedName,
                                                 int count)
                                          throws FeedNotFoundException
Palauttaa syötteestä halutun määrän uusimpia artikkeleita.

Parameters:
feedName - Syöteen nimi.
count - Montako artikkelia haetaan.
Returns:
Palauttaa kokoelman syötteen uusimmista artikkeleista.
Throws:
FeedNotFoundException - Jos annetun nimistä syötettä ei ole (enää) olemassa.

getUnsentItems

public java.util.Collection<Subscription> getUnsentItems()
Kerää tietokannasta kaikki artikkelit, jotka asiakasohjelmille saadaan lähettää ja luo niistä kokoelman. Metodi päivittää myös asiakasohjelmien tilausten aikaleiman ja viimeksi lähetetyn artikkelin tunnisteen sekä poistaa tiedot asiakasohjelmista, joiden asiakkuus on päättynyt.

Returns:
Palauttaa kokoelman Subscription-olioita, jotka sisältävät tiedon asiakasohjelmista sekä niille lähetettävistä artikkeleista.

getUnsentItemsForClient

public java.util.Collection<Subscription> getUnsentItemsForClient(Client client)
Kerää tietokannasta kaikki artikkelit, jotka saadaan lähettää halutulle asiakasohjelmalle, riippumatta siitä, koska asiakasohjelmalle on viimeksi lähetetty artikkeleita.

Parameters:
client - Asiakasohjelma, jolle artikkeleita lähetetään.
Returns:
Palauttaa kokoelman Subscription-olioita, jotka sisältävät tiedon asiakasohjelmasta ja sille lähetettävistä artikkeleista.