Skip to content
Erdk edited this page Jan 15, 2012 · 9 revisions

WPF API

Czynności, jakie może wykonać użytkownik, aplikacja (w kontekście połączenia z WCF-em):

  • zalogowanie się - przy starcie systemu,
  • wylogowanie - przy zakończeniu pracy z aplikacją,
  • pobranie ilości odbytych głosowań oraz całkowitej liczby głosowań (dla ekranu oczekiwania),
  • pobranie informacji n.t. aktualnego głosowania: tytuł, treść, głosy możliwe do oddania,
  • głosowanie na wybraną opcję,
  • (przewodniczący) pobranie listy wszystkich głosowań wraz z ich statusem (przed, po głosowaniu),
  • (przewodniczący) start głosowania,
  • (przewodniczący) stop głosowania,
  • (przewodniczący) ponowne przeprowadzenie głosowania.

Klasa, która odpowiada za komunikację z WCF-em to WCFConnector znajdująca się w paczce WCFConnector. Oprócz tej klasy w tym pakiecie znajduje się struktura VoteInfo, w której będą przechowywane informacje o głosowaniu i klasa wyjątku BadLoginException, która będzie wykorzystywana przy głosowaniu.

Jak korzystać z WCFConnectora?

Ogólne

  • Tworzenie obiektu:

      WCFConnector wcf = null;
      try{
          wcf = new WCFConnector(this);
      } catch (IOSettingsException e) {
          //TODO: problem z dostępem do pliku z ustawieniami (wejście/wyjście)
      }
    

    UWAGI:

    IOSettingsError jest wyrzucany, gdy podczas tworzenia obiektu serwis odpowiadający za ustawienia wyrzuci wyjątek IOException - czyli kiedy będzie coś nie tak z plikiem z ustawieniami. Acha, ustawienia powinny być już ustawione, ponieważ kiedy zostanie utworziny ten obiekt, a użytkownik zmieni ustawienia, to w WCFConnectorze zostaną stare ustawienia. Po zmianie ustawień każdorazowo trzeba tworzyć obiekt WCFConnectora. Po stworzeniu obiektu można przeprowadzić logowanie do systemu.

Użytkownik

  • Logowanie do systemu:

      try {
          wcf.Login("login", "hasło");
      } catch (ServerConnectionException e) {
          // TODO: nie można połączyć się z serwerem: albo wina netu, albo złe ustawienia
      } catch (BadLoginException e) {
          // TODO: login lub hasło są błędne
      }
    

    UWAGI:

    Jeżeli podczas logowania nie zostanie podniesiony żadne wyjątki, to logowanie możemy uznać za zakończone sukcesem. Sama funkcja logowania nie zwraca żadnych wartości, postanowiłem zamiast tego zrobić parę specjalnych funkcji, które będzie można odpytać o stan logowania i status użytkownika.

  • Czy użytkownik jest zalogowany?

      wcf.isLogged();
    

    Dość samoopisujące się: zwraca boolean-a, 'true' jeśli użytkownik jest zalogowany lub 'false', jeżeli nie jest zalogowany.

  • Czy użytkownik jest administratorem?

      wcf.isAdmin();
    

    Podobnie jak w poprzedni przypadku, zwraca 'true' jeśli użytkownik jest administratorem lub 'false', jeżeli nie.

  • Wylogowanie

      wcf.Logout()
    

    Jedyny skutek, jaki ma ta funkcja, to ustawienie pól 'logged' i 'admin' na 'false'.

Głosowanie

Admin

  • Pobranie listy aktualnych głosowań

      wcf.GetCurrentVotingList()
    

    Zwraca obiekt typu 'int[]', który zawiera id wszystkich głosowań, które mają odbyć się w sesji.

  • Rozpoczęcie głosowania

      wcf.StartVoting(voteId)
    

    Startuje głosowanie z zadanym id.

  • Zakończenie głosowania

      wcf.StopVoting()
    

    Zakańcza aktualne głosowanie - nie przyjmuje parametrów ze względów bezpieczeństwa, po prostu zakańcza aktualne głosowanie.

Użytkownik

  • Pobranie informacji o głosowaniu

      wcf.GetCurrentVotingInfo()
    

    Jest to funkcja, za pomocą której aplikacja ma odpytywać serwer o aktualne głosowanie, w razie powodzenia zwraca obiekt klasy 'VoteInfo' zawierający informacje o głosowaniu. W przeciwnym razie zwracany jest 'null'.

  • Oddanie głosu

      wcf.Vote(ansId)
    

    W obiekcie typy 'VoteInfo' znajduje się obiekt typu 'HashMap' zawierający mapowanie id => opcja głosowania. Kiedy użytkownik wybierze opcję aplikacja ma wywołać tą funkcję z id danego głosu.

Clone this wiki locally