Author: bpoussin Date: 2010-11-24 18:05:48 +0100 (Wed, 24 Nov 2010) New Revision: 514 Url: http://nuiton.org/repositories/revision/wikitty/514 Log: use new copyFrom method to convert BusinessEntityWikitty <-> Dto Modified: trunk/wikitty-dto/src/main/java/org/nuiton/wikitty/dto/DTOHelper.java trunk/wikitty-dto/src/test/java/org/nuiton/wikitty/dto/WikittyDTOTest.java Modified: trunk/wikitty-dto/src/main/java/org/nuiton/wikitty/dto/DTOHelper.java =================================================================== --- trunk/wikitty-dto/src/main/java/org/nuiton/wikitty/dto/DTOHelper.java 2010-11-24 17:00:26 UTC (rev 513) +++ trunk/wikitty-dto/src/main/java/org/nuiton/wikitty/dto/DTOHelper.java 2010-11-24 17:05:48 UTC (rev 514) @@ -24,17 +24,11 @@ */ package org.nuiton.wikitty.dto; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ObjectUtil; -import org.nuiton.wikitty.WikittyException; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.entities.BusinessEntity; -import org.nuiton.wikitty.entities.Wikitty; -import org.nuiton.wikitty.entities.WikittyField; /** * User: couteau @@ -44,7 +38,7 @@ static Log log = LogFactory.getLog(DTOHelper.class); - public static <E extends BusinessEntity, F extends BusinessEntity> E toDto(F w) { + public static <E extends BusinessEntity> E toDto(E w) { Class clazz = w.getClass(); String dtoClassName = clazz.getName().replace("Impl", "DTO").replace("CopyOnWrite", "DTO"); E result = null; @@ -52,73 +46,17 @@ String wikittyId = w.getWikittyId(); result = (E)ObjectUtil.newInstance(dtoClassName+"("+wikittyId+")"); - result.setWikittyVersion(w.getWikittyVersion()); - - //get all fields - Class entityClass = result.getClass(); - Field[] fields = entityClass.getDeclaredFields(); - - for (Field field : fields) { - //for each field that got WikittyField annotation - if (field.isAnnotationPresent(WikittyField.class)) { - - //get the attribute's wikitty fqn - WikittyField annotation = field.getAnnotation(WikittyField.class); - String fieldFQN = annotation.fqn(); - - //extract extension and field name from fqn - String ext = fieldFQN.substring(0,fieldFQN.lastIndexOf(".")); - String fieldName = fieldFQN.substring(fieldFQN.lastIndexOf(".")+1); - - //set the value - Object value = w.getField(ext,fieldName); - Method m = entityClass.getMethod("set" + StringUtils.capitalize(field.getName()), field.getType()); - m.invoke(result,value); - } - } - - result.setWikittyVersion(w.getWikittyVersion()); - + result.copyFrom(w); }catch (Exception eee){ log.error("Could not transform Wikitty to DTO", eee); } return result; } - public static <E extends BusinessEntity, F extends BusinessEntity> E fromDto(WikittyProxy proxy, Class<E> clazz, F dto) { + public static <E extends BusinessEntity> E fromDto(WikittyProxy proxy, Class<E> clazz, E dto) { - E result = proxy.restore(clazz, dto.getWikittyId()); - - - try { - - //get all fields - Class entityClass = dto.getClass(); - Class resultClass = result.getClass(); - Field[] fields = entityClass.getDeclaredFields(); - - for (Field field : fields) { - //for each field that got WikittyField annotation - if (field.isAnnotationPresent(WikittyField.class)) { - - //get the attribute's wikitty fqn - WikittyField annotation = field.getAnnotation(WikittyField.class); - - //get the value from dto - Method m = entityClass.getMethod("get" + StringUtils.capitalize(field.getName())); - Object value = m.invoke(dto); - - //set the value on entity - m = resultClass.getMethod("set" + StringUtils.capitalize(field.getName()), field.getType()); - m.invoke(result, value); - } - } - - } catch (Exception eee) { - log.error("Could not transform Wikitty to DTO", eee); - } - - result.setWikittyVersion(dto.getWikittyVersion()); + E result = (E)proxy.restore(clazz, dto.getWikittyId()); + result.copyFrom(dto); return result; } Modified: trunk/wikitty-dto/src/test/java/org/nuiton/wikitty/dto/WikittyDTOTest.java =================================================================== --- trunk/wikitty-dto/src/test/java/org/nuiton/wikitty/dto/WikittyDTOTest.java 2010-11-24 17:00:26 UTC (rev 513) +++ trunk/wikitty-dto/src/test/java/org/nuiton/wikitty/dto/WikittyDTOTest.java 2010-11-24 17:05:48 UTC (rev 514) @@ -32,7 +32,7 @@ proxy.store(label); //make conversion - WikittyLabelDTO dto = DTOHelper.toDto(label); + WikittyLabel dto = DTOHelper.toDto(label); //check that dto fields are the same than the wikitty ones Assert.assertNotNull(dto);