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 4e74ded362b96c46413ae371e106c00bfeb172ee Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Sep 8 11:39:15 2015 +0200 Test de validation et des équipements + correction (refs #7463) --- .../web/ObserveWebApplicationListener.java | 4 + .../validate/ValidateServiceController.java | 8 +- .../web/injector/ValidateDataRequestInjector.java | 48 ++++ .../ValidateReferentialsRequestInjector.java | 48 ++++ observe-application-web/src/main/resources/mapping | 7 +- .../service/actions/validate/ValidateService.java | 4 +- .../java/fr/ird/observe/services/dto/IdDtos.java | 11 + .../fr/ird/observe/services/dto/ReferenceDto.java | 7 + .../services/dto/gson/ImmutableListAdapter.java | 21 +- .../services/dto/gson/ImmutableMapAdapter.java | 39 +++ .../services/dto/gson/ImmutableSetAdapter.java | 37 +++ .../services/dto/gson/ObserveDtoGsonSupplier.java | 5 + .../services/dto/gson/ReferenceDtoAdapter.java | 21 +- .../dto/gson/ReferentialReferenceDtoAdapter.java | 10 +- .../services/service/AbstractServiceRestTest.java | 57 +++++ .../actions/validate/ValidateServiceTest.java | 60 +++-- .../seine/GearUseFeaturesSeineServiceTest.java | 273 +++++++++++++++++++++ .../service/seine/TripSeineServiceTest.java | 80 ++---- .../ird/observe/services/ObserveServiceTopia.java | 2 +- .../EntityToReferentialReferenceDtoBuilder.java | 17 ++ .../actions/validate/ValidateServiceTopia.java | 4 +- .../actions/validate/ValidateServiceTopiaTest.java | 6 +- 22 files changed, 659 insertions(+), 110 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java index d6b357d..a3d2fe8 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java @@ -4,6 +4,8 @@ import com.google.gson.Gson; import fr.ird.observe.application.web.injector.FormDtoInjector; import fr.ird.observe.application.web.injector.IdDtoInjector; import fr.ird.observe.application.web.injector.ObserveDataSourceConfigurationInjector; +import fr.ird.observe.application.web.injector.ValidateDataRequestInjector; +import fr.ird.observe.application.web.injector.ValidateReferentialsRequestInjector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.debux.webmotion.server.WebMotionServerListener; @@ -38,6 +40,8 @@ public class ObserveWebApplicationListener implements WebMotionServerListener { context.addInjector(new ObserveDataSourceConfigurationInjector(gson)); context.addInjector(new IdDtoInjector(gson)); context.addInjector(new FormDtoInjector(gson)); + context.addInjector(new ValidateDataRequestInjector(gson)); + context.addInjector(new ValidateReferentialsRequestInjector(gson)); context.getServletContext().setAttribute( ObserveWebApplicationContext.APPLICATION_CONTEXT_PARAMETER, applicationContext); diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/validate/ValidateServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/validate/ValidateServiceController.java index 6ba8796..8377266 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/validate/ValidateServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/validate/ValidateServiceController.java @@ -23,12 +23,12 @@ public class ValidateServiceController extends ObserveAuthenticatedServiceContro } @Override - public ValidateReferentialsResult validate(ValidateReferentialsRequest request) { - return service.validate(request); + public ValidateReferentialsResult validateReferentials(ValidateReferentialsRequest request) { + return service.validateReferentials(request); } @Override - public ValidateDataResult validate(ValidateDataRequest request) { - return service.validate(request); + public ValidateDataResult validateData(ValidateDataRequest request) { + return service.validateData(request); } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ValidateDataRequestInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ValidateDataRequestInjector.java new file mode 100644 index 0000000..aedbdb9 --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ValidateDataRequestInjector.java @@ -0,0 +1,48 @@ +package fr.ird.observe.application.web.injector; + +import com.google.gson.Gson; +import fr.ird.observe.services.service.actions.validate.ValidateDataRequest; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.debux.webmotion.server.call.Call; +import org.debux.webmotion.server.handler.ExecutorParametersInjectorHandler; +import org.debux.webmotion.server.mapping.Mapping; + +import java.lang.reflect.Type; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ValidateDataRequestInjector implements ExecutorParametersInjectorHandler.Injector { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ValidateDataRequestInjector.class); + + protected final Gson gson; + + public ValidateDataRequestInjector(Gson gson) { + this.gson = gson; + } + + @Override + public Object getValue(Mapping mapping, Call call, String name, Class<?> type, Type generic) { + + ValidateDataRequest request = null; + if (type.isAssignableFrom(ValidateDataRequest.class)) { + + Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); + + String gsonContent= ((String[])parameterTree.getValue())[0]; + + request = gson.fromJson(gsonContent, generic); + + if (log.isInfoEnabled()) { + log.info("Inject validateDataRequest: " + request); + } + + } + + return request; + + } +} diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ValidateReferentialsRequestInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ValidateReferentialsRequestInjector.java new file mode 100644 index 0000000..61de50b --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ValidateReferentialsRequestInjector.java @@ -0,0 +1,48 @@ +package fr.ird.observe.application.web.injector; + +import com.google.gson.Gson; +import fr.ird.observe.services.service.actions.validate.ValidateReferentialsRequest; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.debux.webmotion.server.call.Call; +import org.debux.webmotion.server.handler.ExecutorParametersInjectorHandler; +import org.debux.webmotion.server.mapping.Mapping; + +import java.lang.reflect.Type; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ValidateReferentialsRequestInjector implements ExecutorParametersInjectorHandler.Injector { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ValidateReferentialsRequestInjector.class); + + protected final Gson gson; + + public ValidateReferentialsRequestInjector(Gson gson) { + this.gson = gson; + } + + @Override + public Object getValue(Mapping mapping, Call call, String name, Class<?> type, Type generic) { + + ValidateReferentialsRequest request = null; + if (type.isAssignableFrom(ValidateReferentialsRequest.class)) { + + Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); + + String gsonContent= ((String[])parameterTree.getValue())[0]; + + request = gson.fromJson(gsonContent, generic); + + if (log.isInfoEnabled()) { + log.info("Inject validateDataRequest: " + request); + } + + } + + return request; + + } +} diff --git a/observe-application-web/src/main/resources/mapping b/observe-application-web/src/main/resources/mapping index ec98670..0c5cfe8 100644 --- a/observe-application-web/src/main/resources/mapping +++ b/observe-application-web/src/main/resources/mapping @@ -44,9 +44,10 @@ default.render=fr.ird.observe.application.web.ObserveWebMotionRender [actions] -GET /admin/configuration/{method} ConfigurationController.{method} -GET,POST /api/v1/{service}/{method} {service}Controller.{method} -GET,POST /api/v1/{package}/{service}/{method} {package}.{service}Controller.{method} +GET /admin/configuration/{method} ConfigurationController.{method} +GET,POST /api/v1/{service}/{method} {service}Controller.{method} +GET,POST /api/v1/{package}/{service}/{method} {package}.{service}Controller.{method} +GET,POST /api/v1/{package1}/{package2}/{service}/{method} {package1}.{package2}.{service}Controller.{method} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateService.java index 1cceca5..29837f3 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateService.java @@ -21,10 +21,10 @@ public interface ValidateService extends ObserveService { ImmutableSet<String> getAvailableContextNames(); @ReadReferentialPermission - ValidateReferentialsResult validate(ValidateReferentialsRequest request); + ValidateReferentialsResult validateReferentials(ValidateReferentialsRequest request); @ReadDataPermission @ReadReferentialPermission - ValidateDataResult validate(ValidateDataRequest request); + ValidateDataResult validateData(ValidateDataRequest request); } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java new file mode 100644 index 0000000..e3c83b1 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java @@ -0,0 +1,11 @@ +package fr.ird.observe.services.dto; + +import com.google.common.collect.Iterables; + +public class IdDtos extends AbstractIdDtos { + + public static <BeanType extends IdDto> BeanType findById(Iterable<BeanType> source, String id) { + return Iterables.find(source, newIdPredicate(id)); + } + +} 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 2c46d65..32ed2c2 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 @@ -60,4 +60,11 @@ public class ReferenceDto<D extends IdDto> extends AbstractReferenceDto { return index; } + public Serializable[] getLabelPropertyValues() { + return labelPropertyValues; + } + + public Class[] getLabelPropertyTypes() { + return labelPropertyTypes; + } } 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 index 9e1f206..bf242c7 100644 --- 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 @@ -1,12 +1,14 @@ package fr.ird.observe.services.dto.gson; import com.google.common.collect.ImmutableList; +import com.google.common.reflect.TypeParameter; +import com.google.common.reflect.TypeToken; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; -import com.google.gson.reflect.TypeToken; +import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.List; @@ -18,17 +20,18 @@ public class ImmutableListAdapter implements JsonDeserializer<ImmutableList<?>> @Override public ImmutableList<?> deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException { -// Type[] actualTypeArguments = ((ParameterizedType) type).getActualTypeArguments(); -// Type actualTypeArgument = actualTypeArguments[0]; + Type[] actualTypeArguments = ((ParameterizedType) type).getActualTypeArguments(); + Type actualTypeArgument = actualTypeArguments[0]; - //FIXME check this is working ? We can't use sun API - Type type2 = new TypeToken<List<?>>() { - - }.getType(); + Type type2 = listOf(TypeToken.of(actualTypeArgument)).getType(); List list = context.deserialize(json, type2); -// final Type type2 = ParameterizedTypeImpl.make(List.class, ((ParameterizedType) type).getActualTypeArguments(), null); -// final List<?> list = context.deserialize(json, type2); return ImmutableList.copyOf(list); } + + static <E> TypeToken<List<E>> listOf(TypeToken<E> subType) { + return new TypeToken<List<E>>() {} + .where(new TypeParameter<E>() { + }, subType); + } } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableMapAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableMapAdapter.java new file mode 100644 index 0000000..3c944fd --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableMapAdapter.java @@ -0,0 +1,39 @@ +package fr.ird.observe.services.dto.gson; + +import com.google.common.collect.ImmutableMap; +import com.google.common.reflect.TypeParameter; +import com.google.common.reflect.TypeToken; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.Map; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ImmutableMapAdapter implements JsonDeserializer<ImmutableMap<?, ?>>{ + + @Override + public ImmutableMap deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException { + + Type[] actualTypeArguments = ((ParameterizedType) type).getActualTypeArguments(); + Type keyType = actualTypeArguments[0]; + Type valueType = actualTypeArguments[1]; + + Type type2 = mapOf(TypeToken.of(keyType), TypeToken.of(valueType)).getType(); + Map map = context.deserialize(json, type2); + + return ImmutableMap.copyOf(map); + } + + static <K, V> TypeToken<Map<K, V>> mapOf(TypeToken<K> keyType, TypeToken<V> valueType) { + return new TypeToken<Map<K, V>>() {} + .where(new TypeParameter<K>() {}, keyType) + .where(new TypeParameter<V>() {}, valueType); + } + +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableSetAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableSetAdapter.java new file mode 100644 index 0000000..fb58d0d --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableSetAdapter.java @@ -0,0 +1,37 @@ +package fr.ird.observe.services.dto.gson; + +import com.google.common.collect.ImmutableSet; +import com.google.common.reflect.TypeParameter; +import com.google.common.reflect.TypeToken; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.Set; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ImmutableSetAdapter implements JsonDeserializer<ImmutableSet<?>> { + + @Override + public ImmutableSet deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException { + + Type[] actualTypeArguments = ((ParameterizedType) type).getActualTypeArguments(); + Type actualTypeArgument = actualTypeArguments[0]; + + Type type2 = setOf(TypeToken.of(actualTypeArgument)).getType(); + Set set = context.deserialize(json, type2); + + return ImmutableSet.copyOf(set); + } + + static <E> TypeToken<Set<E>> setOf(TypeToken<E> subType) { + return new TypeToken<Set<E>>() {} + .where(new TypeParameter<E>() {}, subType); + } + +} 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 b6e23fc..426c9c7 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 @@ -2,6 +2,8 @@ package fr.ird.observe.services.dto.gson; import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import fr.ird.observe.services.dto.ReferenceDto; @@ -64,8 +66,11 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { gsonBuilder.registerTypeAdapter(Class.class, new ClassAdapter()); // gsonBuilder.registerTypeAdapter(IdDto.class, new IdDtoAdapter()); gsonBuilder.registerTypeAdapter(ImmutableList.class, new ImmutableListAdapter()); + gsonBuilder.registerTypeAdapter(ImmutableSet.class, new ImmutableSetAdapter()); + gsonBuilder.registerTypeAdapter(ImmutableMap.class, new ImmutableMapAdapter()); gsonBuilder.registerTypeAdapter(ReferenceDto.class, new ReferenceDtoAdapter()); gsonBuilder.registerTypeAdapter(ReferentialReferenceDto.class, new ReferentialReferenceDtoAdapter()); + gsonBuilder.enableComplexMapKeySerialization(); } 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 index 2574992..44cd290 100644 --- 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 @@ -8,6 +8,8 @@ import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceDtos; import fr.ird.observe.services.dto.constants.ReferenceStatus; @@ -23,7 +25,7 @@ import java.util.Map; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public class ReferenceDtoAdapter implements JsonDeserializer<ReferenceDto<?>> { +public class ReferenceDtoAdapter implements JsonDeserializer<ReferenceDto<?>>, JsonSerializer<ReferenceDto<?>> { @Override public ReferenceDto<?> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { @@ -80,5 +82,22 @@ public class ReferenceDtoAdapter implements JsonDeserializer<ReferenceDto<?>> { } + @Override + public JsonElement serialize(ReferenceDto<?> src, Type typeOfSrc, JsonSerializationContext context) { + JsonObject jsonReference = new JsonObject(); + + jsonReference.add(ReferenceDto.PROPERTY_TYPE, context.serialize(src.getType())); + jsonReference.add(ReferenceDto.PROPERTY_ID, context.serialize(src.getId())); + jsonReference.add(ReferenceDto.PROPERTY_LABEL_PROPERTY_NAMES, context.serialize(src.getPropertyNames())); + jsonReference.add(ReferenceDto.PROPERTY_LABEL_PROPERTY_VALUES, context.serialize(src.getLabelPropertyValues())); + jsonReference.add(ReferenceDto.PROPERTY_LABEL_PROPERTY_TYPES, context.serialize(src.getLabelPropertyTypes())); + + if (src instanceof ReferentialReferenceDto) { + ReferentialReferenceDto referentialReferenceDto = (ReferentialReferenceDto) src; + jsonReference.add(ReferentialReferenceDto.PROPERTY_NEED_COMMENT, context.serialize(referentialReferenceDto.isNeedComment())); + jsonReference.add(ReferentialReferenceDto.PROPERTY_STATUS, context.serialize(referentialReferenceDto.getStatus())); + } + return jsonReference; + } } 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 index 9b7cff4..2ef1625 100644 --- 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 @@ -4,6 +4,8 @@ import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; import java.lang.reflect.Type; @@ -11,7 +13,7 @@ import java.lang.reflect.Type; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public class ReferentialReferenceDtoAdapter implements JsonDeserializer<ReferentialReferenceDto<?>> { +public class ReferentialReferenceDtoAdapter implements JsonDeserializer<ReferentialReferenceDto<?>>, JsonSerializer<ReferentialReferenceDto<?>> { ReferenceDtoAdapter referenceDtoAdapter = new ReferenceDtoAdapter(); @@ -24,4 +26,10 @@ public class ReferentialReferenceDtoAdapter implements JsonDeserializer<Referent } + @Override + public JsonElement serialize(ReferentialReferenceDto<?> src, Type typeOfSrc, JsonSerializationContext context) { + JsonElement jsonElement = referenceDtoAdapter.serialize(src, typeOfSrc, context); + + return jsonElement; + } } diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/service/AbstractServiceRestTest.java b/observe-services-rest/src/test/java/fr/ird/observe/services/service/AbstractServiceRestTest.java new file mode 100644 index 0000000..4fa97d7 --- /dev/null +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/service/AbstractServiceRestTest.java @@ -0,0 +1,57 @@ +package fr.ird.observe.services.service; + +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.TestClassResource; +import fr.ird.observe.services.TestMethodResource; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import org.junit.After; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Rule; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public abstract class AbstractServiceRestTest { + + 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); + + private ObserveDataSourceConnection dataSourceConnection; + + private DataSourceService dataSourceService; + + @Before + public void setUp() throws Exception { + + ObserveDataSourceConfigurationRest dataSourceConfiguration = testMethodResource.getDataSourceConfiguration(); + + dataSourceService = testClassResource.newService(dataSourceConfiguration, DataSourceService.class); + dataSourceConnection = dataSourceService.open(dataSourceConfiguration); + } + + @After + public void tearDown() throws Exception { + + if (dataSourceConnection != null) { + dataSourceService.close(); + } + + } + + public <S extends ObserveService> S newService(Class<S> serviceType) { + return testClassResource.newService(dataSourceConnection, serviceType); + } + +} diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java b/observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTest.java similarity index 88% copy from observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java copy to observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTest.java index c74505c..da652cc 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTest.java @@ -2,37 +2,46 @@ package fr.ird.observe.services.service.actions.validate; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import fr.ird.observe.services.service.AbstractServiceRestTest; import org.junit.Assert; import org.junit.Test; import org.nuiton.validator.NuitonValidatorScope; -import java.util.Set; - /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { +public class ValidateServiceTest extends AbstractServiceRestTest { + + protected static final ImmutableSet<Class<? extends ReferentialDto>> REFERENTIAL_DTO_TYPES = ImmutableSet.of( + fr.ird.observe.services.dto.referential.CountryDto.class, + fr.ird.observe.services.dto.referential.FpaZoneDto.class, + fr.ird.observe.services.dto.referential.GearCaracteristicDto.class, + fr.ird.observe.services.dto.referential.GearCaracteristicTypeDto.class, + fr.ird.observe.services.dto.referential.GearDto.class, + fr.ird.observe.services.dto.referential.HarbourDto.class, + fr.ird.observe.services.dto.referential.LengthWeightParameterDto.class, + fr.ird.observe.services.dto.referential.OceanDto.class, + fr.ird.observe.services.dto.referential.OrganismDto.class, + fr.ird.observe.services.dto.referential.PersonDto.class, + fr.ird.observe.services.dto.referential.ProgramDto.class, + fr.ird.observe.services.dto.referential.SexDto.class, + fr.ird.observe.services.dto.referential.SpeciesDto.class, + fr.ird.observe.services.dto.referential.SpeciesGroupDto.class, + fr.ird.observe.services.dto.referential.SpeciesListDto.class, + fr.ird.observe.services.dto.referential.VesselDto.class, + fr.ird.observe.services.dto.referential.VesselSizeCategoryDto.class, + fr.ird.observe.services.dto.referential.VesselTypeDto.class + ); protected ValidateService 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(ValidateService.class); + } @Test @@ -42,18 +51,15 @@ public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { request.setValidationContext(ValidateService.N1_UPDATE_CONTEXT); request.setScopes(ImmutableSet.copyOf(NuitonValidatorScope.values())); - request.setReferentialTypes(ObserveServiceTopia.getReferentialDtoTypes()); - ValidateReferentialsResult result = service.validate(request); + request.setReferentialTypes(REFERENTIAL_DTO_TYPES); + + ValidateReferentialsResult result = service.validateReferentials(request); Assert.assertNotNull(result); ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); Assert.assertNotNull(resultByType); Assert.assertEquals(59, resultByType.size()); -// for (Map.Entry<Class<? extends ReferentialDto>, ValidateResultForDtoType> entry : resultByType.entrySet()) { -// System.out.println("assertValidateResultForReferentialDtoType(resultByType, " + entry.getKey().getName() + ".class, " + entry.getValue().getValidationResultForDto().size() + ");"); -// } - assertValidateResultForReferentialDtoType(resultByType, fr.ird.observe.services.dto.referential.CountryDto.class, 53); assertValidateResultForReferentialDtoType(resultByType, fr.ird.observe.services.dto.referential.FpaZoneDto.class, 41); assertValidateResultForReferentialDtoType(resultByType, fr.ird.observe.services.dto.referential.GearCaracteristicDto.class, 22); @@ -127,16 +133,12 @@ public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { request.setScopes(ImmutableSet.copyOf(NuitonValidatorScope.values())); request.setDataIds(ImmutableSet.of(TRIP_SEINE_ID_1, TRIP_SEINE_ID_2)); - ValidateDataResult result = service.validate(request); + ValidateDataResult result = service.validateData(request); Assert.assertNotNull(result); ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); Assert.assertNotNull(resultByType); Assert.assertEquals(5, resultByType.size()); -// for (Map.Entry<Class<? extends IdDto>, ValidateResultForDtoType> entry : resultByType.entrySet()) { -// System.out.println("assertValidateResultForDtoType(resultByType, " + entry.getKey().getName() + ".class, " + entry.getValue().getValidationResultForDto().size() + ");"); -// } - assertValidateResultForDtoType(resultByType, fr.ird.observe.services.dto.seine.TripSeineDto.class, 2); assertValidateResultForDtoType(resultByType, fr.ird.observe.services.dto.seine.RouteDto.class, 80); assertValidateResultForDtoType(resultByType, fr.ird.observe.services.dto.seine.ActivitySeineDto.class, 1519); @@ -154,17 +156,13 @@ public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { request.setScopes(ImmutableSet.copyOf(NuitonValidatorScope.values())); request.setDataIds(ImmutableSet.of(TRIP_SEINE_ID_1, TRIP_SEINE_ID_2)); - ValidateDataResult result = service.validate(request); + ValidateDataResult result = service.validateData(request); Assert.assertNotNull(result); ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); Assert.assertNotNull(resultByType); Assert.assertEquals(8, resultByType.size()); -// for (Map.Entry<Class<? extends IdDto>, ValidateResultForDtoType> entry : resultByType.entrySet()) { -// System.out.println("assertValidateResultForDtoType(resultByType, " + entry.getKey().getName() + ".class, " + entry.getValue().getValidationResultForDto().size() + ");"); -// } - assertValidateResultForDtoType(resultByType, fr.ird.observe.services.dto.seine.TripSeineDto.class, 2); assertValidateResultForDtoType(resultByType, fr.ird.observe.services.dto.seine.RouteDto.class, 80); assertValidateResultForDtoType(resultByType, fr.ird.observe.services.dto.seine.ActivitySeineDto.class, 1519); diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineServiceTest.java b/observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineServiceTest.java new file mode 100644 index 0000000..550dfe4 --- /dev/null +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineServiceTest.java @@ -0,0 +1,273 @@ +package fr.ird.observe.services.service.seine; + +import com.google.common.collect.Collections2; +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.GearCaracteristicDto; +import fr.ird.observe.services.dto.referential.GearDto; +import fr.ird.observe.services.dto.seine.GearUseFeaturesMeasurementSeineDto; +import fr.ird.observe.services.dto.seine.GearUseFeaturesSeineDto; +import fr.ird.observe.services.service.AbstractServiceRestTest; +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + +import java.util.Collection; +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class GearUseFeaturesSeineServiceTest extends AbstractServiceRestTest { + + public static final String GEAR_USE_FEATURES_SEINE_ID_1 = "fr.ird.observe.entities.seine.GearUseFeaturesSeine#1440486230661#0.42614931015885216"; + public static final String GEAR_USE_FEATURES_SEINE_ID_2 = "fr.ird.observe.entities.seine.GearUseFeaturesSeine#1440486387658#0.5629816198069391"; + + protected GearUseFeaturesSeineService service; + + @Override + public void setUp() throws Exception { + super.setUp(); + service = newService(GearUseFeaturesSeineService.class); + } + + + @Test + public void getGearUseFeaturesSeineByTripSeine() { + + List<GearUseFeaturesSeineDto> featuresSeineDtos = service.getGearUseFeaturesSeineByTripSeine(TRIP_SEINE_ID_1); + + Assert.assertEquals(2, featuresSeineDtos.size()); + + GearUseFeaturesSeineDto feature1 = featuresSeineDtos.get(1); + + Assert.assertEquals(GEAR_USE_FEATURES_SEINE_ID_1, feature1.getId()); + Assert.assertEquals("fr.ird.observe.entities.referentiel.Gear#1239832686125#0.25", feature1.getGear().getId()); + Assert.assertEquals("Radeau", feature1.getGear().getPropertyValue("label")); + Assert.assertEquals(new Integer(1), feature1.getNumber()); + Assert.assertEquals(Boolean.TRUE, feature1.getUsedInTrip()); + Assert.assertEquals(3, feature1.sizeGearUseFeaturesMeasurement()); + + GearUseFeaturesMeasurementSeineDto measurement1 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230663#0.8598592739610341"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.20", measurement1.getGearCaracteristic().getId()); + Assert.assertEquals("3", measurement1.getMeasurementValue()); + + + GearUseFeaturesMeasurementSeineDto measurement2 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230664#0.3389960469962563"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.21", measurement2.getGearCaracteristic().getId()); + Assert.assertEquals("true", measurement2.getMeasurementValue()); + + + GearUseFeaturesMeasurementSeineDto measurement3 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230665#0.018683933154531762"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.22", measurement3.getGearCaracteristic().getId()); + Assert.assertEquals("false", measurement3.getMeasurementValue()); + + + GearUseFeaturesSeineDto feature2 = featuresSeineDtos.get(0); + + Assert.assertEquals(GEAR_USE_FEATURES_SEINE_ID_2, feature2.getId()); + Assert.assertEquals("fr.ird.observe.entities.referentiel.Gear#1239832686125#0.3", feature2.getGear().getId()); + Assert.assertEquals("Radar de route", feature2.getGear().getPropertyValue("label")); + Assert.assertEquals(Boolean.TRUE, feature2.getUsedInTrip()); + Assert.assertEquals(1, feature2.sizeGearUseFeaturesMeasurement()); + + GearUseFeaturesMeasurementSeineDto measurement4 = IdDtos.findById( + feature2.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486387660#0.5120256423294711"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.1", measurement4.getGearCaracteristic().getId()); + Assert.assertEquals("50", measurement4.getMeasurementValue()); + + } + + + @Test + public void loadToReadTest() { + + FormDto<GearUseFeaturesSeineDto> formDto = service.loadToRead(GEAR_USE_FEATURES_SEINE_ID_1); + + Assert.assertNotNull(formDto); + GearUseFeaturesSeineDto feature1 = formDto.getForm(); + + Assert.assertEquals(GEAR_USE_FEATURES_SEINE_ID_1, feature1.getId()); + Assert.assertEquals("fr.ird.observe.entities.referentiel.Gear#1239832686125#0.25", feature1.getGear().getId()); + Assert.assertEquals("Radeau", feature1.getGear().getPropertyValue("label")); + Assert.assertEquals(new Integer(1), feature1.getNumber()); + Assert.assertEquals(Boolean.TRUE, feature1.getUsedInTrip()); + Assert.assertEquals(3, feature1.sizeGearUseFeaturesMeasurement()); + + GearUseFeaturesMeasurementSeineDto measurement1 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230663#0.8598592739610341"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.20", measurement1.getGearCaracteristic().getId()); + Assert.assertEquals("3", measurement1.getMeasurementValue()); + + + GearUseFeaturesMeasurementSeineDto measurement2 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230664#0.3389960469962563"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.21", measurement2.getGearCaracteristic().getId()); + Assert.assertEquals("true", measurement2.getMeasurementValue()); + + + GearUseFeaturesMeasurementSeineDto measurement3 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230665#0.018683933154531762"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.22", measurement3.getGearCaracteristic().getId()); + Assert.assertEquals("false", measurement3.getMeasurementValue()); + + Assert.assertNotNull(formDto.getLabels()); + + Collection<Class> types = Collections2.transform(formDto.getLabels(), ReferenceSetDtos.getTypeFunction()); + Assert.assertTrue(types.contains(GearDto.class)); + Assert.assertTrue(types.contains(GearCaracteristicDto.class)); + Assert.assertEquals(2, formDto.sizeLabels()); + + for (ReferenceSetDto referenceSetDto : formDto.getLabels()) { + + Assert.assertEquals(0, referenceSetDto.sizeReference()); + + } + } + + @Test + public void loadToEditTest() { + + FormDto<GearUseFeaturesSeineDto> formDto = service.loadToEdit(GEAR_USE_FEATURES_SEINE_ID_1); + + Assert.assertNotNull(formDto); + GearUseFeaturesSeineDto feature1 = formDto.getForm(); + + Assert.assertEquals(GEAR_USE_FEATURES_SEINE_ID_1, feature1.getId()); + Assert.assertEquals("fr.ird.observe.entities.referentiel.Gear#1239832686125#0.25", feature1.getGear().getId()); + Assert.assertEquals("Radeau", feature1.getGear().getPropertyValue("label")); + Assert.assertEquals(new Integer(1), feature1.getNumber()); + Assert.assertEquals(Boolean.TRUE, feature1.getUsedInTrip()); + Assert.assertEquals(3, feature1.sizeGearUseFeaturesMeasurement()); + + GearUseFeaturesMeasurementSeineDto measurement1 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230663#0.8598592739610341"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.20", measurement1.getGearCaracteristic().getId()); + Assert.assertEquals("3", measurement1.getMeasurementValue()); + + + GearUseFeaturesMeasurementSeineDto measurement2 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230664#0.3389960469962563"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.21", measurement2.getGearCaracteristic().getId()); + Assert.assertEquals("true", measurement2.getMeasurementValue()); + + + GearUseFeaturesMeasurementSeineDto measurement3 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230665#0.018683933154531762"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.22", measurement3.getGearCaracteristic().getId()); + Assert.assertEquals("false", measurement3.getMeasurementValue()); + + Assert.assertNotNull(formDto.getLabels()); + + Collection<Class> types = Collections2.transform(formDto.getLabels(), ReferenceSetDtos.getTypeFunction()); + Assert.assertTrue(types.contains(GearDto.class)); + Assert.assertTrue(types.contains(GearCaracteristicDto.class)); + Assert.assertEquals(2, formDto.sizeLabels()); + + for (ReferenceSetDto referenceSetDto : formDto.getLabels()) { + + Assert.assertTrue(referenceSetDto.sizeReference() > 0); + + } + } + + @Test + public void preCreateTest() { + FormDto<GearUseFeaturesSeineDto> formDto = service.preCreate(); + + Assert.assertNotNull(formDto); + GearUseFeaturesSeineDto featuresSeineDto = formDto.getForm(); + + Assert.assertNull(featuresSeineDto.getId()); + Assert.assertNull(featuresSeineDto.getNumber()); + Assert.assertNull(featuresSeineDto.getUsedInTrip()); + Assert.assertNull(featuresSeineDto.getComment()); + Assert.assertEquals(0, featuresSeineDto.sizeGearUseFeaturesMeasurement()); + + Assert.assertNotNull(formDto.getLabels()); + + Collection<Class> types = Collections2.transform(formDto.getLabels(), ReferenceSetDtos.getTypeFunction()); + Assert.assertTrue(types.contains(GearDto.class)); + Assert.assertTrue(types.contains(GearCaracteristicDto.class)); + Assert.assertEquals(2, formDto.sizeLabels()); + + for (ReferenceSetDto referenceSetDto : formDto.getLabels()) { + + Assert.assertTrue(referenceSetDto.sizeReference() > 0); + + } + + } + + @Ignore + @Test + public void saveUpdateTest() { + FormDto<GearUseFeaturesSeineDto> formDto = service.loadToEdit(GEAR_USE_FEATURES_SEINE_ID_1); + + GearUseFeaturesSeineDto featuresSeineDto = formDto.getForm(); + + featuresSeineDto.setNumber(12); + featuresSeineDto.setComment("Un Commentaire"); + for (GearUseFeaturesMeasurementSeineDto measurementSeineDto : featuresSeineDto.getGearUseFeaturesMeasurement()) { + if ("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.20".equals(measurementSeineDto.getGearCaracteristic().getId())) { + measurementSeineDto.setMeasurementValue("4"); + } else if ("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.21".equals(measurementSeineDto.getGearCaracteristic().getId())) { + measurementSeineDto.setMeasurementValue("false"); + } else if ("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.22".equals(measurementSeineDto.getGearCaracteristic().getId())) { + measurementSeineDto.setMeasurementValue("true"); + } + } + + service.save(TRIP_SEINE_ID_1, formDto); + + FormDto<GearUseFeaturesSeineDto> formDtoAfterSave = service.loadToEdit(GEAR_USE_FEATURES_SEINE_ID_1); + + GearUseFeaturesSeineDto feature1 = formDtoAfterSave.getForm(); + + Assert.assertEquals(GEAR_USE_FEATURES_SEINE_ID_1, feature1.getId()); + Assert.assertEquals("fr.ird.observe.entities.referentiel.Gear#1239832686125#0.25", feature1.getGear().getId()); + Assert.assertEquals("Radeau", feature1.getGear().getPropertyValue("label")); + Assert.assertEquals(new Integer(12), feature1.getNumber()); + Assert.assertEquals(Boolean.TRUE, feature1.getUsedInTrip()); + Assert.assertEquals(3, feature1.sizeGearUseFeaturesMeasurement()); + Assert.assertEquals("Un Commentaire", feature1.getComment()); + + GearUseFeaturesMeasurementSeineDto measurement1 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230663#0.8598592739610341"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.20", measurement1.getGearCaracteristic().getId()); + Assert.assertEquals("4", measurement1.getMeasurementValue()); + + + GearUseFeaturesMeasurementSeineDto measurement2 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230664#0.3389960469962563"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.21", measurement2.getGearCaracteristic().getId()); + Assert.assertEquals("false", measurement2.getMeasurementValue()); + + + GearUseFeaturesMeasurementSeineDto measurement3 = IdDtos.findById( + feature1.getGearUseFeaturesMeasurement(), + "fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine#1440486230665#0.018683933154531762"); + Assert.assertEquals("fr.ird.observe.entities.referentiel.GearCaracteristic#1239832686124#0.22", measurement3.getGearCaracteristic().getId()); + Assert.assertEquals("true", measurement3.getMeasurementValue()); + + + } + +} 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 index 5786ae0..8496f8f 100644 --- 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 @@ -2,10 +2,6 @@ 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.ObserveDataSourceConfigurationRest; -import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.dto.ReferenceSetDto; @@ -17,13 +13,9 @@ import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; 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 fr.ird.observe.services.service.DataSourceService; -import org.junit.After; +import fr.ird.observe.services.service.AbstractServiceRestTest; 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; @@ -34,47 +26,15 @@ import java.util.List; * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -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); +public class TripSeineServiceTest extends AbstractServiceRestTest{ protected TripSeineService service; - private ObserveDataSourceConnection dataSourceConnection; - - private DataSourceService dataSourceService; - - @Before + @Override public void setUp() throws Exception { + super.setUp(); - ObserveDataSourceConfigurationRest dataSourceConfiguration = testMethodResource.getDataSourceConfiguration(); - - dataSourceService = testClassResource.newService(dataSourceConfiguration, DataSourceService.class); - dataSourceConnection = dataSourceService.open(dataSourceConfiguration); - - service = testClassResource.newService(dataSourceConnection, TripSeineService.class); - - } - - @After - public void tearDown() throws Exception { - - if (dataSourceConnection != null) { - dataSourceService.close(); - } - + service = newService(TripSeineService.class); } @Test @@ -84,7 +44,7 @@ public class TripSeineServiceTest { Assert.assertNotNull(stubDtos); - Assert.assertEquals(3, stubDtos.size()); + Assert.assertEquals(135, stubDtos.size()); TripSeineStubDto tripSeineStub1Dto = Iterables.find(stubDtos, IdDtos.newIdPredicate(TRIP_SEINE_ID_1)); @@ -280,13 +240,13 @@ public class TripSeineServiceTest { FormDto<TripSeineDto> formDtoReload = service.loadToRead(TRIP_SEINE_ID_1); TripSeineDto tripSeineDtoReload = formDtoReload.getForm(); - Assert.assertEquals(tripSeineDto.getCaptain(), tripSeineDtoReload.getCaptain()); - Assert.assertEquals(tripSeineDto.getObserver(), tripSeineDtoReload.getObserver()); - Assert.assertEquals(tripSeineDto.getDataEntryOperator(), tripSeineDtoReload.getDataEntryOperator()); - Assert.assertEquals(tripSeineDto.getVessel(), tripSeineDtoReload.getVessel()); - Assert.assertEquals(tripSeineDto.getOcean(), tripSeineDtoReload.getOcean()); - Assert.assertEquals(tripSeineDto.getDepartureHarbour(), tripSeineDtoReload.getDepartureHarbour()); - Assert.assertEquals(tripSeineDto.getLandingHarbour(), tripSeineDtoReload.getLandingHarbour()); + Assert.assertEquals(tripSeineDto.getCaptain().getId(), tripSeineDtoReload.getCaptain().getId()); + Assert.assertEquals(tripSeineDto.getObserver().getId(), tripSeineDtoReload.getObserver().getId()); + Assert.assertEquals(tripSeineDto.getDataEntryOperator().getId(), tripSeineDtoReload.getDataEntryOperator().getId()); + Assert.assertEquals(tripSeineDto.getVessel().getId(), tripSeineDtoReload.getVessel().getId()); + Assert.assertEquals(tripSeineDto.getOcean().getId(), tripSeineDtoReload.getOcean().getId()); + Assert.assertEquals(tripSeineDto.getDepartureHarbour().getId(), tripSeineDtoReload.getDepartureHarbour().getId()); + Assert.assertEquals(tripSeineDto.getLandingHarbour().getId(), tripSeineDtoReload.getLandingHarbour().getId()); Assert.assertEquals(tripSeineDto.getErsId(), tripSeineDtoReload.getErsId()); Assert.assertEquals(tripSeineDto.getStartDate(), tripSeineDtoReload.getStartDate()); Assert.assertEquals(tripSeineDto.getEndDate(), tripSeineDtoReload.getEndDate()); @@ -296,5 +256,19 @@ public class TripSeineServiceTest { } + @Ignore + @Test + public void deleteTest() { + + service.delete(TRIP_SEINE_ID_1); + + List<TripSeineStubDto> tripSeineByProgram = service.getTripSeineByProgram(PROGRAM_ID); + + Assert.assertEquals(2, tripSeineByProgram.size()); + + Assert.assertTrue(Iterables.isEmpty(IdDtos.filterById(tripSeineByProgram, TRIP_SEINE_ID_1))); + + } + } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java index 54930e8..781da6b 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java @@ -97,7 +97,7 @@ public class ObserveServiceTopia implements ObserveService { String name = entityType.getName(); for (Map.Entry<Class<?>, Class<?>> entry : ENTITY_TO_DTO_TYPES.entrySet()) { if (name.startsWith(entry.getKey().getName())) { - modelType = entry.getKey(); + modelType = entry.getValue(); break; } } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java index b484558..18ca31c 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java @@ -1,6 +1,8 @@ package fr.ird.observe.services.builder; import com.google.common.base.Preconditions; +import fr.ird.observe.entities.referentiel.ReferenceEntity; +import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.ObserveDtoBinders; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.ReferentialDto; @@ -38,6 +40,21 @@ public class EntityToReferentialReferenceDtoBuilder<E extends TopiaEntity, D ext for (Map.Entry<String, Object> entry : entityProperties.entrySet()) { String propertyName = entry.getKey(); Object propertyValue = entry.getValue(); + + if (propertyValue instanceof ReferenceEntity) { + + ReferenceEntity referentialEntity = (ReferenceEntity) propertyValue; + Class referenceDtoType = ObserveServiceTopia.getDtoType(referentialEntity.getClass()); + propertyValue = EntityToReferentialReferenceDtoBuilder.build(referenceDtoType, referentialLocale, referentialEntity); + + } else if (propertyValue instanceof TopiaEntity) { + + TopiaEntity topiaEntity = (TopiaEntity) propertyValue; + Class referenceDtoType = ObserveServiceTopia.getDtoType(topiaEntity.getClass()); + propertyValue = EntityToReferenceDtoBuilder.build(referenceDtoType, referentialLocale, topiaEntity); + + } + result.setPropertyValue(referentialLocale, propertyName, (Serializable) propertyValue); } result.setId(entity.getTopiaId()); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopia.java index 291b363..b7b2d52 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopia.java @@ -36,7 +36,7 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat } @Override - public ValidateReferentialsResult validate(ValidateReferentialsRequest request) { + public ValidateReferentialsResult validateReferentials(ValidateReferentialsRequest request) { ValidationDataContext validationDataContext = new ValidationDataContext(); @@ -64,7 +64,7 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat } @Override - public ValidateDataResult validate(ValidateDataRequest request) { + public ValidateDataResult validateData(ValidateDataRequest request) { ValidationDataContext validationDataContext = new ValidationDataContext(); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java index c74505c..aa7e522 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java @@ -44,7 +44,7 @@ public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { request.setScopes(ImmutableSet.copyOf(NuitonValidatorScope.values())); request.setReferentialTypes(ObserveServiceTopia.getReferentialDtoTypes()); - ValidateReferentialsResult result = service.validate(request); + ValidateReferentialsResult result = service.validateReferentials(request); Assert.assertNotNull(result); ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); Assert.assertNotNull(resultByType); @@ -127,7 +127,7 @@ public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { request.setScopes(ImmutableSet.copyOf(NuitonValidatorScope.values())); request.setDataIds(ImmutableSet.of(TRIP_SEINE_ID_1, TRIP_SEINE_ID_2)); - ValidateDataResult result = service.validate(request); + ValidateDataResult result = service.validateData(request); Assert.assertNotNull(result); ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); Assert.assertNotNull(resultByType); @@ -154,7 +154,7 @@ public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { request.setScopes(ImmutableSet.copyOf(NuitonValidatorScope.values())); request.setDataIds(ImmutableSet.of(TRIP_SEINE_ID_1, TRIP_SEINE_ID_2)); - ValidateDataResult result = service.validate(request); + ValidateDataResult result = service.validateData(request); Assert.assertNotNull(result); ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.