Subversion Repositories bacoAlunos

Rev

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

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

import pt.estgp.estgweb.domain.BlogImpl;
import pt.estgp.estgweb.domain.BlogPostImpl;

import java.util.List;
import java.util.Calendar;
import java.util.Iterator;

import static org.hibernate.criterion.Restrictions.*;
import org.hibernate.criterion.Order;
import org.hibernate.Query;
import jomm.utils.MyCalendar;

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

public class BlogPostDaoImpl extends BlogPostDao
{
    public static BlogPostDaoImpl getInstance()
    {
        if (myInstance == null)
            myInstance = new BlogPostDaoImpl();
        return (BlogPostDaoImpl) myInstance;
    }


    public List<BlogPostImpl> loadOwnedBlogPosts(long ownerId)
    {
        return createCriteria().add(eq("owner.id", ownerId)).list();
    }

    public List<BlogPostImpl> loadOwnedBlogPosts(long ownerId, long blogId)
    {
        return createCriteria().add(eq("owner.id", ownerId)).add(eq("blog.id",blogId)).list();
    }

    public List<BlogPostImpl> loadBlogPosts(long blogId, int month, int year)
    {
        1.5.0/docs/api/java/util/Calendar.html">Calendar bottom = new MyCalendar(year,month,1);
        int topMonth;
        int topYear = year;
        if(month == 12)
        {
            topMonth = 1;
            topYear++;
        }
        else
        {
            topMonth = month + 1;
        }
        1.5.0/docs/api/java/util/Calendar.html">Calendar top = new MyCalendar(topYear,topMonth,1,0,0,0);

        return createCriteria()
                .add(eq("blog.id", blogId))
                .add(gt("saveDate",bottom.getTime()))
                .add(lt("saveDate",top.getTime()))
                .addOrder(Order.desc("saveDate"))
                .list();
    }
    public List<BlogPostImpl> loadLastPosts(long blogId, int max)
    {
        return createCriteria()
                .add(eq("blog.id", blogId))
                .setMaxResults(max)
                .addOrder(Order.desc("saveDate"))
                .list();
    }

    public List<Object[]> loadMonths(long blogId)
    {
        1.5.0/docs/api/javax/management/Query.html">Query q = createQuery("select p.monthId, count(p.monthId) from p in class " + getReferenceClass().getName() + " where p.blog.id = " + blogId + " group by p.monthId");
        List<Object[]> l =  q.list();
        return l;
    }
}