zktest/src/main/java/org/zkoss/zktest/bind/databinding/validator/ValidationMessagesVM.java

Summary

Maintainability
A
3 hrs
Test Coverage
package org.zkoss.zktest.bind.databinding.validator;

import org.zkoss.bind.ValidationContext;
import org.zkoss.bind.Validator;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.bind.validator.AbstractValidator;

public class ValidationMessagesVM {

    String value1 = "ABC";
    Integer value2 = 10;
    public String getValue1() {
        return value1;
    }
    public void setValue1(String value1) {
        this.value1 = value1;
    }
    public Integer getValue2() {
        return value2;
    }
    public void setValue2(Integer value2) {
        this.value2 = value2;
    }
    
    public Validator getValidator1(){
        return new AbstractValidator() {
            public void validate(ValidationContext ctx) {
                String val = (String)ctx.getProperty().getValue();
                if(!"abc".equalsIgnoreCase(val)){
                    addInvalidMessage(ctx, "value must equals ignore case 'abc', but is "+val);
                }
            }
        };
    }
    
    public Validator getValidator2(){
        return new AbstractValidator() {
            public void validate(ValidationContext ctx) {
                Integer val = (Integer)ctx.getProperty().getValue();
                if(val==null || val<10 || val>100){
                    addInvalidMessage(ctx, "value must not < 10 or > 100, but is "+val);
                }
            }
        };
    }
    
    public Validator getValidator3(){
        return new AbstractValidator() {
            public void validate(ValidationContext ctx) {
                String val1 = (String)((ValidationMessagesVM)ctx.getProperty().getValue()).getValue1();
                
                if(!"AbC".equals(val1)){
                    addInvalidMessages(ctx, new String[]{"value must equals 'AbC', but is "+val1,"extra validation info "+val1});
                }
            }
        };
    }
    
    
    @Command
    public void cmd1(){
        
    }
    
    @Command
    public void cmd2(){
        
    }
    
    @Command @NotifyChange({"value1"})
    public void cmd3(){
        
    }
    
}