package pt.estgp.estgweb.domain.dao.impl;
import jomm.dao.impl.AbstractDao;
import org.hibernate.Query;
import org.hibernate.criterion.Projections;
import pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto;
import java.util.List;
import static org.
hibernate.
criterion.
Restrictions.
eq;
/**
* Created by jorgemachado on 24/03/16.
*/
public class QuestionarioPedagogicoCursoAfetoDaoImpl
extends QuestionarioPedagogicoCursoAfetoDao
{
public static QuestionarioPedagogicoCursoAfetoDaoImpl getInstance
() {
if (myInstance ==
null)
myInstance =
new QuestionarioPedagogicoCursoAfetoDaoImpl
();
return (QuestionarioPedagogicoCursoAfetoDaoImpl
) myInstance
;
}
public List
<QuestionarioPedagogicoCursoAfeto
> find
(long questionarioId,
1.5.0/docs/api/java/lang/String.html">String cursoCode
)
{
return createCriteria
()
.
add(eq
("questionario.id", questionarioId
))
.
add(eq
("codigoCurso", cursoCode
))
.
list();
}
public List
<QuestionarioPedagogicoCursoAfeto
> find
(long questionarioId
)
{
return createCriteria
()
.
add(eq
("questionario.id", questionarioId
))
.
list();
}
public List
<Long
> findCursosAfetosIds
(long questionarioId
)
{
return createCriteria
()
.
setProjection(Projections.
distinct(Projections.
property("id")))
.
add(eq
("questionario.id", questionarioId
))
.
list();
}
public static class CourseStatsVars
{
public long unidades
;
public long marcadas
;
public long observadas
;
public long porVerProfs
;
public long porVer
;
public long naoUsadas
;
}
public CourseStatsVars loadStats
(long cursoAfetoId
)
{
CourseStatsVars courseStatsVars =
new CourseStatsVars
();
1.5.0/docs/api/javax/management/Query.html">Query q = AbstractDao.
getCurrentSession().
createQuery("SELECT " +
" sum (case when u.vista = false then 1 else 0 end) AS porVer " +
",sum (case when u.vistaProfs = false then 1 else 0 end) AS porVerProfs " +
",sum (case when u.usar = false then 1 else 0 end) AS naoUsadas " +
",sum (case when u.marked = true then 1 else 0 end) AS marked " +
",sum (case when u.obs is not NULL and u.obs != '' then 1 else 0 end) AS observadas " +
",count(distinct u.id) AS unidades " +
"from " + QuestionarioPedagogicoCursoAfeto.
class.
getName() +
" c " +
"JOIN c.unidadesAfetas u " +
"WHERE c.id = :id " +
"GROUP BY c.id");
q.
setLong("id",cursoAfetoId
);
5+0%2Fdocs%2Fapi+Object">Object[] results =
(5+0%2Fdocs%2Fapi+Object">Object[]) q.
uniqueResult();
courseStatsVars.
porVer =
(1.5.0/docs/api/java/lang/Long.html">Long) results
[0
];
courseStatsVars.
porVerProfs =
(1.5.0/docs/api/java/lang/Long.html">Long) results
[1
];
courseStatsVars.
naoUsadas =
(1.5.0/docs/api/java/lang/Long.html">Long) results
[2
];
courseStatsVars.
marcadas =
(1.5.0/docs/api/java/lang/Long.html">Long) results
[3
];
courseStatsVars.
observadas =
(1.5.0/docs/api/java/lang/Long.html">Long) results
[4
];
courseStatsVars.
unidades =
(1.5.0/docs/api/java/lang/Long.html">Long) results
[5
];
return courseStatsVars
;
}
}