Class SwingValidator<B>
- java.lang.Object
-
- org.nuiton.validator.bean.AbstractValidator<O>
-
- org.nuiton.validator.bean.simple.SimpleBeanValidator<B>
-
- org.nuiton.jaxx.validator.swing.SwingValidator<B>
-
- Type Parameters:
B- le type de bean a valider
public class SwingValidator<B> extends org.nuiton.validator.bean.simple.SimpleBeanValidator<B>La surcharge deSimpleBeanValidatorpour les ui swingPermet d'ajouter facilement le support de la validation des champs d'un bean et de le relier a une interface graphique. Utilise xwork pour la validation et JXLayer pour la visualisation.
Le mieux pour son integration dans Jaxx est de faire de la generation pour force la compilation du code suivant:
myValidor.getBean().get<field>();
et ceci pour chaque field ajoute a la map fieldRepresentation. De cette facon meme si le champs field est en texte on a une verification de son existance a la compilation.
La representation en tag pourrait etre
<validator id="myValidator" beanClass="{Personne.class}" errorList="$list"> <field name="name" component="$name"/> <field name="firstName" component="$firstName"/> <field name="birthDate" component="$birthDate"/> </validator> <validator beanClass="{Personne.class}" autoField="true" errorList="$list"> <fieldRepresentation name="name" component="$lastName"/> </validator>dans le premier exemple on fait un mapping explicite des champs, mais on voit que le nom du composant graphique est le meme que celui du champs. Pour eviter de longue saisie, il est possible d'utiliser le flag autoField qui pour chaque champs du ayant une methode get du bean recherche un composant avec cet Id. Il est aussi possible de surcharge un champs explicitement comme ici name, dans le cas ou le composant qui porterait ce nom serait utilise pour autre chose.
Il faut un handler particulier pour ce composant car les attributs beanClass et autoField ne sont present que dans le XML jaxx et servent a la generation. Il faut aussi prendre en compte les elements fieldRepresentation fils du tag validator.
Voici ce que pourrait etre le code genere par jaxx
// declaration du bean BeanValidator<beanClass> $myValidator; // init du bean protected void createMyValidator() { $myValidator = new BeanValidator<beanClass>(); // genere seulement si autoField = true for (Method m : beanClass.getMethod()) { if (m.getName().startsWith("get")) { String fieldName = m.getName().substring(3).toLowerCase(); $myValidator.setFieldRepresentation(fieldName, $objectMap.get(fieldName)); } } // pour chaque tag fieldRepresentation myValidator.setFieldRepresentation("name", $lastName); // si beanClass est specifie et n'est pas Object, on force l'acces au champs // pour validation a la compilation $myValidator.getBean().getName(); $objectMap.put("myValidator", $myValidator); }- Version:
- 1.0
- Author:
- Tony Chemit - dev@tchemit.fr
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.nuiton.validator.bean.simple.SimpleBeanValidator
org.nuiton.validator.bean.simple.SimpleBeanValidator.NuitonValidatorContext<O extends Object>
-
-
Field Summary
Fields Modifier and Type Field Description protected SwingValidatorMessageListModelerrorListModelObject servant a contenir la liste des erreursprotected SwingValidatorMessageTableModelerrorTableModelObject servant a contenir la liste des erreursprotected Map<String,JComponent>fieldRepresentationpermet de faire le lien en un champs du bean et l'objet qui permet de l'editerprotected Class<? extends AbstractBeanValidatorUI>uiClassui renderer class
-
Constructor Summary
Constructors Constructor Description SwingValidator(Class<B> beanClass, String contextName)SwingValidator(Class<B> beanClass, String contextName, org.nuiton.validator.NuitonValidatorScope... filterScopes)SwingValidator(org.nuiton.validator.NuitonValidatorProvider provider, Class<B> beanClass, String contextName, org.nuiton.validator.NuitonValidatorScope... filterScopes)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description SwingValidatorMessageListModelgetErrorListModel()SwingValidatorMessageTableModelgetErrorTableModel()JComponentgetFieldRepresentation(String fieldname)SwingValidator<?>getParentValidator()Class<? extends AbstractBeanValidatorUI>getUiClass()voidinstallUIs()install ui on required componentsstatic <O> SwingValidator<O>newValidator(Class<O> type, String context, org.nuiton.validator.NuitonValidatorScope... scopes)Obtain a newSimpleBeanValidatorfor the given parameters.static <O> SwingValidator<O>newValidator(String providerName, Class<O> type, String context, org.nuiton.validator.NuitonValidatorScope... scopes)Obtain a newSimpleBeanValidatorfor the given parameters.voidreloadBean()To reload a bean in the validator.voidsetContext(String context)voidsetErrorListModel(SwingValidatorMessageListModel errorListModel)voidsetErrorTableModel(SwingValidatorMessageTableModel errorTableModel)voidsetFieldRepresentation(String fieldName, JComponent c)Permet d'indiquer le composant graphique responsable de l'affichage d'un attribut du beanvoidsetFieldRepresentation(Map<String,JComponent> fieldRepresentation)protected voidsetMessageRepresentation(String fieldname, JComponent old, JComponent c, Class<? extends AbstractBeanValidatorUI> uiClass)Deprecated.protected voidsetMessageRepresentation(JComponent c, Collection<String> fieldnames, Class<? extends AbstractBeanValidatorUI> uiClass)voidsetParentValidator(SwingValidator<?> parentValidator)voidsetUiClass(Class<? extends AbstractBeanValidatorUI> uiClass)-
Methods inherited from class org.nuiton.validator.bean.simple.SimpleBeanValidator
addSimpleBeanValidatorListener, doValidate, doValidate, fireFieldChanged, getBean, getDelegate, getHighestScope, getSimpleBeanValidatorListeners, hasErrors, hasFatalErrors, hasInfos, hasWarnings, isValid, mergeMessages, rebuildDelegateValidator, removeSimpleBeanValidatorListener, setBean, setParentValidator, validate
-
Methods inherited from class org.nuiton.validator.bean.AbstractValidator
addPropertyChangeListener, addPropertyChangeListener, containsField, firePropertyChange, getContext, getEffectiveFields, getEffectiveFields, getEffectiveScopes, getModel, getScopes, getType, isCanValidate, isChanged, isValid, removePropertyChangeListener, removePropertyChangeListener, setCanValidate, setChanged, setScopes, setValid
-
-
-
-
Field Detail
-
fieldRepresentation
protected final Map<String,JComponent> fieldRepresentation
permet de faire le lien en un champs du bean et l'objet qui permet de l'editer
-
errorListModel
protected SwingValidatorMessageListModel errorListModel
Object servant a contenir la liste des erreurs
-
errorTableModel
protected SwingValidatorMessageTableModel errorTableModel
Object servant a contenir la liste des erreurs
-
uiClass
protected Class<? extends AbstractBeanValidatorUI> uiClass
ui renderer class
-
-
Constructor Detail
-
SwingValidator
public SwingValidator(org.nuiton.validator.NuitonValidatorProvider provider, Class<B> beanClass, String contextName, org.nuiton.validator.NuitonValidatorScope... filterScopes)
-
SwingValidator
public SwingValidator(Class<B> beanClass, String contextName, org.nuiton.validator.NuitonValidatorScope... filterScopes)
-
-
Method Detail
-
newValidator
public static <O> SwingValidator<O> newValidator(Class<O> type, String context, org.nuiton.validator.NuitonValidatorScope... scopes) throws NullPointerException
Obtain a newSimpleBeanValidatorfor the given parameters. Note: It will use the default provider ofNuitonValidator- Type Parameters:
O- type of bean to validate- Parameters:
type- type of bean to validatecontext- context of validationscopes- authorized scopes (ifnull, will use all scopes)- Returns:
- the new instanciated
SimpleBeanValidator. - Throws:
NullPointerException- if type isnull- See Also:
NuitonValidatorFactory.getDefaultProviderName()
-
newValidator
public static <O> SwingValidator<O> newValidator(String providerName, Class<O> type, String context, org.nuiton.validator.NuitonValidatorScope... scopes) throws NullPointerException
Obtain a newSimpleBeanValidatorfor the given parameters. Note: It will use the provider ofNuitonValidatordefined by theproviderName.- Type Parameters:
O- type of bean to validate- Parameters:
providerName- name ofNuitonValidatorto usetype- type of bean to validatecontext- context of validationscopes- authorized scopes (ifnull, will use all scopes)- Returns:
- the new instanciated
SimpleBeanValidator. - Throws:
NullPointerException- if type isnull- See Also:
NuitonValidatorFactory.getProvider(String)
-
reloadBean
public void reloadBean()
To reload a bean in the validator.This method is used to reload ui, since some editors could not exist when validator is init, so some messages should not be attached to an editor.
-
getFieldRepresentation
public JComponent getFieldRepresentation(String fieldname)
-
getUiClass
public Class<? extends AbstractBeanValidatorUI> getUiClass()
-
setErrorListModel
public void setErrorListModel(SwingValidatorMessageListModel errorListModel)
-
setErrorTableModel
public void setErrorTableModel(SwingValidatorMessageTableModel errorTableModel)
-
setUiClass
public void setUiClass(Class<? extends AbstractBeanValidatorUI> uiClass)
-
setContext
public void setContext(String context)
- Overrides:
setContextin classorg.nuiton.validator.bean.AbstractValidator<B>
-
setFieldRepresentation
public void setFieldRepresentation(String fieldName, JComponent c)
Permet d'indiquer le composant graphique responsable de l'affichage d'un attribut du bean- Parameters:
fieldName- the field name in the beanc- the editor component for the field
-
setFieldRepresentation
public void setFieldRepresentation(Map<String,JComponent> fieldRepresentation)
-
getParentValidator
public SwingValidator<?> getParentValidator()
- Overrides:
getParentValidatorin classorg.nuiton.validator.bean.simple.SimpleBeanValidator<B>
-
setParentValidator
public void setParentValidator(SwingValidator<?> parentValidator)
-
installUIs
public void installUIs()
install ui on required components
-
setMessageRepresentation
protected void setMessageRepresentation(JComponent c, Collection<String> fieldnames, Class<? extends AbstractBeanValidatorUI> uiClass) throws InvocationTargetException, IllegalAccessException, InstantiationException, NoSuchMethodException
-
setMessageRepresentation
@Deprecated protected void setMessageRepresentation(String fieldname, JComponent old, JComponent c, Class<? extends AbstractBeanValidatorUI> uiClass) throws InvocationTargetException, IllegalAccessException, InstantiationException, NoSuchMethodException
Deprecated.
-
getErrorListModel
public SwingValidatorMessageListModel getErrorListModel()
-
getErrorTableModel
public SwingValidatorMessageTableModel getErrorTableModel()
-
-