-
Notifications
You must be signed in to change notification settings - Fork 1
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?
-
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.
-
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'.
-
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.
-
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.