/********************************************************************************** * $URL: $ * $Id: $ *********************************************************************************** * * Copyright (c) 2003, 2004, 2005, 2006, 2008 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package org.sakaiproject.sitemanage.impl; import java.util.Collection; import java.util.List; import java.util.Set; import java.util.HashSet; import java.util.Vector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Expression; import org.hibernate.criterion.Order; import org.springframework.dao.DataAccessException; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.transaction.support.TransactionSynchronizationAdapter; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.sakaiproject.sitemanage.api.model.*; public class SiteSetupQuestionServiceImpl extends HibernateDaoSupport implements SiteSetupQuestionService { private static final String QUERY_ANY_SITETYPE_QUESTIONS = "findAnySiteTypeQuestions"; private static final String QUERY_ALL_QUESTIONS = "findAllSiteSetupQuestions"; private static final String QUERY_QUESTIONS_BY_SITETYPE = "findQuestionsBySiteType"; private static final String QUERY_ANSWER_BY_ID = "findAnswerById"; private final static Log Log = LogFactory.getLog(SiteSetupQuestionServiceImpl.class); /** * Init */ public void init() { Log.info("init()"); } /** * Destroy */ public void destroy() { Log.info("destroy()"); } /** * {@inheritDoc} */ public boolean hasAnySiteTypeQuestions() { List<SiteTypeQuestions> rvList = getHibernateTemplate().findByNamedQuery(QUERY_ANY_SITETYPE_QUESTIONS); if (rvList != null && !rvList.isEmpty()) { return true; } return false; } /** * {@inheritDoc} */ public void removeAllSiteTypeQuestions() { List<SiteTypeQuestions> qList = getHibernateTemplate().findByNamedQuery(QUERY_ANY_SITETYPE_QUESTIONS); if (qList != null && !qList.isEmpty()) { for(SiteTypeQuestions q : qList) { removeSiteTypeQuestions(q); } } } /** * {@inheritDoc} */ public List<SiteSetupQuestion> getAllSiteQuestions() { List<SiteSetupQuestion> rvList = getHibernateTemplate().findByNamedQuery(QUERY_ALL_QUESTIONS); return rvList; } /** * {@inheritDoc} */ public SiteTypeQuestions getSiteTypeQuestions(String siteType) { SiteTypeQuestions rv = null; List<SiteTypeQuestions> rvList = getHibernateTemplate().findByNamedQueryAndNamedParam(QUERY_QUESTIONS_BY_SITETYPE, "siteType", siteType); if (rvList != null && rvList.size() == 1) { rv = rvList.get(0); } return rv; } public SiteSetupQuestionAnswer getSiteSetupQuestionAnswer(String answerId) { List<SiteSetupQuestionAnswer> rvList = (getHibernateTemplate().findByNamedQueryAndNamedParam(QUERY_ANSWER_BY_ID, "id", answerId)); if (rvList != null && rvList.size() == 1) { return rvList.get(0); } return null; } /*********** SiteSetupQuestion **************/ /** * {@inheritDoc} */ public SiteSetupQuestion newSiteSetupQuestion() { SiteSetupQuestion question = new SiteSetupQuestionImpl(); return question; } /** * {@inheritDoc} */ public boolean saveSiteSetupQuestion(SiteSetupQuestion q) { try { getHibernateTemplate().saveOrUpdate(q); return true; } catch (DataAccessException e) { e.printStackTrace(); Log.warn(this + ".saveSiteSetupQuestion() Hibernate could not save. question=" + q.getQuestion()); return false; } } /** * {@inheritDoc} */ public boolean removeSiteSetupQuestion(SiteSetupQuestion question) { try { //org.hibernate.LockMode cannot be resolved. It is indirectly referenced from required .class files. getHibernateTemplate().delete(question); return true; } catch (DataAccessException e) { e.printStackTrace(); if(Log.isErrorEnabled()) Log.error(this + ".removeSiteSetupQuestion() Hibernate could not delete: question=" + question.getQuestion() ); return false; } } /********* SiteSetupQuestionAnswer ***************/ /** * {@inheritDoc} */ public SiteSetupQuestionAnswer newSiteSetupQuestionAnswer() { SiteSetupQuestionAnswer answer = new SiteSetupQuestionAnswerImpl(); return answer; } /** * {@inheritDoc} */ public boolean saveSiteSetupQuestionAnswer(SiteSetupQuestionAnswer answer) { try { getHibernateTemplate().saveOrUpdate(answer); return true; } catch (DataAccessException e) { e.printStackTrace(); Log.warn(this + ".saveSiteSetupQuestionAnswer() Hibernate could not save. answer=" + answer.getAnswer()); return false; } } /** * {@inheritDoc} */ public boolean removeSiteSetupQuestionAnswer(SiteSetupQuestionAnswer answer) { try { //org.hibernate.LockMode cannot be resolved. It is indirectly referenced from required .class files. getHibernateTemplate().delete(answer); return true; } catch (DataAccessException e) { e.printStackTrace(); if(Log.isErrorEnabled()) Log.error(this + ".removeSiteSetupQuestionAnswer() Hibernate could not delete: answer=" + answer.getAnswer()); return false; } } /************ SiteTypeQuestions *******************/ /** * {@inheritDoc} */ public SiteTypeQuestions newSiteTypeQuestions() { SiteTypeQuestions questions = new SiteTypeQuestionsImpl(); return questions; } /** * {@inheritDoc} */ public boolean saveSiteTypeQuestions(SiteTypeQuestions siteTypeQuestions) { try { getHibernateTemplate().saveOrUpdate(siteTypeQuestions); return true; } catch (DataAccessException e) { e.printStackTrace(); Log.warn(this + ".saveSiteTypeQuestions() Hibernate could not save. siteType=" + siteTypeQuestions.getSiteType()); return false; } } /** * {@inheritDoc} */ public boolean removeSiteTypeQuestions(SiteTypeQuestions siteTypeQuestions) { try { //org.hibernate.LockMode cannot be resolved. It is indirectly referenced from required .class files. getHibernateTemplate().delete(siteTypeQuestions); return true; } catch (DataAccessException e) { e.printStackTrace(); if(Log.isErrorEnabled()) Log.error(this + ".removeSiteTypeQuestions() Hibernate could not delete: siteType=" + siteTypeQuestions.getSiteType()); return false; } } /************ SiteSetupUserAnswer *******************/ /** * {@inheritDoc} */ public SiteSetupUserAnswer newSiteSetupUserAnswer() { SiteSetupUserAnswer uAnswer = new SiteSetupUserAnswerImpl(); return uAnswer; } /** * {@inheritDoc} */ public boolean saveSiteSetupUserAnswer(SiteSetupUserAnswer siteSetupUserAnswer) { try { getHibernateTemplate().saveOrUpdate(siteSetupUserAnswer); return true; } catch (DataAccessException e) { e.printStackTrace(); Log.warn(this + ".saveSiteSetupUserAnswer() Hibernate could not save. Site=" + siteSetupUserAnswer.getSiteId() + " user=" + siteSetupUserAnswer.getUserId() + " question=" + siteSetupUserAnswer.getQuestionId()); return false; } } /** * {@inheritDoc} */ public boolean removeSiteSetupUserAnswer(SiteSetupUserAnswer siteSetupUserAnswer) { try { //org.hibernate.LockMode cannot be resolved. It is indirectly referenced from required .class files. getHibernateTemplate().delete(siteSetupUserAnswer); return true; } catch (DataAccessException e) { e.printStackTrace(); if(Log.isErrorEnabled()) Log.error(this + ".deleteSiteSetupUserAnswer() Hibernate could not delete: Site=" + siteSetupUserAnswer.getSiteId() + " user=" + siteSetupUserAnswer.getUserId() + " question=" + siteSetupUserAnswer.getQuestionId()); return false; } } }