1 package org.kuali.student.r2.common.validator;
2
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5
6 import java.util.ArrayList;
7 import java.util.HashMap;
8 import java.util.List;
9 import java.util.Map;
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public class ValidatorFactory {
25 private static final Logger LOG = LoggerFactory.getLogger(ValidatorFactory.class);
26 private volatile Map<String,Validator> customValidators = null;
27 private DefaultValidatorImpl defaultValidator = new DefaultValidatorImpl();
28
29 private List<Validator> validatorList = new ArrayList<Validator>();
30
31 public ValidatorFactory(){
32 defaultValidator.setValidatorFactory(this);
33 }
34
35
36
37
38
39 public Map<String,Validator> getCustomValidators(){
40 Map<String,Validator> result = customValidators;
41 if(result == null) {
42 synchronized (this) {
43 result = customValidators;
44 if(result == null){
45 result = new HashMap<String, Validator>();
46 for(Validator validator: validatorList){
47 String validatorName = validator.getClass().getName();
48 result.put(validatorName, validator);
49 }
50 customValidators = result;
51 }
52 }
53 }
54 return result;
55 }
56
57
58 public Validator getValidator(String customValidator) {
59
60 LOG.info("Retrieving validatior: {}", customValidator);
61
62 Validator v = getCustomValidators().get(customValidator);
63
64 if(v != null && v instanceof BaseAbstractValidator) {
65 BaseAbstractValidator bv = (BaseAbstractValidator)v;
66 bv.setValidatorFactory(this);
67 return bv;
68 } else {
69 return v;
70 }
71 }
72
73 public Validator getValidator(){
74 return defaultValidator;
75 }
76
77 public DefaultValidatorImpl getDefaultValidator() {
78 return defaultValidator;
79 }
80
81 public void setDefaultValidator(DefaultValidatorImpl defaultValidator) {
82 this.defaultValidator = defaultValidator;
83 this.defaultValidator.setValidatorFactory(this);
84 }
85
86 public void setValidatorList(List<Validator> validatorList) {
87 this.validatorList = validatorList;
88 }
89 }