From fce9086b27945d4b7b458d9ab1dfd6a8e650b26a Mon Sep 17 00:00:00 2001 From: Athou Date: Sat, 16 Nov 2013 07:40:44 +0100 Subject: [PATCH] remove deprecated duplicate feed detection --- .../com/commafeed/backend/dao/FeedDAO.java | 47 ----------------- .../frontend/rest/resources/AdminREST.java | 38 -------------- src/main/webapp/js/controllers.js | 50 ------------------- src/main/webapp/js/main.js | 5 -- src/main/webapp/js/services.js | 20 -------- .../templates/admin.duplicate_feeds.html | 50 ------------------- src/main/webapp/templates/admin.settings.html | 4 -- 7 files changed, 214 deletions(-) delete mode 100644 src/main/webapp/templates/admin.duplicate_feeds.html diff --git a/src/main/java/com/commafeed/backend/dao/FeedDAO.java b/src/main/java/com/commafeed/backend/dao/FeedDAO.java index 86b33f60..bf2d1254 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedDAO.java @@ -6,15 +6,12 @@ import java.util.List; import javax.ejb.Stateless; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Expression; import javax.persistence.criteria.Join; import javax.persistence.criteria.JoinType; -import javax.persistence.criteria.Path; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import javax.persistence.criteria.SetJoin; import javax.persistence.criteria.Subquery; -import javax.persistence.metamodel.SingularAttribute; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.StringUtils; @@ -26,7 +23,6 @@ import com.commafeed.backend.model.FeedSubscription_; import com.commafeed.backend.model.Feed_; import com.commafeed.backend.model.User; import com.commafeed.backend.model.User_; -import com.commafeed.frontend.model.FeedCount; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @@ -107,47 +103,4 @@ public class FeedDAO extends GenericDAO { return q.getResultList(); } - - public static enum DuplicateMode { - NORMALIZED_URL(Feed_.normalizedUrlHash), LAST_CONTENT(Feed_.lastContentHash), PUSH_TOPIC(Feed_.pushTopicHash); - private SingularAttribute path; - - private DuplicateMode(SingularAttribute path) { - this.path = path; - } - - public SingularAttribute getPath() { - return path; - } - } - - public List findDuplicates(DuplicateMode mode, int offset, int limit, long minCount) { - CriteriaQuery query = builder.createQuery(String.class); - Root root = query.from(getType()); - - Path path = root.get(mode.getPath()); - Expression count = builder.count(path); - - query.select(path); - - query.groupBy(path); - query.having(builder.greaterThan(count, minCount)); - - TypedQuery q = em.createQuery(query); - limit(q, offset, limit); - List pathValues = q.getResultList(); - - List result = Lists.newArrayList(); - for (String pathValue : pathValues) { - FeedCount fc = new FeedCount(pathValue); - for (Feed feed : findByField(mode.getPath(), pathValue)) { - Feed f = new Feed(); - f.setId(feed.getId()); - f.setUrl(feed.getUrl()); - fc.getFeeds().add(f); - } - result.add(fc); - } - return result; - } } diff --git a/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java b/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java index 7d1dac29..3c1e494b 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java @@ -1,6 +1,5 @@ package com.commafeed.frontend.rest.resources; -import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -19,14 +18,12 @@ import org.apache.commons.lang.StringUtils; import com.codahale.metrics.MetricRegistry; import com.commafeed.backend.dao.FeedDAO; -import com.commafeed.backend.dao.FeedDAO.DuplicateMode; import com.commafeed.backend.dao.UserDAO; import com.commafeed.backend.dao.UserRoleDAO; import com.commafeed.backend.feeds.FeedRefreshTaskGiver; import com.commafeed.backend.feeds.FeedRefreshUpdater; import com.commafeed.backend.feeds.FeedRefreshWorker; import com.commafeed.backend.model.ApplicationSettings; -import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.User; import com.commafeed.backend.model.UserRole; import com.commafeed.backend.model.UserRole.Role; @@ -37,13 +34,10 @@ import com.commafeed.backend.services.PasswordEncryptionService; import com.commafeed.backend.services.UserService; import com.commafeed.backend.startup.StartupBean; import com.commafeed.frontend.SecurityCheck; -import com.commafeed.frontend.model.FeedCount; import com.commafeed.frontend.model.UserModel; -import com.commafeed.frontend.model.request.FeedMergeRequest; import com.commafeed.frontend.model.request.IDRequest; import com.commafeed.frontend.rest.PrettyPrint; import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.wordnik.swagger.annotations.Api; @@ -259,36 +253,4 @@ public class AdminREST extends AbstractREST { map.put("old_entries", cleaner.cleanEntriesOlderThan(days, TimeUnit.DAYS)); return Response.ok(map).build(); } - - @Path("/cleanup/findDuplicateFeeds") - @GET - @ApiOperation(value = "Find duplicate feeds") - public Response findDuplicateFeeds(@QueryParam("mode") DuplicateMode mode, @QueryParam("page") int page, - @QueryParam("limit") int limit, @QueryParam("minCount") long minCount) { - List list = feedDAO.findDuplicates(mode, limit * page, limit, minCount); - return Response.ok(list).build(); - } - - @Path("/cleanup/merge") - @POST - @ApiOperation(value = "Merge feeds", notes = "Merge feeds together") - public Response mergeFeeds(@ApiParam(required = true) FeedMergeRequest request) { - Feed into = feedDAO.findById(request.getIntoFeedId()); - if (into == null) { - return Response.status(Status.BAD_REQUEST).entity("'into feed' not found").build(); - } - - List feeds = Lists.newArrayList(); - for (Long feedId : request.getFeedIds()) { - Feed feed = feedDAO.findById(feedId); - feeds.add(feed); - } - - if (feeds.isEmpty()) { - return Response.status(Status.BAD_REQUEST).entity("'from feeds' empty").build(); - } - - cleaner.mergeFeeds(into, feeds); - return Response.ok().build(); - } } diff --git a/src/main/webapp/js/controllers.js b/src/main/webapp/js/controllers.js index 0b136ebf..4ad5a90f 100644 --- a/src/main/webapp/js/controllers.js +++ b/src/main/webapp/js/controllers.js @@ -1399,53 +1399,6 @@ module.controller('ManageUserCtrl', ['$scope', '$state', '$stateParams', '$dialo }; }]); -module.controller('ManageDuplicateFeedsCtrl', ['$scope', 'AdminCleanupService', function($scope, AdminCleanupService) { - - $scope.limit = 10; - $scope.page = 0; - $scope.minCount = 1; - $scope.mode = 'NORMALIZED_URL'; - $scope.mergeData = {}; - $scope.refreshData = function() { - AdminCleanupService.findDuplicateFeeds({ - mode : $scope.mode, - limit : $scope.limit, - page : $scope.page, - minCount : $scope.minCount - }, function(data) { - $scope.counts = data; - }); - }; - - $scope.autoMerge = function() { - var callback = function() { - alert('done!'); - }; - for (var i = 0; i < $scope.counts.length; i++) { - var count = $scope.counts[i]; - if (count.autoMerge) { - AdminCleanupService.mergeFeeds({ - intoFeedId : count.feeds[0].id, - feedIds : _.pluck(count.feeds, 'id') - }, callback); - } - } - }; - - $scope.focus = function(count) { - $scope.current = count; - $scope.mergeData.intoFeedId = count.feeds[0].id; - $scope.mergeData.feedIds = _.pluck(count.feeds, 'id'); - }; - - $scope.merge = function() { - AdminCleanupService.mergeFeeds($scope.mergeData, function() { - alert('done!'); - }); - }; - -}]); - module.controller('SettingsCtrl', ['$scope', '$location', 'SettingsService', 'AnalyticsService', 'ServerService', function($scope, $location, SettingsService, AnalyticsService, ServerService) { @@ -1535,9 +1488,6 @@ module.controller('ManageSettingsCtrl', ['$scope', '$location', '$state', 'Admin $scope.toUsers = function() { $state.transitionTo('admin.userlist'); }; - $scope.toCleanup = function() { - $state.transitionTo('admin.duplicate_feeds'); - }; }]); module.controller('HelpController', ['$scope', 'CategoryService', 'AnalyticsService', 'ServerService', diff --git a/src/main/webapp/js/main.js b/src/main/webapp/js/main.js index 9f8bff14..c7d85b42 100644 --- a/src/main/webapp/js/main.js +++ b/src/main/webapp/js/main.js @@ -95,11 +95,6 @@ app.config(['$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpProv templateUrl : 'templates/admin.useredit.html', controller : 'ManageUserCtrl' }); - $stateProvider.state('admin.duplicate_feeds', { - url : '/feeds/duplicates', - templateUrl : 'templates/admin.duplicate_feeds.html', - controller : 'ManageDuplicateFeedsCtrl' - }); $stateProvider.state('admin.settings', { url : '/settings', templateUrl : 'templates/admin.settings.html', diff --git a/src/main/webapp/js/services.js b/src/main/webapp/js/services.js index 0ef04e94..a2fd5158 100644 --- a/src/main/webapp/js/services.js +++ b/src/main/webapp/js/services.js @@ -315,26 +315,6 @@ module.factory('AdminMetricsService', ['$resource', function($resource) { return res; }]); -module.factory('AdminCleanupService', ['$resource', function($resource) { - var actions = { - findDuplicateFeeds : { - method : 'GET', - isArray : true, - params : { - _method : 'findDuplicateFeeds' - } - }, - mergeFeeds : { - method : 'POST', - params : { - _method : 'merge' - } - } - }; - var res = $resource('rest/admin/cleanup/:_method', {}, actions); - return res; -}]); - module.factory('ServerService', ['$resource', function($resource) { var res = $resource('rest/server/get'); return res; diff --git a/src/main/webapp/templates/admin.duplicate_feeds.html b/src/main/webapp/templates/admin.duplicate_feeds.html deleted file mode 100644 index 3660d447..00000000 --- a/src/main/webapp/templates/admin.duplicate_feeds.html +++ /dev/null @@ -1,50 +0,0 @@ -
- -
- Limit - Page - Min. count -
-
- Mode - - - -
- - - - - - - - - - - - - - - -
urlcount -
{{count.feeds[0].url}}{{count.feeds.length}}
- -
-
- Merge - -
-
- Into - -
- -
-
\ No newline at end of file diff --git a/src/main/webapp/templates/admin.settings.html b/src/main/webapp/templates/admin.settings.html index 7c8481bd..918f3998 100644 --- a/src/main/webapp/templates/admin.settings.html +++ b/src/main/webapp/templates/admin.settings.html @@ -5,10 +5,6 @@ Manage users - - - - Cleanup feeds -