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; } }