diff --git a/src/main/java/com/commafeed/backend/dao/FeedCategoryService.java b/src/main/java/com/commafeed/backend/dao/FeedCategoryService.java index 938279f5..8d92a431 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedCategoryService.java +++ b/src/main/java/com/commafeed/backend/dao/FeedCategoryService.java @@ -16,7 +16,7 @@ import com.uaihebert.model.EasyCriteria; @Stateless @SuppressWarnings("serial") -public class FeedCategoryService extends GenericDAO { +public class FeedCategoryService extends GenericDAO { public List findAll(User user) { return findByField(MF.i(MF.p(FeedCategory.class).getUser()), user); diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryService.java b/src/main/java/com/commafeed/backend/dao/FeedEntryService.java index db3e5065..b146b5a8 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryService.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryService.java @@ -23,7 +23,7 @@ import com.google.common.collect.Lists; @Stateless @SuppressWarnings("serial") -public class FeedEntryService extends GenericDAO { +public class FeedEntryService extends GenericDAO { @Inject FeedService feedService; diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusService.java b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusService.java index 31c73c9f..7ee1cce2 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusService.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusService.java @@ -1,5 +1,7 @@ package com.commafeed.backend.dao; +import java.util.List; + import javax.ejb.Stateless; import javax.persistence.NoResultException; @@ -12,7 +14,11 @@ import com.uaihebert.model.EasyCriteria; @Stateless @SuppressWarnings("serial") -public class FeedEntryStatusService extends GenericDAO { +public class FeedEntryStatusService extends GenericDAO { + + public List findAll(User user) { + return findByField(MF.i(proxy().getUser()), user); + } public FeedEntryStatus getStatus(User user, FeedEntry entry) { EasyCriteria criteria = EasyCriteriaFactory diff --git a/src/main/java/com/commafeed/backend/dao/FeedService.java b/src/main/java/com/commafeed/backend/dao/FeedService.java index 74926731..ed0b0e41 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedService.java +++ b/src/main/java/com/commafeed/backend/dao/FeedService.java @@ -10,7 +10,7 @@ import com.google.common.collect.Iterables; @Stateless @SuppressWarnings("serial") -public class FeedService extends GenericDAO { +public class FeedService extends GenericDAO { public Feed findByUrl(String url) { List feeds = findByField(MF.i(proxy().getUrl()), url); diff --git a/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java b/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java index 13687ef8..e21eab82 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java +++ b/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java @@ -15,7 +15,7 @@ import com.uaihebert.model.EasyCriteria; @Stateless @SuppressWarnings("serial") -public class FeedSubscriptionService extends GenericDAO { +public class FeedSubscriptionService extends GenericDAO { @Inject FeedCategoryService feedCategoryService; diff --git a/src/main/java/com/commafeed/backend/dao/GenericDAO.java b/src/main/java/com/commafeed/backend/dao/GenericDAO.java index b02fa449..67c6aee5 100644 --- a/src/main/java/com/commafeed/backend/dao/GenericDAO.java +++ b/src/main/java/com/commafeed/backend/dao/GenericDAO.java @@ -17,7 +17,8 @@ import com.uaihebert.factory.EasyCriteriaFactory; import com.uaihebert.model.EasyCriteria; @SuppressWarnings("serial") -public abstract class GenericDAO implements Serializable { +public abstract class GenericDAO implements + Serializable { private TypeToken type = new TypeToken(getClass()) { }; @@ -55,12 +56,18 @@ public abstract class GenericDAO implements Serializable { em.remove(object); } - public void deleteById(K id) { + public void delete(List objects) { + for (T object : objects) { + delete(object); + } + } + + public void deleteById(Long id) { Object ref = em.getReference(getType(), id); em.remove(ref); } - public T findById(K id) { + public T findById(Long id) { T t = em.find(getType(), id); return t; } diff --git a/src/main/java/com/commafeed/backend/dao/UserRoleService.java b/src/main/java/com/commafeed/backend/dao/UserRoleService.java index d9966af9..f7280233 100644 --- a/src/main/java/com/commafeed/backend/dao/UserRoleService.java +++ b/src/main/java/com/commafeed/backend/dao/UserRoleService.java @@ -12,7 +12,7 @@ import com.google.common.collect.Sets; @SuppressWarnings("serial") @Stateless -public class UserRoleService extends GenericDAO { +public class UserRoleService extends GenericDAO { public List findAll(User user) { return findByField(MF.i(MF.p(UserRole.class).getUser()), user); diff --git a/src/main/java/com/commafeed/backend/dao/UserService.java b/src/main/java/com/commafeed/backend/dao/UserService.java index b3c7022c..86417aa4 100644 --- a/src/main/java/com/commafeed/backend/dao/UserService.java +++ b/src/main/java/com/commafeed/backend/dao/UserService.java @@ -15,7 +15,7 @@ import com.google.common.collect.Iterables; @Stateless @SuppressWarnings("serial") -public class UserService extends GenericDAO { +public class UserService extends GenericDAO { @Inject PasswordEncryptionService encryptionService; diff --git a/src/main/java/com/commafeed/backend/dao/UserSettingsService.java b/src/main/java/com/commafeed/backend/dao/UserSettingsService.java index 8a70064f..0de5a32a 100644 --- a/src/main/java/com/commafeed/backend/dao/UserSettingsService.java +++ b/src/main/java/com/commafeed/backend/dao/UserSettingsService.java @@ -11,7 +11,7 @@ import com.uaihebert.model.EasyCriteria; @Stateless @SuppressWarnings("serial") -public class UserSettingsService extends GenericDAO { +public class UserSettingsService extends GenericDAO { public UserSettings findByUser(User user) { diff --git a/src/main/java/com/commafeed/frontend/rest/resources/AdminUsersREST.java b/src/main/java/com/commafeed/frontend/rest/resources/AdminUsersREST.java index 6b9a09e8..cb8ba737 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/AdminUsersREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/AdminUsersREST.java @@ -4,6 +4,7 @@ import java.util.Collection; import java.util.Map; import java.util.Set; +import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; @@ -110,4 +111,21 @@ public class AdminUsersREST extends AbstractREST { } return users.values(); } + + @Path("delete") + @DELETE + public Response delete(@QueryParam("id") Long id) { + User user = userService.findById(id); + if (user == null) { + return Response.status(Status.NOT_FOUND).build(); + } + feedEntryStatusService.delete(feedEntryStatusService.findAll(user)); + feedSubscriptionService.delete(feedSubscriptionService.findAll(user)); + feedCategoryService.delete(feedCategoryService.findAll(user)); + userSettingsService.delete(userSettingsService.findByUser(user)); + userRoleService.delete(userRoleService.findAll(user)); + userService.delete(user); + + return Response.ok().build(); + } } diff --git a/src/main/webapp/js/controllers.js b/src/main/webapp/js/controllers.js index a8137e33..4ed3748e 100644 --- a/src/main/webapp/js/controllers.js +++ b/src/main/webapp/js/controllers.js @@ -292,4 +292,9 @@ module.controller('ManageUserCtrl', function($scope, $state, $stateParams, }); }); }; + $scope.delete = function() { + AdminUsersService.delete({id: $scope.user.id}, function() { + $state.transitionTo('admin.userlist'); + }); + }; }); \ No newline at end of file diff --git a/src/main/webapp/js/services.js b/src/main/webapp/js/services.js index 042ff982..0538dc92 100644 --- a/src/main/webapp/js/services.js +++ b/src/main/webapp/js/services.js @@ -148,6 +148,12 @@ module.factory('AdminUsersService', function($resource) { params : { _method : 'save' } + }, + delete : { + method : 'DELETE', + params : { + _method : 'delete' + } } }; var res = $resource('rest/admin/users/:_method', {}, actions); diff --git a/src/main/webapp/templates/admin.useredit.html b/src/main/webapp/templates/admin.useredit.html index 9eaa77a1..18ad9daf 100644 --- a/src/main/webapp/templates/admin.useredit.html +++ b/src/main/webapp/templates/admin.useredit.html @@ -39,6 +39,7 @@
+