This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit ed94d2cf927c49aa01f59972976ca63fda2da783 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Aug 26 09:19:44 2015 +0200 GearUseFeaturesSeineService (impl + test) (refs #7458). --- .../service/seine/GearUseFeaturesSeineService.java | 4 +- .../ird/observe/services/ObserveServiceTopia.java | 23 +- .../services/builder/DtoToEntityBuilder.java | 14 +- .../services/builder/EntityToDtoBuilder.java | 3 + .../seine/GearUseFeaturesSeineServiceTopia.java | 125 ++++++++ .../ird/observe/services/DataSourceResource.java | 6 +- .../services/builder/DtoToEntityBuilderTest.java | 2 +- .../services/builder/EntityToDtoBuilderTest.java | 3 +- .../services/service/AbstractServiceTopiaTest.java | 4 +- .../service/DataSourceServiceTopiaTest.java | 4 +- .../service/ReferentialServiceTopiaTest.java | 8 +- .../GearUseFeaturesSeineServiceTopiaTest.java | 317 +++++++++++++++++++++ .../service/seine/TripSeineServiceTopiaTest.java | 7 +- .../resources/db/4.0.1/dataForTestSeine.sql.gz | Bin 430098 -> 430383 bytes 14 files changed, 498 insertions(+), 22 deletions(-) diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineService.java index b69e076..7d56797 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineService.java @@ -18,10 +18,10 @@ public interface GearUseFeaturesSeineService extends ObserveService { FormDto<GearUseFeaturesSeineDto> loadToEdit(String gearUseFeaturesSeineId); - FormDto<GearUseFeaturesSeineDto> preCreate(String tripSeineId); + FormDto<GearUseFeaturesSeineDto> preCreate(); @Write - String save(FormDto<GearUseFeaturesSeineDto> form); + String save(FormDto<GearUseFeaturesSeineDto> form, String tripSeineId); @Write void delete(String tripSeineId, String gearUseFeaturesSeineId); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java index 404a192..76cbb97 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java @@ -4,6 +4,7 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.constants.ReferenceLocale; import fr.ird.observe.entities.referentiel.ReferenceEntity; @@ -31,6 +32,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Set; /** * Created on 16/08/15. @@ -102,7 +104,7 @@ public class ObserveServiceTopia implements ObserveService { return entities; } - protected <D extends IdDto, E extends TopiaEntity> E loadEntity(Class<D> dtoType, Class<E> entityType, String id) { + public <D extends IdDto, E extends TopiaEntity> E loadEntity(Class<D> dtoType, Class<E> entityType, String id) { ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaPersistenceContext(); TopiaDao<E> dao = persistenceContext.getDao(entityType); Optional<E> entity = dao.forTopiaIdEquals(id).tryFindUnique(); @@ -159,16 +161,31 @@ public class ObserveServiceTopia implements ObserveService { } } + protected <E extends TopiaEntity, D extends IdDto> D entityToDto(Class<D> dtoType, Class<E> entityType, E entity) { + try (EntityToDtoBuilder<E, D> dtoBuilder = EntityToDtoBuilder.create(entityType, dtoType)) { + + // copy entity + D dto = dtoBuilder.build(serviceContext.getReferentialLocale(), entity); + + return dto; + + } + } + protected <E extends TopiaEntity, D extends IdDto> FormDto<D> entityToEditFormDto(Class<D> dtoType, Class<E> entityType, E entity) { + return entityToEditFormDto(dtoType, entityType, entity, Sets.<Class<? extends IdDto>>newHashSet()); + } + + protected <E extends TopiaEntity, D extends IdDto> FormDto<D> entityToEditFormDto(Class<D> dtoType, Class<E> entityType, E entity, Set<Class<? extends IdDto>> referenceDtoTypes) { try (EntityToDtoBuilder<E, D> dtoBuilder = EntityToDtoBuilder.create(entityType, dtoType)) { // copy entity D dto = dtoBuilder.build(serviceContext.getReferentialLocale(), entity); // build label sets detected while copy - ImmutableSet<Class<? extends IdDto>> referentialDtoTypes = dtoBuilder.getReferenceTypes(); + referenceDtoTypes.addAll(dtoBuilder.getReferenceTypes()); ImmutableSet.Builder<ReferenceSetDto> labels = new ImmutableSet.Builder<>(); - for (Class<? extends IdDto> referenceDtoType : referentialDtoTypes) { + for (Class<? extends IdDto> referenceDtoType : referenceDtoTypes) { ReferenceSetDto referenceSet = getReferenceSet((Class<ReferentialDto>) referenceDtoType); labels.add(referenceSet); } 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 0ac4103..a3cc4e1 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 @@ -7,6 +7,7 @@ import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.ObserveDtoBinders; import fr.ird.observe.services.dto.ReferenceDto; +import org.apache.commons.lang3.StringUtils; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.beans.Binder; @@ -163,7 +164,18 @@ public class DtoToEntityBuilder<D extends IdDto, E extends TopiaEntity> implemen Class<DD> dtoType = (Class<DD>) idDto.getClass(); // Class<TopiaEntity> entityType = ObserveServiceTopia.getEntityType(aClass); - EE entity = serviceTopia.newEntity(entityType); + + EE entity; + + if (StringUtils.isBlank(idDto.getId())) { + + entity = serviceTopia.newEntity(entityType); + + } else { + + entity = serviceTopia.loadEntity(dtoType, entityType, idDto.getId()); + + } DtoToEntityBuilder<DD, EE> builder = create(dtoType, entityType, serviceTopia); builder.build(idDto, entity); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToDtoBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToDtoBuilder.java index 20e9ca9..172460b 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToDtoBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToDtoBuilder.java @@ -84,6 +84,9 @@ public class EntityToDtoBuilder<E extends TopiaEntity, D extends IdDto> implemen dtoType = (Class) type.getActualTypeArguments()[0]; referenceTypesBuilder.add(dtoType); + } else if (IdDto.class.isAssignableFrom(dtoType)) { + + } } } else { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineServiceTopia.java new file mode 100644 index 0000000..d0c07a1 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineServiceTopia.java @@ -0,0 +1,125 @@ +package fr.ird.observe.services.service.seine; + +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import fr.ird.observe.entities.seine.GearUseFeaturesSeine; +import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.referential.GearCaracteristicDto; +import fr.ird.observe.services.dto.referential.GearDto; +import fr.ird.observe.services.dto.seine.GearUseFeaturesSeineDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.service.DataNotFoundException; +import org.apache.commons.lang3.StringUtils; + +import java.util.Collections; +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class GearUseFeaturesSeineServiceTopia extends ObserveServiceTopia implements GearUseFeaturesSeineService { + + @Override + public List<GearUseFeaturesSeineDto> getGearUseFeaturesSeineByTripSeine(String tripSeineId) { + + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); + + List<GearUseFeaturesSeineDto> dtos = Lists.newLinkedList(); + + for (GearUseFeaturesSeine features : tripSeine.getGearUseFeaturesSeine()) { + + GearUseFeaturesSeineDto dto = entityToDto(GearUseFeaturesSeineDto.class, GearUseFeaturesSeine.class, features); + + dtos.add(dto); + } + + return dtos; + } + + @Override + public FormDto<GearUseFeaturesSeineDto> loadToRead(String gearUseFeaturesSeineId) { + + GearUseFeaturesSeine featuresSeine = loadEntity(GearUseFeaturesSeineDto.class, GearUseFeaturesSeine.class, gearUseFeaturesSeineId); + + FormDto<GearUseFeaturesSeineDto> form = entityToReadFormDto(GearUseFeaturesSeineDto.class, GearUseFeaturesSeine.class, featuresSeine); + + return form; + } + + @Override + public FormDto<GearUseFeaturesSeineDto> loadToEdit(String gearUseFeaturesSeineId) { + + GearUseFeaturesSeine featuresSeine = loadEntity(GearUseFeaturesSeineDto.class, GearUseFeaturesSeine.class, gearUseFeaturesSeineId); + + FormDto<GearUseFeaturesSeineDto> form = entityToEditFormDto( + GearUseFeaturesSeineDto.class, + GearUseFeaturesSeine.class, + featuresSeine, + Sets.<Class<? extends IdDto>>newHashSet(GearDto.class, GearCaracteristicDto.class)); + + return form; + } + + @Override + public FormDto<GearUseFeaturesSeineDto> preCreate() { + + GearUseFeaturesSeine featuresSeine = newEntity(GearUseFeaturesSeine.class); + + FormDto<GearUseFeaturesSeineDto> form = entityToEditFormDto( + GearUseFeaturesSeineDto.class, + GearUseFeaturesSeine.class, + featuresSeine, + Sets.<Class<? extends IdDto>>newHashSet(GearDto.class, GearCaracteristicDto.class)); + + return form; + } + + @Override + public String save(FormDto<GearUseFeaturesSeineDto> form, String tripSeineId) { + + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); + + GearUseFeaturesSeineDto featuresSeineDto = form.getForm(); + + GearUseFeaturesSeine featuresSeine = dtoToEntity(GearUseFeaturesSeineDto.class, GearUseFeaturesSeine.class, featuresSeineDto); + +// for (GearUseFeaturesMeasurementSeine measurementSeine : featuresSeine.getGearUseFeaturesMeasurement()) { +// +// saveEntity(GearUseFeaturesMeasurementSeine.class, measurementSeine); +// +// } + + featuresSeine = saveEntity(GearUseFeaturesSeine.class, featuresSeine); + + if (StringUtils.isBlank(featuresSeineDto.getId())) { + + tripSeine.addGearUseFeaturesSeine(featuresSeine); + + saveEntity(TripSeine.class, tripSeine); + + } + + return featuresSeine.getTopiaId(); + } + + @Override + public void delete(String tripSeineId, String gearUseFeaturesSeineId) { + + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); + + GearUseFeaturesSeine featuresSeine = loadEntity(GearUseFeaturesSeineDto.class, GearUseFeaturesSeine.class, gearUseFeaturesSeineId); + + if (! tripSeine.containsGearUseFeaturesSeine(featuresSeine)) { + throw new DataNotFoundException(GearUseFeaturesSeineDto.class, gearUseFeaturesSeineId); + } + + deleteEntity(GearUseFeaturesSeineDto.class, GearUseFeaturesSeine.class, Collections.singleton(gearUseFeaturesSeineId)); + + tripSeine.removeGearUseFeaturesSeine(featuresSeine); + + + } +} diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java index 30e774b..95511b0 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/DataSourceResource.java @@ -26,7 +26,7 @@ import java.io.InputStream; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; -import java.util.List; +import java.util.Set; /** * Created on 18/08/15. @@ -42,9 +42,9 @@ public class DataSourceResource implements TestRule { protected ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration; - protected List<String> testNamesChangeDataBase; + protected Set<String> testNamesChangeDataBase; - public DataSourceResource(ApplicationContextResource applicationContextResource, List<String> testNamesChangeDataBase) { + public DataSourceResource(ApplicationContextResource applicationContextResource, Set<String> testNamesChangeDataBase) { this.applicationContextResource = applicationContextResource; this.testNamesChangeDataBase = testNamesChangeDataBase; } 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 031cce4..5c63036 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 @@ -171,7 +171,7 @@ public class DtoToEntityBuilderTest { class ObserveServiceTopiaMock extends ObserveServiceTopia { @Override - protected <D extends IdDto, E extends TopiaEntity> E loadEntity(Class<D> dtoType, Class<E> entityType, String id) { + public <D extends IdDto, E extends TopiaEntity> E loadEntity(Class<D> dtoType, Class<E> entityType, String id) { E e = newEntity(entityType); e.setTopiaId(id); return e; diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToDtoBuilderTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToDtoBuilderTest.java index 80ac7de..3d3a8b4 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToDtoBuilderTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToDtoBuilderTest.java @@ -1,6 +1,7 @@ package fr.ird.observe.services.builder; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import fr.ird.observe.entities.constants.GearType; import fr.ird.observe.entities.constants.ReferenceStatus; import fr.ird.observe.entities.referentiel.Gear; @@ -207,7 +208,7 @@ public class EntityToDtoBuilderTest { Assert.assertEquals(features.getUsedInTrip(), featuresDto.getUsedInTrip()); Assert.assertEquals(features.sizeGearUseFeaturesMeasurement(), featuresDto.sizeGearUseFeaturesMeasurement()); - GearUseFeaturesMeasurementSeineDto measurementDto = featuresDto.getGearUseFeaturesMeasurement().get(0); + GearUseFeaturesMeasurementSeineDto measurementDto = Iterables.get(featuresDto.getGearUseFeaturesMeasurement(), 0); Assert.assertEquals(measurement.getTopiaId(), measurementDto.getId()); Assert.assertEquals(measurement.getMeasurementValue(), measurementDto.getMeasurementValue()); Assert.assertNotNull(measurementDto.getGearCaracteristic()); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java index 98b0784..b93c444 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/AbstractServiceTopiaTest.java @@ -12,7 +12,7 @@ import org.junit.ClassRule; import org.junit.Rule; import org.nuiton.topia.persistence.TopiaEntity; -import java.util.List; +import java.util.Set; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -28,7 +28,7 @@ public abstract class AbstractServiceTopiaTest { @ClassRule public static final ApplicationContextResource applicationContextResource = new ApplicationContextResource(); - public abstract List<String> getTestNamesChangeDataBase(); + public abstract Set<String> getTestNamesChangeDataBase(); public abstract String getScriptName(); @Rule diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java index 377e976..4361709 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceServiceTopiaTest.java @@ -1,6 +1,6 @@ package fr.ird.observe.services.service; -import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.migration.H2DataSourceMigration; @@ -29,7 +29,7 @@ public class DataSourceServiceTopiaTest { @ClassRule public static final ApplicationContextResource applicationContextResource = new ApplicationContextResource(); - public static final ImmutableList<String> TEST_NAMES_CHANGE_DATA_BASE = ImmutableList.of( + public static final ImmutableSet<String> TEST_NAMES_CHANGE_DATA_BASE = ImmutableSet.of( "testOpenNotExistingDatabase", "testOpen", "testCreateEmptyDataSource", diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java index e509db0..9a7f764 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java @@ -1,6 +1,6 @@ package fr.ird.observe.services.service; -import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.referentiel.LengthWeightParameter; import fr.ird.observe.entities.referentiel.Program; @@ -17,8 +17,8 @@ import org.junit.Test; import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntity; -import java.util.List; import java.util.Map; +import java.util.Set; /** * Created on 16/08/15. @@ -33,8 +33,8 @@ public class ReferentialServiceTopiaTest extends AbstractServiceTopiaTest { protected ReferentialService service; @Override - public List<String> getTestNamesChangeDataBase() { - return ImmutableList.of("testDelete"); + public Set<String> getTestNamesChangeDataBase() { + return ImmutableSet.of("testDelete"); } @Override diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineServiceTopiaTest.java new file mode 100644 index 0000000..bffe986 --- /dev/null +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineServiceTopiaTest.java @@ -0,0 +1,317 @@ +package fr.ird.observe.services.service.seine; + +import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; +import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine; +import fr.ird.observe.entities.seine.GearUseFeaturesSeine; +import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.IdDtos; +import fr.ird.observe.services.dto.ReferenceSetDto; +import fr.ird.observe.services.dto.ReferenceSetDtos; +import fr.ird.observe.services.dto.referential.GearCaracteristicDto; +import fr.ird.observe.services.dto.referential.GearDto; +import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; +import fr.ird.observe.services.dto.seine.GearUseFeaturesMeasurementSeineDto; +import fr.ird.observe.services.dto.seine.GearUseFeaturesSeineDto; +import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import fr.ird.observe.services.service.ReferentialService; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.topia.persistence.TopiaEntities; + +import java.util.Collection; +import java.util.List; +import java.util.Set; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class GearUseFeaturesSeineServiceTopiaTest extends AbstractServiceTopiaTest { + + protected GearUseFeaturesSeineService service; + + protected ReferentialService referentialService; + + public static final String GEAR_USE_FEATURES_SEINE_ID = "fr.ird.observe.entities.seine.GearUseFeaturesSeine#1440486230661#0.42614931015885216"; + + @Override + public Set<String> getTestNamesChangeDataBase() { + return ImmutableSet.of( + "saveCreateTest", + "saveUpdateTest", + "deleteTest"); + } + + @Override + public String getScriptName() { + return "dataForTestSeine"; + } + + @Override + public void setUp() throws Exception { + + super.setUp(); + + service = newService(GearUseFeaturesSeineService.class); + + referentialService = newService(ReferentialService.class); + + } + + @Test + public void getGearUseFeaturesSeineByTripSeine() { + + List<GearUseFeaturesSeineDto> featuresSeineDtos = service.getGearUseFeaturesSeineByTripSeine(TRIP_SEINE_ID_1); + + TripSeine tripSeine = dataSourceResource.findById(TripSeine.class, TRIP_SEINE_ID_1); + + Assert.assertEquals(tripSeine.sizeGearUseFeaturesSeine(), featuresSeineDtos.size()); + + for (GearUseFeaturesSeineDto featuresSeineDto : featuresSeineDtos) { + GearUseFeaturesSeine features = Iterables.find( + tripSeine.getGearUseFeaturesSeine(), + TopiaEntities.entityHasId(featuresSeineDto.getId())); + + assertEntityEqualsReferenceDto(features.getGear(), featuresSeineDto.getGear()); + Assert.assertEquals(features.getNumber(), featuresSeineDto.getNumber()); + Assert.assertEquals(features.getUsedInTrip(), featuresSeineDto.getUsedInTrip()); + Assert.assertEquals(features.getComment(), featuresSeineDto.getComment()); + + Assert.assertEquals(features.sizeGearUseFeaturesMeasurement(), featuresSeineDto.sizeGearUseFeaturesMeasurement()); + + for (GearUseFeaturesMeasurementSeineDto measurementSeineDto : featuresSeineDto.getGearUseFeaturesMeasurement()) { + GearUseFeaturesMeasurementSeine measurementSeine = Iterables.find( + features.getGearUseFeaturesMeasurement(), + TopiaEntities.entityHasId(measurementSeineDto.getId())); + + assertEntityEqualsReferenceDto(measurementSeine.getGearCaracteristic(), measurementSeineDto.getGearCaracteristic()); + Assert.assertEquals(measurementSeine.getMeasurementValue(), measurementSeineDto.getMeasurementValue()); + } + + } + } + + + @Test + public void loadToReadTest() { + + GearUseFeaturesSeine featuresSeine = dataSourceResource.findById(GearUseFeaturesSeine.class, GEAR_USE_FEATURES_SEINE_ID); + + FormDto<GearUseFeaturesSeineDto> formDto = service.loadToRead(GEAR_USE_FEATURES_SEINE_ID); + + Assert.assertNotNull(formDto); + GearUseFeaturesSeineDto featuresSeineDto = formDto.getForm(); + + Assert.assertEquals(featuresSeine.getTopiaId(), featuresSeineDto.getId()); + assertEntityEqualsReferenceDto(featuresSeine.getGear(), featuresSeineDto.getGear()); + Assert.assertEquals(featuresSeine.getNumber(), featuresSeineDto.getNumber()); + Assert.assertEquals(featuresSeine.getUsedInTrip(), featuresSeineDto.getUsedInTrip()); + Assert.assertEquals(featuresSeine.getComment(), featuresSeineDto.getComment()); + + Assert.assertEquals(featuresSeine.sizeGearUseFeaturesMeasurement(), featuresSeineDto.sizeGearUseFeaturesMeasurement()); + + for (GearUseFeaturesMeasurementSeineDto measurementSeineDto : featuresSeineDto.getGearUseFeaturesMeasurement()) { + GearUseFeaturesMeasurementSeine measurementSeine = Iterables.find( + featuresSeine.getGearUseFeaturesMeasurement(), + TopiaEntities.entityHasId(measurementSeineDto.getId())); + + assertEntityEqualsReferenceDto(measurementSeine.getGearCaracteristic(), measurementSeineDto.getGearCaracteristic()); + Assert.assertEquals(measurementSeine.getMeasurementValue(), measurementSeineDto.getMeasurementValue()); + } + + Assert.assertNotNull(formDto.getLabels()); + + Collection<Class> types = Collections2.transform(formDto.getLabels(), ReferenceSetDtos.getTypeFunction()); + Assert.assertTrue(types.contains(GearDto.class)); + Assert.assertTrue(types.contains(GearCaracteristicDto.class)); + Assert.assertEquals(2, formDto.sizeLabels()); + + for (ReferenceSetDto referenceSetDto : formDto.getLabels()) { + + Assert.assertEquals(0, referenceSetDto.sizeReference()); + + } + } + + @Test + public void loadToEditTest() { + + GearUseFeaturesSeine featuresSeine = dataSourceResource.findById(GearUseFeaturesSeine.class, GEAR_USE_FEATURES_SEINE_ID); + + FormDto<GearUseFeaturesSeineDto> formDto = service.loadToEdit(GEAR_USE_FEATURES_SEINE_ID); + + Assert.assertNotNull(formDto); + GearUseFeaturesSeineDto featuresSeineDto = formDto.getForm(); + + Assert.assertEquals(featuresSeine.getTopiaId(), featuresSeineDto.getId()); + assertEntityEqualsReferenceDto(featuresSeine.getGear(), featuresSeineDto.getGear()); + Assert.assertEquals(featuresSeine.getNumber(), featuresSeineDto.getNumber()); + Assert.assertEquals(featuresSeine.getUsedInTrip(), featuresSeineDto.getUsedInTrip()); + Assert.assertEquals(featuresSeine.getComment(), featuresSeineDto.getComment()); + + Assert.assertEquals(featuresSeine.sizeGearUseFeaturesMeasurement(), featuresSeineDto.sizeGearUseFeaturesMeasurement()); + + for (GearUseFeaturesMeasurementSeineDto measurementSeineDto : featuresSeineDto.getGearUseFeaturesMeasurement()) { + GearUseFeaturesMeasurementSeine measurementSeine = Iterables.find( + featuresSeine.getGearUseFeaturesMeasurement(), + TopiaEntities.entityHasId(measurementSeineDto.getId())); + + assertEntityEqualsReferenceDto(measurementSeine.getGearCaracteristic(), measurementSeineDto.getGearCaracteristic()); + Assert.assertEquals(measurementSeine.getMeasurementValue(), measurementSeineDto.getMeasurementValue()); + } + + Assert.assertNotNull(formDto.getLabels()); + + Collection<Class> types = Collections2.transform(formDto.getLabels(), ReferenceSetDtos.getTypeFunction()); + Assert.assertTrue(types.contains(GearDto.class)); + Assert.assertTrue(types.contains(GearCaracteristicDto.class)); + Assert.assertEquals(2, formDto.sizeLabels()); + + for (ReferenceSetDto referenceSetDto : formDto.getLabels()) { + + Assert.assertTrue(referenceSetDto.sizeReference() > 0); + + } + } + + @Test + public void preCreateTest() { + FormDto<GearUseFeaturesSeineDto> formDto = service.preCreate(); + + Assert.assertNotNull(formDto); + GearUseFeaturesSeineDto featuresSeineDto = formDto.getForm(); + + Assert.assertNull(featuresSeineDto.getId()); + Assert.assertNull(featuresSeineDto.getNumber()); + Assert.assertNull(featuresSeineDto.getUsedInTrip()); + Assert.assertNull(featuresSeineDto.getComment()); + Assert.assertEquals(0, featuresSeineDto.sizeGearUseFeaturesMeasurement()); + + Assert.assertNotNull(formDto.getLabels()); + + Collection<Class> types = Collections2.transform(formDto.getLabels(), ReferenceSetDtos.getTypeFunction()); + Assert.assertTrue(types.contains(GearDto.class)); + Assert.assertTrue(types.contains(GearCaracteristicDto.class)); + Assert.assertEquals(2, formDto.sizeLabels()); + + for (ReferenceSetDto referenceSetDto : formDto.getLabels()) { + + Assert.assertTrue(referenceSetDto.sizeReference() > 0); + + } + + } + + @Test + public void saveUpdateTest() { + FormDto<GearUseFeaturesSeineDto> formDto = service.loadToEdit(GEAR_USE_FEATURES_SEINE_ID); + + GearUseFeaturesSeineDto featuresSeineDto = formDto.getForm(); + + featuresSeineDto.setNumber(12); + featuresSeineDto.setComment("Un Commentaire"); + for (GearUseFeaturesMeasurementSeineDto measurementSeineDto : featuresSeineDto.getGearUseFeaturesMeasurement()) { + if ("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.20".equals(measurementSeineDto.getGearCaracteristic().getId())) { + measurementSeineDto.setMeasurementValue("4"); + } else if ("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.21".equals(measurementSeineDto.getGearCaracteristic().getId())) { + measurementSeineDto.setMeasurementValue("false"); + } else if ("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.22".equals(measurementSeineDto.getGearCaracteristic().getId())) { + measurementSeineDto.setMeasurementValue("true"); + } + } + + service.save(formDto, TRIP_SEINE_ID_1); + + GearUseFeaturesSeine featuresSeine = dataSourceResource.findById(GearUseFeaturesSeine.class, GEAR_USE_FEATURES_SEINE_ID); + + Assert.assertEquals(featuresSeineDto.getId(), featuresSeine.getTopiaId()); + assertReferenceDtoEqualsEntity(featuresSeineDto.getGear(), featuresSeine.getGear()); + Assert.assertEquals(featuresSeineDto.getNumber(), featuresSeine.getNumber()); + Assert.assertEquals(featuresSeineDto.getUsedInTrip(), featuresSeine.getUsedInTrip()); + Assert.assertEquals(featuresSeineDto.getComment(), featuresSeine.getComment()); + + Assert.assertEquals(featuresSeineDto.sizeGearUseFeaturesMeasurement(), featuresSeine.sizeGearUseFeaturesMeasurement()); + + for (GearUseFeaturesMeasurementSeineDto measurementSeineDto : featuresSeineDto.getGearUseFeaturesMeasurement()) { + GearUseFeaturesMeasurementSeine measurementSeine = Iterables.find( + featuresSeine.getGearUseFeaturesMeasurement(), + TopiaEntities.entityHasId(measurementSeineDto.getId())); + + assertReferenceDtoEqualsEntity(measurementSeineDto.getGearCaracteristic(), measurementSeine.getGearCaracteristic()); + Assert.assertEquals(measurementSeineDto.getMeasurementValue(), measurementSeine.getMeasurementValue()); + } + + } + + @Test + public void saveCreateTest() { + FormDto<GearUseFeaturesSeineDto> formDto = service.preCreate(); + + GearUseFeaturesSeineDto featuresSeineDto = formDto.getForm(); + + ReferentialReferenceDto<GearDto> radarRefDto = (ReferentialReferenceDto<GearDto>) Iterables.find( + formDto.getReferenceSetDto(GearDto.class).getReference(), + IdDtos.newIdPredicate("fr.ird.observe.entities.referentiel.Gear#1239832686125#0.4")); + + featuresSeineDto.setGear(radarRefDto); + featuresSeineDto.setNumber(1); + featuresSeineDto.setComment("Un autre Commentaire"); + + GearUseFeaturesMeasurementSeineDto measurementSeineDto1 = new GearUseFeaturesMeasurementSeineDto(); + + ReferentialReferenceDto<GearCaracteristicDto> rangeRefDto = (ReferentialReferenceDto<GearCaracteristicDto>) Iterables.find( + formDto.getReferenceSetDto(GearCaracteristicDto.class).getReference(), + IdDtos.newIdPredicate("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.1")); + + measurementSeineDto1.setGearCaracteristic(rangeRefDto); + measurementSeineDto1.setMeasurementValue("50"); + + featuresSeineDto.addGearUseFeaturesMeasurement(measurementSeineDto1); + + + String featuresSeineId = service.save(formDto, TRIP_SEINE_ID_1); + + GearUseFeaturesSeine featuresSeine = dataSourceResource.findById(GearUseFeaturesSeine.class, featuresSeineId); + + assertReferenceDtoEqualsEntity(featuresSeineDto.getGear(), featuresSeine.getGear()); + Assert.assertEquals(featuresSeineDto.getNumber(), featuresSeine.getNumber()); + Assert.assertEquals(featuresSeineDto.getUsedInTrip(), featuresSeine.getUsedInTrip()); + Assert.assertEquals(featuresSeineDto.getComment(), featuresSeine.getComment()); + + Assert.assertEquals(featuresSeineDto.sizeGearUseFeaturesMeasurement(), featuresSeine.sizeGearUseFeaturesMeasurement()); + + for (final GearUseFeaturesMeasurementSeineDto measurementSeineDto : featuresSeineDto.getGearUseFeaturesMeasurement()) { + GearUseFeaturesMeasurementSeine measurementSeine = Iterables.find( + featuresSeine.getGearUseFeaturesMeasurement(), + new Predicate<GearUseFeaturesMeasurementSeine>() { + @Override + public boolean apply(GearUseFeaturesMeasurementSeine gearUseFeaturesMeasurementSeine) { + return measurementSeineDto.getGearCaracteristic().getId().equals(gearUseFeaturesMeasurementSeine.getGearCaracteristic().getTopiaId()); + } + }); + + assertReferenceDtoEqualsEntity(measurementSeineDto.getGearCaracteristic(), measurementSeine.getGearCaracteristic()); + Assert.assertEquals(measurementSeineDto.getMeasurementValue(), measurementSeine.getMeasurementValue()); + } + + } + + @Test + public void deleteTest() { + + service.delete(TRIP_SEINE_ID_1, GEAR_USE_FEATURES_SEINE_ID); + + List<GearUseFeaturesSeineDto> featuresSeineDtos = service.getGearUseFeaturesSeineByTripSeine(TRIP_SEINE_ID_1); + + Assert.assertEquals(1, featuresSeineDtos.size()); + + Assert.assertFalse(dataSourceResource.exists(GearUseFeaturesSeine.class, GEAR_USE_FEATURES_SEINE_ID)); + + + } + + +} diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTopiaTest.java index 6ebaf5a..9b86140 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTopiaTest.java @@ -1,7 +1,7 @@ package fr.ird.observe.services.service.seine; import com.google.common.collect.Collections2; -import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.services.ObserveServiceContextTopiaTaiste; import fr.ird.observe.services.dto.FormDto; @@ -22,6 +22,7 @@ import org.nuiton.util.DateUtil; import java.util.Collection; import java.util.List; +import java.util.Set; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -33,8 +34,8 @@ public class TripSeineServiceTopiaTest extends AbstractServiceTopiaTest { protected ReferentialService referentialService; @Override - public List<String> getTestNamesChangeDataBase() { - return ImmutableList.of( + public Set<String> getTestNamesChangeDataBase() { + return ImmutableSet.of( "saveCreateTest", "saveUpdateTest", "deleteTest"); diff --git a/observe-test-data/src/main/resources/db/4.0.1/dataForTestSeine.sql.gz b/observe-test-data/src/main/resources/db/4.0.1/dataForTestSeine.sql.gz index f61fb10..e8f5cfa 100644 Binary files a/observe-test-data/src/main/resources/db/4.0.1/dataForTestSeine.sql.gz and b/observe-test-data/src/main/resources/db/4.0.1/dataForTestSeine.sql.gz differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.