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 682773800442901e3c98af3b2c6084aa2e9c9960 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 18 08:37:19 2015 +0200 Ajout d'un constructeur de ReferentielLabelDto mais ausii pour les FormDto --- .../java/fr/ird/observe/services/dto/FormDto.java | 4 - .../java/fr/ird/observe/services/dto/FormDtos.java | 13 +- .../dto/referential/ReferentialLabelDto.java | 47 +++++++ .../dto/referential/ReferentialLabelDtos.java | 149 +++++++++++++++++++++ 4 files changed, 208 insertions(+), 5 deletions(-) diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java index da5202d..93be919 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java @@ -12,10 +12,6 @@ public class FormDto<R extends IdDto> extends AbstractFormDto { this.type = type; } - public FormDto() { - this(null); - } - @Override public void setForm(IdDto form) { Preconditions.checkArgument(form.getClass().isAssignableFrom(type), "Bad form type, should be " + type.getName()); diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDtos.java index 7606dc8..530e2df 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDtos.java @@ -1,5 +1,9 @@ package fr.ird.observe.services.dto; +import fr.ird.observe.services.dto.referential.ReferentialLabelSetDto; + +import java.util.Collection; + /** * Created on 17/08/15. * @@ -7,8 +11,15 @@ package fr.ird.observe.services.dto; */ public class FormDtos extends AbstractFormDtos { - public static <BeanType extends FormDto, R extends IdDto> BeanType newReferentialFormDto(Class<R> source) { + public static <BeanType extends FormDto, R extends IdDto> BeanType newFormDto(Class<R> source) { + BeanType result = (BeanType) new FormDto<>(source); + return result; + } + + public static <BeanType extends FormDto, R extends IdDto> BeanType newFormDto(Class<R> source, R form, Collection<ReferentialLabelSetDto> labels) { BeanType result = (BeanType) new FormDto<>(source); + result.setForm(form); + result.setLabels(labels); return result; } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialLabelDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialLabelDto.java new file mode 100644 index 0000000..ac89343 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialLabelDto.java @@ -0,0 +1,47 @@ +package fr.ird.observe.services.dto.referential; + +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; + +import java.io.Serializable; + +public class ReferentialLabelDto<R extends ReferentialDto> extends AbstractReferentialLabelDto { + + private static final long serialVersionUID = 1L; + + protected final Class<R> type; + + protected final ImmutableList<String> labelPropertyNames; + + protected final Serializable[] labelPropertyValues; + + public ReferentialLabelDto(Class<R> type, String... labelPropertyNames) { + this.type = type; + this.labelPropertyNames = ImmutableList.copyOf(labelPropertyNames); + this.labelPropertyValues = new Serializable[labelPropertyNames.length]; + } + + public Class<R> getType() { + return type; + } + + public Serializable getLabelPropertyValue(String propertyName) { + int propertyIndex = getPropertyIndex(propertyName); + return labelPropertyValues[propertyIndex]; + } + + public ImmutableList<String> getLabelPropertyNames() { + return labelPropertyNames; + } + + public void setLabelPropertyValue(String propertyName, Serializable propertyValue) { + int propertyIndex = getPropertyIndex(propertyName); + labelPropertyValues[propertyIndex] = propertyValue; + } + + protected int getPropertyIndex(String propertyName) { + int index = labelPropertyNames.indexOf(propertyName); + Preconditions.checkArgument(index > -1, "Property " + propertyName + " not found for this label, " + labelPropertyNames); + return index; + } +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialLabelDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialLabelDtos.java new file mode 100644 index 0000000..176d9c0 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialLabelDtos.java @@ -0,0 +1,149 @@ +package fr.ird.observe.services.dto.referential; + +import com.google.common.collect.ImmutableMap; +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.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +import java.io.Serializable; +import java.util.Map; + +public class ReferentialLabelDtos extends AbstractReferentialLabelDtos { + + /** + * Les noms des propriétés à utiliser dans le label par type de référentiel. + */ + protected static final ImmutableMap<Class<?>, String[]> LABEL_PROPERTY_NAMES_MAPPING; + + static { + + String[] DEFAULT_PROPERTY_NAMES = {ReferentialDto.PROPERTY_CODE, I18nReferentialDto.PROPERTY_LABEL1, I18nReferentialDto.PROPERTY_LABEL2, I18nReferentialDto.PROPERTY_LABEL3}; + + LABEL_PROPERTY_NAMES_MAPPING = ImmutableMap.<Class<?>, String[]>builder() + + .put(CountryDto.class, DEFAULT_PROPERTY_NAMES) + .put(FpaZoneDto.class, DEFAULT_PROPERTY_NAMES) + .put(GearCaracteristicDto.class, DEFAULT_PROPERTY_NAMES) + .put(GearCaracteristicTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(GearDto.class, DEFAULT_PROPERTY_NAMES) + .put(HarbourDto.class, new String[]{ReferentialDto.PROPERTY_CODE, HarbourDto.PROPERTY_NAME, HarbourDto.PROPERTY_LOCODE}) + .put(LengthWeightParameterDto.class, new String[]{}) + .put(OceanDto.class, DEFAULT_PROPERTY_NAMES) + .put(OrganismDto.class, DEFAULT_PROPERTY_NAMES) + .put(PersonDto.class, new String[]{PersonDto.PROPERTY_FIRST_NAME, PersonDto.PROPERTY_LAST_NAME}) + .put(ProgramDto.class, new String[]{I18nReferentialDto.PROPERTY_LABEL1, I18nReferentialDto.PROPERTY_LABEL2, I18nReferentialDto.PROPERTY_LABEL3}) + .put(SexDto.class, DEFAULT_PROPERTY_NAMES) + .put(SpeciesDto.class, new String[]{SpeciesDto.PROPERTY_FAO_CODE, SpeciesDto.PROPERTY_SCIENTIFIC_LABEL, SpeciesDto.PROPERTY_HOME_ID}) + .put(SpeciesGroupDto.class, DEFAULT_PROPERTY_NAMES) + .put(SpeciesListDto.class, DEFAULT_PROPERTY_NAMES) + .put(VesselDto.class, DEFAULT_PROPERTY_NAMES) + .put(VesselSizeCategoryDto.class, new String[]{ReferentialDto.PROPERTY_CODE, VesselSizeCategoryDto.PROPERTY_GAUGE_LABEL, VesselSizeCategoryDto.PROPERTY_CAPACITY_LABEL}) + .put(VesselTypeDto.class, DEFAULT_PROPERTY_NAMES) + + .put(DetectionModeDto.class, DEFAULT_PROPERTY_NAMES) + .put(ObjectFateDto.class, DEFAULT_PROPERTY_NAMES) + .put(ObjectOperationDto.class, DEFAULT_PROPERTY_NAMES) + .put(ObjectTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(ObservedSystemDto.class, DEFAULT_PROPERTY_NAMES) + .put(ReasonForDiscardDto.class, DEFAULT_PROPERTY_NAMES) + .put(ReasonForNoFishingDto.class, DEFAULT_PROPERTY_NAMES) + .put(ReasonForNullSetDto.class, DEFAULT_PROPERTY_NAMES) + .put(SpeciesFateDto.class, DEFAULT_PROPERTY_NAMES) + .put(SpeciesStatusDto.class, DEFAULT_PROPERTY_NAMES) + .put(SurroundingActivityDto.class, DEFAULT_PROPERTY_NAMES) + .put(TransmittingBuoyOperationDto.class, DEFAULT_PROPERTY_NAMES) + .put(TransmittingBuoyTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(VesselActivitySeineDto.class, DEFAULT_PROPERTY_NAMES) + .put(WeightCategoryDto.class, DEFAULT_PROPERTY_NAMES) + .put(WindDto.class, new String[]{ReferentialDto.PROPERTY_CODE, I18nReferentialDto.PROPERTY_LABEL1, I18nReferentialDto.PROPERTY_LABEL2, I18nReferentialDto.PROPERTY_LABEL3, WindDto.PROPERTY_SPEED_RANGE}) + + .put(BaitHaulingStatusDto.class, DEFAULT_PROPERTY_NAMES) + .put(BaitSettingStatusDto.class, DEFAULT_PROPERTY_NAMES) + .put(BaitTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(CatchFateLonglineDto.class, DEFAULT_PROPERTY_NAMES) + .put(EncounterTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(HealthnessDto.class, DEFAULT_PROPERTY_NAMES) + .put(HookPositionDto.class, DEFAULT_PROPERTY_NAMES) + .put(HookSizeDto.class, DEFAULT_PROPERTY_NAMES) + .put(HookTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(ItemHorizontalPositionDto.class, DEFAULT_PROPERTY_NAMES) + .put(ItemVerticalPositionDto.class, DEFAULT_PROPERTY_NAMES) + .put(LightsticksColorDto.class, DEFAULT_PROPERTY_NAMES) + .put(LightsticksTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(LineTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(MaturityStatusDto.class, DEFAULT_PROPERTY_NAMES) + .put(MitigationTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(SensorBrandDto.class, new String[]{ReferentialDto.PROPERTY_CODE, SensorBrandDto.PROPERTY_BRAND_NAME}) + .put(SensorDataFormatDto.class, DEFAULT_PROPERTY_NAMES) + .put(SensorTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(SettingShapeDto.class, DEFAULT_PROPERTY_NAMES) + .put(SizeMeasureTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(StomacFullnessDto.class, DEFAULT_PROPERTY_NAMES) + .put(TripTypeDto.class, DEFAULT_PROPERTY_NAMES) + .put(VesselActivityLonglineDto.class, DEFAULT_PROPERTY_NAMES) + .put(WeightMeasureTypeDto.class, DEFAULT_PROPERTY_NAMES) + + .build(); + + } + + public static <R extends ReferentialDto> ReferentialLabelDto<R> newReferentialLabelDto(Class<R> type) { + String[] propertyNames = LABEL_PROPERTY_NAMES_MAPPING.get(type); + return new ReferentialLabelDto<>(type, propertyNames); + } + + public static <R extends ReferentialDto> ReferentialLabelDto<R> newReferentialLabelDto(Class<R> type, Object source) { + String[] propertyNames = LABEL_PROPERTY_NAMES_MAPPING.get(type); + ReferentialLabelDto<R> dto = new ReferentialLabelDto<>(type, propertyNames); + + Binder binder = BinderFactory.newBinder(source.getClass()); + Map<String, Object> properties = binder.obtainProperties(source, propertyNames); + for (Map.Entry<String, Object> entry : properties.entrySet()) { + String propertyName = entry.getKey(); + Object propertyValue = entry.getValue(); + dto.setLabelPropertyValue(propertyName, (Serializable) propertyValue); + } + return dto; + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.