This is an automated email from the git hooks/post-receive script. New commit to branch feature/7463 in repository observe. See http://git.codelutin.com/observe.git commit e0429166b47d40d585ab0b612de708189f46a6db Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Sep 4 17:59:25 2015 +0200 test + correction de la communication entre le client REST et le serveur Web (refs #7463) --- .../application/web/ObserveWebMotionFilter.java | 6 +- .../java/fr/ird/observe/services/dto/FormDto.java | 12 +- .../fr/ird/observe/services/dto/ReferenceDto.java | 14 +- .../services/dto/gson/ImmutableListAdapter.java | 25 ++ .../services/dto/gson/ObserveDtoGsonSupplier.java | 8 +- .../services/dto/gson/ReferenceDtoAdapter.java | 84 ++++++ .../dto/gson/ReferentialReferenceDtoAdapter.java | 27 ++ .../dto/referential/ReferentialReferenceDtos.java | 8 + .../src/main/xmi/observe-services-dto-common.zargo | Bin 34074 -> 33879 bytes .../services/ObserveServiceFactoryRest.java | 12 +- .../fr/ird/observe/services/TestClassResource.java | 4 +- .../service/seine/TripSeineServiceTest.java | 329 +++++++++++++++++++++ 12 files changed, 514 insertions(+), 15 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionFilter.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionFilter.java index e823654..4590091 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionFilter.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebMotionFilter.java @@ -90,9 +90,9 @@ public class ObserveWebMotionFilter extends WebMotionFilter implements ObserveDa // Cas où on l'utilisateur n'est pas connecté - String userLogin = getRequestParameterValueOrNull(request, REQUEST_USER_LOGIN); - String userPassword = getRequestParameterValueOrNull(request, REQUEST_USER_PASSWORD); - String userDatabaseName = getRequestParameterValueOrNull(request, REQUEST_USER_DATABASE_NAME); + String userLogin = getRequestHeaderOrParameterValueOrNull(request, REQUEST_USER_LOGIN); + String userPassword = getRequestHeaderOrParameterValueOrNull(request, REQUEST_USER_PASSWORD); + String userDatabaseName = getRequestHeaderOrParameterValueOrNull(request, REQUEST_USER_DATABASE_NAME); if (!(userLogin == null && userPassword == null)) { diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java index 9eec082..949f00a 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java @@ -1,6 +1,5 @@ package fr.ird.observe.services.dto; -import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; @@ -11,19 +10,18 @@ public class FormDto<R extends IdDto> extends AbstractFormDto { protected final Class<R> type; + protected R form; + public FormDto(Class<R> type) { this.type = type; } - @Override - public void setForm(IdDto form) { - Preconditions.checkArgument(form.getClass().isAssignableFrom(type), "Bad form type, should be " + type.getName()); - super.setForm(form); + public void setForm(R form) { + this.form = form; } - @Override public R getForm() { - return (R) super.getForm(); + return form; } public Class<R> getType() { diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java index a9431ea..2c46d65 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ReferenceDto.java @@ -7,6 +7,14 @@ import java.io.Serializable; public class ReferenceDto<D extends IdDto> extends AbstractReferenceDto { + public static final String PROPERTY_TYPE = "type"; + + public static final String PROPERTY_LABEL_PROPERTY_NAMES = "labelPropertyNames"; + + public static final String PROPERTY_LABEL_PROPERTY_VALUES = "labelPropertyValues"; + + public static final String PROPERTY_LABEL_PROPERTY_TYPES = "labelPropertyTypes"; + private static final long serialVersionUID = 1L; protected Class<D> type; @@ -15,14 +23,17 @@ public class ReferenceDto<D extends IdDto> extends AbstractReferenceDto { protected Serializable[] labelPropertyValues; + protected Class[] labelPropertyTypes; + public Class<D> getType() { return type; } - protected void init(Class<D> type, Iterable<String> labelPropertyNames) { + public void init(Class<D> type, Iterable<String> labelPropertyNames) { this.type = type; this.labelPropertyNames = ImmutableList.copyOf(labelPropertyNames); this.labelPropertyValues = new Serializable[this.labelPropertyNames.size()]; + this.labelPropertyTypes = new Class[this.labelPropertyNames.size()]; } public Serializable getPropertyValue(String propertyName) { @@ -38,6 +49,7 @@ public class ReferenceDto<D extends IdDto> extends AbstractReferenceDto { Preconditions.checkNotNull(propertyName, "propertyName parameter can't be null"); int propertyIndex = getPropertyIndex(propertyName); labelPropertyValues[propertyIndex] = propertyValue; + labelPropertyTypes[propertyIndex] = propertyValue.getClass(); } protected int getPropertyIndex(String propertyName) { diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableListAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableListAdapter.java new file mode 100644 index 0000000..12ee4a8 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableListAdapter.java @@ -0,0 +1,25 @@ +package fr.ird.observe.services.dto.gson; + +import com.google.common.collect.ImmutableList; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ImmutableListAdapter implements JsonDeserializer<ImmutableList<?>> { + + @Override + public ImmutableList<?> deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException { + final Type type2 = ParameterizedTypeImpl.make(List.class, ((ParameterizedType) type).getActualTypeArguments(), null); + final List<?> list = context.deserialize(json, type2); + return ImmutableList.copyOf(list); + } +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java index 2e29717..5fc0b5e 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java @@ -1,8 +1,11 @@ package fr.ird.observe.services.dto.gson; import com.google.common.base.Supplier; +import com.google.common.collect.ImmutableList; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; import java.sql.Timestamp; import java.util.Date; @@ -51,7 +54,10 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { gsonBuilder.registerTypeAdapter(Timestamp.class, new DateAdapter()); gsonBuilder.registerTypeAdapter(java.sql.Date.class, new DateAdapter()); gsonBuilder.registerTypeAdapter(Class.class, new ClassAdapter()); - +// gsonBuilder.registerTypeAdapter(IdDto.class, new IdDtoAdapter()); + gsonBuilder.registerTypeAdapter(ImmutableList.class, new ImmutableListAdapter()); + gsonBuilder.registerTypeAdapter(ReferenceDto.class, new ReferenceDtoAdapter()); + gsonBuilder.registerTypeAdapter(ReferentialReferenceDto.class, new ReferentialReferenceDtoAdapter()); } return gsonBuilder; diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReferenceDtoAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReferenceDtoAdapter.java new file mode 100644 index 0000000..2574992 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReferenceDtoAdapter.java @@ -0,0 +1,84 @@ +package fr.ird.observe.services.dto.gson; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceDtos; +import fr.ird.observe.services.dto.constants.ReferenceStatus; +import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; +import fr.ird.observe.services.dto.referential.ReferentialReferenceDtos; + +import java.io.Serializable; +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ReferenceDtoAdapter implements JsonDeserializer<ReferenceDto<?>> { + + @Override + public ReferenceDto<?> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + JsonObject jsonObject = json.getAsJsonObject(); + + Class dtoType = context.deserialize(jsonObject.get(ReferenceDto.PROPERTY_TYPE), Class.class); + String id = context.deserialize(jsonObject.get(ReferenceDto.PROPERTY_ID), String.class); + + JsonArray jsonLabelPropertyNames = jsonObject.get(ReferenceDto.PROPERTY_LABEL_PROPERTY_NAMES).getAsJsonArray(); + JsonArray jsonLabelPropertyValues = jsonObject.get(ReferenceDto.PROPERTY_LABEL_PROPERTY_VALUES).getAsJsonArray(); + JsonArray JsonLabelPropertyTypes = jsonObject.get(ReferenceDto.PROPERTY_LABEL_PROPERTY_TYPES).getAsJsonArray(); + + List<String> labelPropertyNames = Lists.newArrayList(); + Map<String, Serializable> valuesByName = Maps.newHashMap(); + + for (int i = 0; i < jsonLabelPropertyNames.size(); i++) { + String name = jsonLabelPropertyNames.get(i).getAsString(); + Class type = context.deserialize(JsonLabelPropertyTypes.get(i), Class.class); + Serializable value = context.deserialize(jsonLabelPropertyValues.get(i), type); + + labelPropertyNames.add(name); + valuesByName.put(name, value); + } + + ReferenceDto<?> referenceDto; + + if (ReferentialDto.class.isAssignableFrom(dtoType)) { + ReferentialReferenceDto referentialReferenceDto = ReferentialReferenceDtos.newReferentialReferenceDto(dtoType, labelPropertyNames); + + JsonElement jsonElement = jsonObject.get(ReferentialReferenceDto.PROPERTY_NEED_COMMENT); + boolean needComment = jsonElement.getAsBoolean(); + referentialReferenceDto.setNeedComment(needComment); + + ReferenceStatus status = context.deserialize(jsonObject.get(ReferentialReferenceDto.PROPERTY_STATUS), ReferenceStatus.class); + referentialReferenceDto.setStatus(status); + + referenceDto = referentialReferenceDto; + + } else { + referenceDto = ReferenceDtos.newReferenceDto(dtoType, labelPropertyNames); + } + + referenceDto.setId(id); + + for (Map.Entry<String, Serializable> entry : valuesByName.entrySet()) { + referenceDto.setPropertyValue(entry.getKey(), entry.getValue()); + } + + return referenceDto; + } + + protected ReferenceDto<?> newReferenceDto(Class type, Iterable<String> propertyNames) { + return ReferenceDtos.newReferenceDto(type, propertyNames); + } + + + +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReferentialReferenceDtoAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReferentialReferenceDtoAdapter.java new file mode 100644 index 0000000..9b7cff4 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ReferentialReferenceDtoAdapter.java @@ -0,0 +1,27 @@ +package fr.ird.observe.services.dto.gson; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; + +import java.lang.reflect.Type; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ReferentialReferenceDtoAdapter implements JsonDeserializer<ReferentialReferenceDto<?>> { + + ReferenceDtoAdapter referenceDtoAdapter = new ReferenceDtoAdapter(); + + @Override + public ReferentialReferenceDto<?> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + + ReferentialReferenceDto<?> referentialReferenceDto = (ReferentialReferenceDto) referenceDtoAdapter.deserialize(json, typeOfT, context); + + return referentialReferenceDto; + + } + +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReferenceDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReferenceDtos.java index 5e4dfb8..17a39c5 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReferenceDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReferenceDtos.java @@ -15,4 +15,12 @@ public class ReferentialReferenceDtos extends AbstractReferentialReferenceDtos { return dto; } + public static <R extends ReferentialDto> ReferentialReferenceDto<R> newReferentialReferenceDto(Class<R> type, + Iterable<String> propertyNames) { + + ReferentialReferenceDto<R> dto = new ReferentialReferenceDto<>(); + dto.init(type, propertyNames); + return dto; + } + } diff --git a/observe-services-model/src/main/xmi/observe-services-dto-common.zargo b/observe-services-model/src/main/xmi/observe-services-dto-common.zargo index ae48f49..e6653f3 100644 Binary files a/observe-services-model/src/main/xmi/observe-services-dto-common.zargo and b/observe-services-model/src/main/xmi/observe-services-dto-common.zargo differ diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java index be71661..bff5f14 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java @@ -14,6 +14,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestN import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestSupport; import fr.ird.observe.services.dto.gson.ObserveDtoGsonSupplier; import fr.ird.observe.services.http.RequestBuilder; +import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.services.spi.Write; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -34,6 +35,8 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl /** Logger. */ private static final Log log = LogFactory.getLog(ObserveServiceFactoryRest.class); + protected static final Package ROOT_SERVICES_PACKAGE = DataSourceService.class.getPackage(); + protected final CachingParanamer paranamer = new CachingParanamer(); protected final Supplier<Gson> gsonSupplier = new ObserveDtoGsonSupplier(); @@ -98,10 +101,15 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl this.serviceClass = serviceClass; this.dataSourceConfiguration = (ObserveDataSourceConfigurationRestSupport) observeServiceInitializer.getDataSourceConfiguration(); - this.serviceUrl = dataSourceConfiguration.getServerUrl() + "/" + serviceClass.getSimpleName(); + + String locateService = serviceClass.getCanonicalName().replace(ROOT_SERVICES_PACKAGE.getName(), ""); + locateService = locateService.replace(".", "/"); + + + this.serviceUrl = dataSourceConfiguration.getServerUrl() + locateService; this.gsonSupplier = gsonSupplier; this.applicationLocale = observeServiceInitializer.getApplicationLocale().toString(); - this.referentialLocale = observeServiceInitializer.getReferentialLocale().toString(); + this.referentialLocale = observeServiceInitializer.getReferentialLocale().getLocale().toString(); } diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java b/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java index 8639cf2..82165c4 100644 --- a/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java @@ -1,5 +1,6 @@ package fr.ird.observe.services; +import com.google.common.base.Optional; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestNotAuthenticated; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestSupport; @@ -36,7 +37,7 @@ public class TestClassResource implements TestRule { protected final URL serverUrl; public TestClassResource() { - this("http://localhost:8080/observeweb/v1/api"); + this("http://localhost:8080/observeweb/api/v1"); } public TestClassResource(String serverUrl) { @@ -128,6 +129,7 @@ public class TestClassResource implements TestRule { configurationRest.setServerUrl(serverUrl); configurationRest.setLogin(login); configurationRest.setPassword(password); + configurationRest.setOptionalDatabaseName(Optional.<String>absent()); return configurationRest; diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTest.java b/observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTest.java new file mode 100644 index 0000000..6e25e91 --- /dev/null +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/TripSeineServiceTest.java @@ -0,0 +1,329 @@ +package fr.ird.observe.services.service.seine; + +import com.google.common.collect.Collections2; +import com.google.common.collect.Iterables; +import fr.ird.observe.services.TestClassResource; +import fr.ird.observe.services.TestMethodResource; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestSupport; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.IdDtos; +import fr.ird.observe.services.dto.ReferenceSetDto; +import fr.ird.observe.services.dto.ReferenceSetDtos; +import fr.ird.observe.services.dto.referential.HarbourDto; +import fr.ird.observe.services.dto.referential.OceanDto; +import fr.ird.observe.services.dto.referential.PersonDto; +import fr.ird.observe.services.dto.referential.VesselDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.dto.seine.TripSeineStubDto; +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Ignore; +import org.junit.Rule; +import org.junit.Test; +import org.nuiton.util.DateUtil; + +import java.util.Collection; +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +@Ignore +public class TripSeineServiceTest { + + public static final String TRIP_SEINE_ID_1 = "fr.ird.observe.entities.seine.TripSeine#1359167789871#0.6765335978809843"; + public static final String TRIP_SEINE_ID_2 = "fr.ird.observe.entities.seine.TripSeine#1359280279156#0.41771067982188215"; + public static final String TRIP_SEINE_ID_3 = "fr.ird.observe.entities.seine.TripSeine#1360156698296#0.6097793743126777"; + + public static final String PROGRAM_ID = "fr.ird.observe.entities.referentiel.Program#1239832686262#0.31033946454061234"; + + @ClassRule + public static final TestClassResource testClassResource = new TestClassResource(); + + @Rule + public final TestMethodResource testMethodResource = new TestMethodResource(testClassResource); + + protected TripSeineService service; + + @Before + public void setUp() throws Exception { + + ObserveDataSourceConfigurationRestSupport dataSourceConfiguration = testMethodResource.getDataSourceConfiguration(); + service = testClassResource.newService(dataSourceConfiguration, TripSeineService.class); + + } + + @Test + public void getTripSeineByProgramTest() { + + List<TripSeineStubDto> stubDtos = service.getTripSeineByProgram(PROGRAM_ID); + + Assert.assertNotNull(stubDtos); + + Assert.assertEquals(135, stubDtos.size()); + + TripSeineStubDto tripSeineStub1Dto = Iterables.find(stubDtos, IdDtos.newIdPredicate(TRIP_SEINE_ID_1)); + + Assert.assertEquals(TRIP_SEINE_ID_1, tripSeineStub1Dto.getId()); + Assert.assertEquals(DateUtil.createDate(25, 1, 2013), tripSeineStub1Dto.getStartDate()); + Assert.assertEquals(DateUtil.createDate(27, 2, 2013), tripSeineStub1Dto.getEndDate()); + Assert.assertEquals("BERNICA", tripSeineStub1Dto.getVesselLabel()); + Assert.assertEquals("Varenne Fanchon", tripSeineStub1Dto.getObserverLabel()); + + + TripSeineStubDto tripSeineStu2Dto = Iterables.find(stubDtos, IdDtos.newIdPredicate(TRIP_SEINE_ID_2)); + + Assert.assertEquals(TRIP_SEINE_ID_2, tripSeineStu2Dto.getId()); + Assert.assertEquals(DateUtil.createDate(26, 1, 2013), tripSeineStu2Dto.getStartDate()); + Assert.assertEquals(DateUtil.createDate(12, 3, 2013), tripSeineStu2Dto.getEndDate()); + Assert.assertEquals("VIA EUROS", tripSeineStu2Dto.getVesselLabel()); + Assert.assertEquals("Protat Martin", tripSeineStu2Dto.getObserverLabel()); + + + TripSeineStubDto tripSeineStub3Dto = Iterables.find(stubDtos, IdDtos.newIdPredicate(TRIP_SEINE_ID_3)); + + Assert.assertEquals(TRIP_SEINE_ID_3, tripSeineStub3Dto.getId()); + Assert.assertEquals(DateUtil.createDate(1, 2, 2013), tripSeineStub3Dto.getStartDate()); + Assert.assertEquals(DateUtil.createDate(17, 3, 2013), tripSeineStub3Dto.getEndDate()); + Assert.assertEquals("GUERIDEN", tripSeineStub3Dto.getVesselLabel()); + Assert.assertEquals("Le Bourdonnec Pierre", tripSeineStub3Dto.getObserverLabel()); + + } + + @Test + public void loadToReadTest() throws Exception { + + FormDto<TripSeineDto> formDto = service.loadToRead(TRIP_SEINE_ID_1); + + Assert.assertNotNull(formDto); + TripSeineDto tripSeineDto = formDto.getForm(); + + Assert.assertNull(tripSeineDto.getCaptain()); + + Assert.assertEquals("fr.ird.observe.entities.referentiel.Person#1355399844272#0.32586441962131485", tripSeineDto.getObserver().getId()); + Assert.assertEquals("Fanchon", tripSeineDto.getObserver().getPropertyValue(PersonDto.PROPERTY_FIRST_NAME)); + Assert.assertEquals("Varenne", tripSeineDto.getObserver().getPropertyValue(PersonDto.PROPERTY_LAST_NAME)); + Assert.assertNull(tripSeineDto.getDataEntryOperator()); + Assert.assertEquals("fr.ird.observe.entities.referentiel.Vessel#1306847717532#0.7435948873477364", tripSeineDto.getVessel().getId()); + Assert.assertEquals("835", tripSeineDto.getVessel().getPropertyValue(VesselDto.PROPERTY_CODE)); + Assert.assertEquals("BERNICA", tripSeineDto.getVessel().getPropertyValue("label")); + Assert.assertEquals("fr.ird.observe.entities.referentiel.Ocean#1239832686152#0.8325731048817705", tripSeineDto.getOcean().getId()); + Assert.assertEquals("2", tripSeineDto.getOcean().getPropertyValue(OceanDto.PROPERTY_CODE)); + Assert.assertEquals("Indien", tripSeineDto.getOcean().getPropertyValue("label")); + Assert.assertNull(tripSeineDto.getDepartureHarbour()); + Assert.assertNull(tripSeineDto.getLandingHarbour()); + Assert.assertNull(tripSeineDto.getErsId()); + Assert.assertEquals(DateUtil.createDate(25, 1, 2013), tripSeineDto.getStartDate()); + Assert.assertEquals(DateUtil.createDate(27, 2, 2013), tripSeineDto.getEndDate()); + Assert.assertNull(tripSeineDto.getFormsUrl()); + Assert.assertNull(tripSeineDto.getReportsUrl()); + Assert.assertTrue(tripSeineDto.getComment().startsWith("Caractéristiques de la senne")); + + Assert.assertNotNull(formDto.getLabels()); + + Collection<Class> types = Collections2.transform(formDto.getLabels(), ReferenceSetDtos.getTypeFunction()); + Assert.assertTrue(types.contains(PersonDto.class)); + Assert.assertTrue(types.contains(VesselDto.class)); + Assert.assertTrue(types.contains(OceanDto.class)); + Assert.assertTrue(types.contains(HarbourDto.class)); + Assert.assertEquals(formDto.sizeLabels(), 4); + + for (ReferenceSetDto referenceSetDto : formDto.getLabels()) { + + Assert.assertEquals(0, referenceSetDto.sizeReference()); + + } + + } + + @Test + public void loadToEditTest() throws Exception { + + FormDto<TripSeineDto> formDto = service.loadToEdit(TRIP_SEINE_ID_1); + + Assert.assertNotNull(formDto); + TripSeineDto tripSeineDto = formDto.getForm(); + + Assert.assertNull(tripSeineDto.getCaptain()); + + Assert.assertEquals("fr.ird.observe.entities.referentiel.Person#1355399844272#0.32586441962131485", tripSeineDto.getObserver().getId()); + Assert.assertEquals("Fanchon", tripSeineDto.getObserver().getPropertyValue(PersonDto.PROPERTY_FIRST_NAME)); + Assert.assertEquals("Varenne", tripSeineDto.getObserver().getPropertyValue(PersonDto.PROPERTY_LAST_NAME)); + Assert.assertNull(tripSeineDto.getDataEntryOperator()); + Assert.assertEquals("fr.ird.observe.entities.referentiel.Vessel#1306847717532#0.7435948873477364", tripSeineDto.getVessel().getId()); + Assert.assertEquals("835", tripSeineDto.getVessel().getPropertyValue(VesselDto.PROPERTY_CODE)); + Assert.assertEquals("BERNICA", tripSeineDto.getVessel().getPropertyValue("label")); + Assert.assertEquals("fr.ird.observe.entities.referentiel.Ocean#1239832686152#0.8325731048817705", tripSeineDto.getOcean().getId()); + Assert.assertEquals("2", tripSeineDto.getOcean().getPropertyValue(OceanDto.PROPERTY_CODE)); + Assert.assertEquals("Indien", tripSeineDto.getOcean().getPropertyValue("label")); + Assert.assertNull(tripSeineDto.getDepartureHarbour()); + Assert.assertNull(tripSeineDto.getLandingHarbour()); + Assert.assertNull(tripSeineDto.getErsId()); + Assert.assertEquals(DateUtil.createDate(25, 1, 2013), tripSeineDto.getStartDate()); + Assert.assertEquals(DateUtil.createDate(27, 2, 2013), tripSeineDto.getEndDate()); + Assert.assertNull(tripSeineDto.getFormsUrl()); + Assert.assertNull(tripSeineDto.getReportsUrl()); + Assert.assertTrue(tripSeineDto.getComment().startsWith("Caractéristiques de la senne")); + + Assert.assertNotNull(formDto.getLabels()); + + Collection<Class> types = Collections2.transform(formDto.getLabels(), ReferenceSetDtos.getTypeFunction()); + Assert.assertTrue(types.contains(PersonDto.class)); + Assert.assertTrue(types.contains(VesselDto.class)); + Assert.assertTrue(types.contains(OceanDto.class)); + Assert.assertTrue(types.contains(HarbourDto.class)); + Assert.assertEquals(formDto.sizeLabels(), 4); + + for (ReferenceSetDto referenceSetDto : formDto.getLabels()) { + + Assert.assertTrue(referenceSetDto.sizeReference() > 0); + + } + + } + + @Test + public void preCreateTest() { + FormDto<TripSeineDto> formDto = service.preCreate(PROGRAM_ID); + + Assert.assertNotNull(formDto); + TripSeineDto tripSeineDto = formDto.getForm(); + + Assert.assertNull(tripSeineDto.getCaptain()); + Assert.assertNull(tripSeineDto.getObserver()); + Assert.assertNull(tripSeineDto.getDataEntryOperator()); + Assert.assertNull(tripSeineDto.getVessel()); + Assert.assertNull(tripSeineDto.getOcean()); + Assert.assertNull(tripSeineDto.getDepartureHarbour()); + Assert.assertNull(tripSeineDto.getLandingHarbour()); + Assert.assertNull(tripSeineDto.getErsId()); + //Assert.assertEquals(DateUtil.getDay(ObserveServiceContextTopiaTaiste.DATE), tripSeineDto.getStartDate()); + //Assert.assertEquals(DateUtil.getDay(ObserveServiceContextTopiaTaiste.DATE), tripSeineDto.getEndDate()); + Assert.assertNull(tripSeineDto.getFormsUrl()); + Assert.assertNull(tripSeineDto.getReportsUrl()); + Assert.assertNull(tripSeineDto.getComment()); + + Assert.assertNotNull(formDto.getLabels()); + + Collection<Class> types = Collections2.transform(formDto.getLabels(), ReferenceSetDtos.getTypeFunction()); + Assert.assertTrue(types.contains(PersonDto.class)); + Assert.assertTrue(types.contains(VesselDto.class)); + Assert.assertTrue(types.contains(OceanDto.class)); + Assert.assertTrue(types.contains(HarbourDto.class)); + Assert.assertEquals(formDto.sizeLabels(), 4); + + for (ReferenceSetDto referenceSetDto : formDto.getLabels()) { + + Assert.assertTrue(referenceSetDto.sizeReference() > 0); + + } + + } + +// @Test +// public void saveCreateTest() { +// +// FormDto<TripSeineDto> formDto = service.preCreate(PROGRAM_ID); +// +// TripSeineDto tripSeineDto = formDto.getForm(); +// +// ReferenceSetDto<PersonDto> personRefs = formDto.getReferenceSetDto(PersonDto.class); +// ReferenceSetDto<VesselDto> vesselRefs = formDto.getReferenceSetDto(VesselDto.class); +// ReferenceSetDto<OceanDto> oceanRefs = formDto.getReferenceSetDto(OceanDto.class); +// ReferenceSetDto<HarbourDto> harbourRefs = formDto.getReferenceSetDto(HarbourDto.class); +// +// tripSeineDto.setCaptain((ReferentialReferenceDto<PersonDto>) personRefs.getReference(0)); +// tripSeineDto.setObserver((ReferentialReferenceDto<PersonDto>) personRefs.getReference(1)); +// tripSeineDto.setDataEntryOperator((ReferentialReferenceDto<PersonDto>) personRefs.getReference(2)); +// +// tripSeineDto.setVessel((ReferentialReferenceDto<VesselDto>) vesselRefs.getReference(0)); +// +// tripSeineDto.setOcean((ReferentialReferenceDto<OceanDto>) oceanRefs.getReference(0)); +// +// tripSeineDto.setDepartureHarbour((ReferentialReferenceDto<HarbourDto>) harbourRefs.getReference(0)); +// tripSeineDto.setLandingHarbour((ReferentialReferenceDto<HarbourDto>) harbourRefs.getReference(1)); +// +// tripSeineDto.setErsId("ersid"); +// +// tripSeineDto.setStartDate(DateUtil.createDate(24, 8, 2015)); +// tripSeineDto.setEndDate(DateUtil.createDate(24, 9, 2015)); +// +// tripSeineDto.setFormsUrl("http://une.url.com/formulaire"); +// tripSeineDto.setReportsUrl("http://une.url.com/rapport"); +// +// tripSeineDto.setComment("Un commentaire"); +// +// String tripSeineId = service.save(formDto); +// +// TripSeine tripSeine = dataSourceResource.findById(TripSeine.class, tripSeineId); +// +// assertReferenceDtoEqualsEntity(tripSeineDto.getCaptain(), tripSeine.getCaptain()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getObserver(), tripSeine.getObserver()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getDataEntryOperator(), tripSeine.getDataEntryOperator()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getVessel(), tripSeine.getVessel()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getOcean(), tripSeine.getOcean()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getDepartureHarbour(), tripSeine.getDepartureHarbour()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getLandingHarbour(), tripSeine.getLandingHarbour()); +// Assert.assertEquals(tripSeineDto.getErsId(), tripSeine.getErsId()); +// Assert.assertEquals(tripSeineDto.getStartDate(), tripSeine.getStartDate()); +// Assert.assertEquals(tripSeineDto.getEndDate(), tripSeine.getEndDate()); +// Assert.assertEquals(tripSeineDto.getFormsUrl(), tripSeine.getFormsUrl()); +// Assert.assertEquals(tripSeineDto.getReportsUrl(), tripSeine.getReportsUrl()); +// Assert.assertEquals(tripSeineDto.getComment(), tripSeine.getComment()); +// +// } +// +// +// @Ignore +// @Test +// public void saveUpdateTest() { +// +// FormDto<TripSeineDto> formDto = service.loadToEdit(TRIP_SEINE_ID_1); +// +// TripSeineDto tripSeineDto = formDto.getForm(); +// +// ReferenceSetDto<PersonDto> personRefs = formDto.getReferenceSetDto(PersonDto.class); +// ReferenceSetDto<OceanDto> oceanRefs = formDto.getReferenceSetDto(OceanDto.class); +// ReferenceSetDto<HarbourDto> harbourRefs = formDto.getReferenceSetDto(HarbourDto.class); +// +// tripSeineDto.setCaptain((ReferentialReferenceDto<PersonDto>) personRefs.getReference(0)); +// tripSeineDto.setDataEntryOperator((ReferentialReferenceDto<PersonDto>) personRefs.getReference(2)); +// +// tripSeineDto.setOcean((ReferentialReferenceDto<OceanDto>) oceanRefs.getReference(0)); +// +// tripSeineDto.setDepartureHarbour((ReferentialReferenceDto<HarbourDto>) harbourRefs.getReference(0)); +// tripSeineDto.setLandingHarbour((ReferentialReferenceDto<HarbourDto>) harbourRefs.getReference(1)); +// +// tripSeineDto.setErsId("ersid"); +// +// tripSeineDto.setStartDate(DateUtil.createDate(24, 8, 2015)); +// tripSeineDto.setEndDate(DateUtil.createDate(24, 9, 2015)); +// +// tripSeineDto.setFormsUrl("http://une.url.com/formulaire"); +// tripSeineDto.setReportsUrl("http://une.url.com/rapport"); +// +// tripSeineDto.setComment("Un commentaire"); +// +// service.save(formDto); +// +// TripSeine tripSeine = dataSourceResource.findById(TripSeine.class, TRIP_SEINE_ID_1); +// +// assertReferenceDtoEqualsEntity(tripSeineDto.getCaptain(), tripSeine.getCaptain()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getObserver(), tripSeine.getObserver()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getDataEntryOperator(), tripSeine.getDataEntryOperator()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getVessel(), tripSeine.getVessel()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getOcean(), tripSeine.getOcean()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getDepartureHarbour(), tripSeine.getDepartureHarbour()); +// assertReferenceDtoEqualsEntity(tripSeineDto.getLandingHarbour(), tripSeine.getLandingHarbour()); +// Assert.assertEquals(tripSeineDto.getErsId(), tripSeine.getErsId()); +// Assert.assertEquals(tripSeineDto.getStartDate(), tripSeine.getStartDate()); +// Assert.assertEquals(tripSeineDto.getEndDate(), tripSeine.getEndDate()); +// Assert.assertEquals(tripSeineDto.getFormsUrl(), tripSeine.getFormsUrl()); +// Assert.assertEquals(tripSeineDto.getReportsUrl(), tripSeine.getReportsUrl()); +// Assert.assertEquals(tripSeineDto.getComment(), tripSeine.getComment()); +// +// } + + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.