Modification du système de ProtocolReader.java
This commit is contained in:
parent
c7af99a876
commit
c1fe6a0a96
@ -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);
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user