Subversion Repositories bacoAlunos

Rev

Rev 1721 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.domain.dao.impl;

import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import pt.estgp.estgweb.domain.RepositoryDocumentImpl;

import java.util.List;

import static org.hibernate.criterion.Restrictions.*;

/**
 * @author Jorge Machado
 * @date 28/Fev/2008
 * @time 2:51:06
 * @see pt.estgp.estgweb.domain.dao.impl
 */

public class RepositoryDocumentDaoImpl extends RepositoryDocumentDao
{
    private RepositoryDocumentDaoImpl()
    {
    }

    public static RepositoryDocumentDaoImpl getInstance()
    {
        if (myInstance == null)
            myInstance = new RepositoryDocumentDaoImpl();
        return (RepositoryDocumentDaoImpl) myInstance;
    }


    public List<RepositoryDocumentImpl> findDocumentsSortPublishDateDesc(boolean onlyVisible,long collectionId)
    {
        return findDocuments(onlyVisible,collectionId,"publishDate","desc");
    }
    public List<RepositoryDocumentImpl> findDocumentsSortPublishDateAsc(boolean onlyVisible,long collectionId)
    {
        return findDocuments(onlyVisible,collectionId,"publishDate","asc");
    }
    public List<RepositoryDocumentImpl> findDocumentsSortTitleDesc(boolean onlyVisible,long collectionId)
    {
        return findDocuments(onlyVisible,collectionId,"title","desc");
    }
    public List<RepositoryDocumentImpl> findDocumentsSortTitleAsc(boolean onlyVisible,long collectionId)
    {
        return findDocuments(onlyVisible,collectionId,"title","asc");
    }

    public List<RepositoryDocumentImpl> findDocumentsByTitle(1.5.0/docs/api/java/lang/String.html">String title)
    {
        Criteria c = createCriteria()
                .createAlias("repositoryDocumentFiles", "rf")
                .add(or(like("title", "%" + title.trim() + "%"), like("rf.title", "%" + title.trim() + "%")))
                .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
                ;
        return c.list();
    }
    public List<RepositoryDocumentImpl> findDocuments(boolean onlyVisible,long collectionId)
    {
        return findDocuments(onlyVisible, collectionId,"id","asc");
    }
    public List<RepositoryDocumentImpl> findDocuments(boolean onlyVisible,long collectionId,1.5.0/docs/api/java/lang/String.html">String orderField, 1.5.0/docs/api/java/lang/String.html">String orderDirection)
    {
        1.5.0/docs/api/java/lang/String.html">String orderFinalField = orderField == null ? "publishDate" : orderField;
        Order order = orderDirection.equals("asc") ? Order.asc(orderFinalField) : Order.desc(orderFinalField);
        Criteria c = createCriteria()
                .add(eq("collection.id",collectionId))
                .addOrder(order)
                .addOrder(Order.desc("saveDate"));
        if(onlyVisible)
            c.add(eq("visible",true));
        return c.list();
    }


    public List<RepositoryDocumentImpl> findDocumentsByTitleAndCollection(1.5.0/docs/api/java/lang/String.html">String title, long colId) {
        Criteria c = createCriteria()
                .add(eq("collection.id",colId))
                .add(eq("title",title));
        return c.list();
    }
}