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 7edefc8cae466bfa52546fb3724d7b590d287d12 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Aug 26 13:48:07 2015 +0200 implantation ActivitySeineService (refs #7458). --- .../service/seine/ActivitySeineService.java | 8 +- .../service/seine/ActivitySeineServiceTopia.java | 130 +++++++++++++++++++-- 2 files changed, 125 insertions(+), 13 deletions(-) diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java index 26368d5..c7f60ae 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java @@ -2,8 +2,8 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.FormDto; -import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; +import fr.ird.observe.services.dto.seine.ActivitySeineStubDto; import fr.ird.observe.services.spi.Write; import java.util.List; @@ -13,16 +13,16 @@ import java.util.List; */ public interface ActivitySeineService extends ObserveService { - FormDto<ActivitySeineDto> loadToRead(String activitySeineId); + List<ActivitySeineStubDto> getActivitySeineByRoute(String routeId); - List<ReferenceDto<ActivitySeineDto>> getActivitySeineByRoute(String routeId); + FormDto<ActivitySeineDto> loadToRead(String activitySeineId); FormDto<ActivitySeineDto> loadToEdit(String activitySeineId); FormDto<ActivitySeineDto> preCreate(String routeId); @Write - String save(FormDto<ActivitySeineDto> form); + String save(String routeId, FormDto<ActivitySeineDto> form); @Write void delete(String routeId, String activitySeineId); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java index 048309a..d17cb27 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java @@ -1,10 +1,22 @@ package fr.ird.observe.services.service.seine; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import fr.ird.observe.entities.constants.ReferenceLocale; +import fr.ird.observe.entities.referentiel.FpaZone; +import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.entities.seine.Route; 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.seine.ActivitySeineDto; +import fr.ird.observe.services.dto.seine.ActivitySeineStubDto; +import fr.ird.observe.services.dto.seine.RouteDto; +import fr.ird.observe.services.service.DataNotFoundException; +import fr.ird.type.CoordinateHelper; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.util.DateUtil; +import java.util.Date; import java.util.List; /** @@ -14,32 +26,132 @@ public class ActivitySeineServiceTopia extends ObserveServiceTopia implements Ac @Override - public FormDto<ActivitySeineDto> loadToRead(String activitySeineId) { - return null; + public List<ActivitySeineStubDto> getActivitySeineByRoute(String routeId) { + + ReferenceLocale referenceLocale = getReferenceLocale(); + + Route route = loadEntity(RouteDto.class, Route.class, routeId); + + List<ActivitySeineStubDto> stubs = Lists.newLinkedList(); + + for (ActivitySeine activitySeine : route.getActivitySeine()) { + + ActivitySeineStubDto stub = new ActivitySeineStubDto(); + stub.setId(activitySeine.getTopiaId()); + stub.setTime(activitySeine.getTime()); + stub.setVesselActivitySeineLabel(referenceLocale.getLabel(activitySeine.getVesselActivitySeine())); + stub.setHasSetSeine(activitySeine.getSetSeine() != null); + + } + + return stubs; } @Override - public List<ReferenceDto<ActivitySeineDto>> getActivitySeineByRoute(String routeId) { - return null; + public FormDto<ActivitySeineDto> loadToRead(String activitySeineId) { + + ActivitySeine activitySeine = loadEntity(ActivitySeineDto.class, ActivitySeine.class, activitySeineId); + + FormDto<ActivitySeineDto> form = entityToReadFormDto(ActivitySeineDto.class, ActivitySeine.class, activitySeine); + + return form; } @Override public FormDto<ActivitySeineDto> loadToEdit(String activitySeineId) { - return null; + + ActivitySeine activitySeine = loadEntity(ActivitySeineDto.class, ActivitySeine.class, activitySeineId); + + FormDto<ActivitySeineDto> form = entityToEditFormDto(ActivitySeineDto.class, ActivitySeine.class, activitySeine); + + return form; } @Override public FormDto<ActivitySeineDto> preCreate(String routeId) { - return null; + + Route route = loadEntity(RouteDto.class, Route.class, routeId); + + ActivitySeine preCreated = newEntity(ActivitySeine.class); + + ActivitySeine lastActivitySeine = Iterables.getLast(route.getActivitySeine(), null); + + Date time; + + FpaZone currentFpaZone = null; + + if (lastActivitySeine == null) { + + // première activité, on utilise l'heure courante + time = serviceContext.now(); + + } else { + + // on recupère le quadrant de cette activity + // et on l'affecte à la nouvelle activity + Integer quadrant = CoordinateHelper.getQuadrant( + lastActivitySeine.getLongitude(), + lastActivitySeine.getLatitude()); + + if (quadrant != null) { + + preCreated.setQuadrant(quadrant); + + } + + // on reprend l'heure de la dernière activité + time = lastActivitySeine.getTime(); + + // utilisation des zones fpa de la dernière activité + currentFpaZone = lastActivitySeine.getNextFpaZone(); + if (currentFpaZone == null) { + currentFpaZone = lastActivitySeine.getCurrentFpaZone(); + } + + } + + preCreated.setTime(DateUtil.getTime(time, false, false)); + preCreated.setCurrentFpaZone(currentFpaZone); + + FormDto<ActivitySeineDto> form = entityToEditFormDto(ActivitySeineDto.class, ActivitySeine.class, preCreated); + + return form; } @Override - public String save(FormDto<ActivitySeineDto> form) { - return null; + public String save(String routeId, FormDto<ActivitySeineDto> form) { + + Route route = loadEntity(RouteDto.class, Route.class, routeId); + + ActivitySeineDto activitySeineDto = form.getForm(); + + ActivitySeine activitySeine = dtoToEntity(ActivitySeineDto.class, ActivitySeine.class, activitySeineDto); + + activitySeine = saveEntity(ActivitySeine.class, activitySeine); + + if (StringUtils.isBlank(activitySeineDto.getId())) { + + route.addActivitySeine(activitySeine); + + saveEntity(Route.class, route); + + } + + return activitySeine.getTopiaId(); } @Override public void delete(String routeId, String activitySeineId) { + Route route = loadEntity(RouteDto.class, Route.class, routeId); + + ActivitySeine activitySeine = loadEntity(ActivitySeineDto.class, ActivitySeine.class, activitySeineId); + + if (! route.containsActivitySeine(activitySeine)) { + throw new DataNotFoundException(ActivitySeineDto.class, activitySeineId); + } + + route.removeActivitySeine(activitySeine); + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.