La classe ActionValidator vérifiera qu'au moins un des paramètres de chaîne a une valeur, mais pas les deux.
Vous allez aussi rendre le paramètre Value nécessaire, et coder la classe ActionValidator pour marquer le paramètre avec un astérisque.
- Dans la vue Explorateur de package, ouvrez la classe ActionValidator en accédant à com.ibm.carma.plugin.howto > src > com.ibm.carma.plugin.howto.action et cliquez deux fois sur la classe pour l'ouvrir dans l'éditeur.
- Vous allez commencer par redéfinir la méthode isParameterRequired.
Pour cet exemple, vous allez coder pour que seul le paramètre Value soit requis. Le pseudocode suivant le démontre :
if paramID = paramID du paramètre value
retourner true
else
retourner false
Utilisez l'exemple de code source suivant pour redéfinir la méthode isParameterRequired :
/( Marque le paramètre value comme requis.*/
public boolean isParameterRequired(Action action, Parameter param)
{
//La valeur de parameterID est 000
if(param.getParameterID().equals("000"))
{
return true;
}
return false;
}
- Ensuite, vous allez redéfinir la méthode validateAction pour autoriser une seule valeur dans le paramètre de chaînes d'entrée, mais pas dans les deux.
Le pseudocode suivant le démontre :
Rassembler tous les objets Parameter associés à cette action
Parcourir les objets Parameter et obtenir les objets Parameter string1 et string2
Récupérer la valeur de chaîne de string1, vérifier si elle est nulle ou a une longueur de 0
Récupérer la valeur de chaîne de string2, vérifier si elle est nulle ou a une longueur de 0
Déterminer si les deux paramètres ont des valeurs
Retourner un message d'erreur
Déterminer si aucun des paramètres n'a de valeur
Retourner un message d'information
Utilisez l'exemple de code suivant pour redéfinir cette méthode :
public ValidationResult validateAction(ActionValidationEvent event)
{
Parameter string1Param = null;
Parameter string2Param = null;
ValidationResult result = new ValidationResult();
//Itération et récupération des objets parameter
for (Object o : event.action.getParameters())
{
if (((Parameter) o).getParameterId().equals("001"))
{
string1Param = (Parameter) o;
}
else if (((Parameter) o).getParameterId().equals("002"))
{
string2Param = (Parameter) o;
}
)
//Récupérer la valeur de paramètre de string1 et déterminer s'il y a eu une entrée
String string1Val = (String) event.parameterValueMap.get(string1Param);
boolean string1IsThere = !(string1Val == null || string1Val.length() == 0);
//Récupérer la valeur de paramètre de string2 et déterminer s'il y a eu une entrée
String string2Val = (String) event.parameterValueMap.get(string2Param);
boolean string2IsThere = !(string2Val == null || string2Val.length() == 0);
//Déterminer si string1 et string2 sont fournies toutes les deux.
//Retourne un message d'erreur.
if (string1IsThere && string2IsThere)
{
result.severity = ValidationResult.ERROR;
result.message = "Provide either String1 or String2.";
}
//Déterminer si string1 et string2 ne sont pas fournies
//Retourne un message d'information
else if(!string1IsThere && !string2IsThere)
{
result.severity = ValidationResult.INFO;
result.message = "Enter a value for String1 or String2.";
}
return result;
}
- Enregistrez la source et déboguez les éventuelles erreurs.