From a1b3463d3b1e9f5af107aa1862198a5c4afa35d7 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Sat, 5 Mar 2022 12:12:12 +0100 Subject: [PATCH] =?UTF-8?q?Modification=20syst=C3=A8me=20de=20ProtocolRead?= =?UTF-8?q?er.java=20qui=20permet=20de=20lire/ecrire=20un=20fichier=20sur?= =?UTF-8?q?=20le=20r=C3=A9seau.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../protocol/ProtocolReader.java | 73 +++++++++++++++++++ .../protocol/rules/reader/HelloRule.java | 4 + .../protocol/rules/reader/SigninRule.java | 2 +- 3 files changed, 78 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/lightcontainer/protocol/ProtocolReader.java b/app/src/main/java/lightcontainer/protocol/ProtocolReader.java index b1102bf..55cadf5 100644 --- a/app/src/main/java/lightcontainer/protocol/ProtocolReader.java +++ b/app/src/main/java/lightcontainer/protocol/ProtocolReader.java @@ -1,5 +1,7 @@ package lightcontainer.protocol; +import java.io.BufferedReader; +import java.io.BufferedWriter; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -17,12 +19,41 @@ public abstract class ProtocolReader { STOREBACKEND } + public enum FileOptions { + + /** + * Ne lire/ecrire aucun fichier + */ + NONE, + + /** + * Lire un fichier : Implementer la méthode 'read' + */ + READ, + + /** + * Ecrire un fichier : Implementer la méthode 'write' + */ + WRITE + } + + /** + * Modèle utilisé par tout les résultats des règles de protocol. + * Lorsqu'il retourne son résultat, on vérifie si il y a une demande de lecture/écriture de fichier depuis le réseau. Si oui on appel ces méthodes, sinon on ne fait rien. + * Ensuite on regarde après l'exécution de ces méthode ou non si il y a une commande de retour ou non et l'envoyons au receiver spécifié par la commande. + */ public abstract class ProtocolResult { + /** + * Permet de déterminer si la class souhaite lire ou écrire un fichier. + */ + private final FileOptions option; + /** * Command qui sera renvoyée par exemple au client */ private String resultCommand; + /** * Désigne vers ou cette commande est envoyée. * ResultCmdReceiver.CLIENT : Signifie que cette commande va être directement revoyée au client. @@ -31,18 +62,60 @@ public abstract class ProtocolReader { private ResultCmdReceiver receiver; + /** + * Spécifier une option correct afin de permettre au système de détecter ce qu'il doit exécuter. + * @param option Option + */ + public ProtocolResult(FileOptions option) { + this.option = option; + } + + public ResultCmdReceiver getReceiver() { return receiver; } + + /** + * Récupérer la commande à envoyer + * @return + */ public String getResultCommand() { return resultCommand; } + /** + * Mettre la commande à envoyer + * @param resultCommand Commande à envoyer + * @param receiver Le receveur de cette commande + */ public void setResultCommand(String resultCommand, ResultCmdReceiver receiver) { this.resultCommand = resultCommand; this.receiver = receiver; } + + /** + * Permet de récupérer l'option associée au protocol. + * @return L'option associée + */ + public FileOptions getOption() { + return option; + } + + /** + * Permet de lire un fichier. Cad reçevoir le contenu d'un fichier provenant du réseau. + * Redéfinissez cette méthode pour l'utiliser + * @param reader Buffer rempli du fichier + */ + public void read(BufferedReader reader) {} + + + /** + * Permet d'écrire un fichier. Cad reçevoir le contenu d'un fichier provenant du réseau + * @param writer Buffer à remplir, et qui sera envoyer au destinataire + */ + public void write(BufferedWriter writer) {} + } /** diff --git a/app/src/main/java/lightcontainer/protocol/rules/reader/HelloRule.java b/app/src/main/java/lightcontainer/protocol/rules/reader/HelloRule.java index e3a0dc2..1b46e7a 100644 --- a/app/src/main/java/lightcontainer/protocol/rules/reader/HelloRule.java +++ b/app/src/main/java/lightcontainer/protocol/rules/reader/HelloRule.java @@ -2,6 +2,7 @@ package lightcontainer.protocol.rules.reader; import lightcontainer.protocol.ProtocolReader; +import java.io.BufferedReader; import java.util.ArrayList; import java.util.List; @@ -26,6 +27,7 @@ public class HelloRule extends ProtocolReader { private final int port; public Result(String domain, int port) { + super(FileOptions.NONE); this.domain = domain; this.port = port; } @@ -37,6 +39,8 @@ public class HelloRule extends ProtocolReader { public int getPort() { return port; } + + } diff --git a/app/src/main/java/lightcontainer/protocol/rules/reader/SigninRule.java b/app/src/main/java/lightcontainer/protocol/rules/reader/SigninRule.java index bbfc660..dd097c6 100644 --- a/app/src/main/java/lightcontainer/protocol/rules/reader/SigninRule.java +++ b/app/src/main/java/lightcontainer/protocol/rules/reader/SigninRule.java @@ -24,7 +24,7 @@ public class SigninRule extends ProtocolReader { private final String password; public Result(String login, String password) { - + super(FileOptions.NONE); this.login = login; this.password = password; }