mirror of
				https://github.com/klmp200/PQT_Gestionnaire_vente_stock.git
				synced 2025-10-31 17:13:10 +00:00 
			
		
		
		
	Module Server : ajout javadoc clss AccountService, ajout émthd getAccountList() aux clss AccountService et Dao associées
This commit is contained in:
		| @@ -3,8 +3,17 @@ package com.pqt.server.module.account; | ||||
| import com.pqt.core.entities.user_account.Account; | ||||
| import com.pqt.core.entities.user_account.AccountLevel; | ||||
|  | ||||
| //TODO écrire Javadoc | ||||
| import java.util.List; | ||||
|  | ||||
| //TODO ajouter logs | ||||
| /** | ||||
|  * Cette classe correspond au service de gestion des comptes utilisateurs. Il permet la vérification de l'existance | ||||
|  * d'un compte, de son état (connecté/déconnecté), de changer son état ainsi que de récupérer son niveau d'accréditation. | ||||
|  * | ||||
|  * @author Guillaume "Cess" Prost | ||||
|  * @see AccountLevel | ||||
|  * @see Account | ||||
|  */ | ||||
| public class AccountService { | ||||
|  | ||||
| 	private IAccountDao dao; | ||||
| @@ -13,19 +22,99 @@ public class AccountService { | ||||
| 		dao = new FileAccountDao(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Vérifie si un compte utilisateur donné est actuellement connecté. Le compte utilisateur doit être existant | ||||
|      * pour être connecté. | ||||
|      * <p/> | ||||
|      * Les informations contenues dans l'objet {@code account} passé en paramètre ne sont pas directements utilisées, | ||||
|      * elles servent juste à déterminer le compte utilisateur réel correspondant. <b>Il est nécessaire de s'assurer | ||||
|      * que les données passées en paramètres soient justes avant de faire appel à cette méthode.</b> | ||||
|      * <p/> | ||||
|      * Pour cette méthode, seul le nom d'utilisateur est pris en compte pour établir une correspondance. | ||||
|      * <p/> | ||||
|      * Dans le cas où aucune correspondance ne peut être faite entre les informations fournies et les données | ||||
|      * enregistrées, la valeur {@code false} sera renvoyée. | ||||
|      * | ||||
|      * @param account Objet {@link Account} dont les informations seront utilisées pour déterminer le compte concerné. | ||||
|      * | ||||
|      * @return {@code true} si une correspondance a pû être établie et que le compte correspondant est connecté, | ||||
|      *      {@code false} sinon. | ||||
|      */ | ||||
|     public boolean isAccountConnected(Account account) { | ||||
| 		return dao.isAccountConnected(account); | ||||
| 	} | ||||
|  | ||||
| 	public boolean submitAccountCredentials(Account acc, boolean desiredState) { | ||||
| 		return dao.submitAccountCredentials(acc, desiredState); | ||||
|     /** | ||||
|      * Soumet une demande de changement d'état pour un compte utilisateur. Les états possibles sont "connecté" ({@code true}) | ||||
|      * et "déconnecté" ({@code false}). | ||||
|      * <p/> | ||||
|      * Les informations contenues dans l'objet {@code account} passé en paramètre ne sont pas directements utilisées, | ||||
|      * elles servent juste à déterminer le compte utilisateur réel correspondant. <b>Il est nécessaire de s'assurer | ||||
|      * que les données passées en paramètres soient justes avant de faire appel à cette méthode.</b> | ||||
|      * <p/> | ||||
|      * Pour cette méthode, seul le nom d'utilisateur est pris en compte pour établir une correspondance. Le mot de passe | ||||
|      * est uniquement requis pour une connexion, et pas pour une déconnexion. | ||||
|      * <p/> | ||||
|      * Une fois la correspondance effectuée, une tentative de changement d'état sera faite pour le compte correspondant. | ||||
|      * Cette tentative peut échouer si : | ||||
|      * <ul> | ||||
|      *     <li>Le compte est déjà dans l'état désiré</li> | ||||
|      *     <li>Le mot de passe ne correspond pas (uniquement pour une connexion)</li> | ||||
|      * </ul> | ||||
|      * Dans le cas d'un échec, l'état du compte reste inchangé et la valeur booléenne {@code false} est renvoyée, | ||||
|      * sans plus de détails. Si le changement d'état a eu lieu, la valeur booléenne {@code true} est renvoyée. | ||||
|      * | ||||
|      * @param account Objet {@link Account} dont les informations seront utilisées pour déterminer le compte concerné. | ||||
|      * @param desiredState L'état dans lequel le compte doit se trouver une fois le changement fait. | ||||
|      * @return {@code true} si le changement d'état a eu lieu, {@code false} sinon. | ||||
|      */ | ||||
| 	public boolean submitAccountCredentials(Account account, boolean desiredState) { | ||||
| 		return dao.submitAccountCredentials(account, desiredState); | ||||
| 	} | ||||
|  | ||||
|     /** | ||||
|      * Vérifie si un compte utilisateur donné existe dans la base de donnée du serveur. | ||||
|      * <p/> | ||||
|      * Les informations contenues dans l'objet {@code account} passé en paramètre ne sont pas directements utilisées, | ||||
|      * elles servent juste à déterminer le compte utilisateur réel correspondant. <b>Il est nécessaire de s'assurer | ||||
|      * que les données passées en paramètres soient justes avant de faire appel à cette méthode.</b> | ||||
|      * <p/> | ||||
|      * Pour cette méthode, seul le nom d'utilisateur est pris en compte pour établir une correspondance. | ||||
|      * | ||||
|      * @param account Objet {@link Account} dont les informations seront utilisées pour déterminer le compte concerné. | ||||
|      * @return {@code true} si une correspondance a pû être établie entre les données fournies et un compte dans la base | ||||
|      *      de données, {@code false} sinon. | ||||
|      */ | ||||
| 	public boolean isAccountRegistered(Account account){ | ||||
| 		return dao.isAccountRegistered(account); | ||||
| 	} | ||||
|  | ||||
|     /** | ||||
|      * Récupère le niveau de permission du compte utilisateur correspondant aux informations fournies en paramètre. | ||||
|      * <p/> | ||||
|      * Les informations contenues dans l'objet {@code account} passé en paramètre ne sont pas directements utilisées, | ||||
|      * elles servent juste à déterminer le compte utilisateur réel correspondant. <b>Il est nécessaire de s'assurer | ||||
|      * que les données passées en paramètres soient justes avant de faire appel à cette méthode.</b> | ||||
|      * <p/> | ||||
|      * Pour cette méthode, seul le nom d'utilisateur est pris en compte pour établir une correspondance. | ||||
|      * | ||||
|      * @param account Objet {@link Account} dont les informations seront utilisées pour déterminer le compte concerné. | ||||
|      * @return Le niveau de permission {@link AccountLevel} du compte correspondant aux informations si une correspondance | ||||
|      * a pû être établie entre {@code account} et un compte utilisateur de la base de donnée, et {@code null} si aucune | ||||
|      * correspondance n'a pû être faite. | ||||
|      */ | ||||
| 	public AccountLevel getAccountPermissionLevel(Account account){ | ||||
| 		return dao.getAccountPermissionLevel(account); | ||||
| 	} | ||||
|  | ||||
|     /** | ||||
|      * Renvoie la liste des comptes utilisateurs contenus dans la base de données sous forme d'une liste d'objets | ||||
|      * {@link Account}. <b>Seuls les noms d'utilisateurs ainsi que les niveaux de permissions sont récupérés, les | ||||
|      * autres champs étant volontairement initialisés avec une valeur {@code null}.</b> | ||||
|      * @return Une liste d'objet {@link Account} représsentant les différents comptes utilisateurs existant dans la base | ||||
|      * de données. | ||||
|      */ | ||||
|     public List<Account> getAccountList(){ | ||||
| 	    return dao.getAccountList(); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -8,6 +8,7 @@ import com.pqt.server.tools.security.IHashTool; | ||||
| import com.pqt.server.tools.security.MD5HashTool; | ||||
|  | ||||
| import java.util.*; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| //TODO écrire Javadoc | ||||
| //TODO ajouter logs | ||||
| @@ -20,7 +21,7 @@ public class FileAccountDao implements IAccountDao { | ||||
|     private IHashTool hashTool; | ||||
|     private ISerialFileManager<AccountEntry> fileManager; | ||||
|  | ||||
|     public FileAccountDao() { | ||||
|     FileAccountDao() { | ||||
|         accountEntries = new HashSet<>(); | ||||
|         connectedAccount = new HashSet<>(); | ||||
|         hashTool = new MD5HashTool(); | ||||
| @@ -89,6 +90,11 @@ public class FileAccountDao implements IAccountDao { | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public List<Account> getAccountList() { | ||||
|         return accountEntries.stream().map(accountEntry -> new Account(accountEntry.getUsername(), null, accountEntry.getLevel())).collect(Collectors.toList()); | ||||
|     } | ||||
|  | ||||
|     private void saveToFile(){ | ||||
|         fileManager.saveSetToFile(accountEntries); | ||||
|     } | ||||
|   | ||||
| @@ -3,6 +3,8 @@ package com.pqt.server.module.account; | ||||
| import com.pqt.core.entities.user_account.Account; | ||||
| import com.pqt.core.entities.user_account.AccountLevel; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| //TODO écrire Javadoc | ||||
| public interface IAccountDao { | ||||
|  | ||||
| @@ -13,4 +15,6 @@ public interface IAccountDao { | ||||
| 	boolean isAccountRegistered(Account account); | ||||
|  | ||||
|     AccountLevel getAccountPermissionLevel(Account account); | ||||
|  | ||||
| 	List<Account> getAccountList(); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user