Java tutorial
// // 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(); } }