From 60fb6a069cfca0155ac307c3bdb19aec18474624 Mon Sep 17 00:00:00 2001 From: Notmoo Date: Tue, 1 Aug 2017 18:33:57 +0200 Subject: [PATCH] =?UTF-8?q?Module=20Server=20:=20ajout=20javadoc=20clss=20?= =?UTF-8?q?AccountService,=20ajout=20=C3=A9mthd=20getAccountList()=20aux?= =?UTF-8?q?=20clss=20AccountService=20et=20Dao=20associ=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/module/account/AccountService.java | 95 ++++++++++++++++++- .../server/module/account/FileAccountDao.java | 8 +- .../server/module/account/IAccountDao.java | 4 + 3 files changed, 103 insertions(+), 4 deletions(-) diff --git a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/AccountService.java b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/AccountService.java index 4e2e53d0..68a5a0ff 100644 --- a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/AccountService.java +++ b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/AccountService.java @@ -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é. + *

+ * 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. 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. + *

+ * Pour cette méthode, seul le nom d'utilisateur est pris en compte pour établir une correspondance. + *

+ * 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}). + *

+ * 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. 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. + *

+ * 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. + *

+ * Une fois la correspondance effectuée, une tentative de changement d'état sera faite pour le compte correspondant. + * Cette tentative peut échouer si : + *

+ * 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. + *

+ * 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. 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. + *

+ * 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. + *

+ * 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. 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. + *

+ * 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}. 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}. + * @return Une liste d'objet {@link Account} représsentant les différents comptes utilisateurs existant dans la base + * de données. + */ + public List getAccountList(){ + return dao.getAccountList(); + } } diff --git a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/FileAccountDao.java b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/FileAccountDao.java index f4dd0bbc..f0c96a68 100644 --- a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/FileAccountDao.java +++ b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/FileAccountDao.java @@ -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 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 getAccountList() { + return accountEntries.stream().map(accountEntry -> new Account(accountEntry.getUsername(), null, accountEntry.getLevel())).collect(Collectors.toList()); + } + private void saveToFile(){ fileManager.saveSetToFile(accountEntries); } diff --git a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/IAccountDao.java b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/IAccountDao.java index bce955e2..3c9302a7 100644 --- a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/IAccountDao.java +++ b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/account/IAccountDao.java @@ -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 getAccountList(); }