--- /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.Iterator;
+import java.util.List;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.hibernate.criterion.DetachedCriteria;
+import org.hibernate.criterion.Restrictions;
+
+import com.pentila.evalcomp.dao.IQuestionDAO;
+import com.pentila.evalcomp.domain.examen.Question;
+
+public class QuestionDAOImpl extends GenericDAOImpl<Question, Long> implements
+IQuestionDAO {
+
+ public Question getQuestionByOrigin(int id_orig, int id_etab) {
+ Question question = null;
+
+ DetachedCriteria criteria = DetachedCriteria.forClass(Question.class);
+ criteria.add(Restrictions.eq("id_question", id_orig));
+ criteria.add(Restrictions.eq("id_etab", id_etab));
+ List<Question> le = getCachableHibernateTemplate().findByCriteria(criteria);
+
+
+ if (le != null && !le.isEmpty()){
+ question = le.get(0);
+ }
+
+ return question;
+ }
+
+ public List<Question> getQuestions(Long idFilter, Long idUser, String searchFilter) {
+
+ List<Question> lq = new ArrayList<Question>();
+
+
+ String HQL = "select question from Question as question ";
+ String sort = " order by question.ts_datecreation asc";
+
+
+
+ List<String> tokens = new ArrayList<String>();
+
+
+ if (idFilter == null){
+
+ // // Toutes (owner + Shared + institutial)
+
+ tokens.add("question.owner.id=" + idUser.toString() + " or (question.shared=TRUE and question.id_etab=0) or question.id_etab!=0");
+ }else if (idFilter.equals(new Long(0))){
+ // Own
+ HQL = HQL + "inner join question.owner as owner ";
+ tokens.add("owner.id=" + idUser.toString());
+ }else if (idFilter.equals(new Long(1))){
+ // Shared
+ tokens.add("(question.shared=TRUE and question.id_etab=0)");
+ }else if (idFilter.equals(new Long(2))){
+ // Institutional
+ tokens.add("question.id_etab!=0");
+ }
+
+
+ if (searchFilter != null){
+ tokens.add("question.titre like '%" +StringEscapeUtils.escapeSql(searchFilter) + "%'");
+ }
+
+ String query = "";
+
+ Iterator<String> iterator = tokens.iterator();
+ while (iterator.hasNext()){
+
+ String token = iterator.next();
+
+ query = query + token;
+
+ if (iterator.hasNext()){
+ query = query + " and ";
+ }
+
+ }
+
+ if (!query.equals("")){
+ query = " where " + query;
+ }
+
+ query = HQL + query + sort;
+
+ lq = this.getCachableHibernateTemplate().find(query);
+
+ return lq;
+
+ }
+
+
+}