Modification du système de ProtocolReader.java

This commit is contained in:
Benjamin Lejeune 2022-02-26 13:37:38 +01:00
parent c7af99a876
commit c1fe6a0a96
2 changed files with 30 additions and 11 deletions

View File

@ -1,24 +1,40 @@
package lightcontainer.protocol;
public interface ProtocolReader {
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public abstract class ProtocolReader {
/**
* Permet de récupérer le nom de la commande (ex. FILELIST, SENDRESULT)
*/
String getCmd();
private final Pattern rulePattern;
protected ProtocolReader(String pattern) {
this.rulePattern = Pattern.compile(pattern);
}
/**
* Permet de lancer la décomposition d'une commande pour en extraire les données
* @param data Contenu de la commande
*/
void execute(String data);
public boolean execute(String data) {
Matcher ruleMatcher = this.rulePattern.matcher(data);
if (ruleMatcher.matches()) {
String[] groups = new String[ruleMatcher.groupCount()];
for (int i= 0; i < groups.length; ++i)
groups[i] = ruleMatcher.group(i);
onExecuted(groups);
return true;
}
return false;
}
/**
* Permet de demander au protocol s'il capable de décomposer/gérer cette commande
* @param data Commande ("GETFILE" bl filename line)
* @return TRUE si ce protocol peut gérer
* Cette méthode est appelée lors de l'exécution de la règle
* @param data
*/
boolean match(String data);
protected abstract void onExecuted(String... data);
}

View File

@ -11,8 +11,11 @@ public class HelloRule extends ProtocolReader {
@Override
protected void onExecuted(String[] data) {
protected void onExecuted(String... data) {
String domain = data[0];
String port = data[1];
System.out.printf("Règle Hello avec domain=%s et port=%s", domain, port);
}
}