--- /dev/null
+/*****************************************************************************
+ * Copyright Igor Barma, Eric Brun, Alexandre Desoubeaux, Christian Martel,
+ * (2 décembre 2008)
+ *
+ * Ce logiciel est un programme informatique servant à l'évaluation des
+ * compétences.
+ *
+ * Ce logiciel est régi par la licence CeCILL soumise au droit français et
+ * respectant les principes de diffusion des logiciels libres. Vous pouvez
+ * utiliser, modifier et/ou redistribuer ce programme sous les conditions
+ * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
+ * sur le site "http://www.cecill.info".
+ *
+ * En contrepartie de l'accessibilité au code source et des droits de copie,
+ * de modification et de redistribution accordés par cette licence, il n'est
+ * offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
+ * seule une responsabilité restreinte pèse sur l'auteur du programme, le
+ * titulaire des droits patrimoniaux et les concédants successifs.
+ *
+ * A cet égard l'attention de l'utilisateur est attirée sur les risques
+ * associés au chargement, à l'utilisation, à la modification et/ou au
+ * développement et à la reproduction du logiciel par l'utilisateur étant
+ * donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+ * manipuler et qui le réserve donc à des développeurs et des professionnels
+ * avertis possédant des connaissances informatiques approfondies. Les
+ * utilisateurs sont donc invités à charger et tester l'adéquation du
+ * logiciel à leurs besoins dans des conditions permettant d'assurer la
+ * sécurité de leurs systèmes et ou de leurs données et, plus généralement,
+ * à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
+ *
+ * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
+ * pris connaissance de la licence CeCILL, et que vous en avez accepté les
+ * termes.
+ *******************************************************************************/
+package com.pentila.evalcomp.dao.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import com.pentila.evalcomp.dao.IUserCertInstanceDAO;
+import com.pentila.evalcomp.domain.certification.UserCertInstance;
+
+/**
+ * The Class UserCertInstanceDAOImpl.
+ */
+public class UserCertInstanceDAOImpl extends
+GenericDAOImpl<UserCertInstance, Long> implements IUserCertInstanceDAO {
+
+ /** The logger. */
+ org.slf4j.Logger logger = org.slf4j.LoggerFactory
+ .getLogger(UserCertInstanceDAOImpl.class);
+
+ /** The HQ lget users cert instances. */
+ static String HQLgetUsersCertInstances = "select uci from UserCertInstance as uci inner join uci.scenarioInstCert as sic where sic.id=:sicId and uci.owner.uid in (:uids) and uci.state in (:states)";
+
+ /** The HQ lget users cert instances all. */
+ static String HQLgetUsersCertInstancesAll = "select uci from UserCertInstance as uci inner join uci.scenarioInstCert as sic where sic.id=:sicId and uci.owner.uid in (:uids)";
+
+ /** The HQ lget user cert instance. */
+ static String HQLgetUserCertInstance = "select uci from UserCertInstance as uci inner join uci.scenarioInstCert as sic where sic.id=:sicId and uci.owner.uid =:uid";
+
+ /** The HQ lget user cert instances by referentiel. */
+ static String HQLgetUserCertInstancesByReferentiel = "select uci from UserCertInstance as uci inner join "
+ + "uci.scenarioInstCert as sic inner join sic.scenarioDefinition as sd inner join "
+ + "sd.planRef as planref inner join planref.referentiel as ref "
+ + "where ref.id=:refId and uci.state in (:states) and uci.owner.uid=:uid";
+
+ /** The HQL by states. */
+ static String HQLByStates = "select uci from UserCertInstance as uci inner join uci.scenarioInstCert as sic inner join sic.scenarioDefinition as sd inner join sd.planRef as planRef where planRef.id=:planRefId and uci.type in (:types) and uci.state in (:states) and uci.owner.id in (:userIds)";
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.dao.IUserCertInstanceDAO#getUsersCertInstances(java.lang.Long, java.util.Set, java.lang.Integer[])
+ */
+ public Set<UserCertInstance> getUsersCertInstances(Long sicId,
+ Set<String> userUids, Integer[] states) {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("sicId : " + sicId);
+
+ for (String uid : userUids) {
+ logger.debug("UID is : " + uid);
+ }
+
+ }
+
+ List<String> ll = new ArrayList<String>(userUids);
+ Collections.sort(ll);
+
+
+ List<UserCertInstance> l = getCachableHibernateTemplate().findByNamedParam(
+ HQLgetUsersCertInstances,
+ new String[] { "sicId", "uids", "states" },
+ new Object[] { sicId, ll.toArray(), states });
+
+ if (logger.isDebugEnabled()) {
+
+ logger.debug("Result for getUsersCetInstances : " + l.size());
+ }
+ return new HashSet<UserCertInstance>(l);
+
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.dao.IUserCertInstanceDAO#getUserCertInstance(java.lang.Long, java.lang.String)
+ */
+ public UserCertInstance getUserCertInstance(Long sicId, String uid) {
+
+ List<UserCertInstance> l = getCachableHibernateTemplate().findByNamedParam(
+ HQLgetUserCertInstance, new String[] { "sicId", "uid" },
+ new Object[] { sicId, uid });
+
+ if (l != null && !l.isEmpty()) {
+ return l.get(0);
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.dao.IUserCertInstanceDAO#getUsersCertInstances(java.lang.Long, java.util.Set)
+ */
+ public Set<UserCertInstance> getUsersCertInstances(Long sicId,
+ Set<String> userUids) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("sicId : " + sicId);
+
+ for (String uid : userUids) {
+ logger.debug("UID is : " + uid);
+ }
+
+ }
+
+ List<String> ll = new ArrayList<String>(userUids);
+ Collections.sort(ll);
+
+
+ List<UserCertInstance> l = getCachableHibernateTemplate().findByNamedParam(
+ HQLgetUsersCertInstancesAll, new String[] { "sicId", "uids" },
+ new Object[] { sicId, ll.toArray() });
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Result for getUsersCetInstances : " + l.size());
+ }
+ return new HashSet<UserCertInstance>(l);
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.dao.IUserCertInstanceDAO#getUserCertInstancesByReferentiel(java.lang.Long, java.lang.String, java.lang.Integer[])
+ */
+ public Set<UserCertInstance> getUserCertInstancesByReferentiel(
+ Long idReferentiel, String uid, Integer[] states) {
+
+ List<UserCertInstance> l = getCachableHibernateTemplate().findByNamedParam(
+ HQLgetUserCertInstancesByReferentiel,
+ new String[] { "refId", "uid", "states" },
+ new Object[] { idReferentiel, uid, states });
+ if (logger.isDebugEnabled()) {
+ logger.debug("Size of getUserCertInstancesByReferentiel : "
+ + l.size());
+ }
+ return new HashSet<UserCertInstance>(l);
+
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.dao.IUserCertInstanceDAO#getUserCertInstancesByStates(java.lang.Long, java.lang.Integer[], java.lang.Integer[], java.util.Set)
+ */
+ public Set<UserCertInstance> getUserCertInstancesByStates(Long planRefId,
+ Integer[] types, Integer[] states, Set<Long> userIds) {
+
+ List<Long> ll = new ArrayList<Long>(userIds);
+ Collections.sort(ll);
+
+
+ List<UserCertInstance> l = getCachableHibernateTemplate().findByNamedParam(
+ HQLByStates,
+ new String[] { "planRefId", "types", "states", "userIds" },
+ new Object[] { planRefId, types, states, ll.toArray() });
+ if (logger.isDebugEnabled()) {
+ logger.debug("Size of getUserCertInstancesByStates : " + l.size());
+ }
+ return new HashSet<UserCertInstance>(l);
+ }
+
+}