From 0ae48806796a253197f8ed2bf1e2176f13a12305 Mon Sep 17 00:00:00 2001 From: Maximilien LEDOUX Date: Sat, 26 Feb 2022 15:00:37 +0100 Subject: [PATCH] =?UTF-8?q?ProtocolWriter=20:=20mod=C3=A8le=20pour=20r?= =?UTF-8?q?=C3=A8gles=20protocoles=20d'=C3=A9criture=20termin=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../protocol/ProtocolWriter.java | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/lightcontainer/protocol/ProtocolWriter.java b/app/src/main/java/lightcontainer/protocol/ProtocolWriter.java index c05e428..051794a 100644 --- a/app/src/main/java/lightcontainer/protocol/ProtocolWriter.java +++ b/app/src/main/java/lightcontainer/protocol/ProtocolWriter.java @@ -1,23 +1,45 @@ package lightcontainer.protocol; +import java.util.StringJoiner; import java.util.regex.Matcher; import java.util.regex.Pattern; public abstract class ProtocolWriter { private final Pattern rulePattern; + private final String cmdName; - protected ProtocolWriter(String pattern) { + + protected ProtocolWriter(String cmdName, String pattern) { this.rulePattern = Pattern.compile(pattern); + this.cmdName = cmdName; } - public String execute(String data) { - Matcher ruleMatcher = this.rulePattern.matcher(data); + /** + * Permet de récupérer le nom du protocol + * @return + */ + public String getCmdName() { + return cmdName; + } - if (ruleMatcher.matches()) { + /** + * Permet de contruire une commande selon une règle établie. + * @param datas Les données à ajouter dans la commande; L'ordre défini leur position dans la commande + * @return La commande construite + */ + public String execute(String... datas) { + // Concatatène le nom de la commande avec les données (trim), avec un espace entre chaque + String command = null; + StringJoiner builder = new StringJoiner(" ", this.cmdName, ""); - } + for (String data : datas) + builder.add(data); - return null; + command = builder.toString(); + + // Vérifie que tout match (cf. Matcher). Si match alors on retourne la commande build, sinon on retourne NULL + Matcher ruleMatcher = this.rulePattern.matcher(command); + return ruleMatcher.matches() ? command : null; } }