1 package org.kuali.common.util.bind.impl;
2
3 import java.util.Map;
4 import java.util.Properties;
5
6 import org.kuali.common.util.PropertyUtils;
7 import org.kuali.common.util.bind.api.Binder;
8 import org.kuali.common.util.spring.binder.BytesFormatAnnotationFormatterFactory;
9 import org.kuali.common.util.spring.binder.TimeFormatAnnotationFormatterFactory;
10 import org.springframework.beans.MutablePropertyValues;
11 import org.springframework.format.support.DefaultFormattingConversionService;
12 import org.springframework.validation.BindingResult;
13 import org.springframework.validation.DataBinder;
14
15 import com.google.common.collect.Maps;
16
17 public class DefaultBinder implements Binder {
18
19 @Override
20 public <T> BindingResult bind(T object) {
21 Properties properties = PropertyUtils.getGlobalProperties();
22 Map<String, String> map = Maps.newHashMap();
23 for (String key : properties.stringPropertyNames()) {
24 map.put(key, properties.getProperty(key));
25 }
26 DataBinder binder = new DataBinder(object);
27 MutablePropertyValues pvs = new MutablePropertyValues(map);
28 DefaultFormattingConversionService service = new DefaultFormattingConversionService();
29 service.addFormatterForFieldAnnotation(new BytesFormatAnnotationFormatterFactory());
30 service.addFormatterForFieldAnnotation(new TimeFormatAnnotationFormatterFactory());
31 binder.setConversionService(service);
32 binder.bind(pvs);
33 return binder.getBindingResult();
34 }
35
36 }