do some heavy work outside of the database transaction

This commit is contained in:
Athou
2013-05-24 07:15:09 +02:00
parent b32e3690c6
commit c2b3992818
2 changed files with 16 additions and 15 deletions

View File

@@ -14,6 +14,7 @@ import com.commafeed.backend.HttpGetter.NotModifiedException;
import com.commafeed.backend.MetricsBean; import com.commafeed.backend.MetricsBean;
import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedEntry;
import com.commafeed.backend.model.FeedEntryContent;
import com.commafeed.backend.model.FeedPushInfo; import com.commafeed.backend.model.FeedPushInfo;
import com.commafeed.backend.services.ApplicationSettingsService; import com.commafeed.backend.services.ApplicationSettingsService;
import com.commafeed.backend.services.FeedPushInfoService; import com.commafeed.backend.services.FeedPushInfoService;
@@ -104,6 +105,9 @@ public class FeedRefreshWorker {
.getLastModifiedHeader()); .getLastModifiedHeader());
feed.setEtagHeader(fetchedFeed.getFeed().getEtagHeader()); feed.setEtagHeader(fetchedFeed.getFeed().getEtagHeader());
for (FeedEntry entry : entries) {
handleEntry(feed, entry);
}
handlePubSub(feed, fetchedFeed); handlePubSub(feed, fetchedFeed);
} catch (NotModifiedException e) { } catch (NotModifiedException e) {
@@ -133,6 +137,18 @@ public class FeedRefreshWorker {
} }
private void handleEntry(Feed feed, FeedEntry entry) {
String baseUri = feed.getLink();
FeedEntryContent content = entry.getContent();
content.setEnclosureUrl(FeedUtils.truncate(content.getEnclosureUrl(),
2048));
content.setContent(FeedUtils.handleContent(content.getContent(),
baseUri));
String title = FeedUtils.handleContent(content.getTitle(), baseUri);
content.setTitle(FeedUtils.truncate(title, 2048));
entry.setAuthor(FeedUtils.truncate(entry.getAuthor(), 128));
}
private void handlePubSub(Feed feed, FetchedFeed fetchedFeed) { private void handlePubSub(Feed feed, FetchedFeed fetchedFeed) {
String hub = fetchedFeed.getHub(); String hub = fetchedFeed.getHub();
String topic = fetchedFeed.getTopic(); String topic = fetchedFeed.getTopic();

View File

@@ -14,10 +14,8 @@ import com.commafeed.backend.MetricsBean;
import com.commafeed.backend.dao.FeedEntryDAO; import com.commafeed.backend.dao.FeedEntryDAO;
import com.commafeed.backend.dao.FeedEntryStatusDAO; import com.commafeed.backend.dao.FeedEntryStatusDAO;
import com.commafeed.backend.dao.FeedSubscriptionDAO; import com.commafeed.backend.dao.FeedSubscriptionDAO;
import com.commafeed.backend.feeds.FeedUtils;
import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedEntry;
import com.commafeed.backend.model.FeedEntryContent;
import com.commafeed.backend.model.FeedEntryStatus; import com.commafeed.backend.model.FeedEntryStatus;
import com.commafeed.backend.model.FeedSubscription; import com.commafeed.backend.model.FeedSubscription;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@@ -45,13 +43,11 @@ public class FeedUpdateService {
FeedEntry update = null; FeedEntry update = null;
if (foundEntry == null) { if (foundEntry == null) {
handleEntry(feed, entry);
entry.setInserted(Calendar.getInstance().getTime()); entry.setInserted(Calendar.getInstance().getTime());
entry.getFeeds().add(feed); entry.getFeeds().add(feed);
update = entry; update = entry;
} else { } else {
if (!findFeed(foundEntry.getFeeds(), feed)) { if (!findFeed(foundEntry.getFeeds(), feed)) {
foundEntry.getFeeds().add(feed); foundEntry.getFeeds().add(feed);
update = foundEntry; update = foundEntry;
@@ -95,15 +91,4 @@ public class FeedUpdateService {
return found; return found;
} }
private void handleEntry(Feed feed, FeedEntry entry) {
String baseUri = feed.getLink();
FeedEntryContent content = entry.getContent();
content.setEnclosureUrl(FeedUtils.truncate(content.getEnclosureUrl(),
2048));
content.setContent(FeedUtils.handleContent(content.getContent(),
baseUri));
String title = FeedUtils.handleContent(content.getTitle(), baseUri);
content.setTitle(FeedUtils.truncate(title, 2048));
entry.setAuthor(FeedUtils.truncate(entry.getAuthor(), 128));
}
} }