1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.student.common.validator.old;
17
18 import java.beans.BeanInfo;
19 import java.beans.IntrospectionException;
20 import java.beans.Introspector;
21 import java.beans.PropertyDescriptor;
22 import java.util.HashMap;
23 import java.util.Map;
24
25 public class BeanConstraintDataProvider implements ConstraintDataProvider {
26
27 Map<String, Object> dataMap = null;
28
29
30
31
32
33 protected BeanConstraintDataProvider() {
34
35 }
36
37 public String getPath(){
38 return "";
39 }
40 @Override
41 public void initialize(Object o) {
42
43 dataMap = new HashMap<String, Object>();
44
45 Map<String, PropertyDescriptor> beanInfo = getBeanInfo(o.getClass());
46
47 for (String propName : beanInfo.keySet()) {
48 PropertyDescriptor pd = beanInfo.get(propName);
49 Object value = null;
50 try {
51 value = pd.getReadMethod().invoke(o);
52 } catch (Exception e) {
53
54 }
55
56 dataMap.put(propName, value);
57 }
58 }
59
60 @Override
61 public String getObjectId() {
62 return (dataMap.containsKey("id") && null != dataMap.get("id")) ? dataMap.get("id").toString() : null;
63 }
64
65 @Override
66 public Object getValue(String fieldKey) {
67 return dataMap.get(fieldKey);
68 }
69
70 @Override
71 public Boolean hasField(String fieldKey) {
72 return dataMap.containsKey(fieldKey);
73 }
74
75 private Map<String, PropertyDescriptor> getBeanInfo(Class<?> clazz) {
76 Map<String, PropertyDescriptor> properties = new HashMap<String, PropertyDescriptor>();
77 BeanInfo beanInfo = null;
78 try {
79 beanInfo = Introspector.getBeanInfo(clazz);
80 } catch (IntrospectionException e) {
81 throw new RuntimeException(e);
82 }
83 PropertyDescriptor[] propertyDescriptors = beanInfo
84 .getPropertyDescriptors();
85 for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
86 properties.put(propertyDescriptor.getName(), propertyDescriptor);
87 }
88 return properties;
89 }
90 }