This is an automated email from the git hooks/post-receive script. New commit to branch feature/7458-RouteService in repository observe. See http://git.codelutin.com/observe.git commit 61f956e24bbecf80fad6cd40478bef27f634f8cf Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Aug 26 11:26:26 2015 +0200 RouteService (impl + test) (refs #7458). --- .../services/service/seine/RouteService.java | 8 +- .../src/main/xmi/observe-services-dto-seine.zargo | Bin 55273 -> 55794 bytes .../services/dto/ObserveDtosInitializer.java | 5 + .../services/service/seine/RouteServiceTopia.java | 138 +++++++++++++++++++++ .../services/service/seine/RouteServiceTest.java | 57 +++++++++ 5 files changed, 204 insertions(+), 4 deletions(-) diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/RouteService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/RouteService.java index e1e595c..9a80e93 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/RouteService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/RouteService.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.RouteDto; +import fr.ird.observe.services.dto.seine.RouteStubDto; import fr.ird.observe.services.spi.Write; import java.util.List; @@ -13,16 +13,16 @@ import java.util.List; */ public interface RouteService extends ObserveService { - FormDto<RouteDto> loadToRead(String routeId); + List<RouteStubDto> getRouteByTripSeine(String tripSeineId); - List<ReferenceDto<RouteDto>> getRouteByTripSeine(String tripSeineId); + FormDto<RouteDto> loadToRead(String routeId); FormDto<RouteDto> loadToEdit(String routeId); FormDto<RouteDto> preCreate(String tripSeineId); @Write - String save(FormDto<RouteDto> form); + String save(String tripSeineId, FormDto<RouteDto> form); @Write void delete(String tripSeineId, String routeId); diff --git a/observe-services-model/src/main/xmi/observe-services-dto-seine.zargo b/observe-services-model/src/main/xmi/observe-services-dto-seine.zargo index 3c802d5..f8651f7 100644 Binary files a/observe-services-model/src/main/xmi/observe-services-dto-seine.zargo and b/observe-services-model/src/main/xmi/observe-services-dto-seine.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 680574b..22201bb 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 @@ -1387,6 +1387,11 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { } @Override + public void initRouteStubDto() { + // la logique de copie est à ecrire directement dans le service + } + + @Override public void initSchoolEstimateDto() { registerMainDto(SchoolEstimateDto.class, SchoolEstimate.class, SchoolEstimateDto.PROPERTY_TOTAL_WEIGHT, diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/RouteServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/RouteServiceTopia.java new file mode 100644 index 0000000..123bba5 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/RouteServiceTopia.java @@ -0,0 +1,138 @@ +package fr.ird.observe.services.service.seine; + +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.seine.RouteDto; +import fr.ird.observe.services.dto.seine.RouteStubDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.service.DataNotFoundException; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.nuiton.util.DateUtil; + +import java.util.Date; +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class RouteServiceTopia extends ObserveServiceTopia implements RouteService{ + + @Override + public List<RouteStubDto> getRouteByTripSeine(String tripSeineId) { + + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); + + List<RouteStubDto> stubs = Lists.newLinkedList(); + + for (Route route : tripSeine.getRoute()) { + + RouteStubDto stub = new RouteStubDto(); + stub.setId(route.getTopiaId()); + stub.setDate(route.getDate()); + + stubs.add(stub); + + } + + return stubs; + + } + + @Override + public FormDto<RouteDto> loadToRead(String routeId) { + + Route route = loadEntity(RouteDto.class, Route.class, routeId); + + FormDto<RouteDto> form = entityToReadFormDto(RouteDto.class, Route.class, route); + + return form; + } + + @Override + public FormDto<RouteDto> loadToEdit(String routeId) { + + Route route = loadEntity(RouteDto.class, Route.class, routeId); + + FormDto<RouteDto> form = entityToEditFormDto(RouteDto.class, Route.class, route); + + return form; + } + + @Override + public FormDto<RouteDto> preCreate(String tripSeineId) { + + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); + + Route preCreated = newEntity(Route.class); + + Route lastRoute = Iterables.getLast(tripSeine.getRoute(), null); + + Date date; + if (lastRoute == null) { + + // aucune route defini, on utilise la date courante + date = now(); + + } else { + + // une route precedente est definie sur la maree + // le jour d'observation est le jour suivant celui de la + // derniere route + date = DateUtils.addDays(lastRoute.getDate(), 1); + + // le loch du matin est le loch du soir de la derniere route + preCreated.setStartLogValue(lastRoute.getEndLogValue()); + } + + preCreated.setDate(DateUtil.getDay(date)); + + FormDto<RouteDto> form = entityToEditFormDto(RouteDto.class, Route.class, preCreated); + + return form; + } + + @Override + public String save(String tripSeineId, FormDto<RouteDto> form) { + + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); + + RouteDto routeDto = form.getForm(); + + Route route = dtoToEntity(RouteDto.class, Route.class, routeDto); + + route = saveEntity(Route.class, route); + + if (StringUtils.isBlank(routeDto.getId())) { + + tripSeine.addRoute(route); + + saveEntity(TripSeine.class, tripSeine); + + } + + return route.getTopiaId(); + } + + @Override + public void delete(String tripSeineId, String routeId) { + + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); + + Route route = loadEntity(RouteDto.class, Route.class, routeId); + + if (! tripSeine.containsRoute(route)) { + + throw new DataNotFoundException(RouteDto.class, routeId); + + } + + tripSeine.removeRoute(route); + + + } +} diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/RouteServiceTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/RouteServiceTest.java new file mode 100644 index 0000000..a945090 --- /dev/null +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/RouteServiceTest.java @@ -0,0 +1,57 @@ +package fr.ird.observe.services.service.seine; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.seine.RouteDto; +import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.util.DateUtil; + +import java.util.Set; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class RouteServiceTest extends AbstractServiceTopiaTest{ + + protected RouteService service; + + @Override + public Set<String> getTestNamesChangeDataBase() { + return ImmutableSet.of(); + } + + @Override + public String getScriptName() { + return "dataForTestSeine"; + } + + @Override + public void setUp() throws Exception { + super.setUp(); + + service = newService(RouteService.class); + + } + + @Test + public void preCreateTest() { + + FormDto<RouteDto> formDto = service.preCreate(TRIP_SEINE_ID_1); + + Assert.assertNotNull(formDto); + RouteDto routeDto = formDto.getForm(); + + Assert.assertNotNull(routeDto); + + Assert.assertEquals(0, DateUtil.createDate(28, 2, 2013).compareTo(routeDto.getDate())); + Assert.assertEquals(new Float(5953.03), routeDto.getStartLogValue()); + Assert.assertNull(routeDto.getEndLogValue()); + Assert.assertNull(routeDto.getComment()); + + + + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.