diff --git a/README.md b/README.md index 66bb41a..8d265cd 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Uncomment the two following lines to allow the application to build the whole da -Restart your webserver. +####Restart your webserver. Uncomment the line `` diff --git a/src/main/java/fr/lirmm/aren/service/framadate/FDChoiceService.java b/src/main/java/fr/lirmm/aren/service/framadate/FDChoiceService.java index 12a1d4a..2f27aa1 100644 --- a/src/main/java/fr/lirmm/aren/service/framadate/FDChoiceService.java +++ b/src/main/java/fr/lirmm/aren/service/framadate/FDChoiceService.java @@ -55,6 +55,4 @@ public class FDChoiceService extends AbstractService { } return results.get(0); } - - } \ No newline at end of file diff --git a/src/main/java/fr/lirmm/aren/service/framadate/FDThemeService.java b/src/main/java/fr/lirmm/aren/service/framadate/FDThemeService.java index 0c3df0a..a7c671f 100644 --- a/src/main/java/fr/lirmm/aren/service/framadate/FDThemeService.java +++ b/src/main/java/fr/lirmm/aren/service/framadate/FDThemeService.java @@ -1,4 +1,6 @@ package fr.lirmm.aren.service.framadate; +import fr.lirmm.aren.model.Comment; +import fr.lirmm.aren.model.framadate.FDChoice; import fr.lirmm.aren.model.framadate.FDTheme; import fr.lirmm.aren.service.AbstractService; @@ -45,4 +47,50 @@ public class FDThemeService extends AbstractService { } return results.get(0); } + + /** + * + * @param fdThemeId + */ + public void clear(Long fdThemeId) { + this.transactionBegin(); + List choices = getEntityManager().createQuery("SELECT c " + + "FROM FDChoice c " + + "WHERE c.themeId.id = :fdThemeId ", FDChoice.class) + .setParameter("fdThemeId", fdThemeId) + .getResultList(); + if (!choices.isEmpty()) { + for(FDChoice choice : choices){ + this.clearVotes(choice.getId()); + } + } + try{ + getEntityManager().createQuery("DELETE FROM FDChoice fdChoice " + + "WHERE fdChoice.themeId.id = :fdThemeId") + .setParameter("fdThemeId", fdThemeId) + .executeUpdate(); + + getEntityManager().createQuery("DELETE FROM FDTheme fdTheme " + + "WHERE fdTheme.id = :fdThemeId") + .setParameter("fdThemeId", fdThemeId) + .executeUpdate(); + }catch(Exception ex){ + System.err.println("Erreur : "+ex.getMessage()); + } + + this.commit(); + } + + /** + * + * @param fdChoiceId + */ + public void clearVotes(Long fdChoiceId) { + this.transactionBegin(); + getEntityManager().createQuery("DELETE FROM FDVote fdVote " + + "WHERE fdVote.subThemeId.id = :fdChoiceId") + .setParameter("fdChoiceId", fdChoiceId) + .executeUpdate(); + this.commit(); + } } diff --git a/src/main/java/fr/lirmm/aren/ws/rest/FDThemeRESTFacade.java b/src/main/java/fr/lirmm/aren/ws/rest/FDThemeRESTFacade.java index f25dce3..722ae1b 100644 --- a/src/main/java/fr/lirmm/aren/ws/rest/FDThemeRESTFacade.java +++ b/src/main/java/fr/lirmm/aren/ws/rest/FDThemeRESTFacade.java @@ -9,7 +9,9 @@ import javax.annotation.security.PermitAll; import javax.annotation.security.RolesAllowed; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; +import javax.ws.rs.DELETE; import javax.ws.rs.Path; +import javax.ws.rs.PathParam; import java.util.Set; @RequestScoped @@ -51,10 +53,16 @@ public class FDThemeRESTFacade extends AbstractRESTFacade{ return fdThemeService.findAll(withChoices, true); } - @Override + /** + * Remove all the choices and votes of a theme + * + * @param id + */ + @DELETE + @Path("delete/{id}") @RolesAllowed({"ADMIN"}) - public void remove(Long id) { - super.remove(id); + public void clear(@PathParam("id") Long id) { + fdThemeService.clear(id); } @Override