Package com.mysema.query.jpa.hibernate

Examples of com.mysema.query.jpa.hibernate.HibernateQuery


    status.setTags(tags);
    return status;
  }

  public List<FeedEntryStatus> findStarred(User user, Date newerThan, int offset, int limit, ReadingOrder order, boolean includeContent) {
    HibernateQuery query = newQuery().from(status).where(status.user.eq(user), status.starred.isTrue());
    if (newerThan != null) {
      query.where(status.entryInserted.gt(newerThan));
    }

    if (order == ReadingOrder.asc) {
      query.orderBy(status.entryUpdated.asc(), status.id.asc());
    } else {
      query.orderBy(status.entryUpdated.desc(), status.id.desc());
    }

    query.offset(offset).limit(limit).setTimeout(config.getApplicationSettings().getQueryTimeout());

    List<FeedEntryStatus> statuses = query.list(status);
    for (FeedEntryStatus status : statuses) {
      status = handleStatus(user, status, status.getSubscription(), status.getEntry());
      fetchTags(user, status);
    }
    return lazyLoadContent(includeContent, statuses);
View Full Code Here


  }

  private HibernateQuery buildQuery(User user, FeedSubscription sub, boolean unreadOnly, List<FeedEntryKeyword> keywords, Date newerThan,
      int offset, int limit, ReadingOrder order, Date last, String tag) {

    HibernateQuery query = newQuery().from(entry).where(entry.feed.eq(sub.getFeed()));

    if (keywords != null) {
      query.join(entry.content, content);

      for (FeedEntryKeyword keyword : keywords) {
        BooleanBuilder or = new BooleanBuilder();
        or.or(content.content.containsIgnoreCase(keyword.getKeyword()));
        or.or(content.title.containsIgnoreCase(keyword.getKeyword()));
        if (keyword.getMode() == Mode.EXCLUDE) {
          or.not();
        }
        query.where(or);
      }
    }
    query.leftJoin(entry.statuses, status).on(status.subscription.id.eq(sub.getId()));

    if (unreadOnly && tag == null) {
      BooleanBuilder or = new BooleanBuilder();
      or.or(status.read.isNull());
      or.or(status.read.isFalse());
      query.where(or);

      Date unreadThreshold = config.getApplicationSettings().getUnreadThreshold();
      if (unreadThreshold != null) {
        query.where(entry.updated.goe(unreadThreshold));
      }
    }

    if (tag != null) {
      BooleanBuilder and = new BooleanBuilder();
      and.and(entryTag.user.id.eq(user.getId()));
      and.and(entryTag.name.eq(tag));
      query.join(entry.tags, entryTag).on(and);
    }

    if (newerThan != null) {
      query.where(entry.inserted.goe(newerThan));
    }

    if (last != null) {
      if (order == ReadingOrder.desc) {
        query.where(entry.updated.gt(last));
      } else {
        query.where(entry.updated.lt(last));
      }
    }

    if (order != null) {
      if (order == ReadingOrder.asc) {
        query.orderBy(entry.updated.asc(), entry.id.asc());
      } else {
        query.orderBy(entry.updated.desc(), entry.id.desc());
      }
    }
    if (offset > -1) {
      query.offset(offset);
    }
    if (limit > -1) {
      query.limit(limit);
    }
    int timeout = config.getApplicationSettings().getQueryTimeout();
    if (timeout > 0) {
      query.setTimeout(timeout / 1000);
    }
    return query;
  }
View Full Code Here

    int capacity = offset + limit;
    Comparator<FeedEntryStatus> comparator = order == ReadingOrder.desc ? STATUS_COMPARATOR_DESC : STATUS_COMPARATOR_ASC;
    FixedSizeSortedSet<FeedEntryStatus> set = new FixedSizeSortedSet<FeedEntryStatus>(capacity, comparator);
    for (FeedSubscription sub : subs) {
      Date last = (order != null && set.isFull()) ? set.last().getEntryUpdated() : null;
      HibernateQuery query = buildQuery(user, sub, unreadOnly, keywords, newerThan, -1, capacity, order, last, tag);
      List<Tuple> tuples = query.list(entry.id, entry.updated, status.id);
      for (Tuple tuple : tuples) {
        Long id = tuple.get(entry.id);
        Date updated = tuple.get(entry.updated);
        Long statusId = tuple.get(status.id);
View Full Code Here

    return statuses;
  }

  public UnreadCount getUnreadCount(User user, FeedSubscription subscription) {
    UnreadCount uc = null;
    HibernateQuery query = buildQuery(user, subscription, true, null, null, -1, -1, null, null, null);
    List<Tuple> tuples = query.list(entry.count(), entry.updated.max());
    for (Tuple tuple : tuples) {
      Long count = tuple.get(entry.count());
      Date updated = tuple.get(entry.updated.max());
      uc = new UnreadCount(subscription.getId(), count, updated);
    }
View Full Code Here

  protected GenericDAO(SessionFactory sessionFactory) {
    super(sessionFactory);
  }

  protected HibernateQuery newQuery() {
    return new HibernateQuery(currentSession());
  }
View Full Code Here

  public List<Feed> findNextUpdatable(int count, Date lastLoginThreshold) {
    BooleanBuilder disabledDatePredicate = new BooleanBuilder();
    disabledDatePredicate.or(feed.disabledUntil.isNull());
    disabledDatePredicate.or(feed.disabledUntil.lt(new Date()));

    HibernateQuery query = newQuery().from(feed);
    if (lastLoginThreshold != null) {
      QFeedSubscription subs = QFeedSubscription.feedSubscription;
      QUser user = QUser.user;
      query.join(feed.subscriptions, subs).join(subs.user, user).where(disabledDatePredicate, user.lastLogin.gt(lastLoginThreshold));
    } else {
      query.where(disabledDatePredicate);
    }

    return query.orderBy(feed.disabledUntil.asc()).limit(count).distinct().list(feed);
  }
View Full Code Here

TOP

Related Classes of com.mysema.query.jpa.hibernate.HibernateQuery

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.