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 052de92e9ad94b21528a7a654ba37576c78269d4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Nov 9 10:45:24 2015 +0100 Debut de correction des recopies de références --- .../fr/ird/observe/services/dto/ReferenceDto.java | 27 ++++++++++++++++++++-- .../fr/ird/observe/services/dto/ReferenceDtos.java | 6 ++++- .../services/dto/gson/ReferenceDtoAdapter.java | 3 +++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java index 3989214..607195d 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java @@ -25,7 +25,12 @@ package fr.ird.observe.services.dto; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import com.google.common.primitives.Primitives; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; +import fr.ird.observe.services.dto.longline.SetLonglineDto; import fr.ird.observe.services.dto.referential.I18nReferentialDto; +import fr.ird.observe.services.dto.seine.ActivitySeineDto; +import fr.ird.observe.services.dto.seine.SetSeineDto; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -58,20 +63,38 @@ public class ReferenceDto<D extends IdDto> extends AbstractReferenceDto { } public void init(Class<D> type, Iterable<String> labelPropertyNames) { + init(type, false, labelPropertyNames); + } + + public void init(Class<D> type, boolean convertToReference,Iterable<String> labelPropertyNames) { this.type = type; this.labelPropertyNames = Lists.newArrayList(labelPropertyNames); this.labelPropertyValues = new Serializable[this.labelPropertyNames.size()]; this.labelPropertyTypes = new Class[this.labelPropertyNames.size()]; Binder<D, D> ddBinder = BinderFactory.newBinder(type); - int index=0; + int index = 0; for (String labelPropertyName : labelPropertyNames) { Class<?> sourcePropertyType; if (I18nReferentialDto.PROPERTY_LABEL.equals(labelPropertyName)) { sourcePropertyType = String.class; + } else if (ActivityLonglineDto.PROPERTY_SET_LONGLINE.equals(labelPropertyName) && type.equals(ActivityLonglineDto.class)) { + sourcePropertyType = SetLonglineDto.class; + if (convertToReference) { + sourcePropertyType = ReferenceDto.class; + } + } else if (ActivitySeineDto.PROPERTY_SET_SEINE.equals(labelPropertyName) && type.equals(ActivitySeineDto.class)) { + sourcePropertyType = SetSeineDto.class; + if (convertToReference) { + sourcePropertyType = ReferenceDto.class; + } } else { sourcePropertyType = ddBinder.getSourcePropertyType(labelPropertyName); } - this.labelPropertyTypes[index++] = sourcePropertyType; + if (sourcePropertyType.isPrimitive()) { + this.labelPropertyTypes[index++] = Primitives.wrap(sourcePropertyType); + } else { + this.labelPropertyTypes[index++] = sourcePropertyType; + } } } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDtos.java index 058ea32..e43bd09 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDtos.java @@ -44,8 +44,12 @@ public class ReferenceDtos extends AbstractReferenceDtos { private static final Log log = LogFactory.getLog(ReferenceDtos.class); public static <R extends IdDto> ReferenceDto<R> newReferenceDto(Class<R> type, Iterable<String> propertyNames) { + return newReferenceDto(type, false, propertyNames); + } + + public static <R extends IdDto> ReferenceDto<R> newReferenceDto(Class<R> type, boolean convertToReference, Iterable<String> propertyNames) { ReferenceDto<R> dto = new ReferenceDto<>(); - dto.init(type, propertyNames); + dto.init(type, convertToReference, propertyNames); return dto; } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReferenceDtoAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReferenceDtoAdapter.java index 58def1b..8b9cf1e 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReferenceDtoAdapter.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReferenceDtoAdapter.java @@ -67,6 +67,9 @@ public class ReferenceDtoAdapter implements JsonDeserializer<ReferenceDto<?>>, J Class type = context.deserialize(JsonLabelPropertyTypes.get(i), Class.class); JsonElement jsonValue = jsonLabelPropertyValues.get(i); if (jsonValue != null && type != null) { + if (ReferentialReferenceDto.class.isAssignableFrom(type) && jsonValue.isJsonPrimitive()) { + type = String.class; + } Serializable value = context.deserialize(jsonValue, type); labelPropertyNames.add(name); valuesByName.put(name, value); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.