branch feature/7458-RouteService created (now 61f956e)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7458-RouteService in repository observe. See http://git.codelutin.com/observe.git at 61f956e RouteService (impl + test) (refs #7458). This branch includes the following new commits: new 61f956e RouteService (impl + test) (refs #7458). The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 61f956e24bbecf80fad6cd40478bef27f634f8cf Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Aug 26 11:26:26 2015 +0200 RouteService (impl + test) (refs #7458). -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
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>.
participants (1)
-
codelutin.com scm