diff --git a/pom.xml b/pom.xml
index 85729379..b8de943f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -162,12 +162,6 @@
-
- uaihebert.com
- EasyCriteria
- 2.1.0
-
-
com.google.guava
guava
diff --git a/src/main/java/com/commafeed/backend/dao/FeedCategoryDAO.java b/src/main/java/com/commafeed/backend/dao/FeedCategoryDAO.java
index 12f519e6..4731af7c 100644
--- a/src/main/java/com/commafeed/backend/dao/FeedCategoryDAO.java
+++ b/src/main/java/com/commafeed/backend/dao/FeedCategoryDAO.java
@@ -4,6 +4,9 @@ import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.NoResultException;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
import org.apache.commons.lang.ObjectUtils;
@@ -12,39 +15,54 @@ import com.commafeed.backend.model.FeedCategory_;
import com.commafeed.backend.model.User;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import com.uaihebert.model.EasyCriteria;
@Stateless
public class FeedCategoryDAO extends GenericDAO {
public List findAll(User user) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(FeedCategory_.user.getName(), user);
- criteria.innerJoinFetch(FeedCategory_.user.getName());
- return criteria.getResultList();
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ query.where(builder.equal(root.get(FeedCategory_.user), user));
+ root.fetch(FeedCategory_.user.getName());
+
+ return em.createQuery(query).getResultList();
}
public FeedCategory findById(User user, Long id) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(FeedCategory_.user.getName(), user);
- criteria.andEquals(FeedCategory_.id.getName(), id);
- return Iterables.getFirst(criteria.getResultList(), null);
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ Predicate p1 = builder.equal(root.get(FeedCategory_.user), user);
+ Predicate p2 = builder.equal(root.get(FeedCategory_.id), id);
+
+ query.where(p1, p2);
+
+ return Iterables.getFirst(em.createQuery(query).getResultList(), null);
}
public FeedCategory findByName(User user, String name, FeedCategory parent) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(FeedCategory_.user.getName(), user);
- criteria.andEquals(FeedCategory_.name.getName(), name);
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ List predicates = Lists.newArrayList();
+
+ predicates.add(builder.equal(root.get(FeedCategory_.user), user));
+ predicates.add(builder.equal(root.get(FeedCategory_.name), name));
+
if (parent == null) {
- criteria.andIsNull(FeedCategory_.parent.getName());
+ predicates.add(builder.isNull(root.get(FeedCategory_.parent)));
} else {
- criteria.andEquals(FeedCategory_.parent.getName(), parent);
+ predicates
+ .add(builder.equal(root.get(FeedCategory_.parent), parent));
}
+ query.where(predicates.toArray(new Predicate[0]));
+
FeedCategory category = null;
try {
- category = criteria.getSingleResult();
+ category = em.createQuery(query).getSingleResult();
} catch (NoResultException e) {
category = null;
}
@@ -52,15 +70,22 @@ public class FeedCategoryDAO extends GenericDAO {
}
public List findByParent(User user, FeedCategory parent) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(FeedCategory_.user.getName(), user);
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ List predicates = Lists.newArrayList();
+
+ predicates.add(builder.equal(root.get(FeedCategory_.user), user));
if (parent == null) {
- criteria.andIsNull(FeedCategory_.parent.getName());
+ predicates.add(builder.isNull(root.get(FeedCategory_.parent)));
} else {
- criteria.andEquals(FeedCategory_.parent.getName(), parent);
+ predicates
+ .add(builder.equal(root.get(FeedCategory_.parent), parent));
}
- return criteria.getResultList();
+ query.where(predicates.toArray(new Predicate[0]));
+
+ return em.createQuery(query).getResultList();
}
public List findAllChildrenCategories(User user,
diff --git a/src/main/java/com/commafeed/backend/dao/FeedDAO.java b/src/main/java/com/commafeed/backend/dao/FeedDAO.java
index 1b9bc07d..13e5e2f6 100644
--- a/src/main/java/com/commafeed/backend/dao/FeedDAO.java
+++ b/src/main/java/com/commafeed/backend/dao/FeedDAO.java
@@ -7,6 +7,7 @@ import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
@@ -18,7 +19,6 @@ import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.Feed_;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import com.uaihebert.model.EasyCriteria;
@Stateless
public class FeedDAO extends GenericDAO {
@@ -78,13 +78,15 @@ public class FeedDAO extends GenericDAO {
}
public Feed findByIdWithEntries(Long feedId, int offset, int limit) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(Feed_.id.getName(), feedId);
- criteria.leftJoinFetch(Feed_.entries.getName());
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
- criteria.setFirstResult(offset);
- criteria.setMaxResults(limit);
- return criteria.getSingleResult();
+ query.where(builder.equal(root.get(Feed_.id), feedId));
+ root.fetch(Feed_.entries, JoinType.LEFT);
+
+ TypedQuery q = em.createQuery(query);
+ limit(q, offset, limit);
+ return q.getSingleResult();
}
public List findByTopic(String topic) {
diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java
index 64300b29..51860a5c 100644
--- a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java
+++ b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java
@@ -31,23 +31,27 @@ import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserSettings.ReadingOrder;
import com.google.api.client.util.Lists;
import com.google.api.client.util.Maps;
-import com.uaihebert.model.EasyCriteria;
@Stateless
public class FeedEntryStatusDAO extends GenericDAO {
+ @SuppressWarnings("unchecked")
public FeedEntryStatus findById(User user, Long id) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(FeedEntryStatus_.id.getName(), id);
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
- criteria.innerJoinFetch(FeedEntryStatus_.subscription.getName());
- criteria.andJoinEquals(FeedEntryStatus_.subscription.getName(),
- FeedSubscription_.user.getName(), user);
+ Join join = (Join) root
+ .fetch(FeedEntryStatus_.subscription);
+
+ Predicate p1 = builder.equal(root.get(FeedEntryStatus_.id), id);
+ Predicate p2 = builder.equal(join.get(FeedSubscription_.user), user);
+
+ query.where(p1, p2);
FeedEntryStatus status = null;
try {
- status = criteria.getSingleResult();
+ status = em.createQuery(query).getSingleResult();
} catch (NoResultException e) {
status = null;
}
diff --git a/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java b/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java
index 21f98a4a..acf088b1 100644
--- a/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java
+++ b/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java
@@ -3,6 +3,10 @@ package com.commafeed.backend.dao;
import java.util.List;
import javax.ejb.Stateless;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedCategory;
@@ -10,59 +14,83 @@ import com.commafeed.backend.model.FeedSubscription;
import com.commafeed.backend.model.FeedSubscription_;
import com.commafeed.backend.model.User;
import com.google.common.collect.Iterables;
-import com.uaihebert.factory.EasyCriteriaFactory;
-import com.uaihebert.model.EasyCriteria;
@Stateless
public class FeedSubscriptionDAO extends GenericDAO {
public FeedSubscription findById(User user, Long id) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(FeedSubscription_.user.getName(), user);
- criteria.andEquals(FeedSubscription_.id.getName(), id);
- criteria.leftJoinFetch(FeedSubscription_.feed.getName());
- criteria.leftJoinFetch(FeedSubscription_.category.getName());
- return Iterables.getFirst(criteria.getResultList(), null);
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ Predicate p1 = builder.equal(root.get(FeedSubscription_.user), user);
+ Predicate p2 = builder.equal(root.get(FeedSubscription_.id), id);
+
+ root.fetch(FeedSubscription_.feed, JoinType.LEFT);
+ root.fetch(FeedSubscription_.category, JoinType.LEFT);
+
+ query.where(p1, p2);
+
+ return Iterables.getFirst(em.createQuery(query).getResultList(), null);
}
public List findByFeed(Feed feed) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(FeedSubscription_.feed.getName(), feed);
- return criteria.getResultList();
+ return findByField(FeedSubscription_.feed, feed);
}
public FeedSubscription findByFeed(User user, Feed feed) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(FeedSubscription_.user.getName(), user);
- criteria.andEquals(FeedSubscription_.feed.getName(), feed);
- return Iterables.getFirst(criteria.getResultList(), null);
+
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ Predicate p1 = builder.equal(root.get(FeedSubscription_.user), user);
+ Predicate p2 = builder.equal(root.get(FeedSubscription_.feed), feed);
+
+ root.fetch(FeedSubscription_.feed, JoinType.LEFT);
+ root.fetch(FeedSubscription_.category, JoinType.LEFT);
+
+ query.where(p1, p2);
+
+ return Iterables.getFirst(em.createQuery(query).getResultList(), null);
}
public List findAll(User user) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(FeedSubscription_.user.getName(), user);
- criteria.innerJoinFetch(FeedSubscription_.feed.getName());
- criteria.leftJoinFetch(FeedSubscription_.category.getName());
- return criteria.getResultList();
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ root.fetch(FeedSubscription_.feed, JoinType.LEFT);
+ root.fetch(FeedSubscription_.category, JoinType.LEFT);
+
+ query.where(builder.equal(root.get(FeedSubscription_.user), user));
+
+ return em.createQuery(query).getResultList();
}
public List findByCategory(User user,
FeedCategory category) {
- EasyCriteria criteria = EasyCriteriaFactory
- .createQueryCriteria(em, getType());
- criteria.andEquals(FeedSubscription_.user.getName(), user);
- criteria.andEquals(FeedSubscription_.category.getName(), category);
- return criteria.getResultList();
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ Predicate p1 = builder.equal(root.get(FeedSubscription_.user), user);
+ Predicate p2 = builder.equal(root.get(FeedSubscription_.category),
+ category);
+
+ query.where(p1, p2);
+
+ return em.createQuery(query).getResultList();
}
public List findWithoutCategories(User user) {
- EasyCriteria criteria = EasyCriteriaFactory
- .createQueryCriteria(em, getType());
- criteria.andEquals(FeedSubscription_.user.getName(), user);
- criteria.andIsNull(FeedSubscription_.category.getName());
- return criteria.getResultList();
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ Predicate p1 = builder.equal(root.get(FeedSubscription_.user), user);
+ Predicate p2 = builder.isNull(root.get(FeedSubscription_.category));
+
+ query.where(p1, p2);
+
+ return em.createQuery(query).getResultList();
}
}
diff --git a/src/main/java/com/commafeed/backend/dao/GenericDAO.java b/src/main/java/com/commafeed/backend/dao/GenericDAO.java
index 7671d1ca..d545b2c3 100644
--- a/src/main/java/com/commafeed/backend/dao/GenericDAO.java
+++ b/src/main/java/com/commafeed/backend/dao/GenericDAO.java
@@ -17,8 +17,6 @@ import org.hibernate.Session;
import com.commafeed.backend.model.AbstractModel;
import com.google.common.reflect.TypeToken;
-import com.uaihebert.factory.EasyCriteriaFactory;
-import com.uaihebert.model.EasyCriteria;
@SuppressWarnings("serial")
public abstract class GenericDAO {
@@ -73,30 +71,36 @@ public abstract class GenericDAO {
}
public List findAll() {
- return EasyCriteriaFactory.createQueryCriteria(em, getType())
- .getResultList();
+ CriteriaQuery query = builder.createQuery(getType());
+ query.from(getType());
+ return em.createQuery(query).getResultList();
}
public List findAll(int startIndex, int count) {
- EasyCriteria criteria = EasyCriteriaFactory.createQueryCriteria(em,
- getType());
- criteria.setMaxResults(count);
- criteria.setFirstResult(startIndex);
- return criteria.getResultList();
+ CriteriaQuery query = builder.createQuery(getType());
+ query.from(getType());
+ TypedQuery q = em.createQuery(query);
+ q.setMaxResults(count);
+ q.setFirstResult(startIndex);
+ return q.getResultList();
}
public List findAll(int startIndex, int count, String orderBy,
boolean asc) {
- EasyCriteria criteria = EasyCriteriaFactory.createQueryCriteria(em,
- getType());
- criteria.setMaxResults(count);
- criteria.setFirstResult(startIndex);
+
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
if (asc) {
- criteria.orderByAsc(orderBy);
+ query.orderBy(builder.asc(root.get(orderBy)));
} else {
- criteria.orderByDesc(orderBy);
+ query.orderBy(builder.desc(root.get(orderBy)));
}
- return criteria.getResultList();
+
+ TypedQuery q = em.createQuery(query);
+ q.setMaxResults(count);
+ q.setFirstResult(startIndex);
+ return q.getResultList();
}
public long getCount() {
@@ -107,10 +111,12 @@ public abstract class GenericDAO {
return em.createQuery(query).getSingleResult();
}
- public List findByField(Attribute field, V value) {
- EasyCriteria criteria = createCriteria();
- criteria.andEquals(field.getName(), value);
- return criteria.getResultList();
+ protected List findByField(Attribute field, V value) {
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ query.where(builder.equal(root.get(field.getName()), value));
+ return em.createQuery(query).getResultList();
}
protected void limit(TypedQuery> query, int offset, int limit) {
@@ -126,8 +132,4 @@ public abstract class GenericDAO {
protected Class getType() {
return (Class) type.getRawType();
}
-
- public EasyCriteria createCriteria() {
- return EasyCriteriaFactory.createQueryCriteria(em, getType());
- }
}
diff --git a/src/main/java/com/commafeed/backend/dao/UserRoleDAO.java b/src/main/java/com/commafeed/backend/dao/UserRoleDAO.java
index 38639372..d12ee8c6 100644
--- a/src/main/java/com/commafeed/backend/dao/UserRoleDAO.java
+++ b/src/main/java/com/commafeed/backend/dao/UserRoleDAO.java
@@ -4,25 +4,28 @@ import java.util.List;
import java.util.Set;
import javax.ejb.Stateless;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.Root;
import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserRole;
import com.commafeed.backend.model.UserRole.Role;
import com.commafeed.backend.model.UserRole_;
import com.google.common.collect.Sets;
-import com.uaihebert.factory.EasyCriteriaFactory;
-import com.uaihebert.model.EasyCriteria;
@Stateless
public class UserRoleDAO extends GenericDAO {
@Override
public List findAll() {
- EasyCriteria criteria = EasyCriteriaFactory
- .createQueryCriteria(em, getType());
- criteria.setDistinctTrue();
- criteria.leftJoinFetch(UserRole_.user.getName());
- return criteria.getResultList();
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+ query.distinct(true);
+
+ root.fetch(UserRole_.user, JoinType.LEFT);
+
+ return em.createQuery(query).getResultList();
}
public List findAll(User user) {
diff --git a/src/main/java/com/commafeed/backend/dao/UserSettingsDAO.java b/src/main/java/com/commafeed/backend/dao/UserSettingsDAO.java
index aaee4ed9..b22d806a 100644
--- a/src/main/java/com/commafeed/backend/dao/UserSettingsDAO.java
+++ b/src/main/java/com/commafeed/backend/dao/UserSettingsDAO.java
@@ -2,25 +2,26 @@ package com.commafeed.backend.dao;
import javax.ejb.Stateless;
import javax.persistence.NoResultException;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Root;
import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserSettings;
import com.commafeed.backend.model.UserSettings_;
-import com.uaihebert.factory.EasyCriteriaFactory;
-import com.uaihebert.model.EasyCriteria;
@Stateless
public class UserSettingsDAO extends GenericDAO {
public UserSettings findByUser(User user) {
- EasyCriteria criteria = EasyCriteriaFactory
- .createQueryCriteria(em, getType());
- criteria.andEquals(UserSettings_.user.getName(), user);
+ CriteriaQuery query = builder.createQuery(getType());
+ Root root = query.from(getType());
+
+ query.where(builder.equal(root.get(UserSettings_.user), user));
UserSettings settings = null;
try {
- settings = criteria.getSingleResult();
+ settings = em.createQuery(query).getSingleResult();
} catch (NoResultException e) {
settings = null;
}