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