Subversion Repositories bacoAlunos

Rev

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

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

import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.TeacherImpl;
import pt.estgp.estgweb.domain.dao.DaoUtils;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.estgp.estgweb.utils.DatesUtils;
import static org.hibernate.criterion.Restrictions.*;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.Criteria;

import java.util.List;
import java.util.Set;

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

public class CourseUnitDaoImpl extends CourseUnitDao
{


    private CourseUnitDaoImpl()
    {
    }

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

    public List<CourseUnit> loadBySigesCode(1.5.0/docs/api/java/lang/String.html">String sigesCode)
    {
        return createCriteria().add(eq("code", sigesCode)).list();
    }

    public CourseUnit loadBySigesCodeUnique(1.5.0/docs/api/java/lang/String.html">String sigesCode)
    {
        return (CourseUnit) createCriteria().add(eq("code", sigesCode)).uniqueResult();
    }

    public CourseUnit loadBySigesCodeUnique(1.5.0/docs/api/java/lang/String.html">String sigesCode, 1.5.0/docs/api/java/lang/String.html">String courseCode)
    {
        return (CourseUnit) createCriteria().add(eq("code", sigesCode)).add(eq("courseCode", courseCode)).uniqueResult();
    }

    public CourseUnit loadBySigesCodeUnique(1.5.0/docs/api/java/lang/String.html">String sigesCode, 1.5.0/docs/api/java/lang/String.html">String courseCode, 1.5.0/docs/api/java/lang/String.html">String semestre)
    {
        return (CourseUnit) createCriteria().add(eq("code", sigesCode)).add(eq("courseCode", courseCode)).add(eq("semestre", semestre)).uniqueResult();
    }


    public int countCourseUnits(1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchType)
    {
        Criterion c = DaoUtils.createSearchQuery(query,searchType,"objectives","name");
        return createCriteria().add(c).list().size();
    }

    public List<CourseUnit> search(1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchTypeEnum, int maxUnits, int page)
    {
        Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "objectives", "name");
        Criteria criteria = createCriteria();
        criteria.add(c)
                .addOrder(Order.asc("name"))
                .setMaxResults(maxUnits)
                .setFirstResult(page * maxUnits);
        return criteria.list();
    }

    public int countCourseUnitsActualYear(1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchType)
    {
        Criterion c = DaoUtils.createSearchQuery(query,searchType,"objectives","name");
        return createCriteria()
                .add(c)
                .add(eq("importYear", DatesUtils.getImportYear()))
                .list().size();
    }

    public List<CourseUnit> searchActualYear(1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchTypeEnum, int maxUnits, int page)
    {
        Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "objectives", "name");
        Criteria criteria = createCriteria();
        criteria.add(c)
                .add(eq("importYear", DatesUtils.getImportYear()))
                .addOrder(Order.asc("name"))
                .setMaxResults(maxUnits)
                .setFirstResult(page * maxUnits);
        return criteria.list();
    }

    public List<CourseUnit> loadMissingObjectives(long teacherId)
    {
        //todo falta a projeccao do teacher id
        return createCriteria()
                .add(eq("importYear", DatesUtils.getImportYear()))
                .add((or(isNull("objectives"),eq("objectives",""))))
                .createAlias("teachers", "th")
                .add(eq("th.id",teacherId))
                .list();
    }

   




}