1 package twcsckernel.serverKernel.usr; 2 3 import java.io.IOException; 4 5 import twcsckernel.projectbase.io.FileSecurityManager; 6 import twcsckernel.serverKernel.impl.UserImpl; 7 import twcsckernel.serverKernel.io.SharedFsChangeListener; 8 import twcsckernel.serverKernel.utils.UserData; 9 10 /*** 11 * Klasa jest kontenerem zawierającym listę aktualnie zalogowanych użytkowników 12 * oraz służy zarządzaniu listenerami systemu plików (mogą być współdzielone). 13 * Użytkownik przy logowaniu pobiera listener metodą 14 * {@link #getSharedUserListener(UserImpl) getSharedUserListener}, który 15 * przekazuje swoim fabrykom plików. Dodawanie i usuwanie listenerów zdalnych 16 * które klient przekaże następuje właśnie poprzez ten listener. 17 * 18 * @author VMD Group 19 * 20 */ 21 public interface LoggedUsersManager { 22 23 /*** 24 * Metoda logująca danego użytkownika. 25 * 26 * @param user - 27 * logowany użytkownik 28 * @return - <code>FileSecurityManager</code> 29 * @throws LoginException - 30 * wyjątek rzucany jeśli użytkowik próbuje się zalogować 31 * ponownie lub wystąpił błąd podczas tworzenia managera 32 * bezpieczeństwa 33 */ 34 public FileSecurityManager login(UserImpl user) throws LoginException; 35 36 /*** 37 * Metoda wylogowania danego użytkownika. 38 * 39 * @param user - 40 * użytkownik do wylogowania 41 * @return - <code>true</code> jeśli użytkownik był zalogowany i został 42 * wylogowany lub <code>false</code> w przeciwnym wypadku 43 */ 44 public boolean logout(UserImpl user); 45 46 /*** 47 * @return - liczba wszystkich zalogowanych użytkowników 48 */ 49 public int getAllUsersNumber(); 50 51 /*** 52 * @param login - 53 * login użytkownika 54 * @return - liczba zaogowanych użytkowników o podanym loginie 55 */ 56 public int getLoginUsersNumber(String login); 57 58 /*** 59 * @return - zalogowani użytkownicy o podanym loginie 60 */ 61 public UserImpl[] getLoggedUserType(String login); 62 63 /*** 64 * @return - wszyscy zalogowani użytkownicy 65 */ 66 public UserImpl[] getAllLoggedUsers(); 67 68 /*** 69 * Dodanie listenera logowania/wylogowania użytkowników. Parametr 70 * <i>UserImpl owner</i> jest potrzebny identyfikacji listenerów które mają 71 * być automatycznie zwolnione podczas wylogowania ich właściciela. 72 * 73 * @param loginListener - 74 * listener logowania/wylogowania 75 * @param owner - 76 * właściciel listenera 77 */ 78 public void addLoginListener(LoginListener loginListener, UserImpl owner); 79 80 /*** 81 * Metoda pozwala na ręczne wyrejestrowanie listenera logowania 82 * 83 * @param loginListener - 84 * listener logowania/wylogowania 85 * @param owner - 86 * właściciel listenera (optymalizacja) 87 * @return - <code>true</code> jeśli listener był zarejestrowany i udało 88 * się go wyrejestrować lub <code>false</code> w przeciwnym 89 * wypadku 90 */ 91 public boolean removeLoginListener(LoginListener loginListener, 92 UserImpl owner); 93 94 /*** 95 * Metoda służąca do pobierania listenera użytkownika, który będzie 96 * przekazany dalej do fabryki plików. Dla tej samej instancji użytkownika 97 * metoda powinna zwrócić ten sam listener (w przypaku odwołania do tej 98 * metody przez pluginy). 99 * 100 * @param user - 101 * użytkonik dla którego listener ma być przydzielony/przekazany 102 * @return - listener 103 */ 104 public SharedFsChangeListener getSharedUserListener(UserImpl user); 105 106 /*** 107 * Metoda tworzy/pobiera manager bezpieczeństwa dla podanego użytkownika. 108 * 109 * @param userData - 110 * deskryptor użytkownika 111 * @return - manager bezpieczeństwa przydzielony temu użytkownikowi 112 * @throws IOException - 113 * wyjątek rzucany w przypadku błędu utworzenia managera dla 114 * podanego deskryptora 115 */ 116 public FileSecurityManager createSecurityManager(UserData userData) 117 throws IOException; 118 119 }