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();
}
}