Subversion Repositories bacoAlunos

Rev

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

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

import pt.estgp.estgweb.domain.Announcement;

import java.util.List;
import java.util.ArrayList;
import java.util.Date;

import static org.hibernate.criterion.Restrictions.*;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.Criteria;
import jomm.dao.impl.AbstractDao;


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

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

    public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles)
    {
        if(roles == null)
        {
            roles = new ArrayList<String>();
            roles.add("all");
        }
        Criteria criteria = createCriteria();
        Criterion co = null;
        for(1.5.0/docs/api/java/lang/String.html">String role: roles)
        {
            Criterion cor = like("targetRoles","%" + role + "%");
            if(co == null)
                co = cor;
            else
                co = or(co,cor);
        }
        5+0%2Fdocs%2Fapi+Date">Date now = new 5+0%2Fdocs%2Fapi+Date">Date();
        criteria.add(co)
                .add(or(lt("startDate",now),isNull("startDate")))
                .add(or(gt("expireDate",now),isNull("expireDate")))
                .setMaxResults(maxAnnouncements)
                .addOrder(Order.desc("saveDate"));
        return criteria.list();
    }

    public static void main(1.5.0/docs/api/java/lang/String.html">String[] args)
    {
        AbstractDao.getCurrentSession().beginTransaction();
        List<String> roles = new ArrayList<String>();
        roles.add("admin");
        roles.add("all");
        List<Announcement> as =  new AnnouncementDaoImpl().findAnnouncements(5,roles);
        for(Announcement a : as)
        {
            1.5.0/docs/api/java/lang/System.html">System.out.println(a.getSaveDate() + ":" + a.getTitle() + " " + a.getOwner().getName() );
        }
        AbstractDao.getCurrentSession().beginTransaction().commit();
    }
}