2013-07-24 15:39:20 +02:00
|
|
|
package com.commafeed.backend.dao;
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
import javax.persistence.TypedQuery;
|
|
|
|
|
import javax.persistence.criteria.CriteriaQuery;
|
|
|
|
|
import javax.persistence.criteria.Join;
|
|
|
|
|
import javax.persistence.criteria.JoinType;
|
|
|
|
|
import javax.persistence.criteria.Predicate;
|
|
|
|
|
import javax.persistence.criteria.Root;
|
|
|
|
|
|
|
|
|
|
import com.commafeed.backend.model.FeedEntry;
|
|
|
|
|
import com.commafeed.backend.model.FeedEntryContent;
|
|
|
|
|
import com.commafeed.backend.model.FeedEntryContent_;
|
|
|
|
|
import com.commafeed.backend.model.FeedEntry_;
|
|
|
|
|
import com.google.common.collect.Iterables;
|
|
|
|
|
|
|
|
|
|
public class FeedEntryContentDAO extends GenericDAO<FeedEntryContent> {
|
|
|
|
|
|
2013-07-26 08:15:23 +02:00
|
|
|
public FeedEntryContent findExisting(String contentHash, String titleHash) {
|
2013-07-24 15:39:20 +02:00
|
|
|
|
|
|
|
|
CriteriaQuery<FeedEntryContent> query = builder.createQuery(getType());
|
|
|
|
|
Root<FeedEntryContent> root = query.from(getType());
|
|
|
|
|
|
2013-07-26 08:15:23 +02:00
|
|
|
Predicate p1 = builder.equal(root.get(FeedEntryContent_.contentHash), contentHash);
|
|
|
|
|
Predicate p2 = builder.equal(root.get(FeedEntryContent_.titleHash), titleHash);
|
|
|
|
|
|
|
|
|
|
query.where(p1, p2);
|
2013-07-24 15:39:20 +02:00
|
|
|
TypedQuery<FeedEntryContent> q = em.createQuery(query);
|
|
|
|
|
return Iterables.getFirst(q.getResultList(), null);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int deleteWithoutEntries(int max) {
|
|
|
|
|
CriteriaQuery<FeedEntryContent> query = builder.createQuery(getType());
|
|
|
|
|
Root<FeedEntryContent> root = query.from(getType());
|
|
|
|
|
|
2013-07-25 09:17:33 +02:00
|
|
|
Join<FeedEntryContent, FeedEntry> join = root.join(FeedEntryContent_.entries, JoinType.LEFT);
|
2013-07-24 15:39:20 +02:00
|
|
|
query.where(builder.isNull(join.get(FeedEntry_.id)));
|
|
|
|
|
TypedQuery<FeedEntryContent> q = em.createQuery(query);
|
|
|
|
|
q.setMaxResults(max);
|
|
|
|
|
|
|
|
|
|
List<FeedEntryContent> list = q.getResultList();
|
|
|
|
|
int deleted = list.size();
|
|
|
|
|
return deleted;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|