This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit a8f3bc34d1b43bf1faa2279c6e44949e61cd344c Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Nov 19 20:07:23 2015 +0100 amélioration du design des ReferenceSetDto (si on utilise des generics, on le fait jusqu'au bout :() + quelques corrections par ci-par là --- .../java/fr/ird/observe/services/dto/FormDto.java | 39 +++++------ .../ird/observe/services/dto/ReferenceSetDto.java | 74 ++++++++++++++++++++- .../ird/observe/services/dto/ReferenceSetDtos.java | 63 ++++-------------- .../ObserveReferenceSetRequestKeyDefinition.java | 5 +- .../services/dto/referential/ProgramDtos.java | 13 +--- .../xmi/observe-services-dto-common.properties | 1 - .../src/main/xmi/observe-services-dto-common.zargo | Bin 42827 -> 42562 bytes 7 files changed, 107 insertions(+), 88 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 6325778..219e9b3 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 @@ -24,9 +24,8 @@ package fr.ird.observe.services.dto; import com.google.common.base.MoreObjects; import com.google.common.base.Optional; +import com.google.common.base.Predicate; import com.google.common.collect.Iterables; -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; public class FormDto<R extends IdDto> extends AbstractFormDto { @@ -44,6 +43,7 @@ public class FormDto<R extends IdDto> extends AbstractFormDto { * Le nom de la requète à utiliser pour récupérer les ensembles de référentiels utilisés par ce formulaire. */ protected String referentialReferenceSetRequestName; + /** * Le nom de la requète à utiliser pour récupérer les ensembles de données utilisés par ce formulaire. */ @@ -86,28 +86,33 @@ public class FormDto<R extends IdDto> extends AbstractFormDto { @Deprecated public <D extends IdDto> ReferenceSetDto<D> getReferenceSetDto(Class<D> type) { - Optional<ReferenceSetDto> referenceSetDto = Iterables.tryFind(getLabels(), ReferenceSetDtos.newTypePredicate(type)); - if (!referenceSetDto.isPresent()) { - throw new ReferenceSetNotFoundException(this, type, null); - } - return referenceSetDto.get(); + return getReferenceSetDto(type, null); } - @Deprecated public <D extends IdDto> ReferenceSetDto<D> getReferenceSetDto(Class<D> type, String name) { - Optional<ReferenceSetDto> referenceSetDto = Iterables.tryFind(getLabels(), ReferenceSetDtos.newTypeNamePredicate(type, name)); + Optional<ReferenceSetDto<D>> referenceSetDto = tryToGetReferenceSetDto(type, name); if (!referenceSetDto.isPresent()) { - referenceSetDto = Iterables.tryFind(getLabels(), ReferenceSetDtos.newTypeNamePredicate(type, null)); + throw new ReferenceSetNotFoundException(this, type, name); } + return referenceSetDto.get(); + + } + + public <D extends IdDto> Optional<ReferenceSetDto<D>> tryToGetReferenceSetDto(Class<D> type, String name) { + + Predicate<ReferenceSetDto<D>> predicate = ReferenceSetDtos.newTypeNamePredicate(type, name); + Optional<ReferenceSetDto<D>> referenceSetDto = Iterables.tryFind(getLabels(), (Predicate) predicate); + if (!referenceSetDto.isPresent()) { - throw new ReferenceSetNotFoundException(this, type, name); + predicate = ReferenceSetDtos.newTypeNamePredicate(type, null); + referenceSetDto = Iterables.tryFind(getLabels(), (Predicate) predicate); } - return referenceSetDto.get(); + return referenceSetDto; } @@ -122,7 +127,6 @@ public class FormDto<R extends IdDto> extends AbstractFormDto { } - @Deprecated public <D extends IdDto> ReferenceDto<D> getReferenceById(Class<D> type, String name, String id) { ReferenceSetDto<D> referenceSetDto = getReferenceSetDto(type, name); @@ -131,15 +135,6 @@ public class FormDto<R extends IdDto> extends AbstractFormDto { } - @Deprecated - public <D extends ReferentialDto> ReferentialReferenceDto<D> getReferentialReferenceById(Class<D> type, String id) { - - ReferenceSetDto<D> referenceSetDto = getReferenceSetDto(type); - ReferentialReferenceDto<D> referenceDto = (ReferentialReferenceDto<D>) referenceSetDto.getById(id); - return referenceDto; - - } - @Override public String toString() { return MoreObjects.toStringHelper(this) diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceSetDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceSetDto.java index 1e9f5dc..ad27724 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceSetDto.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceSetDto.java @@ -25,14 +25,21 @@ package fr.ird.observe.services.dto; import com.google.common.base.MoreObjects; import com.google.common.collect.Iterables; -import java.util.Set; +import java.util.Collection; +import java.util.LinkedHashSet; public class ReferenceSetDto<R extends IdDto> extends AbstractReferenceSetDto { private static final long serialVersionUID = 1L; + public static final String PROPERTY_TYPE = "type"; + + public static final String PROPERTY_REFERENCE = "reference"; + protected final Class<R> type; + protected LinkedHashSet<ReferenceDto<R>> reference; + public ReferenceSetDto(Class<R> type) { this.type = type; } @@ -42,8 +49,7 @@ public class ReferenceSetDto<R extends IdDto> extends AbstractReferenceSetDto { } public ReferenceDto<R> getById(String id) { - Set<ReferenceDto<R>> references = (Set) getReference(); - ReferenceDto<R> referenceDto = Iterables.find(references, IdDtos.newIdPredicate(id)); + ReferenceDto<R> referenceDto = Iterables.find(getReference(), IdDtos.newIdPredicate(id)); return referenceDto; } @@ -55,4 +61,66 @@ public class ReferenceSetDto<R extends IdDto> extends AbstractReferenceSetDto { .add("lastUpdate", lastUpdate) .toString(); } + + public ReferenceDto getReference(int index) { + ReferenceDto o = getChild(reference, index); + return o; + } + + public boolean isReferenceEmpty() { + return reference == null || reference.isEmpty(); + } + + public int sizeReference() { + return reference == null ? 0 : reference.size(); + } + + public void addReference(ReferenceDto<R> reference) { + getReference().add(reference); + firePropertyChange(PROPERTY_REFERENCE, null, reference); + } + + public void addAllReference(Collection<ReferenceDto<R>> reference) { + getReference().addAll(reference); + firePropertyChange(PROPERTY_REFERENCE, null, reference); + } + + public boolean removeReference(ReferenceDto<R> reference) { + boolean removed = getReference().remove(reference); + if (removed) { + firePropertyChange(PROPERTY_REFERENCE, reference, null); + } + return removed; + } + + public boolean removeAllReference(Collection<ReferenceDto<R>> reference) { + boolean removed = getReference().removeAll(reference); + if (removed) { + firePropertyChange(PROPERTY_REFERENCE, reference, null); + } + return removed; + } + + public boolean containsReference(ReferenceDto<R> reference) { + boolean contains = getReference().contains(reference); + return contains; + } + + public boolean containsAllReference(Collection<ReferenceDto<R>> reference) { + boolean contains = getReference().containsAll(reference); + return contains; + } + + public LinkedHashSet<ReferenceDto<R>> getReference() { + if (reference == null) { + reference = new LinkedHashSet<>(); + } + return reference; + } + + public void setReference(LinkedHashSet<ReferenceDto<R>> reference) { + LinkedHashSet<ReferenceDto<R>> oldValue = getReference(); + this.reference = reference; + firePropertyChange(PROPERTY_REFERENCE, oldValue, reference); + } } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceSetDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceSetDtos.java index e4980b1..eb12ec1 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceSetDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceSetDtos.java @@ -22,7 +22,6 @@ package fr.ird.observe.services.dto; * #L% */ -import com.google.common.base.Function; import com.google.common.base.Predicate; import java.util.Date; @@ -31,72 +30,36 @@ import java.util.Objects; public class ReferenceSetDtos extends AbstractReferenceSetDtos { - protected static final Function<ReferenceSetDto, Class> TYPE_FUNCTION = newTypeFunction(); - - public static <D extends IdDto> ReferenceSetDto<D> newEmptyReferenceSetDto(Class<D> type) { - return newEmptyReferenceSetDto(type, null); - } - public static <D extends IdDto> ReferenceSetDto<D> newEmptyReferenceSetDto(Class<D> type, String name) { ReferenceSetDto<D> dto = new ReferenceSetDto<>(type); dto.setName(name); - dto.setReference(new LinkedHashSet<ReferenceDto>()); + dto.setReference(new LinkedHashSet<ReferenceDto<D>>()); return dto; } - public static <D extends IdDto, R extends ReferenceDto<D>> ReferenceSetDto<D> newReferenceSetDto( - Class<D> type, - LinkedHashSet<R> labels, - Date lastUpdate) { + public static <D extends IdDto> ReferenceSetDto<D> newReferenceSetDto(Class<D> type, + LinkedHashSet<ReferenceDto<D>> labels, + Date lastUpdate) { return newReferenceSetDto(type, null, labels, lastUpdate); } - public static <D extends IdDto, R extends ReferenceDto<D>> ReferenceSetDto<D> newReferenceSetDto( - Class<D> type, - String name, - LinkedHashSet<R> labels, - Date lastUpdate) { + public static <D extends IdDto> ReferenceSetDto<D> newReferenceSetDto(Class<D> type, + String name, + LinkedHashSet<ReferenceDto<D>> labels, + Date lastUpdate) { ReferenceSetDto<D> dto = new ReferenceSetDto<>(type); dto.setName(name); - dto.setReference((LinkedHashSet) labels); + dto.setReference(labels); dto.setLastUpdate(lastUpdate); return dto; } - public static <BeanType extends ReferenceSetDto> Function<BeanType, Class> getTypeFunction() { - return (Function<BeanType, Class>) TYPE_FUNCTION; - - } - - public static <BeanType extends ReferenceSetDto> Function<BeanType, Class> newTypeFunction() { - return new Function<BeanType, Class>() { - - @Override - public Class apply(BeanType input) { - return input.getType(); - } - }; - - } - - public static <D extends IdDto, BeanType extends ReferenceSetDto> Predicate<BeanType> newTypePredicate(final Class<D> type) { - return new Predicate<BeanType>() { - - @Override - public boolean apply(BeanType input) { - return Objects.equals(type, input.getType()); - } - }; - - } - - public static <D extends IdDto, BeanType extends ReferenceSetDto> Predicate<BeanType> newTypeNamePredicate(final Class<D> type, final String name) { - return new Predicate<BeanType>() { + public static <D extends IdDto> Predicate<ReferenceSetDto<D>> newTypeNamePredicate(final Class<D> type, final String name) { + return new Predicate<ReferenceSetDto<D>>() { @Override - public boolean apply(BeanType input) { - return Objects.equals(type, input.getType()) - && Objects.equals(name, input.getName()); + public boolean apply(ReferenceSetDto<D> input) { + return Objects.equals(type, input.getType()) && Objects.equals(name, input.getName()); } }; diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/reference/definition/ObserveReferenceSetRequestKeyDefinition.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/reference/definition/ObserveReferenceSetRequestKeyDefinition.java index f5156b4..b086c7e 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/reference/definition/ObserveReferenceSetRequestKeyDefinition.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/reference/definition/ObserveReferenceSetRequestKeyDefinition.java @@ -4,6 +4,7 @@ import com.google.common.base.MoreObjects; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.referential.ReferentialDto; +import java.io.Serializable; import java.util.Objects; /** @@ -11,7 +12,9 @@ import java.util.Objects; * * @author Tony Chemit - chemit@codelutin.com */ -public class ObserveReferenceSetRequestKeyDefinition<D extends IdDto> { +public class ObserveReferenceSetRequestKeyDefinition<D extends IdDto> implements Serializable { + + private static final long serialVersionUID = 1L; private final Class<? extends IdDto> parentType; diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java index 03c2e3c..547b27b 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java @@ -10,16 +10,7 @@ import java.util.ArrayList; public class ProgramDtos extends AbstractProgramDtos { - - public static boolean isProgramLongLine(ProgramDto programDto) { - return GearType.longline.equals(programDto.getGearType()); - } - - public static boolean isProgramSeine(ProgramDto programDto) { - return GearType.seine.equals(programDto.getGearType()); - } - - public static boolean isProgramLongline(ReferenceDto<ProgramDto> programDtoRef) { +public static boolean isProgramLongline(ReferenceDto<ProgramDto> programDtoRef) { boolean result = false; @@ -63,7 +54,7 @@ public class ProgramDtos extends AbstractProgramDtos { return reference; } - public static Iterable<ReferenceDto> filterReferencesByGearType(Iterable<ReferenceDto> programs, GearType gearType) { + public static Iterable<ReferenceDto<ProgramDto>> filterReferencesByGearType(Iterable<ReferenceDto<ProgramDto>> programs, GearType gearType) { return Iterables.filter(programs, ReferenceDtos.newLabelValuePredicate(ProgramDto.PROPERTY_GEAR_TYPE, gearType)); } diff --git a/observe-services-model/src/main/xmi/observe-services-dto-common.properties b/observe-services-model/src/main/xmi/observe-services-dto-common.properties index a7eba67..87eec39 100644 --- a/observe-services-model/src/main/xmi/observe-services-dto-common.properties +++ b/observe-services-model/src/main/xmi/observe-services-dto-common.properties @@ -31,7 +31,6 @@ fr.ird.observe.services.dto.referential.Gear.attribute.gearCaracteristic.stereot fr.ird.observe.services.dto.referential.GearCaracteristic.attribute.gearCaracteristicType.stereotype=unique,ordered fr.ird.observe.services.dto.referential.Species.attribute.ocean.stereotype=ordered fr.ird.observe.services.dto.referential.SpeciesList.attribute.species.stereotype=ordered -fr.ird.observe.services.dto.ReferenceSet.attribute.reference.stereotype=unique,ordered fr.ird.observe.services.dto.TripMap.attribute.points.stereotype=unique,ordered fr.ird.observe.services.dto.referential.Vessel.attribute.flagCountry.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.referential.Country diff --git a/observe-services-model/src/main/xmi/observe-services-dto-common.zargo b/observe-services-model/src/main/xmi/observe-services-dto-common.zargo index 2919165..e5d5804 100644 Binary files a/observe-services-model/src/main/xmi/observe-services-dto-common.zargo and b/observe-services-model/src/main/xmi/observe-services-dto-common.zargo differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.