View Javadoc

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 }