This is an automated email from the git hooks/post-receive script. New commit to branch feature/7610 in repository observe. See http://git.codelutin.com/observe.git commit 06f31303d6f789a479258c6ab850fbffd80174ac Author: Kevin Morin <morin@codelutin.com> Date: Thu Oct 15 14:06:25 2015 +0200 correction du decorateur de referencedto pour le cas où des tokens sont des referencedtos (refs #7610) --- .../java/fr/ird/observe/ui/DecoratorService.java | 2 +- .../ui/util/decorator/ReferenceDecorator.java | 31 +++++++++++++++++----- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java index d63d690..997181a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/DecoratorService.java @@ -559,7 +559,7 @@ public class DecoratorService extends DecoratorProvider { // LengthWeightParameter decorator registerDecorator(new LengthWeightParameterDecorator(libelle)); registerReferenceDtoDecorator(LengthWeightParameterDto.class, - "${gender}$s##${ocean/" + libelle + "}$s##${species/scientificLabel}$s##" + + "${sex/label}$s##${ocean/label}$s##${species/scientificLabel}$s##" + t("observe.common.lengthWeightFormula") + " ${lengthWeightFormula}$s"); // gps decorators diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/decorator/ReferenceDecorator.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/decorator/ReferenceDecorator.java index 224e407..62926af 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/decorator/ReferenceDecorator.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/decorator/ReferenceDecorator.java @@ -4,6 +4,8 @@ import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import org.apache.commons.jxpath.JXPathContext; +import java.io.Serializable; + import static org.nuiton.i18n.I18n.t; /** @@ -19,7 +21,7 @@ public class ReferenceDecorator extends ObserveDecorator<ReferenceDto> implement protected Comparable<Comparable<?>> getTokenValue(JXPathContext jxcontext, String token) { // assume all values are comparable - Comparable<Comparable<?>> value; + Comparable<Comparable<?>> value = null; Object contextBean = jxcontext.getContextBean(); @@ -27,17 +29,32 @@ public class ReferenceDecorator extends ObserveDecorator<ReferenceDto> implement ReferenceDto referenceBean = (ReferenceDto) contextBean; + String[] tokens = token.split("/"); + + for (int i = 0 ; i < tokens.length - 1 ; i++) { + + if (referenceBean.getPropertyNames().contains(tokens[i])) { + + Serializable propertyValue = referenceBean.getPropertyValue(tokens[i]); + + if (propertyValue == null || !(propertyValue instanceof ReferenceDto)) { - if (referenceBean.getPropertyNames().contains(token)) { + return (Comparable<Comparable<?>>) getDefaultUndefinedValue(token); - value = (Comparable<Comparable<?>>) referenceBean.getPropertyValue(token); + } - if (value == null) { - value = (Comparable<Comparable<?>>) getDefaultNullValue(token); + referenceBean = (ReferenceDto) propertyValue; } + } + + String lastToken = tokens[tokens.length - 1]; + if (referenceBean.getPropertyNames().contains(lastToken)) { + value = (Comparable<Comparable<?>>) referenceBean.getPropertyValue(lastToken); + } + - } else { - value = (Comparable<Comparable<?>>) getDefaultUndefinedValue(token); + if (value == null) { + value = (Comparable<Comparable<?>>) getDefaultNullValue(tokens[0]); } } else { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.