branch feature/7458 updated (6e008ba -> ea86ae6)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7458 in repository observe. See http://git.codelutin.com/observe.git from 6e008ba Pour les référentiels en lecture seule, on ne prend que la label des références rencontrées new ea86ae6 Ajout d'une exception lorsqu'on a pas pas trouvé une donnée + test de suppression 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 ea86ae6913b46c64f4b9be640feb55014525a710 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 18 14:22:47 2015 +0200 Ajout d'une exception lorsqu'on a pas pas trouvé une donnée + test de suppression Summary of changes: .../services/service/DataNotFoundException.java | 30 ++++++++++++++++ .../services/service/ReferentialService.java | 8 ++--- .../services/service/ReferentialServiceTopia.java | 21 ++++++----- .../service/ReferentialServiceTopiaTest.java | 42 ++++++++++++++++++++++ 4 files changed, 89 insertions(+), 12 deletions(-) create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/DataNotFoundException.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/7458 in repository observe. See http://git.codelutin.com/observe.git commit ea86ae6913b46c64f4b9be640feb55014525a710 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 18 14:22:47 2015 +0200 Ajout d'une exception lorsqu'on a pas pas trouvé une donnée + test de suppression --- .../services/service/DataNotFoundException.java | 30 ++++++++++++++++ .../services/service/ReferentialService.java | 8 ++--- .../services/service/ReferentialServiceTopia.java | 21 ++++++----- .../service/ReferentialServiceTopiaTest.java | 42 ++++++++++++++++++++++ 4 files changed, 89 insertions(+), 12 deletions(-) diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataNotFoundException.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataNotFoundException.java new file mode 100644 index 0000000..1653e5e --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataNotFoundException.java @@ -0,0 +1,30 @@ +package fr.ird.observe.services.service; + +import fr.ird.observe.services.dto.IdDto; + +/** + * Pour signifier qu'on a demandé une resources non existente. + * Created on 18/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DataNotFoundException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + private final Class<? extends IdDto> type; + private final String id; + + public DataNotFoundException(Class<? extends IdDto> type, String id) { + this.type = type; + this.id = id; + } + + public Class<? extends IdDto> getType() { + return type; + } + + public String getId() { + return id; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java index 36690b5..1ef629f 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java @@ -17,9 +17,9 @@ public interface ReferentialService extends ObserveService { <R extends ReferentialDto> ReferentialLabelSetDto getReferentialLabelSet(Class<R> type); - <R extends ReferentialDto> FormDto<R> loadToRead(Class<R> type, String id); + <R extends ReferentialDto> FormDto<R> loadToRead(Class<R> type, String id) throws DataNotFoundException; - <R extends ReferentialDto> FormDto<R> loadToEdit(Class<R> type, String id); + <R extends ReferentialDto> FormDto<R> loadToEdit(Class<R> type, String id) throws DataNotFoundException; <R extends ReferentialDto> FormDto<R> preCreate(Class<R> type); @@ -27,9 +27,9 @@ public interface ReferentialService extends ObserveService { <R extends ReferentialDto> String save(FormDto<R> form); @Write - <R extends ReferentialDto> void delete(Class<R> type, String id); + <R extends ReferentialDto> void delete(Class<R> type, String id) throws DataNotFoundException; @Write - <R extends ReferentialDto> void delete(Class<R> type, Collection<String> ids); + <R extends ReferentialDto> void delete(Class<R> type, Collection<String> ids) throws DataNotFoundException; } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java index ce04fb3..32e6d52 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java @@ -241,7 +241,7 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe public <D extends ReferentialDto> ReferentialLabelSetDto getReferentialLabelSet(Class<D> dtoType, String id) { Class<TopiaEntity> entityType = getEntityType(dtoType); - TopiaEntity entity = loadEntity(entityType, id); + TopiaEntity entity = loadEntity(dtoType, entityType, id); LinkedHashSet<ReferentialLabelDto<D>> labels = new LinkedHashSet<>(1); ReferentialLabelDto<D> dto = ReferentialLabelDtos.newReferentialLabelDto(dtoType, serviceContext.getReferentialLocale(), entity); labels.add(dto); @@ -252,7 +252,7 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe @Override public <D extends ReferentialDto> FormDto<D> loadToRead(Class<D> dtoType, String id) { Class<? extends TopiaEntity> entityType = getEntityType(dtoType); - TopiaEntity entity = loadEntity(entityType, id); + TopiaEntity entity = loadEntity(dtoType, entityType, id); FormDto<D> form = entityToReadReferentialFormDto(dtoType, entity); return form; } @@ -260,7 +260,7 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe @Override public <D extends ReferentialDto> FormDto<D> loadToEdit(Class<D> dtoType, String id) { Class<? extends TopiaEntity> entityType = getEntityType(dtoType); - TopiaEntity entity = loadEntity(entityType, id); + TopiaEntity entity = loadEntity(dtoType, entityType, id); FormDto<D> form = entityToEditReferentialFormDto(dtoType, entity); return form; } @@ -274,7 +274,6 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe return form; } - public <D extends ReferentialDto> String save(FormDto<D> form) { Class<D> dtoType = form.getType(); TopiaEntity entity = referentialDtoToEntity(form.getForm()); @@ -287,13 +286,13 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe @Override public <D extends ReferentialDto> void delete(Class<D> dtoType, String id) { Class<? extends TopiaEntity> entityType = getEntityType(dtoType); - deleteEntity(entityType, Collections.singleton(id)); + deleteEntity(dtoType, entityType, Collections.singleton(id)); } @Override public <D extends ReferentialDto> void delete(Class<D> dtoType, Collection<String> ids) { Class<? extends TopiaEntity> entityType = getEntityType(dtoType); - deleteEntity(entityType, ids); + deleteEntity(dtoType, entityType, ids); } protected <E extends TopiaEntity> List<E> loadEntities(Class<E> entityType) { @@ -303,10 +302,13 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe return entities; } - protected <E extends TopiaEntity> E loadEntity(Class<E> entityType, String id) { + protected <D extends ReferentialDto, E extends TopiaEntity> E loadEntity(Class<D> dtoType, Class<E> entityType, String id) { TopiaContext transaction = serviceContext.getTransaction(); TopiaDAO<E> dao = ObserveDAOHelper.getDAO(transaction, entityType); E entity = dao.findByTopiaId(id); + if (entity == null) { + throw new DataNotFoundException(dtoType, id); + } return entity; } @@ -324,11 +326,14 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe return entity; } - protected <E extends TopiaEntity> void deleteEntity(Class<E> entityType, Iterable<String> ids) { + protected <D extends ReferentialDto, E extends TopiaEntity> void deleteEntity(Class<D> dtoType, Class<E> entityType, Iterable<String> ids) { TopiaContext transaction = serviceContext.getTransaction(); TopiaDAO<E> dao = ObserveDAOHelper.getDAO(transaction, entityType); for (String id : ids) { E entity = dao.findByTopiaId(id); + if (entity == null) { + throw new DataNotFoundException(dtoType, id); + } dao.delete(entity); } } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java index df8c676..3bcb151 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java @@ -2,11 +2,15 @@ package fr.ird.observe.services.service; import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.migration.H2DataSourceMigration; +import fr.ird.observe.entities.referentiel.LengthWeightParameter; +import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.services.ObserveServiceContextTopia; import fr.ird.observe.services.ObserveServiceMainFactory; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.referential.LengthWeightParameterDto; +import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialLabelSetDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -107,6 +111,17 @@ public class ReferentialServiceTopiaTest { } + @Test + public void testDelete() throws Exception { + + TopiaContext tx = dataSourceResource.newTransaction("testDelete"); + + delete(tx, ProgramDto.class, Program.class); + delete(tx, LengthWeightParameterDto.class, LengthWeightParameter.class); + + + } + protected void loadToRead(TopiaContext tx, Class dtoType, Class entityType) { TopiaDAO<?> dao = dataSourceResource.getDataSource().getDAO(tx, entityType); long expectedCount = dao.count(); @@ -170,4 +185,31 @@ public class ReferentialServiceTopiaTest { } } + protected void delete(TopiaContext tx, Class dtoType, Class entityType) { + + TopiaDAO<?> dao = dataSourceResource.getDataSource().getDAO(tx, entityType); + long expectedCount = dao.count(); + + TopiaEntity entity = dao.iterator().next(); + if (log.isInfoEnabled()) { + log.info("Test delete: " + entity.getTopiaId()); + } + + FormDto formDto = service.loadToRead(dtoType, entity.getTopiaId()); + Assert.assertNotNull(formDto); + Assert.assertNotNull(formDto.getForm()); + Assert.assertNotNull(formDto.getForm().getId()); + + service.delete(dtoType, entity.getTopiaId()); + + Assert.assertEquals(expectedCount - 1, dao.count()); + + try { + service.loadToRead(dtoType, entity.getTopiaId()); + Assert.fail(); + } catch (DataNotFoundException e) { + Assert.assertTrue(true); + } + + } } \ No newline at end of file -- 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