branch feature/7458-3 created (now a1fea91)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7458-3 in repository observe. See http://git.codelutin.com/observe.git at a1fea91 add DTo test and fix DtoToEntityBuilder (refs #7458). This branch includes the following new commits: new a1fea91 add DTo test and fix DtoToEntityBuilder (refs #7458). The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit a1fea911dced009312b2de56d0c42675cb85eb6e Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Aug 21 09:38:29 2015 +0200 add DTo test and fix DtoToEntityBuilder (refs #7458). -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7458-3 in repository observe. See http://git.codelutin.com/observe.git commit a1fea911dced009312b2de56d0c42675cb85eb6e Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Aug 21 09:38:29 2015 +0200 add DTo test and fix DtoToEntityBuilder (refs #7458). --- .../services/builder/DtoToEntityBuilder.java | 31 ++++- .../services/builder/DtoToEntityBuilderTest.java | 147 +++++++++++++-------- 2 files changed, 116 insertions(+), 62 deletions(-) diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/DtoToEntityBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/DtoToEntityBuilder.java index d8868d7..4aaa78d 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/DtoToEntityBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/DtoToEntityBuilder.java @@ -72,27 +72,44 @@ public class DtoToEntityBuilder<D extends IdDto, E extends TopiaEntity> implemen if (!collection.isEmpty()) { - ParameterizedType collectionGenericTypeType = (ParameterizedType) collectionGenericType; - ParameterizedType type1 = (ParameterizedType) collectionGenericTypeType.getActualTypeArguments()[0]; - Class type = (Class) type1.getActualTypeArguments()[0]; + Type collectionGenericTypeSource = binder.getSourcePropertyGenericType(propertyName); - if (ReferenceDto.class.isAssignableFrom(type)) { + ParameterizedType collectionGenericTypeType1 = (ParameterizedType) collectionGenericTypeSource; + Type type1 = collectionGenericTypeType1.getActualTypeArguments()[0]; + Class typeSource; + if (type1 instanceof Class) { + typeSource = (Class) type1; + } else { + typeSource = (Class) ((ParameterizedType) type1).getActualTypeArguments()[0]; + } + + ParameterizedType collectionGenericTypeType2 = (ParameterizedType) collectionGenericType; + Type type2 = collectionGenericTypeType2.getActualTypeArguments()[0]; + Class typeTarget; + if (type1 instanceof Class) { + typeTarget = (Class) type2; + } else { + typeTarget = (Class) ((ParameterizedType) type2).getActualTypeArguments()[0]; + } + + + if (ReferenceDto.class.isAssignableFrom(typeSource)) { Collection<ReferenceDto> referenceDtos = (Collection<ReferenceDto>) collection; for (ReferenceDto referenceDto : referenceDtos) { - TopiaEntity propertyEntity = toEntity(type, referenceDto); + TopiaEntity propertyEntity = toEntity(typeTarget, referenceDto); entityCollection.add(propertyEntity); } - } else if (IdDto.class.isAssignableFrom(type)) { + } else if (IdDto.class.isAssignableFrom(typeSource)) { Collection<IdDto> idDtos = (Collection<IdDto>) collection; for (IdDto idDto : idDtos) { - TopiaEntity propertyEntity = toEntity(type, idDto); + TopiaEntity propertyEntity = toEntity(typeTarget, idDto); entityCollection.add(propertyEntity); } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/DtoToEntityBuilderTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/builder/DtoToEntityBuilderTest.java index 669bb89..f5f8e92 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/DtoToEntityBuilderTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/builder/DtoToEntityBuilderTest.java @@ -4,16 +4,22 @@ import com.google.common.collect.ImmutableSet; import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.entities.referentiel.Organism; import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine; +import fr.ird.observe.entities.seine.GearUseFeaturesSeine; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.constants.GearType; import fr.ird.observe.services.dto.constants.ReferenceStatus; import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.referential.GearCaracteristicDto; +import fr.ird.observe.services.dto.referential.GearDto; import fr.ird.observe.services.dto.referential.I18nReferentialDto; import fr.ird.observe.services.dto.referential.OrganismDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDtos; +import fr.ird.observe.services.dto.seine.GearUseFeaturesMeasurementSeineDto; +import fr.ird.observe.services.dto.seine.GearUseFeaturesSeineDto; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -35,25 +41,7 @@ public class DtoToEntityBuilderTest { @Test public void testCopy() { - ObserveServiceTopia service = new ObserveServiceTopia() { - - @Override - protected <D extends ReferentialDto, E extends TopiaEntity> E loadEntity(Class<D> dtoType, Class<E> entityType, String id) { - E e = newEntity(entityType); - e.setTopiaId(id); - return e; - } - - @Override - public <E extends TopiaEntity> E newEntity(Class<E> entityType) { - - try { - return (E) ObserveEntityEnum.valueOf(entityType).getImplementation().newInstance(); - } catch (InstantiationException | IllegalAccessException e) { - throw new IllegalStateException("could not create instance of " + entityType.getName()); - } - } - }; + ObserveServiceTopia service = new ObserveServiceTopiaMock(); ProgramDto programDto = new ProgramDto(); programDto.setCode("code"); @@ -114,41 +102,90 @@ public class DtoToEntityBuilderTest { } -// @Test -// public void testCopyWithSubDto() { -// -// GearCaracteristic gearCaracteristic = new GearCaracteristicImpl(); -// gearCaracteristic.setTopiaId("gearCaracteristicId"); -// gearCaracteristic.setCode("gearCaracteristicCode"); -// gearCaracteristic.setLabel1("gearCaracteristicLabel1"); -// gearCaracteristic.setLabel2("gearCaracteristicLabel2"); -// gearCaracteristic.setLabel3("gearCaracteristicLabel3"); -// gearCaracteristic.setLabel4("gearCaracteristicLabel4"); -// gearCaracteristic.setLabel5("gearCaracteristicLabel5"); -// gearCaracteristic.setLabel6("gearCaracteristicLabel6"); -// gearCaracteristic.setLabel7("gearCaracteristicLabel7"); -// gearCaracteristic.setLabel8("gearCaracteristicLabel8"); -// gearCaracteristic.setNeedComment(true); -// gearCaracteristic.setUri("gearCaracteristicUrl"); -// gearCaracteristic.setUnit("m"); -// gearCaracteristic.setStatus(fr.ird.observe.entities.constants.ReferenceStatus.enabled); -// -// Gear gear = new GearImpl(); -// gear.setTopiaId("gearId"); -// gear.setCode("gearCode"); -// gear.setLabel1("gearLabel1"); -// gear.setLabel2("gearLabel2"); -// gear.setLabel3("gearLabel3"); -// gear.setLabel4("gearLabel4"); -// gear.setLabel5("gearLabel5"); -// gear.setLabel6("gearLabel6"); -// gear.setLabel7("gearLabel7"); -// gear.setLabel8("gearLabel8"); -// gear.setNeedComment(true); -// gear.setUri("gearUrl"); -// gear.setStatus(fr.ird.observe.entities.constants.ReferenceStatus.enabled); -// gear.addGearCaracteristic(gearCaracteristic); -// -// } + @Test + public void testCopyWithSubDto() { + + ObserveServiceTopia service = new ObserveServiceTopiaMock(); + + ReferentialReferenceDto<GearCaracteristicDto> gearCaracteristicDto = + ReferentialReferenceDtos.newReferentialReferenceDto( + GearCaracteristicDto.class, + ReferentialLocale.FR, + ImmutableSet.of( + I18nReferentialDto.PROPERTY_LABEL2, + I18nReferentialDto.PROPERTY_CODE + ) + ); + + gearCaracteristicDto.setId("gearCaracteristicId"); + gearCaracteristicDto.setPropertyValue(ReferentialLocale.FR, I18nReferentialDto.PROPERTY_LABEL2, "gearCaracteristicLabel2"); + gearCaracteristicDto.setPropertyValue(I18nReferentialDto.PROPERTY_CODE, "gearCaracteristicCode"); + + ReferentialReferenceDto<GearDto> gearDto = + ReferentialReferenceDtos.newReferentialReferenceDto( + GearDto.class, + ReferentialLocale.FR, + ImmutableSet.of( + I18nReferentialDto.PROPERTY_LABEL2, + I18nReferentialDto.PROPERTY_CODE + ) + ); + + gearDto.setId("gearId"); + gearDto.setPropertyValue(ReferentialLocale.FR, I18nReferentialDto.PROPERTY_LABEL2, "gearLabel2"); + gearDto.setPropertyValue(I18nReferentialDto.PROPERTY_CODE, "gearCode"); + + GearUseFeaturesMeasurementSeineDto measurementDto = new GearUseFeaturesMeasurementSeineDto(); + measurementDto.setId("gearUseFeaturesMeasurementSeineId"); + measurementDto.setGearCaracteristic(gearCaracteristicDto); + measurementDto.setMeasurementValue("15.2"); + + GearUseFeaturesSeineDto featuresDto = new GearUseFeaturesSeineDto(); + featuresDto.setId("gearUseFeatureSeineId"); + featuresDto.setNumber(28); + featuresDto.setUsedInTrip(true); + featuresDto.setGear(gearDto); + featuresDto.addGearUseFeaturesMeasurement(measurementDto); + + // transformation du DTO en entités + DtoToEntityBuilder<GearUseFeaturesSeineDto, GearUseFeaturesSeine> builder = DtoToEntityBuilder.create(GearUseFeaturesSeineDto.class, GearUseFeaturesSeine.class, service); + + GearUseFeaturesSeine features = service.newEntity(GearUseFeaturesSeine.class); + builder.build(featuresDto, features); + + // On vérife que l'entité a bien été copié + Assert.assertEquals(featuresDto.getId(), features.getTopiaId()); + Assert.assertEquals(featuresDto.getNumber(), features.getNumber()); + Assert.assertEquals(featuresDto.getUsedInTrip(), features.getUsedInTrip()); + + Assert.assertEquals(featuresDto.sizeGearUseFeaturesMeasurement(), features.sizeGearUseFeaturesMeasurement()); + GearUseFeaturesMeasurementSeine measurement = features.getGearUseFeaturesMeasurement().get(0); + Assert.assertEquals(measurementDto.getId(), measurement.getTopiaId()); + Assert.assertEquals(measurementDto.getMeasurementValue(), measurement.getMeasurementValue()); + Assert.assertNotNull(measurement.getGearCaracteristic()); + Assert.assertEquals(measurementDto.getGearCaracteristic().getId(), measurement.getGearCaracteristic().getTopiaId()); + + } + + class ObserveServiceTopiaMock extends ObserveServiceTopia { + + @Override + protected <D extends ReferentialDto, E extends TopiaEntity> E loadEntity(Class<D> dtoType, Class<E> entityType, String id) { + E e = newEntity(entityType); + e.setTopiaId(id); + return e; + } + + @Override + public <E extends TopiaEntity> E newEntity(Class<E> entityType) { + + try { + return (E) ObserveEntityEnum.valueOf(entityType).getImplementation().newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + throw new IllegalStateException("could not create instance of " + entityType.getName()); + } + } + }; + } \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm