/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-services/src/java/org/sakaiproject/tool/assessment/shared/impl/assessment/AssessmentServiceImpl.java $ * $Id: AssessmentServiceImpl.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $ *********************************************************************************** * * Copyright (c) 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.tool.assessment.shared.impl.assessment; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.tool.assessment.data.dao.assessment.AssessmentTemplateData; import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentTemplateIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.SectionDataIfc; import org.sakaiproject.tool.assessment.facade.AssessmentFacade; import org.sakaiproject.tool.assessment.facade.SectionFacade; import org.sakaiproject.tool.assessment.services.assessment.AssessmentService; import org.sakaiproject.tool.assessment.shared.api.assessment.AssessmentServiceAPI; import org.sakaiproject.tool.assessment.services.assessment.AssessmentServiceException; /** * AssessmentServiceImpl implements a shared interface to get/set assessment * information. * @author Ed Smiley <esmiley@stanford.edu> */ public class AssessmentServiceImpl implements AssessmentServiceAPI { private static Log log = LogFactory.getLog(AssessmentServiceImpl.class); /** * Get assessment template from id string. * @param assessmentTemplateId * @return the assessment template */ public AssessmentTemplateIfc getAssessmentTemplate(String assessmentTemplateId) { try { AssessmentService service = new AssessmentService(); return service.getAssessmentTemplate(assessmentTemplateId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get assessment from id string. * @param assessmentId * @return the assessment */ public AssessmentIfc getAssessment(String assessmentId) { try { AssessmentService service = new AssessmentService(); return service.getAssessment(assessmentId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get an assessment with only basic info populated.. * @param assessmentId teh assessment id string. * @return an assessment with only basic info populated. */ public AssessmentIfc getBasicInfoOfAnAssessment(String assessmentId) { try { AssessmentService service = new AssessmentService(); return service.getBasicInfoOfAnAssessment(assessmentId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get a list of assessment templates. * @return the list. */ public List getAllAssessmentTemplates() { try { AssessmentService service = new AssessmentService(); return service.getAllAssessmentTemplates(); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get a list of all active assessment templates. * @return the list */ public List getAllActiveAssessmentTemplates() { try { AssessmentService service = new AssessmentService(); return service.getAllActiveAssessmentTemplates(); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get a list of all the assessment template titles. * @return the list. */ public List getTitleOfAllActiveAssessmentTemplates() { try { AssessmentService service = new AssessmentService(); return service.getTitleOfAllActiveAssessmentTemplates(); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get an ordered list of assessments. * @param orderBy sort order field. * @return the list. */ public List getAllAssessments(String orderBy) { try { AssessmentService service = new AssessmentService(); return service.getAllAssessments(orderBy); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get all active assessments. * @param orderBy sort order field. * @return the list. */ public List getAllActiveAssessments(String orderBy) { try { AssessmentService service = new AssessmentService(); return service.getAllActiveAssessments(orderBy); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get list of all active assessment's settings. * @param orderBy sort order field. * @return the list. */ public List getSettingsOfAllActiveAssessments(String orderBy) { try { AssessmentService service = new AssessmentService(); return service.getSettingsOfAllActiveAssessments(orderBy); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get list of all active assessments with only basic info populated. * @param orderBy * @param ascending ascending sort if true * @param orderBy sort order field. * @return the list. */ public List getBasicInfoOfAllActiveAssessments( String orderBy, boolean ascending) { try { AssessmentService service = new AssessmentService(); return service.getBasicInfoOfAllActiveAssessments(orderBy, ascending); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get list of all active assessments with only basic info populated. * @param orderBy * @param orderBy sort order field. * @return the list. */ public List getBasicInfoOfAllActiveAssessments(String orderBy) { try { AssessmentService service = new AssessmentService(); return service.getBasicInfoOfAllActiveAssessments(orderBy); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get list of all active assessments. * @param orderBy * @param pageSize number in a page * @param pageNumber number of the page * @param orderBy sort order field. * @return the list. */ public List getAllAssessments(int pageSize, int pageNumber, String orderBy) { try { AssessmentService service = new AssessmentService(); return service.getAllAssessments(pageSize, pageNumber, orderBy); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Create an assessment. * @param title the title * @param description the description * @param typeId the type id * @param templateId the template's template id * @return the created assessment. */ public AssessmentIfc createAssessment(String title, String description, String typeId, String templateId) { try { AssessmentService service = new AssessmentService(); return service.createAssessment(title, description, typeId, templateId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get number of questions. * @param assessmentId the assessment id string. * @return the number. */ public int getQuestionSize(String assessmentId) { try { AssessmentService service = new AssessmentService(); return service.getQuestionSize(assessmentId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Update an assessment coupled to the persistence layer * @param assessment the assessment interface of the POJO */ public void update(AssessmentIfc assessment) { try { AssessmentService service = new AssessmentService(); AssessmentFacade facade = service.getAssessment(assessment.getAssessmentId().toString()); service.update(facade); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } public void save(AssessmentTemplateIfc template) { try { AssessmentService service = new AssessmentService(); AssessmentTemplateData data = (AssessmentTemplateData) service.getAssessmentTemplate( template.getAssessmentTemplateId().toString()).getData(); service.save(data); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Save an assessment. * @param assessment the assessment. */ public void saveAssessment(AssessmentIfc assessment) { try { AssessmentService service = new AssessmentService(); AssessmentFacade facade = service.getAssessment(assessment.getAssessmentId().toString()); service.saveAssessment(facade); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Delete an assessment template from an assessment. * @param assessmentId the assessment id of the assessment. */ public void deleteAssessmentTemplate(Long assessmentId) { try { AssessmentService service = new AssessmentService(); service.deleteAssessmentTemplate(assessmentId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Remove the assessment. * @param assessmentId the assessment id string. */ public void removeAssessment(String assessmentId) { try { AssessmentService service = new AssessmentService(); service.removeAssessment(assessmentId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Add a section to an assessment. * @param assessmentId the assessment id string. * @return the section. */ public SectionDataIfc addSection(String assessmentId) { try { AssessmentService service = new AssessmentService(); return service.addSection(assessmentId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Remove a section. * @param sectionId its id. */ public void removeSection(String sectionId) { try { AssessmentService service = new AssessmentService(); service.removeSection(sectionId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get a section. * @param sectionId the section id string. * @return the section. */ public SectionDataIfc getSection(String sectionId) { try { AssessmentService service = new AssessmentService(); return service.getSection(sectionId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Perform persistence saveOrUpdate on section. * @param section the section. */ public void saveOrUpdateSection(SectionDataIfc section) { try { AssessmentService service = new AssessmentService(); SectionFacade facade = service.getSection(section.getSectionId().toString()); service.saveOrUpdateSection(facade); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Move items between sections. * @param sourceSectionId source id. * @param destSectionId destination id. */ public void moveAllItems(String sourceSectionId, String destSectionId) { try { AssessmentService service = new AssessmentService(); service.moveAllItems(sourceSectionId, destSectionId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Remove all items from a section. * @param sourceSectionId the section id string. */ public void removeAllItems(String sourceSectionId) { try { AssessmentService service = new AssessmentService(); service.removeAllItems(sourceSectionId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Get list of all active assessment templates with only basic info populated. * @param orderBy * @return the list. */ public List getBasicInfoOfAllActiveAssessmentTemplates(String orderBy) { try { AssessmentService service = new AssessmentService(); return service.getBasicInfoOfAllActiveAssessmentTemplates(orderBy); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } /** * Create an assessment without a default section. * Section must be created later. (This facilitates batch uploads such as * QTI import where the section titles are all named in the incoming * document.) * * @param title * @param description * @param typeId * @param templateId * @return */ public AssessmentIfc createAssessmentWithoutDefaultSection( String title, String description, String typeId, String templateId) { try { AssessmentService service = new AssessmentService(); return service.createAssessmentWithoutDefaultSection( title, description, typeId, templateId); } catch (Exception ex) { throw new AssessmentServiceException(ex); } } }