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;
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);
if (ruleMatcher.matches()) {
/**
* Permet de récupérer le nom du protocol
* @return
*/
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;
}
}