Java tutorial
// // Copyright (c) 2011 Linkeos. // // This file is part of Elveos.org. // Elveos.org is free software: you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the // Free Software Foundation, either version 3 of the License, or (at your // option) any later version. // // Elveos.org is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for // more details. // You should have received a copy of the GNU General Public License along // with Elveos.org. If not, see http://www.gnu.org/licenses/. // package com.bloatit.data.queries; import org.hibernate.Criteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import com.bloatit.data.DaoMember; import com.bloatit.data.DaoTeam; import com.bloatit.data.DaoUserContent; import com.bloatit.data.SessionManager; /** * The Class DaoUserContentQuery is a generic way of querying for DaoUserContent * using criterias. * * @param <T> the generic type */ public class DaoUserContentQuery<T extends DaoUserContent> extends DaoIdentifiableQuery<T> { private static String CREATION_DATE = "creationDate"; private static String MEMBER = "member"; private static String MEMBER_LOGIN = "m.member"; private static String FILES = "files"; private static String IS_DELETED = "isDeleted"; private static String AS_TEAM = "asTeam"; /** * Instantiates a new dao user content query. * * @param criteria the criteria to use for this query */ protected DaoUserContentQuery(final Criteria criteria) { super(criteria); criteria.createAlias("member", "m"); criteria.setReadOnly(true); } /** * Instantiates a new dao user content query. */ public DaoUserContentQuery() { this(SessionManager.getSessionFactory().getCurrentSession().createCriteria(DaoUserContent.class)); } /** * Group by member. */ public void groupByMember() { add(Projections.groupProperty(MEMBER)); } /** * Group by as team. */ public void groupByAsTeam() { add(Projections.groupProperty(AS_TEAM)); } /** * Order by member. * * @param order the order (ASC/DESC) */ public void orderByMember(final DaoAbstractQuery.OrderType order) { if (order == OrderType.ASC) { addOrder(Order.asc(MEMBER_LOGIN)); } else { addOrder(Order.desc(MEMBER_LOGIN)); } } /** * Order by as team. * * @param order the order (ASC/DESC) */ public void orderByAsTeam(final DaoAbstractQuery.OrderType order) { if (order == OrderType.ASC) { addOrder(Order.asc(AS_TEAM)); } else { addOrder(Order.desc(AS_TEAM)); } } /** * Order by creation date. * * @param order the order (ASC/DESC) */ public void orderByCreationDate(final OrderType order) { if (order == OrderType.ASC) { addOrder(Order.asc(CREATION_DATE)); } else { addOrder(Order.desc(CREATION_DATE)); } } /** * show Deleted content only. */ public void deletedOnly() { add(Restrictions.eq(IS_DELETED, true)); SessionManager.getSessionFactory().getCurrentSession().disableFilter("usercontent.nonDeleted"); } /** * show Non deleted content only. */ public final void nonDeletedOnly() { add(Restrictions.eq(IS_DELETED, false)); } /** * Show content without file */ public void withoutFile() { add(Restrictions.isEmpty(FILES)); } /** * Show content with file. */ public void withFile() { add(Restrictions.isNotEmpty(FILES)); } /** * Show content created as team. */ public void withAnyTeam() { add(Restrictions.isNotNull(AS_TEAM)); } /** * Show content with no team */ public void withNoTeam() { add(Restrictions.isNull(AS_TEAM)); } /** * Show content created from member. * * @param member the member */ public void fromMember(final DaoMember member) { add(Restrictions.eq(MEMBER, member)); } /** * Show content created from team. * * @param team the team */ public void fromTeam(final DaoTeam team) { add(Restrictions.eq(AS_TEAM, team)); } }