Salome HOME
KnowledgeElementDTO is now used in KnowledgeElementFacade. Edit and rename knowledge...
[tools/siman.git] / Workspace / Siman-Common / src / org / splat / util / TimestampTransformer.java
1 /*****************************************************************************
2  * Company         OPEN CASCADE
3  * Application     SIMAN
4  * File            $Id$ 
5  * Creation date   05.10.2012
6  * @author         $Author$
7  * @version        $Revision$
8  *****************************************************************************/
9
10 package org.splat.util; 
11
12 import java.sql.Timestamp;
13 import java.util.Map;
14
15 import net.sf.beanlib.PropertyInfo;
16 import net.sf.beanlib.spi.BeanTransformerSpi;
17 import net.sf.beanlib.spi.CustomBeanTransformerSpi;
18
19 /**
20  * the timsetamp transformer used by BeanHelper.
21  * @author Maria KRUCHININA
22  *
23  */
24 public class TimestampTransformer implements CustomBeanTransformerSpi{
25
26         /**
27          * the bean transformer.
28          */
29         private final BeanTransformerSpi _beanTransformer;
30         
31         /**
32          * Constructor.
33          * @param beanTransformer the bean transformer
34          */
35         public TimestampTransformer(final BeanTransformerSpi beanTransformer)
36         {
37                 _beanTransformer = beanTransformer;
38         }
39         
40         /**
41          * 
42          * {@inheritDoc}
43          * @see net.sf.beanlib.spi.CustomBeanTransformerSpi#isTransformable(java.lang.Object, java.lang.Class, net.sf.beanlib.PropertyInfo)
44          */
45         public <T> boolean isTransformable(final Object from, final Class<T> toClass, final net.sf.beanlib.PropertyInfo info)
46         {
47                 return ((from instanceof Timestamp) && (toClass == Timestamp.class));
48         }
49
50         /**
51          * 
52          * {@inheritDoc}
53          * @see net.sf.beanlib.spi.Transformable#transform(java.lang.Object, java.lang.Class, net.sf.beanlib.PropertyInfo)
54          */
55         @SuppressWarnings("unchecked")
56         public <T> T transform(final Object in, final Class<T> toClass, final PropertyInfo info)
57         {
58                 Map<Object,Object> cloneMap = _beanTransformer.getClonedMap();
59                 Object clone = cloneMap.get(in);
60
61                 if (clone != null)
62                 {
63                         return (T)clone;
64                 }
65                 
66                 Timestamp date = (Timestamp)in;
67                 clone = new Timestamp(date.getTime());
68                 
69                 ((Timestamp)clone).setNanos(date.getNanos());
70                 cloneMap.put(in, clone);
71                 
72                 return (T)clone;
73         }
74 }