com.wooki.domain.dao.ActivityDAOImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.wooki.domain.dao.ActivityDAOImpl.java

Source

//
// Copyright 2009 Robin Komiwes, Bruno Verachten, Christophe Cordenier
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

package com.wooki.domain.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.wooki.domain.model.activity.AbstractBookActivity;
import com.wooki.domain.model.activity.AbstractChapterActivity;
import com.wooki.domain.model.activity.AccountActivity;
import com.wooki.domain.model.activity.AccountEventType;
import com.wooki.domain.model.activity.Activity;
import com.wooki.domain.model.activity.BookActivity;
import com.wooki.domain.model.activity.BookEventType;
import com.wooki.domain.model.activity.CommentActivity;
import com.wooki.services.db.QueryFilter;

public class ActivityDAOImpl extends WookiGenericDAOImpl<Activity, Long> implements ActivityDAO {

    public ActivityDAOImpl(Session session) {
        super(session);
    }

    @Override
    protected void applyFilters(Criteria crit, QueryFilter... filters) {
        super.applyFilters(crit, filters);
        crit.addOrder(Order.desc("creationDate"));
    }

    public List<Activity> list(QueryFilter... filters) {
        Criteria crit = session.createCriteria(Activity.class);
        applyFilters(crit, filters);
        return crit.list();
    }

    public List<Activity> listAllActivitiesOnComment(Long commentId, QueryFilter... filters) {
        assert commentId != null;
        Criteria crit = session.createCriteria(CommentActivity.class);
        crit.add(Restrictions.eq("comment.id", commentId));
        applyFilters(crit, filters);
        return crit.list();
    }

    public List<Activity> listAllActivitiesOnChapter(Long chapterId, QueryFilter... filters) {
        assert chapterId != null;
        Criteria crit = session.createCriteria(AbstractChapterActivity.class);
        crit.add(Restrictions.eq("chapter.id", chapterId));
        applyFilters(crit, filters);
        return crit.list();
    }

    public List<Activity> listAllActivitiesOnBook(Long bookId, QueryFilter... filters) {
        assert bookId != null;
        Criteria crit = session.createCriteria(AbstractBookActivity.class);
        crit.add(Restrictions.eq("book.id", bookId));
        applyFilters(crit, filters);
        return crit.list();
    }

    public List<Activity> listCoauthorBookActivity(Long userId, QueryFilter... filters) {
        assert userId != null;

        Criteria crit = session.createCriteria(AbstractBookActivity.class);
        crit.add(Restrictions.ne("user.id", userId)).createCriteria("book").createAlias("users", "u")
                .add(Restrictions.eq("u.id", userId));
        applyFilters(crit, filters);
        return crit.list();
    }

    public List<Activity> listUserActivity(Long userId, QueryFilter... filters) {
        assert userId != null;

        Criteria crit = session.createCriteria(AbstractBookActivity.class, "a");
        crit.add(Restrictions.eq("a.user.id", userId));
        applyFilters(crit, filters);

        return crit.list();
    }

    public List<Activity> listUserPublicActivity(Long userId, QueryFilter... filters) {
        assert userId != null;

        Criteria crit = session.createCriteria(AbstractBookActivity.class, "a");
        crit.add(Restrictions.eq("a.user.id", userId));
        crit.add(Restrictions.eq("a.resourceUnavailable", false));
        applyFilters(crit, filters);

        return crit.list();
    }

    public List<Activity> listActivityOnBook(Long userId, QueryFilter... filters) {
        assert userId != null;

        Criteria crit = session.createCriteria(AbstractBookActivity.class);
        crit.add(Restrictions.eq("user.id", userId)).createCriteria("book").createAlias("users", "u")
                .add(Restrictions.eq("u.id", userId));
        applyFilters(crit, filters);
        return crit.list();
    }

    public List<Activity> listBookCreationActivity(QueryFilter... filters) {
        Criteria crit = session.createCriteria(BookActivity.class);
        crit.add(Restrictions.eq("type", BookEventType.CREATE));
        applyFilters(crit, filters);
        return crit.list();
    }

    public List<Activity> listAccountActivity(QueryFilter... filters) {
        Criteria crit = session.createCriteria(AccountActivity.class);
        crit.add(Restrictions.eq("type", AccountEventType.JOIN));
        applyFilters(crit, filters);
        return crit.list();
    }

}