This is an automated email from the git hooks/post-receive script. New commit to branch feature/7706 in repository observe. See http://git.codelutin.com/observe.git commit af75b527a7e891fa7a2c0abeb1c6e6ec28750a9f Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Nov 10 09:19:56 2015 +0100 Opération de péche palangre : ajout des autres operations de péches pour la validation de l'unicité de l'id métier et du numéro (refs 7706) --- .../dto/SetLonglineUniqueHomeIdDtoValidator.java | 50 +++++------------- .../dto/SetLonglineUniqueNumberDtoValidator.java | 57 ++++++++------------- .../xmi/observe-services-dto-longline.properties | 3 ++ .../main/xmi/observe-services-dto-longline.zargo | Bin 65285 -> 66568 bytes .../services/dto/ObserveDtosInitializer.java | 5 ++ .../service/longline/SetLonglineServiceTopia.java | 44 ++++++++++++++++ 6 files changed, 86 insertions(+), 73 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/SetLonglineUniqueHomeIdDtoValidator.java b/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/SetLonglineUniqueHomeIdDtoValidator.java index ff167d3..f79007a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/SetLonglineUniqueHomeIdDtoValidator.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/SetLonglineUniqueHomeIdDtoValidator.java @@ -22,15 +22,18 @@ package fr.ird.observe.validation.validator.dto; * #L% */ -import com.google.common.base.Objects; +import com.google.common.base.Optional; +import com.google.common.collect.Iterables; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.validator.ValidationException; import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SetLonglineDto; -import fr.ird.observe.services.dto.longline.TripLonglineActivityDto; -import fr.ird.observe.services.dto.longline.TripLonglineDto; - -import java.util.Set; +import fr.ird.observe.services.dto.longline.SetLonglineStubDto; +import fr.ird.observe.services.dto.longline.SetLonglineStubDtos; +import org.nuiton.decorator.Decorator; /** * Created on 12/7/14. @@ -54,46 +57,21 @@ public class SetLonglineUniqueHomeIdDtoValidator extends FieldValidatorSupport { if (homeId != null) { - String setLonglineTopiaId = setLongline.getId(); - - TripLonglineDto tripLongline = (TripLonglineDto) stack.findValue("currentTripLongline"); - - Set<TripLonglineActivityDto> activityLonglines = tripLongline.getActivityLongline(); - - boolean notValid = false; - - for (TripLonglineActivityDto activityLongline : activityLonglines) { - - // FIXME migration client-serveur -// SetLonglineDto setLongline1 = activityLongline.getSetLongline(); - SetLonglineDto setLongline1 = null; - - if (setLongline1 != null - && !Objects.equal(setLonglineTopiaId, setLongline1.getId()) - && homeId.equals(setLongline1.getHomeId())) { + Optional<SetLonglineStubDto> sameHomeIdSetLonglineOptional = Iterables.tryFind(setLongline.getOtherSets(), SetLonglineStubDtos.newHomeIdPredicate(homeId)); - notValid = true; + if (sameHomeIdSetLonglineOptional.isPresent()) { - //FIXME -// DecoratorService provider = ObserveServiceHelper.getDecoratorService(); -// Decorator<?> decorator = provider.getDecorator(activityLongline); + ReferenceDto<ActivityLonglineDto> activityLonglineRef = sameHomeIdSetLonglineOptional.get().getActivityLongline(); - stack.set("duplicatedActivity", activityLongline); + Decorator<ReferenceDto> decorator = ObserveSwingApplicationContext.get().getDecorator(ReferenceDto.class, ActivityLonglineDto.class.getSimpleName()); - break; + stack.set("duplicatedActivity", decorator.toString(activityLonglineRef)); - } - - } - - if (notValid) { - - // vitesse trop grande addFieldError(getFieldName(), object); + } } - } @Override diff --git a/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/SetLonglineUniqueNumberDtoValidator.java b/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/SetLonglineUniqueNumberDtoValidator.java index fb59e56..8b1502b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/SetLonglineUniqueNumberDtoValidator.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/SetLonglineUniqueNumberDtoValidator.java @@ -22,11 +22,18 @@ package fr.ird.observe.validation.validator.dto; * #L% */ +import com.google.common.base.Optional; +import com.google.common.collect.Iterables; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.validator.ValidationException; import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SetLonglineDto; -import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.longline.SetLonglineStubDto; +import fr.ird.observe.services.dto.longline.SetLonglineStubDtos; +import org.nuiton.decorator.Decorator; /** * Created on 12/7/14. @@ -50,45 +57,21 @@ public class SetLonglineUniqueNumberDtoValidator extends FieldValidatorSupport { if (number != null) { - String setLonglineTopiaId = setLongline.getId(); - - TripLonglineDto tripLongline = (TripLonglineDto) stack.findValue("currentTripLongline"); - - boolean notValid = false; - - // FIXME migration client-serveur -// Set<ActivityLonglineDto> activityLonglines = tripLongline.getActivityLongline(); -// -// for (ActivityLonglineDto activityLongline : activityLonglines) { -// -// SetLonglineDto setLongline1 = activityLongline.getSetLongline(); -// -// -// if (setLongline1 != null -// && !Objects.equal(setLonglineTopiaId, setLongline1.getId()) -// && number.equals(setLongline1.getNumber())) { -// -// notValid = true; -// -// //FIXME -//// DecoratorService provider = ObserveServiceHelper.getDecoratorService(); -//// Decorator<?> decorator = provider.getDecorator(activityLongline); -// -// stack.set("duplicatedActivity", activityLongline); -// -// break; -// -// } -// -// } - - if (notValid) { - - // vitesse trop grande + Optional<SetLonglineStubDto> sameNumberSetLonglineOptional = Iterables.tryFind(setLongline.getOtherSets(), SetLonglineStubDtos.newNumberPredicate(number)); + + if (sameNumberSetLonglineOptional.isPresent()) { + + ReferenceDto<ActivityLonglineDto> activityLonglineRef = sameNumberSetLonglineOptional.get().getActivityLongline(); + + Decorator<ReferenceDto> decorator = ObserveSwingApplicationContext.get().getDecorator(ReferenceDto.class, ActivityLonglineDto.class.getSimpleName()); + + stack.set("duplicatedActivity", decorator.toString(activityLonglineRef)); + addFieldError(getFieldName(), object); + } - } + } } diff --git a/observe-services-model/src/main/xmi/observe-services-dto-longline.properties b/observe-services-model/src/main/xmi/observe-services-dto-longline.properties index 3096cbf..0aed190 100644 --- a/observe-services-model/src/main/xmi/observe-services-dto-longline.properties +++ b/observe-services-model/src/main/xmi/observe-services-dto-longline.properties @@ -32,6 +32,8 @@ fr.ird.observe.services.dto.longline.SetLongline.attribute.lineType.tagValue.sim fr.ird.observe.services.dto.longline.SetLongline.attribute.lightsticksType.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.referential.longline.LightsticksTypeDto fr.ird.observe.services.dto.longline.SetLongline.attribute.lightsticksColor.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.referential.longline.LightsticksColorDto +fr.ird.observe.services.dto.longline.SetLonglineStub.attribute.activityLongline.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.longline.ActivityLonglineDto + fr.ird.observe.services.dto.longline.HooksComposition.attribute.hookType.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.referential.longline.HookTypeDto fr.ird.observe.services.dto.longline.HooksComposition.attribute.hookSize.tagValue.simpleBeanWithNoInterfaceAttributeGeneric=fr.ird.observe.services.dto.referential.longline.HookSizeDto @@ -107,4 +109,5 @@ fr.ird.observe.services.dto.longline.Basket.attribute.branchline.stereotype=uniq fr.ird.observe.services.dto.longline.GearUseFeaturesLongline.attribute.gearUseFeaturesMeasurement.stereotype=unique,ordered fr.ird.observe.services.dto.longline.TripLonglineGearUse.attribute.gearUseFeaturesLongline.stereotype=unique,ordered fr.ird.observe.services.dto.longline.TripLongline.attribute.activityLongline.stereotype=unique,ordered +fr.ird.observe.services.dto.longline.SetLonglineStub.attribute.activityLongline.stereotype=unique diff --git a/observe-services-model/src/main/xmi/observe-services-dto-longline.zargo b/observe-services-model/src/main/xmi/observe-services-dto-longline.zargo index df6798f..361b3a3 100644 Binary files a/observe-services-model/src/main/xmi/observe-services-dto-longline.zargo and b/observe-services-model/src/main/xmi/observe-services-dto-longline.zargo differ diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java b/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java index 96eecd4..512b690 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java @@ -709,6 +709,11 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { } @Override + public void initSetLonglineStubDto() { + // la logique de copie est à ecrire directement dans le service + } + + @Override public void initSetLonglineTdrDto() { registerDto(SetLonglineTdrDto.class, SetLongline.class, SetLonglineTdrDto.PROPERTY_TDR, diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/SetLonglineServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/SetLonglineServiceTopia.java index 1e5cdb3..d87a5d3 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/SetLonglineServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/SetLonglineServiceTopia.java @@ -22,19 +22,25 @@ package fr.ird.observe.services.service.longline; * #L% */ +import com.google.common.collect.Sets; import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.entities.longline.ActivityLonglineTopiaDao; import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.longline.TripLonglineTopiaDao; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SetLonglineDto; +import fr.ird.observe.services.dto.longline.SetLonglineStubDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.result.SaveResultDtos; import fr.ird.observe.services.service.DataNotFoundException; import org.apache.commons.lang3.time.DateUtils; import java.util.Date; +import java.util.Set; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -74,6 +80,12 @@ public class SetLonglineServiceTopia extends ObserveServiceTopia implements SetL FormDto<SetLonglineDto> form = entityToEditFormDto(SetLonglineDto.class, SetLongline.class, setLongline); + ActivityLonglineTopiaDao activityLonglineDao = getTopiaPersistenceContext().getActivityLonglineDao(); + + ActivityLongline activityLongline = activityLonglineDao.forSetLonglineEquals(setLongline).findUnique(); + + form.getForm().setOtherSets(getOtherSetLonglineDtos(activityLongline, setLongline)); + return form; } @@ -105,6 +117,8 @@ public class SetLonglineServiceTopia extends ObserveServiceTopia implements SetL FormDto<SetLonglineDto> form = entityToEditFormDto(SetLonglineDto.class, SetLongline.class, preCreated); + form.getForm().setOtherSets(getOtherSetLonglineDtos(activityLongline, preCreated)); + return form; } @@ -151,4 +165,34 @@ public class SetLonglineServiceTopia extends ObserveServiceTopia implements SetL public boolean exists(String id) { return existsEntity(SetLongline.class, id); } + + protected Set<SetLonglineStubDto> getOtherSetLonglineDtos(ActivityLongline currentActivityLongline, SetLongline setLongline) { + + Set<SetLonglineStubDto> otherSetLonglineDtos = Sets.newHashSet(); + + TripLonglineTopiaDao tripLonglineDao = getTopiaPersistenceContext().getTripLonglineDao(); + + TripLongline tripLongline = tripLonglineDao.forActivityLonglineContains(currentActivityLongline).findUnique(); + + for (ActivityLongline activityLongline : tripLongline.getActivityLongline()) { + + SetLongline otherSetLongline = activityLongline.getSetLongline(); + + if (otherSetLongline != null && ! setLongline.equals(otherSetLongline)) { + + SetLonglineStubDto otherSetDto = new SetLonglineStubDto(); + otherSetDto.setId(otherSetLongline.getTopiaId()); + otherSetDto.setHomeId(otherSetLongline.getHomeId()); + otherSetDto.setNumber(otherSetLongline.getNumber()); + otherSetDto.setActivityLongline(entityToReferenceDto(activityLongline)); + otherSetLonglineDtos.add(otherSetDto); + + } + + } + + return otherSetLonglineDtos; + + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.