ProtocolWriter : modèle pour règles protocoles d'écriture terminé

This commit is contained in:
Maximilien LEDOUX 2022-02-26 15:00:37 +01:00
parent 8201d3db91
commit 0ae4880679

View File

@ -1,23 +1,45 @@
package lightcontainer.protocol; package lightcontainer.protocol;
import java.util.StringJoiner;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public abstract class ProtocolWriter { public abstract class ProtocolWriter {
private final Pattern rulePattern; private final Pattern rulePattern;
private final String cmdName;
protected ProtocolWriter(String pattern) {
protected ProtocolWriter(String cmdName, String pattern) {
this.rulePattern = Pattern.compile(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
if (ruleMatcher.matches()) { */
public String getCmdName() {
return cmdName;
} }
return null; /**
* 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);
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;
} }
} }