1 /*****************************************************************************
5 * Creation date 05.10.2012
8 *****************************************************************************/
10 package org.splat.util;
14 import org.splat.log.AppLogger;
16 import net.sf.beanlib.PropertyInfo;
17 import net.sf.beanlib.spi.BeanTransformerSpi;
18 import net.sf.beanlib.spi.CustomBeanTransformerSpi;
21 * DTO transformer used by BeanHelper.
23 * @author <a href="mailto:roman.kozlov@opencascade.com">Roman Kozlov (RKV)</a>
25 public class DTOTransformer implements CustomBeanTransformerSpi {
28 * The logger for the service.
30 public final static AppLogger logger = AppLogger
31 .getLogger(DTOTransformer.class);
34 * the bean transformer.
36 private final BeanTransformerSpi _beanTransformer;
41 * @param beanTransformer
42 * the bean transformer
44 public DTOTransformer(final BeanTransformerSpi beanTransformer) {
45 _beanTransformer = beanTransformer;
52 * @see net.sf.beanlib.spi.CustomBeanTransformerSpi#isTransformable(java.lang.Object, java.lang.Class, net.sf.beanlib.PropertyInfo)
54 public <T> boolean isTransformable(final Object from,
55 final Class<T> toClass, final net.sf.beanlib.PropertyInfo info) {
58 String fromName = from.getClass().getSimpleName();
59 String toName = toClass.getSimpleName();
60 if (logger.isDebugEnabled()) {
61 logger.debug("From: " + fromName + "; To: " + toName);
62 ok = (fromName.equals(toName + "DTO") || toName.equals(fromName
66 if (logger.isDebugEnabled()) {
67 logger.debug("From: null; To: " + toClass.getSimpleName());
70 if (logger.isDebugEnabled()) {
71 logger.debug("Can transform from " + info.getFromBean() + "."
72 + info.getPropertyName() + " to " + info.getToBean() + "."
73 + info.getPropertyName() + ": " + ok);
82 * @see net.sf.beanlib.spi.Transformable#transform(java.lang.Object, java.lang.Class, net.sf.beanlib.PropertyInfo)
84 public <T> T transform(final Object in, final Class<T> toClass,
85 final PropertyInfo info) {
86 if (logger.isDebugEnabled()) {
87 logger.debug("Transform " + in.getClass().getSimpleName() + ": "
88 + in.toString() + " to " + toClass.getSimpleName());
90 Map<Object, Object> cloneMap = _beanTransformer.getClonedMap();
91 Object clone = cloneMap.get(in);
97 if (logger.isDebugEnabled()) {
98 logger.debug("Copy bean from " + info.getFromBean() + "."
99 + info.getPropertyName() + " to " + info.getToBean() + "."
100 + info.getPropertyName());
102 clone = BeanHelper.copyBean(in, toClass);
103 cloneMap.put(in, clone);