branch feature/7463-3 updated (695639a -> a9d753d)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7463-3 in repository observe. See http://git.codelutin.com/observe.git from 695639a Simplification de la sécurité + Gestion des erreurs au niveau du serveur web (reste à gérer le retour dans le client REST) new a9d753d Test de validation et des équipements + correction (refs #7463) 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 a9d753d36b76ba78677b3c1d2f1721b37af8acea Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Sep 8 11:39:15 2015 +0200 Test de validation et des équipements + correction (refs #7463) Summary of changes: .../web/ObserveWebApplicationListener.java | 4 + .../validate/ValidateServiceController.java | 8 +- ...ector.java => ValidateDataRequestInjector.java} | 22 +- ...va => ValidateReferentialsRequestInjector.java} | 22 +- 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, 583 insertions(+), 134 deletions(-) copy observe-application-web/src/main/java/fr/ird/observe/application/web/injector/{FormDtoInjector.java => ValidateDataRequestInjector.java} (56%) copy observe-application-web/src/main/java/fr/ird/observe/application/web/injector/{FormDtoInjector.java => ValidateReferentialsRequestInjector.java} (54%) create mode 100644 observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java create mode 100644 observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableMapAdapter.java create mode 100644 observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ImmutableSetAdapter.java create mode 100644 observe-services-rest/src/test/java/fr/ird/observe/services/service/AbstractServiceRestTest.java copy observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTopiaTest.java => observe-services-rest/src/test/java/fr/ird/observe/services/service/actions/validate/ValidateServiceTest.java (88%) create mode 100644 observe-services-rest/src/test/java/fr/ird/observe/services/service/seine/GearUseFeaturesSeineServiceTest.java -- 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/7463-3 in repository observe. See http://git.codelutin.com/observe.git commit a9d753d36b76ba78677b3c1d2f1721b37af8acea 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>.
participants (1)
-
codelutin.com scm