Externí akce jsou jar knihovny, které slouží, stejně jako již vytovřené vlastní akce, k částečné nebo úplné validaci domény. Externí akce může vytvářet programátor bez větší znalosti validačního serveru. Následující informace jsou tedy určené pro programátory, kteři by chtěli přidat k validátoru další vlastní akce.
Je nutné, aby knihovní třída:
Následující příklad je ukázka jednoduché vlastní akce, která pro zjistí název a velikost odevzdaného souboru.
import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; import cz.zcu.validationserver.ValidationResult; import cz.zcu.validationserver.exceptions.ValidationError; import cz.zcu.validationserver.gui.actions.ParametrAkce; import cz.zcu.validationserver.gui.actions.VlastniAkce; import cz.zcu.validationserver.gui.data.Parametr; import cz.zcu.validationserver.validation.FullValidationResult; import cz.zcu.validationserver.validation.ValidationInfo; /** * Vlastní akce, která je k~aplikaci přidána jako externí * knihovna. Akce získává z~odevzdaného souboru jeho název * a~velikost. S~těmito parametry můžeme pak pracovat v~dalších * krocích validace. * @author Veronika Dudová * */ public class ExterniAkceTest implements VlastniAkce { public static final String PARAM1 = "Název souboru"; public static final String PARAM2 = "Velikost souboru"; /** * Spustí akci (v~průběhu validace domény). */ public void execute(ValidationInfo info, FullValidationResult result, Scriptable scope, Context jsContext, Collectionparametry) { String par1 = "", par2 = ""; File soubor = null; // získání hodnot parametru for(Parametr p:parametry) { if(p.getKey().equals(PARAM1)) par1 = p.getValue(); else if (p.getKey().equals(PARAM2)) par2 = p.getValue(); } if(par1.equals("") || par2.equals("")) { // chyba - není zadána JS proměnná pro počet slov String textChyby = info.getDomain().getLocalizedString("wrong_param", info.getValidationInput().getLocale()); throw new ValidationError(textChyby+" ("+PARAM1+"/"+PARAM2+")", ValidationResult.VR_SERVER_ERROR); } // získání souboru, jeho jména a~velikosti soubor = info.getInputFile(); String name = soubor.getName(); long velikost = soubor.length(); // parametry do výstupu scope.put(par1,scope,name); scope.put(par2,scope,velikost); } public String getNazev() { return "Externí akce - test"; } public List getParametry() { ArrayList list = new ArrayList (); list.add(new ParametrAkce(PARAM1,"Název souboru","Javascriptová proměnná" + + "pro uložení názvu souboru.","")); list.add(new ParametrAkce(PARAM2,"Velikost souboru (JS proměnná)", "JS proměnná typu int - velikost odevzdávaného souboru","")); return list; } public String getPopis() { return "Akce nastavuje prametry pro název a~velikost odevzdaného souboru."; } public String getHelp() { String help = "<h4> Kontextová nápověda: vlastní akce \"Testovací akce s parametry\"</h4>"; help += "<p>Toto je testovací akce pro ukázku použití externích akcí.</p>"; help += "<p>Parametr \"Název souboru\" je javascriptová proměnná sloužící k uložení" + + "názvu odevzdávaného souboru.</p>"; help += "<p>Parametr \"Velikost souboru\" je javascriptová proměnná typu int sloužící" + + "k uložení velikosti odevzdávaného souboru.</p>"; return help; } public String getId() { return "ExterniAkceTest"; } public String getKategorii() { return KAT_SOUBOR; } }