This is an automated email from the git hooks/post-receive script. New commit to branch feature/7458 in repository observe. See http://git.codelutin.com/observe.git commit bf2a9f7af94bd58e294ba09f101c9927ac22cf5b Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 18 08:39:23 2015 +0200 Ajout d'un builder de ReferentialDto à partir d'une entité --- .../services/service/ReferentialDtoBuilder.java | 13 +- .../services/service/ReferentialServiceTopia.java | 172 +++++++++++++++------ .../service/ReferentialDtoBuilderTest.java | 13 ++ 3 files changed, 148 insertions(+), 50 deletions(-) diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialDtoBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialDtoBuilder.java index af01306..3495485 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialDtoBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialDtoBuilder.java @@ -65,7 +65,6 @@ public class ReferentialDtoBuilder<M extends ReferentialDto> implements Closeabl this.visitor = new ToModelVisitor(); } - protected void putPropertyValue(String propertyName, Object propertyValue) { if (TopiaEntity.TOPIA_ID.equals(propertyName)) { @@ -87,9 +86,9 @@ public class ReferentialDtoBuilder<M extends ReferentialDto> implements Closeabl } - protected ReferentialLabelDto entityToRef(TopiaEntity entityValue) { + protected <R extends ReferentialDto> ReferentialLabelDto<R> entityToRef(Class<R> dtoType, TopiaEntity entityValue) { - ReferentialLabelDto label = ReferentialLabelDtos.newReferentialLabelDto(); + ReferentialLabelDto<R> label = ReferentialLabelDtos.newReferentialLabelDto(dtoType, entityValue); label.setId(entityValue.getTopiaId()); return label; @@ -125,7 +124,9 @@ public class ReferentialDtoBuilder<M extends ReferentialDto> implements Closeabl if (value instanceof TopiaEntity) { TopiaEntity entityValue = (TopiaEntity) value; - valueToAdd = entityToRef(entityValue); + + Class dtoType = ReferentialServiceTopia.entityToModelTypeCache.get(type); + valueToAdd = entityToRef(dtoType, entityValue); } @@ -143,11 +144,13 @@ public class ReferentialDtoBuilder<M extends ReferentialDto> implements Closeabl Object valueToAdd = value; if (TopiaEntity.class.isAssignableFrom(type)) { + Class dtoType = ReferentialServiceTopia.entityToModelTypeCache.get(type); + Collection<? extends TopiaEntity> topiaEntities = (Collection<? extends TopiaEntity>) value; LinkedHashSet<ReferentialLabelDto> models = new LinkedHashSet<>(topiaEntities.size()); for (TopiaEntity entityValue : topiaEntities) { - models.add(entityToRef(entityValue)); + models.add(entityToRef(dtoType, entityValue)); } valueToAdd = models; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java index 6213c7a..9fe646c 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java @@ -19,6 +19,47 @@ import fr.ird.observe.entities.referentiel.SpeciesList; import fr.ird.observe.entities.referentiel.Vessel; import fr.ird.observe.entities.referentiel.VesselSizeCategory; import fr.ird.observe.entities.referentiel.VesselType; +import fr.ird.observe.entities.referentiel.longline.BaitHaulingStatus; +import fr.ird.observe.entities.referentiel.longline.BaitSettingStatus; +import fr.ird.observe.entities.referentiel.longline.BaitType; +import fr.ird.observe.entities.referentiel.longline.CatchFateLongline; +import fr.ird.observe.entities.referentiel.longline.EncounterType; +import fr.ird.observe.entities.referentiel.longline.Healthness; +import fr.ird.observe.entities.referentiel.longline.HookPosition; +import fr.ird.observe.entities.referentiel.longline.HookSize; +import fr.ird.observe.entities.referentiel.longline.HookType; +import fr.ird.observe.entities.referentiel.longline.ItemHorizontalPosition; +import fr.ird.observe.entities.referentiel.longline.ItemVerticalPosition; +import fr.ird.observe.entities.referentiel.longline.LightsticksColor; +import fr.ird.observe.entities.referentiel.longline.LightsticksType; +import fr.ird.observe.entities.referentiel.longline.LineType; +import fr.ird.observe.entities.referentiel.longline.MaturityStatus; +import fr.ird.observe.entities.referentiel.longline.MitigationType; +import fr.ird.observe.entities.referentiel.longline.SensorBrand; +import fr.ird.observe.entities.referentiel.longline.SensorDataFormat; +import fr.ird.observe.entities.referentiel.longline.SensorType; +import fr.ird.observe.entities.referentiel.longline.SettingShape; +import fr.ird.observe.entities.referentiel.longline.SizeMeasureType; +import fr.ird.observe.entities.referentiel.longline.StomacFullness; +import fr.ird.observe.entities.referentiel.longline.TripType; +import fr.ird.observe.entities.referentiel.longline.VesselActivityLongline; +import fr.ird.observe.entities.referentiel.longline.WeightMeasureType; +import fr.ird.observe.entities.referentiel.seine.DetectionMode; +import fr.ird.observe.entities.referentiel.seine.ObjectFate; +import fr.ird.observe.entities.referentiel.seine.ObjectOperation; +import fr.ird.observe.entities.referentiel.seine.ObjectType; +import fr.ird.observe.entities.referentiel.seine.ObservedSystem; +import fr.ird.observe.entities.referentiel.seine.ReasonForDiscard; +import fr.ird.observe.entities.referentiel.seine.ReasonForNoFishing; +import fr.ird.observe.entities.referentiel.seine.ReasonForNullSet; +import fr.ird.observe.entities.referentiel.seine.SpeciesFate; +import fr.ird.observe.entities.referentiel.seine.SpeciesStatus; +import fr.ird.observe.entities.referentiel.seine.SurroundingActivity; +import fr.ird.observe.entities.referentiel.seine.TransmittingBuoyOperation; +import fr.ird.observe.entities.referentiel.seine.TransmittingBuoyType; +import fr.ird.observe.entities.referentiel.seine.VesselActivitySeine; +import fr.ird.observe.entities.referentiel.seine.WeightCategory; +import fr.ird.observe.entities.referentiel.seine.Wind; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.referential.CountryDto; import fr.ird.observe.services.dto.referential.FpaZoneDto; @@ -42,6 +83,47 @@ import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.services.dto.referential.VesselDto; import fr.ird.observe.services.dto.referential.VesselSizeCategoryDto; import fr.ird.observe.services.dto.referential.VesselTypeDto; +import fr.ird.observe.services.dto.referential.longline.BaitHaulingStatusDto; +import fr.ird.observe.services.dto.referential.longline.BaitSettingStatusDto; +import fr.ird.observe.services.dto.referential.longline.BaitTypeDto; +import fr.ird.observe.services.dto.referential.longline.CatchFateLonglineDto; +import fr.ird.observe.services.dto.referential.longline.EncounterTypeDto; +import fr.ird.observe.services.dto.referential.longline.HealthnessDto; +import fr.ird.observe.services.dto.referential.longline.HookPositionDto; +import fr.ird.observe.services.dto.referential.longline.HookSizeDto; +import fr.ird.observe.services.dto.referential.longline.HookTypeDto; +import fr.ird.observe.services.dto.referential.longline.ItemHorizontalPositionDto; +import fr.ird.observe.services.dto.referential.longline.ItemVerticalPositionDto; +import fr.ird.observe.services.dto.referential.longline.LightsticksColorDto; +import fr.ird.observe.services.dto.referential.longline.LightsticksTypeDto; +import fr.ird.observe.services.dto.referential.longline.LineTypeDto; +import fr.ird.observe.services.dto.referential.longline.MaturityStatusDto; +import fr.ird.observe.services.dto.referential.longline.MitigationTypeDto; +import fr.ird.observe.services.dto.referential.longline.SensorBrandDto; +import fr.ird.observe.services.dto.referential.longline.SensorDataFormatDto; +import fr.ird.observe.services.dto.referential.longline.SensorTypeDto; +import fr.ird.observe.services.dto.referential.longline.SettingShapeDto; +import fr.ird.observe.services.dto.referential.longline.SizeMeasureTypeDto; +import fr.ird.observe.services.dto.referential.longline.StomacFullnessDto; +import fr.ird.observe.services.dto.referential.longline.TripTypeDto; +import fr.ird.observe.services.dto.referential.longline.VesselActivityLonglineDto; +import fr.ird.observe.services.dto.referential.longline.WeightMeasureTypeDto; +import fr.ird.observe.services.dto.referential.seine.DetectionModeDto; +import fr.ird.observe.services.dto.referential.seine.ObjectFateDto; +import fr.ird.observe.services.dto.referential.seine.ObjectOperationDto; +import fr.ird.observe.services.dto.referential.seine.ObjectTypeDto; +import fr.ird.observe.services.dto.referential.seine.ObservedSystemDto; +import fr.ird.observe.services.dto.referential.seine.ReasonForDiscardDto; +import fr.ird.observe.services.dto.referential.seine.ReasonForNoFishingDto; +import fr.ird.observe.services.dto.referential.seine.ReasonForNullSetDto; +import fr.ird.observe.services.dto.referential.seine.SpeciesFateDto; +import fr.ird.observe.services.dto.referential.seine.SpeciesStatusDto; +import fr.ird.observe.services.dto.referential.seine.SurroundingActivityDto; +import fr.ird.observe.services.dto.referential.seine.TransmittingBuoyOperationDto; +import fr.ird.observe.services.dto.referential.seine.TransmittingBuoyTypeDto; +import fr.ird.observe.services.dto.referential.seine.VesselActivitySeineDto; +import fr.ird.observe.services.dto.referential.seine.WeightCategoryDto; +import fr.ird.observe.services.dto.referential.seine.WindDto; import org.nuiton.topia.persistence.TopiaEntity; import java.util.Collection; @@ -74,52 +156,52 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe .put(GearCaracteristic.class, GearCaracteristicDto.class) .put(Gear.class, GearDto.class) - // .put(VesselActivitySeine.class, VesselActivitySeineModel.class) -// .put(SurroundingActivity.class, SurroundingActivityModel.class) -// .put(ReasonForNullSet.class, ReasonForNullSetModel.class) -// .put(ReasonForNoFishing.class, ReasonForNoFishingModel.class) -// .put(SpeciesFate.class, SpeciesFateModel.class) -// .put(ObjectFate.class, ObjectFateModel.class) -// .put(WeightCategory.class, WeightCategoryModel.class) -// .put(DetectionMode.class, DetectionModeModel.class) -// .put(TransmittingBuoyOperation.class, TransmittingBuoyOperationModel.class) -// .put(ObjectOperation.class, ObjectOperationModel.class) -// .put(ReasonForDiscard.class, ReasonForDiscardModel.class) -// .put(SpeciesStatus.class, SpeciesStatusModel.class) -// .put(ObservedSystem.class, ObservedSystemModel.class) -// .put(TransmittingBuoyType.class, TransmittingBuoyTypeModel.class) -// .put(ObjectType.class, ObjectTypeModel.class) -// .put(Wind.class, WindModel.class) - -// .put(BaitHaulingStatus.class, BaitHaulingStatusModel.class) -// .put(BaitSettingStatus.class, BaitSettingStatusModel.class) -// .put(BaitType.class, BaitTypeModel.class) -// .put(CatchFateLongline.class, CatchFateLonglineModel.class) -// .put(EncounterType.class, EncounterTypeModel.class) -// .put(Healthness.class, HealthnessModel.class) -// .put(HookPosition.class, HookPositionModel.class) -// .put(HookSize.class, HookSizeModel.class) -// .put(HookType.class, HookTypeModel.class) -// .put(ItemVerticalPosition.class, ItemVerticalPositionModel.class) -// .put(ItemHorizontalPosition.class, ItemHorizontalPositionModel.class) -// .put(LightsticksColor.class, LightsticksColorModel.class) -// .put(LightsticksType.class, LightsticksTypeModel.class) -// .put(LineType.class, LineTypeModel.class) -// .put(MaturityStatus.class, MaturityStatusModel.class) -// .put(MitigationType.class, MitigationTypeModel.class) -// .put(SensorBrand.class, SensorBrandModel.class) -// .put(SensorDataFormat.class, SensorDataFormatModel.class) -// .put(SensorType.class, SensorTypeModel.class) -// .put(SettingShape.class, SettingShapeModel.class) -// .put(SizeMeasureType.class, SizeMeasureTypeModel.class) -// .put(StomacFullness.class, StomacFullnessModel.class) -// .put(TripType.class, TripTypeModel.class) -// .put(VesselActivityLongline.class, VesselActivityLonglineModel.class) -// .put(WeightMeasureType.classWeightMeasureTypeModel.class) + .put(VesselActivitySeine.class, VesselActivitySeineDto.class) + .put(SurroundingActivity.class, SurroundingActivityDto.class) + .put(ReasonForNullSet.class, ReasonForNullSetDto.class) + .put(ReasonForNoFishing.class, ReasonForNoFishingDto.class) + .put(SpeciesFate.class, SpeciesFateDto.class) + .put(ObjectFate.class, ObjectFateDto.class) + .put(WeightCategory.class, WeightCategoryDto.class) + .put(DetectionMode.class, DetectionModeDto.class) + .put(TransmittingBuoyOperation.class, TransmittingBuoyOperationDto.class) + .put(ObjectOperation.class, ObjectOperationDto.class) + .put(ReasonForDiscard.class, ReasonForDiscardDto.class) + .put(SpeciesStatus.class, SpeciesStatusDto.class) + .put(ObservedSystem.class, ObservedSystemDto.class) + .put(TransmittingBuoyType.class, TransmittingBuoyTypeDto.class) + .put(ObjectType.class, ObjectTypeDto.class) + .put(Wind.class, WindDto.class) + + .put(BaitHaulingStatus.class, BaitHaulingStatusDto.class) + .put(BaitSettingStatus.class, BaitSettingStatusDto.class) + .put(BaitType.class, BaitTypeDto.class) + .put(CatchFateLongline.class, CatchFateLonglineDto.class) + .put(EncounterType.class, EncounterTypeDto.class) + .put(Healthness.class, HealthnessDto.class) + .put(HookPosition.class, HookPositionDto.class) + .put(HookSize.class, HookSizeDto.class) + .put(HookType.class, HookTypeDto.class) + .put(ItemVerticalPosition.class, ItemVerticalPositionDto.class) + .put(ItemHorizontalPosition.class, ItemHorizontalPositionDto.class) + .put(LightsticksColor.class, LightsticksColorDto.class) + .put(LightsticksType.class, LightsticksTypeDto.class) + .put(LineType.class, LineTypeDto.class) + .put(MaturityStatus.class, MaturityStatusDto.class) + .put(MitigationType.class, MitigationTypeDto.class) + .put(SensorBrand.class, SensorBrandDto.class) + .put(SensorDataFormat.class, SensorDataFormatDto.class) + .put(SensorType.class, SensorTypeDto.class) + .put(SettingShape.class, SettingShapeDto.class) + .put(SizeMeasureType.class, SizeMeasureTypeDto.class) + .put(StomacFullness.class, StomacFullnessDto.class) + .put(TripType.class, TripTypeDto.class) + .put(VesselActivityLongline.class, VesselActivityLonglineDto.class) + .put(WeightMeasureType.class, WeightMeasureTypeDto.class) .build(); - protected static final ImmutableMap<Class<?>, Class<?>> modelToEntityTypeCache ; + protected static final ImmutableMap<Class<?>, Class<?>> modelToEntityTypeCache; static { @@ -162,7 +244,7 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe return form; } - @Override + public <D extends ReferentialDto> String save(FormDto<D> form) { Class<D> dtoType= form.getType(); TopiaEntity entity = referentialDtoToEntity(form.getForm()); @@ -185,7 +267,7 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe protected <D extends ReferentialDto> FormDto<D> entityToReferentialFormDto(Class<D> dtoType, TopiaEntity entity) { D dto = toDto(dtoType, entity); - FormDto<D> form = FormDtos.newReferentialFormDto(dtoType); + FormDto<D> form = FormDtos.newFormDto(dtoType); form.setForm(dto); return form; } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialDtoBuilderTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialDtoBuilderTest.java index fd708fa..a0fb4e6 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialDtoBuilderTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialDtoBuilderTest.java @@ -40,6 +40,15 @@ public class ReferentialDtoBuilderTest { program.setTargetDiscardsObservation(1); Organism organism = new OrganismImpl(); organism.setTopiaId("Oraganism1"); + organism.setLabel1("organism1"); + organism.setLabel2("organism2"); + organism.setLabel3("organism3"); + organism.setLabel4("organism4"); + organism.setLabel5("organism5"); + organism.setLabel6("organism6"); + organism.setLabel7("organism7"); + organism.setLabel8("organism8"); + organism.setCode("organismCode"); program.setOrganism(organism); ReferentialDtoBuilder<ProgramDto> builder = ReferentialDtoBuilder.create(ProgramDto.class); @@ -65,6 +74,10 @@ public class ReferentialDtoBuilderTest { Assert.assertEquals(program.getTargetDiscardsObservation(), programModel.getTargetDiscardsObservation()); Assert.assertNotNull(programModel.getOrganism()); Assert.assertEquals(program.getOrganism().getTopiaId(), programModel.getOrganism().getId()); + Assert.assertEquals(program.getOrganism().getCode(), programModel.getOrganism().getLabelPropertyValue("code")); + Assert.assertEquals(program.getOrganism().getLabel1(), programModel.getOrganism().getLabelPropertyValue("label1")); + Assert.assertEquals(program.getOrganism().getLabel2(), programModel.getOrganism().getLabelPropertyValue("label2")); + Assert.assertEquals(program.getOrganism().getLabel3(), programModel.getOrganism().getLabelPropertyValue("label3")); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.