forked from Archives/Athou_commafeed
use metamodel
This commit is contained in:
@@ -8,8 +8,8 @@ import javax.persistence.NoResultException;
|
||||
import org.apache.commons.lang.ObjectUtils;
|
||||
|
||||
import com.commafeed.backend.model.FeedCategory;
|
||||
import com.commafeed.backend.model.FeedCategory_;
|
||||
import com.commafeed.backend.model.User;
|
||||
import com.commafeed.frontend.utils.ModelFactory.MF;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.uaihebert.model.EasyCriteria;
|
||||
@@ -20,27 +20,27 @@ public class FeedCategoryDAO extends GenericDAO<FeedCategory> {
|
||||
|
||||
public List<FeedCategory> findAll(User user) {
|
||||
EasyCriteria<FeedCategory> criteria = createCriteria();
|
||||
criteria.andEquals(MF.i(proxy().getUser()), user);
|
||||
criteria.andEquals(FeedCategory_.user.getName(), user);
|
||||
|
||||
criteria.innerJoinFetch(MF.i(proxy().getUser()));
|
||||
criteria.innerJoinFetch(FeedCategory_.user.getName());
|
||||
return criteria.getResultList();
|
||||
}
|
||||
|
||||
public FeedCategory findById(User user, Long id) {
|
||||
EasyCriteria<FeedCategory> criteria = createCriteria();
|
||||
criteria.andEquals(MF.i(proxy().getUser()), user);
|
||||
criteria.andEquals(MF.i(proxy().getId()), id);
|
||||
criteria.andEquals(FeedCategory_.user.getName(), user);
|
||||
criteria.andEquals(FeedCategory_.id.getName(), id);
|
||||
return Iterables.getFirst(criteria.getResultList(), null);
|
||||
}
|
||||
|
||||
public FeedCategory findByName(User user, String name, FeedCategory parent) {
|
||||
EasyCriteria<FeedCategory> criteria = createCriteria();
|
||||
criteria.andEquals(MF.i(proxy().getUser()), user);
|
||||
criteria.andEquals(MF.i(proxy().getName()), name);
|
||||
criteria.andEquals(FeedCategory_.user.getName(), user);
|
||||
criteria.andEquals(FeedCategory_.name.getName(), name);
|
||||
if (parent == null) {
|
||||
criteria.andIsNull(MF.i(proxy().getParent()));
|
||||
criteria.andIsNull(FeedCategory_.parent.getName());
|
||||
} else {
|
||||
criteria.andEquals(MF.i(proxy().getParent()), parent);
|
||||
criteria.andEquals(FeedCategory_.parent.getName(), parent);
|
||||
}
|
||||
|
||||
FeedCategory category = null;
|
||||
|
||||
@@ -14,7 +14,6 @@ import org.apache.commons.lang.time.DateUtils;
|
||||
|
||||
import com.commafeed.backend.model.Feed;
|
||||
import com.commafeed.backend.model.Feed_;
|
||||
import com.commafeed.frontend.utils.ModelFactory.MF;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.uaihebert.model.EasyCriteria;
|
||||
|
||||
@@ -52,14 +51,14 @@ public class FeedDAO extends GenericDAO<Feed> {
|
||||
}
|
||||
|
||||
public Feed findByUrl(String url) {
|
||||
List<Feed> feeds = findByField(MF.i(proxy().getUrl()), url);
|
||||
List<Feed> feeds = findByField(Feed_.url, url);
|
||||
return Iterables.getFirst(feeds, null);
|
||||
}
|
||||
|
||||
public Feed findByIdWithEntries(Long feedId, int offset, int limit) {
|
||||
EasyCriteria<Feed> criteria = createCriteria();
|
||||
criteria.andEquals(MF.i(proxy().getId()), feedId);
|
||||
criteria.leftJoinFetch(MF.i(proxy().getEntries()));
|
||||
criteria.andEquals(Feed_.id.getName(), feedId);
|
||||
criteria.leftJoinFetch(Feed_.entries.getName());
|
||||
|
||||
criteria.setFirstResult(offset);
|
||||
criteria.setMaxResults(limit);
|
||||
|
||||
@@ -10,7 +10,6 @@ import javax.persistence.criteria.Root;
|
||||
import com.commafeed.backend.model.Feed;
|
||||
import com.commafeed.backend.model.FeedEntry;
|
||||
import com.commafeed.backend.model.FeedEntry_;
|
||||
import com.commafeed.frontend.utils.ModelFactory.MF;
|
||||
import com.uaihebert.model.EasyCriteria;
|
||||
|
||||
@Stateless
|
||||
@@ -20,8 +19,8 @@ public class FeedEntryDAO extends GenericDAO<FeedEntry> {
|
||||
public List<FeedEntry> findByGuids(List<String> guids) {
|
||||
EasyCriteria<FeedEntry> criteria = createCriteria();
|
||||
criteria.setDistinctTrue();
|
||||
criteria.andStringIn(MF.i(proxy().getGuid()), guids);
|
||||
criteria.leftJoinFetch(MF.i(proxy().getFeeds()));
|
||||
criteria.andStringIn(FeedEntry_.guid.getName(), guids);
|
||||
criteria.leftJoinFetch(FeedEntry_.feeds.getName());
|
||||
return criteria.getResultList();
|
||||
}
|
||||
|
||||
|
||||
@@ -21,11 +21,9 @@ import com.commafeed.backend.model.FeedEntryContent_;
|
||||
import com.commafeed.backend.model.FeedEntryStatus;
|
||||
import com.commafeed.backend.model.FeedEntryStatus_;
|
||||
import com.commafeed.backend.model.FeedEntry_;
|
||||
import com.commafeed.backend.model.FeedSubscription;
|
||||
import com.commafeed.backend.model.FeedSubscription_;
|
||||
import com.commafeed.backend.model.User;
|
||||
import com.commafeed.backend.model.UserSettings.ReadingOrder;
|
||||
import com.commafeed.frontend.utils.ModelFactory.MF;
|
||||
import com.google.api.client.util.Lists;
|
||||
import com.google.api.client.util.Maps;
|
||||
import com.uaihebert.model.EasyCriteria;
|
||||
@@ -37,13 +35,13 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
||||
public FeedEntryStatus findById(User user, Long id) {
|
||||
|
||||
EasyCriteria<FeedEntryStatus> criteria = createCriteria();
|
||||
criteria.andEquals(MF.i(proxy().getId()), id);
|
||||
criteria.andEquals(FeedEntryStatus_.id.getName(), id);
|
||||
|
||||
criteria.innerJoinFetch(MF.i(proxy().getSubscription()));
|
||||
criteria.innerJoinFetch(MF.i(proxy().getEntry()));
|
||||
criteria.innerJoinFetch(FeedEntryStatus_.subscription.getName());
|
||||
criteria.innerJoinFetch(FeedEntryStatus_.entry.getName());
|
||||
|
||||
criteria.andJoinEquals(MF.i(proxy().getSubscription()),
|
||||
MF.i(MF.p(FeedSubscription.class).getUser()), user);
|
||||
criteria.andJoinEquals(FeedEntryStatus_.subscription.getName(),
|
||||
FeedSubscription_.user.getName(), user);
|
||||
|
||||
FeedEntryStatus status = null;
|
||||
try {
|
||||
@@ -54,8 +52,8 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
||||
return status;
|
||||
}
|
||||
|
||||
public List<FeedEntryStatus> findByKeywords(User user,
|
||||
String keywords, int offset, int limit, boolean includeContent) {
|
||||
public List<FeedEntryStatus> findByKeywords(User user, String keywords,
|
||||
int offset, int limit, boolean includeContent) {
|
||||
|
||||
String joinedKeywords = StringUtils.join(
|
||||
keywords.toLowerCase().split(" "), "%");
|
||||
@@ -136,8 +134,7 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
||||
|
||||
public List<FeedEntryStatus> findByFeed(Feed feed, User user,
|
||||
boolean unreadOnly, ReadingOrder order, boolean includeContent) {
|
||||
return findByFeed(feed, user, unreadOnly, -1, -1, order,
|
||||
includeContent);
|
||||
return findByFeed(feed, user, unreadOnly, -1, -1, order, includeContent);
|
||||
}
|
||||
|
||||
public List<FeedEntryStatus> findByFeed(Feed feed, User user,
|
||||
@@ -169,16 +166,16 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
||||
return q.getResultList();
|
||||
}
|
||||
|
||||
public List<FeedEntryStatus> findByCategories(List<FeedCategory> categories,
|
||||
User user, boolean unreadOnly, ReadingOrder order,
|
||||
boolean includeContent) {
|
||||
public List<FeedEntryStatus> findByCategories(
|
||||
List<FeedCategory> categories, User user, boolean unreadOnly,
|
||||
ReadingOrder order, boolean includeContent) {
|
||||
return findByCategories(categories, user, unreadOnly, -1, -1, order,
|
||||
includeContent);
|
||||
}
|
||||
|
||||
public List<FeedEntryStatus> findByCategories(List<FeedCategory> categories,
|
||||
User user, boolean unreadOnly, int offset, int limit,
|
||||
ReadingOrder order, boolean includeContent) {
|
||||
public List<FeedEntryStatus> findByCategories(
|
||||
List<FeedCategory> categories, User user, boolean unreadOnly,
|
||||
int offset, int limit, ReadingOrder order, boolean includeContent) {
|
||||
|
||||
CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType());
|
||||
Root<FeedEntryStatus> root = query.from(getType());
|
||||
@@ -225,14 +222,14 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
||||
|
||||
public void markCategoryEntries(User user, List<FeedCategory> categories,
|
||||
Date olderThan) {
|
||||
List<FeedEntryStatus> statuses = findByCategories(categories, user, true,
|
||||
ReadingOrder.desc, false);
|
||||
List<FeedEntryStatus> statuses = findByCategories(categories, user,
|
||||
true, ReadingOrder.desc, false);
|
||||
update(markList(statuses, olderThan));
|
||||
}
|
||||
|
||||
public void markAllEntries(User user, Date olderThan) {
|
||||
List<FeedEntryStatus> statuses = findAll(user, true,
|
||||
ReadingOrder.desc, false);
|
||||
List<FeedEntryStatus> statuses = findAll(user, true, ReadingOrder.desc,
|
||||
false);
|
||||
update(markList(statuses, olderThan));
|
||||
}
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ import javax.ejb.Stateless;
|
||||
import com.commafeed.backend.model.Feed;
|
||||
import com.commafeed.backend.model.FeedCategory;
|
||||
import com.commafeed.backend.model.FeedSubscription;
|
||||
import com.commafeed.backend.model.FeedSubscription_;
|
||||
import com.commafeed.backend.model.User;
|
||||
import com.commafeed.frontend.utils.ModelFactory.MF;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.uaihebert.factory.EasyCriteriaFactory;
|
||||
import com.uaihebert.model.EasyCriteria;
|
||||
@@ -17,37 +17,35 @@ import com.uaihebert.model.EasyCriteria;
|
||||
@SuppressWarnings("serial")
|
||||
public class FeedSubscriptionDAO extends GenericDAO<FeedSubscription> {
|
||||
|
||||
|
||||
|
||||
public FeedSubscription findById(User user, Long id) {
|
||||
EasyCriteria<FeedSubscription> criteria = createCriteria();
|
||||
criteria.andEquals(MF.i(proxy().getUser()), user);
|
||||
criteria.andEquals(MF.i(proxy().getId()), id);
|
||||
criteria.leftJoinFetch(MF.i(proxy().getFeed()));
|
||||
criteria.leftJoinFetch(MF.i(proxy().getUser()));
|
||||
criteria.andEquals(FeedSubscription_.user.getName(), user);
|
||||
criteria.andEquals(FeedSubscription_.id.getName(), id);
|
||||
criteria.leftJoinFetch(FeedSubscription_.feed.getName());
|
||||
criteria.leftJoinFetch(FeedSubscription_.user.getName());
|
||||
return Iterables.getFirst(criteria.getResultList(), null);
|
||||
}
|
||||
|
||||
public List<FeedSubscription> findByFeed(Feed feed) {
|
||||
EasyCriteria<FeedSubscription> criteria = createCriteria();
|
||||
criteria.andEquals(MF.i(proxy().getFeed()), feed);
|
||||
criteria.andEquals(FeedSubscription_.feed.getName(), feed);
|
||||
return criteria.getResultList();
|
||||
}
|
||||
|
||||
public FeedSubscription findByFeed(User user, Feed feed) {
|
||||
EasyCriteria<FeedSubscription> criteria = createCriteria();
|
||||
criteria.andEquals(MF.i(proxy().getUser()), user);
|
||||
criteria.andEquals(MF.i(proxy().getFeed()), feed);
|
||||
criteria.andEquals(FeedSubscription_.user.getName(), user);
|
||||
criteria.andEquals(FeedSubscription_.feed.getName(), feed);
|
||||
return Iterables.getFirst(criteria.getResultList(), null);
|
||||
}
|
||||
|
||||
public List<FeedSubscription> findAll(User user) {
|
||||
EasyCriteria<FeedSubscription> criteria = createCriteria();
|
||||
criteria.andEquals(MF.i(proxy().getUser()), user);
|
||||
criteria.andEquals(FeedSubscription_.user.getName(), user);
|
||||
|
||||
criteria.innerJoinFetch(MF.i(proxy().getFeed()));
|
||||
criteria.innerJoinFetch(MF.i(proxy().getUser()));
|
||||
criteria.leftJoinFetch(MF.i(proxy().getCategory()));
|
||||
criteria.innerJoinFetch(FeedSubscription_.feed.getName());
|
||||
criteria.innerJoinFetch(FeedSubscription_.user.getName());
|
||||
criteria.leftJoinFetch(FeedSubscription_.category.getName());
|
||||
return criteria.getResultList();
|
||||
}
|
||||
|
||||
@@ -55,8 +53,8 @@ public class FeedSubscriptionDAO extends GenericDAO<FeedSubscription> {
|
||||
FeedCategory category) {
|
||||
EasyCriteria<FeedSubscription> criteria = EasyCriteriaFactory
|
||||
.createQueryCriteria(em, getType());
|
||||
criteria.andEquals(MF.i(proxy().getUser()), user);
|
||||
criteria.andEquals(MF.i(proxy().getCategory()), category);
|
||||
criteria.andEquals(FeedSubscription_.user.getName(), user);
|
||||
criteria.andEquals(FeedSubscription_.category.getName(), category);
|
||||
return criteria.getResultList();
|
||||
|
||||
}
|
||||
@@ -64,8 +62,8 @@ public class FeedSubscriptionDAO extends GenericDAO<FeedSubscription> {
|
||||
public List<FeedSubscription> findWithoutCategories(User user) {
|
||||
EasyCriteria<FeedSubscription> criteria = EasyCriteriaFactory
|
||||
.createQueryCriteria(em, getType());
|
||||
criteria.andEquals(MF.i(proxy().getUser()), user);
|
||||
criteria.andIsNull(MF.i(proxy().getCategory()));
|
||||
criteria.andEquals(FeedSubscription_.user.getName(), user);
|
||||
criteria.andIsNull(FeedSubscription_.category.getName());
|
||||
return criteria.getResultList();
|
||||
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@ import javax.persistence.TypedQuery;
|
||||
import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.CriteriaQuery;
|
||||
import javax.persistence.criteria.Root;
|
||||
import javax.persistence.metamodel.Attribute;
|
||||
|
||||
import com.commafeed.backend.model.AbstractModel;
|
||||
import com.commafeed.backend.model.FeedEntryStatus;
|
||||
import com.commafeed.frontend.utils.ModelFactory.MF;
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import com.uaihebert.factory.EasyCriteriaFactory;
|
||||
import com.uaihebert.model.EasyCriteria;
|
||||
@@ -124,9 +124,9 @@ public abstract class GenericDAO<T extends AbstractModel> implements
|
||||
return em.createQuery(query).getSingleResult();
|
||||
}
|
||||
|
||||
public List<T> findByField(String field, Object value) {
|
||||
public <V> List<T> findByField(Attribute<T, V> field, V value) {
|
||||
EasyCriteria<T> criteria = createCriteria();
|
||||
criteria.andEquals(field, value);
|
||||
criteria.andEquals(field.getName(), value);
|
||||
return criteria.getResultList();
|
||||
}
|
||||
|
||||
@@ -148,9 +148,4 @@ public abstract class GenericDAO<T extends AbstractModel> implements
|
||||
public EasyCriteria<T> createCriteria() {
|
||||
return EasyCriteriaFactory.createQueryCriteria(em, getType());
|
||||
}
|
||||
|
||||
protected T proxy() {
|
||||
return MF.p(getType());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import javax.ejb.Stateless;
|
||||
import com.commafeed.backend.model.User;
|
||||
import com.commafeed.backend.model.UserRole;
|
||||
import com.commafeed.backend.model.UserRole.Role;
|
||||
import com.commafeed.frontend.utils.ModelFactory.MF;
|
||||
import com.commafeed.backend.model.UserRole_;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
@@ -16,12 +16,12 @@ import com.google.common.collect.Sets;
|
||||
public class UserRoleDAO extends GenericDAO<UserRole> {
|
||||
|
||||
public List<UserRole> findAll(User user) {
|
||||
return findByField(MF.i(MF.p(UserRole.class).getUser()), user);
|
||||
return findByField(UserRole_.user, user);
|
||||
}
|
||||
|
||||
public Set<Role> findRoles(User user) {
|
||||
Set<Role> list = Sets.newHashSet();
|
||||
for (UserRole role : findByField(MF.i(proxy().getUser()), user)) {
|
||||
for (UserRole role : findByField(UserRole_.user, user)) {
|
||||
list.add(role.getRole());
|
||||
}
|
||||
return list;
|
||||
|
||||
@@ -5,7 +5,7 @@ import javax.persistence.NoResultException;
|
||||
|
||||
import com.commafeed.backend.model.User;
|
||||
import com.commafeed.backend.model.UserSettings;
|
||||
import com.commafeed.frontend.utils.ModelFactory.MF;
|
||||
import com.commafeed.backend.model.UserSettings_;
|
||||
import com.uaihebert.factory.EasyCriteriaFactory;
|
||||
import com.uaihebert.model.EasyCriteria;
|
||||
|
||||
@@ -17,7 +17,7 @@ public class UserSettingsDAO extends GenericDAO<UserSettings> {
|
||||
|
||||
EasyCriteria<UserSettings> criteria = EasyCriteriaFactory
|
||||
.createQueryCriteria(em, getType());
|
||||
criteria.andEquals(MF.i(proxy().getUser()), user);
|
||||
criteria.andEquals(UserSettings_.user.getName(), user);
|
||||
|
||||
UserSettings settings = null;
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user