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 202e9253993e0f1a4371d606c05a4bd54aa43ec3 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu Aug 27 11:19:47 2015 +0200 implantation ActivityLonglineService (refs #7458). --- .../service/longline/ActivityLonglineService.java | 29 ++++ .../main/xmi/observe-services-dto-longline.zargo | Bin 58090 -> 59030 bytes .../services/dto/ObserveDtosInitializer.java | 25 ++-- .../longline/ActivityLonglineServiceTopia.java | 161 +++++++++++++++++++++ 4 files changed, 205 insertions(+), 10 deletions(-) diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLonglineService.java new file mode 100644 index 0000000..e31042e --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/ActivityLonglineService.java @@ -0,0 +1,29 @@ +package fr.ird.observe.services.service.longline; + +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; +import fr.ird.observe.services.dto.longline.ActivityLonglineStubDto; +import fr.ird.observe.services.spi.Write; + +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public interface ActivityLonglineService extends ObserveService { + + List<ActivityLonglineStubDto> getActivityLonglineByRoute(String tripLonglineId); + + FormDto<ActivityLonglineDto> loadToRead(String activityLonglineId); + + FormDto<ActivityLonglineDto> loadToEdit(String activityLonglineId); + + FormDto<ActivityLonglineDto> preCreate(String tripLonglineId); + + @Write + String save(String tripLonglineId, FormDto<ActivityLonglineDto> form); + + @Write + void delete(String tripLonglineId, String activityLonglineId); +} 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 54f806d..cf43c27 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 96dcef8..f4275b3 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 @@ -344,8 +344,8 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initActivityLonglineEncouterDto() { registerDto(ActivityLonglineEncouterDto.class, ActivityLongline.class, - ActivityLonglineEncouterDto.PROPERTY_COMMENT, - ActivityLonglineEncouterDto.PROPERTY_ENCOUNTER + ActivityLonglineEncouterDto.PROPERTY_COMMENT, + ActivityLonglineEncouterDto.PROPERTY_ENCOUNTER ); } @@ -358,13 +358,18 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { } @Override + public void initActivityLonglineStubDto() { + // la logique de copie est à ecrire directement dans le service + } + + @Override public void initBaitsCompositionDto() { registerMainDto(BaitsCompositionDto.class, BaitsComposition.class, - BaitsCompositionDto.PROPERTY_PROPORTION, - BaitsCompositionDto.PROPERTY_INDIVIDUAL_SIZE, - BaitsCompositionDto.PROPERTY_INDIVIDUAL_WEIGHT, - BaitsCompositionDto.PROPERTY_BAIT_SETTING_STATUS, - BaitsCompositionDto.PROPERTY_BAIT_TYPE + BaitsCompositionDto.PROPERTY_PROPORTION, + BaitsCompositionDto.PROPERTY_INDIVIDUAL_SIZE, + BaitsCompositionDto.PROPERTY_INDIVIDUAL_WEIGHT, + BaitsCompositionDto.PROPERTY_BAIT_SETTING_STATUS, + BaitsCompositionDto.PROPERTY_BAIT_TYPE ); } @@ -564,7 +569,7 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initSetLonglineCatchDto() { registerDto(SetLonglineCatchDto.class, SetLongline.class, - SetLonglineCatchDto.PROPERTY_CATCH_LONGLINE + SetLonglineCatchDto.PROPERTY_CATCH_LONGLINE ); } @@ -596,8 +601,8 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initSizeMeasureDto() { registerMainDto(SizeMeasureDto.class, SizeMeasure.class, - SizeMeasureDto.PROPERTY_SIZE, - SizeMeasureDto.PROPERTY_SIZE_MEASURE_TYPE + SizeMeasureDto.PROPERTY_SIZE, + SizeMeasureDto.PROPERTY_SIZE_MEASURE_TYPE ); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/ActivityLonglineServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/ActivityLonglineServiceTopia.java new file mode 100644 index 0000000..9838f64 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/ActivityLonglineServiceTopia.java @@ -0,0 +1,161 @@ +package fr.ird.observe.services.service.longline; + +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import fr.ird.observe.entities.constants.ReferenceLocale; +import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; +import fr.ird.observe.services.dto.longline.ActivityLonglineStubDto; +import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.service.DataNotFoundException; +import fr.ird.type.CoordinateHelper; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ActivityLonglineServiceTopia extends ObserveServiceTopia implements ActivityLonglineService { + + @Override + public List<ActivityLonglineStubDto> getActivityLonglineByRoute(String tripLonglineId) { + + ReferenceLocale referenceLocale = getReferenceLocale(); + + TripLongline tripLongline = loadEntity(TripLonglineDto.class, TripLongline.class, tripLonglineId); + + List<ActivityLonglineStubDto> stubs = Lists.newLinkedList(); + + for (ActivityLongline activityLongline : tripLongline.getActivityLongline()) { + + ActivityLonglineStubDto stub = new ActivityLonglineStubDto(); + + stub.setId(activityLongline.getTopiaId()); + + stub.setTimeStamp(activityLongline.getTimeStamp()); + + stub.setVesselActivityLonglineLabel(referenceLocale.getLabel(activityLongline.getVesselActivityLongline())); + + stub.setHasSetLongline(activityLongline.getSetLongline() != null); + + } + + return stubs; + + } + + @Override + public FormDto<ActivityLonglineDto> loadToRead(String activityLonglineId) { + + ActivityLongline activityLongline = loadEntity(ActivityLonglineDto.class, ActivityLongline.class, activityLonglineId); + + FormDto<ActivityLonglineDto> form = entityToReadFormDto(ActivityLonglineDto.class, ActivityLongline.class, activityLongline); + + return form; + + } + + @Override + + public FormDto<ActivityLonglineDto> loadToEdit(String activityLonglineId) { + + ActivityLongline activityLongline = loadEntity(ActivityLonglineDto.class, ActivityLongline.class, activityLonglineId); + + FormDto<ActivityLonglineDto> form = entityToEditFormDto(ActivityLonglineDto.class, ActivityLongline.class, activityLongline); + + return form; + + } + + @Override + public FormDto<ActivityLonglineDto> preCreate(String tripLonglineId) { + + TripLongline tripLongline = loadEntity(TripLonglineDto.class, TripLongline.class, tripLonglineId); + + ActivityLongline preCreated = newEntity(ActivityLongline.class); + + ActivityLongline lastActivityLongline = Iterables.getLast(tripLongline.getActivityLongline(), null); + + Date timestamp; + + if (lastActivityLongline == null) { + + // première activité, on utilise la date de début de marée (voir http://forge.codelutin.com/issues/6777) + Calendar calendar = Calendar.getInstance(); + calendar.setTime(tripLongline.getStartDate()); + timestamp = calendar.getTime(); + + } else { + + // on recupère le quadrant de cette activity + // et on l'affecte à la nouvelle activity + Integer quadrant = CoordinateHelper.getQuadrant( + lastActivityLongline.getLongitude(), + lastActivityLongline.getLatitude()); + + if (quadrant != null) { + + preCreated.setQuadrant(quadrant); + + } + + // on reprend la date et l'heure de la dernière activité + timestamp = lastActivityLongline.getTimeStamp(); + + } + + preCreated.setTimeStamp(timestamp); + + FormDto<ActivityLonglineDto> form = entityToEditFormDto(ActivityLonglineDto.class, ActivityLongline.class, preCreated); + + return form; + + } + + @Override + public String save(String tripLonglineId, FormDto<ActivityLonglineDto> form) { + + TripLongline tripLongline = loadEntity(TripLonglineDto.class, TripLongline.class, tripLonglineId); + + ActivityLonglineDto activityLonglineDto = form.getForm(); + + ActivityLongline activityLongline = dtoToEntity(ActivityLonglineDto.class, ActivityLongline.class, activityLonglineDto); + + activityLongline = saveEntity(ActivityLongline.class, activityLongline); + + if (activityLonglineDto.isNotPersisted()) { + + tripLongline.addActivityLongline(activityLongline); + + saveEntity(TripLongline.class, tripLongline); + + } + + return activityLongline.getTopiaId(); + + } + + @Override + public void delete(String tripLonglineId, String activityLonglineId) { + + TripLongline tripLongline = loadEntity(TripLonglineDto.class, TripLongline.class, tripLonglineId); + + ActivityLongline activityLongline = loadEntity(ActivityLonglineDto.class, ActivityLongline.class, activityLonglineId); + + if (! tripLongline.containsActivityLongline(activityLongline)) { + + throw new DataNotFoundException(ActivityLonglineDto.class, activityLonglineId); + + } + + tripLongline.removeActivityLongline(activityLongline); + + } + + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.