forked from Archives/Athou_commafeed
index for entry lookup
This commit is contained in:
@@ -23,18 +23,20 @@ public class FeedEntryDAO extends GenericDAO<FeedEntry> {
|
|||||||
|
|
||||||
protected static final Logger log = LoggerFactory.getLogger(FeedEntryDAO.class);
|
protected static final Logger log = LoggerFactory.getLogger(FeedEntryDAO.class);
|
||||||
|
|
||||||
public FeedEntry findExisting(String guid, String url, Long feedId) {
|
public Long findExisting(String guid, Long feedId) {
|
||||||
|
|
||||||
CriteriaQuery<FeedEntry> query = builder.createQuery(getType());
|
CriteriaQuery<Long> query = builder.createQuery(Long.class);
|
||||||
Root<FeedEntry> root = query.from(getType());
|
Root<FeedEntry> root = query.from(getType());
|
||||||
|
query.select(root.get(FeedEntry_.id));
|
||||||
|
|
||||||
Predicate p1 = builder.equal(root.get(FeedEntry_.guidHash), DigestUtils.sha1Hex(guid));
|
Predicate p1 = builder.equal(root.get(FeedEntry_.guidHash), DigestUtils.sha1Hex(guid));
|
||||||
Predicate p2 = builder.equal(root.get(FeedEntry_.url), url);
|
Predicate p2 = builder.equal(root.get(FeedEntry_.feed).get(Feed_.id), feedId);
|
||||||
Predicate p3 = builder.equal(root.get(FeedEntry_.feed).get(Feed_.id), feedId);
|
|
||||||
|
|
||||||
query.where(p1, p2, p3);
|
query.where(p1, p2);
|
||||||
|
|
||||||
List<FeedEntry> list = em.createQuery(query).getResultList();
|
TypedQuery<Long> q = em.createQuery(query);
|
||||||
|
limit(q, 0, 1);
|
||||||
|
List<Long> list = q.getResultList();
|
||||||
return Iterables.getFirst(list, null);
|
return Iterables.getFirst(list, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public class FeedUpdateService {
|
|||||||
*/
|
*/
|
||||||
public void updateEntry(Feed feed, FeedEntry entry, List<FeedSubscription> subscriptions) {
|
public void updateEntry(Feed feed, FeedEntry entry, List<FeedSubscription> subscriptions) {
|
||||||
|
|
||||||
FeedEntry existing = feedEntryDAO.findExisting(entry.getGuid(), entry.getUrl(), feed.getId());
|
Long existing = feedEntryDAO.findExisting(entry.getGuid(), feed.getId());
|
||||||
if (existing != null) {
|
if (existing != null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,5 +111,14 @@
|
|||||||
<dropIndex tableName="FEEDS" indexName="urlHash_index" />
|
<dropIndex tableName="FEEDS" indexName="urlHash_index" />
|
||||||
<dropColumn tableName="FEEDS" columnName="urlHash" />
|
<dropColumn tableName="FEEDS" columnName="urlHash" />
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet author="athou" id="create-guid-feed-index">
|
||||||
|
<createIndex tableName="FEEDENTRIES" indexName="guidHash_feed_index">
|
||||||
|
<column name="guidHash" />
|
||||||
|
<column name="feed_id" />
|
||||||
|
</createIndex>
|
||||||
|
<dropIndex tableName="FEEDENTRIES" indexName="guidHash_index" />
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
|
|||||||
Reference in New Issue
Block a user